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

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

Issue 318203004: Make MetricsService save compressed logs to local state. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 6 years, 6 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 | Annotate | Revision Log
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 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 TestLogPrefService pref_service; 153 TestLogPrefService pref_service;
154 // Set up some in-progress logging in a scoped log manager simulating the 154 // Set up some in-progress logging in a scoped log manager simulating the
155 // leadup to quitting, then persist as would be done on quit. 155 // leadup to quitting, then persist as would be done on quit.
156 { 156 {
157 MetricsLogManager log_manager(&pref_service, 0); 157 MetricsLogManager log_manager(&pref_service, 0);
158 log_manager.LoadPersistedUnsentLogs(); 158 log_manager.LoadPersistedUnsentLogs();
159 159
160 // Simulate a log having already been unsent from a previous session. 160 // Simulate a log having already been unsent from a previous session.
161 { 161 {
162 std::string log("proto"); 162 std::string log("proto");
163 metrics::PersistedLogs ongoing_logs( 163 PersistedLogs ongoing_logs(&pref_service, prefs::kMetricsOngoingLogs,
164 &pref_service, prefs::kMetricsOngoingLogs, 1, 1, 0); 164 prefs::kMetricsOngoingLogsOld, 1, 1, 0);
165 ongoing_logs.StoreLog(&log); 165 ongoing_logs.StoreLog(log);
166 ongoing_logs.SerializeLogs(); 166 ongoing_logs.SerializeLogs();
167 } 167 }
168 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); 168 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
169 EXPECT_FALSE(log_manager.has_unsent_logs()); 169 EXPECT_FALSE(log_manager.has_unsent_logs());
170 log_manager.LoadPersistedUnsentLogs(); 170 log_manager.LoadPersistedUnsentLogs();
171 EXPECT_TRUE(log_manager.has_unsent_logs()); 171 EXPECT_TRUE(log_manager.has_unsent_logs());
172 172
173 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( 173 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
174 "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service))); 174 "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service)));
175 log_manager.FinishCurrentLog(); 175 log_manager.FinishCurrentLog();
176 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( 176 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
177 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service))); 177 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
178 log_manager.StageNextLogForUpload(); 178 log_manager.StageNextLogForUpload();
179 log_manager.StoreStagedLogAsUnsent(metrics::PersistedLogs::NORMAL_STORE); 179 log_manager.StoreStagedLogAsUnsent(PersistedLogs::NORMAL_STORE);
180 log_manager.FinishCurrentLog(); 180 log_manager.FinishCurrentLog();
181 181
182 // Nothing should be written out until PersistUnsentLogs is called. 182 // Nothing should be written out until PersistUnsentLogs is called.
183 EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG)); 183 EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG));
184 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); 184 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
185 log_manager.PersistUnsentLogs(); 185 log_manager.PersistUnsentLogs();
186 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG)); 186 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG));
187 EXPECT_EQ(2U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); 187 EXPECT_EQ(2U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
188 } 188 }
189 189
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 // Ensure that types are preserved when storing staged logs. 229 // Ensure that types are preserved when storing staged logs.
230 { 230 {
231 TestLogPrefService pref_service; 231 TestLogPrefService pref_service;
232 MetricsLogManager log_manager(&pref_service, 0); 232 MetricsLogManager log_manager(&pref_service, 0);
233 log_manager.LoadPersistedUnsentLogs(); 233 log_manager.LoadPersistedUnsentLogs();
234 234
235 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( 235 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
236 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service))); 236 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
237 log_manager.FinishCurrentLog(); 237 log_manager.FinishCurrentLog();
238 log_manager.StageNextLogForUpload(); 238 log_manager.StageNextLogForUpload();
239 log_manager.StoreStagedLogAsUnsent(metrics::PersistedLogs::NORMAL_STORE); 239 log_manager.StoreStagedLogAsUnsent(PersistedLogs::NORMAL_STORE);
240 log_manager.PersistUnsentLogs(); 240 log_manager.PersistUnsentLogs();
241 241
242 EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG)); 242 EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG));
243 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); 243 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
244 } 244 }
245 245
246 { 246 {
247 TestLogPrefService pref_service; 247 TestLogPrefService pref_service;
248 MetricsLogManager log_manager(&pref_service, 0); 248 MetricsLogManager log_manager(&pref_service, 0);
249 log_manager.LoadPersistedUnsentLogs(); 249 log_manager.LoadPersistedUnsentLogs();
250 250
251 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( 251 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
252 "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service))); 252 "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service)));
253 log_manager.FinishCurrentLog(); 253 log_manager.FinishCurrentLog();
254 log_manager.StageNextLogForUpload(); 254 log_manager.StageNextLogForUpload();
255 log_manager.StoreStagedLogAsUnsent(metrics::PersistedLogs::NORMAL_STORE); 255 log_manager.StoreStagedLogAsUnsent(PersistedLogs::NORMAL_STORE);
256 log_manager.PersistUnsentLogs(); 256 log_manager.PersistUnsentLogs();
257 257
258 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG)); 258 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG));
259 EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); 259 EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
260 } 260 }
261 } 261 }
262 262
263 TEST(MetricsLogManagerTest, LargeLogDiscarding) { 263 TEST(MetricsLogManagerTest, LargeLogDiscarding) {
264 TestMetricsServiceClient client; 264 TestMetricsServiceClient client;
265 TestLogPrefService pref_service; 265 TestLogPrefService pref_service;
(...skipping 22 matching lines...) Expand all
288 TestLogPrefService pref_service; 288 TestLogPrefService pref_service;
289 MetricsLogManager log_manager(&pref_service, 0); 289 MetricsLogManager log_manager(&pref_service, 0);
290 log_manager.LoadPersistedUnsentLogs(); 290 log_manager.LoadPersistedUnsentLogs();
291 291
292 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( 292 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
293 "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service))); 293 "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service)));
294 log_manager.FinishCurrentLog(); 294 log_manager.FinishCurrentLog();
295 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( 295 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
296 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service))); 296 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
297 log_manager.StageNextLogForUpload(); 297 log_manager.StageNextLogForUpload();
298 log_manager.StoreStagedLogAsUnsent( 298 log_manager.StoreStagedLogAsUnsent(PersistedLogs::PROVISIONAL_STORE);
299 metrics::PersistedLogs::PROVISIONAL_STORE);
300 log_manager.FinishCurrentLog(); 299 log_manager.FinishCurrentLog();
301 log_manager.DiscardLastProvisionalStore(); 300 log_manager.DiscardLastProvisionalStore();
302 301
303 log_manager.PersistUnsentLogs(); 302 log_manager.PersistUnsentLogs();
304 EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG)); 303 EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG));
305 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); 304 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
306 } 305 }
307 } 306 }
308 307
309 TEST(MetricsLogManagerTest, ProvisionalStoreNoop) { 308 TEST(MetricsLogManagerTest, ProvisionalStoreNoop) {
310 TestMetricsServiceClient client; 309 TestMetricsServiceClient client;
311 310
312 // Ensure that trying to drop a sent log is a no-op, even if another log has 311 // Ensure that trying to drop a sent log is a no-op, even if another log has
313 // since been staged. 312 // since been staged.
314 { 313 {
315 TestLogPrefService pref_service; 314 TestLogPrefService pref_service;
316 MetricsLogManager log_manager(&pref_service, 0); 315 MetricsLogManager log_manager(&pref_service, 0);
317 log_manager.LoadPersistedUnsentLogs(); 316 log_manager.LoadPersistedUnsentLogs();
318 317
319 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( 318 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
320 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service))); 319 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
321 log_manager.FinishCurrentLog(); 320 log_manager.FinishCurrentLog();
322 log_manager.StageNextLogForUpload(); 321 log_manager.StageNextLogForUpload();
323 log_manager.StoreStagedLogAsUnsent( 322 log_manager.StoreStagedLogAsUnsent(PersistedLogs::PROVISIONAL_STORE);
324 metrics::PersistedLogs::PROVISIONAL_STORE);
325 log_manager.StageNextLogForUpload(); 323 log_manager.StageNextLogForUpload();
326 log_manager.DiscardStagedLog(); 324 log_manager.DiscardStagedLog();
327 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( 325 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
328 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service))); 326 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
329 log_manager.FinishCurrentLog(); 327 log_manager.FinishCurrentLog();
330 log_manager.StageNextLogForUpload(); 328 log_manager.StageNextLogForUpload();
331 log_manager.StoreStagedLogAsUnsent(metrics::PersistedLogs::NORMAL_STORE); 329 log_manager.StoreStagedLogAsUnsent(PersistedLogs::NORMAL_STORE);
332 log_manager.DiscardLastProvisionalStore(); 330 log_manager.DiscardLastProvisionalStore();
333 331
334 log_manager.PersistUnsentLogs(); 332 log_manager.PersistUnsentLogs();
335 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); 333 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
336 } 334 }
337 335
338 // Ensure that trying to drop more than once is a no-op 336 // Ensure that trying to drop more than once is a no-op
339 { 337 {
340 TestLogPrefService pref_service; 338 TestLogPrefService pref_service;
341 MetricsLogManager log_manager(&pref_service, 0); 339 MetricsLogManager log_manager(&pref_service, 0);
342 log_manager.LoadPersistedUnsentLogs(); 340 log_manager.LoadPersistedUnsentLogs();
343 341
344 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( 342 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
345 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service))); 343 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
346 log_manager.FinishCurrentLog(); 344 log_manager.FinishCurrentLog();
347 log_manager.StageNextLogForUpload(); 345 log_manager.StageNextLogForUpload();
348 log_manager.StoreStagedLogAsUnsent(metrics::PersistedLogs::NORMAL_STORE); 346 log_manager.StoreStagedLogAsUnsent(PersistedLogs::NORMAL_STORE);
349 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( 347 log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
350 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service))); 348 "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
351 log_manager.FinishCurrentLog(); 349 log_manager.FinishCurrentLog();
352 log_manager.StageNextLogForUpload(); 350 log_manager.StageNextLogForUpload();
353 log_manager.StoreStagedLogAsUnsent( 351 log_manager.StoreStagedLogAsUnsent(PersistedLogs::PROVISIONAL_STORE);
354 metrics::PersistedLogs::PROVISIONAL_STORE);
355 log_manager.DiscardLastProvisionalStore(); 352 log_manager.DiscardLastProvisionalStore();
356 log_manager.DiscardLastProvisionalStore(); 353 log_manager.DiscardLastProvisionalStore();
357 354
358 log_manager.PersistUnsentLogs(); 355 log_manager.PersistUnsentLogs();
359 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); 356 EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
360 } 357 }
361 } 358 }
362 359
363 } // namespace metrics 360 } // namespace metrics
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698