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

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/register_app_task_unittest.cc

Issue 213473008: [SyncFS] Split SyncEngine and SyncEngineContext (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix tests Created 6 years, 9 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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_file_system/drive_backend/register_app_task.h" 5 #include "chrome/browser/sync_file_system/drive_backend/register_app_task.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/files/scoped_temp_dir.h" 9 #include "base/files/scoped_temp_dir.h"
10 #include "base/format_macros.h" 10 #include "base/format_macros.h"
(...skipping 17 matching lines...) Expand all
28 #include "third_party/leveldatabase/src/include/leveldb/env.h" 28 #include "third_party/leveldatabase/src/include/leveldb/env.h"
29 #include "third_party/leveldatabase/src/include/leveldb/write_batch.h" 29 #include "third_party/leveldatabase/src/include/leveldb/write_batch.h"
30 30
31 namespace sync_file_system { 31 namespace sync_file_system {
32 namespace drive_backend { 32 namespace drive_backend {
33 33
34 namespace { 34 namespace {
35 const int64 kSyncRootTrackerID = 100; 35 const int64 kSyncRootTrackerID = 100;
36 } // namespace 36 } // namespace
37 37
38 class RegisterAppTaskTest : public testing::Test, 38 class RegisterAppTaskTest : public testing::Test {
39 public SyncEngineContext {
40 public: 39 public:
41 RegisterAppTaskTest() 40 RegisterAppTaskTest()
42 : next_file_id_(1000), 41 : next_file_id_(1000),
43 next_tracker_id_(10000) {} 42 next_tracker_id_(10000) {}
44 virtual ~RegisterAppTaskTest() {} 43 virtual ~RegisterAppTaskTest() {}
45 44
46 virtual void SetUp() OVERRIDE { 45 virtual void SetUp() OVERRIDE {
47 ASSERT_TRUE(database_dir_.CreateUniqueTempDir()); 46 ASSERT_TRUE(database_dir_.CreateUniqueTempDir());
48 in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default())); 47 in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default()));
49 48
50 fake_drive_service_.reset(new drive::FakeDriveService); 49 scoped_ptr<drive::FakeDriveService> fake_drive_service;
51 ASSERT_TRUE(fake_drive_service_->LoadAccountMetadataForWapi( 50 fake_drive_service.reset(new drive::FakeDriveService);
51 ASSERT_TRUE(fake_drive_service->LoadAccountMetadataForWapi(
52 "sync_file_system/account_metadata.json")); 52 "sync_file_system/account_metadata.json"));
53 ASSERT_TRUE(fake_drive_service_->LoadResourceListForWapi( 53 ASSERT_TRUE(fake_drive_service->LoadResourceListForWapi(
54 "gdata/empty_feed.json")); 54 "gdata/empty_feed.json"));
55 55
56 drive_uploader_.reset(new drive::DriveUploader( 56 scoped_ptr<drive::DriveUploader> drive_uploader;
57 fake_drive_service_.get(), base::MessageLoopProxy::current())); 57 drive_uploader.reset(new drive::DriveUploader(
58 fake_drive_service.get(), base::MessageLoopProxy::current()));
58 59
59 fake_drive_service_helper_.reset(new FakeDriveServiceHelper( 60 fake_drive_service_helper_.reset(new FakeDriveServiceHelper(
60 fake_drive_service_.get(), drive_uploader_.get(), 61 fake_drive_service.get(), drive_uploader.get(),
61 kSyncRootFolderTitle)); 62 kSyncRootFolderTitle));
62 63
64 context_.reset(new SyncEngineContext(
65 fake_drive_service.PassAs<drive::DriveServiceInterface>(),
66 drive_uploader.PassAs<drive::DriveUploaderInterface>(),
67 base::MessageLoopProxy::current()));
68
63 ASSERT_EQ(google_apis::HTTP_CREATED, 69 ASSERT_EQ(google_apis::HTTP_CREATED,
64 fake_drive_service_helper_->AddOrphanedFolder( 70 fake_drive_service_helper_->AddOrphanedFolder(
65 kSyncRootFolderTitle, &sync_root_folder_id_)); 71 kSyncRootFolderTitle, &sync_root_folder_id_));
66 } 72 }
67 73
68 virtual void TearDown() OVERRIDE { 74 virtual void TearDown() OVERRIDE {
69 metadata_database_.reset(); 75 context_.reset();
70 base::RunLoop().RunUntilIdle(); 76 base::RunLoop().RunUntilIdle();
71 } 77 }
72 78
73 virtual drive::DriveServiceInterface* GetDriveService() OVERRIDE {
74 return fake_drive_service_.get();
75 }
76
77 virtual drive::DriveUploaderInterface* GetDriveUploader() OVERRIDE {
78 return NULL;
79 }
80
81 virtual MetadataDatabase* GetMetadataDatabase() OVERRIDE {
82 return metadata_database_.get();
83 }
84
85 virtual RemoteChangeProcessor* GetRemoteChangeProcessor() OVERRIDE {
86 return NULL;
87 }
88
89 virtual base::SequencedTaskRunner* GetBlockingTaskRunner() OVERRIDE {
90 return base::MessageLoopProxy::current();
91 }
92
93 protected: 79 protected:
94 scoped_ptr<leveldb::DB> OpenLevelDB() { 80 scoped_ptr<leveldb::DB> OpenLevelDB() {
95 leveldb::DB* db = NULL; 81 leveldb::DB* db = NULL;
96 leveldb::Options options; 82 leveldb::Options options;
97 options.create_if_missing = true; 83 options.create_if_missing = true;
98 options.env = in_memory_env_.get(); 84 options.env = in_memory_env_.get();
99 leveldb::Status status = 85 leveldb::Status status =
100 leveldb::DB::Open(options, database_dir_.path().AsUTF8Unsafe(), &db); 86 leveldb::DB::Open(options, database_dir_.path().AsUTF8Unsafe(), &db);
101 EXPECT_TRUE(status.ok()); 87 EXPECT_TRUE(status.ok());
102 return make_scoped_ptr<leveldb::DB>(db); 88 return make_scoped_ptr<leveldb::DB>(db);
(...skipping 26 matching lines...) Expand all
129 batch.Put(kDatabaseVersionKey, 115 batch.Put(kDatabaseVersionKey,
130 base::Int64ToString(kCurrentDatabaseVersion)); 116 base::Int64ToString(kCurrentDatabaseVersion));
131 PutServiceMetadataToBatch(service_metadata, &batch); 117 PutServiceMetadataToBatch(service_metadata, &batch);
132 PutFileMetadataToBatch(sync_root_metadata, &batch); 118 PutFileMetadataToBatch(sync_root_metadata, &batch);
133 PutFileTrackerToBatch(sync_root_tracker, &batch); 119 PutFileTrackerToBatch(sync_root_tracker, &batch);
134 EXPECT_TRUE(db->Write(leveldb::WriteOptions(), &batch).ok()); 120 EXPECT_TRUE(db->Write(leveldb::WriteOptions(), &batch).ok());
135 } 121 }
136 122
137 void CreateMetadataDatabase(scoped_ptr<leveldb::DB> db) { 123 void CreateMetadataDatabase(scoped_ptr<leveldb::DB> db) {
138 ASSERT_TRUE(db); 124 ASSERT_TRUE(db);
139 ASSERT_FALSE(metadata_database_); 125 ASSERT_FALSE(context_->GetMetadataDatabase());
126 scoped_ptr<MetadataDatabase> metadata_db;
140 ASSERT_EQ(SYNC_STATUS_OK, 127 ASSERT_EQ(SYNC_STATUS_OK,
141 MetadataDatabase::CreateForTesting( 128 MetadataDatabase::CreateForTesting(
142 db.Pass(), &metadata_database_)); 129 db.Pass(), &metadata_db));
130 context_->SetMetadataDatabase(metadata_db.Pass());
143 } 131 }
144 132
145 SyncStatusCode RunRegisterAppTask(const std::string& app_id) { 133 SyncStatusCode RunRegisterAppTask(const std::string& app_id) {
146 RegisterAppTask task(this, app_id); 134 RegisterAppTask task(context_.get(), app_id);
147 SyncStatusCode status = SYNC_STATUS_UNKNOWN; 135 SyncStatusCode status = SYNC_STATUS_UNKNOWN;
148 task.RunSequential(CreateResultReceiver(&status)); 136 task.RunSequential(CreateResultReceiver(&status));
149 base::RunLoop().RunUntilIdle(); 137 base::RunLoop().RunUntilIdle();
150 return status; 138 return status;
151 } 139 }
152 140
153 void SetUpRegisteredAppRoot( 141 void SetUpRegisteredAppRoot(
154 const std::string& app_id, 142 const std::string& app_id,
155 leveldb::DB* db) { 143 leveldb::DB* db) {
156 FileDetails details; 144 FileDetails details;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 tracker.set_active(false); 185 tracker.set_active(false);
198 186
199 leveldb::WriteBatch batch; 187 leveldb::WriteBatch batch;
200 PutFileMetadataToBatch(metadata, &batch); 188 PutFileMetadataToBatch(metadata, &batch);
201 PutFileTrackerToBatch(tracker, &batch); 189 PutFileTrackerToBatch(tracker, &batch);
202 EXPECT_TRUE(db->Write(leveldb::WriteOptions(), &batch).ok()); 190 EXPECT_TRUE(db->Write(leveldb::WriteOptions(), &batch).ok());
203 } 191 }
204 192
205 size_t CountRegisteredAppRoot() { 193 size_t CountRegisteredAppRoot() {
206 std::vector<std::string> app_ids; 194 std::vector<std::string> app_ids;
207 metadata_database_->GetRegisteredAppIDs(&app_ids); 195 context_->GetMetadataDatabase()->GetRegisteredAppIDs(&app_ids);
208 return app_ids.size(); 196 return app_ids.size();
209 } 197 }
210 198
211 bool IsAppRegistered(const std::string& app_id) { 199 bool IsAppRegistered(const std::string& app_id) {
212 TrackerIDSet trackers; 200 TrackerIDSet trackers;
213 if (!metadata_database_->FindTrackersByParentAndTitle( 201 if (!context_->GetMetadataDatabase()->FindTrackersByParentAndTitle(
214 kSyncRootTrackerID, app_id, &trackers)) 202 kSyncRootTrackerID, app_id, &trackers))
215 return false; 203 return false;
216 return trackers.has_active(); 204 return trackers.has_active();
217 } 205 }
218 206
219 size_t CountRemoteFileInSyncRoot() { 207 size_t CountRemoteFileInSyncRoot() {
220 ScopedVector<google_apis::ResourceEntry> files; 208 ScopedVector<google_apis::ResourceEntry> files;
221 EXPECT_EQ(google_apis::HTTP_SUCCESS, 209 EXPECT_EQ(google_apis::HTTP_SUCCESS,
222 fake_drive_service_helper_->ListFilesInFolder( 210 fake_drive_service_helper_->ListFilesInFolder(
223 sync_root_folder_id_, &files)); 211 sync_root_folder_id_, &files));
224 return files.size(); 212 return files.size();
225 } 213 }
226 214
227 bool HasRemoteAppRoot(const std::string& app_id) { 215 bool HasRemoteAppRoot(const std::string& app_id) {
228 TrackerIDSet files; 216 TrackerIDSet files;
229 if (!metadata_database_->FindTrackersByParentAndTitle( 217 if (!context_->GetMetadataDatabase()->FindTrackersByParentAndTitle(
230 kSyncRootTrackerID, app_id, &files) || 218 kSyncRootTrackerID, app_id, &files) ||
231 !files.has_active()) 219 !files.has_active())
232 return false; 220 return false;
233 221
234 FileTracker app_root_tracker; 222 FileTracker app_root_tracker;
235 EXPECT_TRUE(metadata_database_->FindTrackerByTrackerID( 223 EXPECT_TRUE(context_->GetMetadataDatabase()->FindTrackerByTrackerID(
236 files.active_tracker(), &app_root_tracker)); 224 files.active_tracker(), &app_root_tracker));
237 std::string app_root_folder_id = app_root_tracker.file_id(); 225 std::string app_root_folder_id = app_root_tracker.file_id();
238 scoped_ptr<google_apis::ResourceEntry> entry; 226 scoped_ptr<google_apis::ResourceEntry> entry;
239 if (google_apis::HTTP_SUCCESS != 227 if (google_apis::HTTP_SUCCESS !=
240 fake_drive_service_helper_->GetResourceEntry( 228 fake_drive_service_helper_->GetResourceEntry(
241 app_root_folder_id, &entry)) 229 app_root_folder_id, &entry))
242 return false; 230 return false;
243 231
244 return !entry->deleted(); 232 return !entry->deleted();
245 } 233 }
246 234
247 private: 235 private:
248 std::string GenerateFileID() { 236 std::string GenerateFileID() {
249 return base::StringPrintf("file_id_%" PRId64, next_file_id_++); 237 return base::StringPrintf("file_id_%" PRId64, next_file_id_++);
250 } 238 }
251 239
252 scoped_ptr<leveldb::Env> in_memory_env_; 240 scoped_ptr<leveldb::Env> in_memory_env_;
253 241
254 std::string sync_root_folder_id_; 242 std::string sync_root_folder_id_;
255 243
256 int64 next_file_id_; 244 int64 next_file_id_;
257 int64 next_tracker_id_; 245 int64 next_tracker_id_;
258 246
259 content::TestBrowserThreadBundle browser_threads_; 247 content::TestBrowserThreadBundle browser_threads_;
260 base::ScopedTempDir database_dir_; 248 base::ScopedTempDir database_dir_;
261 249
262 scoped_ptr<drive::FakeDriveService> fake_drive_service_; 250 scoped_ptr<SyncEngineContext> context_;
263 scoped_ptr<drive::DriveUploader> drive_uploader_;
264 scoped_ptr<FakeDriveServiceHelper> fake_drive_service_helper_; 251 scoped_ptr<FakeDriveServiceHelper> fake_drive_service_helper_;
265 252
266 scoped_ptr<MetadataDatabase> metadata_database_;
267
268 DISALLOW_COPY_AND_ASSIGN(RegisterAppTaskTest); 253 DISALLOW_COPY_AND_ASSIGN(RegisterAppTaskTest);
269 }; 254 };
270 255
271 TEST_F(RegisterAppTaskTest, AlreadyRegistered) { 256 TEST_F(RegisterAppTaskTest, AlreadyRegistered) {
272 scoped_ptr<leveldb::DB> db(OpenLevelDB()); 257 scoped_ptr<leveldb::DB> db(OpenLevelDB());
273 ASSERT_TRUE(db); 258 ASSERT_TRUE(db);
274 SetUpInitialData(db.get()); 259 SetUpInitialData(db.get());
275 260
276 const std::string kAppID = "app_id"; 261 const std::string kAppID = "app_id";
277 SetUpRegisteredAppRoot(kAppID, db.get()); 262 SetUpRegisteredAppRoot(kAppID, db.get());
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 310
326 CreateMetadataDatabase(db.Pass()); 311 CreateMetadataDatabase(db.Pass());
327 RunRegisterAppTask(kAppID); 312 RunRegisterAppTask(kAppID);
328 313
329 EXPECT_EQ(1u, CountRegisteredAppRoot()); 314 EXPECT_EQ(1u, CountRegisteredAppRoot());
330 EXPECT_TRUE(IsAppRegistered(kAppID)); 315 EXPECT_TRUE(IsAppRegistered(kAppID));
331 } 316 }
332 317
333 } // namespace drive_backend 318 } // namespace drive_backend
334 } // namespace sync_file_system 319 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698