AU: Start an UpdateAttempter unit test suite.

This increases the UpdateAttmpter line coverage to almost 40%. More is needed
but this is a good starting point / checkpoint. Also some UpdateCheckScheduler
unit test cleanup.

BUG=6243
TEST=unit tests, gmerge on device

Change-Id: I39c80de3f18095c4a28cb36ab868bed6d7073824

Review URL: http://codereview.chromium.org/3259011
diff --git a/update_check_scheduler_unittest.cc b/update_check_scheduler_unittest.cc
index 8a0ca19..413453a 100644
--- a/update_check_scheduler_unittest.cc
+++ b/update_check_scheduler_unittest.cc
@@ -37,21 +37,22 @@
 };
 
 class UpdateCheckSchedulerTest : public ::testing::Test {
+ public:
+  UpdateCheckSchedulerTest() : scheduler_(&attempter_) {}
+
  protected:
   virtual void SetUp() {
     test_ = this;
     loop_ = NULL;
-    scheduler_.reset(new UpdateCheckSchedulerUnderTest(&attempter_));
-    EXPECT_EQ(&attempter_, scheduler_->update_attempter_);
-    EXPECT_FALSE(scheduler_->enabled_);
-    EXPECT_FALSE(scheduler_->scheduled_);
-    EXPECT_EQ(0, scheduler_->last_interval_);
+    EXPECT_EQ(&attempter_, scheduler_.update_attempter_);
+    EXPECT_FALSE(scheduler_.enabled_);
+    EXPECT_FALSE(scheduler_.scheduled_);
+    EXPECT_EQ(0, scheduler_.last_interval_);
   }
 
   virtual void TearDown() {
     test_ = NULL;
     loop_ = NULL;
-    scheduler_.reset(NULL);
   }
 
   static gboolean SourceCallback(gpointer data) {
@@ -60,7 +61,7 @@
     return test_->source_callback_.Call(data);
   }
 
-  scoped_ptr<UpdateCheckSchedulerUnderTest> scheduler_;
+  UpdateCheckSchedulerUnderTest scheduler_;
   UpdateAttempterMock attempter_;
   MockFunction<gboolean(gpointer data)> source_callback_;
   GMainLoop* loop_;
@@ -70,35 +71,35 @@
 UpdateCheckSchedulerTest* UpdateCheckSchedulerTest::test_ = NULL;
 
 TEST_F(UpdateCheckSchedulerTest, CanScheduleTest) {
-  EXPECT_FALSE(scheduler_->CanSchedule());
-  scheduler_->enabled_ = true;
-  EXPECT_TRUE(scheduler_->CanSchedule());
-  scheduler_->scheduled_ = true;
-  EXPECT_FALSE(scheduler_->CanSchedule());
-  scheduler_->enabled_ = false;
-  EXPECT_FALSE(scheduler_->CanSchedule());
+  EXPECT_FALSE(scheduler_.CanSchedule());
+  scheduler_.enabled_ = true;
+  EXPECT_TRUE(scheduler_.CanSchedule());
+  scheduler_.scheduled_ = true;
+  EXPECT_FALSE(scheduler_.CanSchedule());
+  scheduler_.enabled_ = false;
+  EXPECT_FALSE(scheduler_.CanSchedule());
 }
 
 TEST_F(UpdateCheckSchedulerTest, ComputeNextIntervalAndFuzzBackoffTest) {
   int interval, fuzz;
   attempter_.set_http_response_code(500);
   int last_interval = UpdateCheckScheduler::kTimeoutPeriodic + 50;
-  scheduler_->last_interval_ = last_interval;
-  scheduler_->ComputeNextIntervalAndFuzz(&interval, &fuzz);
+  scheduler_.last_interval_ = last_interval;
+  scheduler_.ComputeNextIntervalAndFuzz(&interval, &fuzz);
   EXPECT_EQ(2 * last_interval, interval);
   EXPECT_EQ(2 * last_interval, fuzz);
 
   attempter_.set_http_response_code(503);
   last_interval = UpdateCheckScheduler::kTimeoutMaxBackoff / 2 + 1;
-  scheduler_->last_interval_ = last_interval;
-  scheduler_->ComputeNextIntervalAndFuzz(&interval, &fuzz);
+  scheduler_.last_interval_ = last_interval;
+  scheduler_.ComputeNextIntervalAndFuzz(&interval, &fuzz);
   EXPECT_EQ(UpdateCheckScheduler::kTimeoutMaxBackoff, interval);
   EXPECT_EQ(UpdateCheckScheduler::kTimeoutMaxBackoff, fuzz);
 }
 
 TEST_F(UpdateCheckSchedulerTest, ComputeNextIntervalAndFuzzTest) {
   int interval, fuzz;
-  scheduler_->ComputeNextIntervalAndFuzz(&interval, &fuzz);
+  scheduler_.ComputeNextIntervalAndFuzz(&interval, &fuzz);
   EXPECT_EQ(UpdateCheckScheduler::kTimeoutPeriodic, interval);
   EXPECT_EQ(UpdateCheckScheduler::kTimeoutRegularFuzz, fuzz);
 }
@@ -106,38 +107,38 @@
 TEST_F(UpdateCheckSchedulerTest, GTimeoutAddSecondsTest) {
   loop_ = g_main_loop_new(g_main_context_default(), FALSE);
   // Invokes the actual GLib wrapper method rather than the subclass mock.
-  scheduler_->UpdateCheckScheduler::GTimeoutAddSeconds(0, SourceCallback);
-  EXPECT_CALL(source_callback_, Call(scheduler_.get())).Times(1);
+  scheduler_.UpdateCheckScheduler::GTimeoutAddSeconds(0, SourceCallback);
+  EXPECT_CALL(source_callback_, Call(&scheduler_)).Times(1);
   g_main_loop_run(loop_);
   g_main_loop_unref(loop_);
 }
 
 TEST_F(UpdateCheckSchedulerTest, IsBootDeviceRemovableTest) {
   // Invokes the actual utils wrapper method rather than the subclass mock.
-  EXPECT_FALSE(scheduler_->UpdateCheckScheduler::IsBootDeviceRemovable());
+  EXPECT_FALSE(scheduler_.UpdateCheckScheduler::IsBootDeviceRemovable());
 }
 
 TEST_F(UpdateCheckSchedulerTest, IsOfficialBuildTest) {
   // Invokes the actual utils wrapper method rather than the subclass mock.
-  EXPECT_TRUE(scheduler_->UpdateCheckScheduler::IsOfficialBuild());
+  EXPECT_TRUE(scheduler_.UpdateCheckScheduler::IsOfficialBuild());
 }
 
 TEST_F(UpdateCheckSchedulerTest, RunBootDeviceRemovableTest) {
-  scheduler_->enabled_ = true;
-  EXPECT_CALL(*scheduler_, IsOfficialBuild()).Times(1).WillOnce(Return(true));
-  EXPECT_CALL(*scheduler_, IsBootDeviceRemovable())
+  scheduler_.enabled_ = true;
+  EXPECT_CALL(scheduler_, IsOfficialBuild()).Times(1).WillOnce(Return(true));
+  EXPECT_CALL(scheduler_, IsBootDeviceRemovable())
       .Times(1)
       .WillOnce(Return(true));
-  scheduler_->Run();
-  EXPECT_FALSE(scheduler_->enabled_);
+  scheduler_.Run();
+  EXPECT_FALSE(scheduler_.enabled_);
   EXPECT_EQ(NULL, attempter_.update_check_scheduler());
 }
 
 TEST_F(UpdateCheckSchedulerTest, RunNonOfficialBuildTest) {
-  scheduler_->enabled_ = true;
-  EXPECT_CALL(*scheduler_, IsOfficialBuild()).Times(1).WillOnce(Return(false));
-  scheduler_->Run();
-  EXPECT_FALSE(scheduler_->enabled_);
+  scheduler_.enabled_ = true;
+  EXPECT_CALL(scheduler_, IsOfficialBuild()).Times(1).WillOnce(Return(false));
+  scheduler_.Run();
+  EXPECT_FALSE(scheduler_.enabled_);
   EXPECT_EQ(NULL, attempter_.update_check_scheduler());
 }
 
@@ -147,48 +148,48 @@
             UpdateCheckScheduler::kTimeoutRegularFuzz,
             &interval_min,
             &interval_max);
