1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/metrics/android_metrics_helper.h"
#include <memory>
#include "base/test/metrics/histogram_tester.h"
#include "components/prefs/testing_pref_service.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace metrics {
TEST(AndroidMetricsHelperTest, CpuAbiBitnessSupport) {
std::unique_ptr<AndroidMetricsHelper> helper(
AndroidMetricsHelper::CreateInstanceForTest("", false, false));
EXPECT_EQ(helper->cpu_abi_bitness_support(), CpuAbiBitnessSupport::kNeither);
helper.reset(AndroidMetricsHelper::CreateInstanceForTest("", true, false));
EXPECT_EQ(helper->cpu_abi_bitness_support(),
CpuAbiBitnessSupport::k32bitOnly);
helper.reset(AndroidMetricsHelper::CreateInstanceForTest("", false, true));
EXPECT_EQ(helper->cpu_abi_bitness_support(),
CpuAbiBitnessSupport::k64bitOnly);
helper.reset(AndroidMetricsHelper::CreateInstanceForTest("", true, true));
EXPECT_EQ(helper->cpu_abi_bitness_support(),
CpuAbiBitnessSupport::k32And64bit);
}
TEST(AndroidMetricsHelperTest, VersionCode) {
std::unique_ptr<AndroidMetricsHelper> helper(
AndroidMetricsHelper::CreateInstanceForTest("588700000", true, true));
EXPECT_EQ(helper->version_code_int(), 588700000);
}
TEST(AndroidMetricsHelperTest, VersionCode_BadData) {
std::unique_ptr<AndroidMetricsHelper> helper(
AndroidMetricsHelper::CreateInstanceForTest("", true, true));
EXPECT_EQ(helper->version_code_int(), 0);
helper.reset(
AndroidMetricsHelper::CreateInstanceForTest("5887_000_0_9", true, true));
EXPECT_EQ(helper->version_code_int(), 0);
}
class AndroidMetricsHelperHistTest : public testing::Test {
public:
AndroidMetricsHelperHistTest() {
AndroidMetricsHelper::RegisterPrefs(pref_service.registry());
}
~AndroidMetricsHelperHistTest() override {
AndroidMetricsHelper::ResetGlobalStateForTesting();
}
protected:
TestingPrefServiceSimple pref_service;
base::HistogramTester histogram_tester;
};
TEST_F(AndroidMetricsHelperHistTest, EmitHistograms_CurrentSession) {
std::unique_ptr<AndroidMetricsHelper> helper(
AndroidMetricsHelper::CreateInstanceForTest("588700002", true, true));
helper->EmitHistograms(&pref_service, /*current_session=*/true);
histogram_tester.ExpectTotalCount("Android.VersionCode", 1);
histogram_tester.ExpectUniqueSample("Android.VersionCode", 588700002, 1);
histogram_tester.ExpectTotalCount("Android.CpuAbiBitnessSupport", 1);
histogram_tester.ExpectUniqueSample("Android.CpuAbiBitnessSupport",
CpuAbiBitnessSupport::k32And64bit, 1);
}
TEST_F(AndroidMetricsHelperHistTest, EmitHistograms_LogPreviousSession) {
std::unique_ptr<AndroidMetricsHelper> helper(
AndroidMetricsHelper::CreateInstanceForTest("588700002", true, true));
helper->EmitHistograms(&pref_service, /*current_session=*/false);
histogram_tester.ExpectTotalCount("Android.VersionCode", 0);
histogram_tester.ExpectTotalCount("Android.CpuAbiBitnessSupport", 1);
histogram_tester.ExpectUniqueSample("Android.CpuAbiBitnessSupport",
CpuAbiBitnessSupport::k32And64bit, 1);
}
TEST_F(AndroidMetricsHelperHistTest,
EmitHistograms_LogPreviousSessionWithSavedLocalState) {
AndroidMetricsHelper::SaveLocalState(&pref_service, 588700002);
std::unique_ptr<AndroidMetricsHelper> helper(
AndroidMetricsHelper::CreateInstanceForTest("588700006", false, false));
helper->EmitHistograms(&pref_service, /*current_session=*/false);
// The previous value was used.
histogram_tester.ExpectTotalCount("Android.VersionCode", 1);
histogram_tester.ExpectUniqueSample("Android.VersionCode", 588700002, 1);
// We don't bother to save/restore CpuAbiBitnessSupport, as we assume that the
// value doesn't change across sessions. The test uses a different value
// artificially, solely for the purpose of testing this behavior.
histogram_tester.ExpectTotalCount("Android.CpuAbiBitnessSupport", 1);
histogram_tester.ExpectUniqueSample("Android.CpuAbiBitnessSupport",
CpuAbiBitnessSupport::kNeither, 1);
}
TEST_F(AndroidMetricsHelperHistTest, EmitHistograms_BadData) {
std::unique_ptr<AndroidMetricsHelper> helper(
AndroidMetricsHelper::CreateInstanceForTest("5887_000_0_2", true, false));
helper->EmitHistograms(&pref_service, /*current_session=*/true);
histogram_tester.ExpectTotalCount("Android.VersionCode", 0);
histogram_tester.ExpectTotalCount("Android.CpuAbiBitnessSupport", 1);
histogram_tester.ExpectUniqueSample("Android.CpuAbiBitnessSupport",
CpuAbiBitnessSupport::k32bitOnly, 1);
}
} // namespace metrics
|