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