Test deep transitions when an alarm is imminent.
This adds a test for when an alarm will fire soon. In that case, the system should stay out of deep idle. Bug: 116512267 Test: atest com.android.server.DeviceIdleControllerTest Change-Id: I51f10104422579ad64766c03366f0e952e3ff1ac
This commit is contained in:
@@ -359,6 +359,54 @@ public class DeviceIdleControllerTest {
|
||||
verifyStateConditions(STATE_ACTIVE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStepIdleStateLocked_ValidStates_WithWakeFromIdleAlarmSoon() {
|
||||
enterDeepState(STATE_ACTIVE);
|
||||
// Return that there's an alarm coming soon.
|
||||
doReturn(SystemClock.elapsedRealtime() + mConstants.MIN_TIME_TO_ALARM / 2).when(
|
||||
mAlarmManager).getNextWakeFromIdleTime();
|
||||
mDeviceIdleController.stepIdleStateLocked("testing");
|
||||
verifyStateConditions(STATE_ACTIVE);
|
||||
|
||||
// Everything besides ACTIVE should end up as INACTIVE since the screen would be off.
|
||||
|
||||
enterDeepState(STATE_INACTIVE);
|
||||
doReturn(SystemClock.elapsedRealtime() + mConstants.MIN_TIME_TO_ALARM / 2).when(
|
||||
mAlarmManager).getNextWakeFromIdleTime();
|
||||
mDeviceIdleController.stepIdleStateLocked("testing");
|
||||
verifyStateConditions(STATE_INACTIVE);
|
||||
|
||||
enterDeepState(STATE_IDLE_PENDING);
|
||||
doReturn(SystemClock.elapsedRealtime() + mConstants.MIN_TIME_TO_ALARM / 2).when(
|
||||
mAlarmManager).getNextWakeFromIdleTime();
|
||||
mDeviceIdleController.stepIdleStateLocked("testing");
|
||||
verifyStateConditions(STATE_INACTIVE);
|
||||
|
||||
enterDeepState(STATE_SENSING);
|
||||
doReturn(SystemClock.elapsedRealtime() + mConstants.MIN_TIME_TO_ALARM / 2).when(
|
||||
mAlarmManager).getNextWakeFromIdleTime();
|
||||
mDeviceIdleController.stepIdleStateLocked("testing");
|
||||
verifyStateConditions(STATE_INACTIVE);
|
||||
|
||||
enterDeepState(STATE_LOCATING);
|
||||
doReturn(SystemClock.elapsedRealtime() + mConstants.MIN_TIME_TO_ALARM / 2).when(
|
||||
mAlarmManager).getNextWakeFromIdleTime();
|
||||
mDeviceIdleController.stepIdleStateLocked("testing");
|
||||
verifyStateConditions(STATE_INACTIVE);
|
||||
|
||||
enterDeepState(STATE_IDLE);
|
||||
doReturn(SystemClock.elapsedRealtime() + mConstants.MIN_TIME_TO_ALARM / 2).when(
|
||||
mAlarmManager).getNextWakeFromIdleTime();
|
||||
mDeviceIdleController.stepIdleStateLocked("testing");
|
||||
verifyStateConditions(STATE_INACTIVE);
|
||||
|
||||
enterDeepState(STATE_IDLE_MAINTENANCE);
|
||||
doReturn(SystemClock.elapsedRealtime() + mConstants.MIN_TIME_TO_ALARM / 2).when(
|
||||
mAlarmManager).getNextWakeFromIdleTime();
|
||||
mDeviceIdleController.stepIdleStateLocked("testing");
|
||||
verifyStateConditions(STATE_INACTIVE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testStepIdleStateLocked_ValidStates_NoLocationManager() {
|
||||
mDeviceIdleController.setLocationManagerForTest(null);
|
||||
@@ -429,7 +477,6 @@ public class DeviceIdleControllerTest {
|
||||
public void testStepIdleStateLocked_ValidStates_WithLocationManager_WithProviders() {
|
||||
doReturn(mock(LocationProvider.class)).when(mLocationManager).getProvider(anyString());
|
||||
// Make sure the controller doesn't think there's a wake-from-idle alarm coming soon.
|
||||
// TODO: add tests for when there's a wake-from-idle alarm coming soon.
|
||||
doReturn(Long.MAX_VALUE).when(mAlarmManager).getNextWakeFromIdleTime();
|
||||
// Set state to INACTIVE.
|
||||
mDeviceIdleController.becomeActiveLocked("testing", 0);
|
||||
|
||||
Reference in New Issue
Block a user