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()); |
} |