Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(989)

Side by Side Diff: components/metrics/metrics_data_use_measurements_unittest.cc

Issue 1818613002: Implement UMA log throttling for cellular connections (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 #include "components/metrics/metrics_data_use_measurements.h"
2
3 #include "base/strings/stringprintf.h"
4 #include "components/metrics/metrics_pref_names.h"
5 #include "components/prefs/pref_registry_simple.h"
6 #include "components/prefs/testing_pref_service.h"
7 #include "testing/gtest/include/gtest/gtest.h"
8
9 namespace metrics {
10
11 namespace {
12 const char kTodayStr[] = "2016-03-16";
13 const char kYesterdayStr[] = "2016-03-15";
14 const char kExpiredDateStr1[] = "2016-03-09";
15 const char kExpiredDateStr2[] = "2016-03-01";
16
17 class TestDataUsePrefService : public TestingPrefServiceSimple {
18 public:
19 TestDataUsePrefService() {
20 registry()->RegisterDictionaryPref(metrics::prefs::kUserCellDataUse);
21 registry()->RegisterDictionaryPref(metrics::prefs::kUmaCellDataUse);
22 }
23
24 void ClearDataUsePrefs() {
25 ClearPref(metrics::prefs::kUserCellDataUse);
26 ClearPref(metrics::prefs::kUmaCellDataUse);
27 }
28 };
29
30 void SetPrefTestValuesOverRatio(PrefService* local_state) {
31 base::DictionaryValue user_pref_dict;
32 user_pref_dict.SetInteger(kTodayStr, 2*100);
33 user_pref_dict.SetInteger(kYesterdayStr, 2*100);
34 user_pref_dict.SetInteger(kExpiredDateStr1, 2*100);
35 user_pref_dict.SetInteger(kExpiredDateStr2, 2*100);
36 local_state->Set(prefs::kUserCellDataUse, user_pref_dict);
37
38 base::DictionaryValue uma_pref_dict;
39 uma_pref_dict.SetInteger(kTodayStr, 50);
40 uma_pref_dict.SetInteger(kYesterdayStr, 50);
41 uma_pref_dict.SetInteger(kExpiredDateStr1, 50);
42 uma_pref_dict.SetInteger(kExpiredDateStr2, 50);
43 local_state->Set(prefs::kUmaCellDataUse, uma_pref_dict);
44 }
45
46 void SetPrefTestValuesValidRatio(PrefService* local_state) {
47 base::DictionaryValue user_pref_dict;
48 user_pref_dict.SetInteger(kTodayStr, 100*100);
49 user_pref_dict.SetInteger(kYesterdayStr, 100*100);
50 user_pref_dict.SetInteger(kExpiredDateStr1, 100*100);
51 user_pref_dict.SetInteger(kExpiredDateStr2, 100*100);
52 local_state->Set(prefs::kUserCellDataUse, user_pref_dict);
53
54 // Should be 4% of user traffic
55 base::DictionaryValue uma_pref_dict;
56 uma_pref_dict.SetInteger(kTodayStr, 4*100);
57 uma_pref_dict.SetInteger(kYesterdayStr, 4*100);
58 uma_pref_dict.SetInteger(kExpiredDateStr1, 4*100);
59 uma_pref_dict.SetInteger(kExpiredDateStr2, 4*100);
60 local_state->Set(prefs::kUmaCellDataUse, uma_pref_dict);
61 }
62
63 } // namespace
64
65 TEST(MetricsDataUseMeasurementsTest, CheckUpdateUsagePref) {
66 TestDataUsePrefService local_state;
67 MetricsDataUseMeasurements::Initialize(&local_state);
68 local_state.ClearDataUsePrefs();
69 MetricsDataUseMeasurements::GetInstance()->SetMeasurementDateForTesting(kToday Str);
70
71 int user_pref_value = 0;
72 int uma_pref_value = 0;
73
74 MetricsDataUseMeasurements::GetInstance()->UpdateMetricsUsagePrefsOnUIThread(" ", 2*100);
75 local_state.GetDictionary(prefs::kUserCellDataUse)->GetInteger(kTodayStr, &use r_pref_value);
76 EXPECT_EQ(2*100, user_pref_value);
77 local_state.GetDictionary(prefs::kUmaCellDataUse)->GetInteger(kTodayStr, &uma_ pref_value);
78 EXPECT_EQ(0, uma_pref_value);
79
80 MetricsDataUseMeasurements::GetInstance()->UpdateMetricsUsagePrefsOnUIThread(" UMA", 100);
81 local_state.GetDictionary(prefs::kUserCellDataUse)->GetInteger(kTodayStr, &use r_pref_value);
82 EXPECT_EQ(3*100, user_pref_value);
83 local_state.GetDictionary(prefs::kUmaCellDataUse)->GetInteger(kTodayStr, &uma_ pref_value);
84 EXPECT_EQ(100, uma_pref_value);
85 }
86
87 TEST(MetricsDataUseMeasurementsTest, CheckRemoveExpiredEntries) {
88 TestDataUsePrefService local_state;
89 MetricsDataUseMeasurements::Initialize(&local_state);
90 local_state.ClearDataUsePrefs();
91 MetricsDataUseMeasurements::GetInstance()->SetMeasurementDateForTesting(kToday Str);
92 SetPrefTestValuesOverRatio(&local_state);
93 MetricsDataUseMeasurements::GetInstance()->RemoveExpiredEntries();
94
95 int user_pref_value = 0;
96 int uma_pref_value = 0;
97
98 local_state.GetDictionary(prefs::kUserCellDataUse)->GetInteger(kExpiredDateStr 1, &user_pref_value);
99 EXPECT_EQ(0, user_pref_value);
100 local_state.GetDictionary(prefs::kUmaCellDataUse)->GetInteger(kExpiredDateStr1 , &uma_pref_value);
101 EXPECT_EQ(0, uma_pref_value);
102
103 local_state.GetDictionary(prefs::kUserCellDataUse)->GetInteger(kExpiredDateStr 2, &user_pref_value);
104 EXPECT_EQ(0, user_pref_value);
105 local_state.GetDictionary(prefs::kUmaCellDataUse)->GetInteger(kExpiredDateStr2 , &uma_pref_value);
106 EXPECT_EQ(0, uma_pref_value);
107
108 local_state.GetDictionary(prefs::kUserCellDataUse)->GetInteger(kTodayStr, &use r_pref_value);
109 EXPECT_EQ(2*100, user_pref_value);
110 local_state.GetDictionary(prefs::kUmaCellDataUse)->GetInteger(kTodayStr, &uma_ pref_value);
111 EXPECT_EQ(50, uma_pref_value);
112
113 local_state.GetDictionary(prefs::kUserCellDataUse)->GetInteger(kYesterdayStr, &user_pref_value);
114 EXPECT_EQ(2*100, user_pref_value);
115 local_state.GetDictionary(prefs::kUmaCellDataUse)->GetInteger(kYesterdayStr, & uma_pref_value);
116 EXPECT_EQ(50, uma_pref_value);
117 }
118
119 TEST(MetricsDataUseMeasurementsTest, CheckTotalDataUse) {
120 TestDataUsePrefService local_state;
121 MetricsDataUseMeasurements::Initialize(&local_state);
122 local_state.ClearDataUsePrefs();
123 MetricsDataUseMeasurements::GetInstance()->SetMeasurementDateForTesting(kToday Str);
124 SetPrefTestValuesOverRatio(&local_state);
125
126 int user_data_use = MetricsDataUseMeasurements::GetInstance()->TotalDataUse(pr efs::kUserCellDataUse);
127 EXPECT_EQ(8*100, user_data_use);
128 int uma_data_use = MetricsDataUseMeasurements::GetInstance()->TotalDataUse(pre fs::kUmaCellDataUse);
129 EXPECT_EQ(4*50, uma_data_use);
130 }
131
132 TEST(MetricsDataUseMeasurementsTest, CheckCanUploadUMALog) {
133 TestDataUsePrefService local_state;
134 MetricsDataUseMeasurements::Initialize(&local_state);
135 MetricsDataUseMeasurements::GetInstance()->SetMeasurementDateForTesting(kToday Str);
136 local_state.ClearDataUsePrefs();
137 SetPrefTestValuesOverRatio(&local_state);
138
139 bool can_upload = MetricsDataUseMeasurements::GetInstance()->CanUploadUMALog(5 0);
140 EXPECT_TRUE(can_upload);
141 can_upload = MetricsDataUseMeasurements::GetInstance()->CanUploadUMALog(100);
142 EXPECT_TRUE(can_upload);
143 can_upload = MetricsDataUseMeasurements::GetInstance()->CanUploadUMALog(150);
144 EXPECT_FALSE(can_upload);
145
146 local_state.ClearDataUsePrefs();
147 SetPrefTestValuesValidRatio(&local_state);
148 can_upload = MetricsDataUseMeasurements::GetInstance()->CanUploadUMALog(100);
149 EXPECT_TRUE(can_upload);
150 can_upload = MetricsDataUseMeasurements::GetInstance()->CanUploadUMALog(200); // this is about 0.49%
151 EXPECT_TRUE(can_upload);
152 can_upload = MetricsDataUseMeasurements::GetInstance()->CanUploadUMALog(300);
153 EXPECT_FALSE(can_upload);
154 }
155
156 }// namespace metrics
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698