From 8e28d8789da87caefec18d93e37b9f500cfe796a Mon Sep 17 00:00:00 2001 From: Sarah Chin Date: Wed, 20 May 2020 18:56:37 -0700 Subject: [PATCH] Create NetworkAgent CTS for NET_CAP_TEMP_NOT_METERED Test: atest NetworkAgentTest Bug: 155993662 Change-Id: Ic968bf37075c23e9ea7d98eaec7f4f37d9ebc337 --- .../src/android/net/cts/NetworkAgentTest.kt | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/tests/cts/net/src/android/net/cts/NetworkAgentTest.kt b/tests/cts/net/src/android/net/cts/NetworkAgentTest.kt index 03b961bc4b..2824db7464 100644 --- a/tests/cts/net/src/android/net/cts/NetworkAgentTest.kt +++ b/tests/cts/net/src/android/net/cts/NetworkAgentTest.kt @@ -592,4 +592,50 @@ class NetworkAgentTest { assertNull(it.uri) } } + + @Test + fun testTemporarilyUnmeteredCapability() { + // This test will create a networks with/without NET_CAPABILITY_TEMPORARILY_NOT_METERED + // and check that the callback reflects the capability changes. + // First create a request to make sure the network is kept up + val request1 = NetworkRequest.Builder() + .clearCapabilities() + .addTransportType(NetworkCapabilities.TRANSPORT_TEST) + .build() + val callback1 = TestableNetworkCallback(DEFAULT_TIMEOUT_MS).also { + registerNetworkCallback(request1, it) + } + requestNetwork(request1, callback1) + + // Then file the interesting request + val request = NetworkRequest.Builder() + .clearCapabilities() + .addTransportType(NetworkCapabilities.TRANSPORT_TEST) + .build() + val callback = TestableNetworkCallback() + requestNetwork(request, callback) + + // Connect the network + createConnectedNetworkAgent().let { (agent, _) -> + callback.expectAvailableThenValidatedCallbacks(agent.network) + + // Send TEMP_NOT_METERED and check that the callback is called appropriately. + val nc1 = NetworkCapabilities(agent.nc) + .addCapability(NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED) + agent.sendNetworkCapabilities(nc1) + callback.expectCapabilitiesThat(agent.network) { + it.hasCapability(NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED) + } + + // Remove TEMP_NOT_METERED and check that the callback is called appropriately. + val nc2 = NetworkCapabilities(agent.nc) + .removeCapability(NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED) + agent.sendNetworkCapabilities(nc2) + callback.expectCapabilitiesThat(agent.network) { + !it.hasCapability(NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED) + } + } + + // tearDown() will unregister the requests and agents + } }