diff options
5 files changed, 196 insertions, 1 deletions
diff --git a/services/credentials/java/com/android/server/credentials/metrics/ApiName.java b/services/credentials/java/com/android/server/credentials/metrics/ApiName.java index cb6a5d06e35f..d82834928999 100644 --- a/services/credentials/java/com/android/server/credentials/metrics/ApiName.java +++ b/services/credentials/java/com/android/server/credentials/metrics/ApiName.java @@ -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"; diff --git a/services/tests/servicestests/src/com/android/server/credentials/MetricUtilitiesTest.java b/services/tests/servicestests/src/com/android/server/credentials/MetricUtilitiesTest.java new file mode 100644 index 000000000000..b46f1a61c745 --- /dev/null +++ b/services/tests/servicestests/src/com/android/server/credentials/MetricUtilitiesTest.java @@ -0,0 +1,52 @@ +/* + * 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); + } +} diff --git a/services/tests/servicestests/src/com/android/server/credentials/metrics/ApiNameTest.java b/services/tests/servicestests/src/com/android/server/credentials/metrics/ApiNameTest.java new file mode 100644 index 000000000000..8093b18f3d57 --- /dev/null +++ b/services/tests/servicestests/src/com/android/server/credentials/metrics/ApiNameTest.java @@ -0,0 +1,48 @@ +/* + * 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); + } +} diff --git a/services/tests/servicestests/src/com/android/server/credentials/metrics/ApiStatusTest.java b/services/tests/servicestests/src/com/android/server/credentials/metrics/ApiStatusTest.java new file mode 100644 index 000000000000..3bf48143f110 --- /dev/null +++ b/services/tests/servicestests/src/com/android/server/credentials/metrics/ApiStatusTest.java @@ -0,0 +1,47 @@ +/* + * 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); + } +} diff --git a/services/tests/servicestests/src/com/android/server/credentials/metrics/EntryEnumTest.java b/services/tests/servicestests/src/com/android/server/credentials/metrics/EntryEnumTest.java new file mode 100644 index 000000000000..3104cc2f9ec5 --- /dev/null +++ b/services/tests/servicestests/src/com/android/server/credentials/metrics/EntryEnumTest.java @@ -0,0 +1,47 @@ +/* + * 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); + } +} |