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

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 nits 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 "base/files/scoped_temp_dir.h"
nhiroki 2014/08/07 07:14:01 nit: This is no longer necessary.
peria 2014/08/07 07:19:33 Done.
5 #include "chrome/browser/sync_file_system/drive_backend/metadata_database_index. h" 6 #include "chrome/browser/sync_file_system/drive_backend/metadata_database_index. h"
6 7
7 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants. h" 8 #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" 9 #include "chrome/browser/sync_file_system/drive_backend/drive_backend_test_util. h"
10 #include "chrome/browser/sync_file_system/drive_backend/leveldb_wrapper.h"
9 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" 11 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
10 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h" 12 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.pb.h"
11 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 #include "third_party/leveldatabase/src/helpers/memenv/memenv.h"
15 #include "third_party/leveldatabase/src/include/leveldb/db.h"
16 #include "third_party/leveldatabase/src/include/leveldb/env.h"
12 17
13 namespace sync_file_system { 18 namespace sync_file_system {
14 namespace drive_backend { 19 namespace drive_backend {
15 20
16 namespace { 21 namespace {
17 22
18 const int64 kSyncRootTrackerID = 1; 23 const int64 kSyncRootTrackerID = 1;
19 const int64 kAppRootTrackerID = 2; 24 const int64 kAppRootTrackerID = 2;
20 const int64 kFileTrackerID = 3; 25 const int64 kFileTrackerID = 3;
21 const int64 kPlaceholderTrackerID = 4; 26 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()); 58 contents->file_metadata.push_back(app_root_metadata.release());
54 contents->file_trackers.push_back(app_root_tracker.release()); 59 contents->file_trackers.push_back(app_root_tracker.release());
55 contents->file_metadata.push_back(file_metadata.release()); 60 contents->file_metadata.push_back(file_metadata.release());
56 contents->file_trackers.push_back(file_tracker.release()); 61 contents->file_trackers.push_back(file_tracker.release());
57 contents->file_trackers.push_back(placeholder_tracker.release()); 62 contents->file_trackers.push_back(placeholder_tracker.release());
58 return contents.Pass(); 63 return contents.Pass();
59 } 64 }
60 65
61 } // namespace 66 } // namespace
62 67
63 TEST(MetadataDatabaseIndexTest, GetEntryTest) { 68 class MetadataDatabaseIndexTest : public testing::Test {
64 scoped_ptr<MetadataDatabaseIndex> index = 69 public:
65 MetadataDatabaseIndex::CreateForTesting( 70 virtual void SetUp() OVERRIDE {
66 CreateTestDatabaseContents().get()); 71 in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default()));
72 InitializeLevelDB();
67 73
74 contents_ = CreateTestDatabaseContents();
75 index_ = MetadataDatabaseIndex::CreateForTesting(contents_.get(),
76 db_.get());
77 }
78
79 MetadataDatabaseIndex* index() { return index_.get(); }
80
81 private:
82 void InitializeLevelDB() {
83 leveldb::DB* db = NULL;
84 leveldb::Options options;
85 options.create_if_missing = true;
86 options.max_open_files = 0; // Use minimum.
87 options.env = in_memory_env_.get();
88 leveldb::Status status = leveldb::DB::Open(options, "", &db);
89 ASSERT_TRUE(status.ok());
90
91 db_.reset(new LevelDBWrapper(make_scoped_ptr(db)));
92 }
93
94 scoped_ptr<DatabaseContents> contents_;
95 scoped_ptr<MetadataDatabaseIndex> index_;
96
97 scoped_ptr<leveldb::Env> in_memory_env_;
98 scoped_ptr<LevelDBWrapper> db_;
99 };
100
101 TEST_F(MetadataDatabaseIndexTest, GetEntryTest) {
68 FileTracker tracker; 102 FileTracker tracker;
69 EXPECT_FALSE(index->GetFileTracker(kInvalidTrackerID, NULL)); 103 EXPECT_FALSE(index()->GetFileTracker(kInvalidTrackerID, NULL));
70 ASSERT_TRUE(index->GetFileTracker(kFileTrackerID, &tracker)); 104 ASSERT_TRUE(index()->GetFileTracker(kFileTrackerID, &tracker));
71 EXPECT_EQ(kFileTrackerID, tracker.tracker_id()); 105 EXPECT_EQ(kFileTrackerID, tracker.tracker_id());
72 EXPECT_EQ("file_id", tracker.file_id()); 106 EXPECT_EQ("file_id", tracker.file_id());
73 107
74 FileMetadata metadata; 108 FileMetadata metadata;
75 EXPECT_FALSE(index->GetFileMetadata(std::string(), NULL)); 109 EXPECT_FALSE(index()->GetFileMetadata(std::string(), NULL));
76 ASSERT_TRUE(index->GetFileMetadata("file_id", &metadata)); 110 ASSERT_TRUE(index()->GetFileMetadata("file_id", &metadata));
77 EXPECT_EQ("file_id", metadata.file_id()); 111 EXPECT_EQ("file_id", metadata.file_id());
78 } 112 }
79 113
80 TEST(MetadataDatabaseIndexTest, IndexLookUpTest) { 114 TEST_F(MetadataDatabaseIndexTest, IndexLookUpTest) {
81 scoped_ptr<MetadataDatabaseIndex> index = 115 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()); 116 EXPECT_EQ(1u, trackers.size());
87 EXPECT_TRUE(trackers.has_active()); 117 EXPECT_TRUE(trackers.has_active());
88 EXPECT_EQ(kFileTrackerID, trackers.active_tracker()); 118 EXPECT_EQ(kFileTrackerID, trackers.active_tracker());
89 119
90 int64 app_root_tracker_id = index->GetAppRootTracker("app_id"); 120 int64 app_root_tracker_id = index()->GetAppRootTracker("app_id");
91 EXPECT_EQ(kAppRootTrackerID, app_root_tracker_id); 121 EXPECT_EQ(kAppRootTrackerID, app_root_tracker_id);
92 122
93 trackers = index->GetFileTrackerIDsByParentAndTitle( 123 trackers = index()->GetFileTrackerIDsByParentAndTitle(
94 app_root_tracker_id, "file"); 124 app_root_tracker_id, "file");
95 EXPECT_EQ(1u, trackers.size()); 125 EXPECT_EQ(1u, trackers.size());
96 EXPECT_TRUE(trackers.has_active()); 126 EXPECT_TRUE(trackers.has_active());
97 EXPECT_EQ(kFileTrackerID, trackers.active_tracker()); 127 EXPECT_EQ(kFileTrackerID, trackers.active_tracker());
98 128
99 EXPECT_TRUE(index->PickMultiTrackerFileID().empty()); 129 EXPECT_TRUE(index()->PickMultiTrackerFileID().empty());
100 EXPECT_EQ(kInvalidTrackerID, 130 EXPECT_EQ(kInvalidTrackerID,
101 index->PickMultiBackingFilePath().parent_id); 131 index()->PickMultiBackingFilePath().parent_id);
102 EXPECT_EQ(kPlaceholderTrackerID, index->PickDirtyTracker()); 132 EXPECT_EQ(kPlaceholderTrackerID, index()->PickDirtyTracker());
103 } 133 }
104 134
105 TEST(MetadataDatabaseIndexTest, UpdateTest) { 135 TEST_F(MetadataDatabaseIndexTest, UpdateTest) {
106 scoped_ptr<MetadataDatabaseIndex> index = 136 index()->DemoteDirtyTracker(kPlaceholderTrackerID);
107 MetadataDatabaseIndex::CreateForTesting( 137 EXPECT_EQ(kInvalidTrackerID, index()->PickDirtyTracker());
108 CreateTestDatabaseContents().get()); 138 index()->PromoteDemotedDirtyTrackers();
109 139 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 140
115 FileMetadata metadata; 141 FileMetadata metadata;
116 ASSERT_TRUE(index->GetFileMetadata("file_id", &metadata)); 142 ASSERT_TRUE(index()->GetFileMetadata("file_id", &metadata));
117 FileTracker app_root_tracker; 143 FileTracker app_root_tracker;
118 ASSERT_TRUE(index->GetFileTracker(kAppRootTrackerID, &app_root_tracker)); 144 ASSERT_TRUE(index()->GetFileTracker(kAppRootTrackerID, &app_root_tracker));
119 145
120 int64 new_tracker_id = 100; 146 int64 new_tracker_id = 100;
121 scoped_ptr<FileTracker> new_tracker = 147 scoped_ptr<FileTracker> new_tracker =
122 test_util::CreateTracker(metadata, new_tracker_id, &app_root_tracker); 148 test_util::CreateTracker(metadata, new_tracker_id, &app_root_tracker);
123 new_tracker->set_active(false); 149 new_tracker->set_active(false);
124 index->StoreFileTracker(new_tracker.Pass()); 150 index()->StoreFileTracker(new_tracker.Pass());
125 151
126 EXPECT_EQ("file_id", index->PickMultiTrackerFileID()); 152 EXPECT_EQ("file_id", index()->PickMultiTrackerFileID());
127 EXPECT_EQ(ParentIDAndTitle(kAppRootTrackerID, std::string("file")), 153 EXPECT_EQ(ParentIDAndTitle(kAppRootTrackerID, std::string("file")),
128 index->PickMultiBackingFilePath()); 154 index()->PickMultiBackingFilePath());
129 155
130 index->RemoveFileMetadata("file_id"); 156 index()->RemoveFileMetadata("file_id");
131 index->RemoveFileTracker(kFileTrackerID); 157 index()->RemoveFileTracker(kFileTrackerID);
132 158
133 EXPECT_FALSE(index->GetFileMetadata("file_id", NULL)); 159 EXPECT_FALSE(index()->GetFileMetadata("file_id", NULL));
134 EXPECT_FALSE(index->GetFileTracker(kFileTrackerID, NULL)); 160 EXPECT_FALSE(index()->GetFileTracker(kFileTrackerID, NULL));
135 } 161 }
136 162
137 } // namespace drive_backend 163 } // namespace drive_backend
138 } // namespace sync_file_system 164 } // 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