-  EXPECT_CALL(*scheduler_, IsOfficialBuild()).Times(1).WillOnce(Return(true));
-  EXPECT_CALL(*scheduler_, IsBootDeviceRemovable())
+  EXPECT_CALL(scheduler_, IsOfficialBuild()).Times(1).WillOnce(Return(true));
+  EXPECT_CALL(scheduler_, IsBootDeviceRemovable())
       .Times(1)
       .WillOnce(Return(false));
-  EXPECT_CALL(*scheduler_,
+  EXPECT_CALL(scheduler_,
               GTimeoutAddSeconds(AllOf(Ge(interval_min), Le(interval_max)),
-                                 scheduler_->StaticCheck)).Times(1);
-  scheduler_->Run();
-  EXPECT_TRUE(scheduler_->enabled_);
-  EXPECT_EQ(scheduler_.get(), attempter_.update_check_scheduler());
+                                 scheduler_.StaticCheck)).Times(1);
+  scheduler_.Run();
+  EXPECT_TRUE(scheduler_.enabled_);
+  EXPECT_EQ(&scheduler_, attempter_.update_check_scheduler());
 }
 
 TEST_F(UpdateCheckSchedulerTest, ScheduleCheckDisabledTest) {
-  EXPECT_CALL(*scheduler_, GTimeoutAddSeconds(_, _)).Times(0);
-  scheduler_->ScheduleCheck(250, 30);
-  EXPECT_EQ(0, scheduler_->last_interval_);
-  EXPECT_FALSE(scheduler_->scheduled_);
+  EXPECT_CALL(scheduler_, GTimeoutAddSeconds(_, _)).Times(0);
+  scheduler_.ScheduleCheck(250, 30);
+  EXPECT_EQ(0, scheduler_.last_interval_);
+  EXPECT_FALSE(scheduler_.scheduled_);
 }
 
 TEST_F(UpdateCheckSchedulerTest, ScheduleCheckEnabledTest) {
   int interval_min, interval_max;
   FuzzRange(100, 10, &interval_min,&interval_max);
-  EXPECT_CALL(*scheduler_,
+  EXPECT_CALL(scheduler_,
               GTimeoutAddSeconds(AllOf(Ge(interval_min), Le(interval_max)),
-                                 scheduler_->StaticCheck)).Times(1);
-  scheduler_->enabled_ = true;
-  scheduler_->ScheduleCheck(100, 10);
-  EXPECT_EQ(100, scheduler_->last_interval_);
-  EXPECT_TRUE(scheduler_->scheduled_);
+                                 scheduler_.StaticCheck)).Times(1);
+  scheduler_.enabled_ = true;
+  scheduler_.ScheduleCheck(100, 10);
+  EXPECT_EQ(100, scheduler_.last_interval_);
+  EXPECT_TRUE(scheduler_.scheduled_);
 }
 
 TEST_F(UpdateCheckSchedulerTest, ScheduleCheckNegativeIntervalTest) {
-  EXPECT_CALL(*scheduler_, GTimeoutAddSeconds(0, scheduler_->StaticCheck))
+  EXPECT_CALL(scheduler_, GTimeoutAddSeconds(0, scheduler_.StaticCheck))
       .Times(1);
-  scheduler_->enabled_ = true;
-  scheduler_->ScheduleCheck(-50, 20);
-  EXPECT_TRUE(scheduler_->scheduled_);
+  scheduler_.enabled_ = true;
+  scheduler_.ScheduleCheck(-50, 20);
+  EXPECT_TRUE(scheduler_.scheduled_);
 }
 
 TEST_F(UpdateCheckSchedulerTest, ScheduleNextCheckDisabledTest) {
-  EXPECT_CALL(*scheduler_, GTimeoutAddSeconds(_, _)).Times(0);
-  scheduler_->ScheduleNextCheck();
+  EXPECT_CALL(scheduler_, GTimeoutAddSeconds(_, _)).Times(0);
+  scheduler_.ScheduleNextCheck();
 }
 
 TEST_F(UpdateCheckSchedulerTest, ScheduleNextCheckEnabledTest) {
@@ -197,16 +198,16 @@
             UpdateCheckScheduler::kTimeoutRegularFuzz,
             &interval_min,
             &interval_max);
