Loading core/java/android/app/backup/BackupRestoreEventLogger.java +12 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import android.os.Parcelable; import android.util.ArrayMap; import android.util.Slog; import com.android.server.backup.Flags; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.nio.charset.StandardCharsets; Loading Loading @@ -56,7 +58,7 @@ public final class BackupRestoreEventLogger { * * @hide */ public static final int DATA_TYPES_ALLOWED = 15; public static final int DATA_TYPES_ALLOWED = 150; /** * Denotes that the annotated element identifies a data type as required by the logging methods Loading Loading @@ -299,7 +301,7 @@ public final class BackupRestoreEventLogger { } if (!mResults.containsKey(dataType)) { if (mResults.keySet().size() == DATA_TYPES_ALLOWED) { if (mResults.keySet().size() == getDataTypesAllowed()) { // This is a new data type and we're already at capacity. Slog.d(TAG, "Logger is full, ignoring new data type"); return null; Loading @@ -315,6 +317,14 @@ public final class BackupRestoreEventLogger { return mHashDigest.digest(metaData.getBytes(StandardCharsets.UTF_8)); } private int getDataTypesAllowed(){ if (Flags.enableIncreaseDatatypesForAgentLogging()) { return DATA_TYPES_ALLOWED; } else { return 15; } } /** * Encapsulate logging results for a single data type. */ Loading core/tests/coretests/src/android/app/backup/BackupRestoreEventLoggerTest.java +58 −5 Original line number Diff line number Diff line Loading @@ -26,10 +26,14 @@ import static junit.framework.Assert.fail; import android.app.backup.BackupRestoreEventLogger.DataTypeResult; import android.os.Parcel; import android.platform.test.annotations.Presubmit; import android.platform.test.flag.junit.SetFlagsRule; import androidx.test.runner.AndroidJUnit4; import com.android.server.backup.Flags; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -43,7 +47,9 @@ import java.util.Optional; @Presubmit @RunWith(AndroidJUnit4.class) public class BackupRestoreEventLoggerTest { private static final int DATA_TYPES_ALLOWED = 15; private static final int DATA_TYPES_ALLOWED_AFTER_FLAG = 150; private static final int DATA_TYPES_ALLOWED_BEFORE_FLAG = 15; private static final String DATA_TYPE_1 = "data_type_1"; private static final String DATA_TYPE_2 = "data_type_2"; Loading @@ -55,6 +61,9 @@ public class BackupRestoreEventLoggerTest { private BackupRestoreEventLogger mLogger; private MessageDigest mHashDigest; @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); @Before public void setUp() throws Exception { mHashDigest = MessageDigest.getInstance("SHA-256"); Loading Loading @@ -83,10 +92,53 @@ public class BackupRestoreEventLoggerTest { } @Test public void testBackupLogger_onlyAcceptsAllowedNumberOfDataTypes() { public void testBackupLogger_datatypeLimitFlagOff_onlyAcceptsAllowedNumberOfDataTypes() { mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_INCREASE_DATATYPES_FOR_AGENT_LOGGING); mLogger = new BackupRestoreEventLogger(BACKUP); for (int i = 0; i < DATA_TYPES_ALLOWED_BEFORE_FLAG; i++) { String dataType = DATA_TYPE_1 + i; mLogger.logItemsBackedUp(dataType, /* count */ 5); mLogger.logItemsBackupFailed(dataType, /* count */ 5, /* error */ null); mLogger.logBackupMetadata(dataType, METADATA_1); assertThat(getResultForDataTypeIfPresent(mLogger, dataType)).isNotEqualTo( Optional.empty()); } mLogger.logItemsBackedUp(DATA_TYPE_2, /* count */ 5); mLogger.logItemsBackupFailed(DATA_TYPE_2, /* count */ 5, /* error */ null); mLogger.logRestoreMetadata(DATA_TYPE_2, METADATA_1); assertThat(getResultForDataTypeIfPresent(mLogger, DATA_TYPE_2)).isEqualTo(Optional.empty()); } @Test public void testRestoreLogger_datatypeLimitFlagOff_onlyAcceptsAllowedNumberOfDataTypes() { mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_INCREASE_DATATYPES_FOR_AGENT_LOGGING); mLogger = new BackupRestoreEventLogger(RESTORE); for (int i = 0; i < DATA_TYPES_ALLOWED_BEFORE_FLAG; i++) { String dataType = DATA_TYPE_1 + i; mLogger.logItemsRestored(dataType, /* count */ 5); mLogger.logItemsRestoreFailed(dataType, /* count */ 5, /* error */ null); mLogger.logRestoreMetadata(dataType, METADATA_1); assertThat(getResultForDataTypeIfPresent(mLogger, dataType)).isNotEqualTo( Optional.empty()); } mLogger.logItemsRestored(DATA_TYPE_2, /* count */ 5); mLogger.logItemsRestoreFailed(DATA_TYPE_2, /* count */ 5, /* error */ null); mLogger.logRestoreMetadata(DATA_TYPE_2, METADATA_1); assertThat(getResultForDataTypeIfPresent(mLogger, DATA_TYPE_2)).isEqualTo(Optional.empty()); } @Test public void testBackupLogger_datatypeLimitFlagOn_onlyAcceptsAllowedNumberOfDataTypes() { mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_INCREASE_DATATYPES_FOR_AGENT_LOGGING); mLogger = new BackupRestoreEventLogger(BACKUP); for (int i = 0; i < DATA_TYPES_ALLOWED; i++) { for (int i = 0; i < DATA_TYPES_ALLOWED_AFTER_FLAG; i++) { String dataType = DATA_TYPE_1 + i; mLogger.logItemsBackedUp(dataType, /* count */ 5); mLogger.logItemsBackupFailed(dataType, /* count */ 5, /* error */ null); Loading @@ -103,10 +155,11 @@ public class BackupRestoreEventLoggerTest { } @Test public void testRestoreLogger_onlyAcceptsAllowedNumberOfDataTypes() { public void testRestoreLogger_datatypeLimitFlagOn_onlyAcceptsAllowedNumberOfDataTypes() { mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_INCREASE_DATATYPES_FOR_AGENT_LOGGING); mLogger = new BackupRestoreEventLogger(RESTORE); for (int i = 0; i < DATA_TYPES_ALLOWED; i++) { for (int i = 0; i < DATA_TYPES_ALLOWED_AFTER_FLAG; i++) { String dataType = DATA_TYPE_1 + i; mLogger.logItemsRestored(dataType, /* count */ 5); mLogger.logItemsRestoreFailed(dataType, /* count */ 5, /* error */ null); Loading services/backup/flags.aconfig +9 −0 Original line number Diff line number Diff line Loading @@ -33,3 +33,12 @@ flag { bug: "320633449" is_fixed_read_only: true } flag { name: "enable_increase_datatypes_for_agent_logging" namespace: "onboarding" description: "Increase the number of a supported datatypes that an agent can define for its " "logger." bug: "296844513" is_fixed_read_only: true } No newline at end of file Loading
core/java/android/app/backup/BackupRestoreEventLogger.java +12 −2 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import android.os.Parcelable; import android.util.ArrayMap; import android.util.Slog; import com.android.server.backup.Flags; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.nio.charset.StandardCharsets; Loading Loading @@ -56,7 +58,7 @@ public final class BackupRestoreEventLogger { * * @hide */ public static final int DATA_TYPES_ALLOWED = 15; public static final int DATA_TYPES_ALLOWED = 150; /** * Denotes that the annotated element identifies a data type as required by the logging methods Loading Loading @@ -299,7 +301,7 @@ public final class BackupRestoreEventLogger { } if (!mResults.containsKey(dataType)) { if (mResults.keySet().size() == DATA_TYPES_ALLOWED) { if (mResults.keySet().size() == getDataTypesAllowed()) { // This is a new data type and we're already at capacity. Slog.d(TAG, "Logger is full, ignoring new data type"); return null; Loading @@ -315,6 +317,14 @@ public final class BackupRestoreEventLogger { return mHashDigest.digest(metaData.getBytes(StandardCharsets.UTF_8)); } private int getDataTypesAllowed(){ if (Flags.enableIncreaseDatatypesForAgentLogging()) { return DATA_TYPES_ALLOWED; } else { return 15; } } /** * Encapsulate logging results for a single data type. */ Loading
core/tests/coretests/src/android/app/backup/BackupRestoreEventLoggerTest.java +58 −5 Original line number Diff line number Diff line Loading @@ -26,10 +26,14 @@ import static junit.framework.Assert.fail; import android.app.backup.BackupRestoreEventLogger.DataTypeResult; import android.os.Parcel; import android.platform.test.annotations.Presubmit; import android.platform.test.flag.junit.SetFlagsRule; import androidx.test.runner.AndroidJUnit4; import com.android.server.backup.Flags; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -43,7 +47,9 @@ import java.util.Optional; @Presubmit @RunWith(AndroidJUnit4.class) public class BackupRestoreEventLoggerTest { private static final int DATA_TYPES_ALLOWED = 15; private static final int DATA_TYPES_ALLOWED_AFTER_FLAG = 150; private static final int DATA_TYPES_ALLOWED_BEFORE_FLAG = 15; private static final String DATA_TYPE_1 = "data_type_1"; private static final String DATA_TYPE_2 = "data_type_2"; Loading @@ -55,6 +61,9 @@ public class BackupRestoreEventLoggerTest { private BackupRestoreEventLogger mLogger; private MessageDigest mHashDigest; @Rule public final SetFlagsRule mSetFlagsRule = new SetFlagsRule(); @Before public void setUp() throws Exception { mHashDigest = MessageDigest.getInstance("SHA-256"); Loading Loading @@ -83,10 +92,53 @@ public class BackupRestoreEventLoggerTest { } @Test public void testBackupLogger_onlyAcceptsAllowedNumberOfDataTypes() { public void testBackupLogger_datatypeLimitFlagOff_onlyAcceptsAllowedNumberOfDataTypes() { mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_INCREASE_DATATYPES_FOR_AGENT_LOGGING); mLogger = new BackupRestoreEventLogger(BACKUP); for (int i = 0; i < DATA_TYPES_ALLOWED_BEFORE_FLAG; i++) { String dataType = DATA_TYPE_1 + i; mLogger.logItemsBackedUp(dataType, /* count */ 5); mLogger.logItemsBackupFailed(dataType, /* count */ 5, /* error */ null); mLogger.logBackupMetadata(dataType, METADATA_1); assertThat(getResultForDataTypeIfPresent(mLogger, dataType)).isNotEqualTo( Optional.empty()); } mLogger.logItemsBackedUp(DATA_TYPE_2, /* count */ 5); mLogger.logItemsBackupFailed(DATA_TYPE_2, /* count */ 5, /* error */ null); mLogger.logRestoreMetadata(DATA_TYPE_2, METADATA_1); assertThat(getResultForDataTypeIfPresent(mLogger, DATA_TYPE_2)).isEqualTo(Optional.empty()); } @Test public void testRestoreLogger_datatypeLimitFlagOff_onlyAcceptsAllowedNumberOfDataTypes() { mSetFlagsRule.disableFlags(Flags.FLAG_ENABLE_INCREASE_DATATYPES_FOR_AGENT_LOGGING); mLogger = new BackupRestoreEventLogger(RESTORE); for (int i = 0; i < DATA_TYPES_ALLOWED_BEFORE_FLAG; i++) { String dataType = DATA_TYPE_1 + i; mLogger.logItemsRestored(dataType, /* count */ 5); mLogger.logItemsRestoreFailed(dataType, /* count */ 5, /* error */ null); mLogger.logRestoreMetadata(dataType, METADATA_1); assertThat(getResultForDataTypeIfPresent(mLogger, dataType)).isNotEqualTo( Optional.empty()); } mLogger.logItemsRestored(DATA_TYPE_2, /* count */ 5); mLogger.logItemsRestoreFailed(DATA_TYPE_2, /* count */ 5, /* error */ null); mLogger.logRestoreMetadata(DATA_TYPE_2, METADATA_1); assertThat(getResultForDataTypeIfPresent(mLogger, DATA_TYPE_2)).isEqualTo(Optional.empty()); } @Test public void testBackupLogger_datatypeLimitFlagOn_onlyAcceptsAllowedNumberOfDataTypes() { mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_INCREASE_DATATYPES_FOR_AGENT_LOGGING); mLogger = new BackupRestoreEventLogger(BACKUP); for (int i = 0; i < DATA_TYPES_ALLOWED; i++) { for (int i = 0; i < DATA_TYPES_ALLOWED_AFTER_FLAG; i++) { String dataType = DATA_TYPE_1 + i; mLogger.logItemsBackedUp(dataType, /* count */ 5); mLogger.logItemsBackupFailed(dataType, /* count */ 5, /* error */ null); Loading @@ -103,10 +155,11 @@ public class BackupRestoreEventLoggerTest { } @Test public void testRestoreLogger_onlyAcceptsAllowedNumberOfDataTypes() { public void testRestoreLogger_datatypeLimitFlagOn_onlyAcceptsAllowedNumberOfDataTypes() { mSetFlagsRule.enableFlags(Flags.FLAG_ENABLE_INCREASE_DATATYPES_FOR_AGENT_LOGGING); mLogger = new BackupRestoreEventLogger(RESTORE); for (int i = 0; i < DATA_TYPES_ALLOWED; i++) { for (int i = 0; i < DATA_TYPES_ALLOWED_AFTER_FLAG; i++) { String dataType = DATA_TYPE_1 + i; mLogger.logItemsRestored(dataType, /* count */ 5); mLogger.logItemsRestoreFailed(dataType, /* count */ 5, /* error */ null); Loading
services/backup/flags.aconfig +9 −0 Original line number Diff line number Diff line Loading @@ -33,3 +33,12 @@ flag { bug: "320633449" is_fixed_read_only: true } flag { name: "enable_increase_datatypes_for_agent_logging" namespace: "onboarding" description: "Increase the number of a supported datatypes that an agent can define for its " "logger." bug: "296844513" is_fixed_read_only: true } No newline at end of file