Loading services/core/java/com/android/server/TEST_MAPPING +15 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,21 @@ { "name": "CtsScopedStorageHostTest", "file_patterns": ["StorageManagerService\\.java"] }, { "name": "FrameworksMockingServicesTests", "file_patterns": ["AppStateTracker\\.java"], "options": [ { "include-filter": "com.android.server.AppStateTrackerTest" }, { "include-annotation": "android.platform.test.annotations.Presubmit" }, { "exclude-annotation": "androidx.test.filters.FlakyTest" } ] } ] } services/tests/mockingservicestests/src/com/android/server/AppStateTrackerTest.java +40 −1 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ import android.os.PowerSaveState; import android.os.Process; import android.os.RemoteException; import android.os.UserHandle; import android.platform.test.annotations.Presubmit; import android.provider.Settings.Global; import android.test.mock.MockContentResolver; import android.util.ArraySet; Loading Loading @@ -94,6 +95,7 @@ import java.util.function.Consumer; * * Run with: atest com.android.server.AppStateTrackerTest */ @Presubmit @SmallTest @RunWith(AndroidJUnit4.class) public class AppStateTrackerTest { Loading Loading @@ -130,6 +132,7 @@ public class AppStateTrackerTest { @Override AppStandbyInternal injectAppStandbyInternal() { when(mMockAppStandbyInternal.isAppIdleEnabled()).thenReturn(true); return mMockAppStandbyInternal; } Loading @@ -141,7 +144,9 @@ public class AppStateTrackerTest { } @Override boolean isSmallBatteryDevice() { return mIsSmallBatteryDevice; }; boolean isSmallBatteryDevice() { return mIsSmallBatteryDevice; } } private static final int UID_1 = Process.FIRST_APPLICATION_UID + 1; Loading Loading @@ -201,6 +206,13 @@ public class AppStateTrackerTest { mMainHandler = new Handler(Looper.getMainLooper()); } /** * Enqueues a message and waits for it to complete. This ensures that any messages posted until * now have been executed. * * Note that these messages may have enqueued more messages, which may or may not have executed * when this method returns. */ private void waitUntilMainHandlerDrain() throws Exception { final CountDownLatch l = new CountDownLatch(1); mMainHandler.post(() -> { Loading Loading @@ -362,6 +374,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidActive(UID_1); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); areRestricted(instance, UID_1, PACKAGE_1, NONE); areRestricted(instance, UID_2, PACKAGE_2, JOBS_AND_ALARMS); areRestricted(instance, Process.SYSTEM_UID, PACKAGE_SYSTEM, NONE); Loading @@ -370,6 +383,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidGone(UID_1, /*disable=*/ false); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); areRestricted(instance, UID_1, PACKAGE_1, JOBS_AND_ALARMS); areRestricted(instance, UID_2, PACKAGE_2, JOBS_AND_ALARMS); areRestricted(instance, Process.SYSTEM_UID, PACKAGE_SYSTEM, NONE); Loading @@ -378,12 +392,14 @@ public class AppStateTrackerTest { mIUidObserver.onUidActive(UID_1); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); areRestricted(instance, UID_1, PACKAGE_1, NONE); areRestricted(instance, UID_2, PACKAGE_2, JOBS_AND_ALARMS); areRestricted(instance, Process.SYSTEM_UID, PACKAGE_SYSTEM, NONE); mIUidObserver.onUidIdle(UID_1, /*disable=*/ false); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); areRestricted(instance, UID_1, PACKAGE_1, JOBS_AND_ALARMS); areRestricted(instance, UID_2, PACKAGE_2, JOBS_AND_ALARMS); areRestricted(instance, Process.SYSTEM_UID, PACKAGE_SYSTEM, NONE); Loading Loading @@ -499,6 +515,8 @@ public class AppStateTrackerTest { mIUidObserver.onUidActive(UID_1); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); assertTrue(instance.isUidActive(UID_1)); assertFalse(instance.isUidActive(UID_2)); assertTrue(instance.isUidActive(Process.SYSTEM_UID)); Loading @@ -517,6 +535,8 @@ public class AppStateTrackerTest { ActivityManager.PROCESS_CAPABILITY_NONE); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); assertTrue(instance.isUidActive(UID_1)); assertFalse(instance.isUidActive(UID_2)); assertTrue(instance.isUidActive(Process.SYSTEM_UID)); Loading @@ -535,6 +555,8 @@ public class AppStateTrackerTest { ActivityManager.PROCESS_CAPABILITY_NONE); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); assertTrue(instance.isUidActive(UID_1)); assertFalse(instance.isUidActive(UID_2)); assertTrue(instance.isUidActive(Process.SYSTEM_UID)); Loading @@ -546,6 +568,8 @@ public class AppStateTrackerTest { mIUidObserver.onUidGone(UID_1, true); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); assertFalse(instance.isUidActive(UID_1)); assertFalse(instance.isUidActive(UID_2)); assertTrue(instance.isUidActive(Process.SYSTEM_UID)); Loading @@ -557,6 +581,8 @@ public class AppStateTrackerTest { mIUidObserver.onUidIdle(UID_2, true); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); assertFalse(instance.isUidActive(UID_1)); assertFalse(instance.isUidActive(UID_2)); assertTrue(instance.isUidActive(Process.SYSTEM_UID)); Loading @@ -570,6 +596,8 @@ public class AppStateTrackerTest { ActivityManager.PROCESS_CAPABILITY_NONE); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); assertFalse(instance.isUidActive(UID_1)); assertFalse(instance.isUidActive(UID_2)); assertTrue(instance.isUidActive(Process.SYSTEM_UID)); Loading @@ -583,6 +611,8 @@ public class AppStateTrackerTest { ActivityManager.PROCESS_CAPABILITY_NONE); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); assertFalse(instance.isUidActive(UID_1)); assertFalse(instance.isUidActive(UID_2)); assertTrue(instance.isUidActive(Process.SYSTEM_UID)); Loading Loading @@ -1006,6 +1036,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidActive(UID_10_1); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); Loading @@ -1018,6 +1049,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidGone(UID_10_1, true); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); Loading @@ -1030,6 +1062,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidActive(UID_10_1); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); Loading @@ -1042,6 +1075,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidIdle(UID_10_1, true); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); Loading @@ -1068,6 +1102,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidActive(UID_10_1); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); Loading @@ -1080,6 +1115,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidGone(UID_10_1, true); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); Loading @@ -1092,6 +1128,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidActive(UID_10_1); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); Loading @@ -1104,6 +1141,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidIdle(UID_10_1, true); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); Loading @@ -1123,6 +1161,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidActive(UID_1); mIUidObserver.onUidActive(UID_10_1); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); setAppOps(UID_2, PACKAGE_2, true); Loading Loading
services/core/java/com/android/server/TEST_MAPPING +15 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,21 @@ { "name": "CtsScopedStorageHostTest", "file_patterns": ["StorageManagerService\\.java"] }, { "name": "FrameworksMockingServicesTests", "file_patterns": ["AppStateTracker\\.java"], "options": [ { "include-filter": "com.android.server.AppStateTrackerTest" }, { "include-annotation": "android.platform.test.annotations.Presubmit" }, { "exclude-annotation": "androidx.test.filters.FlakyTest" } ] } ] }
services/tests/mockingservicestests/src/com/android/server/AppStateTrackerTest.java +40 −1 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ import android.os.PowerSaveState; import android.os.Process; import android.os.RemoteException; import android.os.UserHandle; import android.platform.test.annotations.Presubmit; import android.provider.Settings.Global; import android.test.mock.MockContentResolver; import android.util.ArraySet; Loading Loading @@ -94,6 +95,7 @@ import java.util.function.Consumer; * * Run with: atest com.android.server.AppStateTrackerTest */ @Presubmit @SmallTest @RunWith(AndroidJUnit4.class) public class AppStateTrackerTest { Loading Loading @@ -130,6 +132,7 @@ public class AppStateTrackerTest { @Override AppStandbyInternal injectAppStandbyInternal() { when(mMockAppStandbyInternal.isAppIdleEnabled()).thenReturn(true); return mMockAppStandbyInternal; } Loading @@ -141,7 +144,9 @@ public class AppStateTrackerTest { } @Override boolean isSmallBatteryDevice() { return mIsSmallBatteryDevice; }; boolean isSmallBatteryDevice() { return mIsSmallBatteryDevice; } } private static final int UID_1 = Process.FIRST_APPLICATION_UID + 1; Loading Loading @@ -201,6 +206,13 @@ public class AppStateTrackerTest { mMainHandler = new Handler(Looper.getMainLooper()); } /** * Enqueues a message and waits for it to complete. This ensures that any messages posted until * now have been executed. * * Note that these messages may have enqueued more messages, which may or may not have executed * when this method returns. */ private void waitUntilMainHandlerDrain() throws Exception { final CountDownLatch l = new CountDownLatch(1); mMainHandler.post(() -> { Loading Loading @@ -362,6 +374,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidActive(UID_1); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); areRestricted(instance, UID_1, PACKAGE_1, NONE); areRestricted(instance, UID_2, PACKAGE_2, JOBS_AND_ALARMS); areRestricted(instance, Process.SYSTEM_UID, PACKAGE_SYSTEM, NONE); Loading @@ -370,6 +383,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidGone(UID_1, /*disable=*/ false); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); areRestricted(instance, UID_1, PACKAGE_1, JOBS_AND_ALARMS); areRestricted(instance, UID_2, PACKAGE_2, JOBS_AND_ALARMS); areRestricted(instance, Process.SYSTEM_UID, PACKAGE_SYSTEM, NONE); Loading @@ -378,12 +392,14 @@ public class AppStateTrackerTest { mIUidObserver.onUidActive(UID_1); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); areRestricted(instance, UID_1, PACKAGE_1, NONE); areRestricted(instance, UID_2, PACKAGE_2, JOBS_AND_ALARMS); areRestricted(instance, Process.SYSTEM_UID, PACKAGE_SYSTEM, NONE); mIUidObserver.onUidIdle(UID_1, /*disable=*/ false); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); areRestricted(instance, UID_1, PACKAGE_1, JOBS_AND_ALARMS); areRestricted(instance, UID_2, PACKAGE_2, JOBS_AND_ALARMS); areRestricted(instance, Process.SYSTEM_UID, PACKAGE_SYSTEM, NONE); Loading Loading @@ -499,6 +515,8 @@ public class AppStateTrackerTest { mIUidObserver.onUidActive(UID_1); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); assertTrue(instance.isUidActive(UID_1)); assertFalse(instance.isUidActive(UID_2)); assertTrue(instance.isUidActive(Process.SYSTEM_UID)); Loading @@ -517,6 +535,8 @@ public class AppStateTrackerTest { ActivityManager.PROCESS_CAPABILITY_NONE); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); assertTrue(instance.isUidActive(UID_1)); assertFalse(instance.isUidActive(UID_2)); assertTrue(instance.isUidActive(Process.SYSTEM_UID)); Loading @@ -535,6 +555,8 @@ public class AppStateTrackerTest { ActivityManager.PROCESS_CAPABILITY_NONE); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); assertTrue(instance.isUidActive(UID_1)); assertFalse(instance.isUidActive(UID_2)); assertTrue(instance.isUidActive(Process.SYSTEM_UID)); Loading @@ -546,6 +568,8 @@ public class AppStateTrackerTest { mIUidObserver.onUidGone(UID_1, true); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); assertFalse(instance.isUidActive(UID_1)); assertFalse(instance.isUidActive(UID_2)); assertTrue(instance.isUidActive(Process.SYSTEM_UID)); Loading @@ -557,6 +581,8 @@ public class AppStateTrackerTest { mIUidObserver.onUidIdle(UID_2, true); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); assertFalse(instance.isUidActive(UID_1)); assertFalse(instance.isUidActive(UID_2)); assertTrue(instance.isUidActive(Process.SYSTEM_UID)); Loading @@ -570,6 +596,8 @@ public class AppStateTrackerTest { ActivityManager.PROCESS_CAPABILITY_NONE); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); assertFalse(instance.isUidActive(UID_1)); assertFalse(instance.isUidActive(UID_2)); assertTrue(instance.isUidActive(Process.SYSTEM_UID)); Loading @@ -583,6 +611,8 @@ public class AppStateTrackerTest { ActivityManager.PROCESS_CAPABILITY_NONE); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); assertFalse(instance.isUidActive(UID_1)); assertFalse(instance.isUidActive(UID_2)); assertTrue(instance.isUidActive(Process.SYSTEM_UID)); Loading Loading @@ -1006,6 +1036,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidActive(UID_10_1); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); Loading @@ -1018,6 +1049,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidGone(UID_10_1, true); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); Loading @@ -1030,6 +1062,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidActive(UID_10_1); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); Loading @@ -1042,6 +1075,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidIdle(UID_10_1, true); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); Loading @@ -1068,6 +1102,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidActive(UID_10_1); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); Loading @@ -1080,6 +1115,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidGone(UID_10_1, true); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); Loading @@ -1092,6 +1128,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidActive(UID_10_1); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); Loading @@ -1104,6 +1141,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidIdle(UID_10_1, true); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); verify(l, times(0)).updateAllJobs(); verify(l, times(1)).updateJobsForUid(eq(UID_10_1), anyBoolean()); Loading @@ -1123,6 +1161,7 @@ public class AppStateTrackerTest { mIUidObserver.onUidActive(UID_1); mIUidObserver.onUidActive(UID_10_1); waitUntilMainHandlerDrain(); waitUntilMainHandlerDrain(); setAppOps(UID_2, PACKAGE_2, true); Loading