| Index: chrome/browser/sync_file_system/drive_backend/metadata_database_index_unittest.cc
|
| diff --git a/chrome/browser/sync_file_system/drive_backend/metadata_database_index_unittest.cc b/chrome/browser/sync_file_system/drive_backend/metadata_database_index_unittest.cc
|
| index 25a60aed3d5cbe29f514d0373681e3e98fa7f8e7..f10bf710fcafd072a822f7f764c5eddd34712aba 100644
|
| --- a/chrome/browser/sync_file_system/drive_backend/metadata_database_index_unittest.cc
|
| +++ b/chrome/browser/sync_file_system/drive_backend/metadata_database_index_unittest.cc
|
| @@ -6,9 +6,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/leveldb_wrapper.h"
|
| #include "chrome/browser/sync_file_system/drive_backend/metadata_database.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"
|
|
|
| namespace sync_file_system {
|
| namespace drive_backend {
|
| @@ -60,78 +64,99 @@ scoped_ptr<DatabaseContents> CreateTestDatabaseContents() {
|
|
|
| } // namespace
|
|
|
| -TEST(MetadataDatabaseIndexTest, GetEntryTest) {
|
| - scoped_ptr<MetadataDatabaseIndex> index =
|
| - MetadataDatabaseIndex::CreateForTesting(
|
| - CreateTestDatabaseContents().get());
|
| +class MetadataDatabaseIndexTest : public testing::Test {
|
| + public:
|
| + virtual void SetUp() OVERRIDE {
|
| + in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default()));
|
| + InitializeLevelDB();
|
|
|
| + contents_ = CreateTestDatabaseContents();
|
| + index_ = MetadataDatabaseIndex::CreateForTesting(contents_.get(),
|
| + db_.get());
|
| + }
|
| +
|
| + MetadataDatabaseIndex* index() { return index_.get(); }
|
| +
|
| + private:
|
| + void InitializeLevelDB() {
|
| + leveldb::DB* db = NULL;
|
| + leveldb::Options options;
|
| + options.create_if_missing = true;
|
| + options.max_open_files = 0; // Use minimum.
|
| + options.env = in_memory_env_.get();
|
| + leveldb::Status status = leveldb::DB::Open(options, "", &db);
|
| + ASSERT_TRUE(status.ok());
|
| +
|
| + db_.reset(new LevelDBWrapper(make_scoped_ptr(db)));
|
| + }
|
| +
|
| + scoped_ptr<DatabaseContents> contents_;
|
| + scoped_ptr<MetadataDatabaseIndex> index_;
|
| +
|
| + scoped_ptr<leveldb::Env> in_memory_env_;
|
| + scoped_ptr<LevelDBWrapper> db_;
|
| +};
|
| +
|
| +TEST_F(MetadataDatabaseIndexTest, GetEntryTest) {
|
| FileTracker tracker;
|
| - EXPECT_FALSE(index->GetFileTracker(kInvalidTrackerID, NULL));
|
| - ASSERT_TRUE(index->GetFileTracker(kFileTrackerID, &tracker));
|
| + EXPECT_FALSE(index()->GetFileTracker(kInvalidTrackerID, NULL));
|
| + ASSERT_TRUE(index()->GetFileTracker(kFileTrackerID, &tracker));
|
| EXPECT_EQ(kFileTrackerID, tracker.tracker_id());
|
| EXPECT_EQ("file_id", tracker.file_id());
|
|
|
| FileMetadata metadata;
|
| - EXPECT_FALSE(index->GetFileMetadata(std::string(), NULL));
|
| - ASSERT_TRUE(index->GetFileMetadata("file_id", &metadata));
|
| + EXPECT_FALSE(index()->GetFileMetadata(std::string(), NULL));
|
| + ASSERT_TRUE(index()->GetFileMetadata("file_id", &metadata));
|
| EXPECT_EQ("file_id", metadata.file_id());
|
| }
|
|
|
| -TEST(MetadataDatabaseIndexTest, IndexLookUpTest) {
|
| - scoped_ptr<MetadataDatabaseIndex> index =
|
| - MetadataDatabaseIndex::CreateForTesting(
|
| - CreateTestDatabaseContents().get());
|
| -
|
| - TrackerIDSet trackers = index->GetFileTrackerIDsByFileID("file_id");
|
| +TEST_F(MetadataDatabaseIndexTest, IndexLookUpTest) {
|
| + TrackerIDSet trackers = index()->GetFileTrackerIDsByFileID("file_id");
|
| EXPECT_EQ(1u, trackers.size());
|
| EXPECT_TRUE(trackers.has_active());
|
| EXPECT_EQ(kFileTrackerID, trackers.active_tracker());
|
|
|
| - int64 app_root_tracker_id = index->GetAppRootTracker("app_id");
|
| + int64 app_root_tracker_id = index()->GetAppRootTracker("app_id");
|
| EXPECT_EQ(kAppRootTrackerID, app_root_tracker_id);
|
|
|
| - trackers = index->GetFileTrackerIDsByParentAndTitle(
|
| + trackers = index()->GetFileTrackerIDsByParentAndTitle(
|
| app_root_tracker_id, "file");
|
| EXPECT_EQ(1u, trackers.size());
|
| EXPECT_TRUE(trackers.has_active());
|
| EXPECT_EQ(kFileTrackerID, trackers.active_tracker());
|
|
|
| - EXPECT_TRUE(index->PickMultiTrackerFileID().empty());
|
| + EXPECT_TRUE(index()->PickMultiTrackerFileID().empty());
|
| EXPECT_EQ(kInvalidTrackerID,
|
| - index->PickMultiBackingFilePath().parent_id);
|
| - EXPECT_EQ(kPlaceholderTrackerID, index->PickDirtyTracker());
|
| + index()->PickMultiBackingFilePath().parent_id);
|
| + EXPECT_EQ(kPlaceholderTrackerID, index()->PickDirtyTracker());
|
| }
|
|
|
| -TEST(MetadataDatabaseIndexTest, UpdateTest) {
|
| - scoped_ptr<MetadataDatabaseIndex> index =
|
| - MetadataDatabaseIndex::CreateForTesting(
|
| - CreateTestDatabaseContents().get());
|
| -
|
| - index->DemoteDirtyTracker(kPlaceholderTrackerID);
|
| - EXPECT_EQ(kInvalidTrackerID, index->PickDirtyTracker());
|
| - index->PromoteDemotedDirtyTrackers();
|
| - EXPECT_EQ(kPlaceholderTrackerID, index->PickDirtyTracker());
|
| +TEST_F(MetadataDatabaseIndexTest, UpdateTest) {
|
| + index()->DemoteDirtyTracker(kPlaceholderTrackerID);
|
| + EXPECT_EQ(kInvalidTrackerID, index()->PickDirtyTracker());
|
| + index()->PromoteDemotedDirtyTrackers();
|
| + EXPECT_EQ(kPlaceholderTrackerID, index()->PickDirtyTracker());
|
|
|
| FileMetadata metadata;
|
| - ASSERT_TRUE(index->GetFileMetadata("file_id", &metadata));
|
| + ASSERT_TRUE(index()->GetFileMetadata("file_id", &metadata));
|
| FileTracker app_root_tracker;
|
| - ASSERT_TRUE(index->GetFileTracker(kAppRootTrackerID, &app_root_tracker));
|
| + ASSERT_TRUE(index()->GetFileTracker(kAppRootTrackerID, &app_root_tracker));
|
|
|
| int64 new_tracker_id = 100;
|
| scoped_ptr<FileTracker> new_tracker =
|
| test_util::CreateTracker(metadata, new_tracker_id, &app_root_tracker);
|
| new_tracker->set_active(false);
|
| - index->StoreFileTracker(new_tracker.Pass());
|
| + index()->StoreFileTracker(new_tracker.Pass());
|
|
|
| - EXPECT_EQ("file_id", index->PickMultiTrackerFileID());
|
| + EXPECT_EQ("file_id", index()->PickMultiTrackerFileID());
|
| EXPECT_EQ(ParentIDAndTitle(kAppRootTrackerID, std::string("file")),
|
| - index->PickMultiBackingFilePath());
|
| + index()->PickMultiBackingFilePath());
|
|
|
| - index->RemoveFileMetadata("file_id");
|
| - index->RemoveFileTracker(kFileTrackerID);
|
| + index()->RemoveFileMetadata("file_id");
|
| + index()->RemoveFileTracker(kFileTrackerID);
|
|
|
| - EXPECT_FALSE(index->GetFileMetadata("file_id", NULL));
|
| - EXPECT_FALSE(index->GetFileTracker(kFileTrackerID, NULL));
|
| + EXPECT_FALSE(index()->GetFileMetadata("file_id", NULL));
|
| + EXPECT_FALSE(index()->GetFileTracker(kFileTrackerID, NULL));
|
| }
|
|
|
| } // namespace drive_backend
|
|
|