Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Side by Side Diff: chrome/browser/chromeos/policy/heartbeat_scheduler_unittest.cc

Issue 2296923003: Make TestSimpleTaskRunner thread-safe. (Closed)
Patch Set: fix asan error Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698