-  EXPECT_CALL(*scheduler_,
+  EXPECT_CALL(scheduler_,
               GTimeoutAddSeconds(AllOf(Ge(interval_min), Le(interval_max)),
-                                 scheduler_->StaticCheck)).Times(1);
-  scheduler_->enabled_ = true;
-  scheduler_->ScheduleNextCheck();
+                                 scheduler_.StaticCheck)).Times(1);
+  scheduler_.enabled_ = true;
+  scheduler_.ScheduleNextCheck();
 }
 
 TEST_F(UpdateCheckSchedulerTest, SetUpdateStatusIdleDisabledTest) {
-  EXPECT_CALL(*scheduler_, GTimeoutAddSeconds(_, _)).Times(0);
-  scheduler_->SetUpdateStatus(UPDATE_STATUS_IDLE);
+  EXPECT_CALL(scheduler_, GTimeoutAddSeconds(_, _)).Times(0);
+  scheduler_.SetUpdateStatus(UPDATE_STATUS_IDLE);
 }
 
 TEST_F(UpdateCheckSchedulerTest, SetUpdateStatusIdleEnabledTest) {
@@ -215,24 +216,24 @@
             UpdateCheckScheduler::kTimeoutRegularFuzz,
             &interval_min,
             &interval_max);
-  EXPECT_CALL(*scheduler_,
+  EXPECT_CALL(scheduler_,
               GTimeoutAddSeconds(AllOf(Ge(interval_min), Le(interval_max)),
-                                 scheduler_->StaticCheck)).Times(1);
-  scheduler_->enabled_ = true;
-  scheduler_->SetUpdateStatus(UPDATE_STATUS_IDLE);
+                                 scheduler_.StaticCheck)).Times(1);
+  scheduler_.enabled_ = true;
+  scheduler_.SetUpdateStatus(UPDATE_STATUS_IDLE);
 }
 
 TEST_F(UpdateCheckSchedulerTest, SetUpdateStatusNonIdleTest) {
-  EXPECT_CALL(*scheduler_, GTimeoutAddSeconds(_, _)).Times(0);
-  scheduler_->SetUpdateStatus(UPDATE_STATUS_DOWNLOADING);
-  scheduler_->enabled_ = true;
-  scheduler_->SetUpdateStatus(UPDATE_STATUS_DOWNLOADING);
+  EXPECT_CALL(scheduler_, GTimeoutAddSeconds(_, _)).Times(0);
+  scheduler_.SetUpdateStatus(UPDATE_STATUS_DOWNLOADING);
+  scheduler_.enabled_ = true;
+  scheduler_.SetUpdateStatus(UPDATE_STATUS_DOWNLOADING);
 }
 
 TEST_F(UpdateCheckSchedulerTest, StaticCheckTest) {
-  scheduler_->scheduled_ = true;
+  scheduler_.scheduled_ = true;
   EXPECT_CALL(attempter_, Update("", "")).Times(1);
-  UpdateCheckSchedulerUnderTest::StaticCheck(scheduler_.get());
+  UpdateCheckSchedulerUnderTest::StaticCheck(&scheduler_);
 }
 
 }  // namespace chromeos_update_engine