Merge "Add cts to test power-save-except-idle whitelist is correctly used." into oc-dev am: e60355110f

am: e62bec2dde

Change-Id: Ifbbf1eae790c98171435ec09e79838cfdbb9e8ba
This commit is contained in:
Sudheer Shanka
2017-05-15 18:28:14 +00:00
committed by android-build-merger
6 changed files with 129 additions and 0 deletions

View File

@@ -32,6 +32,7 @@ abstract class AbstractAppIdleTestCase extends AbstractRestrictBackgroundNetwork
// Set initial state.
removePowerSaveModeWhitelist(TEST_APP2_PKG);
removePowerSaveModeExceptIdleWhitelist(TEST_APP2_PKG);
setAppIdle(false);
turnBatteryOff();
@@ -111,6 +112,14 @@ abstract class AbstractAppIdleTestCase extends AbstractRestrictBackgroundNetwork
assertAppIdle(true); // Sanity check - idle again, once whitelisted was removed
assertBackgroundNetworkAccess(false);
addPowerSaveModeExceptIdleWhitelist(TEST_APP2_PKG);
assertAppIdle(false); // Sanity check - not idle anymore, since whitelisted
assertBackgroundNetworkAccess(true);
removePowerSaveModeExceptIdleWhitelist(TEST_APP2_PKG);
assertAppIdle(true); // Sanity check - idle again, once whitelisted was removed
assertBackgroundNetworkAccess(false);
assertsForegroundAlwaysHasNetworkAccess();
// Sanity check - no whitelist, no access!

View File

@@ -31,6 +31,7 @@ abstract class AbstractBatterySaverModeTestCase extends AbstractRestrictBackgrou
// Set initial state.
removePowerSaveModeWhitelist(TEST_APP2_PKG);
removePowerSaveModeExceptIdleWhitelist(TEST_APP2_PKG);
setBatterySaverMode(false);
registerBroadcastReceiver();
@@ -121,6 +122,12 @@ abstract class AbstractBatterySaverModeTestCase extends AbstractRestrictBackgrou
removePowerSaveModeWhitelist(TEST_APP2_PKG);
assertBackgroundNetworkAccess(false);
addPowerSaveModeExceptIdleWhitelist(TEST_APP2_PKG);
assertBackgroundNetworkAccess(true);
removePowerSaveModeExceptIdleWhitelist(TEST_APP2_PKG);
assertBackgroundNetworkAccess(false);
assertsForegroundAlwaysHasNetworkAccess();
assertBackgroundNetworkAccess(false);
}

View File

@@ -32,6 +32,7 @@ abstract class AbstractDozeModeTestCase extends AbstractRestrictBackgroundNetwor
// Set initial state.
removePowerSaveModeWhitelist(TEST_APP2_PKG);
removePowerSaveModeExceptIdleWhitelist(TEST_APP2_PKG);
setDozeMode(false);
registerBroadcastReceiver();
@@ -107,6 +108,12 @@ abstract class AbstractDozeModeTestCase extends AbstractRestrictBackgroundNetwor
removePowerSaveModeWhitelist(TEST_APP2_PKG);
assertBackgroundNetworkAccess(false);
addPowerSaveModeExceptIdleWhitelist(TEST_APP2_PKG);
assertBackgroundNetworkAccess(false);
removePowerSaveModeExceptIdleWhitelist(TEST_APP2_PKG);
assertBackgroundNetworkAccess(false);
assertsForegroundAlwaysHasNetworkAccess();
assertBackgroundNetworkAccess(false);
}

View File

