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

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

Issue 306813002: [SyncFS] Make routines using metadata database async (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 years, 6 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 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/sync_engine.h" 5 #include "chrome/browser/sync_file_system/drive_backend/sync_engine.h"
6 6
7 #include "base/files/scoped_temp_dir.h" 7 #include "base/files/scoped_temp_dir.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/strings/stringprintf.h" 9 #include "base/strings/stringprintf.h"
10 #include "chrome/browser/drive/drive_uploader.h" 10 #include "chrome/browser/drive/drive_uploader.h"
11 #include "chrome/browser/drive/fake_drive_service.h" 11 #include "chrome/browser/drive/fake_drive_service.h"
12 #include "chrome/browser/extensions/test_extension_service.h" 12 #include "chrome/browser/extensions/test_extension_service.h"
13 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" 13 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
14 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" 14 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h"
15 #include "chrome/browser/sync_file_system/drive_backend/sync_task.h" 15 #include "chrome/browser/sync_file_system/drive_backend/sync_task.h"
16 #include "chrome/browser/sync_file_system/drive_backend/sync_task_manager.h" 16 #include "chrome/browser/sync_file_system/drive_backend/sync_task_manager.h"
17 #include "chrome/browser/sync_file_system/drive_backend/sync_worker.h"
17 #include "chrome/browser/sync_file_system/sync_file_system_test_util.h" 18 #include "chrome/browser/sync_file_system/sync_file_system_test_util.h"
18 #include "content/public/test/test_browser_thread_bundle.h" 19 #include "content/public/test/test_browser_thread_bundle.h"
19 #include "extensions/common/extension.h" 20 #include "extensions/common/extension.h"
20 #include "extensions/common/extension_builder.h" 21 #include "extensions/common/extension_builder.h"
21 #include "extensions/common/extension_set.h" 22 #include "extensions/common/extension_set.h"
22 #include "extensions/common/value_builder.h" 23 #include "extensions/common/value_builder.h"
23 #include "testing/gtest/include/gtest/gtest.h" 24 #include "testing/gtest/include/gtest/gtest.h"
24 #include "third_party/leveldatabase/src/helpers/memenv/memenv.h" 25 #include "third_party/leveldatabase/src/helpers/memenv/memenv.h"
25 #include "third_party/leveldatabase/src/include/leveldb/env.h" 26 #include "third_party/leveldatabase/src/include/leveldb/env.h"
26 27
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 virtual void TearDown() OVERRIDE { 130 virtual void TearDown() OVERRIDE {
130 sync_engine_.reset(); 131 sync_engine_.reset();
131 extension_service_.reset(); 132 extension_service_.reset();
132 base::RunLoop().RunUntilIdle(); 133 base::RunLoop().RunUntilIdle();
133 } 134 }
134 135
135 MockExtensionService* extension_service() { return extension_service_.get(); } 136 MockExtensionService* extension_service() { return extension_service_.get(); }
136 SyncEngine* sync_engine() { return sync_engine_.get(); } 137 SyncEngine* sync_engine() { return sync_engine_.get(); }
137 138
138 void UpdateRegisteredApps() { 139 void UpdateRegisteredApps() {
139 sync_engine_->UpdateRegisteredApps(); 140 sync_engine_->UpdateRegisteredAppsForTesting();
140 } 141 }
141 142
142 SyncTaskManager* GetSyncEngineTaskManager() { 143 SyncTaskManager* GetSyncEngineTaskManager() {
143 return sync_engine_->GetSyncTaskManagerForTesting(); 144 return sync_engine_->sync_worker_->GetSyncTaskManager();
144 } 145 }
145 146
146 void CheckServiceState(SyncStatusCode expected_sync_status, 147 void CheckServiceState(SyncStatusCode expected_sync_status,
147 RemoteServiceState expected_service_status, 148 RemoteServiceState expected_service_status,
148 SyncStatusCode sync_status) { 149 SyncStatusCode sync_status) {
149 EXPECT_EQ(expected_sync_status, sync_status); 150 EXPECT_EQ(expected_sync_status, sync_status);
150 EXPECT_EQ(expected_service_status, sync_engine_->GetCurrentState()); 151 EXPECT_EQ(expected_service_status, sync_engine_->GetCurrentState());
151 } 152 }
152 153
154 MetadataDatabase* metadata_database() {
155 return sync_engine()->sync_worker_->GetMetadataDatabase();
156 }
157
153 private: 158 private:
154 content::TestBrowserThreadBundle browser_threads_; 159 content::TestBrowserThreadBundle browser_threads_;
155 base::ScopedTempDir profile_dir_; 160 base::ScopedTempDir profile_dir_;
156 scoped_ptr<leveldb::Env> in_memory_env_; 161 scoped_ptr<leveldb::Env> in_memory_env_;
157 162
158 scoped_ptr<MockExtensionService> extension_service_; 163 scoped_ptr<MockExtensionService> extension_service_;
159 scoped_ptr<drive_backend::SyncEngine> sync_engine_; 164 scoped_ptr<drive_backend::SyncEngine> sync_engine_;
160 165
161 DISALLOW_COPY_AND_ASSIGN(SyncEngineTest); 166 DISALLOW_COPY_AND_ASSIGN(SyncEngineTest);
162 }; 167 };
163 168
164 TEST_F(SyncEngineTest, EnableOrigin) { 169 TEST_F(SyncEngineTest, EnableOrigin) {
165 FileTracker tracker; 170 FileTracker tracker;
166 SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN; 171 SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN;
167 MetadataDatabase* metadata_database = sync_engine()->GetMetadataDatabase();
168 GURL origin = extensions::Extension::GetBaseURLFromExtensionId(kAppID); 172 GURL origin = extensions::Extension::GetBaseURLFromExtensionId(kAppID);
169 173
170 sync_engine()->RegisterOrigin(origin, CreateResultReceiver(&sync_status)); 174 sync_engine()->RegisterOrigin(origin, CreateResultReceiver(&sync_status));
171 base::RunLoop().RunUntilIdle(); 175 base::RunLoop().RunUntilIdle();
172 EXPECT_EQ(SYNC_STATUS_OK, sync_status); 176 EXPECT_EQ(SYNC_STATUS_OK, sync_status);
173 ASSERT_TRUE(metadata_database->FindAppRootTracker(kAppID, &tracker)); 177 ASSERT_TRUE(metadata_database()->FindAppRootTracker(kAppID, &tracker));
174 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); 178 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind());
175 179
176 sync_engine()->DisableOrigin(origin, CreateResultReceiver(&sync_status)); 180 sync_engine()->DisableOrigin(origin, CreateResultReceiver(&sync_status));
177 base::RunLoop().RunUntilIdle(); 181 base::RunLoop().RunUntilIdle();
178 EXPECT_EQ(SYNC_STATUS_OK, sync_status); 182 EXPECT_EQ(SYNC_STATUS_OK, sync_status);
179 ASSERT_TRUE(metadata_database->FindAppRootTracker(kAppID, &tracker)); 183 ASSERT_TRUE(metadata_database()->FindAppRootTracker(kAppID, &tracker));
180 EXPECT_EQ(TRACKER_KIND_DISABLED_APP_ROOT, tracker.tracker_kind()); 184 EXPECT_EQ(TRACKER_KIND_DISABLED_APP_ROOT, tracker.tracker_kind());
181 185
182 sync_engine()->EnableOrigin(origin, CreateResultReceiver(&sync_status)); 186 sync_engine()->EnableOrigin(origin, CreateResultReceiver(&sync_status));
183 base::RunLoop().RunUntilIdle(); 187 base::RunLoop().RunUntilIdle();
184 EXPECT_EQ(SYNC_STATUS_OK, sync_status); 188 EXPECT_EQ(SYNC_STATUS_OK, sync_status);
185 ASSERT_TRUE(metadata_database->FindAppRootTracker(kAppID, &tracker)); 189 ASSERT_TRUE(metadata_database()->FindAppRootTracker(kAppID, &tracker));
186 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); 190 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind());
187 191
188 sync_engine()->UninstallOrigin( 192 sync_engine()->UninstallOrigin(
189 origin, 193 origin,
190 RemoteFileSyncService::UNINSTALL_AND_KEEP_REMOTE, 194 RemoteFileSyncService::UNINSTALL_AND_KEEP_REMOTE,
191 CreateResultReceiver(&sync_status)); 195 CreateResultReceiver(&sync_status));
192 base::RunLoop().RunUntilIdle(); 196 base::RunLoop().RunUntilIdle();
193 EXPECT_EQ(SYNC_STATUS_OK, sync_status); 197 EXPECT_EQ(SYNC_STATUS_OK, sync_status);
194 ASSERT_FALSE(metadata_database->FindAppRootTracker(kAppID, &tracker)); 198 ASSERT_FALSE(metadata_database()->FindAppRootTracker(kAppID, &tracker));
195 } 199 }
196 200
197 TEST_F(SyncEngineTest, UpdateRegisteredApps) { 201 TEST_F(SyncEngineTest, UpdateRegisteredApps) {
198 SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN; 202 SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN;
199 for (int i = 0; i < 3; i++) { 203 for (int i = 0; i < 3; i++) {
200 scoped_refptr<const extensions::Extension> extension = 204 scoped_refptr<const extensions::Extension> extension =
201 extensions::ExtensionBuilder() 205 extensions::ExtensionBuilder()
202 .SetManifest(extensions::DictionaryBuilder() 206 .SetManifest(extensions::DictionaryBuilder()
203 .Set("name", "foo") 207 .Set("name", "foo")
204 .Set("version", "1.0") 208 .Set("version", "1.0")
205 .Set("manifest_version", 2)) 209 .Set("manifest_version", 2))
206 .SetID(base::StringPrintf("app_%d", i)) 210 .SetID(base::StringPrintf("app_%d", i))
207 .Build(); 211 .Build();
208 extension_service()->AddExtension(extension.get()); 212 extension_service()->AddExtension(extension.get());
209 GURL origin = extensions::Extension::GetBaseURLFromExtensionId( 213 GURL origin = extensions::Extension::GetBaseURLFromExtensionId(
210 extension->id()); 214 extension->id());
211 sync_status = SYNC_STATUS_UNKNOWN; 215 sync_status = SYNC_STATUS_UNKNOWN;
212 sync_engine()->RegisterOrigin(origin, CreateResultReceiver(&sync_status)); 216 sync_engine()->RegisterOrigin(origin, CreateResultReceiver(&sync_status));
213 base::RunLoop().RunUntilIdle(); 217 base::RunLoop().RunUntilIdle();
214 EXPECT_EQ(SYNC_STATUS_OK, sync_status); 218 EXPECT_EQ(SYNC_STATUS_OK, sync_status);
215 } 219 }
216 220
217 MetadataDatabase* metadata_database = sync_engine()->GetMetadataDatabase();
218 FileTracker tracker; 221 FileTracker tracker;
219 222
220 ASSERT_TRUE(metadata_database->FindAppRootTracker("app_0", &tracker)); 223 ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_0", &tracker));
221 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); 224 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind());
222 225
223 ASSERT_TRUE(metadata_database->FindAppRootTracker("app_1", &tracker)); 226 ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_1", &tracker));
224 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); 227 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind());
225 228
226 ASSERT_TRUE(metadata_database->FindAppRootTracker("app_2", &tracker)); 229 ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_2", &tracker));
227 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); 230 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind());
228 231
229 extension_service()->DisableExtension("app_1"); 232 extension_service()->DisableExtension("app_1");
230 extension_service()->UninstallExtension("app_2"); 233 extension_service()->UninstallExtension("app_2");
231 ASSERT_FALSE(extension_service()->GetInstalledExtension("app_2")); 234 ASSERT_FALSE(extension_service()->GetInstalledExtension("app_2"));
232 UpdateRegisteredApps(); 235 UpdateRegisteredApps();
233 base::RunLoop().RunUntilIdle(); 236 base::RunLoop().RunUntilIdle();
234 237
235 ASSERT_TRUE(metadata_database->FindAppRootTracker("app_0", &tracker)); 238 ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_0", &tracker));
236 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind()); 239 EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind());
237 240
238 ASSERT_TRUE(metadata_database->FindAppRootTracker("app_1", &tracker)); 241 ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_1", &tracker));
239 EXPECT_EQ(TRACKER_KIND_DISABLED_APP_ROOT, tracker.tracker_kind()); 242 EXPECT_EQ(TRACKER_KIND_DISABLED_APP_ROOT, tracker.tracker_kind());
240 243
241 ASSERT_FALSE(metadata_database->FindAppRootTracker("app_2", &tracker)); 244 ASSERT_FALSE(metadata_database()->FindAppRootTracker("app_2", &tracker));
242 } 245 }
243 246
244 TEST_F(SyncEngineTest, GetOriginStatusMap) { 247 TEST_F(SyncEngineTest, GetOriginStatusMap) {
245 FileTracker tracker; 248 FileTracker tracker;
246 SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN; 249 SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN;
247 GURL origin = extensions::Extension::GetBaseURLFromExtensionId(kAppID); 250 GURL origin = extensions::Extension::GetBaseURLFromExtensionId(kAppID);
248 251
249 sync_engine()->RegisterOrigin(GURL("chrome-extension://app_0"), 252 sync_engine()->RegisterOrigin(GURL("chrome-extension://app_0"),
250 CreateResultReceiver(&sync_status)); 253 CreateResultReceiver(&sync_status));
251 base::RunLoop().RunUntilIdle(); 254 base::RunLoop().RunUntilIdle();
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 base::Bind(&SyncEngineTest::CheckServiceState, 378 base::Bind(&SyncEngineTest::CheckServiceState,
376 AsWeakPtr(), 379 AsWeakPtr(),
377 SYNC_STATUS_OK, 380 SYNC_STATUS_OK,
378 REMOTE_SERVICE_OK)); 381 REMOTE_SERVICE_OK));
379 382
380 base::RunLoop().RunUntilIdle(); 383 base::RunLoop().RunUntilIdle();
381 } 384 }
382 385
383 } // namespace drive_backend 386 } // namespace drive_backend
384 } // namespace sync_file_system 387 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698