Index: sync/engine/sync_scheduler_unittest.cc |
diff --git a/sync/engine/sync_scheduler_unittest.cc b/sync/engine/sync_scheduler_unittest.cc |
index 8028b436521bbedac72ad6918c8bb802a9022759..c5de28ef7e78595148c055e97b816112d36725ce 100644 |
--- a/sync/engine/sync_scheduler_unittest.cc |
+++ b/sync/engine/sync_scheduler_unittest.cc |
@@ -733,6 +733,22 @@ TEST_F(SyncSchedulerTest, HasMoreToSync) { |
// cause our expectation to break. |
} |
+// Test that continuations can go into backoff. |
+TEST_F(SyncSchedulerTest, HasMoreToSyncThenFails) { |
+ EXPECT_CALL(*syncer(), SyncShare(_,_,_)) |
+ .WillOnce(Invoke(sessions::test_util::SimulateHasMoreToSync)) |
+ .WillOnce(DoAll(Invoke(sessions::test_util::SimulateCommitFailed), |
+ QuitLoopNowAction())); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
+ RunLoop(); |
+ |
+ scheduler()->ScheduleNudge( |
+ zero(), NUDGE_SOURCE_LOCAL, ModelTypeSet(), FROM_HERE); |
+ |
+ // We should detect the failure on the second sync share, and go into backoff. |
+ EXPECT_TRUE(RunAndGetBackoff()); |
+} |
+ |
// Test that no syncing occurs when throttled. |
TEST_F(SyncSchedulerTest, ThrottlingDoesThrottle) { |
const ModelTypeSet types(syncable::BOOKMARKS); |
@@ -862,7 +878,7 @@ TEST_F(SyncSchedulerTest, BackoffDropsJobs) { |
EXPECT_CALL(*syncer(), SyncShare(_,_,_)).Times(1) |
.WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateCommitFailed), |
- RecordSyncShareMultiple(&r, 1U))); |
+ RecordSyncShareMultiple(&r, 1U))); |
EXPECT_CALL(*delay(), GetDelay(_)). |
WillRepeatedly(Return(TimeDelta::FromDays(1))); |
@@ -881,7 +897,7 @@ TEST_F(SyncSchedulerTest, BackoffDropsJobs) { |
EXPECT_CALL(*syncer(), SyncShare(_,_,_)).Times(1) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateCommitFailed), |
- RecordSyncShare(&r))); |
+ RecordSyncShare(&r))); |
// We schedule a nudge with enough delay (10X poll interval) that at least |
// one or two polls would have taken place. The nudge should succeed. |
@@ -894,12 +910,16 @@ TEST_F(SyncSchedulerTest, BackoffDropsJobs) { |
EXPECT_EQ(GetUpdatesCallerInfo::LOCAL, |
r.snapshots[1].source().updates_source); |
- EXPECT_CALL(*syncer(), SyncShare(_,_,_)).Times(0); |
+ // Cleanup is not affected by backoff, but it should not relieve it either. |
+ EXPECT_CALL(*syncer(), |
+ SyncShare(_, CLEANUP_DISABLED_TYPES, CLEANUP_DISABLED_TYPES)) |
+ .WillOnce(Invoke(sessions::test_util::SimulateSuccess)); |
EXPECT_CALL(*delay(), GetDelay(_)).Times(0); |
StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); |
RunLoop(); |
+ scheduler()->ScheduleCleanupDisabledTypes(); |
scheduler()->ScheduleConfig( |
types, GetUpdatesCallerInfo::RECONFIGURATION); |
PumpLoop(); |
@@ -1053,7 +1073,7 @@ TEST_F(SyncSchedulerTest, GetRecommendedDelay) { |
TEST_F(SyncSchedulerTest, SyncerSteps) { |
// Nudges. |
EXPECT_CALL(*syncer(), SyncShare(_, SYNCER_BEGIN, SYNCER_END)) |
- .Times(1); |
+ .WillOnce(Invoke(sessions::test_util::SimulateSuccess)); |
StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
RunLoop(); |
@@ -1068,7 +1088,7 @@ TEST_F(SyncSchedulerTest, SyncerSteps) { |
// ClearUserData. |
EXPECT_CALL(*syncer(), SyncShare(_, CLEAR_PRIVATE_DATA, CLEAR_PRIVATE_DATA)) |
- .Times(1); |
+ .WillOnce(Invoke(sessions::test_util::SimulateSuccess)); |
StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
RunLoop(); |
@@ -1080,7 +1100,8 @@ TEST_F(SyncSchedulerTest, SyncerSteps) { |
Mock::VerifyAndClearExpectations(syncer()); |
// Configuration. |
- EXPECT_CALL(*syncer(), SyncShare(_, DOWNLOAD_UPDATES, APPLY_UPDATES)); |
+ EXPECT_CALL(*syncer(), SyncShare(_, DOWNLOAD_UPDATES, APPLY_UPDATES)) |
+ .WillOnce(Invoke(sessions::test_util::SimulateSuccess)); |
StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); |
RunLoop(); |
@@ -1094,7 +1115,8 @@ TEST_F(SyncSchedulerTest, SyncerSteps) { |
// Cleanup disabled types. |
EXPECT_CALL(*syncer(), |
- SyncShare(_, CLEANUP_DISABLED_TYPES, CLEANUP_DISABLED_TYPES)); |
+ SyncShare(_, CLEANUP_DISABLED_TYPES, CLEANUP_DISABLED_TYPES)) |
+ .WillOnce(Invoke(sessions::test_util::SimulateSuccess)); |
StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
RunLoop(); |
@@ -1109,7 +1131,8 @@ TEST_F(SyncSchedulerTest, SyncerSteps) { |
// Poll. |
EXPECT_CALL(*syncer(), SyncShare(_, SYNCER_BEGIN, SYNCER_END)) |
.Times(AtLeast(1)) |
- .WillRepeatedly(QuitLoopNowAction()); |
+ .WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateSuccess), |
+ QuitLoopNowAction())); |
const TimeDelta poll(TimeDelta::FromMilliseconds(10)); |
scheduler()->OnReceivedLongPollIntervalUpdate(poll); |