@@ -695,6 +695,31 @@ abstract class AbstractRestrictBackgroundNetworkTestCase extends Instrumentation
assertPowerSaveModeWhitelist(packageName, false); // Sanity check
}
protected void assertPowerSaveModeExceptIdleWhitelist(String packageName, boolean expected)
throws Exception {
// TODO: currently the power-save mode is behaving like idle, but once it changes, we'll
// need to use netpolicy for whitelisting
assertDelayedShellCommand("dumpsys deviceidle except-idle-whitelist =" + packageName,
Boolean.toString(expected));
}
protected void addPowerSaveModeExceptIdleWhitelist(String packageName) throws Exception {
Log.i(TAG, "Adding package " + packageName + " to power-save-mode-except-idle whitelist");
// TODO: currently the power-save mode is behaving like idle, but once it changes, we'll
// need to use netpolicy for whitelisting
executeShellCommand("dumpsys deviceidle except-idle-whitelist +" + packageName);
assertPowerSaveModeExceptIdleWhitelist(packageName, true); // Sanity check
}
protected void removePowerSaveModeExceptIdleWhitelist(String packageName) throws Exception {
Log.i(TAG, "Removing package " + packageName
+ " from power-save-mode-except-idle whitelist");
// TODO: currently the power-save mode is behaving like idle, but once it changes, we'll
// need to use netpolicy for whitelisting
executeShellCommand("dumpsys deviceidle except-idle-whitelist reset");
assertPowerSaveModeExceptIdleWhitelist(packageName, false); // Sanity check
}
protected void turnBatteryOff() throws Exception {
executeSilentShellCommand("cmd battery unplug");
}

View File

@@ -38,6 +38,7 @@ public class MixedModesTest extends AbstractRestrictBackgroundNetworkTestCase {
removeRestrictBackgroundWhitelist(mUid);
removeRestrictBackgroundBlacklist(mUid);
removePowerSaveModeWhitelist(TEST_APP2_PKG);
removePowerSaveModeExceptIdleWhitelist(TEST_APP2_PKG);
registerBroadcastReceiver();
}
@@ -200,4 +201,74 @@ public class MixedModesTest extends AbstractRestrictBackgroundNetworkTestCase {
removeRestrictBackgroundBlacklist(mUid);
removePowerSaveModeWhitelist(TEST_APP2_PKG);
}
/**
* Tests that powersave whitelists works as expected when doze and battery saver modes
* are enabled.
*/
public void testDozeAndBatterySaverMode_powerSaveWhitelists() throws Exception {
if (!isSupported()) {
return;
}
if (!isDozeModeEnabled()) {
Log.i(TAG, "Skipping " + getClass() + "." + getName()
+ "() because device does not support Doze Mode");
return;
}
setBatterySaverMode(true);
setDozeMode(true);
try {
addPowerSaveModeWhitelist(TEST_APP2_PKG);
assertBackgroundNetworkAccess(true);
removePowerSaveModeWhitelist(TEST_APP2_PKG);
assertBackgroundNetworkAccess(false);
addPowerSaveModeExceptIdleWhitelist(TEST_APP2_PKG);
assertBackgroundNetworkAccess(false);
removePowerSaveModeExceptIdleWhitelist(TEST_APP2_PKG);
assertBackgroundNetworkAccess(false);
} finally {
setBatterySaverMode(false);
setDozeMode(false);
}
}
/**
* Tests that powersave whitelists works as expected when doze and appIdle modes
* are enabled.
*/
public void testDozeAndAppIdle_powerSaveWhitelists() throws Exception {
if (!isSupported()) {
return;
}
if (!isDozeModeEnabled()) {
Log.i(TAG, "Skipping " + getClass() + "." + getName()
+ "() because device does not support Doze Mode");
return;
}
setDozeMode(true);
setAppIdle(true);
try {
addPowerSaveModeWhitelist(TEST_APP2_PKG);
assertBackgroundNetworkAccess(true);
removePowerSaveModeWhitelist(TEST_APP2_PKG);
assertBackgroundNetworkAccess(false);
addPowerSaveModeExceptIdleWhitelist(TEST_APP2_PKG);
assertBackgroundNetworkAccess(false);
removePowerSaveModeExceptIdleWhitelist(TEST_APP2_PKG);
assertBackgroundNetworkAccess(false);
} finally {
setAppIdle(false);
setDozeMode(false);
}
}
}

View File

@@ -251,6 +251,16 @@ public class HostsideRestrictBackgroundNetworkTests extends HostsideNetworkTestC
"testDataAndBatterySaverModes_nonMeteredNetwork");
}
public void testDozeAndBatterySaverMode_powerSaveWhitelists() throws Exception {
runDeviceTests(TEST_PKG, TEST_PKG + ".MixedModesTest",
"testDozeAndBatterySaverMode_powerSaveWhitelists");
}
public void testDozeAndAppIdle_powerSaveWhitelists() throws Exception {
runDeviceTests(TEST_PKG, TEST_PKG + ".MixedModesTest",
"testDozeAndAppIdle_powerSaveWhitelists");
}
/*******************
* Helper methods. *
*******************/