diff options
author | 2023-02-10 18:38:55 +0000 | |
---|---|---|
committer | 2023-02-10 18:38:55 +0000 | |
commit | 8c4d80519ba89297350d1a8498f023e7aa65c7ef (patch) | |
tree | 74098cd6816b28999dd2bc4d3ffc982374806b92 | |
parent | 4640ce9e749f13a4369d0f1d91f4d488d267c938 (diff) |
Log events from BackupRestoreEventLogger in LocalTransport
This allows debugging integrations with the logger by verifying which
events have been recorded in the logcat.
Test: 1. Turn on logging of the events to logcat
(adb shell settings put secure
backup_local_transport_parameters "log_agent_results=true")
2. Run backup for wallpaper
(adb shell bmgr backupnow com.android.wallpaperbackup)
3. Verify events are logged in logcat
(adb logcat -s LocalTransport)
Change-Id: If9c33b285c226c217960e78326c17f77a5b92a67
-rw-r--r-- | packages/LocalTransport/src/com/android/localtransport/LocalTransport.java | 42 | ||||
-rw-r--r-- | packages/LocalTransport/src/com/android/localtransport/LocalTransportParameters.java | 7 |
2 files changed, 49 insertions, 0 deletions
diff --git a/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java b/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java index 4344e9401fc9..95b49a8ef335 100644 --- a/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java +++ b/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java @@ -20,6 +20,9 @@ import android.annotation.Nullable; import android.app.backup.BackupAgent; import android.app.backup.BackupDataInput; import android.app.backup.BackupDataOutput; +import android.app.backup.BackupManagerMonitor; +import android.app.backup.BackupRestoreEventLogger; +import android.app.backup.BackupRestoreEventLogger.DataTypeResult; import android.app.backup.BackupTransport; import android.app.backup.RestoreDescription; import android.app.backup.RestoreSet; @@ -27,6 +30,7 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; +import android.os.Bundle; import android.os.ParcelFileDescriptor; import android.system.ErrnoException; import android.system.Os; @@ -100,6 +104,7 @@ public class LocalTransport extends BackupTransport { private FileInputStream mCurFullRestoreStream; private byte[] mFullRestoreBuffer; private final LocalTransportParameters mParameters; + private final BackupManagerMonitor mMonitor = new TestBackupManagerMonitor(); private void makeDataDirs() { mDataDir = mContext.getFilesDir(); @@ -887,4 +892,41 @@ public class LocalTransport extends BackupTransport { public long getBackupQuota(String packageName, boolean isFullBackup) { return isFullBackup ? FULL_BACKUP_SIZE_QUOTA : KEY_VALUE_BACKUP_SIZE_QUOTA; } + + @Override + public BackupManagerMonitor getBackupManagerMonitor() { + return mMonitor; + } + + private class TestBackupManagerMonitor extends BackupManagerMonitor { + @Override + public void onEvent(Bundle event) { + if (event == null || !mParameters.logAgentResults()) { + return; + } + + if (event.getInt(BackupManagerMonitor.EXTRA_LOG_EVENT_ID) + == BackupManagerMonitor.LOG_EVENT_ID_AGENT_LOGGING_RESULTS) { + Log.i(TAG, "agent_logging_results {"); + ArrayList<DataTypeResult> results = event.getParcelableArrayList( + BackupManagerMonitor.EXTRA_LOG_AGENT_LOGGING_RESULTS, + DataTypeResult.class); + for (DataTypeResult result : results) { + Log.i(TAG, "\tdataType: " + result.getDataType()); + Log.i(TAG, "\tsuccessCount: " + result.getSuccessCount()); + Log.i(TAG, "\tfailCount: " + result.getFailCount()); + + if (!result.getErrors().isEmpty()) { + Log.i(TAG, "\terrors {"); + for (String error : result.getErrors().keySet()) { + Log.i(TAG, "\t\t" + error + ": " + result.getErrors().get(error)); + } + Log.i(TAG, "\t}"); + } + + Log.i(TAG, "}"); + } + } + } + } } diff --git a/packages/LocalTransport/src/com/android/localtransport/LocalTransportParameters.java b/packages/LocalTransport/src/com/android/localtransport/LocalTransportParameters.java index 1ba1bc6bfec7..aaa18bf755bc 100644 --- a/packages/LocalTransport/src/com/android/localtransport/LocalTransportParameters.java +++ b/packages/LocalTransport/src/com/android/localtransport/LocalTransportParameters.java @@ -29,11 +29,13 @@ public class LocalTransportParameters extends KeyValueSettingObserver { private static final String KEY_NON_INCREMENTAL_ONLY = "non_incremental_only"; private static final String KEY_IS_DEVICE_TRANSFER = "is_device_transfer"; private static final String KEY_IS_ENCRYPTED = "is_encrypted"; + private static final String KEY_LOG_AGENT_RESULTS = "log_agent_results"; private boolean mFakeEncryptionFlag; private boolean mIsNonIncrementalOnly; private boolean mIsDeviceTransfer; private boolean mIsEncrypted; + private boolean mLogAgentResults; public LocalTransportParameters(Handler handler, ContentResolver resolver) { super(handler, resolver, Settings.Secure.getUriFor(SETTING)); @@ -55,6 +57,10 @@ public class LocalTransportParameters extends KeyValueSettingObserver { return mIsEncrypted; } + boolean logAgentResults() { + return mLogAgentResults; + } + public String getSettingValue(ContentResolver resolver) { return Settings.Secure.getString(resolver, SETTING); } @@ -64,5 +70,6 @@ public class LocalTransportParameters extends KeyValueSettingObserver { mIsNonIncrementalOnly = parser.getBoolean(KEY_NON_INCREMENTAL_ONLY, false); mIsDeviceTransfer = parser.getBoolean(KEY_IS_DEVICE_TRANSFER, false); mIsEncrypted = parser.getBoolean(KEY_IS_ENCRYPTED, false); + mLogAgentResults = parser.getBoolean(KEY_LOG_AGENT_RESULTS, /* def */ false); } } |