OLD | NEW |
(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 |
OLD | NEW |