Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1575)

Unified Diff: sync/syncable/directory_backing_store_unittest.cc

Issue 1008103002: Sync: Avoid 3 passes over SyncDarta DB when loading the directory from the disk (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added unit test Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sync/syncable/directory_backing_store_unittest.cc
diff --git a/sync/syncable/directory_backing_store_unittest.cc b/sync/syncable/directory_backing_store_unittest.cc
index 8f679f170d17f3dfbfcc9517d2ef0871561f5c31..7394b0d68592e1a3ffd3d193c459391b632152e2 100644
--- a/sync/syncable/directory_backing_store_unittest.cc
+++ b/sync/syncable/directory_backing_store_unittest.cc
@@ -46,10 +46,11 @@ class MigrationTest : public testing::TestWithParam<int> {
static bool LoadAndIgnoreReturnedData(DirectoryBackingStore *dbs) {
Directory::MetahandlesMap tmp_handles_map;
JournalIndex delete_journals;
+ MetahandleSet metahandles_to_purge;
STLValueDeleter<Directory::MetahandlesMap> deleter(&tmp_handles_map);
Directory::KernelLoadInfo kernel_load_info;
- return dbs->Load(&tmp_handles_map, &delete_journals, &kernel_load_info) ==
- OPENED;
+ return dbs->Load(&tmp_handles_map, &delete_journals, &metahandles_to_purge,
+ &kernel_load_info) == OPENED;
}
void SetUpVersion67Database(sql::Connection* connection);
@@ -3202,12 +3203,14 @@ TEST_F(DirectoryBackingStoreTest, MigrateVersion78To79) {
// Ensure the next_id has been incremented.
Directory::MetahandlesMap handles_map;
- JournalIndex delete_journals;;
+ JournalIndex delete_journals;
+ MetahandleSet metahandles_to_purge;
STLValueDeleter<Directory::MetahandlesMap> deleter(&handles_map);
Directory::KernelLoadInfo load_info;
s.Clear();
- ASSERT_TRUE(dbs->Load(&handles_map, &delete_journals, &load_info));
+ ASSERT_TRUE(dbs->Load(&handles_map, &delete_journals, &metahandles_to_purge,
+ &load_info));
EXPECT_LE(load_info.kernel_info.next_id, kInitialNextId - 65536);
}
@@ -3225,11 +3228,13 @@ TEST_F(DirectoryBackingStoreTest, MigrateVersion79To80) {
// Ensure the bag_of_chips has been set.
Directory::MetahandlesMap handles_map;
- JournalIndex delete_journals;;
+ JournalIndex delete_journals;
+ MetahandleSet metahandles_to_purge;
STLValueDeleter<Directory::MetahandlesMap> deleter(&handles_map);
Directory::KernelLoadInfo load_info;
- ASSERT_TRUE(dbs->Load(&handles_map, &delete_journals, &load_info));
+ ASSERT_TRUE(dbs->Load(&handles_map, &delete_journals, &metahandles_to_purge,
+ &load_info));
// Check that the initial value is the serialization of an empty ChipBag.
sync_pb::ChipBag chip_bag;
std::string serialized_chip_bag;
@@ -3438,11 +3443,13 @@ TEST_F(DirectoryBackingStoreTest, DetectInvalidPosition) {
// Trying to unpack this entry should signal that the DB is corrupted.
Directory::MetahandlesMap handles_map;
- JournalIndex delete_journals;;
+ JournalIndex delete_journals;
+ MetahandleSet metahandles_to_purge;
STLValueDeleter<Directory::MetahandlesMap> deleter(&handles_map);
Directory::KernelLoadInfo kernel_load_info;
ASSERT_EQ(FAILED_DATABASE_CORRUPT,
- dbs->Load(&handles_map, &delete_journals, &kernel_load_info));
+ dbs->Load(&handles_map, &delete_journals, &metahandles_to_purge,
+ &kernel_load_info));
}
TEST_P(MigrationTest, ToCurrentVersion) {
@@ -3529,13 +3536,17 @@ TEST_P(MigrationTest, ToCurrentVersion) {
syncable::Directory::KernelLoadInfo dir_info;
Directory::MetahandlesMap handles_map;
- JournalIndex delete_journals;;
+ JournalIndex delete_journals;
+ MetahandleSet metahandles_to_purge;
STLValueDeleter<Directory::MetahandlesMap> index_deleter(&handles_map);
{
scoped_ptr<TestDirectoryBackingStore> dbs(
new TestDirectoryBackingStore(GetUsername(), &connection));
- ASSERT_EQ(OPENED, dbs->Load(&handles_map, &delete_journals, &dir_info));
+ ASSERT_EQ(OPENED, dbs->Load(&handles_map, &delete_journals,
+ &metahandles_to_purge, &dir_info));
+ if (!metahandles_to_purge.empty())
+ dbs->DeleteEntries(metahandles_to_purge);
ASSERT_FALSE(dbs->needs_column_refresh_);
ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion());
}
@@ -3903,20 +3914,22 @@ TEST_F(DirectoryBackingStoreTest, DeleteEntries) {
new TestDirectoryBackingStore(GetUsername(), &connection));
Directory::MetahandlesMap handles_map;
JournalIndex delete_journals;
+ MetahandleSet metahandles_to_purge;
Directory::KernelLoadInfo kernel_load_info;
STLValueDeleter<Directory::MetahandlesMap> index_deleter(&handles_map);
- dbs->Load(&handles_map, &delete_journals, &kernel_load_info);
+ dbs->Load(&handles_map, &delete_journals, &metahandles_to_purge,
+ &kernel_load_info);
size_t initial_size = handles_map.size();
ASSERT_LT(0U, initial_size) << "Test requires handles_map to delete.";
int64 first_to_die = handles_map.begin()->second->ref(META_HANDLE);
MetahandleSet to_delete;
to_delete.insert(first_to_die);
- EXPECT_TRUE(dbs->DeleteEntries(TestDirectoryBackingStore::METAS_TABLE,
- to_delete));
+ EXPECT_TRUE(dbs->DeleteEntries(to_delete));
STLDeleteValues(&handles_map);
- dbs->LoadEntries(&handles_map);
+ metahandles_to_purge.clear();
+ dbs->LoadEntries(&handles_map, &metahandles_to_purge);
EXPECT_EQ(initial_size - 1, handles_map.size());
bool delete_failed = false;
@@ -3935,11 +3948,11 @@ TEST_F(DirectoryBackingStoreTest, DeleteEntries) {
to_delete.insert(it->first);
}
- EXPECT_TRUE(dbs->DeleteEntries(TestDirectoryBackingStore::METAS_TABLE,
- to_delete));
+ EXPECT_TRUE(dbs->DeleteEntries(to_delete));
STLDeleteValues(&handles_map);
- dbs->LoadEntries(&handles_map);
+ metahandles_to_purge.clear();
+ dbs->LoadEntries(&handles_map, &metahandles_to_purge);
EXPECT_EQ(0U, handles_map.size());
}

Powered by Google App Engine
This is Rietveld 408576698