Commit ceb68e72 authored by peria@chromium.org's avatar peria@chromium.org

[SyncFS] Create SyncWorkerTest and add it in unit_tests.

Most tests look same between SyncEngineTest and SyncWorkerTest.
SyncEngineTest checks communications between SyncEngine and SyncWorker.
SyncWorkerTest checks behavior of each method.


BUG=378621
TEST=./unit_tests --gtest_filter="SyncEngineTest.*:SyncWorkerTest.*"

Review URL: https://codereview.chromium.org/314303003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@275776 0039d316-1c4b-4281-b951-d872f2087c98
parent 65b5119d
...@@ -124,8 +124,6 @@ class SyncEngine::WorkerObserver : public SyncWorker::Observer { ...@@ -124,8 +124,6 @@ class SyncEngine::WorkerObserver : public SyncWorker::Observer {
namespace { namespace {
void EmptyStatusCallback(SyncStatusCode status) {}
void DidRegisterOrigin(const base::TimeTicks& start_time, void DidRegisterOrigin(const base::TimeTicks& start_time,
const SyncStatusCallback& callback, const SyncStatusCallback& callback,
SyncStatusCode status) { SyncStatusCode status) {
...@@ -535,45 +533,6 @@ void SyncEngine::UpdateServiceState(RemoteServiceState state, ...@@ -535,45 +533,6 @@ void SyncEngine::UpdateServiceState(RemoteServiceState state,
OnRemoteServiceStateUpdated(state, description)); OnRemoteServiceStateUpdated(state, description));
} }
void SyncEngine::UpdateRegisteredAppsForTesting() {
if (!extension_service_)
return;
MetadataDatabase* metadata_db = sync_worker_->GetMetadataDatabase();
DCHECK(metadata_db);
std::vector<std::string> app_ids;
metadata_db->GetRegisteredAppIDs(&app_ids);
// Update the status of every origin using status from ExtensionService.
for (std::vector<std::string>::const_iterator itr = app_ids.begin();
itr != app_ids.end(); ++itr) {
const std::string& app_id = *itr;
GURL origin =
extensions::Extension::GetBaseURLFromExtensionId(app_id);
if (!extension_service_->GetInstalledExtension(app_id)) {
// Extension has been uninstalled.
// (At this stage we can't know if it was unpacked extension or not,
// so just purge the remote folder.)
UninstallOrigin(origin,
RemoteFileSyncService::UNINSTALL_AND_PURGE_REMOTE,
base::Bind(&EmptyStatusCallback));
continue;
}
FileTracker tracker;
if (!metadata_db->FindAppRootTracker(app_id, &tracker)) {
// App will register itself on first run.
continue;
}
bool is_app_enabled = extension_service_->IsExtensionEnabled(app_id);
bool is_app_root_tracker_enabled =
tracker.tracker_kind() == TRACKER_KIND_APP_ROOT;
if (is_app_enabled && !is_app_root_tracker_enabled)
EnableOrigin(origin, base::Bind(&EmptyStatusCallback));
else if (!is_app_enabled && is_app_root_tracker_enabled)
DisableOrigin(origin, base::Bind(&EmptyStatusCallback));
}
}
SyncStatusCallback SyncEngine::TrackCallback( SyncStatusCallback SyncEngine::TrackCallback(
const SyncStatusCallback& callback) { const SyncStatusCallback& callback) {
return callback_tracker_.Register( return callback_tracker_.Register(
......
...@@ -144,11 +144,6 @@ class SyncEngine : public RemoteFileSyncService, ...@@ -144,11 +144,6 @@ class SyncEngine : public RemoteFileSyncService,
ExtensionServiceInterface* extension_service, ExtensionServiceInterface* extension_service,
SigninManagerBase* signin_manager); SigninManagerBase* signin_manager);
// TODO(peria): Migrate this method into test code.
// This method is not thread safe, because it requires to access metadata
// database which may live in another thread.
void UpdateRegisteredAppsForTesting();
SyncStatusCallback TrackCallback(const SyncStatusCallback& callback); SyncStatusCallback TrackCallback(const SyncStatusCallback& callback);
scoped_ptr<drive::DriveServiceInterface> drive_service_; scoped_ptr<drive::DriveServiceInterface> drive_service_;
......
...@@ -136,11 +136,7 @@ class SyncEngineTest ...@@ -136,11 +136,7 @@ class SyncEngineTest
MockExtensionService* extension_service() { return extension_service_.get(); } MockExtensionService* extension_service() { return extension_service_.get(); }
SyncEngine* sync_engine() { return sync_engine_.get(); } SyncEngine* sync_engine() { return sync_engine_.get(); }
void UpdateRegisteredApps() { SyncTaskManager* GetSyncTaskManager() {
sync_engine_->UpdateRegisteredAppsForTesting();
}
SyncTaskManager* GetSyncEngineTaskManager() {
return sync_engine_->sync_worker_->GetSyncTaskManager(); return sync_engine_->sync_worker_->GetSyncTaskManager();
} }
...@@ -155,10 +151,6 @@ class SyncEngineTest ...@@ -155,10 +151,6 @@ class SyncEngineTest
return sync_engine_->sync_worker_->GetMetadataDatabase(); return sync_engine_->sync_worker_->GetMetadataDatabase();
} }
void SetHasRefreshToken(bool has_refresh_token) {
sync_engine_->sync_worker_->has_refresh_token_ = has_refresh_token;
}
private: private:
content::TestBrowserThreadBundle browser_threads_; content::TestBrowserThreadBundle browser_threads_;
base::ScopedTempDir profile_dir_; base::ScopedTempDir profile_dir_;
...@@ -202,52 +194,6 @@ TEST_F(SyncEngineTest, EnableOrigin) { ...@@ -202,52 +194,6 @@ TEST_F(SyncEngineTest, EnableOrigin) {
ASSERT_FALSE(metadata_database()->FindAppRootTracker(kAppID, &tracker)); ASSERT_FALSE(metadata_database()->FindAppRootTracker(kAppID, &tracker));
} }
TEST_F(SyncEngineTest, UpdateRegisteredApps) {
SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN;
for (int i = 0; i < 3; i++) {
scoped_refptr<const extensions::Extension> extension =
extensions::ExtensionBuilder()
.SetManifest(extensions::DictionaryBuilder()
.Set("name", "foo")
.Set("version", "1.0")
.Set("manifest_version", 2))
.SetID(base::StringPrintf("app_%d", i))
.Build();
extension_service()->AddExtension(extension.get());
GURL origin = extensions::Extension::GetBaseURLFromExtensionId(
extension->id());
sync_status = SYNC_STATUS_UNKNOWN;
sync_engine()->RegisterOrigin(origin, CreateResultReceiver(&sync_status));
base::RunLoop().RunUntilIdle();
EXPECT_EQ(SYNC_STATUS_OK, sync_status);
}
FileTracker tracker;
ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_0", &tracker));
EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind());
ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_1", &tracker));
EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind());
ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_2", &tracker));
EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind());
extension_service()->DisableExtension("app_1");
extension_service()->UninstallExtension("app_2");
ASSERT_FALSE(extension_service()->GetInstalledExtension("app_2"));
UpdateRegisteredApps();
base::RunLoop().RunUntilIdle();
ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_0", &tracker));
EXPECT_EQ(TRACKER_KIND_APP_ROOT, tracker.tracker_kind());
ASSERT_TRUE(metadata_database()->FindAppRootTracker("app_1", &tracker));
EXPECT_EQ(TRACKER_KIND_DISABLED_APP_ROOT, tracker.tracker_kind());
ASSERT_FALSE(metadata_database()->FindAppRootTracker("app_2", &tracker));
}
TEST_F(SyncEngineTest, GetOriginStatusMap) { TEST_F(SyncEngineTest, GetOriginStatusMap) {
FileTracker tracker; FileTracker tracker;
SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN; SyncStatusCode sync_status = SYNC_STATUS_UNKNOWN;
...@@ -285,9 +231,10 @@ TEST_F(SyncEngineTest, GetOriginStatusMap) { ...@@ -285,9 +231,10 @@ TEST_F(SyncEngineTest, GetOriginStatusMap) {
TEST_F(SyncEngineTest, UpdateServiceState) { TEST_F(SyncEngineTest, UpdateServiceState) {
EXPECT_EQ(REMOTE_SERVICE_OK, sync_engine()->GetCurrentState()); EXPECT_EQ(REMOTE_SERVICE_OK, sync_engine()->GetCurrentState());
SetHasRefreshToken(true); // Assume an user is in login state.
sync_engine()->OnReadyToSendRequests();
GetSyncEngineTaskManager()->ScheduleTask( GetSyncTaskManager()->ScheduleTask(
FROM_HERE, FROM_HERE,
base::Bind(&EmptyTask, SYNC_STATUS_AUTHENTICATION_FAILED), base::Bind(&EmptyTask, SYNC_STATUS_AUTHENTICATION_FAILED),
SyncTaskManager::PRIORITY_MED, SyncTaskManager::PRIORITY_MED,
...@@ -296,7 +243,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) { ...@@ -296,7 +243,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) {
SYNC_STATUS_AUTHENTICATION_FAILED, SYNC_STATUS_AUTHENTICATION_FAILED,
REMOTE_SERVICE_AUTHENTICATION_REQUIRED)); REMOTE_SERVICE_AUTHENTICATION_REQUIRED));
GetSyncEngineTaskManager()->ScheduleTask( GetSyncTaskManager()->ScheduleTask(
FROM_HERE, FROM_HERE,
base::Bind(&EmptyTask, SYNC_STATUS_ACCESS_FORBIDDEN), base::Bind(&EmptyTask, SYNC_STATUS_ACCESS_FORBIDDEN),
SyncTaskManager::PRIORITY_MED, SyncTaskManager::PRIORITY_MED,
...@@ -305,7 +252,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) { ...@@ -305,7 +252,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) {
SYNC_STATUS_ACCESS_FORBIDDEN, SYNC_STATUS_ACCESS_FORBIDDEN,
REMOTE_SERVICE_AUTHENTICATION_REQUIRED)); REMOTE_SERVICE_AUTHENTICATION_REQUIRED));
GetSyncEngineTaskManager()->ScheduleTask( GetSyncTaskManager()->ScheduleTask(
FROM_HERE, FROM_HERE,
base::Bind(&EmptyTask, SYNC_STATUS_SERVICE_TEMPORARILY_UNAVAILABLE), base::Bind(&EmptyTask, SYNC_STATUS_SERVICE_TEMPORARILY_UNAVAILABLE),
SyncTaskManager::PRIORITY_MED, SyncTaskManager::PRIORITY_MED,
...@@ -314,7 +261,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) { ...@@ -314,7 +261,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) {
SYNC_STATUS_SERVICE_TEMPORARILY_UNAVAILABLE, SYNC_STATUS_SERVICE_TEMPORARILY_UNAVAILABLE,
REMOTE_SERVICE_TEMPORARY_UNAVAILABLE)); REMOTE_SERVICE_TEMPORARY_UNAVAILABLE));
GetSyncEngineTaskManager()->ScheduleTask( GetSyncTaskManager()->ScheduleTask(
FROM_HERE, FROM_HERE,
base::Bind(&EmptyTask, SYNC_STATUS_NETWORK_ERROR), base::Bind(&EmptyTask, SYNC_STATUS_NETWORK_ERROR),
SyncTaskManager::PRIORITY_MED, SyncTaskManager::PRIORITY_MED,
...@@ -323,7 +270,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) { ...@@ -323,7 +270,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) {
SYNC_STATUS_NETWORK_ERROR, SYNC_STATUS_NETWORK_ERROR,
REMOTE_SERVICE_TEMPORARY_UNAVAILABLE)); REMOTE_SERVICE_TEMPORARY_UNAVAILABLE));
GetSyncEngineTaskManager()->ScheduleTask( GetSyncTaskManager()->ScheduleTask(
FROM_HERE, FROM_HERE,
base::Bind(&EmptyTask, SYNC_STATUS_ABORT), base::Bind(&EmptyTask, SYNC_STATUS_ABORT),
SyncTaskManager::PRIORITY_MED, SyncTaskManager::PRIORITY_MED,
...@@ -332,7 +279,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) { ...@@ -332,7 +279,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) {
SYNC_STATUS_ABORT, SYNC_STATUS_ABORT,
REMOTE_SERVICE_TEMPORARY_UNAVAILABLE)); REMOTE_SERVICE_TEMPORARY_UNAVAILABLE));
GetSyncEngineTaskManager()->ScheduleTask( GetSyncTaskManager()->ScheduleTask(
FROM_HERE, FROM_HERE,
base::Bind(&EmptyTask, SYNC_STATUS_FAILED), base::Bind(&EmptyTask, SYNC_STATUS_FAILED),
SyncTaskManager::PRIORITY_MED, SyncTaskManager::PRIORITY_MED,
...@@ -341,7 +288,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) { ...@@ -341,7 +288,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) {
SYNC_STATUS_FAILED, SYNC_STATUS_FAILED,
REMOTE_SERVICE_TEMPORARY_UNAVAILABLE)); REMOTE_SERVICE_TEMPORARY_UNAVAILABLE));
GetSyncEngineTaskManager()->ScheduleTask( GetSyncTaskManager()->ScheduleTask(
FROM_HERE, FROM_HERE,
base::Bind(&EmptyTask, SYNC_DATABASE_ERROR_CORRUPTION), base::Bind(&EmptyTask, SYNC_DATABASE_ERROR_CORRUPTION),
SyncTaskManager::PRIORITY_MED, SyncTaskManager::PRIORITY_MED,
...@@ -350,7 +297,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) { ...@@ -350,7 +297,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) {
SYNC_DATABASE_ERROR_CORRUPTION, SYNC_DATABASE_ERROR_CORRUPTION,
REMOTE_SERVICE_DISABLED)); REMOTE_SERVICE_DISABLED));
GetSyncEngineTaskManager()->ScheduleTask( GetSyncTaskManager()->ScheduleTask(
FROM_HERE, FROM_HERE,
base::Bind(&EmptyTask, SYNC_DATABASE_ERROR_IO_ERROR), base::Bind(&EmptyTask, SYNC_DATABASE_ERROR_IO_ERROR),
SyncTaskManager::PRIORITY_MED, SyncTaskManager::PRIORITY_MED,
...@@ -359,7 +306,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) { ...@@ -359,7 +306,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) {
SYNC_DATABASE_ERROR_IO_ERROR, SYNC_DATABASE_ERROR_IO_ERROR,
REMOTE_SERVICE_DISABLED)); REMOTE_SERVICE_DISABLED));
GetSyncEngineTaskManager()->ScheduleTask( GetSyncTaskManager()->ScheduleTask(
FROM_HERE, FROM_HERE,
base::Bind(&EmptyTask, SYNC_DATABASE_ERROR_FAILED), base::Bind(&EmptyTask, SYNC_DATABASE_ERROR_FAILED),
SyncTaskManager::PRIORITY_MED, SyncTaskManager::PRIORITY_MED,
...@@ -368,7 +315,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) { ...@@ -368,7 +315,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) {
SYNC_DATABASE_ERROR_FAILED, SYNC_DATABASE_ERROR_FAILED,
REMOTE_SERVICE_DISABLED)); REMOTE_SERVICE_DISABLED));
GetSyncEngineTaskManager()->ScheduleSyncTask( GetSyncTaskManager()->ScheduleSyncTask(
FROM_HERE, FROM_HERE,
scoped_ptr<SyncTask>(new MockSyncTask(false)), scoped_ptr<SyncTask>(new MockSyncTask(false)),
SyncTaskManager::PRIORITY_MED, SyncTaskManager::PRIORITY_MED,
...@@ -377,7 +324,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) { ...@@ -377,7 +324,7 @@ TEST_F(SyncEngineTest, UpdateServiceState) {
SYNC_STATUS_OK, SYNC_STATUS_OK,
REMOTE_SERVICE_DISABLED)); REMOTE_SERVICE_DISABLED));
GetSyncEngineTaskManager()->ScheduleSyncTask( GetSyncTaskManager()->ScheduleSyncTask(
FROM_HERE, FROM_HERE,
scoped_ptr<SyncTask>(new MockSyncTask(true)), scoped_ptr<SyncTask>(new MockSyncTask(true)),
SyncTaskManager::PRIORITY_MED, SyncTaskManager::PRIORITY_MED,
......
...@@ -521,10 +521,10 @@ void SyncWorker::DidInitialize(SyncEngineInitializer* initializer, ...@@ -521,10 +521,10 @@ void SyncWorker::DidInitialize(SyncEngineInitializer* initializer,
if (metadata_database) if (metadata_database)
context_->SetMetadataDatabase(metadata_database.Pass()); context_->SetMetadataDatabase(metadata_database.Pass());
UpdateRegisteredApp(); UpdateRegisteredApps();
} }
void SyncWorker::UpdateRegisteredApp() { void SyncWorker::UpdateRegisteredApps() {
MetadataDatabase* metadata_db = GetMetadataDatabase(); MetadataDatabase* metadata_db = GetMetadataDatabase();
DCHECK(sequence_checker_.CalledOnValidSequencedThread()); DCHECK(sequence_checker_.CalledOnValidSequencedThread());
DCHECK(metadata_db); DCHECK(metadata_db);
......
...@@ -140,7 +140,7 @@ class SyncWorker : public SyncTaskManager::Client { ...@@ -140,7 +140,7 @@ class SyncWorker : public SyncTaskManager::Client {
void DetachFromSequence(); void DetachFromSequence();
private: private:
friend class SyncEngineTest; friend class SyncWorkerTest;
void DoDisableApp(const std::string& app_id, void DoDisableApp(const std::string& app_id,
const SyncStatusCallback& callback); const SyncStatusCallback& callback);
...@@ -150,7 +150,7 @@ class SyncWorker : public SyncTaskManager::Client { ...@@ -150,7 +150,7 @@ class SyncWorker : public SyncTaskManager::Client {
void PostInitializeTask(); void PostInitializeTask();
void DidInitialize(SyncEngineInitializer* initializer, void DidInitialize(SyncEngineInitializer* initializer,
SyncStatusCode status); SyncStatusCode status);
void UpdateRegisteredApp(); void UpdateRegisteredApps();
void DidQueryAppStatus(const AppStatusMap* app_status); void DidQueryAppStatus(const AppStatusMap* app_status);
void DidProcessRemoteChange(RemoteToLocalSyncer* syncer, void DidProcessRemoteChange(RemoteToLocalSyncer* syncer,
const SyncFileCallback& callback, const SyncFileCallback& callback,
...@@ -167,7 +167,6 @@ class SyncWorker : public SyncTaskManager::Client { ...@@ -167,7 +167,6 @@ class SyncWorker : public SyncTaskManager::Client {
bool used_network); bool used_network);
void UpdateServiceState(RemoteServiceState state, void UpdateServiceState(RemoteServiceState state,
const std::string& description); const std::string& description);
void UpdateRegisteredApps();
base::FilePath base_dir_; base::FilePath base_dir_;
......
...@@ -1403,6 +1403,7 @@ ...@@ -1403,6 +1403,7 @@
'browser/sync_file_system/drive_backend/sync_engine_initializer_unittest.cc', 'browser/sync_file_system/drive_backend/sync_engine_initializer_unittest.cc',
'browser/sync_file_system/drive_backend/sync_engine_unittest.cc', 'browser/sync_file_system/drive_backend/sync_engine_unittest.cc',
'browser/sync_file_system/drive_backend/sync_task_manager_unittest.cc', 'browser/sync_file_system/drive_backend/sync_task_manager_unittest.cc',
'browser/sync_file_system/drive_backend/sync_worker_unittest.cc',
'browser/sync_file_system/drive_backend/task_dependency_manager_unittest.cc', 'browser/sync_file_system/drive_backend/task_dependency_manager_unittest.cc',
'browser/sync_file_system/drive_backend_v1/api_util_unittest.cc', 'browser/sync_file_system/drive_backend_v1/api_util_unittest.cc',
'browser/sync_file_system/drive_backend_v1/drive_file_sync_service_fake_unittest.cc', 'browser/sync_file_system/drive_backend_v1/drive_file_sync_service_fake_unittest.cc',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment