Chromium Code Reviews| 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..7bf3576edd13377a3bc5735b5cbfddda667762c9 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,73 @@ 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()); |
| + } |
|
nhiroki
2014/09/08 10:45:10
To make sure that the size of |index1| is the same
peria
2014/09/08 10:53:05
Done.
|
| + } |
| + |
| + void VerifyReloadConsistency() { |
| + scoped_ptr<MetadataDatabase> metadata_database_2; |
| + ASSERT_EQ(SYNC_STATUS_OK, |
| + MetadataDatabase::CreateForTesting( |
| + metadata_database_->db_.Pass(), |
| + true, // enable_on_disk_index |
|
nhiroki
2014/09/08 10:45:10
How about passing |metadata_database_.enable_on_di
peria
2014/09/08 10:53:05
Done.
|
| + &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)); |
| } |
| } |