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

Side by Side Diff: chrome/common/metrics/metrics_log_manager_unittest.cc

Issue 10546044: [Metrics] Re-try failed protocol buffer uploads as well as failed XML uploads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Revert DiscardStagedLog() visibility change Created 8 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
« no previous file with comments | « chrome/common/metrics/metrics_log_manager.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 <string> 5 #include <string>
6 #include <utility> 6 #include <utility>
7 #include <vector> 7 #include <vector>
8 8
9 #include "chrome/common/metrics/metrics_log_base.h" 9 #include "chrome/common/metrics/metrics_log_base.h"
10 #include "chrome/common/metrics/metrics_log_manager.h" 10 #include "chrome/common/metrics/metrics_log_manager.h"
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 EXPECT_FALSE(log_manager.has_staged_log()); 62 EXPECT_FALSE(log_manager.has_staged_log());
63 63
64 MetricsLogBase* second_log = new MetricsLogBase("id", 0, "version"); 64 MetricsLogBase* second_log = new MetricsLogBase("id", 0, "version");
65 log_manager.BeginLoggingWithLog(second_log, MetricsLogManager::ONGOING_LOG); 65 log_manager.BeginLoggingWithLog(second_log, MetricsLogManager::ONGOING_LOG);
66 EXPECT_EQ(second_log, log_manager.current_log()); 66 EXPECT_EQ(second_log, log_manager.current_log());
67 67
68 log_manager.StageNextLogForUpload(); 68 log_manager.StageNextLogForUpload();
69 EXPECT_TRUE(log_manager.has_staged_log()); 69 EXPECT_TRUE(log_manager.has_staged_log());
70 EXPECT_FALSE(log_manager.staged_log_text().empty()); 70 EXPECT_FALSE(log_manager.staged_log_text().empty());
71 71
72 log_manager.DiscardStagedLog(); 72 log_manager.DiscardStagedLogXml();
73 log_manager.DiscardStagedLogProto();
73 EXPECT_EQ(second_log, log_manager.current_log()); 74 EXPECT_EQ(second_log, log_manager.current_log());
74 EXPECT_FALSE(log_manager.has_staged_log()); 75 EXPECT_FALSE(log_manager.has_staged_log());
75 EXPECT_FALSE(log_manager.has_unsent_logs()); 76 EXPECT_FALSE(log_manager.has_unsent_logs());
76 EXPECT_TRUE(log_manager.staged_log_text().empty()); 77 EXPECT_TRUE(log_manager.staged_log_text().empty());
77 78
78 EXPECT_FALSE(log_manager.has_unsent_logs()); 79 EXPECT_FALSE(log_manager.has_unsent_logs());
79 } 80 }
80 81
81 TEST(MetricsLogManagerTest, AbandonedLog) { 82 TEST(MetricsLogManagerTest, AbandonedLog) {
82 MetricsLogManager log_manager; 83 MetricsLogManager log_manager;
(...skipping 22 matching lines...) Expand all
105 log_manager.BeginLoggingWithLog(temp_log, MetricsLogManager::INITIAL_LOG); 106 log_manager.BeginLoggingWithLog(temp_log, MetricsLogManager::INITIAL_LOG);
106 EXPECT_EQ(temp_log, log_manager.current_log()); 107 EXPECT_EQ(temp_log, log_manager.current_log());
107 log_manager.FinishCurrentLog(); 108 log_manager.FinishCurrentLog();
108 EXPECT_EQ(NULL, log_manager.current_log()); 109 EXPECT_EQ(NULL, log_manager.current_log());
109 110
110 log_manager.ResumePausedLog(); 111 log_manager.ResumePausedLog();
111 EXPECT_EQ(ongoing_log, log_manager.current_log()); 112 EXPECT_EQ(ongoing_log, log_manager.current_log());
112 113
113 EXPECT_FALSE(log_manager.has_staged_log()); 114 EXPECT_FALSE(log_manager.has_staged_log());
114 log_manager.StageNextLogForUpload(); 115 log_manager.StageNextLogForUpload();
115 log_manager.DiscardStagedLog(); 116 log_manager.DiscardStagedLogXml();
117 log_manager.DiscardStagedLogProto();
116 EXPECT_FALSE(log_manager.has_unsent_logs()); 118 EXPECT_FALSE(log_manager.has_unsent_logs());
117 } 119 }
118 120
119 TEST(MetricsLogManagerTest, InterjectedLogPreservesType) { 121 TEST(MetricsLogManagerTest, InterjectedLogPreservesType) {
120 MetricsLogManager log_manager; 122 MetricsLogManager log_manager;
121 123
122 MetricsLogBase* ongoing_log = new MetricsLogBase("id", 0, "version"); 124 MetricsLogBase* ongoing_log = new MetricsLogBase("id", 0, "version");
123 MetricsLogBase* temp_log = new MetricsLogBase("id", 0, "version"); 125 MetricsLogBase* temp_log = new MetricsLogBase("id", 0, "version");
124 126
125 log_manager.BeginLoggingWithLog(ongoing_log, MetricsLogManager::ONGOING_LOG); 127 log_manager.BeginLoggingWithLog(ongoing_log, MetricsLogManager::ONGOING_LOG);
126 log_manager.PauseCurrentLog(); 128 log_manager.PauseCurrentLog();
127 log_manager.BeginLoggingWithLog(temp_log, MetricsLogManager::INITIAL_LOG); 129 log_manager.BeginLoggingWithLog(temp_log, MetricsLogManager::INITIAL_LOG);
128 log_manager.FinishCurrentLog(); 130 log_manager.FinishCurrentLog();
129 log_manager.ResumePausedLog(); 131 log_manager.ResumePausedLog();
130 log_manager.StageNextLogForUpload(); 132 log_manager.StageNextLogForUpload();
131 log_manager.DiscardStagedLog(); 133 log_manager.DiscardStagedLogXml();
134 log_manager.DiscardStagedLogProto();
132 135
133 // Verify that the remaining log (which is the original ongoing log) still 136 // Verify that the remaining log (which is the original ongoing log) still
134 // has the right type. 137 // has the right type.
135 DummyLogSerializer* serializer = new DummyLogSerializer; 138 DummyLogSerializer* serializer = new DummyLogSerializer;
136 log_manager.set_log_serializer(serializer); 139 log_manager.set_log_serializer(serializer);
137 log_manager.FinishCurrentLog(); 140 log_manager.FinishCurrentLog();
138 log_manager.PersistUnsentLogs(); 141 log_manager.PersistUnsentLogs();
139 EXPECT_EQ(0U, serializer->TypeCount(MetricsLogManager::INITIAL_LOG)); 142 EXPECT_EQ(0U, serializer->TypeCount(MetricsLogManager::INITIAL_LOG));
140 EXPECT_EQ(1U, serializer->TypeCount(MetricsLogManager::ONGOING_LOG)); 143 EXPECT_EQ(1U, serializer->TypeCount(MetricsLogManager::ONGOING_LOG));
141 } 144 }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 190
188 DummyLogSerializer* serializer = new DummyLogSerializer; 191 DummyLogSerializer* serializer = new DummyLogSerializer;
189 serializer->persisted_logs_[MetricsLogManager::INITIAL_LOG] = initial_logs; 192 serializer->persisted_logs_[MetricsLogManager::INITIAL_LOG] = initial_logs;
190 serializer->persisted_logs_[MetricsLogManager::ONGOING_LOG] = ongoing_logs; 193 serializer->persisted_logs_[MetricsLogManager::ONGOING_LOG] = ongoing_logs;
191 194
192 log_manager.set_log_serializer(serializer); 195 log_manager.set_log_serializer(serializer);
193 log_manager.LoadPersistedUnsentLogs(); 196 log_manager.LoadPersistedUnsentLogs();
194 EXPECT_TRUE(log_manager.has_unsent_logs()); 197 EXPECT_TRUE(log_manager.has_unsent_logs());
195 198
196 log_manager.StageNextLogForUpload(); 199 log_manager.StageNextLogForUpload();
197 log_manager.DiscardStagedLog(); 200 log_manager.DiscardStagedLogXml();
201 log_manager.DiscardStagedLogProto();
198 // The initial log should be sent first; update the persisted storage to 202 // The initial log should be sent first; update the persisted storage to
199 // verify. 203 // verify.
200 log_manager.PersistUnsentLogs(); 204 log_manager.PersistUnsentLogs();
201 EXPECT_EQ(0U, serializer->TypeCount(MetricsLogManager::INITIAL_LOG)); 205 EXPECT_EQ(0U, serializer->TypeCount(MetricsLogManager::INITIAL_LOG));
202 EXPECT_EQ(2U, serializer->TypeCount(MetricsLogManager::ONGOING_LOG)); 206 EXPECT_EQ(2U, serializer->TypeCount(MetricsLogManager::ONGOING_LOG));
203 207
204 // Handle the first ongoing log. 208 // Handle the first ongoing log.
205 log_manager.StageNextLogForUpload(); 209 log_manager.StageNextLogForUpload();
206 log_manager.DiscardStagedLog(); 210 log_manager.DiscardStagedLogXml();
211 log_manager.DiscardStagedLogProto();
207 EXPECT_TRUE(log_manager.has_unsent_logs()); 212 EXPECT_TRUE(log_manager.has_unsent_logs());
208 213
209 // Handle the last log. 214 // Handle the last log.
210 log_manager.StageNextLogForUpload(); 215 log_manager.StageNextLogForUpload();
211 log_manager.DiscardStagedLog(); 216 log_manager.DiscardStagedLogXml();
217 log_manager.DiscardStagedLogProto();
212 EXPECT_FALSE(log_manager.has_unsent_logs()); 218 EXPECT_FALSE(log_manager.has_unsent_logs());
213 219
214 // Nothing should have changed "on disk" since PersistUnsentLogs hasn't been 220 // Nothing should have changed "on disk" since PersistUnsentLogs hasn't been
215 // called again. 221 // called again.
216 EXPECT_EQ(2U, serializer->TypeCount(MetricsLogManager::ONGOING_LOG)); 222 EXPECT_EQ(2U, serializer->TypeCount(MetricsLogManager::ONGOING_LOG));
217 // Persist, and make sure nothing is left. 223 // Persist, and make sure nothing is left.
218 log_manager.PersistUnsentLogs(); 224 log_manager.PersistUnsentLogs();
219 EXPECT_EQ(0U, serializer->TypeCount(MetricsLogManager::INITIAL_LOG)); 225 EXPECT_EQ(0U, serializer->TypeCount(MetricsLogManager::INITIAL_LOG));
220 EXPECT_EQ(0U, serializer->TypeCount(MetricsLogManager::ONGOING_LOG)); 226 EXPECT_EQ(0U, serializer->TypeCount(MetricsLogManager::ONGOING_LOG));
221 } 227 }
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 // since been staged. 309 // since been staged.
304 { 310 {
305 MetricsLogManager log_manager; 311 MetricsLogManager log_manager;
306 MetricsLogBase* log1 = new MetricsLogBase("id", 0, "version"); 312 MetricsLogBase* log1 = new MetricsLogBase("id", 0, "version");
307 MetricsLogBase* log2 = new MetricsLogBase("id", 0, "version"); 313 MetricsLogBase* log2 = new MetricsLogBase("id", 0, "version");
308 log_manager.BeginLoggingWithLog(log1, MetricsLogManager::ONGOING_LOG); 314 log_manager.BeginLoggingWithLog(log1, MetricsLogManager::ONGOING_LOG);
309 log_manager.FinishCurrentLog(); 315 log_manager.FinishCurrentLog();
310 log_manager.StageNextLogForUpload(); 316 log_manager.StageNextLogForUpload();
311 log_manager.StoreStagedLogAsUnsent(MetricsLogManager::PROVISIONAL_STORE); 317 log_manager.StoreStagedLogAsUnsent(MetricsLogManager::PROVISIONAL_STORE);
312 log_manager.StageNextLogForUpload(); 318 log_manager.StageNextLogForUpload();
313 log_manager.DiscardStagedLog(); 319 log_manager.DiscardStagedLogXml();
320 log_manager.DiscardStagedLogProto();
314 log_manager.BeginLoggingWithLog(log2, MetricsLogManager::ONGOING_LOG); 321 log_manager.BeginLoggingWithLog(log2, MetricsLogManager::ONGOING_LOG);
315 log_manager.FinishCurrentLog(); 322 log_manager.FinishCurrentLog();
316 log_manager.StageNextLogForUpload(); 323 log_manager.StageNextLogForUpload();
317 log_manager.StoreStagedLogAsUnsent(MetricsLogManager::NORMAL_STORE); 324 log_manager.StoreStagedLogAsUnsent(MetricsLogManager::NORMAL_STORE);
318 log_manager.DiscardLastProvisionalStore(); 325 log_manager.DiscardLastProvisionalStore();
319 326
320 DummyLogSerializer* serializer = new DummyLogSerializer; 327 DummyLogSerializer* serializer = new DummyLogSerializer;
321 log_manager.set_log_serializer(serializer); 328 log_manager.set_log_serializer(serializer);
322 log_manager.PersistUnsentLogs(); 329 log_manager.PersistUnsentLogs();
323 EXPECT_EQ(1U, serializer->TypeCount(MetricsLogManager::ONGOING_LOG)); 330 EXPECT_EQ(1U, serializer->TypeCount(MetricsLogManager::ONGOING_LOG));
(...skipping 14 matching lines...) Expand all
338 log_manager.StoreStagedLogAsUnsent(MetricsLogManager::PROVISIONAL_STORE); 345 log_manager.StoreStagedLogAsUnsent(MetricsLogManager::PROVISIONAL_STORE);
339 log_manager.DiscardLastProvisionalStore(); 346 log_manager.DiscardLastProvisionalStore();
340 log_manager.DiscardLastProvisionalStore(); 347 log_manager.DiscardLastProvisionalStore();
341 348
342 DummyLogSerializer* serializer = new DummyLogSerializer; 349 DummyLogSerializer* serializer = new DummyLogSerializer;
343 log_manager.set_log_serializer(serializer); 350 log_manager.set_log_serializer(serializer);
344 log_manager.PersistUnsentLogs(); 351 log_manager.PersistUnsentLogs();
345 EXPECT_EQ(1U, serializer->TypeCount(MetricsLogManager::ONGOING_LOG)); 352 EXPECT_EQ(1U, serializer->TypeCount(MetricsLogManager::ONGOING_LOG));
346 } 353 }
347 } 354 }
355
356 // Test that discarding just the XML log, then the protobuf log, works.
357 TEST(MetricsLogManagerTest, DiscardXmlLogFirst) {
358 MetricsLogManager log_manager;
359 EXPECT_FALSE(log_manager.has_staged_log());
360 EXPECT_FALSE(log_manager.has_staged_log_xml());
361 EXPECT_FALSE(log_manager.has_staged_log_proto());
362
363 MetricsLogBase* initial_log = new MetricsLogBase("id", 0, "version");
364 log_manager.BeginLoggingWithLog(initial_log, MetricsLogManager::INITIAL_LOG);
365 log_manager.FinishCurrentLog();
366 EXPECT_FALSE(log_manager.has_staged_log());
367 EXPECT_FALSE(log_manager.has_staged_log_xml());
368 EXPECT_FALSE(log_manager.has_staged_log_proto());
369
370 log_manager.StageNextLogForUpload();
371 EXPECT_TRUE(log_manager.has_staged_log());
372 EXPECT_TRUE(log_manager.has_staged_log_xml());
373 EXPECT_TRUE(log_manager.has_staged_log_proto());
374 EXPECT_FALSE(log_manager.staged_log_text().empty());
375
376 log_manager.DiscardStagedLogXml();
377 EXPECT_TRUE(log_manager.has_staged_log());
378 EXPECT_FALSE(log_manager.has_staged_log_xml());
379 EXPECT_TRUE(log_manager.has_staged_log_proto());
380 EXPECT_FALSE(log_manager.staged_log_text().empty());
381
382 log_manager.DiscardStagedLogProto();
383 EXPECT_FALSE(log_manager.has_staged_log());
384 EXPECT_FALSE(log_manager.has_staged_log_xml());
385 EXPECT_FALSE(log_manager.has_staged_log_proto());
386 EXPECT_TRUE(log_manager.staged_log_text().empty());
387 }
388
389 // Test that discarding just the protobuf log, then the XML log, works.
390 TEST(MetricsLogManagerTest, DiscardProtoLogFirst) {
391 MetricsLogManager log_manager;
392 EXPECT_FALSE(log_manager.has_staged_log());
393 EXPECT_FALSE(log_manager.has_staged_log_xml());
394 EXPECT_FALSE(log_manager.has_staged_log_proto());
395
396 MetricsLogBase* initial_log = new MetricsLogBase("id", 0, "version");
397 log_manager.BeginLoggingWithLog(initial_log, MetricsLogManager::INITIAL_LOG);
398 log_manager.FinishCurrentLog();
399 EXPECT_FALSE(log_manager.has_staged_log());
400 EXPECT_FALSE(log_manager.has_staged_log_xml());
401 EXPECT_FALSE(log_manager.has_staged_log_proto());
402
403 log_manager.StageNextLogForUpload();
404 EXPECT_TRUE(log_manager.has_staged_log());
405 EXPECT_TRUE(log_manager.has_staged_log_xml());
406 EXPECT_TRUE(log_manager.has_staged_log_proto());
407 EXPECT_FALSE(log_manager.staged_log_text().empty());
408
409 log_manager.DiscardStagedLogProto();
410 EXPECT_TRUE(log_manager.has_staged_log());
411 EXPECT_TRUE(log_manager.has_staged_log_xml());
412 EXPECT_FALSE(log_manager.has_staged_log_proto());
413 EXPECT_FALSE(log_manager.staged_log_text().empty());
414
415 log_manager.DiscardStagedLogXml();
416 EXPECT_FALSE(log_manager.has_staged_log());
417 EXPECT_FALSE(log_manager.has_staged_log_xml());
418 EXPECT_FALSE(log_manager.has_staged_log_proto());
419 EXPECT_TRUE(log_manager.staged_log_text().empty());
420 }
OLDNEW
« no previous file with comments | « chrome/common/metrics/metrics_log_manager.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698