From 6a001974c4e17536e1b12d72a189563410c848eb Mon Sep 17 00:00:00 2001 From: Sudheer Shanka Date: Wed, 2 Aug 2017 17:19:24 -0700 Subject: [PATCH] Add tests to check connectivity during temp-powersave-whitelist changes. Bug: 30568426 Test: bit CtsHostsideNetworkTests:com.android.cts.net.HostsideRestrictBackgroundNetworkTests Change-Id: Ic0ffd29c5e0d5f11bec229ecdf5fd8c55fef1478 --- .../net/hostside/AbstractAppIdleTestCase.java | 13 +++++ ...ractRestrictBackgroundNetworkTestCase.java | 8 +++ .../cts/net/hostside/MixedModesTest.java | 52 +++++++++++++++++++ ...ostsideRestrictBackgroundNetworkTests.java | 20 +++++++ 4 files changed, 93 insertions(+) diff --git a/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractAppIdleTestCase.java b/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractAppIdleTestCase.java index d2c08739b4..133a43bce9 100644 --- a/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractAppIdleTestCase.java +++ b/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractAppIdleTestCase.java @@ -127,6 +127,19 @@ abstract class AbstractAppIdleTestCase extends AbstractRestrictBackgroundNetwork assertBackgroundNetworkAccess(false); } + public void testBackgroundNetworkAccess_tempWhitelisted() throws Exception { + if (!isSupported()) return; + + setAppIdle(true); + assertBackgroundNetworkAccess(false); + + addTempPowerSaveModeWhitelist(TEST_APP2_PKG, TEMP_POWERSAVE_WHITELIST_DURATION_MS); + assertBackgroundNetworkAccess(true); + // Wait until the whitelist duration is expired. + SystemClock.sleep(TEMP_POWERSAVE_WHITELIST_DURATION_MS); + assertBackgroundNetworkAccess(false); + } + public void testBackgroundNetworkAccess_disabled() throws Exception { if (!isSupported()) return; diff --git a/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java b/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java index 12b338f8e5..525fc177b2 100644 --- a/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java +++ b/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java @@ -106,6 +106,8 @@ abstract class AbstractRestrictBackgroundNetworkTestCase extends Instrumentation private static final String APP_NOT_FOREGROUND_ERROR = "app_not_fg"; + protected static final long TEMP_POWERSAVE_WHITELIST_DURATION_MS = 5_000; // 5 sec + protected Context mContext; protected Instrumentation mInstrumentation; protected ConnectivityManager mCm; @@ -683,6 +685,12 @@ abstract class AbstractRestrictBackgroundNetworkTestCase extends Instrumentation + ". Full list: " + uids); } + protected void addTempPowerSaveModeWhitelist(String packageName, long duration) + throws Exception { + Log.i(TAG, "Adding pkg " + packageName + " to temp-power-save-mode whitelist"); + executeShellCommand("dumpsys deviceidle tempwhitelist -d " + duration + " " + packageName); + } + protected void assertPowerSaveModeWhitelist(String packageName, boolean expected) throws Exception { // TODO: currently the power-save mode is behaving like idle, but once it changes, we'll diff --git a/tests/cts/hostside/app/src/com/android/cts/net/hostside/MixedModesTest.java b/tests/cts/hostside/app/src/com/android/cts/net/hostside/MixedModesTest.java index 5248255482..76332bedb5 100644 --- a/tests/cts/hostside/app/src/com/android/cts/net/hostside/MixedModesTest.java +++ b/tests/cts/hostside/app/src/com/android/cts/net/hostside/MixedModesTest.java @@ -15,6 +15,7 @@ */ package com.android.cts.net.hostside; +import android.os.SystemClock; import android.util.Log; /** @@ -271,4 +272,55 @@ public class MixedModesTest extends AbstractRestrictBackgroundNetworkTestCase { setDozeMode(false); } } + + public void testAppIdleAndDoze_tempPowerSaveWhitelists() 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 { + assertBackgroundNetworkAccess(false); + + addTempPowerSaveModeWhitelist(TEST_APP2_PKG, TEMP_POWERSAVE_WHITELIST_DURATION_MS); + assertBackgroundNetworkAccess(true); + + // Wait until the whitelist duration is expired. + SystemClock.sleep(TEMP_POWERSAVE_WHITELIST_DURATION_MS); + assertBackgroundNetworkAccess(false); + } finally { + setAppIdle(false); + setDozeMode(false); + } + } + + public void testAppIdleAndBatterySaver_tempPowerSaveWhitelists() throws Exception { + if (!isSupported()) { + return; + } + + setBatterySaverMode(true); + setAppIdle(true); + + try { + assertBackgroundNetworkAccess(false); + + addTempPowerSaveModeWhitelist(TEST_APP2_PKG, TEMP_POWERSAVE_WHITELIST_DURATION_MS); + assertBackgroundNetworkAccess(true); + + // Wait until the whitelist duration is expired. + SystemClock.sleep(TEMP_POWERSAVE_WHITELIST_DURATION_MS); + assertBackgroundNetworkAccess(false); + } finally { + setAppIdle(false); + setBatterySaverMode(false); + } + } } diff --git a/tests/cts/hostside/src/com/android/cts/net/HostsideRestrictBackgroundNetworkTests.java b/tests/cts/hostside/src/com/android/cts/net/HostsideRestrictBackgroundNetworkTests.java index bf3fc0832e..fe9d36ce1d 100644 --- a/tests/cts/hostside/src/com/android/cts/net/HostsideRestrictBackgroundNetworkTests.java +++ b/tests/cts/hostside/src/com/android/cts/net/HostsideRestrictBackgroundNetworkTests.java @@ -146,6 +146,11 @@ public class HostsideRestrictBackgroundNetworkTests extends HostsideNetworkTestC "testBackgroundNetworkAccess_whitelisted"); } + public void testAppIdleMetered_tempWhitelisted() throws Exception { + runDeviceTests(TEST_PKG, TEST_PKG + ".AppIdleMeteredTest", + "testBackgroundNetworkAccess_tempWhitelisted"); + } + public void testAppIdleMetered_enabled() throws Exception { runDeviceTests(TEST_PKG, TEST_PKG + ".AppIdleMeteredTest", "testBackgroundNetworkAccess_enabled"); @@ -166,6 +171,11 @@ public class HostsideRestrictBackgroundNetworkTests extends HostsideNetworkTestC "testBackgroundNetworkAccess_whitelisted"); } + public void testAppIdleNonMetered_tempWhitelisted() throws Exception { + runDeviceTests(TEST_PKG, TEST_PKG + ".AppIdleNonMeteredTest", + "testBackgroundNetworkAccess_tempWhitelisted"); + } + public void testAppIdleNonMetered_enabled() throws Exception { runDeviceTests(TEST_PKG, TEST_PKG + ".AppIdleNonMeteredTest", "testBackgroundNetworkAccess_enabled"); @@ -261,6 +271,16 @@ public class HostsideRestrictBackgroundNetworkTests extends HostsideNetworkTestC "testDozeAndAppIdle_powerSaveWhitelists"); } + public void testAppIdleAndDoze_tempPowerSaveWhitelists() throws Exception { + runDeviceTests(TEST_PKG, TEST_PKG + ".MixedModesTest", + "testAppIdleAndDoze_tempPowerSaveWhitelists"); + } + + public void testAppIdleAndBatterySaver_tempPowerSaveWhitelists() throws Exception { + runDeviceTests(TEST_PKG, TEST_PKG + ".MixedModesTest", + "testAppIdleAndBatterySaver_tempPowerSaveWhitelists"); + } + /******************* * Helper methods. * *******************/