OLD | NEW |
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 "sync/engine/sync_session_job.h" | 5 #include "sync/engine/sync_session_job.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/time.h" | 9 #include "base/time.h" |
10 #include "sync/internal_api/public/base/model_type_invalidation_map.h" | 10 #include "sync/internal_api/public/base/model_type_invalidation_map.h" |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 private: | 102 private: |
103 scoped_ptr<sessions::SyncSessionContext> context_; | 103 scoped_ptr<sessions::SyncSessionContext> context_; |
104 std::vector<scoped_refptr<ModelSafeWorker> > workers_; | 104 std::vector<scoped_refptr<ModelSafeWorker> > workers_; |
105 MockDelegate delegate_; | 105 MockDelegate delegate_; |
106 ModelSafeRoutingInfo routes_; | 106 ModelSafeRoutingInfo routes_; |
107 bool config_params_callback_invoked_; | 107 bool config_params_callback_invoked_; |
108 }; | 108 }; |
109 | 109 |
110 TEST_F(SyncSessionJobTest, Clone) { | 110 TEST_F(SyncSessionJobTest, Clone) { |
111 SyncSessionJob job1(SyncSessionJob::NUDGE, TimeTicks::Now(), | 111 SyncSessionJob job1(SyncSessionJob::NUDGE, TimeTicks::Now(), |
112 NewLocalSession().Pass(), ConfigurationParams(), FROM_HERE); | 112 NewLocalSession().Pass(), ConfigurationParams()); |
113 | 113 |
114 sessions::test_util::SimulateSuccess(job1.mutable_session(), | 114 sessions::test_util::SimulateSuccess(job1.mutable_session(), |
115 job1.start_step(), | 115 job1.start_step(), |
116 job1.end_step()); | 116 job1.end_step()); |
117 job1.Finish(false); | 117 job1.Finish(false); |
118 ModelSafeRoutingInfo new_routes; | 118 ModelSafeRoutingInfo new_routes; |
119 new_routes[AUTOFILL] = GROUP_PASSIVE; | 119 new_routes[AUTOFILL] = GROUP_PASSIVE; |
120 context()->set_routing_info(new_routes); | 120 context()->set_routing_info(new_routes); |
121 const tracked_objects::Location from_here1(FROM_HERE); | |
122 scoped_ptr<SyncSessionJob> clone1 = job1.Clone(); | 121 scoped_ptr<SyncSessionJob> clone1 = job1.Clone(); |
123 scoped_ptr<SyncSessionJob> clone1_loc = job1.CloneFromLocation(from_here1); | |
124 | 122 |
125 ExpectClonesBase(&job1, clone1.get()); | 123 ExpectClonesBase(&job1, clone1.get()); |
126 ExpectClonesBase(&job1, clone1_loc.get()); | |
127 EXPECT_NE(job1.session(), clone1->session()); | 124 EXPECT_NE(job1.session(), clone1->session()); |
128 EXPECT_EQ(job1.from_location().ToString(), | |
129 clone1->from_location().ToString()); | |
130 EXPECT_NE(job1.session(), clone1_loc->session()); | |
131 EXPECT_EQ(from_here1.ToString(), clone1_loc->from_location().ToString()); | |
132 | 125 |
133 context()->set_routing_info(routes()); | 126 context()->set_routing_info(routes()); |
134 clone1->GrantCanaryPrivilege(); | 127 clone1->GrantCanaryPrivilege(); |
135 sessions::test_util::SimulateSuccess(clone1->mutable_session(), | 128 sessions::test_util::SimulateSuccess(clone1->mutable_session(), |
136 clone1->start_step(), | 129 clone1->start_step(), |
137 clone1->end_step()); | 130 clone1->end_step()); |
138 clone1->Finish(false); | 131 clone1->Finish(false); |
139 const tracked_objects::Location from_here2(FROM_HERE); | |
140 scoped_ptr<SyncSessionJob> clone2 = clone1->Clone(); | 132 scoped_ptr<SyncSessionJob> clone2 = clone1->Clone(); |
141 scoped_ptr<SyncSessionJob> clone2_loc(clone1->CloneFromLocation(from_here2)); | |
142 | 133 |
143 ExpectClonesBase(clone1.get(), clone2.get()); | 134 ExpectClonesBase(clone1.get(), clone2.get()); |
144 ExpectClonesBase(clone1.get(), clone2_loc.get()); | |
145 EXPECT_NE(clone1->session(), clone2->session()); | 135 EXPECT_NE(clone1->session(), clone2->session()); |
146 EXPECT_EQ(clone1->from_location().ToString(), | |
147 clone2->from_location().ToString()); | |
148 EXPECT_NE(clone1->session(), clone2->session()); | 136 EXPECT_NE(clone1->session(), clone2->session()); |
149 EXPECT_EQ(from_here2.ToString(), clone2_loc->from_location().ToString()); | |
150 | 137 |
151 clone1.reset(); | 138 clone1.reset(); |
152 clone1_loc.reset(); | |
153 ExpectClonesBase(&job1, clone2.get()); | 139 ExpectClonesBase(&job1, clone2.get()); |
154 EXPECT_NE(job1.session(), clone2->session()); | 140 EXPECT_NE(job1.session(), clone2->session()); |
155 EXPECT_EQ(job1.from_location().ToString(), | |
156 clone2->from_location().ToString()); | |
157 } | 141 } |
158 | 142 |
159 TEST_F(SyncSessionJobTest, CloneAfterEarlyExit) { | 143 TEST_F(SyncSessionJobTest, CloneAfterEarlyExit) { |
160 SyncSessionJob job1(SyncSessionJob::NUDGE, TimeTicks::Now(), | 144 SyncSessionJob job1(SyncSessionJob::NUDGE, TimeTicks::Now(), |
161 NewLocalSession().Pass(), ConfigurationParams(), FROM_HERE); | 145 NewLocalSession().Pass(), ConfigurationParams()); |
162 job1.Finish(true); | 146 job1.Finish(true); |
163 scoped_ptr<SyncSessionJob> job2 = job1.Clone(); | 147 scoped_ptr<SyncSessionJob> job2 = job1.Clone(); |
164 scoped_ptr<SyncSessionJob> job2_loc = job1.CloneFromLocation(FROM_HERE); | |
165 ExpectClonesBase(&job1, job2.get()); | 148 ExpectClonesBase(&job1, job2.get()); |
166 ExpectClonesBase(&job1, job2_loc.get()); | |
167 } | 149 } |
168 | 150 |
169 TEST_F(SyncSessionJobTest, CloneAndAbandon) { | 151 TEST_F(SyncSessionJobTest, CloneAndAbandon) { |
170 scoped_ptr<SyncSession> session = NewLocalSession(); | 152 scoped_ptr<SyncSession> session = NewLocalSession(); |
171 SyncSession* session_ptr = session.get(); | 153 SyncSession* session_ptr = session.get(); |
172 | 154 |
173 SyncSessionJob job1(SyncSessionJob::NUDGE, TimeTicks::Now(), | 155 SyncSessionJob job1(SyncSessionJob::NUDGE, TimeTicks::Now(), |
174 session.Pass(), ConfigurationParams(), FROM_HERE); | 156 session.Pass(), ConfigurationParams()); |
175 ModelSafeRoutingInfo new_routes; | 157 ModelSafeRoutingInfo new_routes; |
176 new_routes[AUTOFILL] = GROUP_PASSIVE; | 158 new_routes[AUTOFILL] = GROUP_PASSIVE; |
177 context()->set_routing_info(new_routes); | 159 context()->set_routing_info(new_routes); |
178 | 160 |
179 scoped_ptr<SyncSessionJob> clone1 = job1.CloneAndAbandon(); | 161 scoped_ptr<SyncSessionJob> clone1 = job1.CloneAndAbandon(); |
180 ExpectClonesBase(&job1, clone1.get()); | 162 ExpectClonesBase(&job1, clone1.get()); |
181 EXPECT_FALSE(job1.session()); | 163 EXPECT_FALSE(job1.session()); |
182 EXPECT_EQ(session_ptr, clone1->session()); | 164 EXPECT_EQ(session_ptr, clone1->session()); |
183 } | 165 } |
184 | 166 |
185 // Tests interaction between Finish and sync cycle success / failure. | 167 // Tests interaction between Finish and sync cycle success / failure. |
186 TEST_F(SyncSessionJobTest, Finish) { | 168 TEST_F(SyncSessionJobTest, Finish) { |
187 SyncSessionJob job1(SyncSessionJob::NUDGE, TimeTicks::Now(), | 169 SyncSessionJob job1(SyncSessionJob::NUDGE, TimeTicks::Now(), |
188 NewLocalSession().Pass(), ConfigurationParams(), FROM_HERE); | 170 NewLocalSession().Pass(), ConfigurationParams()); |
189 | 171 |
190 sessions::test_util::SimulateSuccess(job1.mutable_session(), | 172 sessions::test_util::SimulateSuccess(job1.mutable_session(), |
191 job1.start_step(), | 173 job1.start_step(), |
192 job1.end_step()); | 174 job1.end_step()); |
193 EXPECT_TRUE(job1.Finish(false /* early_exit */)); | 175 EXPECT_TRUE(job1.Finish(false /* early_exit */)); |
194 | 176 |
195 scoped_ptr<SyncSessionJob> job2 = job1.Clone(); | 177 scoped_ptr<SyncSessionJob> job2 = job1.Clone(); |
196 sessions::test_util::SimulateConnectionFailure(job2->mutable_session(), | 178 sessions::test_util::SimulateConnectionFailure(job2->mutable_session(), |
197 job2->start_step(), | 179 job2->start_step(), |
198 job2->end_step()); | 180 job2->end_step()); |
199 EXPECT_FALSE(job2->Finish(false)); | 181 EXPECT_FALSE(job2->Finish(false)); |
200 | 182 |
201 scoped_ptr<SyncSessionJob> job3 = job2->Clone(); | 183 scoped_ptr<SyncSessionJob> job3 = job2->Clone(); |
202 EXPECT_FALSE(job3->Finish(true)); | 184 EXPECT_FALSE(job3->Finish(true)); |
203 } | 185 } |
204 | 186 |
205 TEST_F(SyncSessionJobTest, FinishCallsReadyTask) { | 187 TEST_F(SyncSessionJobTest, FinishCallsReadyTask) { |
206 ConfigurationParams params; | 188 ConfigurationParams params; |
207 params.ready_task = base::Bind( | 189 params.ready_task = base::Bind( |
208 &SyncSessionJobTest::ConfigurationParamsCallback, | 190 &SyncSessionJobTest::ConfigurationParamsCallback, |
209 base::Unretained(this)); | 191 base::Unretained(this)); |
210 | 192 |
211 sessions::SyncSourceInfo info( | 193 sessions::SyncSourceInfo info( |
212 sync_pb::GetUpdatesCallerInfo::RECONFIGURATION, | 194 sync_pb::GetUpdatesCallerInfo::RECONFIGURATION, |
213 ModelTypeInvalidationMap()); | 195 ModelTypeInvalidationMap()); |
214 scoped_ptr<SyncSession> session( | 196 scoped_ptr<SyncSession> session( |
215 new SyncSession(context(), delegate(), info)); | 197 new SyncSession(context(), delegate(), info)); |
216 | 198 |
217 SyncSessionJob job1(SyncSessionJob::CONFIGURATION, TimeTicks::Now(), | 199 SyncSessionJob job1(SyncSessionJob::CONFIGURATION, TimeTicks::Now(), |
218 session.Pass(), params, FROM_HERE); | 200 session.Pass(), params); |
219 sessions::test_util::SimulateSuccess(job1.mutable_session(), | 201 sessions::test_util::SimulateSuccess(job1.mutable_session(), |
220 job1.start_step(), | 202 job1.start_step(), |
221 job1.end_step()); | 203 job1.end_step()); |
222 job1.Finish(false); | 204 job1.Finish(false); |
223 EXPECT_TRUE(config_params_callback_invoked()); | 205 EXPECT_TRUE(config_params_callback_invoked()); |
224 } | 206 } |
225 | 207 |
226 } // namespace syncer | 208 } // namespace syncer |
OLD | NEW |