Merge "Use ConnectionManager API to check if network is metered." into nyc-dev am: b853005f3c
am: 0ce15caf77

* commit '0ce15caf77691d6a8d209a918ace9fa96bcfc0cf':
  Use ConnectionManager API to check if network is metered.

Change-Id: I6bbe0d03a8725017f756fa5fb49d338c7e8e0893
diff --git a/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java b/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java
index 17480e2..82ef752 100644
--- a/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java
+++ b/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java
@@ -403,7 +403,7 @@
         } else {
             final NetworkInfo info = mCm.getActiveNetworkInfo();
             assertNotNull("Could not get active network", info);
-            if (!info.isMetered()) {
+            if (!mCm.isActiveNetworkMetered()) {
                 Log.d(TAG, "Active network is not metered: " + info);
             } else if (info.getType() == ConnectivityManager.TYPE_WIFI) {
                 Log.i(TAG, "Setting active WI-FI network as metered: " + info );
@@ -415,9 +415,21 @@
         assertActiveNetworkMetered(false); // Sanity check.
     }
 
-    private void assertActiveNetworkMetered(boolean expected) {
-        final NetworkInfo info = mCm.getActiveNetworkInfo();
-        assertEquals("Wrong metered status for active network " + info, expected, info.isMetered());
+    private void assertActiveNetworkMetered(boolean expected) throws Exception {
+        final int maxTries = 5;
+        NetworkInfo info = null;
+        for (int i = 1; i <= maxTries; i++) {
+            info = mCm.getActiveNetworkInfo();
+            if (info != null) {
+                break;
+            }
+            Log.v(TAG, "No active network info on attempt #" + i
+                    + "; sleeping 1s before polling again");
+            Thread.sleep(SECOND_IN_MS);
+        }
+        assertNotNull("No active network after " + maxTries + " attempts", info);
+        assertEquals("Wrong metered status for active network " + info, expected,
+                mCm.isActiveNetworkMetered());
     }
 
     private String setWifiMeteredStatus(boolean metered) throws Exception {