| Index: sync/engine/sync_scheduler_unittest.cc
|
| diff --git a/sync/engine/sync_scheduler_unittest.cc b/sync/engine/sync_scheduler_unittest.cc
|
| index b6cdf6adf96c60cb37a8da27159e1a7f0728fa43..9f621a093be813f20efa518a3a5ca2ee018ea3a4 100644
|
| --- a/sync/engine/sync_scheduler_unittest.cc
|
| +++ b/sync/engine/sync_scheduler_unittest.cc
|
| @@ -1437,4 +1437,40 @@ TEST_F(SyncSchedulerTest, ReceiveNewRetryDelay) {
|
| StopSyncScheduler();
|
| }
|
|
|
| +TEST_F(SyncSchedulerTest, ScheduleClearServerData_Succeeds) {
|
| + StartSyncConfiguration();
|
| + scheduler()->Start(SyncScheduler::CLEAR_SERVER_DATA_MODE, base::Time());
|
| + CallbackCounter success_counter;
|
| + ClearParams params(base::Bind(&CallbackCounter::Callback,
|
| + base::Unretained(&success_counter)));
|
| + scheduler()->ScheduleClearServerData(params);
|
| + PumpLoop();
|
| + ASSERT_EQ(1, success_counter.times_called());
|
| +}
|
| +
|
| +TEST_F(SyncSchedulerTest, ScheduleClearServerData_FailsRetriesSucceeds) {
|
| + UseMockDelayProvider();
|
| + TimeDelta delta(TimeDelta::FromMilliseconds(20));
|
| + EXPECT_CALL(*delay(), GetDelay(_)).WillRepeatedly(Return(delta));
|
| +
|
| + StartSyncConfiguration();
|
| + scheduler()->Start(SyncScheduler::CLEAR_SERVER_DATA_MODE, base::Time());
|
| + CallbackCounter success_counter;
|
| + ClearParams params(base::Bind(&CallbackCounter::Callback,
|
| + base::Unretained(&success_counter)));
|
| +
|
| + // Next request will fail.
|
| + connection()->SetServerNotReachable();
|
| + scheduler()->ScheduleClearServerData(params);
|
| + PumpLoop();
|
| + ASSERT_EQ(0, success_counter.times_called());
|
| + ASSERT_TRUE(scheduler()->IsBackingOff());
|
| +
|
| + // Now succeed.
|
| + connection()->SetServerReachable();
|
| + PumpLoopFor(2 * delta);
|
| + ASSERT_EQ(1, success_counter.times_called());
|
| + ASSERT_FALSE(scheduler()->IsBackingOff());
|
| +}
|
| +
|
| } // namespace syncer
|
|
|