| Index: sync/engine/sync_scheduler_unittest.cc
|
| diff --git a/sync/engine/sync_scheduler_unittest.cc b/sync/engine/sync_scheduler_unittest.cc
|
| index 7746aea533eae49396d2eef9c104ae7eb2b1a729..20453f1aa95dcd23e42f37f45a5cab01d92dbbf4 100644
|
| --- a/sync/engine/sync_scheduler_unittest.cc
|
| +++ b/sync/engine/sync_scheduler_unittest.cc
|
| @@ -1133,4 +1133,32 @@ TEST_F(SyncSchedulerTest, StartWhenNotConnected) {
|
| MessageLoop::current()->RunAllPending();
|
| }
|
|
|
| +TEST_F(SyncSchedulerTest, ServerConnectionChangeDuringBackoff) {
|
| + UseMockDelayProvider();
|
| + EXPECT_CALL(*delay(), GetDelay(_))
|
| + .WillRepeatedly(Return(TimeDelta::FromMilliseconds(0)));
|
| +
|
| + StartSyncScheduler(SyncScheduler::NORMAL_MODE);
|
| + connection()->SetServerNotReachable();
|
| + connection()->UpdateConnectionStatus();
|
| +
|
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_))
|
| + .WillOnce(DoAll(Invoke(sessions::test_util::SimulateConnectionFailure),
|
| + Return(true)))
|
| + .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess),
|
| + QuitLoopNowAction()));
|
| +
|
| + scheduler()->ScheduleNudgeAsync(
|
| + zero(), NUDGE_SOURCE_LOCAL, ModelTypeSet(BOOKMARKS), FROM_HERE);
|
| +
|
| + PumpLoop(); // Run the nudge, that will fail and schedule a quick retry.
|
| + ASSERT_TRUE(scheduler()->IsBackingOff());
|
| +
|
| + // Before we run the scheduled canary, trigger a server connection change.
|
| + connection()->SetServerReachable();
|
| + connection()->UpdateConnectionStatus();
|
| + scheduler()->OnConnectionStatusChange();
|
| + MessageLoop::current()->RunAllPending();
|
| +}
|
| +
|
| } // namespace syncer
|
|
|