Restructure expedited jobs related networkpolicy tests.
This would make it easy to add these tests to JobScheduler related TEST_MAPPINGs. Test: atest src/com/android/cts/net/HostsideRestrictBackgroundNetworkTests.java Ignore-AOSP-First: Expedited jobs are not available in AOSP yet Change-Id: I4132c3b694515a23ff41aa413b48d6251f5b685e
This commit is contained in:
@@ -50,7 +50,7 @@ abstract class AbstractAppIdleTestCase extends AbstractRestrictBackgroundNetwork
|
|||||||
public final void tearDown() throws Exception {
|
public final void tearDown() throws Exception {
|
||||||
super.tearDown();
|
super.tearDown();
|
||||||
|
|
||||||
executeSilentShellCommand("cmd battery reset");
|
resetBatteryState();
|
||||||
setAppIdle(false);
|
setAppIdle(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,134 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 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 com.android.cts.net.hostside.NetworkPolicyTestUtils.setRestrictBackground;
|
||||||
|
import static com.android.cts.net.hostside.Property.APP_STANDBY_MODE;
|
||||||
|
import static com.android.cts.net.hostside.Property.BATTERY_SAVER_MODE;
|
||||||
|
import static com.android.cts.net.hostside.Property.DATA_SAVER_MODE;
|
||||||
|
import static com.android.cts.net.hostside.Property.DOZE_MODE;
|
||||||
|
import static com.android.cts.net.hostside.Property.METERED_NETWORK;
|
||||||
|
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class AbstractExpeditedJobTest extends AbstractRestrictBackgroundNetworkTestCase {
|
||||||
|
@Before
|
||||||
|
public final void setUp() throws Exception {
|
||||||
|
super.setUp();
|
||||||
|
resetDeviceState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
public final void tearDown() throws Exception {
|
||||||
|
super.tearDown();
|
||||||
|
resetDeviceState();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void resetDeviceState() throws Exception {
|
||||||
|
resetBatteryState();
|
||||||
|
setBatterySaverMode(false);
|
||||||
|
setRestrictBackground(false);
|
||||||
|
setAppIdle(false);
|
||||||
|
setDozeMode(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@RequiredProperties({BATTERY_SAVER_MODE})
|
||||||
|
public void testNetworkAccess_batterySaverMode() throws Exception {
|
||||||
|
assertBackgroundNetworkAccess(true);
|
||||||
|
assertExpeditedJobHasNetworkAccess();
|
||||||
|
|
||||||
|
setBatterySaverMode(true);
|
||||||
|
assertBackgroundNetworkAccess(false);
|
||||||
|
assertExpeditedJobHasNetworkAccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@RequiredProperties({DATA_SAVER_MODE, METERED_NETWORK})
|
||||||
|
public void testNetworkAccess_dataSaverMode() throws Exception {
|
||||||
|
assertBackgroundNetworkAccess(true);
|
||||||
|
assertExpeditedJobHasNetworkAccess();
|
||||||
|
|
||||||
|
setRestrictBackground(true);
|
||||||
|
assertBackgroundNetworkAccess(false);
|
||||||
|
assertExpeditedJobHasNetworkAccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@RequiredProperties({APP_STANDBY_MODE})
|
||||||
|
public void testNetworkAccess_appIdleState() throws Exception {
|
||||||
|
turnBatteryOn();
|
||||||
|
assertBackgroundNetworkAccess(true);
|
||||||
|
assertExpeditedJobHasNetworkAccess();
|
||||||
|
|
||||||
|
setAppIdle(true);
|
||||||
|
assertBackgroundNetworkAccess(false);
|
||||||
|
assertExpeditedJobHasNetworkAccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@RequiredProperties({DOZE_MODE})
|
||||||
|
public void testNetworkAccess_dozeMode() throws Exception {
|
||||||
|
assertBackgroundNetworkAccess(true);
|
||||||
|
assertExpeditedJobHasNetworkAccess();
|
||||||
|
|
||||||
|
setDozeMode(true);
|
||||||
|
assertBackgroundNetworkAccess(false);
|
||||||
|
assertExpeditedJobHasNetworkAccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@RequiredProperties({DATA_SAVER_MODE, BATTERY_SAVER_MODE, METERED_NETWORK})
|
||||||
|
public void testNetworkAccess_dataAndBatterySaverMode() throws Exception {
|
||||||
|
assertBackgroundNetworkAccess(true);
|
||||||
|
assertExpeditedJobHasNetworkAccess();
|
||||||
|
|
||||||
|
setRestrictBackground(true);
|
||||||
|
setBatterySaverMode(true);
|
||||||
|
assertBackgroundNetworkAccess(false);
|
||||||
|
assertExpeditedJobHasNetworkAccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@RequiredProperties({DOZE_MODE, DATA_SAVER_MODE, METERED_NETWORK})
|
||||||
|
public void testNetworkAccess_dozeAndDataSaverMode() throws Exception {
|
||||||
|
assertBackgroundNetworkAccess(true);
|
||||||
|
assertExpeditedJobHasNetworkAccess();
|
||||||
|
|
||||||
|
setRestrictBackground(true);
|
||||||
|
setDozeMode(true);
|
||||||
|
assertBackgroundNetworkAccess(false);
|
||||||
|
assertExpeditedJobHasNetworkAccess();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@RequiredProperties({DATA_SAVER_MODE, BATTERY_SAVER_MODE, METERED_NETWORK, DOZE_MODE,
|
||||||
|
APP_STANDBY_MODE})
|
||||||
|
public void testNetworkAccess_allRestrictionsEnabled() throws Exception {
|
||||||
|
assertBackgroundNetworkAccess(true);
|
||||||
|
assertExpeditedJobHasNetworkAccess();
|
||||||
|
|
||||||
|
setRestrictBackground(true);
|
||||||
|
setBatterySaverMode(true);
|
||||||
|
setAppIdle(true);
|
||||||
|
setDozeMode(true);
|
||||||
|
assertBackgroundNetworkAccess(false);
|
||||||
|
assertExpeditedJobHasNetworkAccess();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -55,6 +55,7 @@ import android.provider.DeviceConfig;
|
|||||||
import android.service.notification.NotificationListenerService;
|
import android.service.notification.NotificationListenerService;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import com.android.compatibility.common.util.BatteryUtils;
|
||||||
import com.android.compatibility.common.util.DeviceConfigStateHelper;
|
import com.android.compatibility.common.util.DeviceConfigStateHelper;
|
||||||
|
|
||||||
import org.junit.Rule;
|
import org.junit.Rule;
|
||||||
@@ -267,11 +268,10 @@ public abstract class AbstractRestrictBackgroundNetworkTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Asserts that an app always have access while on foreground or running a foreground service
|
* Asserts that an app always have access while on foreground or running a foreground service.
|
||||||
* or an expedited job.
|
|
||||||
*
|
*
|
||||||
* <p>This method will launch an activity, a foreground service, and an expedited job to make
|
* <p>This method will launch an activity, a foreground service to make
|
||||||
* the assertion, but will finish the activity / stop the service / finish the job afterwards.
|
* the assertion, but will finish the activity / stop the service afterwards.
|
||||||
*/
|
*/
|
||||||
protected void assertsForegroundAlwaysHasNetworkAccess() throws Exception{
|
protected void assertsForegroundAlwaysHasNetworkAccess() throws Exception{
|
||||||
// Checks foreground first.
|
// Checks foreground first.
|
||||||
@@ -281,7 +281,9 @@ public abstract class AbstractRestrictBackgroundNetworkTestCase {
|
|||||||
// Then foreground service
|
// Then foreground service
|
||||||
launchComponentAndAssertNetworkAccess(TYPE_COMPONENT_FOREGROUND_SERVICE);
|
launchComponentAndAssertNetworkAccess(TYPE_COMPONENT_FOREGROUND_SERVICE);
|
||||||
stopForegroundService();
|
stopForegroundService();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void assertExpeditedJobHasNetworkAccess() throws Exception {
|
||||||
launchComponentAndAssertNetworkAccess(TYPE_EXPEDITED_JOB);
|
launchComponentAndAssertNetworkAccess(TYPE_EXPEDITED_JOB);
|
||||||
finishExpeditedJob();
|
finishExpeditedJob();
|
||||||
}
|
}
|
||||||
@@ -621,6 +623,10 @@ public abstract class AbstractRestrictBackgroundNetworkTestCase {
|
|||||||
assertBatteryState(true);
|
assertBatteryState(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void resetBatteryState() {
|
||||||
|
BatteryUtils.runDumpsysBatteryReset();
|
||||||
|
}
|
||||||
|
|
||||||
private void assertBatteryState(boolean pluggedIn) throws Exception {
|
private void assertBatteryState(boolean pluggedIn) throws Exception {
|
||||||
final long endTime = SystemClock.elapsedRealtime() + BATTERY_STATE_TIMEOUT_MS;
|
final long endTime = SystemClock.elapsedRealtime() + BATTERY_STATE_TIMEOUT_MS;
|
||||||
while (isDevicePluggedIn() != pluggedIn && SystemClock.elapsedRealtime() <= endTime) {
|
while (isDevicePluggedIn() != pluggedIn && SystemClock.elapsedRealtime() <= endTime) {
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 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 com.android.cts.net.hostside.Property.METERED_NETWORK;
|
||||||
|
|
||||||
|
@RequiredProperties({METERED_NETWORK})
|
||||||
|
public class ExpeditedJobMeteredTest extends AbstractExpeditedJobTest {
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (C) 2021 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 com.android.cts.net.hostside.Property.NON_METERED_NETWORK;
|
||||||
|
|
||||||
|
@RequiredProperties({NON_METERED_NETWORK})
|
||||||
|
public class ExpeditedJobNonMeteredTest extends AbstractExpeditedJobTest {
|
||||||
|
}
|
||||||
@@ -318,11 +318,23 @@ public class HostsideRestrictBackgroundNetworkTests extends HostsideNetworkTestC
|
|||||||
/**************************
|
/**************************
|
||||||
* Restricted mode tests. *
|
* Restricted mode tests. *
|
||||||
**************************/
|
**************************/
|
||||||
public void testRestrictedMode_networkAccess() throws Exception {
|
public void testNetworkAccess_restrictedMode() throws Exception {
|
||||||
runDeviceTests(TEST_PKG, TEST_PKG + ".RestrictedModeTest",
|
runDeviceTests(TEST_PKG, TEST_PKG + ".RestrictedModeTest",
|
||||||
"testNetworkAccess");
|
"testNetworkAccess");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/************************
|
||||||
|
* Expedited job tests. *
|
||||||
|
************************/
|
||||||
|
|
||||||
|
public void testMeteredNetworkAccess_expeditedJob() throws Exception {
|
||||||
|
runDeviceTests(TEST_PKG, TEST_PKG + ".ExpeditedJobMeteredTest");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testNonMeteredNetworkAccess_expeditedJob() throws Exception {
|
||||||
|
runDeviceTests(TEST_PKG, TEST_PKG + ".ExpeditedJobNonMeteredTest");
|
||||||
|
}
|
||||||
|
|
||||||
/*******************
|
/*******************
|
||||||
* Helper methods. *
|
* Helper methods. *
|
||||||
*******************/
|
*******************/
|
||||||
|
|||||||
Reference in New Issue
Block a user