Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a324bedb authored by Beatrice Marchegiani's avatar Beatrice Marchegiani Committed by Android (Google) Code Review
Browse files

Merge "Increase number of supported datatypes" into main

parents 14056f09 821a48fd
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -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;
@@ -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
@@ -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;
@@ -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.
     */
+58 −5
Original line number Diff line number Diff line
@@ -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;

@@ -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";
@@ -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");
@@ -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);
@@ -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);
+9 −0
Original line number Diff line number Diff line
@@ -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