summaryrefslogtreecommitdiff
path: root/services/robotests/src
diff options
context:
space:
mode:
authorAnnie Meng <anniemeng@google.com>2018-12-04 19:18:32 +0000
committerAnnie Meng <anniemeng@google.com>2018-12-10 12:43:44 +0000
commit59f6f7fffaca0533dc636e7441ae28fa5aa199bb (patch)
tree94eaade06fbb83ab1331ba1c103e09f421ffd18b /services/robotests/src
parent604eb2a83801d4bfd9e83e1561678956fbe7663c (diff)
[Multi-user] Initialize user state in UserBMS
Move per-user state initialization (directories for bookkeeping data and transport manager) from BMS to UserBMS. The UserBMS constructor is now private and callers should use the static helper to create a new instance. This is primarily for three reasons: 1) Allows for extracting logic out of the constructor into helpers. 2) Allows for performing necessary user-specific setup in the future such as data migration. 3) Allows for writing unit tests without having setters/getters exclusively for tests. Bug: 120212806 Test: 1) atest RunFrameworksServicesRoboTests 2) boot -> unlock user -> service started and verify transports registered 3) adb shell bmgr backupnow [package] -> writes to /data dir adb shell bmgr enable false -> writes to /data dir 4) adb shell bmgr backupnow --all -> writes to /cache dir Change-Id: If88d95059951dbae0abf691629db1a05d27f743d
Diffstat (limited to 'services/robotests/src')
-rw-r--r--services/robotests/src/com/android/server/backup/UserBackupManagerServiceTest.java224
-rw-r--r--services/robotests/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java14
-rw-r--r--services/robotests/src/com/android/server/backup/testing/BackupManagerServiceTestUtils.java25
3 files changed, 194 insertions, 69 deletions
diff --git a/services/robotests/src/com/android/server/backup/UserBackupManagerServiceTest.java b/services/robotests/src/com/android/server/backup/UserBackupManagerServiceTest.java
index 9d4381914608..efbcb960c1e9 100644
--- a/services/robotests/src/com/android/server/backup/UserBackupManagerServiceTest.java
+++ b/services/robotests/src/com/android/server/backup/UserBackupManagerServiceTest.java
@@ -148,7 +148,7 @@ public class UserBackupManagerServiceTest {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
when(mTransportManager.getTransportCurrentDestinationString(eq(mTransportName)))
.thenReturn("destinationString");
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
String destination = backupManagerService.getDestinationString(mTransportName);
@@ -164,7 +164,7 @@ public class UserBackupManagerServiceTest {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
when(mTransportManager.getTransportCurrentDestinationString(eq(mTransportName)))
.thenThrow(TransportNotRegisteredException.class);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
String destination = backupManagerService.getDestinationString(mTransportName);
@@ -180,7 +180,7 @@ public class UserBackupManagerServiceTest {
mShadowContext.denyPermissions(android.Manifest.permission.BACKUP);
when(mTransportManager.getTransportCurrentDestinationString(eq(mTransportName)))
.thenThrow(TransportNotRegisteredException.class);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
expectThrows(
SecurityException.class,
@@ -195,7 +195,7 @@ public class UserBackupManagerServiceTest {
public void testIsAppEligibleForBackup_whenAppNotEligible() throws Exception {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
setUpCurrentTransport(mTransportManager, mTransport);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
boolean result = backupManagerService.isAppEligibleForBackup(PACKAGE_1);
@@ -211,7 +211,7 @@ public class UserBackupManagerServiceTest {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
TransportMock transportMock = setUpCurrentTransport(mTransportManager, backupTransport());
ShadowAppBackupUtils.setAppRunningAndEligibleForBackupWithTransport(PACKAGE_1);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
boolean result = backupManagerService.isAppEligibleForBackup(PACKAGE_1);
@@ -229,7 +229,7 @@ public class UserBackupManagerServiceTest {
mShadowContext.denyPermissions(android.Manifest.permission.BACKUP);
setUpCurrentTransport(mTransportManager, mTransport);
ShadowAppBackupUtils.setAppRunningAndEligibleForBackupWithTransport(PACKAGE_1);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
expectThrows(
SecurityException.class,
@@ -246,7 +246,7 @@ public class UserBackupManagerServiceTest {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
TransportMock transportMock = setUpCurrentTransport(mTransportManager, mTransport);
ShadowAppBackupUtils.setAppRunningAndEligibleForBackupWithTransport(PACKAGE_1);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
String[] filtered =
backupManagerService.filterAppsEligibleForBackup(
@@ -264,7 +264,7 @@ public class UserBackupManagerServiceTest {
@Test
public void testFilterAppsEligibleForBackup_whenNoneIsEligible() throws Exception {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
String[] filtered =
backupManagerService.filterAppsEligibleForBackup(
@@ -281,7 +281,7 @@ public class UserBackupManagerServiceTest {
public void testFilterAppsEligibleForBackup_withoutPermission() throws Exception {
mShadowContext.denyPermissions(android.Manifest.permission.BACKUP);
setUpCurrentTransport(mTransportManager, mTransport);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
expectThrows(
SecurityException.class,
@@ -319,7 +319,7 @@ public class UserBackupManagerServiceTest {
public void testSelectBackupTransport() throws Exception {
setUpForSelectTransport();
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
String oldTransport =
backupManagerService.selectBackupTransport(mNewTransport.transportName);
@@ -338,7 +338,7 @@ public class UserBackupManagerServiceTest {
public void testSelectBackupTransport_withoutPermission() throws Exception {
setUpForSelectTransport();
mShadowContext.denyPermissions(android.Manifest.permission.BACKUP);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
expectThrows(
SecurityException.class,
@@ -356,7 +356,7 @@ public class UserBackupManagerServiceTest {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
when(mTransportManager.registerAndSelectTransport(eq(mNewTransportComponent)))
.thenReturn(BackupManager.SUCCESS);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
ISelectBackupTransportCallback callback = mock(ISelectBackupTransportCallback.class);
backupManagerService.selectBackupTransportAsync(mNewTransportComponent, callback);
@@ -380,7 +380,7 @@ public class UserBackupManagerServiceTest {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
when(mTransportManager.registerAndSelectTransport(eq(mNewTransportComponent)))
.thenReturn(BackupManager.ERROR_TRANSPORT_UNAVAILABLE);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
ISelectBackupTransportCallback callback = mock(ISelectBackupTransportCallback.class);
backupManagerService.selectBackupTransportAsync(mNewTransportComponent, callback);
@@ -402,7 +402,7 @@ public class UserBackupManagerServiceTest {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
when(mTransportManager.registerAndSelectTransport(eq(newTransportComponent)))
.thenReturn(BackupManager.SUCCESS);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
ISelectBackupTransportCallback callback = mock(ISelectBackupTransportCallback.class);
backupManagerService.selectBackupTransportAsync(newTransportComponent, callback);
@@ -421,7 +421,7 @@ public class UserBackupManagerServiceTest {
public void testSelectBackupTransportAsync_withoutPermission() throws Exception {
setUpForSelectTransport();
mShadowContext.denyPermissions(android.Manifest.permission.BACKUP);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
ComponentName newTransportComponent = mNewTransport.getTransportComponent();
expectThrows(
@@ -445,7 +445,7 @@ public class UserBackupManagerServiceTest {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
when(mTransportManager.getCurrentTransportComponent())
.thenReturn(mTransport.getTransportComponent());
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
ComponentName transportComponent = backupManagerService.getCurrentTransportComponent();
@@ -460,7 +460,7 @@ public class UserBackupManagerServiceTest {
public void testGetCurrentTransportComponent_whenNoTransportSelected() throws Exception {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
when(mTransportManager.getCurrentTransportComponent()).thenReturn(null);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
ComponentName transportComponent = backupManagerService.getCurrentTransportComponent();
@@ -476,7 +476,7 @@ public class UserBackupManagerServiceTest {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
when(mTransportManager.getCurrentTransportComponent())
.thenThrow(TransportNotRegisteredException.class);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
ComponentName transportComponent = backupManagerService.getCurrentTransportComponent();
@@ -490,7 +490,7 @@ public class UserBackupManagerServiceTest {
@Test
public void testGetCurrentTransportComponent_withoutPermission() throws Exception {
mShadowContext.denyPermissions(android.Manifest.permission.BACKUP);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
expectThrows(SecurityException.class, backupManagerService::getCurrentTransportComponent);
}
@@ -525,7 +525,7 @@ public class UserBackupManagerServiceTest {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
Intent configurationIntent = new Intent();
Intent dataManagementIntent = new Intent();
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
backupManagerService.updateTransportAttributes(
mTransportUid,
@@ -556,7 +556,7 @@ public class UserBackupManagerServiceTest {
throws Exception {
setUpForUpdateTransportAttributes();
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
expectThrows(
SecurityException.class,
@@ -581,7 +581,7 @@ public class UserBackupManagerServiceTest {
throws Exception {
setUpForUpdateTransportAttributes();
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
expectThrows(
RuntimeException.class,
@@ -605,7 +605,7 @@ public class UserBackupManagerServiceTest {
public void testUpdateTransportAttributes_whenNameNull_throwsException() throws Exception {
setUpForUpdateTransportAttributes();
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
expectThrows(
RuntimeException.class,
@@ -630,7 +630,7 @@ public class UserBackupManagerServiceTest {
throws Exception {
setUpForUpdateTransportAttributes();
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
expectThrows(
RuntimeException.class,
@@ -657,7 +657,7 @@ public class UserBackupManagerServiceTest {
throws Exception {
setUpForUpdateTransportAttributes();
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
expectThrows(
RuntimeException.class,
@@ -696,7 +696,7 @@ public class UserBackupManagerServiceTest {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
Intent configurationIntent = new Intent();
Intent dataManagementIntent = new Intent();
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
backupManagerService.updateTransportAttributes(
mTransportUid,
@@ -727,7 +727,7 @@ public class UserBackupManagerServiceTest {
throws Exception {
setUpForUpdateTransportAttributes();
mShadowContext.denyPermissions(android.Manifest.permission.BACKUP);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
expectThrows(
SecurityException.class,
@@ -766,7 +766,7 @@ public class UserBackupManagerServiceTest {
@Test
public void testRequestBackup_whenPermissionDenied() throws Exception {
mShadowContext.denyPermissions(android.Manifest.permission.BACKUP);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
expectThrows(
SecurityException.class,
@@ -780,7 +780,7 @@ public class UserBackupManagerServiceTest {
@Test
public void testRequestBackup_whenPackagesNull() throws Exception {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
expectThrows(
IllegalArgumentException.class,
@@ -796,7 +796,7 @@ public class UserBackupManagerServiceTest {
@Test
public void testRequestBackup_whenPackagesEmpty() throws Exception {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
expectThrows(
IllegalArgumentException.class,
@@ -811,7 +811,7 @@ public class UserBackupManagerServiceTest {
@Test
public void testRequestBackup_whenBackupDisabled() throws Exception {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
backupManagerService.setEnabled(false);
int result = backupManagerService.requestBackup(new String[] {PACKAGE_1}, mObserver, 0);
@@ -828,7 +828,7 @@ public class UserBackupManagerServiceTest {
@Test
public void testRequestBackup_whenNotProvisioned() throws Exception {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
backupManagerService.setProvisioned(false);
int result = backupManagerService.requestBackup(new String[] {PACKAGE_1}, mObserver, 0);
@@ -846,7 +846,7 @@ public class UserBackupManagerServiceTest {
public void testRequestBackup_whenTransportNotRegistered() throws Exception {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
setUpCurrentTransport(mTransportManager, mTransport.unregistered());
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
backupManagerService.setEnabled(true);
backupManagerService.setProvisioned(true);
@@ -866,7 +866,7 @@ public class UserBackupManagerServiceTest {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
mShadowPackageManager.addPackage(PACKAGE_1);
setUpCurrentTransport(mTransportManager, mTransport);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
backupManagerService.setEnabled(true);
backupManagerService.setProvisioned(true);
// Haven't set PACKAGE_1 as eligible
@@ -934,7 +934,7 @@ public class UserBackupManagerServiceTest {
@Config(shadows = {ShadowBinder.class, ShadowKeyValueBackupJob.class})
public void testBackupNow_clearsCallingIdentityForJobScheduler() {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
setUpPowerManager(backupManagerService);
ShadowBinder.setCallingUid(1);
@@ -952,7 +952,7 @@ public class UserBackupManagerServiceTest {
@Config(shadows = {ShadowBinder.class, ShadowKeyValueBackupJobException.class})
public void testBackupNow_whenExceptionThrown_restoresCallingIdentity() {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
setUpPowerManager(backupManagerService);
ShadowBinder.setCallingUid(1);
@@ -963,54 +963,170 @@ public class UserBackupManagerServiceTest {
}
private UserBackupManagerService createBackupManagerServiceForRequestBackup() {
- UserBackupManagerService backupManagerService = createInitializedBackupManagerService();
+ UserBackupManagerService backupManagerService = createUserBackupManagerServiceAndRunTasks();
backupManagerService.setEnabled(true);
backupManagerService.setProvisioned(true);
return backupManagerService;
}
/**
- * Test verifying that {@link UserBackupManagerService#UserBackupManagerService(Context,
+ * Test verifying that {@link UserBackupManagerService#createAndInitializeService(Context,
* Trampoline, HandlerThread, File, File, TransportManager)} posts a transport registration task
- * to the backup handler thread.
+ * to the backup thread.
*/
@Test
- public void testConstructor_postRegisterTransports() {
+ public void testCreateAndInitializeService_postRegisterTransports() {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
- createBackupManagerService();
+ UserBackupManagerService.createAndInitializeService(
+ mContext,
+ new Trampoline(mContext),
+ mBackupThread,
+ mBaseStateDir,
+ mDataDir,
+ mTransportManager);
mShadowBackupLooper.runToEndOfTasks();
verify(mTransportManager).registerTransports();
}
/**
- * Test verifying that the {@link UserBackupManagerService#UserBackupManagerService(Context,
+ * Test verifying that {@link UserBackupManagerService#createAndInitializeService(Context,
* Trampoline, HandlerThread, File, File, TransportManager)} does not directly register
- * transports in its own thread.
+ * transports on the main thread.
*/
@Test
- public void testConstructor_doesNotRegisterTransportsSynchronously() {
+ public void testCreateAndInitializeService_doesNotRegisterTransportsSynchronously() {
mShadowContext.grantPermissions(android.Manifest.permission.BACKUP);
- createBackupManagerService();
-
- // Operations posted to mBackupThread only run with mShadowBackupLooper.runToEndOfTasks()
- verify(mTransportManager, never()).registerTransports();
- }
-
- private UserBackupManagerService createBackupManagerService() {
- return new UserBackupManagerService(
+ UserBackupManagerService.createAndInitializeService(
mContext,
new Trampoline(mContext),
mBackupThread,
mBaseStateDir,
mDataDir,
mTransportManager);
+
+ // Operations posted to mBackupThread only run with mShadowBackupLooper.runToEndOfTasks()
+ verify(mTransportManager, never()).registerTransports();
+ }
+
+ /**
+ * Test checking non-null argument on {@link
+ * UserBackupManagerService#createAndInitializeService(Context, Trampoline, HandlerThread, File,
+ * File, TransportManager)}.
+ */
+ @Test
+ public void testCreateAndInitializeService_withNullContext_throws() {
+ expectThrows(
+ NullPointerException.class,
+ () ->
+ UserBackupManagerService.createAndInitializeService(
+ /* context */ null,
+ new Trampoline(mContext),
+ mBackupThread,
+ mBaseStateDir,
+ mDataDir,
+ mTransportManager));
+ }
+
+ /**
+ * Test checking non-null argument on {@link
+ * UserBackupManagerService#createAndInitializeService(Context, Trampoline, HandlerThread, File,
+ * File, TransportManager)}.
+ */
+ @Test
+ public void testCreateAndInitializeService_withNullTrampoline_throws() {
+ expectThrows(
+ NullPointerException.class,
+ () ->
+ UserBackupManagerService.createAndInitializeService(
+ mContext,
+ /* trampoline */ null,
+ mBackupThread,
+ mBaseStateDir,
+ mDataDir,
+ mTransportManager));
+ }
+
+ /**
+ * Test checking non-null argument on {@link
+ * UserBackupManagerService#createAndInitializeService(Context, Trampoline, HandlerThread, File,
+ * File, TransportManager)}.
+ */
+ @Test
+ public void testCreateAndInitializeService_withNullBackupThread_throws() {
+ expectThrows(
+ NullPointerException.class,
+ () ->
+ UserBackupManagerService.createAndInitializeService(
+ mContext,
+ new Trampoline(mContext),
+ /* backupThread */ null,
+ mBaseStateDir,
+ mDataDir,
+ mTransportManager));
+ }
+
+ /**
+ * Test checking non-null argument on {@link
+ * UserBackupManagerService#createAndInitializeService(Context, Trampoline, HandlerThread, File,
+ * File, TransportManager)}.
+ */
+ @Test
+ public void testCreateAndInitializeService_withNullStateDir_throws() {
+ expectThrows(
+ NullPointerException.class,
+ () ->
+ UserBackupManagerService.createAndInitializeService(
+ mContext,
+ new Trampoline(mContext),
+ mBackupThread,
+ /* baseStateDir */ null,
+ mDataDir,
+ mTransportManager));
+ }
+
+ /**
+ * Test checking non-null argument on {@link
+ * UserBackupManagerService#createAndInitializeService(Context, Trampoline, HandlerThread, File,
+ * File, TransportManager)}.
+ */
+ @Test
+ public void testCreateAndInitializeService_withNullDataDir_throws() {
+ expectThrows(
+ NullPointerException.class,
+ () ->
+ UserBackupManagerService.createAndInitializeService(
+ mContext,
+ new Trampoline(mContext),
+ mBackupThread,
+ mBaseStateDir,
+ /* dataDir */ null,
+ mTransportManager));
+ }
+
+ /**
+ * Test checking non-null argument on {@link
+ * UserBackupManagerService#createAndInitializeService(Context, Trampoline, HandlerThread, File,
+ * File, TransportManager)}.
+ */
+ @Test
+ public void testCreateAndInitializeService_withNullTransportManager_throws() {
+ expectThrows(
+ NullPointerException.class,
+ () ->
+ UserBackupManagerService.createAndInitializeService(
+ mContext,
+ new Trampoline(mContext),
+ mBackupThread,
+ mBaseStateDir,
+ mDataDir,
+ /* transportManager */ null));
}
- private UserBackupManagerService createInitializedBackupManagerService() {
- return BackupManagerServiceTestUtils.createInitializedUserBackupManagerService(
+ private UserBackupManagerService createUserBackupManagerServiceAndRunTasks() {
+ return BackupManagerServiceTestUtils.createUserBackupManagerServiceAndRunTasks(
mContext, mBackupThread, mBaseStateDir, mDataDir, mTransportManager);
}
diff --git a/services/robotests/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java b/services/robotests/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java
index 1aa4999b1d3a..099127cbeb4b 100644
--- a/services/robotests/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java
+++ b/services/robotests/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java
@@ -25,12 +25,9 @@ import static android.app.backup.BackupManager.SUCCESS;
import static android.app.backup.ForwardingBackupAgent.forward;
import static com.android.server.backup.testing.BackupManagerServiceTestUtils.createBackupWakeLock;
-import static com.android.server.backup.testing.BackupManagerServiceTestUtils
- .createInitializedUserBackupManagerService;
-import static com.android.server.backup.testing.BackupManagerServiceTestUtils
- .setUpBackupManagerServiceBasics;
-import static com.android.server.backup.testing.BackupManagerServiceTestUtils
- .setUpBinderCallerAndApplicationAsSystem;
+import static com.android.server.backup.testing.BackupManagerServiceTestUtils.createUserBackupManagerServiceAndRunTasks;
+import static com.android.server.backup.testing.BackupManagerServiceTestUtils.setUpBackupManagerServiceBasics;
+import static com.android.server.backup.testing.BackupManagerServiceTestUtils.setUpBinderCallerAndApplicationAsSystem;
import static com.android.server.backup.testing.PackageData.PM_PACKAGE;
import static com.android.server.backup.testing.PackageData.fullBackupPackage;
import static com.android.server.backup.testing.PackageData.keyValuePackage;
@@ -226,9 +223,8 @@ public class KeyValueBackupTaskTest {
// Needed to be able to use a real BMS instead of a mock
setUpBinderCallerAndApplicationAsSystem(mApplication);
mBackupManagerService =
- spy(
- createInitializedUserBackupManagerService(
- mContext, mBaseStateDir, mDataDir, mTransportManager));
+ spy(createUserBackupManagerServiceAndRunTasks(
+ mContext, mBaseStateDir, mDataDir, mTransportManager));
setUpBackupManagerServiceBasics(
mBackupManagerService,
mApplication,
diff --git a/services/robotests/src/com/android/server/backup/testing/BackupManagerServiceTestUtils.java b/services/robotests/src/com/android/server/backup/testing/BackupManagerServiceTestUtils.java
index bacc44e685f4..06f6d21b9ca9 100644
--- a/services/robotests/src/com/android/server/backup/testing/BackupManagerServiceTestUtils.java
+++ b/services/robotests/src/com/android/server/backup/testing/BackupManagerServiceTestUtils.java
@@ -52,23 +52,36 @@ import java.util.concurrent.atomic.AtomicReference;
/** Test utils for {@link UserBackupManagerService} and friends. */
public class BackupManagerServiceTestUtils {
/**
- * If the class-under-test is going to execute methods as the system, it's a good idea to also
- * call {@link #setUpBinderCallerAndApplicationAsSystem(Application)} before this method.
+ * Creates an instance of {@link UserBackupManagerService} with a new backup thread and runs
+ * tasks that were posted to it during instantiation.
+ *
+ * <p>If the class-under-test is going to execute methods as the system, it's a good idea to
+ * also call {@link #setUpBinderCallerAndApplicationAsSystem(Application)} before this method.
+ *
+ * @see #createUserBackupManagerServiceAndRunTasks(Context, HandlerThread, File, File,
+ * TransportManager)
*/
- public static UserBackupManagerService createInitializedUserBackupManagerService(
+ public static UserBackupManagerService createUserBackupManagerServiceAndRunTasks(
Context context, File baseStateDir, File dataDir, TransportManager transportManager) {
- return createInitializedUserBackupManagerService(
+ return createUserBackupManagerServiceAndRunTasks(
context, startBackupThread(null), baseStateDir, dataDir, transportManager);
}
- public static UserBackupManagerService createInitializedUserBackupManagerService(
+ /**
+ * Creates an instance of {@link UserBackupManagerService} with the supplied backup thread
+ * {@code backupThread} and runs tasks that were posted to it during instantiation.
+ *
+ * <p>If the class-under-test is going to execute methods as the system, it's a good idea to
+ * also call {@link #setUpBinderCallerAndApplicationAsSystem(Application)} before this method.
+ */
+ public static UserBackupManagerService createUserBackupManagerServiceAndRunTasks(
Context context,
HandlerThread backupThread,
File baseStateDir,
File dataDir,
TransportManager transportManager) {
UserBackupManagerService backupManagerService =
- new UserBackupManagerService(
+ UserBackupManagerService.createAndInitializeService(
context,
new Trampoline(context),
backupThread,