| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/sync_file_system/drive_backend/metadata_database_index.
h" | 5 #include "chrome/browser/sync_file_system/drive_backend/metadata_database_index.
h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 |
| 8 #include <utility> | 9 #include <utility> |
| 9 | 10 |
| 11 #include "base/memory/ptr_util.h" |
| 10 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants.
h" | 12 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants.
h" |
| 11 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_test_util.
h" | 13 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_test_util.
h" |
| 12 #include "chrome/browser/sync_file_system/drive_backend/leveldb_wrapper.h" | 14 #include "chrome/browser/sync_file_system/drive_backend/leveldb_wrapper.h" |
| 13 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" | 15 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" |
| 14 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" | 16 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" |
| 15 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
| 16 #include "third_party/leveldatabase/src/helpers/memenv/memenv.h" | 18 #include "third_party/leveldatabase/src/helpers/memenv/memenv.h" |
| 17 #include "third_party/leveldatabase/src/include/leveldb/db.h" | 19 #include "third_party/leveldatabase/src/include/leveldb/db.h" |
| 18 #include "third_party/leveldatabase/src/include/leveldb/env.h" | 20 #include "third_party/leveldatabase/src/include/leveldb/env.h" |
| 19 | 21 |
| 20 namespace sync_file_system { | 22 namespace sync_file_system { |
| 21 namespace drive_backend { | 23 namespace drive_backend { |
| 22 | 24 |
| 23 namespace { | 25 namespace { |
| 24 | 26 |
| 25 const int64_t kSyncRootTrackerID = 1; | 27 const int64_t kSyncRootTrackerID = 1; |
| 26 const int64_t kAppRootTrackerID = 2; | 28 const int64_t kAppRootTrackerID = 2; |
| 27 const int64_t kFileTrackerID = 3; | 29 const int64_t kFileTrackerID = 3; |
| 28 const int64_t kPlaceholderTrackerID = 4; | 30 const int64_t kPlaceholderTrackerID = 4; |
| 29 | 31 |
| 30 scoped_ptr<DatabaseContents> CreateTestDatabaseContents() { | 32 std::unique_ptr<DatabaseContents> CreateTestDatabaseContents() { |
| 31 scoped_ptr<DatabaseContents> contents(new DatabaseContents); | 33 std::unique_ptr<DatabaseContents> contents(new DatabaseContents); |
| 32 | 34 |
| 33 scoped_ptr<FileMetadata> sync_root_metadata = | 35 std::unique_ptr<FileMetadata> sync_root_metadata = |
| 34 test_util::CreateFolderMetadata("sync_root_folder_id", | 36 test_util::CreateFolderMetadata("sync_root_folder_id", |
| 35 "Chrome Syncable FileSystem"); | 37 "Chrome Syncable FileSystem"); |
| 36 scoped_ptr<FileTracker> sync_root_tracker = | 38 std::unique_ptr<FileTracker> sync_root_tracker = test_util::CreateTracker( |
| 37 test_util::CreateTracker(*sync_root_metadata, kSyncRootTrackerID, | 39 *sync_root_metadata, kSyncRootTrackerID, nullptr); |
| 38 nullptr); | |
| 39 | 40 |
| 40 scoped_ptr<FileMetadata> app_root_metadata = | 41 std::unique_ptr<FileMetadata> app_root_metadata = |
| 41 test_util::CreateFolderMetadata("app_root_folder_id", "app_id"); | 42 test_util::CreateFolderMetadata("app_root_folder_id", "app_id"); |
| 42 scoped_ptr<FileTracker> app_root_tracker = | 43 std::unique_ptr<FileTracker> app_root_tracker = test_util::CreateTracker( |
| 43 test_util::CreateTracker(*app_root_metadata, kAppRootTrackerID, | 44 *app_root_metadata, kAppRootTrackerID, sync_root_tracker.get()); |
| 44 sync_root_tracker.get()); | |
| 45 app_root_tracker->set_app_id("app_id"); | 45 app_root_tracker->set_app_id("app_id"); |
| 46 app_root_tracker->set_tracker_kind(TRACKER_KIND_APP_ROOT); | 46 app_root_tracker->set_tracker_kind(TRACKER_KIND_APP_ROOT); |
| 47 | 47 |
| 48 scoped_ptr<FileMetadata> file_metadata = | 48 std::unique_ptr<FileMetadata> file_metadata = |
| 49 test_util::CreateFileMetadata("file_id", "file", "file_md5"); | 49 test_util::CreateFileMetadata("file_id", "file", "file_md5"); |
| 50 scoped_ptr<FileTracker> file_tracker = | 50 std::unique_ptr<FileTracker> file_tracker = test_util::CreateTracker( |
| 51 test_util::CreateTracker(*file_metadata, kFileTrackerID, | 51 *file_metadata, kFileTrackerID, app_root_tracker.get()); |
| 52 app_root_tracker.get()); | |
| 53 | 52 |
| 54 scoped_ptr<FileTracker> placeholder_tracker = | 53 std::unique_ptr<FileTracker> placeholder_tracker = |
| 55 test_util::CreatePlaceholderTracker("unsynced_file_id", | 54 test_util::CreatePlaceholderTracker( |
| 56 kPlaceholderTrackerID, | 55 "unsynced_file_id", kPlaceholderTrackerID, app_root_tracker.get()); |
| 57 app_root_tracker.get()); | |
| 58 | 56 |
| 59 contents->file_metadata.push_back(sync_root_metadata.release()); | 57 contents->file_metadata.push_back(sync_root_metadata.release()); |
| 60 contents->file_trackers.push_back(sync_root_tracker.release()); | 58 contents->file_trackers.push_back(sync_root_tracker.release()); |
| 61 contents->file_metadata.push_back(app_root_metadata.release()); | 59 contents->file_metadata.push_back(app_root_metadata.release()); |
| 62 contents->file_trackers.push_back(app_root_tracker.release()); | 60 contents->file_trackers.push_back(app_root_tracker.release()); |
| 63 contents->file_metadata.push_back(file_metadata.release()); | 61 contents->file_metadata.push_back(file_metadata.release()); |
| 64 contents->file_trackers.push_back(file_tracker.release()); | 62 contents->file_trackers.push_back(file_tracker.release()); |
| 65 contents->file_trackers.push_back(placeholder_tracker.release()); | 63 contents->file_trackers.push_back(placeholder_tracker.release()); |
| 66 return contents; | 64 return contents; |
| 67 } | 65 } |
| (...skipping 16 matching lines...) Expand all Loading... |
| 84 private: | 82 private: |
| 85 void InitializeLevelDB() { | 83 void InitializeLevelDB() { |
| 86 leveldb::DB* db = nullptr; | 84 leveldb::DB* db = nullptr; |
| 87 leveldb::Options options; | 85 leveldb::Options options; |
| 88 options.create_if_missing = true; | 86 options.create_if_missing = true; |
| 89 options.max_open_files = 0; // Use minimum. | 87 options.max_open_files = 0; // Use minimum. |
| 90 options.env = in_memory_env_.get(); | 88 options.env = in_memory_env_.get(); |
| 91 leveldb::Status status = leveldb::DB::Open(options, "", &db); | 89 leveldb::Status status = leveldb::DB::Open(options, "", &db); |
| 92 ASSERT_TRUE(status.ok()); | 90 ASSERT_TRUE(status.ok()); |
| 93 | 91 |
| 94 db_.reset(new LevelDBWrapper(make_scoped_ptr(db))); | 92 db_.reset(new LevelDBWrapper(base::WrapUnique(db))); |
| 95 } | 93 } |
| 96 | 94 |
| 97 scoped_ptr<DatabaseContents> contents_; | 95 std::unique_ptr<DatabaseContents> contents_; |
| 98 scoped_ptr<MetadataDatabaseIndex> index_; | 96 std::unique_ptr<MetadataDatabaseIndex> index_; |
| 99 | 97 |
| 100 scoped_ptr<leveldb::Env> in_memory_env_; | 98 std::unique_ptr<leveldb::Env> in_memory_env_; |
| 101 scoped_ptr<LevelDBWrapper> db_; | 99 std::unique_ptr<LevelDBWrapper> db_; |
| 102 }; | 100 }; |
| 103 | 101 |
| 104 TEST_F(MetadataDatabaseIndexTest, GetEntryTest) { | 102 TEST_F(MetadataDatabaseIndexTest, GetEntryTest) { |
| 105 FileTracker tracker; | 103 FileTracker tracker; |
| 106 EXPECT_FALSE(index()->GetFileTracker(kInvalidTrackerID, nullptr)); | 104 EXPECT_FALSE(index()->GetFileTracker(kInvalidTrackerID, nullptr)); |
| 107 ASSERT_TRUE(index()->GetFileTracker(kFileTrackerID, &tracker)); | 105 ASSERT_TRUE(index()->GetFileTracker(kFileTrackerID, &tracker)); |
| 108 EXPECT_EQ(kFileTrackerID, tracker.tracker_id()); | 106 EXPECT_EQ(kFileTrackerID, tracker.tracker_id()); |
| 109 EXPECT_EQ("file_id", tracker.file_id()); | 107 EXPECT_EQ("file_id", tracker.file_id()); |
| 110 | 108 |
| 111 FileMetadata metadata; | 109 FileMetadata metadata; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 142 EXPECT_EQ(kInvalidTrackerID, index()->PickDirtyTracker()); | 140 EXPECT_EQ(kInvalidTrackerID, index()->PickDirtyTracker()); |
| 143 index()->PromoteDemotedDirtyTrackers(); | 141 index()->PromoteDemotedDirtyTrackers(); |
| 144 EXPECT_EQ(kPlaceholderTrackerID, index()->PickDirtyTracker()); | 142 EXPECT_EQ(kPlaceholderTrackerID, index()->PickDirtyTracker()); |
| 145 | 143 |
| 146 FileMetadata metadata; | 144 FileMetadata metadata; |
| 147 ASSERT_TRUE(index()->GetFileMetadata("file_id", &metadata)); | 145 ASSERT_TRUE(index()->GetFileMetadata("file_id", &metadata)); |
| 148 FileTracker app_root_tracker; | 146 FileTracker app_root_tracker; |
| 149 ASSERT_TRUE(index()->GetFileTracker(kAppRootTrackerID, &app_root_tracker)); | 147 ASSERT_TRUE(index()->GetFileTracker(kAppRootTrackerID, &app_root_tracker)); |
| 150 | 148 |
| 151 int64_t new_tracker_id = 100; | 149 int64_t new_tracker_id = 100; |
| 152 scoped_ptr<FileTracker> new_tracker = | 150 std::unique_ptr<FileTracker> new_tracker = |
| 153 test_util::CreateTracker(metadata, new_tracker_id, &app_root_tracker); | 151 test_util::CreateTracker(metadata, new_tracker_id, &app_root_tracker); |
| 154 new_tracker->set_active(false); | 152 new_tracker->set_active(false); |
| 155 index()->StoreFileTracker(std::move(new_tracker)); | 153 index()->StoreFileTracker(std::move(new_tracker)); |
| 156 | 154 |
| 157 EXPECT_EQ("file_id", index()->PickMultiTrackerFileID()); | 155 EXPECT_EQ("file_id", index()->PickMultiTrackerFileID()); |
| 158 EXPECT_EQ(ParentIDAndTitle(kAppRootTrackerID, std::string("file")), | 156 EXPECT_EQ(ParentIDAndTitle(kAppRootTrackerID, std::string("file")), |
| 159 index()->PickMultiBackingFilePath()); | 157 index()->PickMultiBackingFilePath()); |
| 160 | 158 |
| 161 index()->RemoveFileMetadata("file_id"); | 159 index()->RemoveFileMetadata("file_id"); |
| 162 index()->RemoveFileTracker(kFileTrackerID); | 160 index()->RemoveFileTracker(kFileTrackerID); |
| 163 | 161 |
| 164 EXPECT_FALSE(index()->GetFileMetadata("file_id", nullptr)); | 162 EXPECT_FALSE(index()->GetFileMetadata("file_id", nullptr)); |
| 165 EXPECT_FALSE(index()->GetFileTracker(kFileTrackerID, nullptr)); | 163 EXPECT_FALSE(index()->GetFileTracker(kFileTrackerID, nullptr)); |
| 166 } | 164 } |
| 167 | 165 |
| 168 } // namespace drive_backend | 166 } // namespace drive_backend |
| 169 } // namespace sync_file_system | 167 } // namespace sync_file_system |
| OLD | NEW |