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

Commit 6e41e384 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Starting Unit Tests for Metrics" into udc-dev am: b42ac693

parents e3eb3bb6 b42ac693
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import static com.android.internal.util.FrameworkStatsLog.CREDENTIAL_MANAGER_INI
import static com.android.internal.util.FrameworkStatsLog.CREDENTIAL_MANAGER_INITIAL_PHASE_REPORTED__API_NAME__API_NAME_REGISTER_CREDENTIAL_DESCRIPTION;
import static com.android.internal.util.FrameworkStatsLog.CREDENTIAL_MANAGER_INITIAL_PHASE_REPORTED__API_NAME__API_NAME_SET_ENABLED_PROVIDERS;
import static com.android.internal.util.FrameworkStatsLog.CREDENTIAL_MANAGER_INITIAL_PHASE_REPORTED__API_NAME__API_NAME_UNKNOWN;
import static com.android.internal.util.FrameworkStatsLog.CREDENTIAL_MANAGER_INITIAL_PHASE_REPORTED__API_NAME__API_NAME_UNREGISTER_CREDENTIAL_DESCRIPTION;

import android.credentials.ui.RequestInfo;
import android.util.Slog;
@@ -61,7 +62,7 @@ CREDENTIAL_MANAGER_INITIAL_PHASE_REPORTED__API_NAME__API_NAME_IS_ENABLED_CREDENT
    ),

    UNREGISTER_CREDENTIAL_DESCRIPTION(
    CREDENTIAL_MANAGER_INITIAL_PHASE_REPORTED__API_NAME__API_NAME_REGISTER_CREDENTIAL_DESCRIPTION
    CREDENTIAL_MANAGER_INITIAL_PHASE_REPORTED__API_NAME__API_NAME_UNREGISTER_CREDENTIAL_DESCRIPTION
    );

    private static final String TAG = "ApiName";
+52 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.android.server.credentials;

import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;

import com.android.server.credentials.metrics.InitialPhaseMetric;

import org.junit.Test;
import org.junit.runner.RunWith;

/**
 * Given the secondary-system nature of the MetricUtilities, we expect absolutely nothing to
 * throw an error. If one presents itself, that is problematic.
 *
 * atest FrameworksServicesTests:com.android.server.credentials.MetricUtilitiesTest
 */
@RunWith(AndroidJUnit4.class)
@SmallTest
public final class MetricUtilitiesTest {

    @Test
    public void logApiCalledInitialPhase_nullInitPhaseMetricAndNegativeSequence_success() {
        MetricUtilities.logApiCalledInitialPhase(null, -1);
    }

    @Test
    public void logApiCalledInitialPhase_invalidInitPhaseMetricAndPositiveSequence_success() {
        MetricUtilities.logApiCalledInitialPhase(new InitialPhaseMetric(-1), 1);
    }

    @Test
    public void logApiCalledInitialPhase_validInitPhaseMetric_success() {
        InitialPhaseMetric validInitPhaseMetric = new InitialPhaseMetric(
                MetricUtilities.getHighlyUniqueInteger());
        MetricUtilities.logApiCalledInitialPhase(validInitPhaseMetric, 1);
    }
}
+48 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.android.server.credentials.metrics;

import static com.google.common.truth.Truth.assertThat;

import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

import org.junit.Test;
import org.junit.runner.RunWith;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;

@SmallTest
@RunWith(AndroidJUnit4.class)
public class ApiNameTest {

    @Test
    public void getMetricCode_matchesWestWorldMetricCode_success() {
        // com.android.os is only visible in cts tests, so we need to mimic it for server side unit
        // tests. aidegen can identify it but builds will not. Thus, this is the workaround.
        Set<Integer> expectedApiNames = new HashSet<>();
        for (int i = 0; i < 10; i++) {
            expectedApiNames.add(i);
        }
        Set<Integer> actualServerApiNames = Arrays.stream(ApiName.values())
                .map(ApiName::getMetricCode).collect(Collectors.toSet());

        assertThat(actualServerApiNames).containsExactlyElementsIn(expectedApiNames);
    }
}
+47 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.server.credentials.metrics;

import static com.google.common.truth.Truth.assertThat;

import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

import org.junit.Test;
import org.junit.runner.RunWith;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;

@SmallTest
@RunWith(AndroidJUnit4.class)
public class ApiStatusTest {

    @Test
    public void getMetricCode_matchesWestWorldMetricCode_success() {
        Set<Integer> expectedApiStatus = new HashSet<>();
        for (int i = 1; i < 5; i++) {
            expectedApiStatus.add(i);
        }
        Set<Integer> actualServerApiStatus = Arrays.stream(ApiStatus.values())
                .map(ApiStatus::getMetricCode).collect(Collectors.toSet());

        assertThat(actualServerApiStatus).containsExactlyElementsIn(expectedApiStatus);
    }
}
+47 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.server.credentials.metrics;

import static com.google.common.truth.Truth.assertThat;

import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

import org.junit.Test;
import org.junit.runner.RunWith;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;

@SmallTest
@RunWith(AndroidJUnit4.class)
public class EntryEnumTest {

    @Test
    public void getMetricCode_matchesWestWorldMetricCode_success() {
        Set<Integer> expectedEntryEnum = new HashSet<>();
        for (int i = 0; i < 5; i++) {
            expectedEntryEnum.add(i);
        }
        Set<Integer> actualServerEntryEnum = Arrays.stream(EntryEnum.values())
                .map(EntryEnum::getMetricCode).collect(Collectors.toSet());

        assertThat(actualServerEntryEnum).containsExactlyElementsIn(expectedEntryEnum);
    }
}