| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <gtest/gtest.h> | 5 #include <gtest/gtest.h> |
| 6 | 6 |
| 7 #include "update_engine/update_attempter_mock.h" | 7 #include "update_engine/update_attempter_mock.h" |
| 8 #include "update_engine/update_check_scheduler.h" | 8 #include "update_engine/update_check_scheduler.h" |
| 9 | 9 |
| 10 using std::string; | 10 using std::string; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 UpdateCheckSchedulerTest() : scheduler_(&attempter_) {} | 41 UpdateCheckSchedulerTest() : scheduler_(&attempter_) {} |
| 42 | 42 |
| 43 protected: | 43 protected: |
| 44 virtual void SetUp() { | 44 virtual void SetUp() { |
| 45 test_ = this; | 45 test_ = this; |
| 46 loop_ = NULL; | 46 loop_ = NULL; |
| 47 EXPECT_EQ(&attempter_, scheduler_.update_attempter_); | 47 EXPECT_EQ(&attempter_, scheduler_.update_attempter_); |
| 48 EXPECT_FALSE(scheduler_.enabled_); | 48 EXPECT_FALSE(scheduler_.enabled_); |
| 49 EXPECT_FALSE(scheduler_.scheduled_); | 49 EXPECT_FALSE(scheduler_.scheduled_); |
| 50 EXPECT_EQ(0, scheduler_.last_interval_); | 50 EXPECT_EQ(0, scheduler_.last_interval_); |
| 51 EXPECT_EQ(0, scheduler_.poll_interval_); |
| 51 } | 52 } |
| 52 | 53 |
| 53 virtual void TearDown() { | 54 virtual void TearDown() { |
| 54 test_ = NULL; | 55 test_ = NULL; |
| 55 loop_ = NULL; | 56 loop_ = NULL; |
| 56 } | 57 } |
| 57 | 58 |
| 58 static gboolean SourceCallback(gpointer data) { | 59 static gboolean SourceCallback(gpointer data) { |
| 59 g_main_loop_quit(test_->loop_); | 60 g_main_loop_quit(test_->loop_); |
| 60 // Forwards the call to the function mock so that expectations can be set. | 61 // Forwards the call to the function mock so that expectations can be set. |
| (...skipping 22 matching lines...) Expand all Loading... |
| 83 TEST_F(UpdateCheckSchedulerTest, ComputeNextIntervalAndFuzzBackoffTest) { | 84 TEST_F(UpdateCheckSchedulerTest, ComputeNextIntervalAndFuzzBackoffTest) { |
| 84 int interval, fuzz; | 85 int interval, fuzz; |
| 85 attempter_.set_http_response_code(500); | 86 attempter_.set_http_response_code(500); |
| 86 int last_interval = UpdateCheckScheduler::kTimeoutPeriodic + 50; | 87 int last_interval = UpdateCheckScheduler::kTimeoutPeriodic + 50; |
| 87 scheduler_.last_interval_ = last_interval; | 88 scheduler_.last_interval_ = last_interval; |
| 88 scheduler_.ComputeNextIntervalAndFuzz(&interval, &fuzz); | 89 scheduler_.ComputeNextIntervalAndFuzz(&interval, &fuzz); |
| 89 EXPECT_EQ(2 * last_interval, interval); | 90 EXPECT_EQ(2 * last_interval, interval); |
| 90 EXPECT_EQ(2 * last_interval, fuzz); | 91 EXPECT_EQ(2 * last_interval, fuzz); |
| 91 | 92 |
| 92 attempter_.set_http_response_code(503); | 93 attempter_.set_http_response_code(503); |
| 93 last_interval = UpdateCheckScheduler::kTimeoutMaxBackoff / 2 + 1; | 94 scheduler_.last_interval_ = UpdateCheckScheduler::kTimeoutMaxBackoff / 2 + 1; |
| 94 scheduler_.last_interval_ = last_interval; | |
| 95 scheduler_.ComputeNextIntervalAndFuzz(&interval, &fuzz); | 95 scheduler_.ComputeNextIntervalAndFuzz(&interval, &fuzz); |
| 96 EXPECT_EQ(UpdateCheckScheduler::kTimeoutMaxBackoff, interval); | 96 EXPECT_EQ(UpdateCheckScheduler::kTimeoutMaxBackoff, interval); |
| 97 EXPECT_EQ(UpdateCheckScheduler::kTimeoutMaxBackoff, fuzz); | 97 EXPECT_EQ(UpdateCheckScheduler::kTimeoutMaxBackoff, fuzz); |
| 98 } | 98 } |
| 99 | 99 |
| 100 TEST_F(UpdateCheckSchedulerTest, ComputeNextIntervalAndFuzzPollTest) { |
| 101 int interval, fuzz; |
| 102 int poll_interval = UpdateCheckScheduler::kTimeoutPeriodic + 50; |
| 103 scheduler_.set_poll_interval(poll_interval); |
| 104 scheduler_.ComputeNextIntervalAndFuzz(&interval, &fuzz); |
| 105 EXPECT_EQ(poll_interval, interval); |
| 106 EXPECT_EQ(poll_interval, fuzz); |
| 107 |
| 108 scheduler_.set_poll_interval(UpdateCheckScheduler::kTimeoutMaxBackoff + 1); |
| 109 scheduler_.ComputeNextIntervalAndFuzz(&interval, &fuzz); |
| 110 EXPECT_EQ(UpdateCheckScheduler::kTimeoutMaxBackoff, interval); |
| 111 EXPECT_EQ(UpdateCheckScheduler::kTimeoutMaxBackoff, fuzz); |
| 112 |
| 113 scheduler_.set_poll_interval(UpdateCheckScheduler::kTimeoutPeriodic - 1); |
| 114 scheduler_.ComputeNextIntervalAndFuzz(&interval, &fuzz); |
| 115 EXPECT_EQ(UpdateCheckScheduler::kTimeoutPeriodic, interval); |
| 116 EXPECT_EQ(UpdateCheckScheduler::kTimeoutRegularFuzz, fuzz); |
| 117 } |
| 118 |
| 119 TEST_F(UpdateCheckSchedulerTest, ComputeNextIntervalAndFuzzPriorityTest) { |
| 120 int interval, fuzz; |
| 121 attempter_.set_http_response_code(500); |
| 122 scheduler_.last_interval_ = UpdateCheckScheduler::kTimeoutPeriodic + 50; |
| 123 int poll_interval = UpdateCheckScheduler::kTimeoutPeriodic + 100; |
| 124 scheduler_.set_poll_interval(poll_interval); |
| 125 scheduler_.ComputeNextIntervalAndFuzz(&interval, &fuzz); |
| 126 EXPECT_EQ(poll_interval, interval); |
| 127 EXPECT_EQ(poll_interval, fuzz); |
| 128 } |
| 129 |
| 100 TEST_F(UpdateCheckSchedulerTest, ComputeNextIntervalAndFuzzTest) { | 130 TEST_F(UpdateCheckSchedulerTest, ComputeNextIntervalAndFuzzTest) { |
| 101 int interval, fuzz; | 131 int interval, fuzz; |
| 102 scheduler_.ComputeNextIntervalAndFuzz(&interval, &fuzz); | 132 scheduler_.ComputeNextIntervalAndFuzz(&interval, &fuzz); |
| 103 EXPECT_EQ(UpdateCheckScheduler::kTimeoutPeriodic, interval); | 133 EXPECT_EQ(UpdateCheckScheduler::kTimeoutPeriodic, interval); |
| 104 EXPECT_EQ(UpdateCheckScheduler::kTimeoutRegularFuzz, fuzz); | 134 EXPECT_EQ(UpdateCheckScheduler::kTimeoutRegularFuzz, fuzz); |
| 105 } | 135 } |
| 106 | 136 |
| 107 TEST_F(UpdateCheckSchedulerTest, GTimeoutAddSecondsTest) { | 137 TEST_F(UpdateCheckSchedulerTest, GTimeoutAddSecondsTest) { |
| 108 loop_ = g_main_loop_new(g_main_context_default(), FALSE); | 138 loop_ = g_main_loop_new(g_main_context_default(), FALSE); |
| 109 // Invokes the actual GLib wrapper method rather than the subclass mock. | 139 // Invokes the actual GLib wrapper method rather than the subclass mock. |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 230 scheduler_.SetUpdateStatus(UPDATE_STATUS_DOWNLOADING); | 260 scheduler_.SetUpdateStatus(UPDATE_STATUS_DOWNLOADING); |
| 231 } | 261 } |
| 232 | 262 |
| 233 TEST_F(UpdateCheckSchedulerTest, StaticCheckTest) { | 263 TEST_F(UpdateCheckSchedulerTest, StaticCheckTest) { |
| 234 scheduler_.scheduled_ = true; | 264 scheduler_.scheduled_ = true; |
| 235 EXPECT_CALL(attempter_, Update("", "")).Times(1); | 265 EXPECT_CALL(attempter_, Update("", "")).Times(1); |
| 236 UpdateCheckSchedulerUnderTest::StaticCheck(&scheduler_); | 266 UpdateCheckSchedulerUnderTest::StaticCheck(&scheduler_); |
| 237 } | 267 } |
| 238 | 268 |
| 239 } // namespace chromeos_update_engine | 269 } // namespace chromeos_update_engine |
| OLD | NEW |