summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEtan Cohen <etancohen@google.com>2017-03-07 16:40:26 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2017-03-07 16:40:27 +0000
commit0edb7f51fd4c82bebcf4e6f5e76cef6e37d8f838 (patch)
treeb6ac7d19ff31aa4c86298f9d85966286817e1bf8
parent29d652efb3172d187bc660272be3d12da3c1ee57 (diff)
parent3e426ad3fc1f72d34ccd45695d64c2e8aa3b245c (diff)
downloadcts-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.java63
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() {