log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
"id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
log_manager.StageNextLogForUpload();
- log_manager.StoreStagedLogAsUnsent(PersistedLogs::NORMAL_STORE);
log_manager.FinishCurrentLog();
// Nothing should be written out until PersistUnsentLogs is called.
"id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
log_manager.FinishCurrentLog();
log_manager.StageNextLogForUpload();
- log_manager.StoreStagedLogAsUnsent(PersistedLogs::NORMAL_STORE);
log_manager.PersistUnsentLogs();
EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG));
"id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service)));
log_manager.FinishCurrentLog();
log_manager.StageNextLogForUpload();
- log_manager.StoreStagedLogAsUnsent(PersistedLogs::NORMAL_STORE);
log_manager.PersistUnsentLogs();
EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG));
EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
}
-TEST(MetricsLogManagerTest, ProvisionalStoreStandardFlow) {
+TEST(MetricsLogManagerTest, DiscardOrder) {
+ // Ensure that the correct log is discarded if new logs are pushed while
+ // a log is staged.
TestMetricsServiceClient client;
-
- // Ensure that provisional store works, and discards the correct log.
{
TestLogPrefService pref_service;
MetricsLogManager log_manager(&pref_service, 0);
log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
"id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
log_manager.StageNextLogForUpload();
- log_manager.StoreStagedLogAsUnsent(PersistedLogs::PROVISIONAL_STORE);
log_manager.FinishCurrentLog();
- log_manager.DiscardLastProvisionalStore();
-
- log_manager.PersistUnsentLogs();
- EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG));
- EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
- }
-}
-
-TEST(MetricsLogManagerTest, ProvisionalStoreNoop) {
- TestMetricsServiceClient client;
-
- // Ensure that trying to drop a sent log is a no-op, even if another log has
- // since been staged.
- {
- TestLogPrefService pref_service;
- MetricsLogManager log_manager(&pref_service, 0);
- log_manager.LoadPersistedUnsentLogs();
-
- log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
- "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
- log_manager.FinishCurrentLog();
- log_manager.StageNextLogForUpload();
- log_manager.StoreStagedLogAsUnsent(PersistedLogs::PROVISIONAL_STORE);
- log_manager.StageNextLogForUpload();
log_manager.DiscardStagedLog();
- log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
- "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
- log_manager.FinishCurrentLog();
- log_manager.StageNextLogForUpload();
- log_manager.StoreStagedLogAsUnsent(PersistedLogs::NORMAL_STORE);
- log_manager.DiscardLastProvisionalStore();
-
- log_manager.PersistUnsentLogs();
- EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
- }
-
- // Ensure that trying to drop more than once is a no-op
- {
- TestLogPrefService pref_service;
- MetricsLogManager log_manager(&pref_service, 0);
- log_manager.LoadPersistedUnsentLogs();
-
- log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
- "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
- log_manager.FinishCurrentLog();
- log_manager.StageNextLogForUpload();
- log_manager.StoreStagedLogAsUnsent(PersistedLogs::NORMAL_STORE);
- log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog(
- "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service)));
- log_manager.FinishCurrentLog();
- log_manager.StageNextLogForUpload();
- log_manager.StoreStagedLogAsUnsent(PersistedLogs::PROVISIONAL_STORE);
- log_manager.DiscardLastProvisionalStore();
- log_manager.DiscardLastProvisionalStore();
log_manager.PersistUnsentLogs();
+ EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG));
EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG));
}
}