Merge "Merge "Don't require WiFi in CtsHostsideNetworkTests" into nougat-cts-dev am: dfc0ec200f" into nyc-dev

am: 2be6d78c13

Change-Id: I578972101d3b4c46132fc360be18a5dd947a4113
This commit is contained in:
Tina Zhou
2017-02-15 00:57:59 +00:00
committed by android-build-merger
13 changed files with 84 additions and 50 deletions

View File

@@ -30,7 +30,6 @@ abstract class AbstractAppIdleTestCase extends AbstractRestrictBackgroundNetwork
if (!isSupported()) return; if (!isSupported()) return;
// Set initial state. // Set initial state.
setUpMeteredNetwork();
removePowerSaveModeWhitelist(TEST_APP2_PKG); removePowerSaveModeWhitelist(TEST_APP2_PKG);
setAppIdle(false); setAppIdle(false);
turnBatteryOff(); turnBatteryOff();
@@ -62,14 +61,6 @@ abstract class AbstractAppIdleTestCase extends AbstractRestrictBackgroundNetwork
return supported; return supported;
} }
/**
* Sets the initial (non) metered network state.
*
* <p>By default is empty - it's up to subclasses to override.
*/
protected void setUpMeteredNetwork() throws Exception {
}
/** /**
* Resets the (non) metered network state. * Resets the (non) metered network state.
* *

View File

@@ -30,7 +30,6 @@ abstract class AbstractBatterySaverModeTestCase extends AbstractRestrictBackgrou
if (!isSupported()) return; if (!isSupported()) return;
// Set initial state. // Set initial state.
setUpMeteredNetwork();
removePowerSaveModeWhitelist(TEST_APP2_PKG); removePowerSaveModeWhitelist(TEST_APP2_PKG);
setBatterySaverMode(false); setBatterySaverMode(false);

View File

@@ -31,7 +31,6 @@ abstract class AbstractDozeModeTestCase extends AbstractRestrictBackgroundNetwor
if (!isSupported()) return; if (!isSupported()) return;
// Set initial state. // Set initial state.
setUpMeteredNetwork();
removePowerSaveModeWhitelist(TEST_APP2_PKG); removePowerSaveModeWhitelist(TEST_APP2_PKG);
setDozeMode(false); setDozeMode(false);

View File

@@ -97,6 +97,7 @@ abstract class AbstractRestrictBackgroundNetworkTestCase extends Instrumentation
protected WifiManager mWfm; protected WifiManager mWfm;
protected int mUid; protected int mUid;
private String mMeteredWifi; private String mMeteredWifi;
private boolean mSupported;
@Override @Override
protected void setUp() throws Exception { protected void setUp() throws Exception {
@@ -108,6 +109,7 @@ abstract class AbstractRestrictBackgroundNetworkTestCase extends Instrumentation
mWfm = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); mWfm = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
mUid = getUid(TEST_APP2_PKG); mUid = getUid(TEST_APP2_PKG);
final int myUid = getUid(mContext.getPackageName()); final int myUid = getUid(mContext.getPackageName());
mSupported = setUpActiveNetworkMeteringState();
Log.i(TAG, "Apps status on " + getName() + ":\n" Log.i(TAG, "Apps status on " + getName() + ":\n"
+ "\ttest app: uid=" + myUid + ", state=" + getProcessStateByUid(myUid) + "\n" + "\ttest app: uid=" + myUid + ", state=" + getProcessStateByUid(myUid) + "\n"
@@ -203,7 +205,9 @@ abstract class AbstractRestrictBackgroundNetworkTestCase extends Instrumentation
/** /**
* Whether this device suport this type of test. * Whether this device suport this type of test.
* *
* <p>Should be overridden when necessary, and explicitly used before each test. Example: * <p>Should be overridden when necessary (but always calling
* {@code super.isSupported()} first), and explicitly used before each test
* Example:
* *
* <pre><code> * <pre><code>
* public void testSomething() { * public void testSomething() {
@@ -213,7 +217,7 @@ abstract class AbstractRestrictBackgroundNetworkTestCase extends Instrumentation
* @return {@code true} by default. * @return {@code true} by default.
*/ */
protected boolean isSupported() throws Exception { protected boolean isSupported() throws Exception {
return true; return mSupported;
} }
/** /**
@@ -426,15 +430,61 @@ abstract class AbstractRestrictBackgroundNetworkTestCase extends Instrumentation
} }
/** /**
* Puts the device in a state where the active network is metered, or fail if it can't achieve * Sets the initial metering state for the active network.
* that state. *
* <p>It's called on setup and by default does nothing - it's up to the
* subclasses to override.
*
* @return whether the tests in the subclass are supported on this device.
*/ */
protected void setMeteredNetwork() throws Exception { protected boolean setUpActiveNetworkMeteringState() throws Exception {
return true;
}
/**
* Makes sure the active network is not metered.
*
* <p>If the device does not supoprt un-metered networks (for example if it
* only has cellular data but not wi-fi), it should return {@code false};
* otherwise, it should return {@code true} (or fail if the un-metered
* network could not be set).
*
* @return {@code true} if the network is now unmetered.
*/
protected boolean setUnmeteredNetwork() throws Exception {
final NetworkInfo info = mCm.getActiveNetworkInfo();
assertNotNull("Could not get active network", info);
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 not metered: " + info );
setWifiMeteredStatus(false);
} else {
Log.d(TAG, "Active network cannot be set to un-metered: " + info);
return false;
}
assertActiveNetworkMetered(false); // Sanity check.
return true;
}
/**
* Enables metering on the active network if supported.
*
* <p>If the device does not support metered networks it should return
* {@code false}; otherwise, it should return {@code true} (or fail if the
* metered network could not be set).
*
* @return {@code true} if the network is now metered.
*/
protected boolean setMeteredNetwork() throws Exception {
final NetworkInfo info = mCm.getActiveNetworkInfo(); final NetworkInfo info = mCm.getActiveNetworkInfo();
final boolean metered = mCm.isActiveNetworkMetered(); final boolean metered = mCm.isActiveNetworkMetered();
if (metered) { if (metered) {
Log.d(TAG, "Active network already metered: " + info); Log.d(TAG, "Active network already metered: " + info);
return; return true;
} else if (info.getType() != ConnectivityManager.TYPE_WIFI) {
Log.w(TAG, "Active network does not support metering: " + info);
return false;
} else { } else {
Log.w(TAG, "Active network not metered: " + info); Log.w(TAG, "Active network not metered: " + info);
} }
@@ -445,31 +495,21 @@ abstract class AbstractRestrictBackgroundNetworkTestCase extends Instrumentation
// Sanity check. // Sanity check.
assertWifiMeteredStatus(netId, true); assertWifiMeteredStatus(netId, true);
assertActiveNetworkMetered(true); assertActiveNetworkMetered(true);
return true;
} }
/** /**
* Puts the device in a state where the active network is not metered, or fail if it can't * Resets the device metering state to what it was before the test started.
* achieve that state. *
* <p>It assumes the device has a valid WI-FI connection. * <p>This reverts any metering changes made by {@code setMeteredNetwork}.
*/ */
protected void resetMeteredNetwork() throws Exception { protected void resetMeteredNetwork() throws Exception {
if (mMeteredWifi != null) { if (mMeteredWifi != null) {
Log.i(TAG, "resetMeteredNetwork(): SID '" + mMeteredWifi Log.i(TAG, "resetMeteredNetwork(): SID '" + mMeteredWifi
+ "' was set as metered by test case; resetting it"); + "' was set as metered by test case; resetting it");
setWifiMeteredStatus(mMeteredWifi, false); setWifiMeteredStatus(mMeteredWifi, false);
} else { assertActiveNetworkMetered(false); // Sanity check.
final NetworkInfo info = mCm.getActiveNetworkInfo();
assertNotNull("Could not get active network", info);
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 );
setWifiMeteredStatus(false);
} else {
fail("Active network is not WI-FI hence cannot be set as non-metered: " + info);
}
} }
assertActiveNetworkMetered(false); // Sanity check.
} }
private void assertActiveNetworkMetered(boolean expected) throws Exception { private void assertActiveNetworkMetered(boolean expected) throws Exception {

View File

@@ -19,8 +19,8 @@ package com.android.cts.net.hostside;
public class AppIdleMeteredTest extends AbstractAppIdleTestCase { public class AppIdleMeteredTest extends AbstractAppIdleTestCase {
@Override @Override
protected void setUpMeteredNetwork() throws Exception { protected boolean setUpActiveNetworkMeteringState() throws Exception {
setMeteredNetwork(); return setMeteredNetwork();
} }
@Override @Override

View File

@@ -17,9 +17,8 @@
package com.android.cts.net.hostside; package com.android.cts.net.hostside;
public class AppIdleNonMeteredTest extends AbstractAppIdleTestCase { public class AppIdleNonMeteredTest extends AbstractAppIdleTestCase {
@Override @Override
protected void setUpMeteredNetwork() throws Exception { protected boolean setUpActiveNetworkMeteringState() throws Exception {
resetMeteredNetwork(); return setUnmeteredNetwork();
} }
} }

View File

@@ -19,8 +19,8 @@ package com.android.cts.net.hostside;
public class BatterySaverModeMeteredTest extends AbstractBatterySaverModeTestCase { public class BatterySaverModeMeteredTest extends AbstractBatterySaverModeTestCase {
@Override @Override
protected void setUpMeteredNetwork() throws Exception { protected boolean setUpActiveNetworkMeteringState() throws Exception {
setMeteredNetwork(); return setMeteredNetwork();
} }
@Override @Override

View File

@@ -19,7 +19,7 @@ package com.android.cts.net.hostside;
public class BatterySaverModeNonMeteredTest extends AbstractBatterySaverModeTestCase { public class BatterySaverModeNonMeteredTest extends AbstractBatterySaverModeTestCase {
@Override @Override
protected void setUpMeteredNetwork() throws Exception { protected boolean setUpActiveNetworkMeteringState() throws Exception {
resetMeteredNetwork(); return setUnmeteredNetwork();
} }
} }

View File

@@ -33,7 +33,6 @@ public class DataSaverModeTest extends AbstractRestrictBackgroundNetworkTestCase
if (!isSupported()) return; if (!isSupported()) return;
// Set initial state. // Set initial state.
setMeteredNetwork();
setRestrictBackground(false); setRestrictBackground(false);
removeRestrictBackgroundWhitelist(mUid); removeRestrictBackgroundWhitelist(mUid);
removeRestrictBackgroundBlacklist(mUid); removeRestrictBackgroundBlacklist(mUid);
@@ -55,6 +54,11 @@ public class DataSaverModeTest extends AbstractRestrictBackgroundNetworkTestCase
} }
} }
@Override
protected boolean setUpActiveNetworkMeteringState() throws Exception {
return setMeteredNetwork();
}
public void testGetRestrictBackgroundStatus_disabled() throws Exception { public void testGetRestrictBackgroundStatus_disabled() throws Exception {
if (!isSupported()) return; if (!isSupported()) return;

View File

@@ -19,8 +19,8 @@ package com.android.cts.net.hostside;
public class DozeModeMeteredTest extends AbstractDozeModeTestCase { public class DozeModeMeteredTest extends AbstractDozeModeTestCase {
@Override @Override
protected void setUpMeteredNetwork() throws Exception { protected boolean setUpActiveNetworkMeteringState() throws Exception {
setMeteredNetwork(); return setMeteredNetwork();
} }
@Override @Override

View File

@@ -19,7 +19,7 @@ package com.android.cts.net.hostside;
public class DozeModeNonMeteredTest extends AbstractDozeModeTestCase { public class DozeModeNonMeteredTest extends AbstractDozeModeTestCase {
@Override @Override
protected void setUpMeteredNetwork() throws Exception { protected boolean setUpActiveNetworkMeteringState() throws Exception {
resetMeteredNetwork(); return setUnmeteredNetwork();
} }
} }

View File

@@ -68,7 +68,11 @@ public class MixedModesTest extends AbstractRestrictBackgroundNetworkTestCase {
} }
Log.i(TAG, "testDataAndBatterySaverModes_meteredNetwork() tests"); Log.i(TAG, "testDataAndBatterySaverModes_meteredNetwork() tests");
setMeteredNetwork(); if (!setMeteredNetwork()) {
Log.w(TAG, "testDataAndBatterySaverModes_meteredNetwork() skipped because "
+ "device cannot use a metered network");
return;
}
try { try {
setRestrictBackground(true); setRestrictBackground(true);
@@ -139,7 +143,7 @@ public class MixedModesTest extends AbstractRestrictBackgroundNetworkTestCase {
return; return;
} }
if (mCm.isActiveNetworkMetered()) { if (!setUnmeteredNetwork()) {
Log.w(TAG, "testDataAndBatterySaverModes_nonMeteredNetwork() skipped because network" Log.w(TAG, "testDataAndBatterySaverModes_nonMeteredNetwork() skipped because network"
+ " is metered"); + " is metered");
return; return;

View File

@@ -65,8 +65,6 @@ abstract class HostsideNetworkTestCase extends DeviceTestCase implements IAbiRec
assertNotNull(mAbi); assertNotNull(mAbi);
assertNotNull(mCtsBuild); assertNotNull(mCtsBuild);
assertTrue("wi-fi not enabled", getDevice().isWifiEnabled());
uninstallPackage(TEST_PKG, false); uninstallPackage(TEST_PKG, false);
installPackage(TEST_APK); installPackage(TEST_APK);
} }