Test sendNetworkScore

Test: this
Bug: 139268426
Change-Id: Ie46ff2676944e6d6603bbff271fc6dca9935e548
Merged-In: I66cea443f0c6aa9235da577817787d764fbd030b
(cherry picked from commit c7091c91558d56632da237cf0a01567fcde3cba2, aosp/1284561)
This commit is contained in:
Chalard Jean
2020-04-14 03:05:52 +00:00
parent e582c5d4be
commit 2e3c3b8d89

View File

@@ -37,6 +37,7 @@ import android.net.NetworkCapabilities
import android.net.NetworkProvider
import android.net.NetworkRequest
import android.net.SocketKeepalive
import android.net.StringNetworkSpecifier
import android.net.Uri
import android.os.Build
import android.os.Bundle
@@ -59,8 +60,10 @@ import androidx.test.runner.AndroidJUnit4
import com.android.internal.util.AsyncChannel
import com.android.testutils.ArrayTrackRecord
import com.android.testutils.DevSdkIgnoreRule
import com.android.testutils.RecorderCallback.CallbackEntry.Available
import com.android.testutils.RecorderCallback.CallbackEntry.Lost
import com.android.testutils.TestableNetworkCallback
import java.util.UUID
import org.junit.After
import org.junit.Assert.fail
import org.junit.Before
@@ -197,6 +200,8 @@ class NetworkAgentTest {
data class OnValidationStatus(val status: Int, val uri: Uri?) : CallbackEntry()
}
fun getName(): String? = (nc.getNetworkSpecifier() as? StringNetworkSpecifier)?.specifier
override fun onBandwidthUpdateRequested() {
history.add(OnBandwidthUpdateRequested)
}
@@ -267,7 +272,7 @@ class NetworkAgentTest {
callbacksToCleanUp.add(callback)
}
private fun createNetworkAgent(): TestableNetworkAgent {
private fun createNetworkAgent(name: String? = null): TestableNetworkAgent {
val nc = NetworkCapabilities().apply {
addTransportType(NetworkCapabilities.TRANSPORT_TEST)
removeCapability(NetworkCapabilities.NET_CAPABILITY_TRUSTED)
@@ -275,6 +280,9 @@ class NetworkAgentTest {
addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED)
addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING)
addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
if (null != name) {
setNetworkSpecifier(StringNetworkSpecifier(name))
}
}
val lp = LinkProperties().apply {
addLinkAddress(LinkAddress(LOCAL_IPV4_ADDRESS, 0))
@@ -285,14 +293,15 @@ class NetworkAgentTest {
}
}
private fun createConnectedNetworkAgent(): Pair<TestableNetworkAgent, TestableNetworkCallback> {
private fun createConnectedNetworkAgent(name: String? = null):
Pair<TestableNetworkAgent, TestableNetworkCallback> {
val request: NetworkRequest = NetworkRequest.Builder()
.clearCapabilities()
.addTransportType(NetworkCapabilities.TRANSPORT_TEST)
.build()
val callback = TestableNetworkCallback(timeoutMs = DEFAULT_TIMEOUT_MS)
requestNetwork(request, callback)
val agent = createNetworkAgent()
val agent = createNetworkAgent(name)
agent.register()
agent.markConnected()
return agent to callback
@@ -388,6 +397,57 @@ class NetworkAgentTest {
}
}
@Test
fun testSendScore() {
// This test will create two networks and check that the one with the stronger
// score wins out for a request that matches them both.
// First create requests to make sure both networks are kept up, using the
// specifier so they are specific to each network
val name1 = UUID.randomUUID().toString()
val name2 = UUID.randomUUID().toString()
val request1 = NetworkRequest.Builder()
.clearCapabilities()
.addTransportType(NetworkCapabilities.TRANSPORT_TEST)
.setNetworkSpecifier(StringNetworkSpecifier(name1))
.build()
val request2 = NetworkRequest.Builder()
.clearCapabilities()
.addTransportType(NetworkCapabilities.TRANSPORT_TEST)
.setNetworkSpecifier(StringNetworkSpecifier(name2))
.build()
val callback1 = TestableNetworkCallback()
val callback2 = TestableNetworkCallback()
requestNetwork(request1, callback1)
requestNetwork(request2, callback2)
// Then file the interesting request
val request = NetworkRequest.Builder()
.clearCapabilities()
.addTransportType(NetworkCapabilities.TRANSPORT_TEST)
.build()
val callback = TestableNetworkCallback()
requestNetwork(request, callback)
// Connect the first Network
createConnectedNetworkAgent(name1).let { (agent1, _) ->
callback.expectAvailableThenValidatedCallbacks(agent1.network)
// Upgrade agent1 to a better score so that there is no ambiguity when
// agent2 connects that agent1 is still better
agent1.sendNetworkScore(BETTER_NETWORK_SCORE - 1)
// Connect the second agent
createConnectedNetworkAgent(name2).let { (agent2, _) ->
agent2.markConnected()
// The callback should not see anything yet
callback.assertNoCallback(200)
// Now update the score and expect the callback now prefers agent2
agent2.sendNetworkScore(BETTER_NETWORK_SCORE)
callback.expectCallback<Available>(agent2.network)
}
}
// tearDown() will unregister the requests and agents
}
@Test
fun testSetAcceptUnvalidated() {
createNetworkAgentWithFakeCS().let { agent ->