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

Side by Side Diff: sync/engine/sync_scheduler_unittest.cc

Issue 10823061: Revert 148792 - [Sync] Remove CleanupDisabledTypes command and move purge logic into SyncManager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sync/engine/sync_scheduler_impl.cc ('k') | sync/engine/syncer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/bind.h" 5 #include "base/bind.h"
6 #include "base/callback.h" 6 #include "base/callback.h"
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/memory/weak_ptr.h" 8 #include "base/memory/weak_ptr.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/test/test_timeouts.h" 10 #include "base/test/test_timeouts.h"
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 EXPECT_EQ(GetUpdatesCallerInfo::LOCAL, 293 EXPECT_EQ(GetUpdatesCallerInfo::LOCAL,
294 records2.snapshots[0].source().updates_source); 294 records2.snapshots[0].source().updates_source);
295 } 295 }
296 296
297 // Make sure a regular config command is scheduled fine in the absence of any 297 // Make sure a regular config command is scheduled fine in the absence of any
298 // errors. 298 // errors.
299 TEST_F(SyncSchedulerTest, Config) { 299 TEST_F(SyncSchedulerTest, Config) {
300 SyncShareRecords records; 300 SyncShareRecords records;
301 const ModelTypeSet model_types(BOOKMARKS); 301 const ModelTypeSet model_types(BOOKMARKS);
302 302
303 EXPECT_CALL(*syncer(), SyncShare(_,_,_)) 303 EXPECT_CALL(*syncer(),
304 SyncShare(_,_,_))
305 .WillOnce(Invoke(sessions::test_util::SimulateSuccess))
304 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), 306 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess),
305 WithArg<0>(RecordSyncShare(&records)))); 307 WithArg<0>(RecordSyncShare(&records))));
306 308
307 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); 309 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE);
308 310
309 CallbackCounter counter; 311 CallbackCounter counter;
310 ConfigurationParams params( 312 ConfigurationParams params(
311 GetUpdatesCallerInfo::RECONFIGURATION, 313 GetUpdatesCallerInfo::RECONFIGURATION,
312 model_types, 314 model_types,
313 TypesToRoutingInfo(model_types), 315 TypesToRoutingInfo(model_types),
(...skipping 10 matching lines...) Expand all
324 } 326 }
325 327
326 // Simulate a failure and make sure the config request is retried. 328 // Simulate a failure and make sure the config request is retried.
327 TEST_F(SyncSchedulerTest, ConfigWithBackingOff) { 329 TEST_F(SyncSchedulerTest, ConfigWithBackingOff) {
328 UseMockDelayProvider(); 330 UseMockDelayProvider();
329 EXPECT_CALL(*delay(), GetDelay(_)) 331 EXPECT_CALL(*delay(), GetDelay(_))
330 .WillRepeatedly(Return(TimeDelta::FromMilliseconds(1))); 332 .WillRepeatedly(Return(TimeDelta::FromMilliseconds(1)));
331 SyncShareRecords records; 333 SyncShareRecords records;
332 const ModelTypeSet model_types(BOOKMARKS); 334 const ModelTypeSet model_types(BOOKMARKS);
333 335
334 EXPECT_CALL(*syncer(), SyncShare(_,_,_)) 336 EXPECT_CALL(*syncer(),
337 SyncShare(_,_,_))
338 .WillOnce(Invoke(sessions::test_util::SimulateSuccess))
335 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateCommitFailed), 339 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateCommitFailed),
336 WithArg<0>(RecordSyncShare(&records)))) 340 WithArg<0>(RecordSyncShare(&records))))
337 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), 341 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess),
338 WithArg<0>(RecordSyncShare(&records)))); 342 WithArg<0>(RecordSyncShare(&records))));
339 343
340 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); 344 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE);
341 345
342 ASSERT_EQ(0U, records.snapshots.size()); 346 ASSERT_EQ(0U, records.snapshots.size());
343 CallbackCounter counter; 347 CallbackCounter counter;
344 ConfigurationParams params( 348 ConfigurationParams params(
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 QuitLoopNowAction())); 702 QuitLoopNowAction()));
699 StartSyncScheduler(SyncScheduler::NORMAL_MODE); 703 StartSyncScheduler(SyncScheduler::NORMAL_MODE);
700 704
701 scheduler()->ScheduleNudgeAsync( 705 scheduler()->ScheduleNudgeAsync(
702 zero(), NUDGE_SOURCE_LOCAL, ModelTypeSet(), FROM_HERE); 706 zero(), NUDGE_SOURCE_LOCAL, ModelTypeSet(), FROM_HERE);
703 707
704 // We should detect the failure on the second sync share, and go into backoff. 708 // We should detect the failure on the second sync share, and go into backoff.
705 EXPECT_TRUE(RunAndGetBackoff()); 709 EXPECT_TRUE(RunAndGetBackoff());
706 } 710 }
707 711
708 // Test that no syncing occurs when throttled. 712 // Test that no syncing occurs when throttled (although CleanupDisabledTypes
713 // is allowed).
709 TEST_F(SyncSchedulerTest, ThrottlingDoesThrottle) { 714 TEST_F(SyncSchedulerTest, ThrottlingDoesThrottle) {
710 const ModelTypeSet types(BOOKMARKS); 715 const ModelTypeSet types(BOOKMARKS);
711 TimeDelta poll(TimeDelta::FromMilliseconds(5)); 716 TimeDelta poll(TimeDelta::FromMilliseconds(5));
712 TimeDelta throttle(TimeDelta::FromMinutes(10)); 717 TimeDelta throttle(TimeDelta::FromMinutes(10));
713 scheduler()->OnReceivedLongPollIntervalUpdate(poll); 718 scheduler()->OnReceivedLongPollIntervalUpdate(poll);
714 719
715 EXPECT_CALL(*syncer(), SyncShare(_,_,_)) 720 EXPECT_CALL(*syncer(),
721 SyncShare(_, CLEANUP_DISABLED_TYPES, CLEANUP_DISABLED_TYPES))
722 .WillOnce(Invoke(sessions::test_util::SimulateSuccess));
723 EXPECT_CALL(*syncer(), SyncShare(_,Not(CLEANUP_DISABLED_TYPES),
724 Not(CLEANUP_DISABLED_TYPES)))
716 .WillOnce(WithArg<0>(sessions::test_util::SimulateThrottled(throttle))) 725 .WillOnce(WithArg<0>(sessions::test_util::SimulateThrottled(throttle)))
717 .WillRepeatedly(AddFailureAndQuitLoopNow()); 726 .WillRepeatedly(AddFailureAndQuitLoopNow());
718 727
719 StartSyncScheduler(SyncScheduler::NORMAL_MODE); 728 StartSyncScheduler(SyncScheduler::NORMAL_MODE);
720 729
721 scheduler()->ScheduleNudgeAsync( 730 scheduler()->ScheduleNudgeAsync(
722 zero(), NUDGE_SOURCE_LOCAL, types, FROM_HERE); 731 zero(), NUDGE_SOURCE_LOCAL, types, FROM_HERE);
723 PumpLoop(); 732 PumpLoop();
724 733
725 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); 734 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
758 StopSyncScheduler(); 767 StopSyncScheduler();
759 AnalyzePollRun(records, kMinNumSamples, optimal_start, poll); 768 AnalyzePollRun(records, kMinNumSamples, optimal_start, poll);
760 } 769 }
761 770
762 // Test nudges / polls don't run in config mode and config tasks do. 771 // Test nudges / polls don't run in config mode and config tasks do.
763 TEST_F(SyncSchedulerTest, ConfigurationMode) { 772 TEST_F(SyncSchedulerTest, ConfigurationMode) {
764 TimeDelta poll(TimeDelta::FromMilliseconds(15)); 773 TimeDelta poll(TimeDelta::FromMilliseconds(15));
765 SyncShareRecords records; 774 SyncShareRecords records;
766 scheduler()->OnReceivedLongPollIntervalUpdate(poll); 775 scheduler()->OnReceivedLongPollIntervalUpdate(poll);
767 EXPECT_CALL(*syncer(), SyncShare(_,_,_)) 776 EXPECT_CALL(*syncer(), SyncShare(_,_,_))
777 .WillOnce(Invoke(sessions::test_util::SimulateSuccess))
768 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), 778 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess),
769 WithArg<0>(RecordSyncShare(&records)))); 779 WithArg<0>(RecordSyncShare(&records))));
770 780
771 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); 781 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE);
772 782
773 const ModelTypeSet nudge_types(AUTOFILL); 783 const ModelTypeSet nudge_types(AUTOFILL);
774 scheduler()->ScheduleNudgeAsync( 784 scheduler()->ScheduleNudgeAsync(
775 zero(), NUDGE_SOURCE_LOCAL, nudge_types, FROM_HERE); 785 zero(), NUDGE_SOURCE_LOCAL, nudge_types, FROM_HERE);
776 scheduler()->ScheduleNudgeAsync( 786 scheduler()->ScheduleNudgeAsync(
777 zero(), NUDGE_SOURCE_LOCAL, nudge_types, FROM_HERE); 787 zero(), NUDGE_SOURCE_LOCAL, nudge_types, FROM_HERE);
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
882 scheduler()->ScheduleNudgeAsync( 892 scheduler()->ScheduleNudgeAsync(
883 poll * 10, NUDGE_SOURCE_LOCAL, types, FROM_HERE); 893 poll * 10, NUDGE_SOURCE_LOCAL, types, FROM_HERE);
884 RunLoop(); 894 RunLoop();
885 895
886 Mock::VerifyAndClearExpectations(syncer()); 896 Mock::VerifyAndClearExpectations(syncer());
887 Mock::VerifyAndClearExpectations(delay()); 897 Mock::VerifyAndClearExpectations(delay());
888 ASSERT_EQ(2U, r.snapshots.size()); 898 ASSERT_EQ(2U, r.snapshots.size());
889 EXPECT_EQ(GetUpdatesCallerInfo::LOCAL, 899 EXPECT_EQ(GetUpdatesCallerInfo::LOCAL,
890 r.snapshots[1].source().updates_source); 900 r.snapshots[1].source().updates_source);
891 901
902 // Cleanup is not affected by backoff, but it should not relieve it either.
903 EXPECT_CALL(*syncer(),
904 SyncShare(_, CLEANUP_DISABLED_TYPES, CLEANUP_DISABLED_TYPES))
905 .WillOnce(Invoke(sessions::test_util::SimulateSuccess));
892 EXPECT_CALL(*delay(), GetDelay(_)).Times(0); 906 EXPECT_CALL(*delay(), GetDelay(_)).Times(0);
893 907
894 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); 908 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE);
895 909
896 CallbackCounter counter; 910 CallbackCounter counter;
897 ConfigurationParams params( 911 ConfigurationParams params(
898 GetUpdatesCallerInfo::RECONFIGURATION, 912 GetUpdatesCallerInfo::RECONFIGURATION,
899 types, 913 types,
900 TypesToRoutingInfo(types), 914 TypesToRoutingInfo(types),
901 ConfigurationParams::KEYSTORE_KEY_UNNECESSARY, 915 ConfigurationParams::KEYSTORE_KEY_UNNECESSARY,
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
1055 1069
1056 scheduler()->ScheduleNudgeAsync( 1070 scheduler()->ScheduleNudgeAsync(
1057 zero(), NUDGE_SOURCE_LOCAL, ModelTypeSet(), FROM_HERE); 1071 zero(), NUDGE_SOURCE_LOCAL, ModelTypeSet(), FROM_HERE);
1058 PumpLoop(); 1072 PumpLoop();
1059 // Pump again to run job. 1073 // Pump again to run job.
1060 PumpLoop(); 1074 PumpLoop();
1061 1075
1062 StopSyncScheduler(); 1076 StopSyncScheduler();
1063 Mock::VerifyAndClearExpectations(syncer()); 1077 Mock::VerifyAndClearExpectations(syncer());
1064 1078
1065 // Configuration. 1079 // Configuration (always includes a cleanup disabled types).
1080 EXPECT_CALL(*syncer(),
1081 SyncShare(_, CLEANUP_DISABLED_TYPES, CLEANUP_DISABLED_TYPES))
1082 .WillOnce(Invoke(sessions::test_util::SimulateSuccess));
1066 EXPECT_CALL(*syncer(), SyncShare(_, DOWNLOAD_UPDATES, APPLY_UPDATES)) 1083 EXPECT_CALL(*syncer(), SyncShare(_, DOWNLOAD_UPDATES, APPLY_UPDATES))
1067 .WillOnce(Invoke(sessions::test_util::SimulateSuccess)); 1084 .WillOnce(Invoke(sessions::test_util::SimulateSuccess));
1068 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE); 1085 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE);
1069 1086
1070 ModelTypeSet model_types(BOOKMARKS); 1087 ModelTypeSet model_types(BOOKMARKS);
1071 CallbackCounter counter; 1088 CallbackCounter counter;
1072 ConfigurationParams params( 1089 ConfigurationParams params(
1073 GetUpdatesCallerInfo::RECONFIGURATION, 1090 GetUpdatesCallerInfo::RECONFIGURATION,
1074 model_types, 1091 model_types,
1075 TypesToRoutingInfo(model_types), 1092 TypesToRoutingInfo(model_types),
1076 ConfigurationParams::KEYSTORE_KEY_UNNECESSARY, 1093 ConfigurationParams::KEYSTORE_KEY_UNNECESSARY,
1077 base::Bind(&CallbackCounter::Callback, base::Unretained(&counter))); 1094 base::Bind(&CallbackCounter::Callback, base::Unretained(&counter)));
1078 ASSERT_TRUE(scheduler()->ScheduleConfiguration(params)); 1095 ASSERT_TRUE(scheduler()->ScheduleConfiguration(params));
1079 ASSERT_EQ(1, counter.times_called()); 1096 ASSERT_EQ(1, counter.times_called());
1080 // Runs directly so no need to pump the loop. 1097 // Runs directly so no need to pump the loop.
1081 StopSyncScheduler(); 1098 StopSyncScheduler();
1082 Mock::VerifyAndClearExpectations(syncer()); 1099 Mock::VerifyAndClearExpectations(syncer());
1083 1100
1101 // Cleanup disabled types. Because no types are being configured, we just
1102 // perform the cleanup.
1103 EXPECT_CALL(*syncer(),
1104 SyncShare(_, CLEANUP_DISABLED_TYPES, CLEANUP_DISABLED_TYPES)).
1105 WillOnce(Invoke(sessions::test_util::SimulateSuccess));
1106 StartSyncScheduler(SyncScheduler::CONFIGURATION_MODE);
1107
1108 CallbackCounter counter2;
1109 ConfigurationParams params2(
1110 GetUpdatesCallerInfo::RECONFIGURATION,
1111 ModelTypeSet(),
1112 ModelSafeRoutingInfo(),
1113 ConfigurationParams::KEYSTORE_KEY_UNNECESSARY,
1114 base::Bind(&CallbackCounter::Callback, base::Unretained(&counter2)));
1115 ASSERT_TRUE(scheduler()->ScheduleConfiguration(params2));
1116 ASSERT_EQ(1, counter2.times_called());
1117 StopSyncScheduler();
1118 Mock::VerifyAndClearExpectations(syncer());
1119
1084 StartSyncScheduler(SyncScheduler::NORMAL_MODE); 1120 StartSyncScheduler(SyncScheduler::NORMAL_MODE);
1085 1121
1086 // Poll. 1122 // Poll.
1087 EXPECT_CALL(*syncer(), SyncShare(_, SYNCER_BEGIN, SYNCER_END)) 1123 EXPECT_CALL(*syncer(), SyncShare(_, SYNCER_BEGIN, SYNCER_END))
1088 .Times(AtLeast(1)) 1124 .Times(AtLeast(1))
1089 .WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateSuccess), 1125 .WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateSuccess),
1090 QuitLoopNowAction())); 1126 QuitLoopNowAction()));
1091 const TimeDelta poll(TimeDelta::FromMilliseconds(10)); 1127 const TimeDelta poll(TimeDelta::FromMilliseconds(10));
1092 scheduler()->OnReceivedLongPollIntervalUpdate(poll); 1128 scheduler()->OnReceivedLongPollIntervalUpdate(poll);
1093 1129
(...skipping 25 matching lines...) Expand all
1119 zero(), NUDGE_SOURCE_LOCAL, ModelTypeSet(), FROM_HERE); 1155 zero(), NUDGE_SOURCE_LOCAL, ModelTypeSet(), FROM_HERE);
1120 // Should save the nudge for until after the server is reachable. 1156 // Should save the nudge for until after the server is reachable.
1121 MessageLoop::current()->RunAllPending(); 1157 MessageLoop::current()->RunAllPending();
1122 1158
1123 connection()->SetServerReachable(); 1159 connection()->SetServerReachable();
1124 connection()->UpdateConnectionStatus(); 1160 connection()->UpdateConnectionStatus();
1125 scheduler()->OnConnectionStatusChange(); 1161 scheduler()->OnConnectionStatusChange();
1126 MessageLoop::current()->RunAllPending(); 1162 MessageLoop::current()->RunAllPending();
1127 } 1163 }
1128 1164
1165 TEST_F(SyncSchedulerTest, SetsPreviousRoutingInfo) {
1166 ModelSafeRoutingInfo info;
1167 EXPECT_TRUE(info == context()->previous_session_routing_info());
1168 ModelSafeRoutingInfo expected(context()->routing_info());
1169 ASSERT_FALSE(expected.empty());
1170 EXPECT_CALL(*syncer(), SyncShare(_,_,_)).Times(1);
1171
1172 StartSyncScheduler(SyncScheduler::NORMAL_MODE);
1173
1174 scheduler()->ScheduleNudgeAsync(
1175 zero(), NUDGE_SOURCE_LOCAL, ModelTypeSet(), FROM_HERE);
1176 PumpLoop();
1177 // Pump again to run job.
1178 PumpLoop();
1179
1180 StopSyncScheduler();
1181
1182 EXPECT_TRUE(expected == context()->previous_session_routing_info());
1183 }
1184
1129 } // namespace syncer 1185 } // namespace syncer
OLDNEW
« 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