Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Unified Diff: sync/engine/sync_scheduler_unittest.cc

Issue 1144443004: Revert of [Sync] Refactoring polling to be reliable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sync/engine/sync_scheduler_impl.cc ('k') | sync/engine/syncer.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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(&times, true)))
+ RecordSyncShare(&times)))
.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(&times2, true)));
+ RecordSyncShare(&times2)));
scheduler()->ScheduleLocalNudge(model_types, FROM_HERE);
RunLoop();
}
@@ -336,9 +332,9 @@
EXPECT_CALL(*syncer(), ConfigureSyncShare(_,_,_))
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateConfigureSuccess),
- RecordSyncShare(&times, true)));
-
- StartSyncConfiguration();
+ RecordSyncShare(&times)));
+
+ 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(&times, false)))
+ RecordSyncShare(&times)))
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateConfigureFailed),
- RecordSyncShare(&times, false)));
+ RecordSyncShare(&times)));
CallbackCounter ready_counter;
CallbackCounter retry_counter;
@@ -393,7 +389,7 @@
EXPECT_CALL(*syncer(), ConfigureSyncShare(_,_,_))
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateConfigureSuccess),
- RecordSyncShare(&times, true)));
+ RecordSyncShare(&times)));
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(&times, false)));
+ RecordSyncShare(&times)));
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(&times, false)));
+ RecordSyncShare(&times)));
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(&times, false)));
+ RecordSyncShare(&times)));
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(&times, true)));
+ RecordSyncShare(&times)));
RunLoop();
// Now change the mode so nudge can execute.
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_))
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess),
- RecordSyncShare(&times, true)));
- StartSyncScheduler(base::Time());
+ RecordSyncShare(&times)));
+ 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(&times, true)));
+ RecordSyncShare(&times)));
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(&times2, true)));
+ RecordSyncShare(&times2)));
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(&times, true)));
+ RecordSyncShare(&times)));
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(&times1, true)))
+ RecordSyncShare(&times1)))
.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(&times2, true)));
+ RecordSyncShare(&times2)));
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(&times, kMinNumSamples, true)));
+ RecordSyncShareMultiple(&times, 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(&times, 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(&times, 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(&times, kMinNumSamples, true)));
+ RecordSyncShareMultiple(&times, 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(&times, kMinNumSamples, true))));
+ RecordSyncShareMultiple(&times, 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(&times, kMinNumSamples, true)));
+ RecordSyncShareMultiple(&times, 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(&times, true)));
+ RecordSyncShare(&times)));
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(&times, true)))
+ RecordSyncShare(&times)))
.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(&times2, true)));
+ RecordSyncShare(&times2)));
// 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(&times, 1U, false)));
+ RecordSyncShareMultiple(&times, 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(&times, kMinNumSamples, false)));
+ RecordSyncShareMultiple(&times, 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(&times, false)));
+ RecordSyncShare(&times)));
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(&times, true)));
+ RecordSyncShare(&times)));
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(&times, 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(&times, 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(&times, false)))
+ RecordSyncShare(&times)))
.WillOnce(DoAll(Invoke(sessions::test_util::SimulatePollSuccess),
- RecordSyncShare(&times, true)));
-
- StartSyncScheduler(base::Time());
+ RecordSyncShare(&times)));
+
+ 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(&times, kMinNumSamples, true)));
+ RecordSyncShareMultiple(&times, 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(&times, true)));
+ RecordSyncShare(&times)));
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(&times, true)));
+ RecordSyncShare(&times)));
// 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(&times, false)));
+ QuitLoopNowAction()));
// Run to wait for retrying.
RunLoop();
@@ -1394,7 +1333,7 @@
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_))
.WillOnce(
DoAll(Invoke(sessions::test_util::SimulateNormalSuccess),
- RecordSyncShare(&times, 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(&times, true)));
+ RecordSyncShare(&times)));
// Run nudge GU.
RunLoop();
@@ -1429,7 +1368,7 @@
EXPECT_CALL(*syncer(), NormalSyncShare(_,_,_))
.WillOnce(DoAll(Invoke(sessions::test_util::SimulateNormalSuccess),
- RecordSyncShare(&times, true)));
+ RecordSyncShare(&times)));
// Run to wait for retrying.
RunLoop();
« no previous file with comments | « sync/engine/sync_scheduler_impl.cc ('k') | sync/engine/syncer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698