Index: chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc |
diff --git a/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc b/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc |
index 370f93d7a175f486e34b87adba80d0f4a4310205..17d3f69a27572e2996d4bb42abf446e4ca83d877 100644 |
--- a/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc |
+++ b/chrome/browser/sync_file_system/drive_backend/metadata_database_unittest.cc |
@@ -16,6 +16,7 @@ |
#include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" |
#include "chrome/browser/sync_file_system/drive_backend/metadata_database_index.h" |
#include "chrome/browser/sync_file_system/drive_backend/metadata_database_index_interface.h" |
+#include "chrome/browser/sync_file_system/drive_backend/metadata_database_index_on_disk.h" |
#include "chrome/browser/sync_file_system/sync_file_system_test_util.h" |
#include "google_apis/drive/drive_api_parser.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -462,59 +463,75 @@ class MetadataDatabaseTest : public testing::Test { |
return db->Commit(); |
} |
- void VerifyReloadConsistency() { |
- scoped_ptr<MetadataDatabase> metadata_database_2; |
- ASSERT_EQ(SYNC_STATUS_OK, |
- MetadataDatabase::CreateForTesting( |
- metadata_database_->db_.Pass(), |
- &metadata_database_2)); |
- metadata_database_->db_ = metadata_database_2->db_.Pass(); |
- |
- const MetadataDatabaseIndex* on_memory = |
- static_cast<MetadataDatabaseIndex*>(metadata_database_->index_.get()); |
- const MetadataDatabaseIndex* reloaded = |
- static_cast<MetadataDatabaseIndex*>(metadata_database_2->index_.get()); |
- |
- { |
- SCOPED_TRACE("Expect equivalent service_metadata"); |
- ExpectEquivalentServiceMetadata(metadata_database_->index_.get(), |
- metadata_database_2->index_.get()); |
- } |
- |
+ void VerifyReloadConsistencyForOnMemory(MetadataDatabaseIndex* index1, |
+ MetadataDatabaseIndex* index2) { |
+ ExpectEquivalentServiceMetadata(index1, index2); |
{ |
SCOPED_TRACE("Expect equivalent metadata_by_id_ contents."); |
- ExpectEquivalent(on_memory->metadata_by_id_, |
- reloaded->metadata_by_id_); |
+ ExpectEquivalent(index1->metadata_by_id_, index2->metadata_by_id_); |
} |
- |
{ |
SCOPED_TRACE("Expect equivalent tracker_by_id_ contents."); |
- ExpectEquivalent(on_memory->tracker_by_id_, |
- reloaded->tracker_by_id_); |
+ ExpectEquivalent(index1->tracker_by_id_, index2->tracker_by_id_); |
} |
- |
{ |
SCOPED_TRACE("Expect equivalent trackers_by_file_id_ contents."); |
- ExpectEquivalent(on_memory->trackers_by_file_id_, |
- reloaded->trackers_by_file_id_); |
+ ExpectEquivalent(index1->trackers_by_file_id_, |
+ index2->trackers_by_file_id_); |
} |
- |
{ |
SCOPED_TRACE("Expect equivalent app_root_by_app_id_ contents."); |
- ExpectEquivalent(on_memory->app_root_by_app_id_, |
- reloaded->app_root_by_app_id_); |
+ ExpectEquivalent(index1->app_root_by_app_id_, |
+ index2->app_root_by_app_id_); |
} |
- |
{ |
SCOPED_TRACE("Expect equivalent trackers_by_parent_and_title_ contents."); |
- ExpectEquivalent(on_memory->trackers_by_parent_and_title_, |
- reloaded->trackers_by_parent_and_title_); |
+ ExpectEquivalent(index1->trackers_by_parent_and_title_, |
+ index2->trackers_by_parent_and_title_); |
} |
- |
{ |
SCOPED_TRACE("Expect equivalent dirty_trackers_ contents."); |
- ExpectEquivalent(on_memory->dirty_trackers_, |
- reloaded->dirty_trackers_); |
+ ExpectEquivalent(index1->dirty_trackers_, index2->dirty_trackers_); |
+ } |
+ } |
+ |
+ void VerifyReloadConsistencyForOnDisk( |
+ MetadataDatabaseIndexOnDisk* index1, |
+ MetadataDatabaseIndexOnDisk* index2) { |
+ ExpectEquivalentServiceMetadata(index1, index2); |
+ scoped_ptr<LevelDBWrapper::Iterator> itr1 = |
+ index1->GetDBForTesting()->NewIterator(); |
+ scoped_ptr<LevelDBWrapper::Iterator> itr2 = |
+ index2->GetDBForTesting()->NewIterator(); |
+ for (itr1->SeekToFirst(), itr2->SeekToFirst(); |
+ itr1->Valid() && itr2->Valid(); |
+ itr1->Next(), itr2->Next()) { |
+ EXPECT_EQ(itr1->key().ToString(), itr2->key().ToString()); |
+ EXPECT_EQ(itr1->value().ToString(), itr2->value().ToString()); |
+ } |
+ EXPECT_TRUE(!itr1->Valid()); |
+ EXPECT_TRUE(!itr2->Valid()); |
+ } |
+ |
+ void VerifyReloadConsistency() { |
+ scoped_ptr<MetadataDatabase> metadata_database_2; |
+ ASSERT_EQ(SYNC_STATUS_OK, |
+ MetadataDatabase::CreateForTesting( |
+ metadata_database_->db_.Pass(), |
+ metadata_database_->enable_on_disk_index_, |
+ &metadata_database_2)); |
+ metadata_database_->db_ = metadata_database_2->db_.Pass(); |
+ |
+ MetadataDatabaseIndexInterface* index1 = metadata_database_->index_.get(); |
+ MetadataDatabaseIndexInterface* index2 = metadata_database_2->index_.get(); |
+ if (metadata_database_->enable_on_disk_index_) { |
+ VerifyReloadConsistencyForOnDisk( |
+ static_cast<MetadataDatabaseIndexOnDisk*>(index1), |
+ static_cast<MetadataDatabaseIndexOnDisk*>(index2)); |
+ } else { |
+ VerifyReloadConsistencyForOnMemory( |
+ static_cast<MetadataDatabaseIndex*>(index1), |
+ static_cast<MetadataDatabaseIndex*>(index2)); |
} |
} |