From 70f91402695b247aff93eec377bd278a2783a6a6 Mon Sep 17 00:00:00 2001 From: Fan Wu Date: Tue, 9 Apr 2024 05:41:28 +0000 Subject: [PATCH] Remove LooperMode.LEGACY usage Bug: 330824314 Test: atest Change-Id: I7b2cb83ddb969a907cea0df18486f89f05969ebc --- .../deviceinfo/PrivateVolumeUnmountTest.java | 10 ++++-- ...faultAppsListPreferenceControllerTest.java | 24 +++++++++----- .../batteryusage/DataProcessManagerTest.java | 32 ++++++++++++------- 3 files changed, 45 insertions(+), 21 deletions(-) diff --git a/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeUnmountTest.java b/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeUnmountTest.java index 4704475bb94..9425d08a2bc 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeUnmountTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/PrivateVolumeUnmountTest.java @@ -30,19 +30,23 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; +import org.robolectric.android.util.concurrent.PausedExecutorService; import org.robolectric.annotation.Config; -import org.robolectric.annotation.LooperMode; +import org.robolectric.shadows.ShadowLooper; +import org.robolectric.shadows.ShadowPausedAsyncTask; import org.robolectric.shadows.androidx.fragment.FragmentController; @RunWith(RobolectricTestRunner.class) -@LooperMode(LooperMode.Mode.LEGACY) @Config(shadows = ShadowStorageManager.class) public class PrivateVolumeUnmountTest { private PrivateVolumeUnmount mFragment; + private PausedExecutorService mExecutorService; @Before public void setUp() { + mExecutorService = new PausedExecutorService(); + ShadowPausedAsyncTask.overrideExecutor(mExecutorService); Bundle bundle = new Bundle(); bundle.putString(VolumeInfo.EXTRA_VOLUME_ID, "id"); mFragment = FragmentController.of(new PrivateVolumeUnmount(), bundle) @@ -65,6 +69,8 @@ public class PrivateVolumeUnmountTest { final Button confirm = mFragment.getView().findViewById(R.id.confirm); confirm.performClick(); + mExecutorService.runAll(); + ShadowLooper.idleMainLooper(); assertThat(ShadowStorageManager.isUnmountCalled()).isTrue(); } diff --git a/tests/robotests/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceControllerTest.java index 1a16d04812b..dc61455560e 100644 --- a/tests/robotests/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/enterprise/EnterpriseSetDefaultAppsListPreferenceControllerTest.java @@ -37,6 +37,7 @@ import android.os.UserHandle; import androidx.preference.Preference; import androidx.preference.PreferenceManager; import androidx.preference.PreferenceScreen; +import androidx.test.core.app.ApplicationProvider; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; @@ -46,23 +47,27 @@ import com.android.settings.testutils.ApplicationTestUtils; import com.android.settings.testutils.FakeFeatureFactory; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; -import org.robolectric.annotation.LooperMode; -import org.robolectric.shadows.ShadowApplication; +import org.robolectric.android.util.concurrent.PausedExecutorService; +import org.robolectric.shadows.ShadowLooper; +import org.robolectric.shadows.ShadowPausedAsyncTask; import java.util.Arrays; import java.util.Collections; @RunWith(RobolectricTestRunner.class) -@LooperMode(LooperMode.Mode.LEGACY) public class EnterpriseSetDefaultAppsListPreferenceControllerTest { + @Rule + public final MockitoRule mMockitoRule = MockitoJUnit.rule(); + private static final int USER_ID = 0; private static final int APP_UID = 0; @@ -82,11 +87,13 @@ public class EnterpriseSetDefaultAppsListPreferenceControllerTest { private Context mContext; private FakeFeatureFactory mFeatureFactory; + private PausedExecutorService mExecutorService; @Before public void setUp() { - MockitoAnnotations.initMocks(this); - mContext = spy(RuntimeEnvironment.application); + mExecutorService = new PausedExecutorService(); + ShadowPausedAsyncTask.overrideExecutor(mExecutorService); + mContext = spy(ApplicationProvider.getApplicationContext()); mFeatureFactory = FakeFeatureFactory.setupForTest(); when(mFragment.getPreferenceScreen()).thenReturn(mScreen); when(mPrefenceManager.getContext()).thenReturn(mContext); @@ -127,7 +134,8 @@ public class EnterpriseSetDefaultAppsListPreferenceControllerTest { new UserAppInfo(user, appInfo2))); new EnterpriseSetDefaultAppsListPreferenceController(mContext, mFragment, mPackageManager); - ShadowApplication.runBackgroundTasks(); + mExecutorService.runAll(); + ShadowLooper.idleMainLooper(); ArgumentCaptor apps = ArgumentCaptor.forClass(Preference.class); verify(mScreen, times(2)).addPreference(apps.capture()); diff --git a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessManagerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessManagerTest.java index b025db8d551..7faca0d0960 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessManagerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/batteryusage/DataProcessManagerTest.java @@ -41,19 +41,24 @@ import android.os.RemoteException; import android.os.UserManager; import android.text.format.DateUtils; +import androidx.test.core.app.ApplicationProvider; + import com.android.settings.fuelgauge.batteryusage.db.AppUsageEventEntity; import org.junit.After; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; import org.robolectric.RobolectricTestRunner; -import org.robolectric.RuntimeEnvironment; -import org.robolectric.annotation.LooperMode; +import org.robolectric.android.util.concurrent.PausedExecutorService; +import org.robolectric.shadows.ShadowLooper; +import org.robolectric.shadows.ShadowPausedAsyncTask; import java.util.ArrayList; import java.util.Collections; @@ -65,10 +70,14 @@ import java.util.function.Supplier; @RunWith(RobolectricTestRunner.class) public final class DataProcessManagerTest { + @Rule + public final MockitoRule mMockitoRule = MockitoJUnit.rule(); + private static final String FAKE_ENTRY_KEY = "fake_entry_key"; private Context mContext; private DataProcessManager mDataProcessManager; + private PausedExecutorService mExecutorService; @Mock private UserIdsSeries mUserIdsSeries; @Mock private IUsageStatsManager mUsageStatsManager; @@ -80,9 +89,9 @@ public final class DataProcessManagerTest { @Before public void setUp() { - MockitoAnnotations.initMocks(this); - - mContext = spy(RuntimeEnvironment.application); + mExecutorService = new PausedExecutorService(); + ShadowPausedAsyncTask.overrideExecutor(mExecutorService); + mContext = spy(ApplicationProvider.getApplicationContext()); DataProcessor.sTestSystemAppsPackageNames = Set.of(); DataProcessor.sUsageStatsManager = mUsageStatsManager; doReturn(mContext).when(mContext).getApplicationContext(); @@ -117,7 +126,6 @@ public final class DataProcessManagerTest { } @Test - @LooperMode(LooperMode.Mode.LEGACY) public void constructor_noLevelData() { final DataProcessManager dataProcessManager = new DataProcessManager( @@ -129,7 +137,6 @@ public final class DataProcessManagerTest { } @Test - @LooperMode(LooperMode.Mode.LEGACY) public void start_loadEmptyDatabaseAppUsageData() { final MatrixCursor cursor = new MatrixCursor( @@ -142,6 +149,8 @@ public final class DataProcessManagerTest { doReturn(true).when(mUserManager).isUserUnlocked(anyInt()); mDataProcessManager.start(); + mExecutorService.runAll(); + ShadowLooper.idleMainLooper(); assertThat(mDataProcessManager.getIsCurrentAppUsageLoaded()).isTrue(); assertThat(mDataProcessManager.getIsDatabaseAppUsageLoaded()).isTrue(); @@ -152,7 +161,6 @@ public final class DataProcessManagerTest { } @Test - @LooperMode(LooperMode.Mode.LEGACY) public void start_loadExpectedAppUsageData() throws RemoteException { final List hourlyBatteryLevelsPerDay = new ArrayList<>(); @@ -254,6 +262,8 @@ public final class DataProcessManagerTest { hourlyBatteryLevelsPerDay, /* batteryHistoryMap= */ new HashMap<>()); dataProcessManager.start(); + mExecutorService.runAll(); + ShadowLooper.idleMainLooper(); assertThat(dataProcessManager.getIsCurrentAppUsageLoaded()).isTrue(); assertThat(dataProcessManager.getIsDatabaseAppUsageLoaded()).isTrue(); @@ -301,7 +311,6 @@ public final class DataProcessManagerTest { } @Test - @LooperMode(LooperMode.Mode.LEGACY) public void start_currentUserLocked_emptyAppUsageList() throws RemoteException { final UsageEvents.Event event = getUsageEvent(UsageEvents.Event.ACTIVITY_RESUMED, /* timestamp= */ 1, "package"); @@ -323,6 +332,8 @@ public final class DataProcessManagerTest { DatabaseUtils.sFakeSupplier = () -> cursor; mDataProcessManager.start(); + mExecutorService.runAll(); + ShadowLooper.idleMainLooper(); assertThat(mDataProcessManager.getAppUsageEventList()).isEmpty(); assertThat(mDataProcessManager.getAppUsagePeriodMap()).isNull(); @@ -330,7 +341,6 @@ public final class DataProcessManagerTest { } @Test - @LooperMode(LooperMode.Mode.LEGACY) public void getBatteryLevelData_emptyHistoryMap_returnNull() { assertThat( DataProcessManager.getBatteryLevelData(