Merge "Add cts to test power-save-except-idle whitelist is correctly used." into oc-dev
am: e60355110f
Change-Id: I057dc702ebb67876040c3175e33e2e1654036043
This commit is contained in:
@@ -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!
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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. *
|
||||
*******************/
|
||||
|
||||
Reference in New Issue
Block a user