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
This commit is contained in:
Ruslan Tkhakokhov
2023-02-10 18:38:55 +00:00
parent 4640ce9e74
commit 8c4d80519b
2 changed files with 49 additions and 0 deletions

View File

@@ -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, "}");
}
}
}
}
}

View File

@@ -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);
}
}