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

This commit is contained in:
Sudheer Shanka
2017-05-15 18:15:29 +00:00
committed by Android (Google) Code Review
6 changed files with 129 additions and 0 deletions

View File

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

View File

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

View File

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

View File

@@ -695,6 +695,31 @@ abstract class AbstractRestrictBackgroundNetworkTestCase extends Instrumentation
assertPowerSaveModeWhitelist(packageName, false); // Sanity check 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 { protected void turnBatteryOff() throws Exception {
executeSilentShellCommand("cmd battery unplug"); executeSilentShellCommand("cmd battery unplug");
} }

View File

@@ -38,6 +38,7 @@ public class MixedModesTest extends AbstractRestrictBackgroundNetworkTestCase {
removeRestrictBackgroundWhitelist(mUid); removeRestrictBackgroundWhitelist(mUid);
removeRestrictBackgroundBlacklist(mUid); removeRestrictBackgroundBlacklist(mUid);
removePowerSaveModeWhitelist(TEST_APP2_PKG); removePowerSaveModeWhitelist(TEST_APP2_PKG);
removePowerSaveModeExceptIdleWhitelist(TEST_APP2_PKG);
registerBroadcastReceiver(); registerBroadcastReceiver();
} }
@@ -200,4 +201,74 @@ public class MixedModesTest extends AbstractRestrictBackgroundNetworkTestCase {
removeRestrictBackgroundBlacklist(mUid); removeRestrictBackgroundBlacklist(mUid);
removePowerSaveModeWhitelist(TEST_APP2_PKG); 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"); "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. * * Helper methods. *
*******************/ *******************/