diff options
author | 2024-11-11 14:42:31 +0000 | |
---|---|---|
committer | 2024-11-18 13:26:43 +0000 | |
commit | f658e37095197043246f4ae177d441fb73cf2da2 (patch) | |
tree | 822d75c4f54fdc240eaa554caf38c01f67900b8a /services/robotests/backup | |
parent | 0d0270676a0b91a844e04b9909cd67e50fc9b030 (diff) |
Move BackupAgent connection to a helper class
This is to isolate some scope of UserBackupManagerService. It's too big
and unreadable.
I've also added some tests. But since these are blocking and async
operations, I couldn't see any way other than adding some thread sleeps
to avoid flakiness.
These tests could still end up being too flaky. If that's the case we
might have to leave this code untested :(
This is a no-op refactor.
Bug: 376661510
Flag: EXEMPT refactor
Test: atest BackupAgentConnectionManagerTest & atest CtsBackupHostTestCases
Change-Id: I9893336fb224148ce5b2f3c6fa2fc26828d2a1e9
Diffstat (limited to 'services/robotests/backup')
2 files changed, 28 insertions, 15 deletions
diff --git a/services/robotests/backup/src/com/android/server/backup/BackupManagerServiceRoboTest.java b/services/robotests/backup/src/com/android/server/backup/BackupManagerServiceRoboTest.java index a547d0f94ea3..4e9fff230bac 100644 --- a/services/robotests/backup/src/com/android/server/backup/BackupManagerServiceRoboTest.java +++ b/services/robotests/backup/src/com/android/server/backup/BackupManagerServiceRoboTest.java @@ -31,6 +31,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import static org.robolectric.Shadows.shadowOf; import static org.testng.Assert.expectThrows; @@ -96,6 +97,7 @@ public class BackupManagerServiceRoboTest { @UserIdInt private int mUserTwoId; @Mock private UserBackupManagerService mUserSystemService; @Mock private UserBackupManagerService mUserOneService; + @Mock private BackupAgentConnectionManager mUserOneBackupAgentConnectionManager; @Mock private UserBackupManagerService mUserTwoService; /** Setup */ @@ -116,6 +118,9 @@ public class BackupManagerServiceRoboTest { mShadowContext.grantPermissions(BACKUP); mShadowContext.grantPermissions(INTERACT_ACROSS_USERS_FULL); + when(mUserOneService.getBackupAgentConnectionManager()).thenReturn( + mUserOneBackupAgentConnectionManager); + ShadowBinder.setCallingUid(Process.SYSTEM_UID); } @@ -226,7 +231,7 @@ public class BackupManagerServiceRoboTest { backupManagerService.agentConnected(mUserOneId, TEST_PACKAGE, agentBinder); - verify(mUserOneService).agentConnected(TEST_PACKAGE, agentBinder); + verify(mUserOneBackupAgentConnectionManager).agentConnected(TEST_PACKAGE, agentBinder); } /** Test that the backup service does not route methods for non-registered users. */ @@ -239,7 +244,8 @@ public class BackupManagerServiceRoboTest { backupManagerService.agentConnected(mUserTwoId, TEST_PACKAGE, agentBinder); - verify(mUserOneService, never()).agentConnected(TEST_PACKAGE, agentBinder); + verify(mUserOneBackupAgentConnectionManager, never()).agentConnected(TEST_PACKAGE, + agentBinder); } /** Test that the backup service routes methods correctly to the user that requests it. */ diff --git a/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java b/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java index 7349c14ef62b..aeb1ba93f049 100644 --- a/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java +++ b/services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java @@ -107,6 +107,7 @@ import com.android.internal.backup.IBackupTransport; import com.android.internal.infra.AndroidFuture; import com.android.server.EventLogTags; import com.android.server.LocalServices; +import com.android.server.backup.BackupAgentConnectionManager; import com.android.server.backup.BackupRestoreTask; import com.android.server.backup.DataChangedJournal; import com.android.server.backup.KeyValueBackupJob; @@ -167,7 +168,6 @@ import java.util.List; import java.util.concurrent.TimeoutException; import java.util.stream.Stream; -// TODO: Test agents timing out @RunWith(RobolectricTestRunner.class) @Config( shadows = { @@ -195,6 +195,7 @@ public class KeyValueBackupTaskTest { @Mock private IBackupManagerMonitor mMonitor; @Mock private OnTaskFinishedListener mListener; @Mock private PackageManagerInternal mPackageManagerInternal; + @Mock private BackupAgentConnectionManager mBackupAgentConnectionManager; private UserBackupManagerService mBackupManagerService; private TransportData mTransport; @@ -257,6 +258,8 @@ public class KeyValueBackupTaskTest { when(mBackupManagerService.getBaseStateDir()).thenReturn(mBaseStateDir); when(mBackupManagerService.getDataDir()).thenReturn(mDataDir); when(mBackupManagerService.getBackupManagerBinder()).thenReturn(mBackupManager); + when(mBackupManagerService.getBackupAgentConnectionManager()).thenReturn( + mBackupAgentConnectionManager); mBackupHandler = mBackupManagerService.getBackupHandler(); mShadowBackupLooper = shadowOf(mBackupHandler.getLooper()); @@ -749,7 +752,8 @@ public class KeyValueBackupTaskTest { /** * Agent unavailable means {@link - * UserBackupManagerService#bindToAgentSynchronous(ApplicationInfo, int)} returns {@code null}. + * BackupAgentConnectionManager#bindToAgentSynchronous(ApplicationInfo, int, int)} returns + * {@code null}. * * @see #setUpAgent(PackageData) */ @@ -805,7 +809,7 @@ public class KeyValueBackupTaskTest { TransportMock transportMock = setUpInitializedTransport(mTransport); setUpAgent(PACKAGE_1); doThrow(SecurityException.class) - .when(mBackupManagerService) + .when(mBackupAgentConnectionManager) .bindToAgentSynchronous(argThat(applicationInfo(PACKAGE_1)), anyInt(), anyInt()); KeyValueBackupTask task = createKeyValueBackupTask(transportMock, PACKAGE_1); @@ -823,7 +827,7 @@ public class KeyValueBackupTaskTest { TransportMock transportMock = setUpInitializedTransport(mTransport); setUpAgent(PACKAGE_1); doThrow(SecurityException.class) - .when(mBackupManagerService) + .when(mBackupAgentConnectionManager) .bindToAgentSynchronous(argThat(applicationInfo(PACKAGE_1)), anyInt(), anyInt()); KeyValueBackupTask task = createKeyValueBackupTask(transportMock, true, PACKAGE_1); @@ -861,7 +865,7 @@ public class KeyValueBackupTaskTest { runTask(task); verify(mBackupManagerService).setWorkSource(null); - verify(mBackupManagerService).unbindAgent(argThat(applicationInfo(PACKAGE_1))); + verify(mBackupAgentConnectionManager).unbindAgent(argThat(applicationInfo(PACKAGE_1))); } @Test @@ -1097,7 +1101,7 @@ public class KeyValueBackupTaskTest { runTask(task); verify(agentMock.agentBinder).fail(any()); - verify(mBackupManagerService).unbindAgent(argThat(applicationInfo(PACKAGE_1))); + verify(mBackupAgentConnectionManager).unbindAgent(argThat(applicationInfo(PACKAGE_1))); } @Test @@ -1418,7 +1422,8 @@ public class KeyValueBackupTaskTest { .isEqualTo("newState".getBytes()); assertCleansUpFiles(mTransport, PM_PACKAGE); // We don't unbind PM - verify(mBackupManagerService, never()).unbindAgent(argThat(applicationInfo(PM_PACKAGE))); + verify(mBackupAgentConnectionManager, never()).unbindAgent( + argThat(applicationInfo(PM_PACKAGE))); } @Test @@ -1439,7 +1444,8 @@ public class KeyValueBackupTaskTest { runTask(task); - verify(mBackupManagerService, never()).unbindAgent(argThat(applicationInfo(PM_PACKAGE))); + verify(mBackupAgentConnectionManager, never()).unbindAgent( + argThat(applicationInfo(PM_PACKAGE))); } @Test @@ -1642,9 +1648,10 @@ public class KeyValueBackupTaskTest { runTask(task); - InOrder inOrder = inOrder(agentMock.agent, mBackupManagerService); + InOrder inOrder = inOrder(agentMock.agent, mBackupAgentConnectionManager); inOrder.verify(agentMock.agent).onQuotaExceeded(anyLong(), eq(1234L)); - inOrder.verify(mBackupManagerService).unbindAgent(argThat(applicationInfo(PACKAGE_1))); + inOrder.verify(mBackupAgentConnectionManager).unbindAgent( + argThat(applicationInfo(PACKAGE_1))); } @Test @@ -2634,12 +2641,12 @@ public class KeyValueBackupTaskTest { doNothing().when(backupAgentBinder).fail(any()); if (packageData.available) { doReturn(backupAgentBinder) - .when(mBackupManagerService) + .when(mBackupAgentConnectionManager) .bindToAgentSynchronous(argThat(applicationInfo(packageData)), anyInt(), anyInt()); } else { doReturn(null) - .when(mBackupManagerService) + .when(mBackupAgentConnectionManager) .bindToAgentSynchronous(argThat(applicationInfo(packageData)), anyInt(), anyInt()); } @@ -2976,7 +2983,7 @@ public class KeyValueBackupTaskTest { private void assertCleansUpFilesAndAgent(TransportData transport, PackageData packageData) { assertCleansUpFiles(transport, packageData); - verify(mBackupManagerService).unbindAgent(argThat(applicationInfo(packageData))); + verify(mBackupAgentConnectionManager).unbindAgent(argThat(applicationInfo(packageData))); } private void assertCleansUpFiles(TransportData transport, PackageData packageData) { |