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

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

Issue 11342008: Revert 164565 - sync: make scheduling logic and job ownership more obvious. (Closed) Base URL: svn://svn.chromium.org/chrome/branches/1311/src/
Patch Set: Created 8 years, 1 month 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_unittest.cc ('k') | sync/engine/sync_session_job.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/message_loop.h" 5 #include "base/message_loop.h"
6 #include "base/time.h" 6 #include "base/time.h"
7 #include "sync/engine/backoff_delay_provider.h" 7 #include "sync/engine/backoff_delay_provider.h"
8 #include "sync/engine/sync_scheduler_impl.h" 8 #include "sync/engine/sync_scheduler_impl.h"
9 #include "sync/engine/throttled_data_type_tracker.h" 9 #include "sync/engine/throttled_data_type_tracker.h"
10 #include "sync/internal_api/public/engine/polling_constants.h" 10 #include "sync/internal_api/public/engine/polling_constants.h"
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 new SyncSchedulerImpl::WaitInterval( 85 new SyncSchedulerImpl::WaitInterval(
86 SyncSchedulerImpl::WaitInterval::EXPONENTIAL_BACKOFF, 86 SyncSchedulerImpl::WaitInterval::EXPONENTIAL_BACKOFF,
87 TimeDelta::FromSeconds(1))); 87 TimeDelta::FromSeconds(1)));
88 } 88 }
89 89
90 void SetWaitIntervalHadNudge(bool had_nudge) { 90 void SetWaitIntervalHadNudge(bool had_nudge) {
91 scheduler_->wait_interval_->had_nudge = had_nudge; 91 scheduler_->wait_interval_->had_nudge = had_nudge;
92 } 92 }
93 93
94 SyncSchedulerImpl::JobProcessDecision DecideOnJob( 94 SyncSchedulerImpl::JobProcessDecision DecideOnJob(
95 const SyncSessionJob& job) { 95 const SyncSchedulerImpl::SyncSessionJob& job) {
96 return scheduler_->DecideOnJob(job); 96 return scheduler_->DecideOnJob(job);
97 } 97 }
98 98
99 void InitializeSyncerOnNormalMode() { 99 void InitializeSyncerOnNormalMode() {
100 SetMode(SyncScheduler::NORMAL_MODE); 100 SetMode(SyncScheduler::NORMAL_MODE);
101 ResetWaitInterval(); 101 ResetWaitInterval();
102 } 102 }
103 103
104 SyncSchedulerImpl::JobProcessDecision CreateAndDecideJob( 104 SyncSchedulerImpl::JobProcessDecision CreateAndDecideJob(
105 SyncSessionJob::Purpose purpose) { 105 SyncSchedulerImpl::SyncSessionJob::SyncSessionJobPurpose purpose) {
106 scoped_ptr<SyncSession> s(scheduler_->CreateSyncSession(SyncSourceInfo())); 106 SyncSession* s = scheduler_->CreateSyncSession(SyncSourceInfo());
107 SyncSessionJob job(purpose, TimeTicks::Now(), s.Pass(), 107 SyncSchedulerImpl::SyncSessionJob job(purpose, TimeTicks::Now(),
108 ConfigurationParams(), FROM_HERE); 108 make_linked_ptr(s),
109 false,
110 ConfigurationParams(),
111 FROM_HERE);
109 return DecideOnJob(job); 112 return DecideOnJob(job);
110 } 113 }
111 114
112 SyncSessionContext* context() { return context_.get(); } 115 SyncSessionContext* context() { return context_.get(); }
113 116
114 private: 117 private:
115 MessageLoop message_loop_; 118 MessageLoop message_loop_;
116 scoped_ptr<MockConnectionManager> connection_; 119 scoped_ptr<MockConnectionManager> connection_;
117 scoped_ptr<SyncSessionContext> context_; 120 scoped_ptr<SyncSessionContext> context_;
118 std::vector<scoped_refptr<FakeModelWorker> > workers_; 121 std::vector<scoped_refptr<FakeModelWorker> > workers_;
119 FakeExtensionsActivityMonitor extensions_activity_monitor_; 122 FakeExtensionsActivityMonitor extensions_activity_monitor_;
120 scoped_ptr<ThrottledDataTypeTracker> throttled_data_type_tracker_; 123 scoped_ptr<ThrottledDataTypeTracker> throttled_data_type_tracker_;
121 TestDirectorySetterUpper dir_maker_; 124 TestDirectorySetterUpper dir_maker_;
122 125
123 protected: 126 protected:
124 // Declared here to ensure it is destructed before the objects it references. 127 // Declared here to ensure it is destructed before the objects it references.
125 scoped_ptr<SyncSchedulerImpl> scheduler_; 128 scoped_ptr<SyncSchedulerImpl> scheduler_;
126 }; 129 };
127 130
128 TEST_F(SyncSchedulerWhiteboxTest, SaveNudge) { 131 TEST_F(SyncSchedulerWhiteboxTest, SaveNudge) {
129 InitializeSyncerOnNormalMode(); 132 InitializeSyncerOnNormalMode();
130 133
131 // Now set the mode to configure. 134 // Now set the mode to configure.
132 SetMode(SyncScheduler::CONFIGURATION_MODE); 135 SetMode(SyncScheduler::CONFIGURATION_MODE);
133 136
134 SyncSchedulerImpl::JobProcessDecision decision = 137 SyncSchedulerImpl::JobProcessDecision decision =
135 CreateAndDecideJob(SyncSessionJob::NUDGE); 138 CreateAndDecideJob(SyncSchedulerImpl::SyncSessionJob::NUDGE);
136 139
137 EXPECT_EQ(decision, SyncSchedulerImpl::SAVE); 140 EXPECT_EQ(decision, SyncSchedulerImpl::SAVE);
138 } 141 }
139 142
140 TEST_F(SyncSchedulerWhiteboxTest, SaveNudgeWhileTypeThrottled) { 143 TEST_F(SyncSchedulerWhiteboxTest, SaveNudgeWhileTypeThrottled) {
141 InitializeSyncerOnNormalMode(); 144 InitializeSyncerOnNormalMode();
142 145
143 const ModelTypeSet types(BOOKMARKS); 146 const ModelTypeSet types(BOOKMARKS);
144 147
145 // Mark bookmarks as throttled. 148 // Mark bookmarks as throttled.
146 context()->throttled_data_type_tracker()->SetUnthrottleTime( 149 context()->throttled_data_type_tracker()->SetUnthrottleTime(
147 types, base::TimeTicks::Now() + base::TimeDelta::FromHours(2)); 150 types, base::TimeTicks::Now() + base::TimeDelta::FromHours(2));
148 151
149 const ModelTypeInvalidationMap& invalidation_map = 152 const ModelTypeInvalidationMap& invalidation_map =
150 ModelTypeSetToInvalidationMap(types, std::string()); 153 ModelTypeSetToInvalidationMap(types, std::string());
151 154
152 SyncSourceInfo info(GetUpdatesCallerInfo::LOCAL, invalidation_map); 155 SyncSourceInfo info(GetUpdatesCallerInfo::LOCAL, invalidation_map);
153 scoped_ptr<SyncSession> s(scheduler_->CreateSyncSession(info)); 156 SyncSession* s = scheduler_->CreateSyncSession(info);
154 157
155 // Now schedule a nudge with just bookmarks and the change is local. 158 // Now schedule a nudge with just bookmarks and the change is local.
156 SyncSessionJob job(SyncSessionJob::NUDGE, 159 SyncSchedulerImpl::SyncSessionJob job(
157 TimeTicks::Now(), 160 SyncSchedulerImpl::SyncSessionJob::NUDGE,
158 s.Pass(), 161 TimeTicks::Now(),
159 ConfigurationParams(), 162 make_linked_ptr(s),
160 FROM_HERE); 163 false,
164 ConfigurationParams(),
165 FROM_HERE);
166
161 SyncSchedulerImpl::JobProcessDecision decision = DecideOnJob(job); 167 SyncSchedulerImpl::JobProcessDecision decision = DecideOnJob(job);
162 EXPECT_EQ(decision, SyncSchedulerImpl::SAVE); 168 EXPECT_EQ(decision, SyncSchedulerImpl::SAVE);
163 } 169 }
164 170
165 TEST_F(SyncSchedulerWhiteboxTest, ContinueNudge) { 171 TEST_F(SyncSchedulerWhiteboxTest, ContinueNudge) {
166 InitializeSyncerOnNormalMode(); 172 InitializeSyncerOnNormalMode();
167 173
168 SyncSchedulerImpl::JobProcessDecision decision = CreateAndDecideJob( 174 SyncSchedulerImpl::JobProcessDecision decision = CreateAndDecideJob(
169 SyncSessionJob::NUDGE); 175 SyncSchedulerImpl::SyncSessionJob::NUDGE);
170 176
171 EXPECT_EQ(decision, SyncSchedulerImpl::CONTINUE); 177 EXPECT_EQ(decision, SyncSchedulerImpl::CONTINUE);
172 } 178 }
173 179
174 TEST_F(SyncSchedulerWhiteboxTest, DropPoll) { 180 TEST_F(SyncSchedulerWhiteboxTest, DropPoll) {
175 InitializeSyncerOnNormalMode(); 181 InitializeSyncerOnNormalMode();
176 SetMode(SyncScheduler::CONFIGURATION_MODE); 182 SetMode(SyncScheduler::CONFIGURATION_MODE);
177 183
178 SyncSchedulerImpl::JobProcessDecision decision = CreateAndDecideJob( 184 SyncSchedulerImpl::JobProcessDecision decision = CreateAndDecideJob(
179 SyncSessionJob::POLL); 185 SyncSchedulerImpl::SyncSessionJob::POLL);
180 186
181 EXPECT_EQ(decision, SyncSchedulerImpl::DROP); 187 EXPECT_EQ(decision, SyncSchedulerImpl::DROP);
182 } 188 }
183 189
184 TEST_F(SyncSchedulerWhiteboxTest, ContinuePoll) { 190 TEST_F(SyncSchedulerWhiteboxTest, ContinuePoll) {
185 InitializeSyncerOnNormalMode(); 191 InitializeSyncerOnNormalMode();
186 192
187 SyncSchedulerImpl::JobProcessDecision decision = CreateAndDecideJob( 193 SyncSchedulerImpl::JobProcessDecision decision = CreateAndDecideJob(
188 SyncSessionJob::POLL); 194 SyncSchedulerImpl::SyncSessionJob::POLL);
189 195
190 EXPECT_EQ(decision, SyncSchedulerImpl::CONTINUE); 196 EXPECT_EQ(decision, SyncSchedulerImpl::CONTINUE);
191 } 197 }
192 198
193 TEST_F(SyncSchedulerWhiteboxTest, ContinueConfiguration) { 199 TEST_F(SyncSchedulerWhiteboxTest, ContinueConfiguration) {
194 InitializeSyncerOnNormalMode(); 200 InitializeSyncerOnNormalMode();
195 SetMode(SyncScheduler::CONFIGURATION_MODE); 201 SetMode(SyncScheduler::CONFIGURATION_MODE);
196 202
197 SyncSchedulerImpl::JobProcessDecision decision = CreateAndDecideJob( 203 SyncSchedulerImpl::JobProcessDecision decision = CreateAndDecideJob(
198 SyncSessionJob::CONFIGURATION); 204 SyncSchedulerImpl::SyncSessionJob::CONFIGURATION);
199 205
200 EXPECT_EQ(decision, SyncSchedulerImpl::CONTINUE); 206 EXPECT_EQ(decision, SyncSchedulerImpl::CONTINUE);
201 } 207 }
202 208
203 TEST_F(SyncSchedulerWhiteboxTest, SaveConfigurationWhileThrottled) { 209 TEST_F(SyncSchedulerWhiteboxTest, SaveConfigurationWhileThrottled) {
204 InitializeSyncerOnNormalMode(); 210 InitializeSyncerOnNormalMode();
205 SetMode(SyncScheduler::CONFIGURATION_MODE); 211 SetMode(SyncScheduler::CONFIGURATION_MODE);
206 212
207 SetWaitIntervalToThrottled(); 213 SetWaitIntervalToThrottled();
208 214
209 SyncSchedulerImpl::JobProcessDecision decision = CreateAndDecideJob( 215 SyncSchedulerImpl::JobProcessDecision decision = CreateAndDecideJob(
210 SyncSessionJob::CONFIGURATION); 216 SyncSchedulerImpl::SyncSessionJob::CONFIGURATION);
211 217
212 EXPECT_EQ(decision, SyncSchedulerImpl::SAVE); 218 EXPECT_EQ(decision, SyncSchedulerImpl::SAVE);
213 } 219 }
214 220
215 TEST_F(SyncSchedulerWhiteboxTest, SaveNudgeWhileThrottled) { 221 TEST_F(SyncSchedulerWhiteboxTest, SaveNudgeWhileThrottled) {
216 InitializeSyncerOnNormalMode(); 222 InitializeSyncerOnNormalMode();
217 SetMode(SyncScheduler::CONFIGURATION_MODE); 223 SetMode(SyncScheduler::CONFIGURATION_MODE);
218 224
219 SetWaitIntervalToThrottled(); 225 SetWaitIntervalToThrottled();
220 226
221 SyncSchedulerImpl::JobProcessDecision decision = CreateAndDecideJob( 227 SyncSchedulerImpl::JobProcessDecision decision = CreateAndDecideJob(
222 SyncSessionJob::NUDGE); 228 SyncSchedulerImpl::SyncSessionJob::NUDGE);
223 229
224 EXPECT_EQ(decision, SyncSchedulerImpl::SAVE); 230 EXPECT_EQ(decision, SyncSchedulerImpl::SAVE);
225 } 231 }
226 232
227 TEST_F(SyncSchedulerWhiteboxTest, ContinueNudgeWhileExponentialBackOff) { 233 TEST_F(SyncSchedulerWhiteboxTest, ContinueNudgeWhileExponentialBackOff) {
228 InitializeSyncerOnNormalMode(); 234 InitializeSyncerOnNormalMode();
229 SetMode(SyncScheduler::NORMAL_MODE); 235 SetMode(SyncScheduler::NORMAL_MODE);
230 SetWaitIntervalToExponentialBackoff(); 236 SetWaitIntervalToExponentialBackoff();
231 237
232 SyncSchedulerImpl::JobProcessDecision decision = CreateAndDecideJob( 238 SyncSchedulerImpl::JobProcessDecision decision = CreateAndDecideJob(
233 SyncSessionJob::NUDGE); 239 SyncSchedulerImpl::SyncSessionJob::NUDGE);
234 240
235 EXPECT_EQ(decision, SyncSchedulerImpl::CONTINUE); 241 EXPECT_EQ(decision, SyncSchedulerImpl::CONTINUE);
236 } 242 }
237 243
238 TEST_F(SyncSchedulerWhiteboxTest, DropNudgeWhileExponentialBackOff) { 244 TEST_F(SyncSchedulerWhiteboxTest, DropNudgeWhileExponentialBackOff) {
239 InitializeSyncerOnNormalMode(); 245 InitializeSyncerOnNormalMode();
240 SetMode(SyncScheduler::NORMAL_MODE); 246 SetMode(SyncScheduler::NORMAL_MODE);
241 SetWaitIntervalToExponentialBackoff(); 247 SetWaitIntervalToExponentialBackoff();
242 SetWaitIntervalHadNudge(true); 248 SetWaitIntervalHadNudge(true);
243 249
244 SyncSchedulerImpl::JobProcessDecision decision = CreateAndDecideJob( 250 SyncSchedulerImpl::JobProcessDecision decision = CreateAndDecideJob(
245 SyncSessionJob::NUDGE); 251 SyncSchedulerImpl::SyncSessionJob::NUDGE);
246 252
247 EXPECT_EQ(decision, SyncSchedulerImpl::DROP); 253 EXPECT_EQ(decision, SyncSchedulerImpl::DROP);
248 } 254 }
249 255
250 TEST_F(SyncSchedulerWhiteboxTest, ContinueCanaryJobConfig) { 256 TEST_F(SyncSchedulerWhiteboxTest, ContinueCanaryJobConfig) {
251 InitializeSyncerOnNormalMode(); 257 InitializeSyncerOnNormalMode();
252 SetMode(SyncScheduler::CONFIGURATION_MODE); 258 SetMode(SyncScheduler::CONFIGURATION_MODE);
253 SetWaitIntervalToExponentialBackoff(); 259 SetWaitIntervalToExponentialBackoff();
254 260
255 SyncSessionJob job(SyncSessionJob::CONFIGURATION, 261 struct SyncSchedulerImpl::SyncSessionJob job;
256 TimeTicks::Now(), scoped_ptr<SyncSession>(), 262 job.purpose = SyncSchedulerImpl::SyncSessionJob::CONFIGURATION;
257 ConfigurationParams(), FROM_HERE); 263 job.scheduled_start = TimeTicks::Now();
258 264 job.is_canary_job = true;
259 job.GrantCanaryPrivilege();
260 SyncSchedulerImpl::JobProcessDecision decision = DecideOnJob(job); 265 SyncSchedulerImpl::JobProcessDecision decision = DecideOnJob(job);
261 266
262 EXPECT_EQ(decision, SyncSchedulerImpl::CONTINUE); 267 EXPECT_EQ(decision, SyncSchedulerImpl::CONTINUE);
263 } 268 }
264 269
265 } // namespace syncer 270 } // namespace syncer
OLDNEW
« no previous file with comments | « sync/engine/sync_scheduler_unittest.cc ('k') | sync/engine/sync_session_job.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698