summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Ruslan Tkhakokhov <rthakohov@google.com> 2023-02-10 18:38:55 +0000
committer Ruslan Tkhakokhov <rthakohov@google.com> 2023-02-10 18:38:55 +0000
commit8c4d80519ba89297350d1a8498f023e7aa65c7ef (patch)
tree74098cd6816b28999dd2bc4d3ffc982374806b92
parent4640ce9e749f13a4369d0f1d91f4d488d267c938 (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.java42
-rw-r--r--packages/LocalTransport/src/com/android/localtransport/LocalTransportParameters.java7
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);
}
}