Index: components/metrics/metrics_state_manager_unittest.cc |
diff --git a/components/metrics/metrics_state_manager_unittest.cc b/components/metrics/metrics_state_manager_unittest.cc |
index bbef26b167aa1ee59a8f04f378b4821e09b5eba9..a55c2fa9f036e783e225e3be3eb4a00344316d45 100644 |
--- a/components/metrics/metrics_state_manager_unittest.cc |
+++ b/components/metrics/metrics_state_manager_unittest.cc |
@@ -28,7 +28,8 @@ namespace metrics { |
class MetricsStateManagerTest : public testing::Test { |
public: |
MetricsStateManagerTest() |
- : enabled_state_provider_(new TestEnabledStateProvider(false, false)) { |
+ : test_begin_time_(base::Time::Now().ToTimeT()), |
+ enabled_state_provider_(new TestEnabledStateProvider(false, false)) { |
MetricsService::RegisterPrefs(prefs_.registry()); |
} |
@@ -47,6 +48,21 @@ class MetricsStateManagerTest : public testing::Test { |
enabled_state_provider_->set_enabled(true); |
} |
+ void SetClientInfoPrefs(const ClientInfo& client_info) { |
+ prefs_.SetString(prefs::kMetricsClientID, client_info.client_id); |
+ prefs_.SetInt64(prefs::kInstallDate, client_info.installation_date); |
+ prefs_.SetInt64(prefs::kMetricsReportingEnabledTimestamp, |
+ client_info.reporting_enabled_date); |
+ } |
+ |
+ void SetFakeClientInfoBackup(const ClientInfo& client_info) { |
+ fake_client_info_backup_.reset(new ClientInfo); |
+ fake_client_info_backup_->client_id = client_info.client_id; |
+ fake_client_info_backup_->installation_date = client_info.installation_date; |
+ fake_client_info_backup_->reporting_enabled_date = |
+ client_info.reporting_enabled_date; |
+ } |
+ |
protected: |
TestingPrefServiceSimple prefs_; |
@@ -58,6 +74,8 @@ class MetricsStateManagerTest : public testing::Test { |
// MetricsStateManager. |
std::unique_ptr<ClientInfo> fake_client_info_backup_; |
+ const int64_t test_begin_time_; |
+ |
private: |
// Stores the |client_info| in |stored_client_info_backup_| for verification |
// by the tests later. |
@@ -222,11 +240,6 @@ TEST_F(MetricsStateManagerTest, ForceClientIdCreation) { |
const int64_t kFakeInstallationDate = 12345; |
prefs_.SetInt64(prefs::kInstallDate, kFakeInstallationDate); |
- const int64_t test_begin_time = base::Time::Now().ToTimeT(); |
- |
- // Holds ClientInfo from previous scoped test for extra checks. |
- std::unique_ptr<ClientInfo> previous_client_info; |
- |
{ |
std::unique_ptr<MetricsStateManager> state_manager(CreateStateManager()); |
@@ -241,7 +254,7 @@ TEST_F(MetricsStateManagerTest, ForceClientIdCreation) { |
state_manager->ForceClientIdCreation(); |
EXPECT_NE(std::string(), state_manager->client_id()); |
EXPECT_GE(prefs_.GetInt64(prefs::kMetricsReportingEnabledTimestamp), |
- test_begin_time); |
+ test_begin_time_); |
ASSERT_TRUE(stored_client_info_backup_); |
EXPECT_EQ(state_manager->client_id(), |
@@ -250,70 +263,82 @@ TEST_F(MetricsStateManagerTest, ForceClientIdCreation) { |
stored_client_info_backup_->installation_date); |
EXPECT_EQ(prefs_.GetInt64(prefs::kMetricsReportingEnabledTimestamp), |
stored_client_info_backup_->reporting_enabled_date); |
- |
- previous_client_info = std::move(stored_client_info_backup_); |
} |
+} |
- EnableMetricsReporting(); |
+TEST_F(MetricsStateManagerTest, LoadPrefs) { |
+ ClientInfo client_info; |
+ client_info.client_id = "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEF"; |
+ client_info.installation_date = 1112; |
+ client_info.reporting_enabled_date = 2223; |
+ SetClientInfoPrefs(client_info); |
+ EnableMetricsReporting(); |
{ |
+ EXPECT_FALSE(fake_client_info_backup_); |
EXPECT_FALSE(stored_client_info_backup_); |
std::unique_ptr<MetricsStateManager> state_manager(CreateStateManager()); |
// client_id should be auto-obtained from the constructor when metrics |
// reporting is enabled. |
- EXPECT_EQ(previous_client_info->client_id, state_manager->client_id()); |
+ EXPECT_EQ(client_info.client_id, state_manager->client_id()); |
- // The backup should also be refreshed when the client id re-initialized. |
- ASSERT_TRUE(stored_client_info_backup_); |
- EXPECT_EQ(previous_client_info->client_id, |
- stored_client_info_backup_->client_id); |
- EXPECT_EQ(kFakeInstallationDate, |
- stored_client_info_backup_->installation_date); |
- EXPECT_EQ(previous_client_info->reporting_enabled_date, |
- stored_client_info_backup_->reporting_enabled_date); |
+ // The backup should not be modified. |
+ ASSERT_FALSE(stored_client_info_backup_); |
// Re-forcing client id creation shouldn't cause another backup and |
// shouldn't affect the existing client id. |
- stored_client_info_backup_.reset(); |
state_manager->ForceClientIdCreation(); |
EXPECT_FALSE(stored_client_info_backup_); |
- EXPECT_EQ(previous_client_info->client_id, state_manager->client_id()); |
+ EXPECT_EQ(client_info.client_id, state_manager->client_id()); |
} |
+} |
- const int64_t kBackupInstallationDate = 1111; |
- const int64_t kBackupReportingEnabledDate = 2222; |
- const char kBackupClientId[] = "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE"; |
- fake_client_info_backup_.reset(new ClientInfo); |
- fake_client_info_backup_->client_id = kBackupClientId; |
- fake_client_info_backup_->installation_date = kBackupInstallationDate; |
- fake_client_info_backup_->reporting_enabled_date = |
- kBackupReportingEnabledDate; |
+TEST_F(MetricsStateManagerTest, PreferPrefs) { |
+ ClientInfo client_info; |
+ client_info.client_id = "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEF"; |
+ client_info.installation_date = 1112; |
+ client_info.reporting_enabled_date = 2223; |
+ SetClientInfoPrefs(client_info); |
+ ClientInfo client_info2; |
+ client_info2.client_id = "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE"; |
+ client_info2.installation_date = 1111; |
+ client_info2.reporting_enabled_date = 2222; |
+ SetFakeClientInfoBackup(client_info2); |
+ |
+ EnableMetricsReporting(); |
{ |
- // The existence of a backup should result in the same behaviour as |
- // before if we already have a client id. |
+ // The backup should be ignored if we already have a client id. |
EXPECT_FALSE(stored_client_info_backup_); |
std::unique_ptr<MetricsStateManager> state_manager(CreateStateManager()); |
- EXPECT_EQ(previous_client_info->client_id, state_manager->client_id()); |
+ EXPECT_EQ(client_info.client_id, state_manager->client_id()); |
- // The backup should also be refreshed when the client id re-initialized. |
- ASSERT_TRUE(stored_client_info_backup_); |
- EXPECT_EQ(previous_client_info->client_id, |
- stored_client_info_backup_->client_id); |
- EXPECT_EQ(kFakeInstallationDate, |
- stored_client_info_backup_->installation_date); |
- EXPECT_EQ(previous_client_info->reporting_enabled_date, |
- stored_client_info_backup_->reporting_enabled_date); |
- stored_client_info_backup_.reset(); |
+ // The backup should not be modified. |
+ ASSERT_FALSE(stored_client_info_backup_); |
} |
+} |
+ |
+TEST_F(MetricsStateManagerTest, RestoreBackup) { |
+ ClientInfo client_info; |
+ client_info.client_id = "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEF"; |
+ client_info.installation_date = 1112; |
+ client_info.reporting_enabled_date = 2223; |
+ SetClientInfoPrefs(client_info); |
+ |
+ ClientInfo client_info2; |
+ client_info2.client_id = "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE"; |
+ client_info2.installation_date = 1111; |
+ client_info2.reporting_enabled_date = 2222; |
+ SetFakeClientInfoBackup(client_info2); |
prefs_.ClearPref(prefs::kMetricsClientID); |
prefs_.ClearPref(prefs::kMetricsReportingEnabledTimestamp); |
+ EnableMetricsReporting(); |
{ |
// The backup should kick in if the client id has gone missing. It should |
// replace remaining and missing dates as well. |
@@ -321,62 +346,46 @@ TEST_F(MetricsStateManagerTest, ForceClientIdCreation) { |
EXPECT_FALSE(stored_client_info_backup_); |
std::unique_ptr<MetricsStateManager> state_manager(CreateStateManager()); |
- EXPECT_EQ(kBackupClientId, state_manager->client_id()); |
- EXPECT_EQ(kBackupInstallationDate, prefs_.GetInt64(prefs::kInstallDate)); |
- EXPECT_EQ(kBackupReportingEnabledDate, |
+ EXPECT_EQ(client_info2.client_id, state_manager->client_id()); |
+ EXPECT_EQ(client_info2.installation_date, |
+ prefs_.GetInt64(prefs::kInstallDate)); |
+ EXPECT_EQ(client_info2.reporting_enabled_date, |
prefs_.GetInt64(prefs::kMetricsReportingEnabledTimestamp)); |
EXPECT_TRUE(stored_client_info_backup_); |
- stored_client_info_backup_.reset(); |
} |
+} |
- const char kNoDashesBackupClientId[] = "AAAAAAAABBBBCCCCDDDDEEEEEEEEEEEE"; |
- fake_client_info_backup_.reset(new ClientInfo); |
- fake_client_info_backup_->client_id = kNoDashesBackupClientId; |
- |
- prefs_.ClearPref(prefs::kInstallDate); |
- prefs_.ClearPref(prefs::kMetricsClientID); |
- prefs_.ClearPref(prefs::kMetricsReportingEnabledTimestamp); |
- |
- { |
- // When running the backup from old-style client ids, dashes should be |
- // re-added. And missing dates in backup should be replaced by Time::Now(). |
- |
- EXPECT_FALSE(stored_client_info_backup_); |
- |
- std::unique_ptr<MetricsStateManager> state_manager(CreateStateManager()); |
- EXPECT_EQ(kBackupClientId, state_manager->client_id()); |
- EXPECT_GE(prefs_.GetInt64(prefs::kInstallDate), test_begin_time); |
- EXPECT_GE(prefs_.GetInt64(prefs::kMetricsReportingEnabledTimestamp), |
- test_begin_time); |
+TEST_F(MetricsStateManagerTest, ResetBackup) { |
+ ClientInfo client_info; |
+ client_info.client_id = "AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE"; |
+ client_info.installation_date = 1111; |
+ client_info.reporting_enabled_date = 2222; |
- EXPECT_TRUE(stored_client_info_backup_); |
- previous_client_info = std::move(stored_client_info_backup_); |
- } |
+ SetFakeClientInfoBackup(client_info); |
+ SetClientInfoPrefs(client_info); |
prefs_.SetBoolean(prefs::kMetricsResetIds, true); |
+ EnableMetricsReporting(); |
{ |
// Upon request to reset metrics ids, the existing backup should not be |
// restored. |
- EXPECT_FALSE(stored_client_info_backup_); |
- |
std::unique_ptr<MetricsStateManager> state_manager(CreateStateManager()); |
// A brand new client id should have been generated. |
EXPECT_NE(std::string(), state_manager->client_id()); |
- EXPECT_NE(previous_client_info->client_id, state_manager->client_id()); |
+ EXPECT_NE(client_info.client_id, state_manager->client_id()); |
+ EXPECT_TRUE(stored_client_info_backup_); |
// The installation date should not have been affected. |
- EXPECT_EQ(previous_client_info->installation_date, |
+ EXPECT_EQ(client_info.installation_date, |
prefs_.GetInt64(prefs::kInstallDate)); |
// The metrics-reporting-enabled date will be reset to Now(). |
EXPECT_GE(prefs_.GetInt64(prefs::kMetricsReportingEnabledTimestamp), |
- previous_client_info->reporting_enabled_date); |
- |
- stored_client_info_backup_.reset(); |
+ test_begin_time_); |
} |
} |