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

Side by Side Diff: sync/engine/sync_scheduler_unittest.cc

Issue 10795018: [Sync] Remove unneeded 'using syncer::' lines and 'syncer::' scopings (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fiix indent Created 8 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « sync/engine/sync_scheduler_impl.cc ('k') | sync/engine/sync_scheduler_whitebox_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/callback.h" 6 #include "base/callback.h"
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/memory/weak_ptr.h" 8 #include "base/memory/weak_ptr.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/test/test_timeouts.h" 10 #include "base/test/test_timeouts.h"
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 public: 92 public:
93 MOCK_METHOD1(GetDelay, TimeDelta(const TimeDelta&)); 93 MOCK_METHOD1(GetDelay, TimeDelta(const TimeDelta&));
94 }; 94 };
95 95
96 virtual void SetUp() { 96 virtual void SetUp() {
97 dir_maker_.SetUp(); 97 dir_maker_.SetUp();
98 syncer_ = new MockSyncer(); 98 syncer_ = new MockSyncer();
99 delay_ = NULL; 99 delay_ = NULL;
100 100
101 ModelSafeRoutingInfo routing_info; 101 ModelSafeRoutingInfo routing_info;
102 routing_info[syncer::BOOKMARKS] = GROUP_UI; 102 routing_info[BOOKMARKS] = GROUP_UI;
103 routing_info[syncer::AUTOFILL] = GROUP_DB; 103 routing_info[AUTOFILL] = GROUP_DB;
104 routing_info[syncer::THEMES] = GROUP_UI; 104 routing_info[THEMES] = GROUP_UI;
105 routing_info[syncer::NIGORI] = GROUP_PASSIVE; 105 routing_info[NIGORI] = GROUP_PASSIVE;
106 106
107 workers_.push_back(make_scoped_refptr(new FakeModelWorker(GROUP_UI))); 107 workers_.push_back(make_scoped_refptr(new FakeModelWorker(GROUP_UI)));
108 workers_.push_back(make_scoped_refptr(new FakeModelWorker(GROUP_DB))); 108 workers_.push_back(make_scoped_refptr(new FakeModelWorker(GROUP_DB)));
109 workers_.push_back(make_scoped_refptr(new FakeModelWorker(GROUP_PASSIVE))); 109 workers_.push_back(make_scoped_refptr(new FakeModelWorker(GROUP_PASSIVE)));
110 110
111 std::vector<ModelSafeWorker*> workers; 111 std::vector<ModelSafeWorker*> workers;
112 for (std::vector<scoped_refptr<FakeModelWorker> >::iterator it = 112 for (std::vector<scoped_refptr<FakeModelWorker> >::iterator it =
113 workers_.begin(); it != workers_.end(); ++it) { 113 workers_.begin(); it != workers_.end(); ++it) {
114 workers.push_back(it->get()); 114 workers.push_back(it->get());
115 } 115 }
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 184
185 void UseMockDelayProvider() { 185 void UseMockDelayProvider() {
186 delay_ = new MockDelayProvider(); 186 delay_ = new MockDelayProvider();
187 scheduler_->delay_provider_.reset(delay_); 187 scheduler_->delay_provider_.reset(delay_);
188 } 188 }
189 189
190 // Compare a ModelTypeSet to a ModelTypePayloadMap, ignoring 190 // Compare a ModelTypeSet to a ModelTypePayloadMap, ignoring
191 // payload values. 191 // payload values.
192 bool CompareModelTypeSetToModelTypePayloadMap( 192 bool CompareModelTypeSetToModelTypePayloadMap(
193 ModelTypeSet lhs, 193 ModelTypeSet lhs,
194 const syncer::ModelTypePayloadMap& rhs) { 194 const ModelTypePayloadMap& rhs) {
195 size_t count = 0; 195 size_t count = 0;
196 for (syncer::ModelTypePayloadMap::const_iterator i = rhs.begin(); 196 for (ModelTypePayloadMap::const_iterator i = rhs.begin();
197 i != rhs.end(); ++i, ++count) { 197 i != rhs.end(); ++i, ++count) {
198 if (!lhs.Has(i->first)) 198 if (!lhs.Has(i->first))
199 return false; 199 return false;
200 } 200 }
201 if (lhs.Size() != count) 201 if (lhs.Size() != count)
202 return false; 202 return false;
203 return true; 203 return true;
204 } 204 }
205 205
206 SyncSessionContext* context() { return context_.get(); } 206 SyncSessionContext* context() { return context_.get(); }
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 QuitLoopNow(); 248 QuitLoopNow();
249 } 249 }
250 250
251 ACTION(QuitLoopNowAction) { 251 ACTION(QuitLoopNowAction) {
252 QuitLoopNow(); 252 QuitLoopNow();
253 } 253 }
254 254
255 // Test nudge scheduling. 255 // Test nudge scheduling.
256 TEST_F(SyncSchedulerTest, Nudge) { 256 TEST_F(SyncSchedulerTest, Nudge) {
257 SyncShareRecords records; 257 SyncShareRecords records;
258 ModelTypeSet model_types(syncer::BOOKMARKS); 258 ModelTypeSet model_types(BOOKMARKS);
259 259
260 EXPECT_CALL(*syncer(), SyncShare(_,_,_)) 260 EXPECT_CALL(*syncer(), SyncShare(_,_,_))
261 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), 261 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess),
262 WithArg<0>(RecordSyncShare(&records)))) 262 WithArg<0>(RecordSyncShare(&records))))
263 .RetiresOnSaturation(); 263 .RetiresOnSaturation();
264 264
265 StartSyncScheduler(SyncScheduler::NORMAL_MODE); 265 StartSyncScheduler(SyncScheduler::NORMAL_MODE);
266 266
267 scheduler()->ScheduleNudgeAsync( 267 scheduler()->ScheduleNudgeAsync(
268 zero(), NUDGE_SOURCE_LOCAL, model_types, FROM_HERE); 268 zero(), NUDGE_SOURCE_LOCAL, model_types, FROM_HERE);
269 RunLoop(); 269 RunLoop();
270 270
271 ASSERT_EQ(1U, records.snapshots.size()); 271 ASSERT_EQ(1U, records.snapshots.size());
272 EXPECT_TRUE(CompareModelTypeSetToModelTypePayloadMap(model_types, 272 EXPECT_TRUE(CompareModelTypeSetToModelTypePayloadMap(model_types,
273 records.snapshots[0].source().types)); 273 records.snapshots[0].source().types));
274 EXPECT_EQ(GetUpdatesCallerInfo::LOCAL, 274 EXPECT_EQ(GetUpdatesCallerInfo::LOCAL,
275 records.snapshots[0].source().updates_source); 275 records.snapshots[0].source().updates_source);
276 276
277 Mock::VerifyAndClearExpectations(syncer()); 277 Mock::VerifyAndClearExpectations(syncer());
278 278
279 // Make sure a second, later, nudge is unaffected by first (no coalescing). 279 // Make sure a second, later, nudge is unaffected by first (no coalescing).
280 SyncShareRecords records2; 280 SyncShareRecords records2;
281 model_types.Remove(syncer::BOOKMARKS); 281 model_types.Remove(BOOKMARKS);
282 model_types.Put(syncer::AUTOFILL); 282 model_types.Put(AUTOFILL);
283 EXPECT_CALL(*syncer(), SyncShare(_,_,_)) 283 EXPECT_CALL(*syncer(), SyncShare(_,_,_))
284 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), 284 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess),
285 WithArg<0>(RecordSyncShare(&records2)))); 285 WithArg<0>(RecordSyncShare(&records2))));
286 scheduler()->ScheduleNudgeAsync( 286 scheduler()->ScheduleNudgeAsync(
287 zero(), NUDGE_SOURCE_LOCAL, model_types, FROM_HERE); 287 zero(), NUDGE_SOURCE_LOCAL, model_types, FROM_HERE);
288 RunLoop(); 288 RunLoop();
289 289
290 ASSERT_EQ(1U, records2.snapshots.size()); 290 ASSERT_EQ(1U, records2.snapshots.size());
291 EXPECT_TRUE(CompareModelTypeSetToModelTypePayloadMap(model_types, 291 EXPECT_TRUE(CompareModelTypeSetToModelTypePayloadMap(model_types,
292 records2.snapshots[0].source().types)); 292 records2.snapshots[0].source().types));
293 EXPECT_EQ(GetUpdatesCallerInfo::LOCAL, 293 EXPECT_EQ(GetUpdatesCallerInfo::LOCAL,
294 records2.snapshots[0].source().updates_source); 294 records2.snapshots[0].source().updates_source);
295 } 295 }
296 296
297 // Make sure a regular config command is scheduled fine in the absence of any 297 // Make sure a regular config command is scheduled fine in the absence of any
298 // errors. 298 // errors.
299 TEST_F(SyncSchedulerTest, Config) { 299 TEST_F(SyncSchedulerTest, Config) {
300 SyncShareRecords records; 300 SyncShareRecords records;
301 const ModelTypeSet model_types(syncer::BOOKMARKS); 301 const ModelTypeSet model_types(BOOKMARKS);
302 302
303 EXPECT_CALL(*syncer(), 303 EXPECT_CALL(*syncer(),
304 SyncShare(_,_,_)) 304 SyncShare(_,_,_))
305 .WillOnce(Invoke(sessions::test_util::SimulateSuccess)) 305 .WillOnce(Invoke(sessions::test_util::SimulateSuccess))
306 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), 306 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess),
307 WithArg<0>(RecordSyncShare(&records)))); 307 WithArg<0>(RecordSyncShare(&records))));
308 308
309 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); 309 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE);
310 310
311 CallbackCounter counter; 311 CallbackCounter counter;
(...skipping 12 matching lines...) Expand all
324 EXPECT_EQ(GetUpdatesCallerInfo::RECONFIGURATION, 324 EXPECT_EQ(GetUpdatesCallerInfo::RECONFIGURATION,
325 records.snapshots[0].source().updates_source); 325 records.snapshots[0].source().updates_source);
326 } 326 }
327 327
328 // Simulate a failure and make sure the config request is retried. 328 // Simulate a failure and make sure the config request is retried.
329 TEST_F(SyncSchedulerTest, ConfigWithBackingOff) { 329 TEST_F(SyncSchedulerTest, ConfigWithBackingOff) {
330 UseMockDelayProvider(); 330 UseMockDelayProvider();
331 EXPECT_CALL(*delay(), GetDelay(_)) 331 EXPECT_CALL(*delay(), GetDelay(_))
332 .WillRepeatedly(Return(TimeDelta::FromMilliseconds(1))); 332 .WillRepeatedly(Return(TimeDelta::FromMilliseconds(1)));
333 SyncShareRecords records; 333 SyncShareRecords records;
334 const ModelTypeSet model_types(syncer::BOOKMARKS); 334 const ModelTypeSet model_types(BOOKMARKS);
335 335
336 EXPECT_CALL(*syncer(), 336 EXPECT_CALL(*syncer(),
337 SyncShare(_,_,_)) 337 SyncShare(_,_,_))
338 .WillOnce(Invoke(sessions::test_util::SimulateSuccess)) 338 .WillOnce(Invoke(sessions::test_util::SimulateSuccess))
339 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateCommitFailed), 339 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateCommitFailed),
340 WithArg<0>(RecordSyncShare(&records)))) 340 WithArg<0>(RecordSyncShare(&records))))
341 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), 341 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess),
342 WithArg<0>(RecordSyncShare(&records)))); 342 WithArg<0>(RecordSyncShare(&records))));
343 343
344 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); 344 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE);
(...skipping 16 matching lines...) Expand all
361 ASSERT_EQ(1, counter.times_called()); 361 ASSERT_EQ(1, counter.times_called());
362 EXPECT_TRUE(CompareModelTypeSetToModelTypePayloadMap(model_types, 362 EXPECT_TRUE(CompareModelTypeSetToModelTypePayloadMap(model_types,
363 records.snapshots[1].source().types)); 363 records.snapshots[1].source().types));
364 EXPECT_EQ(GetUpdatesCallerInfo::RECONFIGURATION, 364 EXPECT_EQ(GetUpdatesCallerInfo::RECONFIGURATION,
365 records.snapshots[1].source().updates_source); 365 records.snapshots[1].source().updates_source);
366 } 366 }
367 367
368 // Issue a nudge when the config has failed. Make sure both the config and 368 // Issue a nudge when the config has failed. Make sure both the config and
369 // nudge are executed. 369 // nudge are executed.
370 TEST_F(SyncSchedulerTest, NudgeWithConfigWithBackingOff) { 370 TEST_F(SyncSchedulerTest, NudgeWithConfigWithBackingOff) {
371 const ModelTypeSet model_types(syncer::BOOKMARKS); 371 const ModelTypeSet model_types(BOOKMARKS);
372 UseMockDelayProvider(); 372 UseMockDelayProvider();
373 EXPECT_CALL(*delay(), GetDelay(_)) 373 EXPECT_CALL(*delay(), GetDelay(_))
374 .WillRepeatedly(Return(TimeDelta::FromMilliseconds(50))); 374 .WillRepeatedly(Return(TimeDelta::FromMilliseconds(50)));
375 SyncShareRecords records; 375 SyncShareRecords records;
376 376
377 EXPECT_CALL(*syncer(), SyncShare(_,_,_)) 377 EXPECT_CALL(*syncer(), SyncShare(_,_,_))
378 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateCommitFailed), 378 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateCommitFailed),
379 WithArg<0>(RecordSyncShare(&records)))) 379 WithArg<0>(RecordSyncShare(&records))))
380 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateCommitFailed), 380 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateCommitFailed),
381 WithArg<0>(RecordSyncShare(&records)))) 381 WithArg<0>(RecordSyncShare(&records))))
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
426 } 426 }
427 427
428 // Test that nudges are coalesced. 428 // Test that nudges are coalesced.
429 TEST_F(SyncSchedulerTest, NudgeCoalescing) { 429 TEST_F(SyncSchedulerTest, NudgeCoalescing) {
430 StartSyncScheduler(SyncScheduler::NORMAL_MODE); 430 StartSyncScheduler(SyncScheduler::NORMAL_MODE);
431 431
432 SyncShareRecords r; 432 SyncShareRecords r;
433 EXPECT_CALL(*syncer(), SyncShare(_,_,_)) 433 EXPECT_CALL(*syncer(), SyncShare(_,_,_))
434 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), 434 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess),
435 WithArg<0>(RecordSyncShare(&r)))); 435 WithArg<0>(RecordSyncShare(&r))));
436 const ModelTypeSet 436 const ModelTypeSet types1(BOOKMARKS), types2(AUTOFILL), types3(THEMES);
437 types1(syncer::BOOKMARKS),
438 types2(syncer::AUTOFILL),
439 types3(syncer::THEMES);
440 TimeDelta delay = zero(); 437 TimeDelta delay = zero();
441 TimeTicks optimal_time = TimeTicks::Now() + delay; 438 TimeTicks optimal_time = TimeTicks::Now() + delay;
442 scheduler()->ScheduleNudgeAsync( 439 scheduler()->ScheduleNudgeAsync(
443 delay, NUDGE_SOURCE_UNKNOWN, types1, FROM_HERE); 440 delay, NUDGE_SOURCE_UNKNOWN, types1, FROM_HERE);
444 scheduler()->ScheduleNudgeAsync( 441 scheduler()->ScheduleNudgeAsync(
445 zero(), NUDGE_SOURCE_LOCAL, types2, FROM_HERE); 442 zero(), NUDGE_SOURCE_LOCAL, types2, FROM_HERE);
446 RunLoop(); 443 RunLoop();
447 444
448 ASSERT_EQ(1U, r.snapshots.size()); 445 ASSERT_EQ(1U, r.snapshots.size());
449 EXPECT_GE(r.times[0], optimal_time); 446 EXPECT_GE(r.times[0], optimal_time);
(...skipping 20 matching lines...) Expand all
470 } 467 }
471 468
472 // Test that nudges are coalesced. 469 // Test that nudges are coalesced.
473 TEST_F(SyncSchedulerTest, NudgeCoalescingWithDifferentTimings) { 470 TEST_F(SyncSchedulerTest, NudgeCoalescingWithDifferentTimings) {
474 StartSyncScheduler(SyncScheduler::NORMAL_MODE); 471 StartSyncScheduler(SyncScheduler::NORMAL_MODE);
475 472
476 SyncShareRecords r; 473 SyncShareRecords r;
477 EXPECT_CALL(*syncer(), SyncShare(_,_,_)) 474 EXPECT_CALL(*syncer(), SyncShare(_,_,_))
478 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), 475 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess),
479 WithArg<0>(RecordSyncShare(&r)))); 476 WithArg<0>(RecordSyncShare(&r))));
480 syncer::ModelTypeSet types1(syncer::BOOKMARKS), 477 ModelTypeSet types1(BOOKMARKS), types2(AUTOFILL), types3;
481 types2(syncer::AUTOFILL), types3;
482 478
483 // Create a huge time delay. 479 // Create a huge time delay.
484 TimeDelta delay = TimeDelta::FromDays(1); 480 TimeDelta delay = TimeDelta::FromDays(1);
485 481
486 scheduler()->ScheduleNudgeAsync( 482 scheduler()->ScheduleNudgeAsync(
487 delay, NUDGE_SOURCE_UNKNOWN, types1, FROM_HERE); 483 delay, NUDGE_SOURCE_UNKNOWN, types1, FROM_HERE);
488 484
489 scheduler()->ScheduleNudgeAsync( 485 scheduler()->ScheduleNudgeAsync(
490 zero(), NUDGE_SOURCE_UNKNOWN, types2, FROM_HERE); 486 zero(), NUDGE_SOURCE_UNKNOWN, types2, FROM_HERE);
491 487
(...skipping 10 matching lines...) Expand all
502 // Make sure the sync happened at the right time. 498 // Make sure the sync happened at the right time.
503 EXPECT_GE(r.times[0], min_time); 499 EXPECT_GE(r.times[0], min_time);
504 EXPECT_LE(r.times[0], max_time); 500 EXPECT_LE(r.times[0], max_time);
505 } 501 }
506 502
507 // Test nudge scheduling. 503 // Test nudge scheduling.
508 TEST_F(SyncSchedulerTest, NudgeWithPayloads) { 504 TEST_F(SyncSchedulerTest, NudgeWithPayloads) {
509 StartSyncScheduler(SyncScheduler::NORMAL_MODE); 505 StartSyncScheduler(SyncScheduler::NORMAL_MODE);
510 506
511 SyncShareRecords records; 507 SyncShareRecords records;
512 syncer::ModelTypePayloadMap model_types_with_payloads; 508 ModelTypePayloadMap model_types_with_payloads;
513 model_types_with_payloads[syncer::BOOKMARKS] = "test"; 509 model_types_with_payloads[BOOKMARKS] = "test";
514 510
515 EXPECT_CALL(*syncer(), SyncShare(_,_,_)) 511 EXPECT_CALL(*syncer(), SyncShare(_,_,_))
516 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), 512 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess),
517 WithArg<0>(RecordSyncShare(&records)))) 513 WithArg<0>(RecordSyncShare(&records))))
518 .RetiresOnSaturation(); 514 .RetiresOnSaturation();
519 scheduler()->ScheduleNudgeWithPayloadsAsync( 515 scheduler()->ScheduleNudgeWithPayloadsAsync(
520 zero(), NUDGE_SOURCE_LOCAL, model_types_with_payloads, FROM_HERE); 516 zero(), NUDGE_SOURCE_LOCAL, model_types_with_payloads, FROM_HERE);
521 RunLoop(); 517 RunLoop();
522 518
523 ASSERT_EQ(1U, records.snapshots.size()); 519 ASSERT_EQ(1U, records.snapshots.size());
524 EXPECT_EQ(model_types_with_payloads, records.snapshots[0].source().types); 520 EXPECT_EQ(model_types_with_payloads, records.snapshots[0].source().types);
525 EXPECT_EQ(GetUpdatesCallerInfo::LOCAL, 521 EXPECT_EQ(GetUpdatesCallerInfo::LOCAL,
526 records.snapshots[0].source().updates_source); 522 records.snapshots[0].source().updates_source);
527 523
528 Mock::VerifyAndClearExpectations(syncer()); 524 Mock::VerifyAndClearExpectations(syncer());
529 525
530 // Make sure a second, later, nudge is unaffected by first (no coalescing). 526 // Make sure a second, later, nudge is unaffected by first (no coalescing).
531 SyncShareRecords records2; 527 SyncShareRecords records2;
532 model_types_with_payloads.erase(syncer::BOOKMARKS); 528 model_types_with_payloads.erase(BOOKMARKS);
533 model_types_with_payloads[syncer::AUTOFILL] = "test2"; 529 model_types_with_payloads[AUTOFILL] = "test2";
534 EXPECT_CALL(*syncer(), SyncShare(_,_,_)) 530 EXPECT_CALL(*syncer(), SyncShare(_,_,_))
535 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), 531 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess),
536 WithArg<0>(RecordSyncShare(&records2)))); 532 WithArg<0>(RecordSyncShare(&records2))));
537 scheduler()->ScheduleNudgeWithPayloadsAsync( 533 scheduler()->ScheduleNudgeWithPayloadsAsync(
538 zero(), NUDGE_SOURCE_LOCAL, model_types_with_payloads, FROM_HERE); 534 zero(), NUDGE_SOURCE_LOCAL, model_types_with_payloads, FROM_HERE);
539 RunLoop(); 535 RunLoop();
540 536
541 ASSERT_EQ(1U, records2.snapshots.size()); 537 ASSERT_EQ(1U, records2.snapshots.size());
542 EXPECT_EQ(model_types_with_payloads, records2.snapshots[0].source().types); 538 EXPECT_EQ(model_types_with_payloads, records2.snapshots[0].source().types);
543 EXPECT_EQ(GetUpdatesCallerInfo::LOCAL, 539 EXPECT_EQ(GetUpdatesCallerInfo::LOCAL,
544 records2.snapshots[0].source().updates_source); 540 records2.snapshots[0].source().updates_source);
545 } 541 }
546 542
547 // Test that nudges are coalesced. 543 // Test that nudges are coalesced.
548 TEST_F(SyncSchedulerTest, NudgeWithPayloadsCoalescing) { 544 TEST_F(SyncSchedulerTest, NudgeWithPayloadsCoalescing) {
549 StartSyncScheduler(SyncScheduler::NORMAL_MODE); 545 StartSyncScheduler(SyncScheduler::NORMAL_MODE);
550 546
551 SyncShareRecords r; 547 SyncShareRecords r;
552 EXPECT_CALL(*syncer(), SyncShare(_,_,_)) 548 EXPECT_CALL(*syncer(), SyncShare(_,_,_))
553 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), 549 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess),
554 WithArg<0>(RecordSyncShare(&r)))); 550 WithArg<0>(RecordSyncShare(&r))));
555 syncer::ModelTypePayloadMap types1, types2, types3; 551 ModelTypePayloadMap types1, types2, types3;
556 types1[syncer::BOOKMARKS] = "test1"; 552 types1[BOOKMARKS] = "test1";
557 types2[syncer::AUTOFILL] = "test2"; 553 types2[AUTOFILL] = "test2";
558 types3[syncer::THEMES] = "test3"; 554 types3[THEMES] = "test3";
559 TimeDelta delay = zero(); 555 TimeDelta delay = zero();
560 TimeTicks optimal_time = TimeTicks::Now() + delay; 556 TimeTicks optimal_time = TimeTicks::Now() + delay;
561 scheduler()->ScheduleNudgeWithPayloadsAsync( 557 scheduler()->ScheduleNudgeWithPayloadsAsync(
562 delay, NUDGE_SOURCE_UNKNOWN, types1, FROM_HERE); 558 delay, NUDGE_SOURCE_UNKNOWN, types1, FROM_HERE);
563 scheduler()->ScheduleNudgeWithPayloadsAsync( 559 scheduler()->ScheduleNudgeWithPayloadsAsync(
564 zero(), NUDGE_SOURCE_LOCAL, types2, FROM_HERE); 560 zero(), NUDGE_SOURCE_LOCAL, types2, FROM_HERE);
565 RunLoop(); 561 RunLoop();
566 562
567 ASSERT_EQ(1U, r.snapshots.size()); 563 ASSERT_EQ(1U, r.snapshots.size());
568 EXPECT_GE(r.times[0], optimal_time); 564 EXPECT_GE(r.times[0], optimal_time);
569 syncer::ModelTypePayloadMap coalesced_types; 565 ModelTypePayloadMap coalesced_types;
570 syncer::CoalescePayloads(&coalesced_types, types1); 566 CoalescePayloads(&coalesced_types, types1);
571 syncer::CoalescePayloads(&coalesced_types, types2); 567 CoalescePayloads(&coalesced_types, types2);
572 EXPECT_EQ(coalesced_types, r.snapshots[0].source().types); 568 EXPECT_EQ(coalesced_types, r.snapshots[0].source().types);
573 EXPECT_EQ(GetUpdatesCallerInfo::LOCAL, 569 EXPECT_EQ(GetUpdatesCallerInfo::LOCAL,
574 r.snapshots[0].source().updates_source); 570 r.snapshots[0].source().updates_source);
575 571
576 Mock::VerifyAndClearExpectations(syncer()); 572 Mock::VerifyAndClearExpectations(syncer());
577 573
578 SyncShareRecords r2; 574 SyncShareRecords r2;
579 EXPECT_CALL(*syncer(), SyncShare(_,_,_)) 575 EXPECT_CALL(*syncer(), SyncShare(_,_,_))
580 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), 576 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess),
581 WithArg<0>(RecordSyncShare(&r2)))); 577 WithArg<0>(RecordSyncShare(&r2))));
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
667 WithArg<0>( 663 WithArg<0>(
668 sessions::test_util::SimulateSessionsCommitDelayUpdate( 664 sessions::test_util::SimulateSessionsCommitDelayUpdate(
669 delay2)), 665 delay2)),
670 Invoke(sessions::test_util::SimulateSuccess), 666 Invoke(sessions::test_util::SimulateSuccess),
671 QuitLoopNowAction())); 667 QuitLoopNowAction()));
672 668
673 EXPECT_EQ(delay1, scheduler()->GetSessionsCommitDelay()); 669 EXPECT_EQ(delay1, scheduler()->GetSessionsCommitDelay());
674 StartSyncScheduler(SyncScheduler::NORMAL_MODE); 670 StartSyncScheduler(SyncScheduler::NORMAL_MODE);
675 671
676 EXPECT_EQ(delay1, scheduler()->GetSessionsCommitDelay()); 672 EXPECT_EQ(delay1, scheduler()->GetSessionsCommitDelay());
677 const ModelTypeSet model_types(syncer::BOOKMARKS); 673 const ModelTypeSet model_types(BOOKMARKS);
678 scheduler()->ScheduleNudgeAsync( 674 scheduler()->ScheduleNudgeAsync(
679 zero(), NUDGE_SOURCE_LOCAL, model_types, FROM_HERE); 675 zero(), NUDGE_SOURCE_LOCAL, model_types, FROM_HERE);
680 RunLoop(); 676 RunLoop();
681 677
682 EXPECT_EQ(delay2, scheduler()->GetSessionsCommitDelay()); 678 EXPECT_EQ(delay2, scheduler()->GetSessionsCommitDelay());
683 StopSyncScheduler(); 679 StopSyncScheduler();
684 } 680 }
685 681
686 // Test that a sync session is run through to completion. 682 // Test that a sync session is run through to completion.
687 TEST_F(SyncSchedulerTest, HasMoreToSync) { 683 TEST_F(SyncSchedulerTest, HasMoreToSync) {
(...skipping 21 matching lines...) Expand all
709 scheduler()->ScheduleNudgeAsync( 705 scheduler()->ScheduleNudgeAsync(
710 zero(), NUDGE_SOURCE_LOCAL, ModelTypeSet(), FROM_HERE); 706 zero(), NUDGE_SOURCE_LOCAL, ModelTypeSet(), FROM_HERE);
711 707
712 // We should detect the failure on the second sync share, and go into backoff. 708 // We should detect the failure on the second sync share, and go into backoff.
713 EXPECT_TRUE(RunAndGetBackoff()); 709 EXPECT_TRUE(RunAndGetBackoff());
714 } 710 }
715 711
716 // Test that no syncing occurs when throttled (although CleanupDisabledTypes 712 // Test that no syncing occurs when throttled (although CleanupDisabledTypes
717 // is allowed). 713 // is allowed).
718 TEST_F(SyncSchedulerTest, ThrottlingDoesThrottle) { 714 TEST_F(SyncSchedulerTest, ThrottlingDoesThrottle) {
719 const ModelTypeSet types(syncer::BOOKMARKS); 715 const ModelTypeSet types(BOOKMARKS);
720 TimeDelta poll(TimeDelta::FromMilliseconds(5)); 716 TimeDelta poll(TimeDelta::FromMilliseconds(5));
721 TimeDelta throttle(TimeDelta::FromMinutes(10)); 717 TimeDelta throttle(TimeDelta::FromMinutes(10));
722 scheduler()->OnReceivedLongPollIntervalUpdate(poll); 718 scheduler()->OnReceivedLongPollIntervalUpdate(poll);
723 719
724 EXPECT_CALL(*syncer(), 720 EXPECT_CALL(*syncer(),
725 SyncShare(_, CLEANUP_DISABLED_TYPES, CLEANUP_DISABLED_TYPES)) 721 SyncShare(_, CLEANUP_DISABLED_TYPES, CLEANUP_DISABLED_TYPES))
726 .WillOnce(Invoke(sessions::test_util::SimulateSuccess)); 722 .WillOnce(Invoke(sessions::test_util::SimulateSuccess));
727 EXPECT_CALL(*syncer(), SyncShare(_,Not(CLEANUP_DISABLED_TYPES), 723 EXPECT_CALL(*syncer(), SyncShare(_,Not(CLEANUP_DISABLED_TYPES),
728 Not(CLEANUP_DISABLED_TYPES))) 724 Not(CLEANUP_DISABLED_TYPES)))
729 .WillOnce(WithArg<0>(sessions::test_util::SimulateThrottled(throttle))) 725 .WillOnce(WithArg<0>(sessions::test_util::SimulateThrottled(throttle)))
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
777 TimeDelta poll(TimeDelta::FromMilliseconds(15)); 773 TimeDelta poll(TimeDelta::FromMilliseconds(15));
778 SyncShareRecords records; 774 SyncShareRecords records;
779 scheduler()->OnReceivedLongPollIntervalUpdate(poll); 775 scheduler()->OnReceivedLongPollIntervalUpdate(poll);
780 EXPECT_CALL(*syncer(), SyncShare(_,_,_)) 776 EXPECT_CALL(*syncer(), SyncShare(_,_,_))
781 .WillOnce(Invoke(sessions::test_util::SimulateSuccess)) 777 .WillOnce(Invoke(sessions::test_util::SimulateSuccess))
782 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), 778 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess),
783 WithArg<0>(RecordSyncShare(&records)))); 779 WithArg<0>(RecordSyncShare(&records))));
784 780
785 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); 781 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE);
786 782
787 const ModelTypeSet nudge_types(syncer::AUTOFILL); 783 const ModelTypeSet nudge_types(AUTOFILL);
788 scheduler()->ScheduleNudgeAsync( 784 scheduler()->ScheduleNudgeAsync(
789 zero(), NUDGE_SOURCE_LOCAL, nudge_types, FROM_HERE); 785 zero(), NUDGE_SOURCE_LOCAL, nudge_types, FROM_HERE);
790 scheduler()->ScheduleNudgeAsync( 786 scheduler()->ScheduleNudgeAsync(
791 zero(), NUDGE_SOURCE_LOCAL, nudge_types, FROM_HERE); 787 zero(), NUDGE_SOURCE_LOCAL, nudge_types, FROM_HERE);
792 788
793 const ModelTypeSet config_types(syncer::BOOKMARKS); 789 const ModelTypeSet config_types(BOOKMARKS);
794 790
795 CallbackCounter counter; 791 CallbackCounter counter;
796 ConfigurationParams params( 792 ConfigurationParams params(
797 GetUpdatesCallerInfo::RECONFIGURATION, 793 GetUpdatesCallerInfo::RECONFIGURATION,
798 config_types, 794 config_types,
799 TypesToRoutingInfo(config_types), 795 TypesToRoutingInfo(config_types),
800 ConfigurationParams::KEYSTORE_KEY_UNNECESSARY, 796 ConfigurationParams::KEYSTORE_KEY_UNNECESSARY,
801 base::Bind(&CallbackCounter::Callback, base::Unretained(&counter))); 797 base::Bind(&CallbackCounter::Callback, base::Unretained(&counter)));
802 ASSERT_TRUE(scheduler()->ScheduleConfiguration(params)); 798 ASSERT_TRUE(scheduler()->ScheduleConfiguration(params));
803 ASSERT_EQ(1, counter.times_called()); 799 ASSERT_EQ(1, counter.times_called());
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
858 .WillRepeatedly(DoAll( 854 .WillRepeatedly(DoAll(
859 Invoke(sessions::test_util::SimulateDownloadUpdatesFailed), 855 Invoke(sessions::test_util::SimulateDownloadUpdatesFailed),
860 QuitLoopNowAction())); 856 QuitLoopNowAction()));
861 EXPECT_TRUE(RunAndGetBackoff()); 857 EXPECT_TRUE(RunAndGetBackoff());
862 } 858 }
863 859
864 // Test that no polls or extraneous nudges occur when in backoff. 860 // Test that no polls or extraneous nudges occur when in backoff.
865 TEST_F(SyncSchedulerTest, BackoffDropsJobs) { 861 TEST_F(SyncSchedulerTest, BackoffDropsJobs) {
866 SyncShareRecords r; 862 SyncShareRecords r;
867 TimeDelta poll(TimeDelta::FromMilliseconds(5)); 863 TimeDelta poll(TimeDelta::FromMilliseconds(5));
868 const ModelTypeSet types(syncer::BOOKMARKS); 864 const ModelTypeSet types(BOOKMARKS);
869 scheduler()->OnReceivedLongPollIntervalUpdate(poll); 865 scheduler()->OnReceivedLongPollIntervalUpdate(poll);
870 UseMockDelayProvider(); 866 UseMockDelayProvider();
871 867
872 EXPECT_CALL(*syncer(), SyncShare(_,_,_)) 868 EXPECT_CALL(*syncer(), SyncShare(_,_,_))
873 .WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateCommitFailed), 869 .WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateCommitFailed),
874 RecordSyncShareMultiple(&r, 1U))); 870 RecordSyncShareMultiple(&r, 1U)));
875 EXPECT_CALL(*delay(), GetDelay(_)). 871 EXPECT_CALL(*delay(), GetDelay(_)).
876 WillRepeatedly(Return(TimeDelta::FromDays(1))); 872 WillRepeatedly(Return(TimeDelta::FromDays(1)));
877 873
878 StartSyncScheduler(SyncScheduler::NORMAL_MODE); 874 StartSyncScheduler(SyncScheduler::NORMAL_MODE);
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
1081 Mock::VerifyAndClearExpectations(syncer()); 1077 Mock::VerifyAndClearExpectations(syncer());
1082 1078
1083 // Configuration (always includes a cleanup disabled types). 1079 // Configuration (always includes a cleanup disabled types).
1084 EXPECT_CALL(*syncer(), 1080 EXPECT_CALL(*syncer(),
1085 SyncShare(_, CLEANUP_DISABLED_TYPES, CLEANUP_DISABLED_TYPES)) 1081 SyncShare(_, CLEANUP_DISABLED_TYPES, CLEANUP_DISABLED_TYPES))
1086 .WillOnce(Invoke(sessions::test_util::SimulateSuccess)); 1082 .WillOnce(Invoke(sessions::test_util::SimulateSuccess));
1087 EXPECT_CALL(*syncer(), SyncShare(_, DOWNLOAD_UPDATES, APPLY_UPDATES)) 1083 EXPECT_CALL(*syncer(), SyncShare(_, DOWNLOAD_UPDATES, APPLY_UPDATES))
1088 .WillOnce(Invoke(sessions::test_util::SimulateSuccess)); 1084 .WillOnce(Invoke(sessions::test_util::SimulateSuccess));
1089 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); 1085 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE);
1090 1086
1091 syncer::ModelTypeSet model_types(syncer::BOOKMARKS); 1087 ModelTypeSet model_types(BOOKMARKS);
1092 CallbackCounter counter; 1088 CallbackCounter counter;
1093 ConfigurationParams params( 1089 ConfigurationParams params(
1094 GetUpdatesCallerInfo::RECONFIGURATION, 1090 GetUpdatesCallerInfo::RECONFIGURATION,
1095 model_types, 1091 model_types,
1096 TypesToRoutingInfo(model_types), 1092 TypesToRoutingInfo(model_types),
1097 ConfigurationParams::KEYSTORE_KEY_UNNECESSARY, 1093 ConfigurationParams::KEYSTORE_KEY_UNNECESSARY,
1098 base::Bind(&CallbackCounter::Callback, base::Unretained(&counter))); 1094 base::Bind(&CallbackCounter::Callback, base::Unretained(&counter)));
1099 ASSERT_TRUE(scheduler()->ScheduleConfiguration(params)); 1095 ASSERT_TRUE(scheduler()->ScheduleConfiguration(params));
1100 ASSERT_EQ(1, counter.times_called()); 1096 ASSERT_EQ(1, counter.times_called());
1101 // Runs directly so no need to pump the loop. 1097 // Runs directly so no need to pump the loop.
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1180 PumpLoop(); 1176 PumpLoop();
1181 // Pump again to run job. 1177 // Pump again to run job.
1182 PumpLoop(); 1178 PumpLoop();
1183 1179
1184 StopSyncScheduler(); 1180 StopSyncScheduler();
1185 1181
1186 EXPECT_TRUE(expected == context()->previous_session_routing_info()); 1182 EXPECT_TRUE(expected == context()->previous_session_routing_info());
1187 } 1183 }
1188 1184
1189 } // namespace syncer 1185 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/engine/sync_scheduler_impl.cc ('k') | sync/engine/sync_scheduler_whitebox_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698