Improvements on test case setup.
- On hostside, checks if wi-fi is on instead of checking for connectivity (which can be very slow).
- Don't automatically reset metered network on superclass' tearDown().
- Make sure tearDown() cleans up all state changes.
BUG: 27808364
Change-Id: I4818047c5fb8f6f430b0aab5ecfa77717f860db3
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 360257a..2b7dd39 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
@@ -76,11 +76,12 @@
protected ConnectivityManager mCm;
protected WifiManager mWfm;
protected int mUid;
- private boolean mResetMeteredWifi = false;
+ private String mMeteredWifi;
@Override
public void setUp() throws Exception {
super.setUp();
+
mInstrumentation = getInstrumentation();
mContext = mInstrumentation.getContext();
mCm = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
@@ -93,15 +94,6 @@
+ "\tapp2: uid=" + mUid + ", state=" + getProcessStateByUid(mUid));
}
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
-
- if (mResetMeteredWifi) {
- setWifiMeteredStatus(false);
- }
- }
-
protected int getUid(String packageName) throws Exception {
return mContext.getPackageManager().getPackageUid(packageName, 0);
}
@@ -289,12 +281,21 @@
final String netId = setWifiMeteredStatus(true);
assertTrue("Could not set wifi '" + netId + "' as metered ("
+ mCm.getActiveNetworkInfo() +")", mCm.isActiveNetworkMetered());
- // Set flag so status is reverted on teardown.
- mResetMeteredWifi = true;
+ // Set flag so status is reverted on resetMeteredNetwork();
+ mMeteredWifi = netId;
// Sanity check.
assertMeteredNetwork(netId, true);
}
+ protected void resetMeteredNetwork() throws Exception {
+ if (mMeteredWifi == null) {
+ Log.d(TAG, "resetMeteredNetwork(): wifi not set as metered");
+ return;
+ }
+ Log.i(TAG, "resetMeteredNetwork(): resetting " + mMeteredWifi);
+ setWifiMeteredStatus(mMeteredWifi, false);
+ }
+
private String setWifiMeteredStatus(boolean metered) throws Exception {
// We could call setWifiEnabled() here, but it might take sometime to be in a consistent
// state (for example, if one of the saved network is not properly authenticated), so it's
@@ -303,6 +304,10 @@
// TODO: if it's not guaranteed the device has wi-fi, we need to change the tests
// to make the actual verification of restrictions optional.
final String ssid = mWfm.getConnectionInfo().getSSID();
+ return setWifiMeteredStatus(ssid, metered);
+ }
+
+ private String setWifiMeteredStatus(String ssid, boolean metered) throws Exception {
assertNotNull("null SSID", ssid);
final String netId = ssid.trim().replaceAll("\"", ""); // remove quotes, if any.
assertFalse("empty SSID", ssid.isEmpty());
diff --git a/tests/cts/hostside/app/src/com/android/cts/net/hostside/BatterySaverModeTest.java b/tests/cts/hostside/app/src/com/android/cts/net/hostside/BatterySaverModeTest.java
index 6a8540a..d1217b4 100644
--- a/tests/cts/hostside/app/src/com/android/cts/net/hostside/BatterySaverModeTest.java
+++ b/tests/cts/hostside/app/src/com/android/cts/net/hostside/BatterySaverModeTest.java
@@ -33,7 +33,11 @@
protected void tearDown() throws Exception {
super.tearDown();
- setPowerSaveMode(false);
+ try {
+ resetMeteredNetwork();
+ } finally {
+ setPowerSaveMode(false);
+ }
}
public void testBackgroundNetworkAccess_enabled() throws Exception {
diff --git a/tests/cts/hostside/app/src/com/android/cts/net/hostside/DataSaverModeTest.java b/tests/cts/hostside/app/src/com/android/cts/net/hostside/DataSaverModeTest.java
index ff68090..62f670e 100644
--- a/tests/cts/hostside/app/src/com/android/cts/net/hostside/DataSaverModeTest.java
+++ b/tests/cts/hostside/app/src/com/android/cts/net/hostside/DataSaverModeTest.java
@@ -44,7 +44,11 @@
protected void tearDown() throws Exception {
super.tearDown();
- setRestrictBackground(false);
+ try {
+ resetMeteredNetwork();
+ } finally {
+ setRestrictBackground(false);
+ }
}
public void testGetRestrictBackgroundStatus_disabled() throws Exception {
diff --git a/tests/cts/hostside/src/com/android/cts/net/HostsideNetworkTestCase.java b/tests/cts/hostside/src/com/android/cts/net/HostsideNetworkTestCase.java
index ab1b7d6..39b5652 100644
--- a/tests/cts/hostside/src/com/android/cts/net/HostsideNetworkTestCase.java
+++ b/tests/cts/hostside/src/com/android/cts/net/HostsideNetworkTestCase.java
@@ -63,7 +63,7 @@
assertNotNull(mAbi);
assertNotNull(mCtsBuild);
- assertTrue("device not connected to network", getDevice().checkConnectivity());
+ assertTrue("wi-fi not enabled", getDevice().isWifiEnabled());
uninstallPackage(TEST_PKG, false);
installPackage(TEST_APK);