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 114 115 116 117 118 119 120 121 122 123 124
|
// 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/gms_metrics_provider.h"
#include "base/android/build_info.h"
#include "base/test/metrics/histogram_tester.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace metrics {
namespace {
// Same as GmsMetricsProvider but Gms version is mocked for easy testing.
class MockedGmsMetricsProvider : public GmsMetricsProvider {
public:
void SetGmsVersionForTesting(const std::string& version) {
version_ = version;
}
private:
// GmsMetricsProvider.
std::string GetGMSVersion() override { return version_; }
std::string version_;
};
} // namespace
class GmsMetricsProviderTest : public testing::Test {
protected:
GmsMetricsProviderTest() = default;
base::HistogramTester& histogram_tester() { return histogram_tester_; }
MockedGmsMetricsProvider& gms_metrics_provider() {
return gms_metrics_provider_;
}
private:
base::HistogramTester histogram_tester_;
MockedGmsMetricsProvider gms_metrics_provider_;
};
TEST_F(GmsMetricsProviderTest, TestMetricsReportedCorrectly) {
gms_metrics_provider().SetGmsVersionForTesting("234012000");
gms_metrics_provider().ProvideHistograms();
histogram_tester().ExpectUniqueSample("Android.PlayServices.ShortVersion",
/*sample=*/23401,
/*expected_bucket_count=*/1);
gms_metrics_provider().SetGmsVersionForTesting("234016000");
gms_metrics_provider().ProvideHistograms();
histogram_tester().ExpectUniqueSample("Android.PlayServices.ShortVersion",
/*sample=*/23401,
/*expected_bucket_count=*/2);
gms_metrics_provider().SetGmsVersionForTesting("234082000");
gms_metrics_provider().ProvideHistograms();
histogram_tester().ExpectUniqueSample("Android.PlayServices.ShortVersion",
/*sample=*/23401,
/*expected_bucket_count=*/3);
}
TEST_F(GmsMetricsProviderTest, TestMetricsReportedCorrectlyForBeta) {
gms_metrics_provider().SetGmsVersionForTesting("234002000");
gms_metrics_provider().ProvideHistograms();
histogram_tester().ExpectUniqueSample("Android.PlayServices.ShortVersion",
/*sample=*/23400,
/*expected_bucket_count=*/1);
gms_metrics_provider().SetGmsVersionForTesting("234008000");
gms_metrics_provider().ProvideHistograms();
histogram_tester().ExpectUniqueSample("Android.PlayServices.ShortVersion",
/*sample=*/23400,
/*expected_bucket_count=*/2);
gms_metrics_provider().SetGmsVersionForTesting("234010000");
gms_metrics_provider().ProvideHistograms();
histogram_tester().ExpectUniqueSample("Android.PlayServices.ShortVersion",
/*sample=*/23400,
/*expected_bucket_count=*/3);
}
TEST_F(GmsMetricsProviderTest, TestGMSNotInstalled) {
gms_metrics_provider().SetGmsVersionForTesting("0");
gms_metrics_provider().ProvideHistograms();
histogram_tester().ExpectUniqueSample("Android.PlayServices.ShortVersion",
/*sample=*/0,
/*expected_bucket_count=*/1);
}
TEST_F(GmsMetricsProviderTest, TestGMSVersionInvalid) {
gms_metrics_provider().SetGmsVersionForTesting("aaaa");
gms_metrics_provider().ProvideHistograms();
histogram_tester().ExpectUniqueSample("Android.PlayServices.ShortVersion",
/*sample=*/1,
/*expected_bucket_count=*/1);
}
TEST_F(GmsMetricsProviderTest, TestGMSVersionOutOfRange) {
gms_metrics_provider().SetGmsVersionForTesting("11111");
gms_metrics_provider().ProvideHistograms();
histogram_tester().ExpectUniqueSample("Android.PlayServices.ShortVersion",
/*sample=*/2,
/*expected_bucket_count=*/1);
gms_metrics_provider().SetGmsVersionForTesting("999999999");
gms_metrics_provider().ProvideHistograms();
histogram_tester().ExpectUniqueSample("Android.PlayServices.ShortVersion",
/*sample=*/2,
/*expected_bucket_count=*/2);
}
} // namespace metrics
|