Fix failing tests in AppStateTrackerTest

Also adding the test to presubmit when AppStateTracker changes

Test: atest FrameworksMockingServicesTests:AppStateTrackerTest

Fixes: 159504076
Change-Id: I45b595809aa9996fd09981b1c9a196ef6f4016b6
This commit is contained in:
Suprabh Shukla
2020-07-16 01:15:39 -07:00
parent 72424a9dac
commit 9c17cde971
2 changed files with 55 additions and 1 deletions

View File

@@ -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"
}
]
}
]
}

View File

@@ -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;
@@ -94,6 +95,7 @@ import java.util.function.Consumer;
*
* Run with: atest com.android.server.AppStateTrackerTest
*/
@Presubmit
@SmallTest
@RunWith(AndroidJUnit4.class)
public class AppStateTrackerTest {
@@ -130,6 +132,7 @@ public class AppStateTrackerTest {
@Override
AppStandbyInternal injectAppStandbyInternal() {
when(mMockAppStandbyInternal.isAppIdleEnabled()).thenReturn(true);
return mMockAppStandbyInternal;
}
@@ -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;
@@ -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(() -> {
@@ -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);
@@ -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);
@@ -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);
@@ -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));
@@ -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));
@@ -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));
@@ -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));
@@ -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));
@@ -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));
@@ -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));
@@ -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());
@@ -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());
@@ -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());
@@ -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());
@@ -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());
@@ -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());
@@ -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());
@@ -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());
@@ -1123,6 +1161,7 @@ public class AppStateTrackerTest {
mIUidObserver.onUidActive(UID_1);
mIUidObserver.onUidActive(UID_10_1);
waitUntilMainHandlerDrain();
waitUntilMainHandlerDrain();
setAppOps(UID_2, PACKAGE_2, true);