Loading services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupReporter.java +2 −1 Original line number Diff line number Diff line Loading @@ -395,7 +395,8 @@ public class KeyValueBackupReporter { Slog.e(TAG, "Transport threw reporting restore set: " + e); } void onTransportNotInitialized() { void onTransportNotInitialized(@Nullable String transportName) { EventLog.writeEvent(EventLogTags.BACKUP_RESET, transportName); if (MORE_DEBUG) { Slog.d(TAG, "Transport requires initialization, rerunning"); } Loading services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java +5 −1 Original line number Diff line number Diff line Loading @@ -535,6 +535,7 @@ public class KeyValueBackupTask implements BackupRestoreTask, Runnable { } String callerLogString = "KVBT.finishTask()"; String transportName = null; // If the backup data was not empty, we succeeded and this is the first time // we've done a backup, we can record the current backup dataset token. Loading @@ -542,6 +543,7 @@ public class KeyValueBackupTask implements BackupRestoreTask, Runnable { if (mHasDataToBackup && (status == BackupTransport.TRANSPORT_OK) && (currentToken == 0)) { try { IBackupTransport transport = mTransportClient.connectOrThrow(callerLogString); transportName = transport.name(); mBackupManagerService.setCurrentToken(transport.getCurrentRestoreSet()); mBackupManagerService.writeRestoreTokens(); } catch (Exception e) { Loading @@ -553,7 +555,7 @@ public class KeyValueBackupTask implements BackupRestoreTask, Runnable { synchronized (mQueueLock) { mBackupManagerService.setBackupRunning(false); if (status == BackupTransport.TRANSPORT_NOT_INITIALIZED) { mReporter.onTransportNotInitialized(); mReporter.onTransportNotInitialized(transportName); try { triggerTransportInitializationLocked(); } catch (Exception e) { Loading Loading @@ -861,6 +863,8 @@ public class KeyValueBackupTask implements BackupRestoreTask, Runnable { status = transport.performBackup(packageInfo, backupData, flags); if (status == BackupTransport.TRANSPORT_OK) { status = transport.finishBackup(); } else if (status == BackupTransport.TRANSPORT_NOT_INITIALIZED) { mReporter.onTransportNotInitialized(transport.name()); } } catch (Exception e) { mReporter.onPackageBackupTransportError(packageName, e); Loading services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupReporterTest.java +12 −0 Original line number Diff line number Diff line Loading @@ -77,4 +77,16 @@ public class KeyValueBackupReporterTest { assertThat(observer).isEqualTo(mObserver); } /** * Ensure that EventLog is called when logging the transport uninitialised issue. */ @Test public void testOnTransportNotInitialized_callsEventLog() { ShadowEventLog.setUp(); mReporter.onTransportNotInitialized("transport"); assertThat(ShadowEventLog.getEntries().size()).isEqualTo(1); } } services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java +15 −16 Original line number Diff line number Diff line Loading @@ -226,7 +226,8 @@ public class KeyValueBackupTaskTest { // Needed to be able to use a real BMS instead of a mock setUpBinderCallerAndApplicationAsSystem(mApplication); mBackupManagerService = spy(createUserBackupManagerServiceAndRunTasks( spy( createUserBackupManagerServiceAndRunTasks( USER_ID, mContext, mBaseStateDir, mDataDir, mTransportManager)); setUpBackupManagerServiceBasics( mBackupManagerService, Loading Loading @@ -335,9 +336,7 @@ public class KeyValueBackupTaskTest { .isEqualTo("packageState".getBytes()); } /** * Do not update backup token if the backup queue was empty */ /** Do not update backup token if the backup queue was empty */ @Test public void testRunTask_whenQueueEmptyOnFirstBackup_doesNotUpdateCurrentToken() throws Exception { Loading Loading @@ -725,8 +724,8 @@ public class KeyValueBackupTaskTest { } /** * Agent unavailable means {@link UserBackupManagerService#bindToAgentSynchronous(ApplicationInfo, * int)} returns {@code null}. * Agent unavailable means {@link * UserBackupManagerService#bindToAgentSynchronous(ApplicationInfo, int)} returns {@code null}. * * @see #setUpAgent(PackageData) */ Loading Loading @@ -759,8 +758,8 @@ public class KeyValueBackupTaskTest { runTask(task); assertThat(Files.readAllBytes(getStateFile(mTransport, PACKAGE_1))).isEqualTo( "newState".getBytes()); assertThat(Files.readAllBytes(getStateFile(mTransport, PACKAGE_1))) .isEqualTo("newState".getBytes()); } @Test Loading Loading @@ -795,7 +794,8 @@ public class KeyValueBackupTaskTest { } @Test public void testRunTask_whenNonIncrementalAndBindToAgentThrowsSecurityException() throws Exception { public void testRunTask_whenNonIncrementalAndBindToAgentThrowsSecurityException() throws Exception { TransportMock transportMock = setUpInitializedTransport(mTransport); setUpAgent(PACKAGE_1); doThrow(SecurityException.class) Loading Loading @@ -1665,7 +1665,7 @@ public class KeyValueBackupTaskTest { runTask(task); verify(mReporter).onPackageBackupTransportFailure(PACKAGE_1.packageName); verify(mReporter).onTransportNotInitialized(); verify(mReporter).onTransportNotInitialized(mTransport.transportName); verify(mReporter).onBackupFinished(BackupManager.ERROR_TRANSPORT_ABORTED); } Loading @@ -1682,7 +1682,7 @@ public class KeyValueBackupTaskTest { runTask(task); verify(mReporter).onPackageBackupTransportFailure(PM_PACKAGE.packageName); verify(mReporter).onTransportNotInitialized(); verify(mReporter).onTransportNotInitialized(mTransport.transportName); verify(mReporter).onBackupFinished(BackupManager.ERROR_TRANSPORT_ABORTED); } Loading Loading @@ -1771,8 +1771,9 @@ public class KeyValueBackupTaskTest { TransportMock transportMock = setUpInitializedTransport(mTransport); when(transportMock.transport.performBackup(any(), any(), anyInt())) .thenReturn(BackupTransport.TRANSPORT_NOT_INITIALIZED); // First one is in startTask(), second is the one we want. // First one is in startTask(), second is in finishTask(), the third is the one we want. when(transportMock.transport.name()) .thenReturn(mTransport.transportName) .thenReturn(mTransport.transportName) .thenThrow(DeadObjectException.class); setUpAgentWithData(PACKAGE_1); Loading Loading @@ -2321,9 +2322,7 @@ public class KeyValueBackupTaskTest { expectThrows(IllegalArgumentException.class, () -> task.handleCancel(false)); } /** * Do not update backup token if no data was moved. */ /** Do not update backup token if no data was moved. */ @Test public void testRunTask_whenNoDataToBackupOnFirstBackup_doesNotUpdateCurrentToken() throws Exception { Loading Loading
services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupReporter.java +2 −1 Original line number Diff line number Diff line Loading @@ -395,7 +395,8 @@ public class KeyValueBackupReporter { Slog.e(TAG, "Transport threw reporting restore set: " + e); } void onTransportNotInitialized() { void onTransportNotInitialized(@Nullable String transportName) { EventLog.writeEvent(EventLogTags.BACKUP_RESET, transportName); if (MORE_DEBUG) { Slog.d(TAG, "Transport requires initialization, rerunning"); } Loading
services/backup/java/com/android/server/backup/keyvalue/KeyValueBackupTask.java +5 −1 Original line number Diff line number Diff line Loading @@ -535,6 +535,7 @@ public class KeyValueBackupTask implements BackupRestoreTask, Runnable { } String callerLogString = "KVBT.finishTask()"; String transportName = null; // If the backup data was not empty, we succeeded and this is the first time // we've done a backup, we can record the current backup dataset token. Loading @@ -542,6 +543,7 @@ public class KeyValueBackupTask implements BackupRestoreTask, Runnable { if (mHasDataToBackup && (status == BackupTransport.TRANSPORT_OK) && (currentToken == 0)) { try { IBackupTransport transport = mTransportClient.connectOrThrow(callerLogString); transportName = transport.name(); mBackupManagerService.setCurrentToken(transport.getCurrentRestoreSet()); mBackupManagerService.writeRestoreTokens(); } catch (Exception e) { Loading @@ -553,7 +555,7 @@ public class KeyValueBackupTask implements BackupRestoreTask, Runnable { synchronized (mQueueLock) { mBackupManagerService.setBackupRunning(false); if (status == BackupTransport.TRANSPORT_NOT_INITIALIZED) { mReporter.onTransportNotInitialized(); mReporter.onTransportNotInitialized(transportName); try { triggerTransportInitializationLocked(); } catch (Exception e) { Loading Loading @@ -861,6 +863,8 @@ public class KeyValueBackupTask implements BackupRestoreTask, Runnable { status = transport.performBackup(packageInfo, backupData, flags); if (status == BackupTransport.TRANSPORT_OK) { status = transport.finishBackup(); } else if (status == BackupTransport.TRANSPORT_NOT_INITIALIZED) { mReporter.onTransportNotInitialized(transport.name()); } } catch (Exception e) { mReporter.onPackageBackupTransportError(packageName, e); Loading
services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupReporterTest.java +12 −0 Original line number Diff line number Diff line Loading @@ -77,4 +77,16 @@ public class KeyValueBackupReporterTest { assertThat(observer).isEqualTo(mObserver); } /** * Ensure that EventLog is called when logging the transport uninitialised issue. */ @Test public void testOnTransportNotInitialized_callsEventLog() { ShadowEventLog.setUp(); mReporter.onTransportNotInitialized("transport"); assertThat(ShadowEventLog.getEntries().size()).isEqualTo(1); } }
services/robotests/backup/src/com/android/server/backup/keyvalue/KeyValueBackupTaskTest.java +15 −16 Original line number Diff line number Diff line Loading @@ -226,7 +226,8 @@ public class KeyValueBackupTaskTest { // Needed to be able to use a real BMS instead of a mock setUpBinderCallerAndApplicationAsSystem(mApplication); mBackupManagerService = spy(createUserBackupManagerServiceAndRunTasks( spy( createUserBackupManagerServiceAndRunTasks( USER_ID, mContext, mBaseStateDir, mDataDir, mTransportManager)); setUpBackupManagerServiceBasics( mBackupManagerService, Loading Loading @@ -335,9 +336,7 @@ public class KeyValueBackupTaskTest { .isEqualTo("packageState".getBytes()); } /** * Do not update backup token if the backup queue was empty */ /** Do not update backup token if the backup queue was empty */ @Test public void testRunTask_whenQueueEmptyOnFirstBackup_doesNotUpdateCurrentToken() throws Exception { Loading Loading @@ -725,8 +724,8 @@ public class KeyValueBackupTaskTest { } /** * Agent unavailable means {@link UserBackupManagerService#bindToAgentSynchronous(ApplicationInfo, * int)} returns {@code null}. * Agent unavailable means {@link * UserBackupManagerService#bindToAgentSynchronous(ApplicationInfo, int)} returns {@code null}. * * @see #setUpAgent(PackageData) */ Loading Loading @@ -759,8 +758,8 @@ public class KeyValueBackupTaskTest { runTask(task); assertThat(Files.readAllBytes(getStateFile(mTransport, PACKAGE_1))).isEqualTo( "newState".getBytes()); assertThat(Files.readAllBytes(getStateFile(mTransport, PACKAGE_1))) .isEqualTo("newState".getBytes()); } @Test Loading Loading @@ -795,7 +794,8 @@ public class KeyValueBackupTaskTest { } @Test public void testRunTask_whenNonIncrementalAndBindToAgentThrowsSecurityException() throws Exception { public void testRunTask_whenNonIncrementalAndBindToAgentThrowsSecurityException() throws Exception { TransportMock transportMock = setUpInitializedTransport(mTransport); setUpAgent(PACKAGE_1); doThrow(SecurityException.class) Loading Loading @@ -1665,7 +1665,7 @@ public class KeyValueBackupTaskTest { runTask(task); verify(mReporter).onPackageBackupTransportFailure(PACKAGE_1.packageName); verify(mReporter).onTransportNotInitialized(); verify(mReporter).onTransportNotInitialized(mTransport.transportName); verify(mReporter).onBackupFinished(BackupManager.ERROR_TRANSPORT_ABORTED); } Loading @@ -1682,7 +1682,7 @@ public class KeyValueBackupTaskTest { runTask(task); verify(mReporter).onPackageBackupTransportFailure(PM_PACKAGE.packageName); verify(mReporter).onTransportNotInitialized(); verify(mReporter).onTransportNotInitialized(mTransport.transportName); verify(mReporter).onBackupFinished(BackupManager.ERROR_TRANSPORT_ABORTED); } Loading Loading @@ -1771,8 +1771,9 @@ public class KeyValueBackupTaskTest { TransportMock transportMock = setUpInitializedTransport(mTransport); when(transportMock.transport.performBackup(any(), any(), anyInt())) .thenReturn(BackupTransport.TRANSPORT_NOT_INITIALIZED); // First one is in startTask(), second is the one we want. // First one is in startTask(), second is in finishTask(), the third is the one we want. when(transportMock.transport.name()) .thenReturn(mTransport.transportName) .thenReturn(mTransport.transportName) .thenThrow(DeadObjectException.class); setUpAgentWithData(PACKAGE_1); Loading Loading @@ -2321,9 +2322,7 @@ public class KeyValueBackupTaskTest { expectThrows(IllegalArgumentException.class, () -> task.handleCancel(false)); } /** * Do not update backup token if no data was moved. */ /** Do not update backup token if no data was moved. */ @Test public void testRunTask_whenNoDataToBackupOnFirstBackup_doesNotUpdateCurrentToken() throws Exception { Loading