From 0a0857762a05c5b7e80a2fab5142aa4ea91eed18 Mon Sep 17 00:00:00 2001 From: Felipe Leme Date: Thu, 18 Feb 2016 17:22:33 -0800 Subject: [PATCH] Split client-side test in 2 classes so some common code can be used to test Power Save Mode. BUG: 27127112 Change-Id: I6954ce8474da6da678d4bfe194334ed5a08aaeff --- ...actRestrictBackgroundNetworkTestCase.java} | 78 +++++-------------- .../cts/net/hostside/DataSaverModeTest.java | 61 +++++++++++++++ ...ostsideRestrictBackgroundNetworkTests.java | 6 +- 3 files changed, 85 insertions(+), 60 deletions(-) rename tests/cts/hostside/app/src/com/android/cts/net/hostside/{ConnectivityManagerTest.java => AbstractRestrictBackgroundNetworkTestCase.java} (78%) create mode 100644 tests/cts/hostside/app/src/com/android/cts/net/hostside/DataSaverModeTest.java diff --git a/tests/cts/hostside/app/src/com/android/cts/net/hostside/ConnectivityManagerTest.java b/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java similarity index 78% rename from tests/cts/hostside/app/src/com/android/cts/net/hostside/ConnectivityManagerTest.java rename to tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java index 9a4f318ce8..59de7593b2 100644 --- a/tests/cts/hostside/app/src/com/android/cts/net/hostside/ConnectivityManagerTest.java +++ b/tests/cts/hostside/app/src/com/android/cts/net/hostside/AbstractRestrictBackgroundNetworkTestCase.java @@ -37,14 +37,10 @@ import android.test.InstrumentationTestCase; import android.util.Log; /** - * Tests for the {@link ConnectivityManager} API. - * - *

These tests rely on a host-side test to use {@code adb shell cmd netpolicy} to put the device - * in the proper state. In fact, they're more like "assertions" than tests per se - the real test - * logic is done on {@code HostsideNetworkTests}. + * Superclass for tests related to background network restrictions. */ -public class ConnectivityManagerTest extends InstrumentationTestCase { - private static final String TAG = "ConnectivityManagerTest"; +abstract class AbstractRestrictBackgroundNetworkTestCase extends InstrumentationTestCase { + protected static final String TAG = "RestrictBackgroundNetworkTests"; private static final String TEST_APP2_PKG = "com.android.cts.net.hostside.app2"; @@ -65,11 +61,11 @@ public class ConnectivityManagerTest extends InstrumentationTestCase { private static final String STATUS_NETWORK_UNAVAILABLE_PREFIX = "NetworkUnavailable:"; private static final String STATUS_NETWORK_AVAILABLE_PREFIX = "NetworkAvailable:"; - private Context mContext; - private Instrumentation mInstrumentation; - private ConnectivityManager mCm; - private WifiManager mWfm; - private int mUid; + protected Context mContext; + protected Instrumentation mInstrumentation; + protected ConnectivityManager mCm; + protected WifiManager mWfm; + protected int mUid; private boolean mResetMeteredWifi = false; @Override @@ -85,10 +81,7 @@ public class ConnectivityManagerTest extends InstrumentationTestCase { Log.d(TAG, "UIDS: test app=" + myUid + ", app2=" + mUid); - setRestrictBackground(false); setMeteredNetwork(); - - registerApp2BroadcastReceiver(); } @Override @@ -100,41 +93,12 @@ public class ConnectivityManagerTest extends InstrumentationTestCase { } } - public void testGetRestrictBackgroundStatus_disabled() throws Exception { - removeRestrictBackgroundWhitelist(mUid); - assertRestrictBackgroundStatus(RESTRICT_BACKGROUND_STATUS_DISABLED); - assertRestrictBackgroundChangedReceived(0); - - // Sanity check: make sure status is always disabled, never whitelisted - addRestrictBackgroundWhitelist(mUid); - assertRestrictBackgroundStatus(RESTRICT_BACKGROUND_STATUS_DISABLED); - assertRestrictBackgroundChangedReceived(0); - } - - public void testGetRestrictBackgroundStatus_whitelisted() throws Exception { - setRestrictBackground(true); - assertRestrictBackgroundChangedReceived(1); - - addRestrictBackgroundWhitelist(mUid); - assertRestrictBackgroundStatus(RESTRICT_BACKGROUND_STATUS_WHITELISTED); - assertRestrictBackgroundChangedReceived(2); - } - - public void testGetRestrictBackgroundStatus_enabled() throws Exception { - setRestrictBackground(true); - assertRestrictBackgroundChangedReceived(1); - - removeRestrictBackgroundWhitelist(mUid); - assertRestrictBackgroundStatus(RESTRICT_BACKGROUND_STATUS_ENABLED); - assertRestrictBackgroundChangedReceived(1); - } - - public void assertRestrictBackgroundChangedReceived(int expectedCount) throws Exception { + protected void assertRestrictBackgroundChangedReceived(int expectedCount) throws Exception { assertRestrictBackgroundChangedReceived(DYNAMIC_RECEIVER, expectedCount); assertRestrictBackgroundChangedReceived(MANIFEST_RECEIVER, 0); } - private void assertRestrictBackgroundChangedReceived(String receiverName, int expectedCount) + protected void assertRestrictBackgroundChangedReceived(String receiverName, int expectedCount) throws Exception { int attempts = 0; int count = 0; @@ -154,7 +118,7 @@ public class ConnectivityManagerTest extends InstrumentationTestCase { + maxAttempts * SLEEP_TIME_SEC + " seconds", expectedCount, count); } - private String sendOrderedBroadcast(Intent intent) throws Exception { + protected String sendOrderedBroadcast(Intent intent) throws Exception { final LinkedBlockingQueue result = new LinkedBlockingQueue<>(1); Log.d(TAG, "Sending ordered broadcast: " + intent); mContext.sendOrderedBroadcast(intent, null, new BroadcastReceiver() { @@ -176,7 +140,7 @@ public class ConnectivityManagerTest extends InstrumentationTestCase { return resultData; } - private int getNumberBroadcastsReceived(String receiverName, String action) throws Exception { + protected int getNumberBroadcastsReceived(String receiverName, String action) throws Exception { final Intent intent = new Intent(ACTION_GET_COUNTERS); intent.putExtra(EXTRA_ACTION, ACTION_RESTRICT_BACKGROUND_CHANGED); intent.putExtra(EXTRA_RECEIVER_NAME, receiverName); @@ -184,7 +148,7 @@ public class ConnectivityManagerTest extends InstrumentationTestCase { return Integer.valueOf(resultData); } - private void assertRestrictBackgroundStatus(int expectedApiStatus) throws Exception { + protected void assertRestrictBackgroundStatus(int expectedApiStatus) throws Exception { final Intent intent = new Intent(ACTION_CHECK_NETWORK); final String resultData = sendOrderedBroadcast(intent); final String[] resultItems = resultData.split(RESULT_SEPARATOR); @@ -201,13 +165,13 @@ public class ConnectivityManagerTest extends InstrumentationTestCase { + actualNetworkStatus, actualNetworkStatus.startsWith(expectedPrefix)); } - private String executeShellCommand(String command) throws IOException { + protected String executeShellCommand(String command) throws IOException { final String result = runShellCommand(mInstrumentation, command).trim(); if (DEBUG) Log.d(TAG, "Command '" + command + "' returned '" + result + "'"); return result; } - private void setMeteredNetwork() throws IOException { + protected void setMeteredNetwork() throws IOException { final NetworkInfo info = mCm.getActiveNetworkInfo(); final boolean metered = mCm.isActiveNetworkMetered(); if (metered) { @@ -221,7 +185,7 @@ public class ConnectivityManagerTest extends InstrumentationTestCase { mResetMeteredWifi = true; } - private String setWifiMeteredStatus(boolean metered) throws IOException { + protected String setWifiMeteredStatus(boolean metered) throws IOException { mWfm.setWifiEnabled(true); // TODO: if it's not guaranteed the device has wi-fi, we need to change the tests // to make the actual verification of restrictions optional. @@ -242,7 +206,7 @@ public class ConnectivityManagerTest extends InstrumentationTestCase { return netId; } - private void setRestrictBackground(boolean enabled) throws IOException { + protected void setRestrictBackground(boolean enabled) throws IOException { executeShellCommand("cmd netpolicy set restrict-background " + enabled); final String output = executeShellCommand("cmd netpolicy get restrict-background "); final String expectedSuffix = enabled ? "enabled" : "disabled"; @@ -251,17 +215,17 @@ public class ConnectivityManagerTest extends InstrumentationTestCase { output.endsWith(expectedSuffix)); } - private void addRestrictBackgroundWhitelist(int uid) throws Exception { + protected void addRestrictBackgroundWhitelist(int uid) throws Exception { executeShellCommand("cmd netpolicy add restrict-background-whitelist " + uid); assertRestrictBackgroundWhitelist(uid, true); } - private void removeRestrictBackgroundWhitelist(int uid) throws Exception { + protected void removeRestrictBackgroundWhitelist(int uid) throws Exception { executeShellCommand("cmd netpolicy remove restrict-background-whitelist " + uid); assertRestrictBackgroundWhitelist(uid, false); } - private void assertRestrictBackgroundWhitelist(int uid, boolean expected) throws Exception { + protected void assertRestrictBackgroundWhitelist(int uid, boolean expected) throws Exception { final int maxTries = 5; boolean actual = false; for (int i = 1; i <= maxTries; i++) { @@ -285,7 +249,7 @@ public class ConnectivityManagerTest extends InstrumentationTestCase { * The service must run in a separate app because otherwise it would be killed every time * {@link #runDeviceTests(String, String)} is executed. */ - private void registerApp2BroadcastReceiver() throws IOException { + protected void registerApp2BroadcastReceiver() throws IOException { executeShellCommand("am startservice com.android.cts.net.hostside.app2/.MyService"); } diff --git a/tests/cts/hostside/app/src/com/android/cts/net/hostside/DataSaverModeTest.java b/tests/cts/hostside/app/src/com/android/cts/net/hostside/DataSaverModeTest.java new file mode 100644 index 0000000000..c62189ed23 --- /dev/null +++ b/tests/cts/hostside/app/src/com/android/cts/net/hostside/DataSaverModeTest.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.cts.net.hostside; + +import static android.net.ConnectivityManager.RESTRICT_BACKGROUND_STATUS_DISABLED; +import static android.net.ConnectivityManager.RESTRICT_BACKGROUND_STATUS_ENABLED; +import static android.net.ConnectivityManager.RESTRICT_BACKGROUND_STATUS_WHITELISTED; + +public class DataSaverModeTest extends AbstractRestrictBackgroundNetworkTestCase { + + @Override + public void setUp() throws Exception { + super.setUp(); + + setRestrictBackground(false); + registerApp2BroadcastReceiver(); + } + + public void testGetRestrictBackgroundStatus_disabled() throws Exception { + removeRestrictBackgroundWhitelist(mUid); + assertRestrictBackgroundStatus(RESTRICT_BACKGROUND_STATUS_DISABLED); + assertRestrictBackgroundChangedReceived(0); + + // Sanity check: make sure status is always disabled, never whitelisted + addRestrictBackgroundWhitelist(mUid); + assertRestrictBackgroundStatus(RESTRICT_BACKGROUND_STATUS_DISABLED); + assertRestrictBackgroundChangedReceived(0); + } + + public void testGetRestrictBackgroundStatus_whitelisted() throws Exception { + setRestrictBackground(true); + assertRestrictBackgroundChangedReceived(1); + + addRestrictBackgroundWhitelist(mUid); + assertRestrictBackgroundStatus(RESTRICT_BACKGROUND_STATUS_WHITELISTED); + assertRestrictBackgroundChangedReceived(2); + } + + public void testGetRestrictBackgroundStatus_enabled() throws Exception { + setRestrictBackground(true); + assertRestrictBackgroundChangedReceived(1); + + removeRestrictBackgroundWhitelist(mUid); + assertRestrictBackgroundStatus(RESTRICT_BACKGROUND_STATUS_ENABLED); + assertRestrictBackgroundChangedReceived(1); + } +} 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 f2c3b1f7d2..21e5aa7f48 100644 --- a/tests/cts/hostside/src/com/android/cts/net/HostsideRestrictBackgroundNetworkTests.java +++ b/tests/cts/hostside/src/com/android/cts/net/HostsideRestrictBackgroundNetworkTests.java @@ -40,17 +40,17 @@ public class HostsideRestrictBackgroundNetworkTests extends HostsideNetworkTestC } public void testGetRestrictBackgroundStatus_disabled() throws Exception { - runDeviceTests(TEST_PKG, TEST_PKG + ".ConnectivityManagerTest", + runDeviceTests(TEST_PKG, TEST_PKG + ".DataSaverModeTest", "testGetRestrictBackgroundStatus_disabled"); } public void testGetRestrictBackgroundStatus_whitelisted() throws Exception { - runDeviceTests(TEST_PKG, TEST_PKG + ".ConnectivityManagerTest", + runDeviceTests(TEST_PKG, TEST_PKG + ".DataSaverModeTest", "testGetRestrictBackgroundStatus_whitelisted"); } public void testGetRestrictBackgroundStatus_enabled() throws Exception { - runDeviceTests(TEST_PKG, TEST_PKG + ".ConnectivityManagerTest", + runDeviceTests(TEST_PKG, TEST_PKG + ".DataSaverModeTest", "testGetRestrictBackgroundStatus_enabled"); }