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

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

Issue 290103005: Remove the provisional store and just store the staged log when writing to (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 5 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
« no previous file with comments | « components/metrics/metrics_log_manager.cc ('k') | components/metrics/metrics_service.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/metrics/metrics_log_manager.h" 5 #include "components/metrics/metrics_log_manager.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 EXPECT_FALSE(log_manager.has_unsent_logs()); 171 EXPECT_FALSE(log_manager.has_unsent_logs());
172 log_manager.LoadPersistedUnsentLogs(); 172 log_manager.LoadPersistedUnsentLogs();
173 EXPECT_TRUE(log_manager.has_unsent_logs()); 173 EXPECT_TRUE(log_manager.has_unsent_logs());
174 174
175 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( 175 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
176 "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service))); 176 "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service)));
177 log_manager.FinishCurrentLog(); 177 log_manager.FinishCurrentLog();
178 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( 178 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
179 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service))); 179 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
180 log_manager.StageNextLogForUpload(); 180 log_manager.StageNextLogForUpload();
181 log_manager.StoreStagedLogAsUnsent(PersistedLogs::NORMAL_STORE);
182 log_manager.FinishCurrentLog(); 181 log_manager.FinishCurrentLog();
183 182
184 // Nothing should be written out until PersistUnsentLogs is called. 183 // Nothing should be written out until PersistUnsentLogs is called.
185 EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG)); 184 EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG));
186 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); 185 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
187 log_manager.PersistUnsentLogs(); 186 log_manager.PersistUnsentLogs();
188 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG)); 187 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG));
189 EXPECT_EQ(2U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); 188 EXPECT_EQ(2U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
190 } 189 }
191 190
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 // Ensure that types are preserved when storing staged logs. 230 // Ensure that types are preserved when storing staged logs.
232 { 231 {
233 TestLogPrefService pref_service; 232 TestLogPrefService pref_service;
234 MetricsLogManager log_manager(&pref_service, 0); 233 MetricsLogManager log_manager(&pref_service, 0);
235 log_manager.LoadPersistedUnsentLogs(); 234 log_manager.LoadPersistedUnsentLogs();
236 235
237 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( 236 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
238 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service))); 237 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
239 log_manager.FinishCurrentLog(); 238 log_manager.FinishCurrentLog();
240 log_manager.StageNextLogForUpload(); 239 log_manager.StageNextLogForUpload();
241 log_manager.StoreStagedLogAsUnsent(PersistedLogs::NORMAL_STORE);
242 log_manager.PersistUnsentLogs(); 240 log_manager.PersistUnsentLogs();
243 241
244 EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG)); 242 EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG));
245 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); 243 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
246 } 244 }
247 245
248 { 246 {
249 TestLogPrefService pref_service; 247 TestLogPrefService pref_service;
250 MetricsLogManager log_manager(&pref_service, 0); 248 MetricsLogManager log_manager(&pref_service, 0);
251 log_manager.LoadPersistedUnsentLogs(); 249 log_manager.LoadPersistedUnsentLogs();
252 250
253 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( 251 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
254 "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service))); 252 "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service)));
255 log_manager.FinishCurrentLog(); 253 log_manager.FinishCurrentLog();
256 log_manager.StageNextLogForUpload(); 254 log_manager.StageNextLogForUpload();
257 log_manager.StoreStagedLogAsUnsent(PersistedLogs::NORMAL_STORE);
258 log_manager.PersistUnsentLogs(); 255 log_manager.PersistUnsentLogs();
259 256
260 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG)); 257 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG));
261 EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); 258 EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
262 } 259 }
263 } 260 }
264 261
265 TEST(MetricsLogManagerTest, LargeLogDiscarding) { 262 TEST(MetricsLogManagerTest, LargeLogDiscarding) {
266 TestMetricsServiceClient client; 263 TestMetricsServiceClient client;
267 TestLogPrefService pref_service; 264 TestLogPrefService pref_service;
268 // Set the size threshold very low, to verify that it's honored. 265 // Set the size threshold very low, to verify that it's honored.
269 MetricsLogManager log_manager(&pref_service, 1); 266 MetricsLogManager log_manager(&pref_service, 1);
270 log_manager.LoadPersistedUnsentLogs(); 267 log_manager.LoadPersistedUnsentLogs();
271 268
272 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( 269 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
273 "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service))); 270 "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service)));
274 log_manager.FinishCurrentLog(); 271 log_manager.FinishCurrentLog();
275 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( 272 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
276 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service))); 273 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
277 log_manager.FinishCurrentLog(); 274 log_manager.FinishCurrentLog();
278 275
279 // Only the ongoing log should be written out, due to the threshold. 276 // Only the ongoing log should be written out, due to the threshold.
280 log_manager.PersistUnsentLogs(); 277 log_manager.PersistUnsentLogs();
281 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG)); 278 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG));
282 EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); 279 EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
283 } 280 }
284 281
285 TEST(MetricsLogManagerTest, ProvisionalStoreStandardFlow) { 282 TEST(MetricsLogManagerTest, DiscardOrder) {
283 // Ensure that the correct log is discarded if new logs are pushed while
284 // a log is staged.
286 TestMetricsServiceClient client; 285 TestMetricsServiceClient client;
287
288 // Ensure that provisional store works, and discards the correct log.
289 { 286 {
290 TestLogPrefService pref_service; 287 TestLogPrefService pref_service;
291 MetricsLogManager log_manager(&pref_service, 0); 288 MetricsLogManager log_manager(&pref_service, 0);
292 log_manager.LoadPersistedUnsentLogs(); 289 log_manager.LoadPersistedUnsentLogs();
293 290
294 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( 291 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
295 "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service))); 292 "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service)));
296 log_manager.FinishCurrentLog(); 293 log_manager.FinishCurrentLog();
297 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( 294 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
298 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service))); 295 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
299 log_manager.StageNextLogForUpload(); 296 log_manager.StageNextLogForUpload();
300 log_manager.StoreStagedLogAsUnsent(PersistedLogs::PROVISIONAL_STORE);
301 log_manager.FinishCurrentLog(); 297 log_manager.FinishCurrentLog();
302 log_manager.DiscardLastProvisionalStore(); 298 log_manager.DiscardStagedLog();
303 299
304 log_manager.PersistUnsentLogs(); 300 log_manager.PersistUnsentLogs();
305 EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG)); 301 EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG));
306 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); 302 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
307 } 303 }
308 } 304 }
309
310 TEST(MetricsLogManagerTest, ProvisionalStoreNoop) {
311 TestMetricsServiceClient client;
312
313 // Ensure that trying to drop a sent log is a no-op, even if another log has
314 // since been staged.
315 {
316 TestLogPrefService pref_service;
317 MetricsLogManager log_manager(&pref_service, 0);
318 log_manager.LoadPersistedUnsentLogs();
319
320 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
321 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
322 log_manager.FinishCurrentLog();
323 log_manager.StageNextLogForUpload();
324 log_manager.StoreStagedLogAsUnsent(PersistedLogs::PROVISIONAL_STORE);
325 log_manager.StageNextLogForUpload();
326 log_manager.DiscardStagedLog();
327 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
328 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
329 log_manager.FinishCurrentLog();
330 log_manager.StageNextLogForUpload();
331 log_manager.StoreStagedLogAsUnsent(PersistedLogs::NORMAL_STORE);
332 log_manager.DiscardLastProvisionalStore();
333
334 log_manager.PersistUnsentLogs();
335 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
336 }
337
338 // Ensure that trying to drop more than once is a no-op
339 {
340 TestLogPrefService pref_service;
341 MetricsLogManager log_manager(&pref_service, 0);
342 log_manager.LoadPersistedUnsentLogs();
343
344 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
345 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
346 log_manager.FinishCurrentLog();
347 log_manager.StageNextLogForUpload();
348 log_manager.StoreStagedLogAsUnsent(PersistedLogs::NORMAL_STORE);
349 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
350 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
351 log_manager.FinishCurrentLog();
352 log_manager.StageNextLogForUpload();
353 log_manager.StoreStagedLogAsUnsent(PersistedLogs::PROVISIONAL_STORE);
354 log_manager.DiscardLastProvisionalStore();
355 log_manager.DiscardLastProvisionalStore();
356
357 log_manager.PersistUnsentLogs();
358 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
359 }
360 }
361 305
362 } // namespace metrics 306 } // namespace metrics
OLDNEW
« no previous file with comments | « components/metrics/metrics_log_manager.cc ('k') | components/metrics/metrics_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698