Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "chrome/installer/util/experiment.h" | |
| 6 | |
| 7 #include <cmath> | |
| 8 | |
| 9 #include "base/time/time.h" | |
| 10 #include "chrome/installer/util/experiment_metrics.h" | |
| 11 #include "testing/gtest/include/gtest/gtest.h" | |
| 12 | |
| 13 namespace installer { | |
| 14 | |
| 15 class ExperimentTest : public ::testing::Test { | |
| 16 protected: | |
| 17 void TestExperimentMetrics(ExperimentMetrics* metrics) { | |
|
grt (UTC plus 2)
2017/05/31 12:24:10
nit: this name makes me think that this function i
nikunjb
2017/06/02 05:11:24
This is no longer needed for this test.
| |
| 18 metrics->SetState(ExperimentMetrics::kGroupAssigned); | |
| 19 metrics->group = 5; | |
| 20 metrics->toast_location = ExperimentMetrics::kOverTaskbarPin; | |
| 21 metrics->toast_count = 1; | |
| 22 metrics->first_toast_offset = 30; | |
| 23 metrics->toast_hour = 3; | |
| 24 metrics->last_used_bucket = 126; // Corresponds to 1621 days inactive. | |
| 25 metrics->display_time_bucket = 25; // Corresponds to 32875 sec | |
| 26 metrics->session_length_bucket = 50; // Corresponds to 3962 min | |
| 27 } | |
| 28 }; | |
| 29 | |
| 30 TEST_F(ExperimentTest, TestInitializeFromMetrics) { | |
| 31 ExperimentMetrics metrics; | |
| 32 TestExperimentMetrics(&metrics); | |
| 33 Experiment experiment; | |
| 34 experiment.InitializeFromMetrics(metrics); | |
| 35 | |
| 36 ASSERT_EQ(metrics.state, experiment.state()); | |
|
grt (UTC plus 2)
2017/05/31 12:24:10
please use EXPECT_* rather than ASSERT_* for cases
nikunjb
2017/06/02 05:11:24
Done.
| |
| 37 ASSERT_EQ(metrics.group, experiment.group()); | |
| 38 ASSERT_EQ(metrics.toast_location, experiment.toast_location()); | |
| 39 ASSERT_EQ(1621, experiment.inactive_days()); | |
| 40 ASSERT_EQ(metrics.toast_count, experiment.toast_count()); | |
| 41 base::Time expected_display_time = | |
| 42 (base::Time::UnixEpoch() + | |
| 43 base::TimeDelta::FromSeconds( | |
| 44 ExperimentMetrics::kExperimentStartSeconds) + | |
| 45 base::TimeDelta::FromDays(metrics.first_toast_offset)); | |
| 46 ASSERT_EQ(expected_display_time, experiment.first_display_time()); | |
| 47 ASSERT_EQ(expected_display_time, experiment.latest_display_time()); | |
| 48 ASSERT_EQ(base::TimeDelta::FromMinutes(3962), | |
| 49 experiment.user_session_uptime()); | |
| 50 ASSERT_EQ(base::TimeDelta::FromSeconds(32875), experiment.action_delay()); | |
| 51 } | |
| 52 | |
| 53 TEST_F(ExperimentTest, TestSetters) { | |
|
grt (UTC plus 2)
2017/05/31 12:24:10
would you break this up into individual test funct
nikunjb
2017/06/02 05:11:24
Done. Added separate test.
Left this test as it i
| |
| 54 Experiment experiment; | |
| 55 // Set experiment states so that the generated experiment metrics | |
| 56 // is similar to TestExperimentMetrics. | |
| 57 experiment.AssignGroup(5); | |
| 58 experiment.SetState(ExperimentMetrics::kGroupAssigned); | |
| 59 experiment.SetToastLocation(ExperimentMetrics::kOverTaskbarPin); | |
| 60 experiment.SetInactiveDays(1621); | |
| 61 experiment.SetToastCount(1); | |
| 62 base::Time test_display_time = | |
| 63 (base::Time::UnixEpoch() + | |
| 64 base::TimeDelta::FromSeconds( | |
| 65 ExperimentMetrics::kExperimentStartSeconds) + | |
| 66 base::TimeDelta::FromDays(30) + base::TimeDelta::FromHours(3)); | |
| 67 experiment.SetDisplayTime(test_display_time); | |
|
grt (UTC plus 2)
2017/05/31 12:24:10
please add a test to confirm that SetDisplayTime(2
nikunjb
2017/06/02 05:11:24
Added in TestSetDisplayTime. (Although note that t
| |
| 68 experiment.SetUserSessionUptime(base::TimeDelta::FromMinutes(3962)); | |
| 69 experiment.SetActionDelay(base::TimeDelta::FromSeconds(32875)); | |
| 70 | |
| 71 ASSERT_EQ(ExperimentMetrics::kGroupAssigned, experiment.state()); | |
| 72 ASSERT_EQ(5, experiment.group()); | |
| 73 ASSERT_EQ(ExperimentMetrics::kOverTaskbarPin, experiment.toast_location()); | |
| 74 ASSERT_EQ(1621, experiment.inactive_days()); | |
| 75 ASSERT_EQ(1, experiment.toast_count()); | |
| 76 ASSERT_EQ(test_display_time, experiment.first_display_time()); | |
| 77 ASSERT_EQ(test_display_time, experiment.latest_display_time()); | |
| 78 ASSERT_EQ(base::TimeDelta::FromMinutes(3962), | |
| 79 experiment.user_session_uptime()); | |
| 80 ASSERT_EQ(base::TimeDelta::FromSeconds(32875), experiment.action_delay()); | |
| 81 | |
| 82 ASSERT_EQ(ExperimentMetrics::kGroupAssigned, experiment.metrics().state); | |
| 83 ASSERT_EQ(5, experiment.metrics().group); | |
| 84 ASSERT_EQ(ExperimentMetrics::kOverTaskbarPin, | |
| 85 experiment.metrics().toast_location); | |
| 86 ASSERT_EQ(1, experiment.metrics().toast_count); | |
| 87 ASSERT_EQ(30, experiment.metrics().first_toast_offset); | |
| 88 ASSERT_EQ(3, experiment.metrics().toast_hour); | |
|
grt (UTC plus 2)
2017/05/31 12:24:10
this one will be hard to test since it's tz-depend
nikunjb
2017/06/02 05:11:24
Removed toast hour check from here and added a sep
| |
| 89 ASSERT_EQ(126, experiment.metrics().last_used_bucket); | |
| 90 ASSERT_EQ(25, experiment.metrics().display_time_bucket); | |
| 91 ASSERT_EQ(50, experiment.metrics().session_length_bucket); | |
| 92 } | |
| 93 | |
| 94 } // namespace installer | |
| OLD | NEW |