Commit d56a1d82 authored by peria@chromium.org's avatar peria@chromium.org

[SyncFS] Implement following four methods.

- CountFileMetadata
- CountFileTracker
- GetAllMeatadaIDs
- GetAllTrackerIDs


BUG=347425
TEST=./unit_tests --gtest_filter="Metadata*"

Review URL: https://codereview.chromium.org/372843007

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@281980 0039d316-1c4b-4281-b951-d872f2087c98
parent e755f1a1
...@@ -359,15 +359,27 @@ size_t MetadataDatabaseIndexOnDisk::CountDirtyTracker() const { ...@@ -359,15 +359,27 @@ size_t MetadataDatabaseIndexOnDisk::CountDirtyTracker() const {
} }
size_t MetadataDatabaseIndexOnDisk::CountFileMetadata() const { size_t MetadataDatabaseIndexOnDisk::CountFileMetadata() const {
// TODO(peria): Implement here // TODO(peria): Cache the number of FileMetadata in the DB.
NOTIMPLEMENTED(); size_t count = 0;
return 0; scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions()));
for (itr->Seek(kFileMetadataKeyPrefix); itr->Valid(); itr->Next()) {
if (!StartsWithASCII(itr->key().ToString(), kFileMetadataKeyPrefix, true))
break;
++count;
}
return count;
} }
size_t MetadataDatabaseIndexOnDisk::CountFileTracker() const { size_t MetadataDatabaseIndexOnDisk::CountFileTracker() const {
// TODO(peria): Implement here // TODO(peria): Cache the number of FileTracker in the DB.
NOTIMPLEMENTED(); size_t count = 0;
return 0; scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions()));
for (itr->Seek(kFileTrackerKeyPrefix); itr->Valid(); itr->Next()) {
if (!StartsWithASCII(itr->key().ToString(), kFileTrackerKeyPrefix, true))
break;
++count;
}
return count;
} }
std::vector<std::string> std::vector<std::string>
...@@ -384,16 +396,32 @@ MetadataDatabaseIndexOnDisk::GetRegisteredAppIDs() const { ...@@ -384,16 +396,32 @@ MetadataDatabaseIndexOnDisk::GetRegisteredAppIDs() const {
} }
std::vector<int64> MetadataDatabaseIndexOnDisk::GetAllTrackerIDs() const { std::vector<int64> MetadataDatabaseIndexOnDisk::GetAllTrackerIDs() const {
// TODO(peria): Implement here std::vector<int64> tracker_ids;
NOTIMPLEMENTED(); scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions()));
return std::vector<int64>(); for (itr->Seek(kFileTrackerKeyPrefix); itr->Valid(); itr->Next()) {
std::string id_str;
if (!RemovePrefix(itr->key().ToString(), kFileTrackerKeyPrefix, &id_str))
break;
int64 tracker_id;
if (!base::StringToInt64(id_str, &tracker_id))
continue;
tracker_ids.push_back(tracker_id);
}
return tracker_ids;
} }
std::vector<std::string> std::vector<std::string>
MetadataDatabaseIndexOnDisk::GetAllMetadataIDs() const { MetadataDatabaseIndexOnDisk::GetAllMetadataIDs() const {
// TODO(peria): Implement here std::vector<std::string> file_ids;
NOTIMPLEMENTED(); scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions()));
return std::vector<std::string>(); for (itr->Seek(kFileMetadataKeyPrefix); itr->Valid(); itr->Next()) {
std::string file_id;
if (!RemovePrefix(itr->key().ToString(), kFileMetadataKeyPrefix, &file_id))
break;
file_ids.push_back(file_id);
}
return file_ids;
} }
void MetadataDatabaseIndexOnDisk::AddToAppIDIndex( void MetadataDatabaseIndexOnDisk::AddToAppIDIndex(
......
...@@ -183,6 +183,27 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, SetEntryTest) { ...@@ -183,6 +183,27 @@ TEST_F(MetadataDatabaseIndexOnDiskTest, SetEntryTest) {
EXPECT_FALSE(index()->GetFileTracker(tracker_id, NULL)); EXPECT_FALSE(index()->GetFileTracker(tracker_id, NULL));
} }
TEST_F(MetadataDatabaseIndexOnDiskTest, AllEntriesTest) {
CreateTestDatabase(true);
EXPECT_EQ(3U, index()->CountFileMetadata());
std::vector<std::string> file_ids(index()->GetAllMetadataIDs());
ASSERT_EQ(3U, file_ids.size());
std::sort(file_ids.begin(), file_ids.end());
EXPECT_EQ("app_root_folder_id", file_ids[0]);
EXPECT_EQ("file_id", file_ids[1]);
EXPECT_EQ("sync_root_folder_id", file_ids[2]);
EXPECT_EQ(4U, index()->CountFileTracker());
std::vector<int64> tracker_ids = index()->GetAllTrackerIDs();
ASSERT_EQ(4U, tracker_ids.size());
std::sort(tracker_ids.begin(), tracker_ids.end());
EXPECT_EQ(kSyncRootTrackerID, tracker_ids[0]);
EXPECT_EQ(kAppRootTrackerID, tracker_ids[1]);
EXPECT_EQ(kFileTrackerID, tracker_ids[2]);
EXPECT_EQ(kPlaceholderTrackerID, tracker_ids[3]);
}
TEST_F(MetadataDatabaseIndexOnDiskTest, IndexAppRootIDByAppIDTest) { TEST_F(MetadataDatabaseIndexOnDiskTest, IndexAppRootIDByAppIDTest) {
CreateTestDatabase(true); CreateTestDatabase(true);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment