diff options
author | 2023-01-16 13:42:53 +0000 | |
---|---|---|
committer | 2023-01-17 12:32:48 +0000 | |
commit | 8094d4da907d8e2eac09c76e18063f98e0bfa288 (patch) | |
tree | 626fce76fdf34cead3461cc7c4aa666a456b88f8 /services/robotests/backup | |
parent | 8d22a5fa95d0ff92803471a47deb1195757e420e (diff) |
Allow disabling framework Backup scheduling
This remerges ag/20838898 that was reverted due to breaking a
robolectric test in BackupFrameworksServicesRoboTests.
Test: 1. atest BackupFrameworksServicesRoboTests
2. atest CtsBackupHostTestCases
Bug: 259953764
Change-Id: I11c7dbe9959f5b5d1acf53e7830b7256357768e2
Diffstat (limited to 'services/robotests/backup')
3 files changed, 68 insertions, 16 deletions
diff --git a/services/robotests/backup/src/com/android/server/backup/FullBackupJobTest.java b/services/robotests/backup/src/com/android/server/backup/FullBackupJobTest.java index dbc0da707477..c8797e25b740 100644 --- a/services/robotests/backup/src/com/android/server/backup/FullBackupJobTest.java +++ b/services/robotests/backup/src/com/android/server/backup/FullBackupJobTest.java @@ -18,6 +18,8 @@ package com.android.server.backup; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.when; + import android.annotation.UserIdInt; import android.app.job.JobScheduler; import android.content.Context; @@ -31,6 +33,8 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.Shadows; @@ -45,14 +49,20 @@ public class FullBackupJobTest { private BackupManagerConstants mConstants; private ShadowJobScheduler mShadowJobScheduler; + @Mock + private UserBackupManagerService mUserBackupManagerService; + @UserIdInt private int mUserOneId; @UserIdInt private int mUserTwoId; @Before public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mConstants = new BackupManagerConstants(Handler.getMain(), mContext.getContentResolver()); mConstants.start(); + when(mUserBackupManagerService.getConstants()).thenReturn(mConstants); + when(mUserBackupManagerService.isFrameworkSchedulingEnabled()).thenReturn(true); mShadowJobScheduler = Shadows.shadowOf(mContext.getSystemService(JobScheduler.class)); @@ -69,8 +79,8 @@ public class FullBackupJobTest { @Test public void testSchedule_afterScheduling_jobExists() { - FullBackupJob.schedule(mUserOneId, mContext, 0, mConstants); - FullBackupJob.schedule(mUserTwoId, mContext, 0, mConstants); + FullBackupJob.schedule(mUserOneId, mContext, 0, mUserBackupManagerService); + FullBackupJob.schedule(mUserTwoId, mContext, 0, mUserBackupManagerService); assertThat(mShadowJobScheduler.getPendingJob(getJobIdForUserId(mUserOneId))).isNotNull(); assertThat(mShadowJobScheduler.getPendingJob(getJobIdForUserId(mUserTwoId))).isNotNull(); @@ -78,18 +88,34 @@ public class FullBackupJobTest { @Test public void testCancel_afterCancelling_jobDoesntExist() { - FullBackupJob.schedule(mUserOneId, mContext, 0, mConstants); - FullBackupJob.schedule(mUserTwoId, mContext, 0, mConstants); + FullBackupJob.schedule(mUserOneId, mContext, 0, mUserBackupManagerService); + FullBackupJob.schedule(mUserTwoId, mContext, 0, mUserBackupManagerService); FullBackupJob.cancel(mUserOneId, mContext); FullBackupJob.cancel(mUserTwoId, mContext); assertThat(mShadowJobScheduler.getPendingJob(getJobIdForUserId(mUserOneId))).isNull(); assertThat(mShadowJobScheduler.getPendingJob(getJobIdForUserId(mUserTwoId))).isNull(); } + + @Test + public void testSchedule_isNoopIfDisabled() { + when(mUserBackupManagerService.isFrameworkSchedulingEnabled()).thenReturn(false); + FullBackupJob.schedule(mUserOneId, mContext, 0, mUserBackupManagerService); + + assertThat(mShadowJobScheduler.getPendingJob(getJobIdForUserId(mUserOneId))).isNull(); + } + + @Test + public void testSchedule_schedulesJobIfEnabled() { + when(mUserBackupManagerService.isFrameworkSchedulingEnabled()).thenReturn(true); + FullBackupJob.schedule(mUserOneId, mContext, 0, mUserBackupManagerService); + + assertThat(mShadowJobScheduler.getPendingJob(getJobIdForUserId(mUserOneId))).isNotNull(); + } // @Test public void testSchedule_onlySchedulesForRequestedUser() { - FullBackupJob.schedule(mUserOneId, mContext, 0, mConstants); + FullBackupJob.schedule(mUserOneId, mContext, 0, mUserBackupManagerService); assertThat(mShadowJobScheduler.getPendingJob(getJobIdForUserId(mUserOneId))).isNotNull(); assertThat(mShadowJobScheduler.getPendingJob(getJobIdForUserId(mUserTwoId))).isNull(); @@ -97,8 +123,8 @@ public class FullBackupJobTest { // @Test public void testCancel_onlyCancelsForRequestedUser() { - FullBackupJob.schedule(mUserOneId, mContext, 0, mConstants); - FullBackupJob.schedule(mUserTwoId, mContext, 0, mConstants); + FullBackupJob.schedule(mUserOneId, mContext, 0, mUserBackupManagerService); + FullBackupJob.schedule(mUserTwoId, mContext, 0, mUserBackupManagerService); FullBackupJob.cancel(mUserOneId, mContext); assertThat(mShadowJobScheduler.getPendingJob(getJobIdForUserId(mUserOneId))).isNull(); diff --git a/services/robotests/backup/src/com/android/server/backup/KeyValueBackupJobTest.java b/services/robotests/backup/src/com/android/server/backup/KeyValueBackupJobTest.java index 1c5fac28de3c..712ac55d2ff5 100644 --- a/services/robotests/backup/src/com/android/server/backup/KeyValueBackupJobTest.java +++ b/services/robotests/backup/src/com/android/server/backup/KeyValueBackupJobTest.java @@ -18,6 +18,8 @@ package com.android.server.backup; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.Mockito.when; + import android.annotation.UserIdInt; import android.content.Context; import android.os.Handler; @@ -30,6 +32,8 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; @@ -41,14 +45,20 @@ public class KeyValueBackupJobTest { private Context mContext; private BackupManagerConstants mConstants; + @Mock + private UserBackupManagerService mUserBackupManagerService; + @UserIdInt private int mUserOneId; @UserIdInt private int mUserTwoId; @Before public void setUp() throws Exception { + MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mConstants = new BackupManagerConstants(Handler.getMain(), mContext.getContentResolver()); mConstants.start(); + when(mUserBackupManagerService.getConstants()).thenReturn(mConstants); + when(mUserBackupManagerService.isFrameworkSchedulingEnabled()).thenReturn(true); mUserOneId = UserHandle.USER_SYSTEM; mUserTwoId = mUserOneId + 1; @@ -62,6 +72,22 @@ public class KeyValueBackupJobTest { } @Test + public void testSchedule_isNoopIfDisabled() { + when(mUserBackupManagerService.isFrameworkSchedulingEnabled()).thenReturn(false); + KeyValueBackupJob.schedule(mUserOneId, mContext, mUserBackupManagerService); + + assertThat(KeyValueBackupJob.isScheduled(mUserOneId)).isFalse(); + } + + @Test + public void testSchedule_schedulesJobIfEnabled() { + when(mUserBackupManagerService.isFrameworkSchedulingEnabled()).thenReturn(true); + KeyValueBackupJob.schedule(mUserOneId, mContext, mUserBackupManagerService); + + assertThat(KeyValueBackupJob.isScheduled(mUserOneId)).isTrue(); + } + + @Test public void testIsScheduled_beforeScheduling_returnsFalse() { assertThat(KeyValueBackupJob.isScheduled(mUserOneId)).isFalse(); assertThat(KeyValueBackupJob.isScheduled(mUserTwoId)).isFalse(); @@ -69,8 +95,8 @@ public class KeyValueBackupJobTest { @Test public void testIsScheduled_afterScheduling_returnsTrue() { - KeyValueBackupJob.schedule(mUserOneId, mContext, mConstants); - KeyValueBackupJob.schedule(mUserTwoId, mContext, mConstants); + KeyValueBackupJob.schedule(mUserOneId, mContext, mUserBackupManagerService); + KeyValueBackupJob.schedule(mUserTwoId, mContext, mUserBackupManagerService); assertThat(KeyValueBackupJob.isScheduled(mUserOneId)).isTrue(); assertThat(KeyValueBackupJob.isScheduled(mUserTwoId)).isTrue(); @@ -78,8 +104,8 @@ public class KeyValueBackupJobTest { @Test public void testIsScheduled_afterCancelling_returnsFalse() { - KeyValueBackupJob.schedule(mUserOneId, mContext, mConstants); - KeyValueBackupJob.schedule(mUserTwoId, mContext, mConstants); + KeyValueBackupJob.schedule(mUserOneId, mContext, mUserBackupManagerService); + KeyValueBackupJob.schedule(mUserTwoId, mContext, mUserBackupManagerService); KeyValueBackupJob.cancel(mUserOneId, mContext); KeyValueBackupJob.cancel(mUserTwoId, mContext); @@ -89,7 +115,7 @@ public class KeyValueBackupJobTest { @Test public void testIsScheduled_afterScheduling_returnsTrueOnlyForScheduledUser() { - KeyValueBackupJob.schedule(mUserOneId, mContext, mConstants); + KeyValueBackupJob.schedule(mUserOneId, mContext, mUserBackupManagerService); assertThat(KeyValueBackupJob.isScheduled(mUserOneId)).isTrue(); assertThat(KeyValueBackupJob.isScheduled(mUserTwoId)).isFalse(); @@ -97,8 +123,8 @@ public class KeyValueBackupJobTest { @Test public void testIsScheduled_afterCancelling_returnsFalseOnlyForCancelledUser() { - KeyValueBackupJob.schedule(mUserOneId, mContext, mConstants); - KeyValueBackupJob.schedule(mUserTwoId, mContext, mConstants); + KeyValueBackupJob.schedule(mUserOneId, mContext, mUserBackupManagerService); + KeyValueBackupJob.schedule(mUserTwoId, mContext, mUserBackupManagerService); KeyValueBackupJob.cancel(mUserOneId, mContext); assertThat(KeyValueBackupJob.isScheduled(mUserOneId)).isFalse(); diff --git a/services/robotests/backup/src/com/android/server/backup/UserBackupManagerServiceTest.java b/services/robotests/backup/src/com/android/server/backup/UserBackupManagerServiceTest.java index 2878743d8a5f..02e0bbfd3519 100644 --- a/services/robotests/backup/src/com/android/server/backup/UserBackupManagerServiceTest.java +++ b/services/robotests/backup/src/com/android/server/backup/UserBackupManagerServiceTest.java @@ -1381,8 +1381,8 @@ public class UserBackupManagerServiceTest { * BackupManagerConstants)} that throws an {@link IllegalArgumentException}. */ public static void schedule(int userId, Context ctx, long delay, - BackupManagerConstants constants) { - ShadowKeyValueBackupJob.schedule(userId, ctx, delay, constants); + UserBackupManagerService userBackupManagerService) { + ShadowKeyValueBackupJob.schedule(userId, ctx, delay, userBackupManagerService); throw new IllegalArgumentException(); } } |