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..1d43844cddb4fa3a804321d69bc2352807950165 100644 |
--- a/sync/engine/sync_scheduler_unittest.cc |
+++ b/sync/engine/sync_scheduler_unittest.cc |
@@ -194,12 +194,8 @@ |
QuitLoopNow(); |
} |
- void StartSyncConfiguration() { |
- scheduler()->Start(SyncScheduler::CONFIGURATION_MODE, base::Time()); |
- } |
- |
- void StartSyncScheduler(base::Time last_poll_time) { |
- scheduler()->Start(SyncScheduler::NORMAL_MODE, last_poll_time); |
+ void StartSyncScheduler(SyncScheduler::Mode mode) { |
+ scheduler()->Start(mode); |
} |
// This stops the scheduler synchronously. |
@@ -213,7 +209,7 @@ |
bool RunAndGetBackoff() { |
ModelTypeSet nudge_types(THEMES); |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
scheduler()->ScheduleLocalNudge(nudge_types, FROM_HERE); |
RunLoop(); |
@@ -268,21 +264,21 @@ |
times->push_back(TimeTicks::Now()); |
} |
-ACTION_P2(RecordSyncShare, times, success) { |
+ACTION_P(RecordSyncShare, times) { |
RecordSyncShareImpl(times); |
if (base::MessageLoop::current()->is_running()) |
QuitLoopNow(); |
- return success; |
-} |
- |
-ACTION_P3(RecordSyncShareMultiple, times, quit_after, success) { |
+ return true; |
+} |
+ |
+ACTION_P2(RecordSyncShareMultiple, times, quit_after) { |
RecordSyncShareImpl(times); |
EXPECT_LE(times->size(), quit_after); |
if (times->size() >= quit_after && |
base::MessageLoop::current()->is_running()) { |
QuitLoopNow(); |
} |
- return success; |
+ return true; |
} |
ACTION_P(StopScheduler, scheduler) { |
@@ -295,9 +291,9 @@ |
return true; |
} |
-ACTION_P(QuitLoopNowAction, success) { |
+ACTION(QuitLoopNowAction) { |
QuitLoopNow(); |
- return success; |
+ return true; |
} |
// Test nudge scheduling. |
@@ -307,10 +303,10 @@ |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
- RecordSyncShare(×, true))) |
+ RecordSyncShare(×))) |
.RetiresOnSaturation(); |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
scheduler()->ScheduleLocalNudge(model_types, FROM_HERE); |
RunLoop(); |
@@ -323,7 +319,7 @@ |
model_types.Put(TYPED_URLS); |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
- RecordSyncShare(×2, true))); |
+ RecordSyncShare(×2))); |
scheduler()->ScheduleLocalNudge(model_types, FROM_HERE); |
RunLoop(); |
} |
@@ -336,9 +332,9 @@ |
EXPECT_CALL(*syncer(), ConfigureSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateConfigureSuccess), |
- RecordSyncShare(×, true))); |
- |
- StartSyncConfiguration(); |
+ RecordSyncShare(×))); |
+ |
+ StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); |
CallbackCounter ready_counter; |
CallbackCounter retry_counter; |
@@ -362,13 +358,13 @@ |
SyncShareTimes times; |
const ModelTypeSet model_types(THEMES); |
- StartSyncConfiguration(); |
+ StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); |
EXPECT_CALL(*syncer(), ConfigureSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateConfigureFailed), |
- RecordSyncShare(×, false))) |
+ RecordSyncShare(×))) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateConfigureFailed), |
- RecordSyncShare(×, false))); |
+ RecordSyncShare(×))); |
CallbackCounter ready_counter; |
CallbackCounter retry_counter; |
@@ -393,7 +389,7 @@ |
EXPECT_CALL(*syncer(), ConfigureSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateConfigureSuccess), |
- RecordSyncShare(×, true))); |
+ RecordSyncShare(×))); |
RunLoop(); |
ASSERT_EQ(1, ready_counter.times_called()); |
@@ -408,14 +404,14 @@ |
SyncShareTimes times; |
const ModelTypeSet model_types(THEMES); |
- StartSyncConfiguration(); |
+ StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); |
// Make ConfigureSyncShare call scheduler->Stop(). It is not supposed to call |
// retry_task or dereference configuration params. |
EXPECT_CALL(*syncer(), ConfigureSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateConfigureFailed), |
StopScheduler(scheduler()), |
- RecordSyncShare(×, false))); |
+ RecordSyncShare(×))); |
CallbackCounter ready_counter; |
CallbackCounter retry_counter; |
@@ -440,12 +436,12 @@ |
.WillRepeatedly(Return(TimeDelta::FromMilliseconds(50))); |
SyncShareTimes times; |
- StartSyncConfiguration(); |
+ StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); |
// Request a configure and make sure it fails. |
EXPECT_CALL(*syncer(), ConfigureSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateConfigureFailed), |
- RecordSyncShare(×, false))); |
+ RecordSyncShare(×))); |
CallbackCounter ready_counter; |
CallbackCounter retry_counter; |
ConfigurationParams params( |
@@ -463,7 +459,7 @@ |
// Ask for a nudge while dealing with repeated configure failure. |
EXPECT_CALL(*syncer(), ConfigureSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateConfigureFailed), |
- RecordSyncShare(×, false))); |
+ RecordSyncShare(×))); |
scheduler()->ScheduleLocalNudge(model_types, FROM_HERE); |
RunLoop(); |
// Note that we're not RunLoop()ing for the NUDGE we just scheduled, but |
@@ -475,25 +471,25 @@ |
// Let the next configure retry succeed. |
EXPECT_CALL(*syncer(), ConfigureSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateConfigureSuccess), |
- RecordSyncShare(×, true))); |
+ RecordSyncShare(×))); |
RunLoop(); |
// Now change the mode so nudge can execute. |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
- RecordSyncShare(×, true))); |
- StartSyncScheduler(base::Time()); |
+ RecordSyncShare(×))); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
PumpLoop(); |
} |
// Test that nudges are coalesced. |
TEST_F(SyncSchedulerTest, NudgeCoalescing) { |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
SyncShareTimes times; |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
- RecordSyncShare(×, true))); |
+ RecordSyncShare(×))); |
const ModelTypeSet types1(THEMES), types2(TYPED_URLS), types3(THEMES); |
TimeTicks optimal_time = TimeTicks::Now() + default_delay(); |
scheduler()->ScheduleLocalNudge(types1, FROM_HERE); |
@@ -508,19 +504,19 @@ |
SyncShareTimes times2; |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
- RecordSyncShare(×2, true))); |
+ RecordSyncShare(×2))); |
scheduler()->ScheduleLocalNudge(types3, FROM_HERE); |
RunLoop(); |
} |
// Test that nudges are coalesced. |
TEST_F(SyncSchedulerTest, NudgeCoalescingWithDifferentTimings) { |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
SyncShareTimes times; |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
- RecordSyncShare(×, true))); |
+ RecordSyncShare(×))); |
ModelTypeSet types1(THEMES), types2(TYPED_URLS), types3; |
// Create a huge time delay. |
@@ -546,12 +542,12 @@ |
// Test nudge scheduling. |
TEST_F(SyncSchedulerTest, NudgeWithStates) { |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
SyncShareTimes times1; |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
- RecordSyncShare(×1, true))) |
+ RecordSyncShare(×1))) |
.RetiresOnSaturation(); |
scheduler()->ScheduleInvalidationNudge( |
THEMES, BuildInvalidation(10, "test"), FROM_HERE); |
@@ -563,7 +559,7 @@ |
SyncShareTimes times2; |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
- RecordSyncShare(×2, true))); |
+ RecordSyncShare(×2))); |
scheduler()->ScheduleInvalidationNudge( |
TYPED_URLS, BuildInvalidation(10, "test2"), FROM_HERE); |
RunLoop(); |
@@ -576,12 +572,12 @@ |
EXPECT_CALL(*syncer(), PollSyncShare(_,_)).Times(AtLeast(kMinNumSamples)) |
.WillRepeatedly( |
DoAll(Invoke(sessions::test_util::SimulatePollSuccess), |
- RecordSyncShareMultiple(×, kMinNumSamples, true))); |
+ RecordSyncShareMultiple(×, kMinNumSamples))); |
scheduler()->OnReceivedLongPollIntervalUpdate(poll_interval); |
TimeTicks optimal_start = TimeTicks::Now() + poll_interval; |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
// Run again to wait for polling. |
RunLoop(); |
@@ -590,69 +586,20 @@ |
AnalyzePollRun(times, kMinNumSamples, optimal_start, poll_interval); |
} |
-// Test that we reuse the previous poll time on startup, triggering the first |
-// poll based on when the last one happened. Subsequent polls should have the |
-// normal delay. |
-TEST_F(SyncSchedulerTest, PollingPersistence) { |
- SyncShareTimes times; |
- // Use a large poll interval that wouldn't normally get hit on its own for |
- // some time yet. |
- TimeDelta poll_interval(TimeDelta::FromMilliseconds(500)); |
- EXPECT_CALL(*syncer(), PollSyncShare(_,_)).Times(AtLeast(kMinNumSamples)) |
- .WillRepeatedly( |
- DoAll(Invoke(sessions::test_util::SimulatePollSuccess), |
- RecordSyncShareMultiple(×, kMinNumSamples, true))); |
- |
- scheduler()->OnReceivedLongPollIntervalUpdate(poll_interval); |
- |
- // Set the start time to now, as the poll was overdue. |
- TimeTicks optimal_start = TimeTicks::Now(); |
- StartSyncScheduler(base::Time::Now() - poll_interval); |
- |
- // Run again to wait for polling. |
- RunLoop(); |
- |
- StopSyncScheduler(); |
- AnalyzePollRun(times, kMinNumSamples, optimal_start, poll_interval); |
-} |
- |
-// Test that if the persisted poll is in the future, it's ignored (the case |
-// where the local time has been modified). |
-TEST_F(SyncSchedulerTest, PollingPersistenceBadClock) { |
+// Test that the short poll interval is used. |
+TEST_F(SyncSchedulerTest, PollNotificationsDisabled) { |
SyncShareTimes times; |
TimeDelta poll_interval(TimeDelta::FromMilliseconds(30)); |
EXPECT_CALL(*syncer(), PollSyncShare(_,_)).Times(AtLeast(kMinNumSamples)) |
.WillRepeatedly( |
DoAll(Invoke(sessions::test_util::SimulatePollSuccess), |
- RecordSyncShareMultiple(×, kMinNumSamples, true))); |
- |
- scheduler()->OnReceivedLongPollIntervalUpdate(poll_interval); |
- |
- // Set the start time to |poll_interval| in the future. |
- TimeTicks optimal_start = TimeTicks::Now() + poll_interval; |
- StartSyncScheduler(base::Time::Now() + base::TimeDelta::FromMinutes(10)); |
- |
- // Run again to wait for polling. |
- RunLoop(); |
- |
- StopSyncScheduler(); |
- AnalyzePollRun(times, kMinNumSamples, optimal_start, poll_interval); |
-} |
- |
-// Test that the short poll interval is used. |
-TEST_F(SyncSchedulerTest, PollNotificationsDisabled) { |
- SyncShareTimes times; |
- TimeDelta poll_interval(TimeDelta::FromMilliseconds(30)); |
- EXPECT_CALL(*syncer(), PollSyncShare(_,_)).Times(AtLeast(kMinNumSamples)) |
- .WillRepeatedly( |
- DoAll(Invoke(sessions::test_util::SimulatePollSuccess), |
- RecordSyncShareMultiple(×, kMinNumSamples, true))); |
+ RecordSyncShareMultiple(×, kMinNumSamples))); |
scheduler()->OnReceivedShortPollIntervalUpdate(poll_interval); |
scheduler()->SetNotificationsEnabled(false); |
TimeTicks optimal_start = TimeTicks::Now() + poll_interval; |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
// Run again to wait for polling. |
RunLoop(); |
@@ -675,10 +622,10 @@ |
.WillRepeatedly( |
DoAll(Invoke(sessions::test_util::SimulatePollSuccess), |
WithArg<1>( |
- RecordSyncShareMultiple(×, kMinNumSamples, true)))); |
+ RecordSyncShareMultiple(×, kMinNumSamples)))); |
TimeTicks optimal_start = TimeTicks::Now() + poll1 + poll2; |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
// Run again to wait for polling. |
RunLoop(); |
@@ -697,15 +644,15 @@ |
EXPECT_CALL(*syncer(), ConfigureSyncShare(_,_,_)) |
.WillOnce(DoAll( |
WithArg<2>(sessions::test_util::SimulateThrottled(throttle)), |
- Return(false))) |
+ Return(true))) |
.WillRepeatedly(AddFailureAndQuitLoopNow()); |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
scheduler()->ScheduleLocalNudge(types, FROM_HERE); |
PumpLoop(); |
- StartSyncConfiguration(); |
+ StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); |
CallbackCounter ready_counter; |
CallbackCounter retry_counter; |
@@ -732,15 +679,15 @@ |
EXPECT_CALL(*syncer(), PollSyncShare(_,_)) |
.WillOnce(DoAll( |
WithArg<1>(sessions::test_util::SimulateThrottled(throttle1)), |
- Return(false))) |
+ Return(true))) |
.RetiresOnSaturation(); |
EXPECT_CALL(*syncer(), PollSyncShare(_,_)) |
.WillRepeatedly( |
DoAll(Invoke(sessions::test_util::SimulatePollSuccess), |
- RecordSyncShareMultiple(×, kMinNumSamples, true))); |
+ RecordSyncShareMultiple(×, kMinNumSamples))); |
TimeTicks optimal_start = TimeTicks::Now() + poll + throttle1; |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
// Run again to wait for polling. |
RunLoop(); |
@@ -759,14 +706,14 @@ |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll( |
WithArg<2>(sessions::test_util::SimulateThrottled(throttle1)), |
- Return(false))) |
+ Return(true))) |
.RetiresOnSaturation(); |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
- QuitLoopNowAction(true))); |
+ QuitLoopNowAction())); |
const ModelTypeSet types(THEMES); |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
scheduler()->ScheduleLocalNudge(types, FROM_HERE); |
PumpLoop(); // To get PerformDelayedNudge called. |
@@ -788,14 +735,14 @@ |
EXPECT_CALL(*syncer(), ConfigureSyncShare(_,_,_)) |
.WillOnce(DoAll( |
WithArg<2>(sessions::test_util::SimulateThrottled(throttle1)), |
- Return(false))) |
+ Return(true))) |
.RetiresOnSaturation(); |
EXPECT_CALL(*syncer(), ConfigureSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateConfigureSuccess), |
- QuitLoopNowAction(true))); |
+ QuitLoopNowAction())); |
const ModelTypeSet types(THEMES); |
- StartSyncConfiguration(); |
+ StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); |
CallbackCounter ready_counter; |
CallbackCounter retry_counter; |
@@ -833,10 +780,10 @@ |
.WillOnce(DoAll( |
WithArg<2>( |
sessions::test_util::SimulateTypesThrottled(types, throttle1)), |
- Return(false))) |
+ Return(true))) |
.RetiresOnSaturation(); |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
scheduler()->ScheduleLocalNudge(types, FROM_HERE); |
PumpLoop(); // To get PerformDelayedNudge called. |
PumpLoop(); // To get TrySyncSessionJob called |
@@ -868,10 +815,10 @@ |
WithArg<2>( |
sessions::test_util::SimulateTypesThrottled( |
throttled_types, throttle1)), |
- Return(false))) |
+ Return(true))) |
.RetiresOnSaturation(); |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
scheduler()->ScheduleLocalNudge(throttled_types, FROM_HERE); |
PumpLoop(); // To get PerformDelayedNudge called. |
PumpLoop(); // To get TrySyncSessionJob called |
@@ -891,7 +838,7 @@ |
// Local nudges for non-throttled types will trigger a sync. |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
- RecordSyncShare(×, true))); |
+ RecordSyncShare(×))); |
scheduler()->ScheduleLocalNudge(unthrottled_types, FROM_HERE); |
RunLoop(); |
Mock::VerifyAndClearExpectations(syncer()); |
@@ -905,7 +852,7 @@ |
SyncShareTimes times; |
scheduler()->OnReceivedLongPollIntervalUpdate(poll); |
- StartSyncConfiguration(); |
+ StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); |
const ModelTypeSet nudge_types(TYPED_URLS); |
scheduler()->ScheduleLocalNudge(nudge_types, FROM_HERE); |
@@ -915,7 +862,7 @@ |
EXPECT_CALL(*syncer(), ConfigureSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateConfigureSuccess), |
- RecordSyncShare(×, true))) |
+ RecordSyncShare(×))) |
.RetiresOnSaturation(); |
CallbackCounter ready_counter; |
CallbackCounter retry_counter; |
@@ -937,12 +884,12 @@ |
SyncShareTimes times2; |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
- RecordSyncShare(×2, true))); |
+ RecordSyncShare(×2))); |
// TODO(tim): Figure out how to remove this dangerous need to reset |
// routing info between mode switches. |
context()->SetRoutingInfo(routing_info()); |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
RunLoop(); |
Mock::VerifyAndClearExpectations(syncer()); |
@@ -962,12 +909,12 @@ |
} |
}; |
-// Have the syncer fail during commit. Expect that the scheduler enters |
+// Have the sycner fail during commit. Expect that the scheduler enters |
// backoff. |
TEST_F(BackoffTriggersSyncSchedulerTest, FailCommitOnce) { |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateCommitFailed), |
- QuitLoopNowAction(false))); |
+ QuitLoopNowAction())); |
EXPECT_TRUE(RunAndGetBackoff()); |
} |
@@ -977,9 +924,9 @@ |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll( |
Invoke(sessions::test_util::SimulateDownloadUpdatesFailed), |
- Return(false))) |
+ Return(true))) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
- QuitLoopNowAction(true))); |
+ QuitLoopNowAction())); |
EXPECT_FALSE(RunAndGetBackoff()); |
} |
@@ -989,9 +936,9 @@ |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll( |
Invoke(sessions::test_util::SimulateCommitFailed), |
- Return(false))) |
+ Return(true))) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
- QuitLoopNowAction(true))); |
+ QuitLoopNowAction())); |
EXPECT_FALSE(RunAndGetBackoff()); |
} |
@@ -1001,10 +948,10 @@ |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll( |
Invoke(sessions::test_util::SimulateDownloadUpdatesFailed), |
- Return(false))) |
+ Return(true))) |
.WillRepeatedly(DoAll( |
- Invoke(sessions::test_util::SimulateDownloadUpdatesFailed), |
- QuitLoopNowAction(false))); |
+ Invoke(sessions::test_util::SimulateDownloadUpdatesFailed), |
+ QuitLoopNowAction())); |
EXPECT_TRUE(RunAndGetBackoff()); |
} |
@@ -1014,11 +961,11 @@ |
EXPECT_CALL(*syncer(), ConfigureSyncShare(_,_,_)) |
.WillOnce(DoAll( |
Invoke(sessions::test_util::SimulateGetEncryptionKeyFailed), |
- Return(false))) |
+ Return(true))) |
.WillRepeatedly(DoAll( |
- Invoke(sessions::test_util::SimulateGetEncryptionKeyFailed), |
- QuitLoopNowAction(false))); |
- StartSyncConfiguration(); |
+ Invoke(sessions::test_util::SimulateGetEncryptionKeyFailed), |
+ QuitLoopNowAction())); |
+ StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); |
ModelTypeSet types(THEMES); |
CallbackCounter ready_counter; |
@@ -1045,11 +992,11 @@ |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateCommitFailed), |
- RecordSyncShareMultiple(×, 1U, false))); |
+ RecordSyncShareMultiple(×, 1U))); |
EXPECT_CALL(*delay(), GetDelay(_)). |
WillRepeatedly(Return(TimeDelta::FromDays(1))); |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
// This nudge should fail and put us into backoff. Thanks to our mock |
// GetDelay() setup above, this will be a long backoff. |
@@ -1070,7 +1017,7 @@ |
EXPECT_CALL(*delay(), GetDelay(_)).Times(0); |
- StartSyncConfiguration(); |
+ StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); |
CallbackCounter ready_counter; |
CallbackCounter retry_counter; |
@@ -1094,7 +1041,7 @@ |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)).Times(kMinNumSamples) |
.WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateCommitFailed), |
- RecordSyncShareMultiple(×, kMinNumSamples, false))); |
+ RecordSyncShareMultiple(×, kMinNumSamples))); |
const TimeDelta first = TimeDelta::FromSeconds(kInitialBackoffRetrySeconds); |
const TimeDelta second = TimeDelta::FromMilliseconds(20); |
@@ -1113,7 +1060,7 @@ |
.RetiresOnSaturation(); |
EXPECT_CALL(*delay(), GetDelay(fifth)).WillOnce(Return(sixth)); |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
// Run again with a nudge. |
scheduler()->ScheduleLocalNudge(ModelTypeSet(THEMES), FROM_HERE); |
@@ -1129,6 +1076,8 @@ |
// Test that things go back to normal once a retry makes forward progress. |
TEST_F(SyncSchedulerTest, BackoffRelief) { |
SyncShareTimes times; |
+ const TimeDelta poll(TimeDelta::FromMilliseconds(10)); |
+ scheduler()->OnReceivedLongPollIntervalUpdate(poll); |
UseMockDelayProvider(); |
const TimeDelta backoff = TimeDelta::FromMilliseconds(10); |
@@ -1136,12 +1085,12 @@ |
// Optimal start for the post-backoff poll party. |
TimeTicks optimal_start = TimeTicks::Now(); |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
// Kick off the test with a failed nudge. |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateCommitFailed), |
- RecordSyncShare(×, false))); |
+ RecordSyncShare(×))); |
scheduler()->ScheduleLocalNudge(ModelTypeSet(THEMES), FROM_HERE); |
RunLoop(); |
Mock::VerifyAndClearExpectations(syncer()); |
@@ -1153,7 +1102,7 @@ |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll( |
Invoke(sessions::test_util::SimulateNormalSuccess), |
- RecordSyncShare(×, true))); |
+ RecordSyncShare(×))); |
RunLoop(); |
Mock::VerifyAndClearExpectations(syncer()); |
optimal_job_time = optimal_job_time + backoff; |
@@ -1164,46 +1113,38 @@ |
EXPECT_CALL(*syncer(), PollSyncShare(_,_)) |
.WillRepeatedly(DoAll( |
Invoke(sessions::test_util::SimulatePollSuccess), |
- RecordSyncShareMultiple(×, kMinNumSamples, true))); |
- const TimeDelta poll(TimeDelta::FromMilliseconds(10)); |
- scheduler()->OnReceivedLongPollIntervalUpdate(poll); |
- |
- // The new optimal time is now, since the desired poll should have happened |
- // in the past. |
- optimal_job_time = base::TimeTicks::Now(); |
+ RecordSyncShareMultiple(×, kMinNumSamples))); |
RunLoop(); |
Mock::VerifyAndClearExpectations(syncer()); |
ASSERT_EQ(kMinNumSamples, times.size()); |
for (size_t i = 2; i < times.size(); i++) { |
+ optimal_job_time = optimal_job_time + poll; |
SCOPED_TRACE(testing::Message() << "SyncShare # (" << i << ")"); |
EXPECT_GE(times[i], optimal_job_time); |
- optimal_job_time = optimal_job_time + poll; |
} |
StopSyncScheduler(); |
} |
-// Test that poll failures are treated like any other failure. They should |
-// result in retry with backoff. |
+// Test that poll failures are ignored. They should have no effect on |
+// subsequent poll attempts, nor should they trigger a backoff/retry. |
TEST_F(SyncSchedulerTest, TransientPollFailure) { |
SyncShareTimes times; |
const TimeDelta poll_interval(TimeDelta::FromMilliseconds(10)); |
scheduler()->OnReceivedLongPollIntervalUpdate(poll_interval); |
UseMockDelayProvider(); // Will cause test failure if backoff is initiated. |
- EXPECT_CALL(*delay(), GetDelay(_)) |
- .WillRepeatedly(Return(TimeDelta::FromMilliseconds(0))); |
EXPECT_CALL(*syncer(), PollSyncShare(_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulatePollFailed), |
- RecordSyncShare(×, false))) |
+ RecordSyncShare(×))) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulatePollSuccess), |
- RecordSyncShare(×, true))); |
- |
- StartSyncScheduler(base::Time()); |
+ RecordSyncShare(×))); |
+ |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
// Run the unsucessful poll. The failed poll should not trigger backoff. |
RunLoop(); |
- EXPECT_TRUE(scheduler()->IsBackingOff()); |
+ EXPECT_FALSE(scheduler()->IsBackingOff()); |
// Run the successful poll. |
RunLoop(); |
@@ -1217,10 +1158,10 @@ |
connection()->UpdateConnectionStatus(); |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateConnectionFailure), |
- Return(false))) |
+ Return(true))) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
Return(true))); |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
scheduler()->ScheduleLocalNudge(ModelTypeSet(THEMES), FROM_HERE); |
// Should save the nudge for until after the server is reachable. |
@@ -1237,13 +1178,13 @@ |
EXPECT_CALL(*delay(), GetDelay(_)) |
.WillRepeatedly(Return(TimeDelta::FromMilliseconds(0))); |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
connection()->SetServerNotReachable(); |
connection()->UpdateConnectionStatus(); |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateConnectionFailure), |
- Return(false))) |
+ Return(true))) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
Return(true))); |
@@ -1267,17 +1208,17 @@ |
EXPECT_CALL(*delay(), GetDelay(_)) |
.WillRepeatedly(Return(TimeDelta::FromMilliseconds(0))); |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
connection()->SetServerNotReachable(); |
connection()->UpdateConnectionStatus(); |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateConnectionFailure), |
- Return(false))) |
+ Return(true))) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
Return(true))) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
- QuitLoopNowAction(true))); |
+ QuitLoopNowAction())); |
scheduler()->ScheduleLocalNudge(ModelTypeSet(THEMES), FROM_HERE); |
@@ -1301,7 +1242,7 @@ |
.WillRepeatedly(DoAll( |
Invoke(sessions::test_util::SimulateConfigureConnectionFailure), |
Return(true))); |
- StartSyncConfiguration(); |
+ StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); |
connection()->SetServerNotReachable(); |
connection()->UpdateConnectionStatus(); |
@@ -1331,10 +1272,10 @@ |
EXPECT_CALL(*syncer(), PollSyncShare(_,_)) |
.WillRepeatedly( |
DoAll(Invoke(sessions::test_util::SimulatePollSuccess), |
- RecordSyncShareMultiple(×, kMinNumSamples, true))); |
+ RecordSyncShareMultiple(×, kMinNumSamples))); |
connection()->SetServerStatus(HttpResponse::SYNC_AUTH_ERROR); |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
// Run to wait for polling. |
RunLoop(); |
@@ -1344,7 +1285,7 @@ |
// poll once more |
EXPECT_CALL(*syncer(), PollSyncShare(_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulatePollSuccess), |
- RecordSyncShare(×, true))); |
+ RecordSyncShare(×))); |
scheduler()->OnCredentialsUpdated(); |
connection()->SetServerStatus(HttpResponse::SERVER_CONNECTION_OK); |
RunLoop(); |
@@ -1352,7 +1293,7 @@ |
} |
TEST_F(SyncSchedulerTest, SuccessfulRetry) { |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
SyncShareTimes times; |
base::TimeDelta delay = base::TimeDelta::FromMilliseconds(10); |
@@ -1362,7 +1303,7 @@ |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce( |
DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
- RecordSyncShare(×, true))); |
+ RecordSyncShare(×))); |
// Run to wait for retrying. |
RunLoop(); |
@@ -1371,13 +1312,11 @@ |
} |
TEST_F(SyncSchedulerTest, FailedRetry) { |
- SyncShareTimes times; |
- |
UseMockDelayProvider(); |
EXPECT_CALL(*delay(), GetDelay(_)) |
.WillRepeatedly(Return(TimeDelta::FromMilliseconds(10))); |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
base::TimeDelta delay = base::TimeDelta::FromMilliseconds(10); |
scheduler()->OnReceivedGuRetryDelay(delay); |
@@ -1385,7 +1324,7 @@ |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce( |
DoAll(Invoke(sessions::test_util::SimulateDownloadUpdatesFailed), |
- RecordSyncShare(×, false))); |
+ QuitLoopNowAction())); |
// Run to wait for retrying. |
RunLoop(); |
@@ -1394,7 +1333,7 @@ |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce( |
DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
- RecordSyncShare(×, true))); |
+ QuitLoopNowAction())); |
// Run to wait for second retrying. |
RunLoop(); |
@@ -1407,7 +1346,7 @@ |
} |
TEST_F(SyncSchedulerTest, ReceiveNewRetryDelay) { |
- StartSyncScheduler(base::Time()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
SyncShareTimes times; |
base::TimeDelta delay1 = base::TimeDelta::FromMilliseconds(100); |
@@ -1421,7 +1360,7 @@ |
.WillOnce(DoAll( |
WithoutArgs(VerifyRetryTimerDelay(this, delay1)), |
WithArg<2>(sessions::test_util::SimulateGuRetryDelayCommand(delay2)), |
- RecordSyncShare(×, true))); |
+ RecordSyncShare(×))); |
// Run nudge GU. |
RunLoop(); |
@@ -1429,7 +1368,7 @@ |
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_)) |
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess), |
- RecordSyncShare(×, true))); |
+ RecordSyncShare(×))); |
// Run to wait for retrying. |
RunLoop(); |