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

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

Issue 10701046: sync: Remove SyncManager::TestingMode in favour of InternalComponentsFactory. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: now with more scope Created 8 years, 5 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
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"
11 #include "sync/engine/sync_scheduler.h" 11 #include "sync/engine/sync_scheduler_impl.h"
12 #include "sync/engine/syncer.h" 12 #include "sync/engine/syncer.h"
13 #include "sync/engine/throttled_data_type_tracker.h" 13 #include "sync/engine/throttled_data_type_tracker.h"
14 #include "sync/sessions/test_util.h" 14 #include "sync/sessions/test_util.h"
15 #include "sync/test/callback_counter.h" 15 #include "sync/test/callback_counter.h"
16 #include "sync/test/engine/fake_model_worker.h" 16 #include "sync/test/engine/fake_model_worker.h"
17 #include "sync/test/engine/mock_connection_manager.h" 17 #include "sync/test/engine/mock_connection_manager.h"
18 #include "sync/test/engine/test_directory_setter_upper.h" 18 #include "sync/test/engine/test_directory_setter_upper.h"
19 #include "sync/test/fake_extensions_activity_monitor.h" 19 #include "sync/test/fake_extensions_activity_monitor.h"
20 #include "testing/gmock/include/gmock/gmock.h" 20 #include "testing/gmock/include/gmock/gmock.h"
21 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 // Convenient to use in tests wishing to analyze SyncShare calls over time. 81 // Convenient to use in tests wishing to analyze SyncShare calls over time.
82 static const size_t kMinNumSamples = 5; 82 static const size_t kMinNumSamples = 5;
83 class SyncSchedulerTest : public testing::Test { 83 class SyncSchedulerTest : public testing::Test {
84 public: 84 public:
85 SyncSchedulerTest() 85 SyncSchedulerTest()
86 : weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)), 86 : weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)),
87 context_(NULL), 87 context_(NULL),
88 syncer_(NULL), 88 syncer_(NULL),
89 delay_(NULL) {} 89 delay_(NULL) {}
90 90
91 class MockDelayProvider : public SyncScheduler::DelayProvider { 91 class MockDelayProvider : public SyncSchedulerImpl::DelayProvider {
92 public: 92 public:
93 MOCK_METHOD1(GetDelay, TimeDelta(const TimeDelta&)); 93 MOCK_METHOD1(GetDelay, TimeDelta(const TimeDelta&));
94 }; 94 };
95 95
96 virtual void SetUp() { 96 virtual void SetUp() {
97 dir_maker_.SetUp(); 97 dir_maker_.SetUp();
98 syncer_ = new MockSyncer(); 98 syncer_ = new MockSyncer();
99 delay_ = NULL; 99 delay_ = NULL;
100 100
101 ModelSafeRoutingInfo routing_info; 101 ModelSafeRoutingInfo routing_info;
(...skipping 15 matching lines...) Expand all
117 connection_.reset(new MockConnectionManager(directory())); 117 connection_.reset(new MockConnectionManager(directory()));
118 connection_->SetServerReachable(); 118 connection_->SetServerReachable();
119 throttled_data_type_tracker_.reset(new ThrottledDataTypeTracker(NULL)); 119 throttled_data_type_tracker_.reset(new ThrottledDataTypeTracker(NULL));
120 context_.reset(new SyncSessionContext( 120 context_.reset(new SyncSessionContext(
121 connection_.get(), directory(), routing_info, workers, 121 connection_.get(), directory(), routing_info, workers,
122 &extensions_activity_monitor_, throttled_data_type_tracker_.get(), 122 &extensions_activity_monitor_, throttled_data_type_tracker_.get(),
123 std::vector<SyncEngineEventListener*>(), NULL, NULL)); 123 std::vector<SyncEngineEventListener*>(), NULL, NULL));
124 context_->set_notifications_enabled(true); 124 context_->set_notifications_enabled(true);
125 context_->set_account_name("Test"); 125 context_->set_account_name("Test");
126 scheduler_.reset( 126 scheduler_.reset(
127 new SyncScheduler("TestSyncScheduler", context(), syncer_)); 127 new SyncSchedulerImpl("TestSyncScheduler", context(), syncer_));
128 } 128 }
129 129
130 SyncScheduler* scheduler() { return scheduler_.get(); } 130 SyncSchedulerImpl* scheduler() { return scheduler_.get(); }
131 MockSyncer* syncer() { return syncer_; } 131 MockSyncer* syncer() { return syncer_; }
132 MockDelayProvider* delay() { return delay_; } 132 MockDelayProvider* delay() { return delay_; }
133 MockConnectionManager* connection() { return connection_.get(); } 133 MockConnectionManager* connection() { return connection_.get(); }
134 TimeDelta zero() { return TimeDelta::FromSeconds(0); } 134 TimeDelta zero() { return TimeDelta::FromSeconds(0); }
135 TimeDelta timeout() { 135 TimeDelta timeout() {
136 return TestTimeouts::action_timeout(); 136 return TestTimeouts::action_timeout();
137 } 137 }
138 138
139 virtual void TearDown() { 139 virtual void TearDown() {
140 PumpLoop(); 140 PumpLoop();
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 private: 208 private:
209 syncable::Directory* directory() { 209 syncable::Directory* directory() {
210 return dir_maker_.directory(); 210 return dir_maker_.directory();
211 } 211 }
212 212
213 base::WeakPtrFactory<SyncSchedulerTest> weak_ptr_factory_; 213 base::WeakPtrFactory<SyncSchedulerTest> weak_ptr_factory_;
214 MessageLoop message_loop_; 214 MessageLoop message_loop_;
215 TestDirectorySetterUpper dir_maker_; 215 TestDirectorySetterUpper dir_maker_;
216 scoped_ptr<MockConnectionManager> connection_; 216 scoped_ptr<MockConnectionManager> connection_;
217 scoped_ptr<SyncSessionContext> context_; 217 scoped_ptr<SyncSessionContext> context_;
218 scoped_ptr<SyncScheduler> scheduler_; 218 scoped_ptr<SyncSchedulerImpl> scheduler_;
219 MockSyncer* syncer_; 219 MockSyncer* syncer_;
220 MockDelayProvider* delay_; 220 MockDelayProvider* delay_;
221 std::vector<scoped_refptr<FakeModelWorker> > workers_; 221 std::vector<scoped_refptr<FakeModelWorker> > workers_;
222 FakeExtensionsActivityMonitor extensions_activity_monitor_; 222 FakeExtensionsActivityMonitor extensions_activity_monitor_;
223 scoped_ptr<ThrottledDataTypeTracker> throttled_data_type_tracker_; 223 scoped_ptr<ThrottledDataTypeTracker> throttled_data_type_tracker_;
224 }; 224 };
225 225
226 void RecordSyncShareImpl(SyncSession* s, SyncShareRecords* record) { 226 void RecordSyncShareImpl(SyncSession* s, SyncShareRecords* record) {
227 record->times.push_back(TimeTicks::Now()); 227 record->times.push_back(TimeTicks::Now());
228 record->snapshots.push_back(s->TakeSnapshot()); 228 record->snapshots.push_back(s->TakeSnapshot());
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 611
612 // Test that the short poll interval is used. 612 // Test that the short poll interval is used.
613 TEST_F(SyncSchedulerTest, PollNotificationsDisabled) { 613 TEST_F(SyncSchedulerTest, PollNotificationsDisabled) {
614 SyncShareRecords records; 614 SyncShareRecords records;
615 TimeDelta poll_interval(TimeDelta::FromMilliseconds(30)); 615 TimeDelta poll_interval(TimeDelta::FromMilliseconds(30));
616 EXPECT_CALL(*syncer(), SyncShare(_,_,_)).Times(AtLeast(kMinNumSamples)) 616 EXPECT_CALL(*syncer(), SyncShare(_,_,_)).Times(AtLeast(kMinNumSamples))
617 .WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateSuccess), 617 .WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateSuccess),
618 WithArg<0>(RecordSyncShareMultiple(&records, kMinNumSamples)))); 618 WithArg<0>(RecordSyncShareMultiple(&records, kMinNumSamples))));
619 619
620 scheduler()->OnReceivedShortPollIntervalUpdate(poll_interval); 620 scheduler()->OnReceivedShortPollIntervalUpdate(poll_interval);
621 scheduler()->set_notifications_enabled(false); 621 scheduler()->SetNotificationsEnabled(false);
622 622
623 TimeTicks optimal_start = TimeTicks::Now() + poll_interval; 623 TimeTicks optimal_start = TimeTicks::Now() + poll_interval;
624 StartSyncScheduler(SyncScheduler::NORMAL_MODE); 624 StartSyncScheduler(SyncScheduler::NORMAL_MODE);
625 625
626 // Run again to wait for polling. 626 // Run again to wait for polling.
627 RunLoop(); 627 RunLoop();
628 628
629 StopSyncScheduler(); 629 StopSyncScheduler();
630 AnalyzePollRun(records, kMinNumSamples, optimal_start, poll_interval); 630 AnalyzePollRun(records, kMinNumSamples, optimal_start, poll_interval);
631 } 631 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
663 663
664 EXPECT_CALL(*syncer(), SyncShare(_,_,_)) 664 EXPECT_CALL(*syncer(), SyncShare(_,_,_))
665 .WillOnce( 665 .WillOnce(
666 DoAll( 666 DoAll(
667 WithArg<0>( 667 WithArg<0>(
668 sessions::test_util::SimulateSessionsCommitDelayUpdate( 668 sessions::test_util::SimulateSessionsCommitDelayUpdate(
669 delay2)), 669 delay2)),
670 Invoke(sessions::test_util::SimulateSuccess), 670 Invoke(sessions::test_util::SimulateSuccess),
671 QuitLoopNowAction())); 671 QuitLoopNowAction()));
672 672
673 EXPECT_EQ(delay1, scheduler()->sessions_commit_delay()); 673 EXPECT_EQ(delay1, scheduler()->GetSessionsCommitDelay());
674 StartSyncScheduler(SyncScheduler::NORMAL_MODE); 674 StartSyncScheduler(SyncScheduler::NORMAL_MODE);
675 675
676 EXPECT_EQ(delay1, scheduler()->sessions_commit_delay()); 676 EXPECT_EQ(delay1, scheduler()->GetSessionsCommitDelay());
677 const ModelTypeSet model_types(syncer::BOOKMARKS); 677 const ModelTypeSet model_types(syncer::BOOKMARKS);
678 scheduler()->ScheduleNudgeAsync( 678 scheduler()->ScheduleNudgeAsync(
679 zero(), NUDGE_SOURCE_LOCAL, model_types, FROM_HERE); 679 zero(), NUDGE_SOURCE_LOCAL, model_types, FROM_HERE);
680 RunLoop(); 680 RunLoop();
681 681
682 EXPECT_EQ(delay2, scheduler()->sessions_commit_delay()); 682 EXPECT_EQ(delay2, scheduler()->GetSessionsCommitDelay());
683 StopSyncScheduler(); 683 StopSyncScheduler();
684 } 684 }
685 685
686 // Test that a sync session is run through to completion. 686 // Test that a sync session is run through to completion.
687 TEST_F(SyncSchedulerTest, HasMoreToSync) { 687 TEST_F(SyncSchedulerTest, HasMoreToSync) {
688 EXPECT_CALL(*syncer(), SyncShare(_,_,_)) 688 EXPECT_CALL(*syncer(), SyncShare(_,_,_))
689 .WillOnce(Invoke(sessions::test_util::SimulateHasMoreToSync)) 689 .WillOnce(Invoke(sessions::test_util::SimulateHasMoreToSync))
690 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), 690 .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess),
691 QuitLoopNowAction())); 691 QuitLoopNowAction()));
692 StartSyncScheduler(SyncScheduler::NORMAL_MODE); 692 StartSyncScheduler(SyncScheduler::NORMAL_MODE);
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after
1040 RunLoop(); 1040 RunLoop();
1041 EXPECT_FALSE(scheduler()->IsBackingOff()); 1041 EXPECT_FALSE(scheduler()->IsBackingOff());
1042 1042
1043 // Run the successful poll. 1043 // Run the successful poll.
1044 RunLoop(); 1044 RunLoop();
1045 EXPECT_FALSE(scheduler()->IsBackingOff()); 1045 EXPECT_FALSE(scheduler()->IsBackingOff());
1046 } 1046 }
1047 1047
1048 TEST_F(SyncSchedulerTest, GetRecommendedDelay) { 1048 TEST_F(SyncSchedulerTest, GetRecommendedDelay) {
1049 EXPECT_LE(TimeDelta::FromSeconds(0), 1049 EXPECT_LE(TimeDelta::FromSeconds(0),
1050 SyncScheduler::GetRecommendedDelay(TimeDelta::FromSeconds(0))); 1050 SyncSchedulerImpl::GetRecommendedDelay(TimeDelta::FromSeconds(0)));
1051 EXPECT_LE(TimeDelta::FromSeconds(1), 1051 EXPECT_LE(TimeDelta::FromSeconds(1),
1052 SyncScheduler::GetRecommendedDelay(TimeDelta::FromSeconds(1))); 1052 SyncSchedulerImpl::GetRecommendedDelay(TimeDelta::FromSeconds(1)));
1053 EXPECT_LE(TimeDelta::FromSeconds(50), 1053 EXPECT_LE(TimeDelta::FromSeconds(50),
1054 SyncScheduler::GetRecommendedDelay(TimeDelta::FromSeconds(50))); 1054 SyncSchedulerImpl::GetRecommendedDelay(
1055 TimeDelta::FromSeconds(50)));
1055 EXPECT_LE(TimeDelta::FromSeconds(10), 1056 EXPECT_LE(TimeDelta::FromSeconds(10),
1056 SyncScheduler::GetRecommendedDelay(TimeDelta::FromSeconds(10))); 1057 SyncSchedulerImpl::GetRecommendedDelay(
1058 TimeDelta::FromSeconds(10)));
1057 EXPECT_EQ(TimeDelta::FromSeconds(kMaxBackoffSeconds), 1059 EXPECT_EQ(TimeDelta::FromSeconds(kMaxBackoffSeconds),
1058 SyncScheduler::GetRecommendedDelay( 1060 SyncSchedulerImpl::GetRecommendedDelay(
1059 TimeDelta::FromSeconds(kMaxBackoffSeconds))); 1061 TimeDelta::FromSeconds(kMaxBackoffSeconds)));
1060 EXPECT_EQ(TimeDelta::FromSeconds(kMaxBackoffSeconds), 1062 EXPECT_EQ(TimeDelta::FromSeconds(kMaxBackoffSeconds),
1061 SyncScheduler::GetRecommendedDelay( 1063 SyncSchedulerImpl::GetRecommendedDelay(
1062 TimeDelta::FromSeconds(kMaxBackoffSeconds + 1))); 1064 TimeDelta::FromSeconds(kMaxBackoffSeconds + 1)));
1063 } 1065 }
1064 1066
1065 // Test that appropriate syncer steps are requested for each job type. 1067 // Test that appropriate syncer steps are requested for each job type.
1066 TEST_F(SyncSchedulerTest, SyncerSteps) { 1068 TEST_F(SyncSchedulerTest, SyncerSteps) {
1067 // Nudges. 1069 // Nudges.
1068 EXPECT_CALL(*syncer(), SyncShare(_, SYNCER_BEGIN, SYNCER_END)) 1070 EXPECT_CALL(*syncer(), SyncShare(_, SYNCER_BEGIN, SYNCER_END))
1069 .WillOnce(Invoke(sessions::test_util::SimulateSuccess)); 1071 .WillOnce(Invoke(sessions::test_util::SimulateSuccess));
1070 StartSyncScheduler(SyncScheduler::NORMAL_MODE); 1072 StartSyncScheduler(SyncScheduler::NORMAL_MODE);
1071 1073
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
1178 PumpLoop(); 1180 PumpLoop();
1179 // Pump again to run job. 1181 // Pump again to run job.
1180 PumpLoop(); 1182 PumpLoop();
1181 1183
1182 StopSyncScheduler(); 1184 StopSyncScheduler();
1183 1185
1184 EXPECT_TRUE(expected == context()->previous_session_routing_info()); 1186 EXPECT_TRUE(expected == context()->previous_session_routing_info());
1185 } 1187 }
1186 1188
1187 } // namespace syncer 1189 } // namespace syncer
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698