diff options
author | Etan Cohen <etancohen@google.com> | 2017-03-07 16:40:26 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2017-03-07 16:40:27 +0000 |
commit | 0edb7f51fd4c82bebcf4e6f5e76cef6e37d8f838 (patch) | |
tree | b6ac7d19ff31aa4c86298f9d85966286817e1bf8 | |
parent | 29d652efb3172d187bc660272be3d12da3c1ee57 (diff) | |
parent | 3e426ad3fc1f72d34ccd45695d64c2e8aa3b245c (diff) | |
download | cts-o-preview.tar.gz |
Merge "[CM] CTS tests for requestNetwork APIs"android-o-preview-1o-preview
-rw-r--r-- | tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java b/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java index 185ebfa0fc2..24871ca156e 100644 --- a/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java +++ b/tests/tests/net/src/android/net/cts/ConnectivityManagerTest.java @@ -18,6 +18,7 @@ package android.net.cts; import static android.net.NetworkCapabilities.NET_CAPABILITY_IMS; import static android.net.NetworkCapabilities.NET_CAPABILITY_INTERNET; +import static android.net.NetworkCapabilities.TRANSPORT_WIFI; import android.app.PendingIntent; import android.content.BroadcastReceiver; @@ -384,6 +385,57 @@ public class ConnectivityManagerTest extends AndroidTestCase { } /** + * Exercises the requestNetwork with NetworkCallback API. This checks to + * see if we get a callback for an INTERNET request. + */ + public void testRequestNetworkCallback() { + final TestNetworkCallback callback = new TestNetworkCallback(); + mCm.requestNetwork(new NetworkRequest.Builder() + .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) + .build(), callback); + + try { + // Wait to get callback for availability of internet + Network internetNetwork = callback.waitForAvailable(); + assertNotNull("Did not receive NetworkCallback#onAvailable for INTERNET", + internetNetwork); + } catch (InterruptedException e) { + fail("NetworkCallback wait was interrupted."); + } finally { + mCm.unregisterNetworkCallback(callback); + } + } + + /** + * Exercises the requestNetwork with NetworkCallback API with timeout - expected to + * fail. Use WIFI and switch Wi-Fi off. + */ + public void testRequestNetworkCallback_onUnavailable() { + final boolean previousWifiEnabledState = mWifiManager.isWifiEnabled(); + if (previousWifiEnabledState) { + disconnectFromWifi(null); + } + + final TestNetworkCallback callback = new TestNetworkCallback(); + mCm.requestNetwork(new NetworkRequest.Builder() + .addTransportType(TRANSPORT_WIFI) + .build(), 100, callback); + + try { + // Wait to get callback for unavailability of requested network + assertTrue("Did not receive NetworkCallback#onUnavailable", + callback.waitForUnavailable()); + } catch (InterruptedException e) { + fail("NetworkCallback wait was interrupted."); + } finally { + mCm.unregisterNetworkCallback(callback); + if (previousWifiEnabledState) { + connectToWifi(); + } + } + } + + /** * Tests reporting of connectivity changed. */ public void testConnectivityChanged_manifestRequestOnly_shouldNotReceiveIntent() { @@ -639,6 +691,7 @@ public class ConnectivityManagerTest extends AndroidTestCase { private static class TestNetworkCallback extends ConnectivityManager.NetworkCallback { private final CountDownLatch mAvailableLatch = new CountDownLatch(1); private final CountDownLatch mLostLatch = new CountDownLatch(1); + private final CountDownLatch mUnavailableLatch = new CountDownLatch(1); public Network currentNetwork; public Network lastLostNetwork; @@ -651,6 +704,11 @@ public class ConnectivityManagerTest extends AndroidTestCase { return mLostLatch.await(30, TimeUnit.SECONDS) ? lastLostNetwork : null; } + public boolean waitForUnavailable() throws InterruptedException { + return mUnavailableLatch.await(2, TimeUnit.SECONDS); + } + + @Override public void onAvailable(Network network) { currentNetwork = network; @@ -665,6 +723,11 @@ public class ConnectivityManagerTest extends AndroidTestCase { } mLostLatch.countDown(); } + + @Override + public void onUnavailable() { + mUnavailableLatch.countDown(); + } } private Network getWifiNetwork() { |