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:
@@ -25,6 +25,8 @@ import android.net.NetworkCapabilities
|
|||||||
import android.net.NetworkProvider
|
import android.net.NetworkProvider
|
||||||
import android.net.NetworkRequest
|
import android.net.NetworkRequest
|
||||||
import android.net.NetworkScore
|
import android.net.NetworkScore
|
||||||
|
import android.net.VpnManager
|
||||||
|
import android.net.VpnTransportInfo
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
import android.os.HandlerThread
|
import android.os.HandlerThread
|
||||||
@@ -116,6 +118,7 @@ class NetworkScoreTest {
|
|||||||
if (optionalTransports.contains(NetworkCapabilities.TRANSPORT_VPN)) {
|
if (optionalTransports.contains(NetworkCapabilities.TRANSPORT_VPN)) {
|
||||||
addTransportType(NetworkCapabilities.TRANSPORT_VPN)
|
addTransportType(NetworkCapabilities.TRANSPORT_VPN)
|
||||||
removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
|
removeCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
|
||||||
|
setTransportInfo(VpnTransportInfo(VpnManager.TYPE_VPN_SERVICE, null))
|
||||||
}
|
}
|
||||||
addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED)
|
addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VCN_MANAGED)
|
||||||
}.build()
|
}.build()
|
||||||
@@ -151,4 +154,45 @@ class NetworkScoreTest {
|
|||||||
// Agent1 is no longer exiting, but agent2 is the current satisfier.
|
// Agent1 is no longer exiting, but agent2 is the current satisfier.
|
||||||
cb.assertNoCallback(NO_CALLBACK_TIMEOUT)
|
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.
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user