Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9c17cde9 authored by Suprabh Shukla's avatar Suprabh Shukla
Browse files

Fix failing tests in AppStateTrackerTest

Also adding the test to presubmit when AppStateTracker changes

Test: atest FrameworksMockingServicesTests:AppStateTrackerTest

Fixes: 159504076
Change-Id: I45b595809aa9996fd09981b1c9a196ef6f4016b6
parent 72424a9d
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -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"
                }
            ]
        }
    ]
}
+40 −1
Original line number Diff line number Diff line
@@ -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);