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

Side by Side Diff: components/data_reduction_proxy/core/browser/data_reduction_proxy_statistics_prefs_unittest.cc

Issue 949533004: Rename DataReductionProxyStatisticsPrefs to DataReductionProxyCompressionStats (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 8 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 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/command_line.h"
6 #include "base/memory/scoped_ptr.h"
7 #include "base/prefs/pref_registry_simple.h"
8 #include "base/prefs/testing_pref_service.h"
9 #include "base/strings/string_number_conversions.h"
10 #include "base/test/test_simple_task_runner.h"
11 #include "base/time/time.h"
12 #include "base/values.h"
13 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_pref s.h"
14 #include "components/data_reduction_proxy/core/browser/data_reduction_proxy_stat istics_prefs.h"
15 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_pref_ names.h"
16 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_switc hes.h"
17 #include "testing/gtest/include/gtest/gtest.h"
18
19 namespace {
20
21 // TODO Make kNumDaysInHistory accessible from DataReductionProxySettings.
22 const size_t kNumDaysInHistory = 60;
23 const int kWriteDelayMinutes = 60;
24
25 int64 GetListPrefInt64Value(
26 const base::ListValue& list_update, size_t index) {
27 std::string string_value;
28 EXPECT_TRUE(list_update.GetString(index, &string_value));
29
30 int64 value = 0;
31 EXPECT_TRUE(base::StringToInt64(string_value, &value));
32 return value;
33 }
34
35 } // namespace
36
37 namespace data_reduction_proxy {
38
39 class DataReductionProxyStatisticsPrefsTest : public testing::Test {
40 protected:
41 DataReductionProxyStatisticsPrefsTest()
42 : task_runner_(scoped_refptr<base::TestSimpleTaskRunner>(
43 new base::TestSimpleTaskRunner())) {}
44
45 void SetUp() override { RegisterPrefs(simple_pref_service_.registry()); }
46
47 void SetUpPrefs() {
48 CreatePrefList(prefs::kDailyHttpOriginalContentLength);
49 CreatePrefList(prefs::kDailyHttpReceivedContentLength);
50
51 const int64 kOriginalLength = 150;
52 const int64 kReceivedLength = 100;
53
54 statistics_prefs_->SetInt64(
55 prefs::kHttpOriginalContentLength, kOriginalLength);
56 statistics_prefs_->SetInt64(
57 prefs::kHttpReceivedContentLength, kReceivedLength);
58
59 base::ListValue* original_daily_content_length_list =
60 statistics_prefs_->GetList(prefs::kDailyHttpOriginalContentLength);
61 base::ListValue* received_daily_content_length_list =
62 statistics_prefs_->GetList(prefs::kDailyHttpReceivedContentLength);
63
64 for (size_t i = 0; i < kNumDaysInHistory; ++i) {
65 original_daily_content_length_list->Set(
66 i, new base::StringValue(base::Int64ToString(i)));
67 }
68
69 received_daily_content_length_list->Clear();
70 for (size_t i = 0; i < kNumDaysInHistory/2; ++i) {
71 received_daily_content_length_list->Set(
72 i, new base::StringValue(base::Int64ToString(i)));
73 }
74 }
75
76 // Create daily pref list of |kNumDaysInHistory| zero values.
77 void CreatePrefList(const char* pref) {
78 base::ListValue* update = statistics_prefs_->GetList(pref);
79 update->Clear();
80 for (size_t i = 0; i < kNumDaysInHistory; ++i) {
81 update->Insert(0, new base::StringValue(base::Int64ToString(0)));
82 }
83 }
84
85 // Verify the pref list values in |pref_service_| are equal to those in
86 // |simple_pref_service| for |pref|.
87 void VerifyPrefListWasWritten(const char* pref) {
88 const base::ListValue* delayed_list = statistics_prefs_->GetList(pref);
89 const base::ListValue* written_list = simple_pref_service_.GetList(pref);
90 ASSERT_EQ(delayed_list->GetSize(), written_list->GetSize());
91 size_t count = delayed_list->GetSize();
92
93 for (size_t i = 0; i < count; ++i) {
94 EXPECT_EQ(GetListPrefInt64Value(*delayed_list, i),
95 GetListPrefInt64Value(*written_list, i));
96 }
97 }
98
99 // Verify the pref value in |pref_service_| are equal to that in
100 // |simple_pref_service|.
101 void VerifyPrefWasWritten(const char* pref) {
102 int64 delayed_pref = statistics_prefs_->GetInt64(pref);
103 int64 written_pref = simple_pref_service_.GetInt64(pref);
104 EXPECT_EQ(delayed_pref, written_pref);
105 }
106
107 // Verify the pref values in |dict| are equal to that in |statistics_prefs_|.
108 void VerifyPrefs(base::DictionaryValue* dict) {
109 base::string16 dict_pref_string;
110 int64 dict_pref;
111 int64 service_pref;
112
113 dict->GetString("historic_original_content_length", &dict_pref_string);
114 base::StringToInt64(dict_pref_string, &dict_pref);
115 service_pref = statistics_prefs_->GetInt64(
116 prefs::kHttpOriginalContentLength);
117 EXPECT_EQ(service_pref, dict_pref);
118
119 dict->GetString("historic_received_content_length", &dict_pref_string);
120 base::StringToInt64(dict_pref_string, &dict_pref);
121 service_pref = statistics_prefs_->GetInt64(
122 prefs::kHttpReceivedContentLength);
123 EXPECT_EQ(service_pref, dict_pref);
124 }
125
126 scoped_refptr<base::TestSimpleTaskRunner> task_runner_;
127 TestingPrefServiceSimple simple_pref_service_;
128 scoped_ptr<DataReductionProxyStatisticsPrefs> statistics_prefs_;
129 };
130
131 TEST_F(DataReductionProxyStatisticsPrefsTest, WritePrefsDirect) {
132 statistics_prefs_.reset(new DataReductionProxyStatisticsPrefs(
133 &simple_pref_service_,
134 task_runner_,
135 base::TimeDelta()));
136 SetUpPrefs();
137
138 VerifyPrefWasWritten(prefs::kHttpOriginalContentLength);
139 VerifyPrefWasWritten(prefs::kHttpReceivedContentLength);
140 VerifyPrefListWasWritten(prefs::kDailyHttpOriginalContentLength);
141 VerifyPrefListWasWritten(prefs::kDailyHttpReceivedContentLength);
142 }
143
144 TEST_F(DataReductionProxyStatisticsPrefsTest, WritePrefsDelayed) {
145 statistics_prefs_.reset(new DataReductionProxyStatisticsPrefs(
146 &simple_pref_service_,
147 task_runner_,
148 base::TimeDelta::FromMinutes(kWriteDelayMinutes)));
149 SetUpPrefs();
150
151 task_runner_->RunPendingTasks();
152
153 VerifyPrefWasWritten(prefs::kHttpOriginalContentLength);
154 VerifyPrefWasWritten(prefs::kHttpReceivedContentLength);
155 VerifyPrefListWasWritten(prefs::kDailyHttpOriginalContentLength);
156 VerifyPrefListWasWritten(prefs::kDailyHttpReceivedContentLength);
157 }
158
159 TEST_F(DataReductionProxyStatisticsPrefsTest,
160 WritePrefsOnUpdateDailyReceivedContentLengths) {
161 statistics_prefs_.reset(new DataReductionProxyStatisticsPrefs(
162 &simple_pref_service_,
163 task_runner_,
164 base::TimeDelta::FromMinutes(kWriteDelayMinutes)));
165 SetUpPrefs();
166
167 simple_pref_service_.SetBoolean(
168 prefs::kUpdateDailyReceivedContentLengths, true);
169
170 VerifyPrefWasWritten(prefs::kHttpOriginalContentLength);
171 VerifyPrefWasWritten(prefs::kHttpReceivedContentLength);
172 VerifyPrefListWasWritten(prefs::kDailyHttpOriginalContentLength);
173 VerifyPrefListWasWritten(prefs::kDailyHttpReceivedContentLength);
174 }
175
176 TEST_F(DataReductionProxyStatisticsPrefsTest,
177 HistoricNetworkStatsInfoToValue) {
178 const int64 kOriginalLength = 150;
179 const int64 kReceivedLength = 100;
180 statistics_prefs_.reset(new DataReductionProxyStatisticsPrefs(
181 &simple_pref_service_,
182 task_runner_,
183 base::TimeDelta::FromMinutes(kWriteDelayMinutes)));
184
185 base::DictionaryValue* dict = nullptr;
186 scoped_ptr<base::Value> stats_value(
187 statistics_prefs_->HistoricNetworkStatsInfoToValue());
188 EXPECT_TRUE(stats_value->GetAsDictionary(&dict));
189 VerifyPrefs(dict);
190
191 statistics_prefs_->SetInt64(prefs::kHttpOriginalContentLength,
192 kOriginalLength);
193 statistics_prefs_->SetInt64(prefs::kHttpReceivedContentLength,
194 kReceivedLength);
195
196 stats_value.reset(statistics_prefs_->HistoricNetworkStatsInfoToValue());
197 EXPECT_TRUE(stats_value->GetAsDictionary(&dict));
198 VerifyPrefs(dict);
199 }
200
201 TEST_F(DataReductionProxyStatisticsPrefsTest,
202 HistoricNetworkStatsInfoToValueDirect) {
203 const int64 kOriginalLength = 150;
204 const int64 kReceivedLength = 100;
205 statistics_prefs_.reset(new DataReductionProxyStatisticsPrefs(
206 &simple_pref_service_,
207 task_runner_,
208 base::TimeDelta()));
209
210 base::DictionaryValue* dict = nullptr;
211 scoped_ptr<base::Value> stats_value(
212 statistics_prefs_->HistoricNetworkStatsInfoToValue());
213 EXPECT_TRUE(stats_value->GetAsDictionary(&dict));
214 VerifyPrefs(dict);
215
216 statistics_prefs_->SetInt64(prefs::kHttpOriginalContentLength,
217 kOriginalLength);
218 statistics_prefs_->SetInt64(prefs::kHttpReceivedContentLength,
219 kReceivedLength);
220
221 stats_value.reset(statistics_prefs_->HistoricNetworkStatsInfoToValue());
222 EXPECT_TRUE(stats_value->GetAsDictionary(&dict));
223 VerifyPrefs(dict);
224 }
225
226 TEST_F(DataReductionProxyStatisticsPrefsTest,
227 ClearPrefsOnRestartEnabled) {
228 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
229 command_line->AppendSwitch(
230 data_reduction_proxy::switches::kClearDataReductionProxyDataSavings);
231
232 base::ListValue list_value;
233 list_value.Insert(0, new base::StringValue(base::Int64ToString(1234)));
234 simple_pref_service_.Set(prefs::kDailyHttpOriginalContentLength, list_value);
235
236 statistics_prefs_.reset(new DataReductionProxyStatisticsPrefs(
237 &simple_pref_service_,
238 task_runner_,
239 base::TimeDelta::FromMinutes(kWriteDelayMinutes)));
240
241 const base::ListValue* value = simple_pref_service_.GetList(
242 prefs::kDailyHttpOriginalContentLength);
243 EXPECT_EQ(0u, value->GetSize());
244 }
245
246 TEST_F(DataReductionProxyStatisticsPrefsTest,
247 ClearPrefsOnRestartDisabled) {
248 base::ListValue list_value;
249 list_value.Insert(0, new base::StringValue(base::Int64ToString(1234)));
250 simple_pref_service_.Set(prefs::kDailyHttpOriginalContentLength, list_value);
251
252 statistics_prefs_.reset(new DataReductionProxyStatisticsPrefs(
253 &simple_pref_service_,
254 task_runner_,
255 base::TimeDelta::FromMinutes(kWriteDelayMinutes)));
256
257 const base::ListValue* value = simple_pref_service_.GetList(
258 prefs::kDailyHttpOriginalContentLength);
259 std::string string_value;
260 value->GetString(0, &string_value);
261 EXPECT_EQ("1234", string_value);
262 }
263
264 } // namespace data_reduction_proxy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698