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 |