| Index: chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk_unittest.cc
|
| diff --git a/chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk_unittest.cc b/chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk_unittest.cc
|
| index 36eeb6675d2420e508e8a383ea9c4f11e46c54a7..fb6a38313f666752053844d2a81c983013f2fff4 100644
|
| --- a/chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk_unittest.cc
|
| +++ b/chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk_unittest.cc
|
| @@ -8,13 +8,13 @@
|
| #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants.h"
|
| #include "chrome/browser/sync_file_system/drive_backend/drive_backend_test_util.h"
|
| #include "chrome/browser/sync_file_system/drive_backend/drive_backend_util.h"
|
| +#include "chrome/browser/sync_file_system/drive_backend/leveldb_wrapper.h"
|
| #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
| #include "third_party/leveldatabase/src/helpers/memenv/memenv.h"
|
| #include "third_party/leveldatabase/src/include/leveldb/db.h"
|
| #include "third_party/leveldatabase/src/include/leveldb/env.h"
|
| #include "third_party/leveldatabase/src/include/leveldb/status.h"
|
| -#include "third_party/leveldatabase/src/include/leveldb/write_batch.h"
|
|
|
| namespace sync_file_system {
|
| namespace drive_backend {
|
| @@ -36,7 +36,7 @@ class MetadataDatabaseIndexOnDiskTest : public testing::Test {
|
| ASSERT_TRUE(database_dir_.CreateUniqueTempDir());
|
| in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default()));
|
| InitializeLevelDB();
|
| - index_ = MetadataDatabaseIndexOnDisk::Create(db_.get(), NULL);
|
| + index_ = MetadataDatabaseIndexOnDisk::Create(db_.get());
|
| }
|
|
|
| virtual void TearDown() OVERRIDE {
|
| @@ -45,11 +45,6 @@ class MetadataDatabaseIndexOnDiskTest : public testing::Test {
|
| in_memory_env_.reset();
|
| }
|
|
|
| - bool WriteToDB(scoped_ptr<leveldb::WriteBatch> batch) {
|
| - leveldb::Status status = db_->Write(leveldb::WriteOptions(), batch.get());
|
| - return status.ok();
|
| - }
|
| -
|
| void CreateTestDatabase(bool build_index) {
|
| scoped_ptr<FileMetadata> sync_root_metadata =
|
| test_util::CreateFolderMetadata("sync_root_folder_id",
|
| @@ -77,31 +72,32 @@ class MetadataDatabaseIndexOnDiskTest : public testing::Test {
|
| kPlaceholderTrackerID,
|
| app_root_tracker.get());
|
|
|
| - leveldb::WriteBatch batch;
|
| if (build_index) {
|
| DCHECK(index());
|
| - index()->StoreFileMetadata(sync_root_metadata.Pass(), &batch);
|
| - index()->StoreFileTracker(sync_root_tracker.Pass(), &batch);
|
| - index()->StoreFileMetadata(app_root_metadata.Pass(), &batch);
|
| - index()->StoreFileTracker(app_root_tracker.Pass(), &batch);
|
| - index()->StoreFileMetadata(file_metadata.Pass(), &batch);
|
| - index()->StoreFileTracker(file_tracker.Pass(), &batch);
|
| - index()->StoreFileTracker(placeholder_tracker.Pass(), &batch);
|
| + index()->StoreFileMetadata(sync_root_metadata.Pass());
|
| + index()->StoreFileTracker(sync_root_tracker.Pass());
|
| + index()->StoreFileMetadata(app_root_metadata.Pass());
|
| + index()->StoreFileTracker(app_root_tracker.Pass());
|
| + index()->StoreFileMetadata(file_metadata.Pass());
|
| + index()->StoreFileTracker(file_tracker.Pass());
|
| + index()->StoreFileTracker(placeholder_tracker.Pass());
|
| } else {
|
| - PutFileMetadataToBatch(*sync_root_metadata, &batch);
|
| - PutFileTrackerToBatch(*sync_root_tracker, &batch);
|
| - PutFileMetadataToBatch(*app_root_metadata, &batch);
|
| - PutFileTrackerToBatch(*app_root_tracker, &batch);
|
| - PutFileMetadataToBatch(*file_metadata, &batch);
|
| - PutFileTrackerToBatch(*file_tracker, &batch);
|
| - PutFileTrackerToBatch(*placeholder_tracker, &batch);
|
| + PutFileMetadataToDB(*sync_root_metadata, db_.get());
|
| + PutFileTrackerToDB(*sync_root_tracker, db_.get());
|
| + PutFileMetadataToDB(*app_root_metadata, db_.get());
|
| + PutFileTrackerToDB(*app_root_tracker, db_.get());
|
| + PutFileMetadataToDB(*file_metadata, db_.get());
|
| + PutFileTrackerToDB(*file_tracker, db_.get());
|
| + PutFileTrackerToDB(*placeholder_tracker, db_.get());
|
| }
|
|
|
| - leveldb::Status status = db_->Write(leveldb::WriteOptions(), &batch);
|
| - ASSERT_TRUE(status.ok());
|
| + ASSERT_TRUE(db_->Commit().ok());
|
| }
|
|
|
| MetadataDatabaseIndexOnDisk* index() { return index_.get(); }
|
| + void WriteToDB() {
|
| + ASSERT_TRUE(db_->Commit().ok());
|
| + }
|
|
|
| private:
|
| void InitializeLevelDB() {
|
| @@ -113,14 +109,14 @@ class MetadataDatabaseIndexOnDiskTest : public testing::Test {
|
| leveldb::Status status =
|
| leveldb::DB::Open(options, database_dir_.path().AsUTF8Unsafe(), &db);
|
| ASSERT_TRUE(status.ok());
|
| - db_.reset(db);
|
| + db_.reset(new LevelDBWrapper(make_scoped_ptr(db)));
|
| }
|
|
|
| scoped_ptr<MetadataDatabaseIndexOnDisk> index_;
|
|
|
| base::ScopedTempDir database_dir_;
|
| scoped_ptr<leveldb::Env> in_memory_env_;
|
| - scoped_ptr<leveldb::DB> db_;
|
| + scoped_ptr<LevelDBWrapper> db_;
|
| };
|
|
|
| TEST_F(MetadataDatabaseIndexOnDiskTest, GetEntryTest) {
|
| @@ -143,7 +139,6 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, SetEntryTest) {
|
| CreateTestDatabase(false);
|
|
|
| const int64 tracker_id = 10;
|
| - scoped_ptr<leveldb::WriteBatch> batch(new leveldb::WriteBatch);
|
| scoped_ptr<FileMetadata> metadata =
|
| test_util::CreateFileMetadata("test_file_id", "test_title", "test_md5");
|
| FileTracker root_tracker;
|
| @@ -151,13 +146,13 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, SetEntryTest) {
|
| scoped_ptr<FileTracker> tracker =
|
| test_util::CreateTracker(*metadata, tracker_id, &root_tracker);
|
|
|
| - index()->StoreFileMetadata(metadata.Pass(), batch.get());
|
| - index()->StoreFileTracker(tracker.Pass(), batch.get());
|
| + index()->StoreFileMetadata(metadata.Pass());
|
| + index()->StoreFileTracker(tracker.Pass());
|
|
|
| - EXPECT_FALSE(index()->GetFileMetadata("test_file_id", NULL));
|
| - EXPECT_FALSE(index()->GetFileTracker(tracker_id, NULL));
|
| + EXPECT_TRUE(index()->GetFileMetadata("test_file_id", NULL));
|
| + EXPECT_TRUE(index()->GetFileTracker(tracker_id, NULL));
|
|
|
| - WriteToDB(batch.Pass());
|
| + WriteToDB();
|
|
|
| metadata.reset(new FileMetadata);
|
| ASSERT_TRUE(index()->GetFileMetadata("test_file_id", metadata.get()));
|
| @@ -169,15 +164,13 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, SetEntryTest) {
|
| EXPECT_EQ("test_file_id", tracker->file_id());
|
|
|
| // Test if removers work.
|
| - batch.reset(new leveldb::WriteBatch);
|
| -
|
| - index()->RemoveFileMetadata("test_file_id", batch.get());
|
| - index()->RemoveFileTracker(tracker_id, batch.get());
|
| + index()->RemoveFileMetadata("test_file_id");
|
| + index()->RemoveFileTracker(tracker_id);
|
|
|
| - EXPECT_TRUE(index()->GetFileMetadata("test_file_id", NULL));
|
| - EXPECT_TRUE(index()->GetFileTracker(tracker_id, NULL));
|
| + EXPECT_FALSE(index()->GetFileMetadata("test_file_id", NULL));
|
| + EXPECT_FALSE(index()->GetFileTracker(tracker_id, NULL));
|
|
|
| - WriteToDB(batch.Pass());
|
| + WriteToDB();
|
|
|
| EXPECT_FALSE(index()->GetFileMetadata("test_file_id", NULL));
|
| EXPECT_FALSE(index()->GetFileTracker(tracker_id, NULL));
|
| @@ -196,9 +189,8 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, BuildIndexTest) {
|
| EXPECT_TRUE(tracker_ids.empty());
|
| EXPECT_EQ(0U, index()->CountDirtyTracker());
|
|
|
| - scoped_ptr<leveldb::WriteBatch> batch(new leveldb::WriteBatch);
|
| - index()->BuildTrackerIndexes(batch.get());
|
| - WriteToDB(batch.Pass());
|
| + index()->BuildTrackerIndexes();
|
| + WriteToDB();
|
|
|
| // After building indexes, we should have correct indexes.
|
| EXPECT_EQ(kAppRootTrackerID, index()->GetAppRootTracker("app_id"));
|
| @@ -250,49 +242,45 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, IndexAppRootIDByAppIDTest) {
|
| test_util::CreateFolderMetadata("app_root_folder_id_2", "app_title_2");
|
|
|
| // Testing AddToAppIDIndex
|
| - scoped_ptr<leveldb::WriteBatch> batch(new leveldb::WriteBatch);
|
| scoped_ptr<FileTracker> app_root_tracker =
|
| test_util::CreateTracker(*app_root_metadata, kAppRootTrackerID2,
|
| &sync_root_tracker);
|
| app_root_tracker->set_app_id("app_id_2");
|
| app_root_tracker->set_tracker_kind(TRACKER_KIND_APP_ROOT);
|
|
|
| - index()->StoreFileTracker(app_root_tracker.Pass(), batch.get());
|
| - WriteToDB(batch.Pass());
|
| + index()->StoreFileTracker(app_root_tracker.Pass());
|
| + WriteToDB();
|
| EXPECT_EQ(kAppRootTrackerID, index()->GetAppRootTracker("app_id"));
|
| EXPECT_EQ(kAppRootTrackerID2, index()->GetAppRootTracker("app_id_2"));
|
|
|
| // Testing UpdateInAppIDIndex
|
| - batch.reset(new leveldb::WriteBatch);
|
| app_root_tracker = test_util::CreateTracker(*app_root_metadata,
|
| kAppRootTrackerID2,
|
| &sync_root_tracker);
|
| app_root_tracker->set_app_id("app_id_3");
|
| app_root_tracker->set_active(false);
|
|
|
| - index()->StoreFileTracker(app_root_tracker.Pass(), batch.get());
|
| - WriteToDB(batch.Pass());
|
| + index()->StoreFileTracker(app_root_tracker.Pass());
|
| + WriteToDB();
|
| EXPECT_EQ(kAppRootTrackerID, index()->GetAppRootTracker("app_id"));
|
| EXPECT_EQ(kInvalidTrackerID, index()->GetAppRootTracker("app_id_2"));
|
| EXPECT_EQ(kInvalidTrackerID, index()->GetAppRootTracker("app_id_3"));
|
|
|
| - batch.reset(new leveldb::WriteBatch);
|
| app_root_tracker = test_util::CreateTracker(*app_root_metadata,
|
| kAppRootTrackerID2,
|
| &sync_root_tracker);
|
| app_root_tracker->set_app_id("app_id_3");
|
| app_root_tracker->set_tracker_kind(TRACKER_KIND_APP_ROOT);
|
|
|
| - index()->StoreFileTracker(app_root_tracker.Pass(), batch.get());
|
| - WriteToDB(batch.Pass());
|
| + index()->StoreFileTracker(app_root_tracker.Pass());
|
| + WriteToDB();
|
| EXPECT_EQ(kAppRootTrackerID, index()->GetAppRootTracker("app_id"));
|
| EXPECT_EQ(kInvalidTrackerID, index()->GetAppRootTracker("app_id_2"));
|
| EXPECT_EQ(kAppRootTrackerID2, index()->GetAppRootTracker("app_id_3"));
|
|
|
| // Testing RemoveFromAppIDIndex
|
| - batch.reset(new leveldb::WriteBatch);
|
| - index()->RemoveFileTracker(kAppRootTrackerID2, batch.get());
|
| - WriteToDB(batch.Pass());
|
| + index()->RemoveFileTracker(kAppRootTrackerID2);
|
| + WriteToDB();
|
| EXPECT_EQ(kAppRootTrackerID, index()->GetAppRootTracker("app_id"));
|
| EXPECT_EQ(kInvalidTrackerID, index()->GetAppRootTracker("app_id_3"));
|
| }
|
| @@ -315,9 +303,8 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, TrackerIDSetByFileIDTest) {
|
| scoped_ptr<FileTracker> file_tracker =
|
| test_util::CreateTracker(metadata, tracker_id, &app_root_tracker);
|
|
|
| - scoped_ptr<leveldb::WriteBatch> batch(new leveldb::WriteBatch);
|
| - index()->StoreFileTracker(file_tracker.Pass(), batch.get());
|
| - WriteToDB(batch.Pass());
|
| + index()->StoreFileTracker(file_tracker.Pass());
|
| + WriteToDB();
|
| tracker_ids = index()->GetFileTrackerIDsByFileID("file_id");
|
| EXPECT_EQ(2U, tracker_ids.size());
|
| EXPECT_EQ(tracker_id, tracker_ids.active_tracker());
|
| @@ -326,13 +313,12 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, TrackerIDSetByFileIDTest) {
|
| EXPECT_EQ("file_id", multi_file_id);
|
|
|
| // Testing UpdateInFileIDIndexes
|
| - batch.reset(new leveldb::WriteBatch);
|
| file_tracker =
|
| test_util::CreateTracker(metadata, tracker_id, &app_root_tracker);
|
| file_tracker->set_active(false);
|
|
|
| - index()->StoreFileTracker(file_tracker.Pass(), batch.get());
|
| - WriteToDB(batch.Pass());
|
| + index()->StoreFileTracker(file_tracker.Pass());
|
| + WriteToDB();
|
| tracker_ids = index()->GetFileTrackerIDsByFileID("file_id");
|
| EXPECT_EQ(2U, tracker_ids.size());
|
| EXPECT_EQ(kInvalidTrackerID, tracker_ids.active_tracker());
|
| @@ -340,12 +326,11 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, TrackerIDSetByFileIDTest) {
|
| multi_file_id = index()->PickMultiTrackerFileID();
|
| EXPECT_EQ("file_id", multi_file_id);
|
|
|
| - batch.reset(new leveldb::WriteBatch);
|
| file_tracker =
|
| test_util::CreateTracker(metadata, tracker_id, &app_root_tracker);
|
|
|
| - index()->StoreFileTracker(file_tracker.Pass(), batch.get());
|
| - WriteToDB(batch.Pass());
|
| + index()->StoreFileTracker(file_tracker.Pass());
|
| + WriteToDB();
|
| tracker_ids = index()->GetFileTrackerIDsByFileID("file_id");
|
| EXPECT_EQ(2U, tracker_ids.size());
|
| EXPECT_EQ(tracker_id, tracker_ids.active_tracker());
|
| @@ -354,9 +339,8 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, TrackerIDSetByFileIDTest) {
|
| EXPECT_EQ("file_id", multi_file_id);
|
|
|
| // Testing RemoveFromFileIDIndexes
|
| - batch.reset(new leveldb::WriteBatch);
|
| - index()->RemoveFileTracker(tracker_id, batch.get());
|
| - WriteToDB(batch.Pass());
|
| + index()->RemoveFileTracker(tracker_id);
|
| + WriteToDB();
|
| tracker_ids = index()->GetFileTrackerIDsByFileID("file_id");
|
| EXPECT_EQ(1U, tracker_ids.size());
|
| EXPECT_EQ(kInvalidTrackerID, tracker_ids.active_tracker());
|
| @@ -388,9 +372,8 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, TrackerIDSetByParentIDAndTitleTest) {
|
| scoped_ptr<FileTracker> file_tracker =
|
| test_util::CreateTracker(metadata, tracker_id, &app_root_tracker);
|
|
|
| - scoped_ptr<leveldb::WriteBatch> batch(new leveldb::WriteBatch);
|
| - index()->StoreFileTracker(file_tracker.Pass(), batch.get());
|
| - WriteToDB(batch.Pass());
|
| + index()->StoreFileTracker(file_tracker.Pass());
|
| + WriteToDB();
|
| tracker_ids = index()->GetFileTrackerIDsByParentAndTitle(
|
| kAppRootTrackerID, "file");
|
| EXPECT_EQ(2U, tracker_ids.size());
|
| @@ -401,13 +384,12 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, TrackerIDSetByParentIDAndTitleTest) {
|
| EXPECT_EQ("file", multi_backing.title);
|
|
|
| // Testing UpdateInFileIDIndexes
|
| - batch.reset(new leveldb::WriteBatch);
|
| file_tracker =
|
| test_util::CreateTracker(metadata, tracker_id, &app_root_tracker);
|
| file_tracker->set_active(false);
|
|
|
| - index()->StoreFileTracker(file_tracker.Pass(), batch.get());
|
| - WriteToDB(batch.Pass());
|
| + index()->StoreFileTracker(file_tracker.Pass());
|
| + WriteToDB();
|
| tracker_ids = index()->GetFileTrackerIDsByParentAndTitle(
|
| kAppRootTrackerID, "file");
|
| EXPECT_EQ(2U, tracker_ids.size());
|
| @@ -417,12 +399,11 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, TrackerIDSetByParentIDAndTitleTest) {
|
| EXPECT_EQ(kAppRootTrackerID, multi_backing.parent_id);
|
| EXPECT_EQ("file", multi_backing.title);
|
|
|
| - batch.reset(new leveldb::WriteBatch);
|
| file_tracker =
|
| test_util::CreateTracker(metadata, tracker_id, &app_root_tracker);
|
|
|
| - index()->StoreFileTracker(file_tracker.Pass(), batch.get());
|
| - WriteToDB(batch.Pass());
|
| + index()->StoreFileTracker(file_tracker.Pass());
|
| + WriteToDB();
|
| tracker_ids = index()->GetFileTrackerIDsByParentAndTitle(
|
| kAppRootTrackerID, "file");
|
| EXPECT_EQ(2U, tracker_ids.size());
|
| @@ -433,9 +414,8 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, TrackerIDSetByParentIDAndTitleTest) {
|
| EXPECT_EQ("file", multi_backing.title);
|
|
|
| // Testing RemoveFromFileIDIndexes
|
| - batch.reset(new leveldb::WriteBatch);
|
| - index()->RemoveFileTracker(tracker_id, batch.get());
|
| - WriteToDB(batch.Pass());
|
| + index()->RemoveFileTracker(tracker_id);
|
| + WriteToDB();
|
| tracker_ids = index()->GetFileTrackerIDsByParentAndTitle(
|
| kAppRootTrackerID, "file");
|
| EXPECT_EQ(1U, tracker_ids.size());
|
| @@ -449,14 +429,12 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, TrackerIDSetByParentIDAndTitleTest) {
|
| TEST_F(MetadataDatabaseIndexOnDiskTest, DirtyTrackersTest) {
|
| CreateTestDatabase(true);
|
|
|
| - scoped_ptr<leveldb::WriteBatch> batch;
|
| // Testing public methods
|
| EXPECT_EQ(1U, index()->CountDirtyTracker());
|
| EXPECT_FALSE(index()->HasDemotedDirtyTracker());
|
| EXPECT_EQ(kPlaceholderTrackerID, index()->PickDirtyTracker());
|
| - batch.reset(new leveldb::WriteBatch);
|
| - index()->DemoteDirtyTracker(kPlaceholderTrackerID, batch.get());
|
| - WriteToDB(batch.Pass());
|
| + index()->DemoteDirtyTracker(kPlaceholderTrackerID);
|
| + WriteToDB();
|
| EXPECT_TRUE(index()->HasDemotedDirtyTracker());
|
| EXPECT_EQ(1U, index()->CountDirtyTracker());
|
|
|
| @@ -469,9 +447,8 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, DirtyTrackersTest) {
|
| test_util::CreatePlaceholderTracker("placeholder",
|
| tracker_id,
|
| app_root_tracker.get());
|
| - batch.reset(new leveldb::WriteBatch);
|
| - index()->StoreFileTracker(tracker.Pass(), batch.get());
|
| - WriteToDB(batch.Pass());
|
| + index()->StoreFileTracker(tracker.Pass());
|
| + WriteToDB();
|
| EXPECT_EQ(2U, index()->CountDirtyTracker());
|
| EXPECT_EQ(tracker_id, index()->PickDirtyTracker());
|
|
|
| @@ -480,25 +457,22 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, DirtyTrackersTest) {
|
| tracker_id,
|
| app_root_tracker.get());
|
| tracker->set_dirty(false);
|
| - batch.reset(new leveldb::WriteBatch);
|
| - index()->StoreFileTracker(tracker.Pass(), batch.get());
|
| - WriteToDB(batch.Pass());
|
| + index()->StoreFileTracker(tracker.Pass());
|
| + WriteToDB();
|
| EXPECT_EQ(1U, index()->CountDirtyTracker());
|
| EXPECT_EQ(kInvalidTrackerID, index()->PickDirtyTracker());
|
|
|
| tracker = test_util::CreatePlaceholderTracker("placeholder",
|
| tracker_id,
|
| app_root_tracker.get());
|
| - batch.reset(new leveldb::WriteBatch);
|
| - index()->StoreFileTracker(tracker.Pass(), batch.get());
|
| - WriteToDB(batch.Pass());
|
| + index()->StoreFileTracker(tracker.Pass());
|
| + WriteToDB();
|
| EXPECT_EQ(2U, index()->CountDirtyTracker());
|
| EXPECT_EQ(tracker_id, index()->PickDirtyTracker());
|
|
|
| // Testing RemoveFromDirtyTrackerIndexes
|
| - batch.reset(new leveldb::WriteBatch);
|
| - index()->RemoveFileTracker(tracker_id, batch.get());
|
| - WriteToDB(batch.Pass());
|
| + index()->RemoveFileTracker(tracker_id);
|
| + WriteToDB();
|
| EXPECT_EQ(1U, index()->CountDirtyTracker());
|
| EXPECT_EQ(kInvalidTrackerID, index()->PickDirtyTracker());
|
| }
|
|
|