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

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/metadata_database_index_unittest.cc

Issue 446893003: [SyncFS] Ensure to pass DB in some utilities (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: work for a nit Created 6 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/sync_file_system/drive_backend/metadata_database_index.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "chrome/browser/sync_file_system/drive_backend/drive_backend_constants. h" 7 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants. h"
8 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_test_util. h" 8 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_test_util. h"
9 #include "chrome/browser/sync_file_system/drive_backend/leveldb_wrapper.h"
9 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" 10 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
10 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" 11 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h"
11 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 #include "third_party/leveldatabase/src/helpers/memenv/memenv.h"
14 #include "third_party/leveldatabase/src/include/leveldb/db.h"
15 #include "third_party/leveldatabase/src/include/leveldb/env.h"
12 16
13 namespace sync_file_system { 17 namespace sync_file_system {
14 namespace drive_backend { 18 namespace drive_backend {
15 19
16 namespace { 20 namespace {
17 21
18 const int64 kSyncRootTrackerID = 1; 22 const int64 kSyncRootTrackerID = 1;
19 const int64 kAppRootTrackerID = 2; 23 const int64 kAppRootTrackerID = 2;
20 const int64 kFileTrackerID = 3; 24 const int64 kFileTrackerID = 3;
21 const int64 kPlaceholderTrackerID = 4; 25 const int64 kPlaceholderTrackerID = 4;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 contents->file_metadata.push_back(app_root_metadata.release()); 57 contents->file_metadata.push_back(app_root_metadata.release());
54 contents->file_trackers.push_back(app_root_tracker.release()); 58 contents->file_trackers.push_back(app_root_tracker.release());
55 contents->file_metadata.push_back(file_metadata.release()); 59 contents->file_metadata.push_back(file_metadata.release());
56 contents->file_trackers.push_back(file_tracker.release()); 60 contents->file_trackers.push_back(file_tracker.release());
57 contents->file_trackers.push_back(placeholder_tracker.release()); 61 contents->file_trackers.push_back(placeholder_tracker.release());
58 return contents.Pass(); 62 return contents.Pass();
59 } 63 }
60 64
61 } // namespace 65 } // namespace
62 66
63 TEST(MetadataDatabaseIndexTest, GetEntryTest) { 67 class MetadataDatabaseIndexTest : public testing::Test {
64 scoped_ptr<MetadataDatabaseIndex> index = 68 public:
65 MetadataDatabaseIndex::CreateForTesting( 69 virtual void SetUp() OVERRIDE {
66 CreateTestDatabaseContents().get()); 70 in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default()));
71 InitializeLevelDB();
67 72
73 contents_ = CreateTestDatabaseContents();
74 index_ = MetadataDatabaseIndex::CreateForTesting(contents_.get(),
75 db_.get());
76 }
77
78 MetadataDatabaseIndex* index() { return index_.get(); }
79
80 private:
81 void InitializeLevelDB() {
82 leveldb::DB* db = NULL;
83 leveldb::Options options;
84 options.create_if_missing = true;
85 options.max_open_files = 0; // Use minimum.
86 options.env = in_memory_env_.get();
87 leveldb::Status status = leveldb::DB::Open(options, "", &db);
88 ASSERT_TRUE(status.ok());
89
90 db_.reset(new LevelDBWrapper(make_scoped_ptr(db)));
91 }
92
93 scoped_ptr<DatabaseContents> contents_;
94 scoped_ptr<MetadataDatabaseIndex> index_;
95
96 scoped_ptr<leveldb::Env> in_memory_env_;
97 scoped_ptr<LevelDBWrapper> db_;
98 };
99
100 TEST_F(MetadataDatabaseIndexTest, GetEntryTest) {
68 FileTracker tracker; 101 FileTracker tracker;
69 EXPECT_FALSE(index->GetFileTracker(kInvalidTrackerID, NULL)); 102 EXPECT_FALSE(index()->GetFileTracker(kInvalidTrackerID, NULL));
70 ASSERT_TRUE(index->GetFileTracker(kFileTrackerID, &tracker)); 103 ASSERT_TRUE(index()->GetFileTracker(kFileTrackerID, &tracker));
71 EXPECT_EQ(kFileTrackerID, tracker.tracker_id()); 104 EXPECT_EQ(kFileTrackerID, tracker.tracker_id());
72 EXPECT_EQ("file_id", tracker.file_id()); 105 EXPECT_EQ("file_id", tracker.file_id());
73 106
74 FileMetadata metadata; 107 FileMetadata metadata;
75 EXPECT_FALSE(index->GetFileMetadata(std::string(), NULL)); 108 EXPECT_FALSE(index()->GetFileMetadata(std::string(), NULL));
76 ASSERT_TRUE(index->GetFileMetadata("file_id", &metadata)); 109 ASSERT_TRUE(index()->GetFileMetadata("file_id", &metadata));
77 EXPECT_EQ("file_id", metadata.file_id()); 110 EXPECT_EQ("file_id", metadata.file_id());
78 } 111 }
79 112
80 TEST(MetadataDatabaseIndexTest, IndexLookUpTest) { 113 TEST_F(MetadataDatabaseIndexTest, IndexLookUpTest) {
81 scoped_ptr<MetadataDatabaseIndex> index = 114 TrackerIDSet trackers = index()->GetFileTrackerIDsByFileID("file_id");
82 MetadataDatabaseIndex::CreateForTesting(
83 CreateTestDatabaseContents().get());
84
85 TrackerIDSet trackers = index->GetFileTrackerIDsByFileID("file_id");
86 EXPECT_EQ(1u, trackers.size()); 115 EXPECT_EQ(1u, trackers.size());
87 EXPECT_TRUE(trackers.has_active()); 116 EXPECT_TRUE(trackers.has_active());
88 EXPECT_EQ(kFileTrackerID, trackers.active_tracker()); 117 EXPECT_EQ(kFileTrackerID, trackers.active_tracker());
89 118
90 int64 app_root_tracker_id = index->GetAppRootTracker("app_id"); 119 int64 app_root_tracker_id = index()->GetAppRootTracker("app_id");
91 EXPECT_EQ(kAppRootTrackerID, app_root_tracker_id); 120 EXPECT_EQ(kAppRootTrackerID, app_root_tracker_id);
92 121
93 trackers = index->GetFileTrackerIDsByParentAndTitle( 122 trackers = index()->GetFileTrackerIDsByParentAndTitle(
94 app_root_tracker_id, "file"); 123 app_root_tracker_id, "file");
95 EXPECT_EQ(1u, trackers.size()); 124 EXPECT_EQ(1u, trackers.size());
96 EXPECT_TRUE(trackers.has_active()); 125 EXPECT_TRUE(trackers.has_active());
97 EXPECT_EQ(kFileTrackerID, trackers.active_tracker()); 126 EXPECT_EQ(kFileTrackerID, trackers.active_tracker());
98 127
99 EXPECT_TRUE(index->PickMultiTrackerFileID().empty()); 128 EXPECT_TRUE(index()->PickMultiTrackerFileID().empty());
100 EXPECT_EQ(kInvalidTrackerID, 129 EXPECT_EQ(kInvalidTrackerID,
101 index->PickMultiBackingFilePath().parent_id); 130 index()->PickMultiBackingFilePath().parent_id);
102 EXPECT_EQ(kPlaceholderTrackerID, index->PickDirtyTracker()); 131 EXPECT_EQ(kPlaceholderTrackerID, index()->PickDirtyTracker());
103 } 132 }
104 133
105 TEST(MetadataDatabaseIndexTest, UpdateTest) { 134 TEST_F(MetadataDatabaseIndexTest, UpdateTest) {
106 scoped_ptr<MetadataDatabaseIndex> index = 135 index()->DemoteDirtyTracker(kPlaceholderTrackerID);
107 MetadataDatabaseIndex::CreateForTesting( 136 EXPECT_EQ(kInvalidTrackerID, index()->PickDirtyTracker());
108 CreateTestDatabaseContents().get()); 137 index()->PromoteDemotedDirtyTrackers();
109 138 EXPECT_EQ(kPlaceholderTrackerID, index()->PickDirtyTracker());
110 index->DemoteDirtyTracker(kPlaceholderTrackerID);
111 EXPECT_EQ(kInvalidTrackerID, index->PickDirtyTracker());
112 index->PromoteDemotedDirtyTrackers();
113 EXPECT_EQ(kPlaceholderTrackerID, index->PickDirtyTracker());
114 139
115 FileMetadata metadata; 140 FileMetadata metadata;
116 ASSERT_TRUE(index->GetFileMetadata("file_id", &metadata)); 141 ASSERT_TRUE(index()->GetFileMetadata("file_id", &metadata));
117 FileTracker app_root_tracker; 142 FileTracker app_root_tracker;
118 ASSERT_TRUE(index->GetFileTracker(kAppRootTrackerID, &app_root_tracker)); 143 ASSERT_TRUE(index()->GetFileTracker(kAppRootTrackerID, &app_root_tracker));
119 144
120 int64 new_tracker_id = 100; 145 int64 new_tracker_id = 100;
121 scoped_ptr<FileTracker> new_tracker = 146 scoped_ptr<FileTracker> new_tracker =
122 test_util::CreateTracker(metadata, new_tracker_id, &app_root_tracker); 147 test_util::CreateTracker(metadata, new_tracker_id, &app_root_tracker);
123 new_tracker->set_active(false); 148 new_tracker->set_active(false);
124 index->StoreFileTracker(new_tracker.Pass()); 149 index()->StoreFileTracker(new_tracker.Pass());
125 150
126 EXPECT_EQ("file_id", index->PickMultiTrackerFileID()); 151 EXPECT_EQ("file_id", index()->PickMultiTrackerFileID());
127 EXPECT_EQ(ParentIDAndTitle(kAppRootTrackerID, std::string("file")), 152 EXPECT_EQ(ParentIDAndTitle(kAppRootTrackerID, std::string("file")),
128 index->PickMultiBackingFilePath()); 153 index()->PickMultiBackingFilePath());
129 154
130 index->RemoveFileMetadata("file_id"); 155 index()->RemoveFileMetadata("file_id");
131 index->RemoveFileTracker(kFileTrackerID); 156 index()->RemoveFileTracker(kFileTrackerID);
132 157
133 EXPECT_FALSE(index->GetFileMetadata("file_id", NULL)); 158 EXPECT_FALSE(index()->GetFileMetadata("file_id", NULL));
134 EXPECT_FALSE(index->GetFileTracker(kFileTrackerID, NULL)); 159 EXPECT_FALSE(index()->GetFileTracker(kFileTrackerID, NULL));
135 } 160 }
136 161
137 } // namespace drive_backend 162 } // namespace drive_backend
138 } // namespace sync_file_system 163 } // namespace sync_file_system
OLDNEW
« no previous file with comments | « chrome/browser/sync_file_system/drive_backend/metadata_database_index.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698