|
|
Created:
7 years ago by nhiroki Modified:
7 years ago CC:
chromium-reviews, kinuko+watch Base URL:
svn://svn.chromium.org/chrome/trunk/src Visibility:
Public. |
DescriptionSyncFS: Add ConflictResolverTest
BUG=240165
TEST=unit_tests --gtest_filter=ConflictResolverTest.*
NOTRY=true
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=238307
Patch Set 1 : #Patch Set 2 : #Patch Set 3 : rebase #
Messages
Total messages: 9 (0 generated)
PTAL, thanks!
lgtm
lgtm
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/nhiroki@chromium.org/98053002/100001
Failed to apply patch for chrome/browser/sync_file_system/drive_backend/conflict_resolver_unittest.cc: While running patch -p1 --forward --force --no-backup-if-mismatch; A chrome/browser/sync_file_system/drive_backend/conflict_resolver_unittest.cc Copied chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer_unittest.cc -> chrome/browser/sync_file_system/drive_backend/conflict_resolver_unittest.cc patching file chrome/browser/sync_file_system/drive_backend/conflict_resolver_unittest.cc Hunk #6 succeeded at 189 with fuzz 1 (offset 9 lines). Hunk #7 FAILED at 203. 1 out of 7 hunks FAILED -- saving rejects to file chrome/browser/sync_file_system/drive_backend/conflict_resolver_unittest.cc.rej Patch: NR chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer_unittest.cc->chrome/browser/sync_file_system/drive_backend/conflict_resolver_unittest.cc Index: chrome/browser/sync_file_system/drive_backend/conflict_resolver_unittest.cc diff --git a/chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer_unittest.cc b/chrome/browser/sync_file_system/drive_backend/conflict_resolver_unittest.cc similarity index 61% copy from chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer_unittest.cc copy to chrome/browser/sync_file_system/drive_backend/conflict_resolver_unittest.cc index b4278281c09375c1272e7d9f7252015daaa6c238..d398fa92df25de4c9df49dfdbf50abb2e0b9794e 100644 --- a/chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer_unittest.cc +++ b/chrome/browser/sync_file_system/drive_backend/conflict_resolver_unittest.cc @@ -2,12 +2,11 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.h" +#include "chrome/browser/sync_file_system/drive_backend/conflict_resolver.h" #include "base/bind.h" #include "base/callback.h" #include "base/files/scoped_temp_dir.h" -#include "base/logging.h" #include "base/run_loop.h" #include "chrome/browser/drive/drive_uploader.h" #include "chrome/browser/drive/fake_drive_service.h" @@ -16,6 +15,7 @@ #include "chrome/browser/sync_file_system/drive_backend/drive_backend_test_util.h" #include "chrome/browser/sync_file_system/drive_backend/list_changes_task.h" #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" +#include "chrome/browser/sync_file_system/drive_backend/remote_to_local_syncer.h" #include "chrome/browser/sync_file_system/drive_backend/sync_engine_context.h" #include "chrome/browser/sync_file_system/drive_backend/sync_engine_initializer.h" #include "chrome/browser/sync_file_system/drive_backend_v1/fake_drive_service_helper.h" @@ -29,22 +29,12 @@ namespace sync_file_system { namespace drive_backend { -namespace { - -fileapi::FileSystemURL URL(const GURL& origin, - const std::string& path) { - return CreateSyncableFileSystemURL( - origin, base::FilePath::FromUTF8Unsafe(path)); -} - -} // namespace - -class LocalToRemoteSyncerTest : public testing::Test, - public SyncEngineContext { +class ConflictResolverTest : public testing::Test, + public SyncEngineContext { public: - LocalToRemoteSyncerTest() + ConflictResolverTest() : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP) {} - virtual ~LocalToRemoteSyncerTest() {} + virtual ~ConflictResolverTest() {} virtual void SetUp() OVERRIDE { ASSERT_TRUE(database_dir_.CreateUniqueTempDir()); @@ -94,6 +84,14 @@ class LocalToRemoteSyncerTest : public testing::Test, EXPECT_EQ(SYNC_STATUS_OK, status); } + SyncStatusCode RunRemoteSyncer() { + SyncStatusCode status = SYNC_STATUS_UNKNOWN; + scoped_ptr<RemoteToLocalSyncer> syncer(new RemoteToLocalSyncer(this)); + syncer->Run(CreateResultReceiver(&status)); + base::RunLoop().RunUntilIdle(); + return status; + } + virtual drive::DriveServiceInterface* GetDriveService() OVERRIDE { return fake_drive_service_.get(); } @@ -142,17 +140,28 @@ class LocalToRemoteSyncerTest : public testing::Test, return file_id; } - SyncStatusCode RunSyncer(FileChange file_change, - const fileapi::FileSystemURL& url) { + SyncStatusCode RunSyncer() { SyncStatusCode status = SYNC_STATUS_UNKNOWN; - base::FilePath local_path = base::FilePath::FromUTF8Unsafe("dummy"); - scoped_ptr<LocalToRemoteSyncer> syncer(new LocalToRemoteSyncer( - this, file_change, local_path, url)); + scoped_ptr<RemoteToLocalSyncer> syncer(new RemoteToLocalSyncer(this)); syncer->Run(CreateResultReceiver(&status)); base::RunLoop().RunUntilIdle(); return status; } + void RunSyncerUntilIdle() { + SyncStatusCode status = SYNC_STATUS_UNKNOWN; + while (status != SYNC_STATUS_NO_CHANGE_TO_SYNC) + status = RunSyncer(); + } + + SyncStatusCode RunConflictResolver() { + SyncStatusCode status = SYNC_STATUS_UNKNOWN; + ConflictResolver resolver(this); + resolver.Run(CreateResultReceiver(&status)); + base::RunLoop().RunUntilIdle(); + return status; + } + SyncStatusCode ListChanges() { ListChangesTask list_changes(this); SyncStatusCode status = SYNC_STATUS_UNKNOWN; @@ -171,26 +180,19 @@ class LocalToRemoteSyncerTest : public testing::Test, return entries.Pass(); } - void VerifyTitleUniqueness(const std::string& parent_folder_id, - const std::string& title, - google_apis::DriveEntryKind kind) { + void VerifyConflictResolution(const std::string& parent_folder_id, + const std::string& title, + const std::string& primary_file_id, + google_apis::DriveEntryKind kind) { ScopedVector<google_apis::ResourceEntry> entries; EXPECT_EQ(google_apis::HTTP_SUCCESS, fake_drive_helper_->SearchByTitle( parent_folder_id, title, &entries)); ASSERT_EQ(1u, entries.size()); + EXPECT_EQ(primary_file_id, entries[0]->resource_id()); EXPECT_EQ(kind, entries[0]->kind()); } - void VerifyFileDeletion(const std::string& parent_folder_id, - const std::string& title) { - ScopedVector<google_apis::ResourceEntry> entries; - EXPECT_EQ(google_apis::HTTP_SUCCESS, - fake_drive_helper_->SearchByTitle( - parent_folder_id, title, &entries)); - EXPECT_TRUE(entries.empty()); - } - private: content::TestBrowserThreadBundle thread_bundle_; base::ScopedTempDir database_dir_; @@ -201,132 +203,99 @@ class LocalToRemoteSyncerTest : public testing::Test, scoped_ptr<MetadataDatabase> metadata_database_; scoped_ptr<FakeRemoteChangeProcessor> fake_remote_change_processor_; - DISALLOW_COPY_AND_ASSIGN(LocalToRemoteSyncerTest); + DISALLOW_COPY_AND_ASSIGN(ConflictResolverTest); }; -TEST_F(LocalToRemoteSyncerTest, CreateLocalFile) { +TEST_F(ConflictResolverTest, NoFileToBeResolved) { const GURL kOrigin("chrome-extension://example"); const std::string sync_root = CreateSyncRoot(); const std::string app_root = CreateRemoteFolder(sync_root, kOrigin.host()); InitializeMetadataDatabase(); RegisterApp(kOrigin.host(), app_root); + RunSyncerUntilIdle(); - EXPECT_EQ(SYNC_STATUS_OK, RunSyncer( - FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, - SYNC_FILE_TYPE_FILE), - URL(kOrigin, "file"))); - EXPECT_EQ(SYNC_STATUS_OK, RunSyncer( - FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, - SYNC_FILE_TYPE_DIRECTORY), - URL(kOrigin, "folder"))); - - VerifyTitleUniqueness(app_root, "file", google_apis::ENTRY_KIND_FILE); - VerifyTitleUniqueness(app_root, "folder", google_apis::ENTRY_KIND_FOLDER); - - // TODO(nhiroki): Test nested files case. + EXPECT_EQ(SYNC_STATUS_NO_CHANGE_TO_SYNC, RunConflictResolver()); } -TEST_F(LocalToRemoteSyncerTest, DeleteLocalFile) { +TEST_F(ConflictResolverTest, ResolveConflict_Files) { const GURL kOrigin("chrome-extension://example"); const std::string sync_root = CreateSyncRoot(); const std::string app_root = CreateRemoteFolder(sync_root, kOrigin.host()); InitializeMetadataDatabase(); RegisterApp(kOrigin.host(), app_root); + RunSyncerUntilIdle(); - EXPECT_EQ(SYNC_STATUS_OK, RunSyncer( - FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, - SYNC_FILE_TYPE_FILE), - URL(kOrigin, "file"))); - EXPECT_EQ(SYNC_STATUS_OK, RunSyncer( - FileChange(FileChange::FILE_CHANGE_ADD_OR_UPDATE, - SYNC_FILE_TYPE_DIRECTORY), - URL(kOrigin, "folder"))); - - VerifyTitleUniqueness(app_root, "file", google_apis::ENTRY_KIND_FILE); - VerifyTitleUniqueness(app_root, "folder", google_apis::ENTRY_KIND_FOLDER); - - EXPECT_EQ(SYNC_STATUS_OK, RunSyncer( - FileChange(FileChange::FILE_CHANGE_DELETE, - SYNC_FILE_TYPE_FILE), - URL(kOrigin, "file"))); - EXPECT_EQ(SYNC_STATUS_OK, RunSyncer( - FileChange(FileChange::FILE_CHANGE_DELETE, - SYNC_FILE_TYPE_DIRECTORY), - URL(kOrigin, "folder"))); - - VerifyFileDeletion(app_root, "file"); - VerifyFileDeletion(app_root, "folder"); -} - -TEST_F(LocalToRemoteSyncerTest, Conflict_CreateFileOnFolder) { - const GURL kOrigin("chrome-extension://example"); - const std::string sync_root = CreateSyncRoot(); - const std::string app_root = CreateRemoteFolder(sync_root, kOrigin.host()); - InitializeMetadataDatabase(); - RegisterApp(kOrigin.host(), app_root); - - CreateRemoteFolder(app_root, "foo"); + const std::string kTitle = "foo"; + const std::string primary = CreateRemoteFile(app_root, kTitle, "data1"); + CreateRemoteFile(app_root, kTitle, "data2"); + CreateRemoteFile(app_root, kTitle, "data3"); + CreateRemoteFile(app_root, kTitle, "data4"); EXPECT… (message too large)
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/nhiroki@chromium.org/98053002/120001
Retried try job too often on mac_rel for step(s) browser_tests http://build.chromium.org/p/tryserver.chromium/buildstatus?builder=mac_rel&nu...
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/nhiroki@chromium.org/98053002/120001
Message was sent while issue was closed.
Change committed as 238307 |