diff options
author | 2018-10-09 18:26:56 -0700 | |
---|---|---|
committer | 2018-10-09 18:26:56 -0700 | |
commit | bf86938b2f83576837d362212f10af49b0aa381a (patch) | |
tree | 99f8bd87da5238fde4c8864e280279b6f876563c | |
parent | fa66c22c2063c1e737dc0f79c04e710083f3a4bf (diff) |
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
-rw-r--r-- | services/tests/mockingservicestests/src/com/android/server/DeviceIdleControllerTest.java | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/services/tests/mockingservicestests/src/com/android/server/DeviceIdleControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/DeviceIdleControllerTest.java index 95ed00f3ad5b..fdd20707aabf 100644 --- a/services/tests/mockingservicestests/src/com/android/server/DeviceIdleControllerTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/DeviceIdleControllerTest.java @@ -360,6 +360,54 @@ public class DeviceIdleControllerTest { } @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); // Make sure the controller doesn't think there's a wake-from-idle alarm coming soon. @@ -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); |