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

Side by Side Diff: chrome/browser/sync/sessions/sync_session_unittest.cc

Issue 5939006: sync: beginnings of MessageLoop based SyncerThread (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix specialization specialization Created 9 years, 11 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) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 "chrome/browser/sync/sessions/sync_session.h" 5 #include "chrome/browser/sync/sessions/sync_session.h"
6 6
7 #include "base/ref_counted.h"
7 #include "chrome/browser/sync/engine/conflict_resolver.h" 8 #include "chrome/browser/sync/engine/conflict_resolver.h"
9 #include "chrome/browser/sync/engine/mock_model_safe_workers.h"
8 #include "chrome/browser/sync/engine/syncer_types.h" 10 #include "chrome/browser/sync/engine/syncer_types.h"
9 #include "chrome/browser/sync/engine/syncer_util.h" 11 #include "chrome/browser/sync/engine/syncer_util.h"
10 #include "chrome/browser/sync/syncable/directory_manager.h" 12 #include "chrome/browser/sync/syncable/directory_manager.h"
11 #include "chrome/browser/sync/syncable/syncable.h" 13 #include "chrome/browser/sync/syncable/syncable.h"
12 #include "chrome/test/sync/engine/test_directory_setter_upper.h" 14 #include "chrome/test/sync/engine/test_directory_setter_upper.h"
13 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
14 16
15 using syncable::WriteTransaction; 17 using syncable::WriteTransaction;
16 18
17 namespace browser_sync { 19 namespace browser_sync {
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
101 { 103 {
102 ScopedSessionContextConflictResolver s_resolver(context_.get(), &resolver); 104 ScopedSessionContextConflictResolver s_resolver(context_.get(), &resolver);
103 EXPECT_EQ(&resolver, context_->resolver()); 105 EXPECT_EQ(&resolver, context_->resolver());
104 } 106 }
105 EXPECT_FALSE(context_->resolver()); 107 EXPECT_FALSE(context_->resolver());
106 } 108 }
107 109
108 TEST_F(SyncSessionTest, SetWriteTransaction) { 110 TEST_F(SyncSessionTest, SetWriteTransaction) {
109 TestDirectorySetterUpper db; 111 TestDirectorySetterUpper db;
110 db.SetUp(); 112 db.SetUp();
111 session_.reset(NULL); 113 session_.reset();
112 context_.reset(new SyncSessionContext(NULL, db.manager(), this, 114 context_.reset(new SyncSessionContext(NULL, db.manager(), this,
113 std::vector<SyncEngineEventListener*>())); 115 std::vector<SyncEngineEventListener*>()));
114 session_.reset(MakeSession()); 116 session_.reset(MakeSession());
115 context_->set_account_name(db.name()); 117 context_->set_account_name(db.name());
116 syncable::ScopedDirLookup dir(context_->directory_manager(), 118 syncable::ScopedDirLookup dir(context_->directory_manager(),
117 context_->account_name()); 119 context_->account_name());
118 ASSERT_TRUE(dir.good()); 120 ASSERT_TRUE(dir.good());
119 121
120 scoped_ptr<SyncSession> session(MakeSession()); 122 scoped_ptr<SyncSession> session(MakeSession());
121 EXPECT_TRUE(NULL == session->write_transaction()); 123 EXPECT_TRUE(NULL == session->write_transaction());
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 } 245 }
244 246
245 TEST_F(SyncSessionTest, MoreToSyncIfConflictsResolved) { 247 TEST_F(SyncSessionTest, MoreToSyncIfConflictsResolved) {
246 // Conflict resolution happens after get updates and commit, 248 // Conflict resolution happens after get updates and commit,
247 // so we need to loop back and get updates / commit again now 249 // so we need to loop back and get updates / commit again now
248 // that we have made forward progress. 250 // that we have made forward progress.
249 status()->update_conflicts_resolved(true); 251 status()->update_conflicts_resolved(true);
250 EXPECT_TRUE(session_->HasMoreToSync()); 252 EXPECT_TRUE(session_->HasMoreToSync());
251 } 253 }
252 254
255 TEST_F(SyncSessionTest, ResetTransientState) {
256 status()->update_conflicts_resolved(true);
257 status()->increment_num_successful_commits();
258 EXPECT_TRUE(session_->HasMoreToSync());
259 session_->ResetTransientState();
260 EXPECT_FALSE(status()->conflicts_resolved());
261 EXPECT_FALSE(session_->HasMoreToSync());
262 EXPECT_FALSE(status()->TestAndClearIsDirty());
263 }
264
265 TEST_F(SyncSessionTest, Coalesce) {
266 std::vector<ModelSafeWorker*> workers_one, workers_two;
267 ModelSafeRoutingInfo routes_one, routes_two;
268 SyncSourceInfo source_one(sync_pb::GetUpdatesCallerInfo::PERIODIC,
269 ParamsMeaningJustOneEnabledType());
270 SyncSourceInfo source_two(sync_pb::GetUpdatesCallerInfo::LOCAL,
271 ParamsMeaningAllEnabledTypes());
272 scoped_refptr<MockDBModelWorker> db_worker(new MockDBModelWorker());
273 scoped_refptr<MockUIModelWorker> ui_worker(new MockUIModelWorker());
274 workers_one.push_back(db_worker);
275 workers_two.push_back(db_worker);
276 workers_two.push_back(ui_worker);
277 routes_one[syncable::AUTOFILL] = GROUP_DB;
278 routes_two[syncable::AUTOFILL] = GROUP_DB;
279 routes_two[syncable::BOOKMARKS] = GROUP_UI;
280 SyncSession one(context_.get(), this, source_one, routes_one, workers_one);
281 SyncSession two(context_.get(), this, source_two, routes_two, workers_two);
282
283 one.Coalesce(two);
284
285 EXPECT_EQ(two.source().first, one.source().first);
286 EXPECT_EQ(ParamsMeaningAllEnabledTypes(), one.source().second);
287 std::vector<ModelSafeWorker*>::const_iterator it_db =
288 std::find(one.workers().begin(), one.workers().end(), db_worker);
289 std::vector<ModelSafeWorker*>::const_iterator it_ui =
290 std::find(one.workers().begin(), one.workers().end(), ui_worker);
291 EXPECT_NE(it_db, one.workers().end());
292 EXPECT_NE(it_ui, one.workers().end());
293 EXPECT_EQ(routes_two, one.routing_info());
294 }
295
253 } // namespace 296 } // namespace
254 } // namespace sessions 297 } // namespace sessions
255 } // namespace browser_sync 298 } // namespace browser_sync
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698