OLD | NEW |
1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2015 The Chromium 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 "chrome/browser/chromeos/policy/heartbeat_scheduler.h" | 5 #include "chrome/browser/chromeos/policy/heartbeat_scheduler.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 } | 211 } |
212 | 212 |
213 TEST_F(HeartbeatSchedulerTest, ChangeHeartbeatFrequency) { | 213 TEST_F(HeartbeatSchedulerTest, ChangeHeartbeatFrequency) { |
214 IgnoreUpstreamNotificationMsg(); | 214 IgnoreUpstreamNotificationMsg(); |
215 | 215 |
216 EXPECT_CALL(gcm_driver_, RegisterImpl(kHeartbeatGCMAppID, _)); | 216 EXPECT_CALL(gcm_driver_, RegisterImpl(kHeartbeatGCMAppID, _)); |
217 settings_helper_.SetBoolean(chromeos::kHeartbeatEnabled, true); | 217 settings_helper_.SetBoolean(chromeos::kHeartbeatEnabled, true); |
218 gcm_driver_.CompleteRegistration( | 218 gcm_driver_.CompleteRegistration( |
219 kHeartbeatGCMAppID, gcm::GCMClient::SUCCESS); | 219 kHeartbeatGCMAppID, gcm::GCMClient::SUCCESS); |
220 | 220 |
221 EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); | 221 EXPECT_EQ(1U, task_runner_->NumPendingTasks()); |
222 // Should have a heartbeat task posted with zero delay on startup. | 222 // Should have a heartbeat task posted with zero delay on startup. |
223 EXPECT_EQ(base::TimeDelta(), task_runner_->NextPendingTaskDelay()); | 223 EXPECT_EQ(base::TimeDelta(), task_runner_->NextPendingTaskDelay()); |
224 testing::Mock::VerifyAndClearExpectations(&gcm_driver_); | 224 testing::Mock::VerifyAndClearExpectations(&gcm_driver_); |
225 | 225 |
226 IgnoreUpstreamNotificationMsg(); | 226 IgnoreUpstreamNotificationMsg(); |
227 gcm_driver_.IgnoreDefaultHeartbeatsInterval(); | 227 gcm_driver_.IgnoreDefaultHeartbeatsInterval(); |
228 | 228 |
229 const int new_delay = 1234*1000; // 1234 seconds. | 229 const int new_delay = 1234*1000; // 1234 seconds. |
230 EXPECT_CALL(gcm_driver_, AddHeartbeatInterval(_, new_delay)); | 230 EXPECT_CALL(gcm_driver_, AddHeartbeatInterval(_, new_delay)); |
231 settings_helper_.SetInteger(chromeos::kHeartbeatFrequency, new_delay); | 231 settings_helper_.SetInteger(chromeos::kHeartbeatFrequency, new_delay); |
232 // Now run pending heartbeat task, should send a heartbeat. | 232 // Now run pending heartbeat task, should send a heartbeat. |
233 gcm::OutgoingMessage message; | 233 gcm::OutgoingMessage message; |
234 EXPECT_CALL(gcm_driver_, SendImpl(kHeartbeatGCMAppID, _, IsHeartbeatMsg())) | 234 EXPECT_CALL(gcm_driver_, SendImpl(kHeartbeatGCMAppID, _, IsHeartbeatMsg())) |
235 .WillOnce(SaveArg<2>(&message)); | 235 .WillOnce(SaveArg<2>(&message)); |
236 task_runner_->RunPendingTasks(); | 236 task_runner_->RunPendingTasks(); |
237 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); | 237 EXPECT_TRUE(task_runner_->GetPendingTasks().empty()); |
238 | 238 |
239 // Complete sending a message - we should queue up the next heartbeat | 239 // Complete sending a message - we should queue up the next heartbeat |
240 // even if the previous attempt failed. | 240 // even if the previous attempt failed. |
241 gcm_driver_.CompleteSend( | 241 gcm_driver_.CompleteSend( |
242 kHeartbeatGCMAppID, message.id, gcm::GCMClient::SERVER_ERROR); | 242 kHeartbeatGCMAppID, message.id, gcm::GCMClient::SERVER_ERROR); |
243 EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); | 243 EXPECT_EQ(1U, task_runner_->NumPendingTasks()); |
244 CheckPendingTaskDelay(scheduler_.last_heartbeat(), | 244 CheckPendingTaskDelay(scheduler_.last_heartbeat(), |
245 base::TimeDelta::FromMilliseconds(new_delay)); | 245 base::TimeDelta::FromMilliseconds(new_delay)); |
246 } | 246 } |
247 | 247 |
248 TEST_F(HeartbeatSchedulerTest, DisableHeartbeats) { | 248 TEST_F(HeartbeatSchedulerTest, DisableHeartbeats) { |
249 IgnoreUpstreamNotificationMsg(); | 249 IgnoreUpstreamNotificationMsg(); |
250 | 250 |
251 // Makes sure that we can disable heartbeats on the fly. | 251 // Makes sure that we can disable heartbeats on the fly. |
252 EXPECT_CALL(gcm_driver_, RegisterImpl(kHeartbeatGCMAppID, _)); | 252 EXPECT_CALL(gcm_driver_, RegisterImpl(kHeartbeatGCMAppID, _)); |
253 settings_helper_.SetBoolean(chromeos::kHeartbeatEnabled, true); | 253 settings_helper_.SetBoolean(chromeos::kHeartbeatEnabled, true); |
254 gcm::OutgoingMessage message; | 254 gcm::OutgoingMessage message; |
255 EXPECT_CALL(gcm_driver_, SendImpl(kHeartbeatGCMAppID, _, IsHeartbeatMsg())) | 255 EXPECT_CALL(gcm_driver_, SendImpl(kHeartbeatGCMAppID, _, IsHeartbeatMsg())) |
256 .WillOnce(SaveArg<2>(&message)); | 256 .WillOnce(SaveArg<2>(&message)); |
257 gcm_driver_.CompleteRegistration( | 257 gcm_driver_.CompleteRegistration( |
258 kHeartbeatGCMAppID, gcm::GCMClient::SUCCESS); | 258 kHeartbeatGCMAppID, gcm::GCMClient::SUCCESS); |
259 // Should have a heartbeat task posted. | 259 // Should have a heartbeat task posted. |
260 EXPECT_EQ(1U, task_runner_->GetPendingTasks().size()); | 260 EXPECT_EQ(1U, task_runner_->NumPendingTasks()); |
261 task_runner_->RunPendingTasks(); | 261 task_runner_->RunPendingTasks(); |
262 | 262 |
263 // Complete sending a message - we should queue up the next heartbeat. | 263 // Complete sending a message - we should queue up the next heartbeat. |
264 gcm_driver_.CompleteSend( | 264 gcm_driver_.CompleteSend( |
265 kHeartbeatGCMAppID, message.id, gcm::GCMClient::SUCCESS); | 265 kHeartbeatGCMAppID, message.id, gcm::GCMClient::SUCCESS); |
266 | 266 |
267 // Should have a new heartbeat task posted. | 267 // Should have a new heartbeat task posted. |
268 ASSERT_EQ(1U, task_runner_->GetPendingTasks().size()); | 268 ASSERT_EQ(1U, task_runner_->NumPendingTasks()); |
269 CheckPendingTaskDelay( | 269 CheckPendingTaskDelay( |
270 scheduler_.last_heartbeat(), | 270 scheduler_.last_heartbeat(), |
271 base::TimeDelta::FromMilliseconds( | 271 base::TimeDelta::FromMilliseconds( |
272 policy::HeartbeatScheduler::kDefaultHeartbeatIntervalMs)); | 272 policy::HeartbeatScheduler::kDefaultHeartbeatIntervalMs)); |
273 testing::Mock::VerifyAndClearExpectations(&gcm_driver_); | 273 testing::Mock::VerifyAndClearExpectations(&gcm_driver_); |
274 | 274 |
275 IgnoreUpstreamNotificationMsg(); | 275 IgnoreUpstreamNotificationMsg(); |
276 gcm_driver_.IgnoreDefaultHeartbeatsInterval(); | 276 gcm_driver_.IgnoreDefaultHeartbeatsInterval(); |
277 | 277 |
278 // Now disable heartbeats. Should get no more heartbeats sent. | 278 // Now disable heartbeats. Should get no more heartbeats sent. |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
350 | 350 |
351 EXPECT_CALL(gcm_driver_, | 351 EXPECT_CALL(gcm_driver_, |
352 SendImpl(kHeartbeatGCMAppID, _, IsUpstreamNotificationMsg())) | 352 SendImpl(kHeartbeatGCMAppID, _, IsUpstreamNotificationMsg())) |
353 .Times(AtLeast(1)); | 353 .Times(AtLeast(1)); |
354 gcm_driver_.CompleteRegistration(kHeartbeatGCMAppID, gcm::GCMClient::SUCCESS); | 354 gcm_driver_.CompleteRegistration(kHeartbeatGCMAppID, gcm::GCMClient::SUCCESS); |
355 | 355 |
356 gcm_driver_.NotifyConnected(); | 356 gcm_driver_.NotifyConnected(); |
357 } | 357 } |
358 | 358 |
359 } // namespace | 359 } // namespace |
OLD | NEW |