Index: components/metrics/metrics_log_manager_unittest.cc |
=================================================================== |
--- components/metrics/metrics_log_manager_unittest.cc (revision 275424) |
+++ components/metrics/metrics_log_manager_unittest.cc (working copy) |
@@ -10,8 +10,9 @@ |
#include "base/prefs/pref_registry_simple.h" |
#include "base/prefs/testing_pref_service.h" |
-#include "components/metrics/metrics_log_base.h" |
+#include "components/metrics/metrics_log.h" |
#include "components/metrics/metrics_pref_names.h" |
+#include "components/metrics/test_metrics_service_client.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace metrics { |
@@ -25,10 +26,11 @@ |
registry()->RegisterListPref(prefs::kMetricsInitialLogs); |
registry()->RegisterListPref(prefs::kMetricsOngoingLogs); |
} |
+ |
// Returns the number of logs of the given type. |
- size_t TypeCount(MetricsLogManager::LogType log_type) { |
+ size_t TypeCount(MetricsLog::LogType log_type) { |
int list_length = 0; |
- if (log_type == MetricsLogBase::INITIAL_STABILITY_LOG) |
+ if (log_type == MetricsLog::INITIAL_STABILITY_LOG) |
list_length = GetList(prefs::kMetricsInitialLogs)->GetSize(); |
else |
list_length = GetList(prefs::kMetricsOngoingLogs)->GetSize(); |
@@ -39,6 +41,7 @@ |
} // namespace |
TEST(MetricsLogManagerTest, StandardFlow) { |
+ TestMetricsServiceClient client; |
TestLogPrefService pref_service; |
MetricsLogManager log_manager(&pref_service, 0); |
@@ -48,8 +51,8 @@ |
EXPECT_FALSE(log_manager.has_unsent_logs()); |
// Check that the normal flow works. |
- MetricsLogBase* initial_log = |
- new MetricsLogBase("id", 0, MetricsLogBase::INITIAL_STABILITY_LOG, "v"); |
+ MetricsLog* initial_log = new MetricsLog( |
+ "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service); |
log_manager.BeginLoggingWithLog(make_scoped_ptr(initial_log)); |
EXPECT_EQ(initial_log, log_manager.current_log()); |
EXPECT_FALSE(log_manager.has_staged_log()); |
@@ -59,8 +62,8 @@ |
EXPECT_TRUE(log_manager.has_unsent_logs()); |
EXPECT_FALSE(log_manager.has_staged_log()); |
- MetricsLogBase* second_log = |
- new MetricsLogBase("id", 0, MetricsLogBase::ONGOING_LOG, "version"); |
+ MetricsLog* second_log = |
+ new MetricsLog("id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service); |
log_manager.BeginLoggingWithLog(make_scoped_ptr(second_log)); |
EXPECT_EQ(second_log, log_manager.current_log()); |
@@ -77,11 +80,12 @@ |
} |
TEST(MetricsLogManagerTest, AbandonedLog) { |
+ TestMetricsServiceClient client; |
TestLogPrefService pref_service; |
MetricsLogManager log_manager(&pref_service, 0); |
- MetricsLogBase* dummy_log = |
- new MetricsLogBase("id", 0, MetricsLogBase::INITIAL_STABILITY_LOG, "v"); |
+ MetricsLog* dummy_log = new MetricsLog( |
+ "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service); |
log_manager.BeginLoggingWithLog(make_scoped_ptr(dummy_log)); |
EXPECT_EQ(dummy_log, log_manager.current_log()); |
@@ -91,13 +95,14 @@ |
} |
TEST(MetricsLogManagerTest, InterjectedLog) { |
+ TestMetricsServiceClient client; |
TestLogPrefService pref_service; |
MetricsLogManager log_manager(&pref_service, 0); |
- MetricsLogBase* ongoing_log = |
- new MetricsLogBase("id", 0, MetricsLogBase::ONGOING_LOG, "v"); |
- MetricsLogBase* temp_log = |
- new MetricsLogBase("id", 0, MetricsLogBase::INITIAL_STABILITY_LOG, "v"); |
+ MetricsLog* ongoing_log = |
+ new MetricsLog("id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service); |
+ MetricsLog* temp_log = new MetricsLog( |
+ "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service); |
log_manager.BeginLoggingWithLog(make_scoped_ptr(ongoing_log)); |
EXPECT_EQ(ongoing_log, log_manager.current_log()); |
@@ -120,15 +125,16 @@ |
} |
TEST(MetricsLogManagerTest, InterjectedLogPreservesType) { |
+ TestMetricsServiceClient client; |
TestLogPrefService pref_service; |
MetricsLogManager log_manager(&pref_service, 0); |
log_manager.LoadPersistedUnsentLogs(); |
- log_manager.BeginLoggingWithLog(make_scoped_ptr( |
- new MetricsLogBase("id", 0, MetricsLogBase::ONGOING_LOG, "v"))); |
+ log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( |
+ "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service))); |
log_manager.PauseCurrentLog(); |
- log_manager.BeginLoggingWithLog(make_scoped_ptr( |
- new MetricsLogBase("id", 0, MetricsLogBase::INITIAL_STABILITY_LOG, "v"))); |
+ log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( |
+ "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service))); |
log_manager.FinishCurrentLog(); |
log_manager.ResumePausedLog(); |
log_manager.StageNextLogForUpload(); |
@@ -138,11 +144,12 @@ |
// has the right type. |
log_manager.FinishCurrentLog(); |
log_manager.PersistUnsentLogs(); |
- EXPECT_EQ(0U, pref_service.TypeCount(MetricsLogBase::INITIAL_STABILITY_LOG)); |
- EXPECT_EQ(1U, pref_service.TypeCount(MetricsLogBase::ONGOING_LOG)); |
+ EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG)); |
+ EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); |
} |
TEST(MetricsLogManagerTest, StoreAndLoad) { |
+ TestMetricsServiceClient client; |
TestLogPrefService pref_service; |
// Set up some in-progress logging in a scoped log manager simulating the |
// leadup to quitting, then persist as would be done on quit. |
@@ -158,28 +165,26 @@ |
ongoing_logs.StoreLog(&log); |
ongoing_logs.SerializeLogs(); |
} |
- EXPECT_EQ(1U, pref_service.TypeCount(MetricsLogBase::ONGOING_LOG)); |
+ EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); |
EXPECT_FALSE(log_manager.has_unsent_logs()); |
log_manager.LoadPersistedUnsentLogs(); |
EXPECT_TRUE(log_manager.has_unsent_logs()); |
- log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLogBase( |
- "id", 0, MetricsLogBase::INITIAL_STABILITY_LOG, "v"))); |
+ log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( |
+ "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service))); |
log_manager.FinishCurrentLog(); |
- log_manager.BeginLoggingWithLog(make_scoped_ptr( |
- new MetricsLogBase("id", 0, MetricsLogBase::ONGOING_LOG, "v"))); |
+ log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( |
+ "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service))); |
log_manager.StageNextLogForUpload(); |
log_manager.StoreStagedLogAsUnsent(metrics::PersistedLogs::NORMAL_STORE); |
log_manager.FinishCurrentLog(); |
// Nothing should be written out until PersistUnsentLogs is called. |
- EXPECT_EQ(0U, pref_service.TypeCount( |
- MetricsLogBase::INITIAL_STABILITY_LOG)); |
- EXPECT_EQ(1U, pref_service.TypeCount(MetricsLogBase::ONGOING_LOG)); |
+ EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG)); |
+ EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); |
log_manager.PersistUnsentLogs(); |
- EXPECT_EQ(1U, pref_service.TypeCount( |
- MetricsLogBase::INITIAL_STABILITY_LOG)); |
- EXPECT_EQ(2U, pref_service.TypeCount(MetricsLogBase::ONGOING_LOG)); |
+ EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG)); |
+ EXPECT_EQ(2U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); |
} |
// Now simulate the relaunch, ensure that the log manager restores |
@@ -195,9 +200,8 @@ |
// The initial log should be sent first; update the persisted storage to |
// verify. |
log_manager.PersistUnsentLogs(); |
- EXPECT_EQ(0U, pref_service.TypeCount( |
- MetricsLogBase::INITIAL_STABILITY_LOG)); |
- EXPECT_EQ(2U, pref_service.TypeCount(MetricsLogBase::ONGOING_LOG)); |
+ EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG)); |
+ EXPECT_EQ(2U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); |
// Handle the first ongoing log. |
log_manager.StageNextLogForUpload(); |
@@ -211,32 +215,32 @@ |
// Nothing should have changed "on disk" since PersistUnsentLogs hasn't been |
// called again. |
- EXPECT_EQ(2U, pref_service.TypeCount(MetricsLogBase::ONGOING_LOG)); |
+ EXPECT_EQ(2U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); |
// Persist, and make sure nothing is left. |
log_manager.PersistUnsentLogs(); |
- EXPECT_EQ(0U, pref_service.TypeCount( |
- MetricsLogBase::INITIAL_STABILITY_LOG)); |
- EXPECT_EQ(0U, pref_service.TypeCount(MetricsLogBase::ONGOING_LOG)); |
+ EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG)); |
+ EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); |
} |
} |
TEST(MetricsLogManagerTest, StoreStagedLogTypes) { |
+ TestMetricsServiceClient client; |
+ |
// Ensure that types are preserved when storing staged logs. |
{ |
TestLogPrefService pref_service; |
MetricsLogManager log_manager(&pref_service, 0); |
log_manager.LoadPersistedUnsentLogs(); |
- log_manager.BeginLoggingWithLog(make_scoped_ptr( |
- new MetricsLogBase("id", 0, MetricsLogBase::ONGOING_LOG, "version"))); |
+ 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(metrics::PersistedLogs::NORMAL_STORE); |
log_manager.PersistUnsentLogs(); |
- EXPECT_EQ(0U, pref_service.TypeCount( |
- MetricsLogBase::INITIAL_STABILITY_LOG)); |
- EXPECT_EQ(1U, pref_service.TypeCount(MetricsLogBase::ONGOING_LOG)); |
+ EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG)); |
+ EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); |
} |
{ |
@@ -244,50 +248,52 @@ |
MetricsLogManager log_manager(&pref_service, 0); |
log_manager.LoadPersistedUnsentLogs(); |
- log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLogBase( |
- "id", 0, MetricsLogBase::INITIAL_STABILITY_LOG, "v"))); |
+ log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( |
+ "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service))); |
log_manager.FinishCurrentLog(); |
log_manager.StageNextLogForUpload(); |
log_manager.StoreStagedLogAsUnsent(metrics::PersistedLogs::NORMAL_STORE); |
log_manager.PersistUnsentLogs(); |
- EXPECT_EQ(1U, pref_service.TypeCount( |
- MetricsLogBase::INITIAL_STABILITY_LOG)); |
- EXPECT_EQ(0U, pref_service.TypeCount(MetricsLogBase::ONGOING_LOG)); |
+ EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG)); |
+ EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); |
} |
} |
TEST(MetricsLogManagerTest, LargeLogDiscarding) { |
+ TestMetricsServiceClient client; |
TestLogPrefService pref_service; |
// Set the size threshold very low, to verify that it's honored. |
MetricsLogManager log_manager(&pref_service, 1); |
log_manager.LoadPersistedUnsentLogs(); |
- log_manager.BeginLoggingWithLog(make_scoped_ptr( |
- new MetricsLogBase("id", 0, MetricsLogBase::INITIAL_STABILITY_LOG, "v"))); |
+ log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( |
+ "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service))); |
log_manager.FinishCurrentLog(); |
- log_manager.BeginLoggingWithLog(make_scoped_ptr( |
- new MetricsLogBase("id", 0, MetricsLogBase::ONGOING_LOG, "v"))); |
+ log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( |
+ "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service))); |
log_manager.FinishCurrentLog(); |
// Only the ongoing log should be written out, due to the threshold. |
log_manager.PersistUnsentLogs(); |
- EXPECT_EQ(1U, pref_service.TypeCount(MetricsLogBase::INITIAL_STABILITY_LOG)); |
- EXPECT_EQ(0U, pref_service.TypeCount(MetricsLogBase::ONGOING_LOG)); |
+ EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::INITIAL_STABILITY_LOG)); |
+ EXPECT_EQ(0U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); |
} |
TEST(MetricsLogManagerTest, ProvisionalStoreStandardFlow) { |
+ TestMetricsServiceClient client; |
+ |
// Ensure that provisional store works, and discards the correct log. |
{ |
TestLogPrefService pref_service; |
MetricsLogManager log_manager(&pref_service, 0); |
log_manager.LoadPersistedUnsentLogs(); |
- log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLogBase( |
- "id", 0, MetricsLogBase::INITIAL_STABILITY_LOG, "v"))); |
+ log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( |
+ "id", 0, MetricsLog::INITIAL_STABILITY_LOG, &client, &pref_service))); |
log_manager.FinishCurrentLog(); |
- log_manager.BeginLoggingWithLog(make_scoped_ptr( |
- new MetricsLogBase("id", 0, MetricsLogBase::ONGOING_LOG, "v"))); |
+ log_manager.BeginLoggingWithLog(make_scoped_ptr(new MetricsLog( |
+ "id", 0, MetricsLog::ONGOING_LOG, &client, &pref_service))); |
log_manager.StageNextLogForUpload(); |
log_manager.StoreStagedLogAsUnsent( |
metrics::PersistedLogs::PROVISIONAL_STORE); |
@@ -295,13 +301,14 @@ |
log_manager.DiscardLastProvisionalStore(); |
log_manager.PersistUnsentLogs(); |
- EXPECT_EQ(0U, pref_service.TypeCount( |
- MetricsLogBase::INITIAL_STABILITY_LOG)); |
- EXPECT_EQ(1U, pref_service.TypeCount(MetricsLogBase::ONGOING_LOG)); |
+ 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. |
{ |
@@ -309,23 +316,23 @@ |
MetricsLogManager log_manager(&pref_service, 0); |
log_manager.LoadPersistedUnsentLogs(); |
- log_manager.BeginLoggingWithLog(make_scoped_ptr( |
- new MetricsLogBase("id", 0, MetricsLogBase::ONGOING_LOG, "version"))); |
+ 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( |
metrics::PersistedLogs::PROVISIONAL_STORE); |
log_manager.StageNextLogForUpload(); |
log_manager.DiscardStagedLog(); |
- log_manager.BeginLoggingWithLog(make_scoped_ptr( |
- new MetricsLogBase("id", 0, MetricsLogBase::ONGOING_LOG, "version"))); |
+ 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(metrics::PersistedLogs::NORMAL_STORE); |
log_manager.DiscardLastProvisionalStore(); |
log_manager.PersistUnsentLogs(); |
- EXPECT_EQ(1U, pref_service.TypeCount(MetricsLogBase::ONGOING_LOG)); |
+ EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); |
} |
// Ensure that trying to drop more than once is a no-op |
@@ -334,13 +341,13 @@ |
MetricsLogManager log_manager(&pref_service, 0); |
log_manager.LoadPersistedUnsentLogs(); |
- log_manager.BeginLoggingWithLog(make_scoped_ptr( |
- new MetricsLogBase("id", 0, MetricsLogBase::ONGOING_LOG, "version"))); |
+ 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(metrics::PersistedLogs::NORMAL_STORE); |
- log_manager.BeginLoggingWithLog(make_scoped_ptr( |
- new MetricsLogBase("id", 0, MetricsLogBase::ONGOING_LOG, "version"))); |
+ 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( |
@@ -349,7 +356,7 @@ |
log_manager.DiscardLastProvisionalStore(); |
log_manager.PersistUnsentLogs(); |
- EXPECT_EQ(1U, pref_service.TypeCount(MetricsLogBase::ONGOING_LOG)); |
+ EXPECT_EQ(1U, pref_service.TypeCount(MetricsLog::ONGOING_LOG)); |
} |
} |