Add some CTS tests for NetworkScore.

Bug: 184037351
Test: this
Merged-In: I2edba51351cd4c71727663aa85b1d5141bff2a15
Change-Id: I2edba51351cd4c71727663aa85b1d5141bff2a15
  (cherry-picked from ag/14452538)
This commit is contained in:
Chalard Jean
2021-05-06 20:22:46 +09:00
committed by Junyu Lai
parent e349356eb9
commit b8c396b3b5

View File

@@ -25,6 +25,8 @@ import android.net.NetworkCapabilities
import android.net.NetworkProvider
import android.net.NetworkRequest
import android.net.NetworkScore
import android.net.VpnManager
import android.net.VpnTransportInfo
import android.os.Build
import android.os.Handler
import android.os.HandlerThread
@@ -116,6 +118,7 @@ class NetworkScoreTest {
if (optionalTransports.contains(NetworkCapabilities.TRANSPORT_VPN)) {
addTransportType(NetworkCapabilities.TRANSPORT_VPN)
removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
setTransportInfo(VpnTransportInfo(VpnManager.TYPE_VPN_SERVICE, null))
}
addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED)
}.build()
@@ -151,4 +154,45 @@ class NetworkScoreTest {
// Agent1 is no longer exiting, but agent2 is the current satisfier.
cb.assertNoCallback(NO_CALLBACK_TIMEOUT)
}
@Test
fun testVpnWins() {
val cb = makeTestNetworkCallback()
val agent1 = createTestNetworkAgent()
cb.expectAvailableThenValidatedCallbacks(agent1.network)
val agent2 = createTestNetworkAgent(intArrayOf(NetworkCapabilities.TRANSPORT_VPN))
// VPN wins out against agent1 even before it's validated (hence the "then validated",
// because it becomes the best network for this callback before it validates)
cb.expectAvailableThenValidatedCallbacks(agent2.network)
}
@Test
fun testEverUserSelectedAcceptUnvalidatedWins() {
val cb = makeTestNetworkCallback()
val agent1 = createTestNetworkAgent()
cb.expectAvailableThenValidatedCallbacks(agent1.network)
val agent2 = createTestNetworkAgent(everUserSelected = true, acceptUnvalidated = true)
// agent2 wins out against agent1 even before it's validated, because user-selected and
// accept unvalidated networks should win against even networks that are validated.
cb.expectAvailableThenValidatedCallbacks(agent2.network)
}
@Test
fun testPreferredTransportOrder() {
val cb = makeTestNetworkCallback()
val agentCell = createTestNetworkAgent(intArrayOf(NetworkCapabilities.TRANSPORT_CELLULAR))
cb.expectAvailableThenValidatedCallbacks(agentCell.network)
val agentWifi = createTestNetworkAgent(intArrayOf(NetworkCapabilities.TRANSPORT_WIFI))
// In the absence of other discriminating factors, agentWifi wins against agentCell because
// of its better transport, but only after it validates.
cb.expectAvailableDoubleValidatedCallbacks(agentWifi)
val agentEth = createTestNetworkAgent(intArrayOf(NetworkCapabilities.TRANSPORT_ETHERNET))
// Likewise, agentEth wins against agentWifi after validation because of its better
// transport.
cb.expectAvailableCallbacksValidated(agentEth)
}
// TODO (b/187929636) : add a test making sure that validated networks win over unvalidated
// ones. Right now this is not possible because this CTS can't directly manipulate the
// validation state of a network.
}