|
|
Chromium Code Reviews|
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 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
