Merge "Starting Unit Tests for Metrics" into udc-dev

This commit is contained in:
Treehugger Robot
2023-05-19 00:44:01 +00:00
committed by Android (Google) Code Review
5 changed files with 196 additions and 1 deletions

View File

@@ -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";

View File

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

View File

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

View File

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

View File

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