Starting Unit Tests for Metrics
After searching around, I discovered that our cts unittest location is unable to find the correct dependencies for the build (even though aidegen was able to). I discovered, instead, that we need to land our unittests in the services/tests directory, since the MetricUtilities are found in the services/.../server package. I've left TODOs where necessary. Bug: 273339472 Test: These are Metric Unit Tests Change-Id: Idf84ec5fc05ced6ca39c4b9bde557a04542823b1
This commit is contained in:
@@ -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";
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user