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

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: 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"
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() {
nhiroki 2014/08/07 06:34:26 Please mark this with OVERRIDE.
peria 2014/08/07 07:10:52 Done.
66 CreateTestDatabaseContents().get()); 71 ASSERT_TRUE(database_dir_.CreateUniqueTempDir());
nhiroki 2014/08/07 06:34:27 You don't have to make a temporary directory if yo
peria 2014/08/07 07:10:52 Done.
72 in_memory_env_.reset(leveldb::NewMemEnv(leveldb::Env::Default()));
73 InitializeLevelDB();
67 74
75 contents_ = CreateTestDatabaseContents();
76 index_ = MetadataDatabaseIndex::CreateForTesting(contents_.get(),
77 db_.get());
78 }
79
80 MetadataDatabaseIndex* index() { return index_.get(); }
81
82 private:
83 void InitializeLevelDB() {
84 leveldb::DB* db = NULL;
85 leveldb::Options options;
86 options.create_if_missing = true;
87 options.max_open_files = 0; // Use minimum.
88 options.env = in_memory_env_.get();
89 leveldb::Status status =
90 leveldb::DB::Open(options, database_dir_.path().AsUTF8Unsafe(), &db);
91 ASSERT_TRUE(status.ok());
92
93 db_.reset(new LevelDBWrapper(make_scoped_ptr(db)));
94 }
95
96 scoped_ptr<DatabaseContents> contents_;
97 scoped_ptr<MetadataDatabaseIndex> index_;
98
99 base::ScopedTempDir database_dir_;
100 scoped_ptr<leveldb::Env> in_memory_env_;
101 scoped_ptr<LevelDBWrapper> db_;
102 };
103
104 TEST_F(MetadataDatabaseIndexTest, GetEntryTest) {
68 FileTracker tracker; 105 FileTracker tracker;
69 EXPECT_FALSE(index->GetFileTracker(kInvalidTrackerID, NULL)); 106 EXPECT_FALSE(index()->GetFileTracker(kInvalidTrackerID, NULL));
70 ASSERT_TRUE(index->GetFileTracker(kFileTrackerID, &tracker)); 107 ASSERT_TRUE(index()->GetFileTracker(kFileTrackerID, &tracker));
71 EXPECT_EQ(kFileTrackerID, tracker.tracker_id()); 108 EXPECT_EQ(kFileTrackerID, tracker.tracker_id());
72 EXPECT_EQ("file_id", tracker.file_id()); 109 EXPECT_EQ("file_id", tracker.file_id());
73 110
74 FileMetadata metadata; 111 FileMetadata metadata;
75 EXPECT_FALSE(index->GetFileMetadata(std::string(), NULL)); 112 EXPECT_FALSE(index()->GetFileMetadata(std::string(), NULL));
76 ASSERT_TRUE(index->GetFileMetadata("file_id", &metadata)); 113 ASSERT_TRUE(index()->GetFileMetadata("file_id", &metadata));
77 EXPECT_EQ("file_id", metadata.file_id()); 114 EXPECT_EQ("file_id", metadata.file_id());
78 } 115 }
79 116
80 TEST(MetadataDatabaseIndexTest, IndexLookUpTest) { 117 TEST_F(MetadataDatabaseIndexTest, IndexLookUpTest) {
81 scoped_ptr<MetadataDatabaseIndex> index = 118 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()); 119 EXPECT_EQ(1u, trackers.size());
87 EXPECT_TRUE(trackers.has_active()); 120 EXPECT_TRUE(trackers.has_active());
88 EXPECT_EQ(kFileTrackerID, trackers.active_tracker()); 121 EXPECT_EQ(kFileTrackerID, trackers.active_tracker());
89 122
90 int64 app_root_tracker_id = index->GetAppRootTracker("app_id"); 123 int64 app_root_tracker_id = index()->GetAppRootTracker("app_id");
91 EXPECT_EQ(kAppRootTrackerID, app_root_tracker_id); 124 EXPECT_EQ(kAppRootTrackerID, app_root_tracker_id);
92 125
93 trackers = index->GetFileTrackerIDsByParentAndTitle( 126 trackers = index()->GetFileTrackerIDsByParentAndTitle(
94 app_root_tracker_id, "file"); 127 app_root_tracker_id, "file");
95 EXPECT_EQ(1u, trackers.size()); 128 EXPECT_EQ(1u, trackers.size());
96 EXPECT_TRUE(trackers.has_active()); 129 EXPECT_TRUE(trackers.has_active());
97 EXPECT_EQ(kFileTrackerID, trackers.active_tracker()); 130 EXPECT_EQ(kFileTrackerID, trackers.active_tracker());
98 131
99 EXPECT_TRUE(index->PickMultiTrackerFileID().empty()); 132 EXPECT_TRUE(index()->PickMultiTrackerFileID().empty());
100 EXPECT_EQ(kInvalidTrackerID, 133 EXPECT_EQ(kInvalidTrackerID,
101 index->PickMultiBackingFilePath().parent_id); 134 index()->PickMultiBackingFilePath().parent_id);
102 EXPECT_EQ(kPlaceholderTrackerID, index->PickDirtyTracker()); 135 EXPECT_EQ(kPlaceholderTrackerID, index()->PickDirtyTracker());
103 } 136 }
104 137
105 TEST(MetadataDatabaseIndexTest, UpdateTest) { 138 TEST_F(MetadataDatabaseIndexTest, UpdateTest) {
106 scoped_ptr<MetadataDatabaseIndex> index = 139 index()->DemoteDirtyTracker(kPlaceholderTrackerID);
107 MetadataDatabaseIndex::CreateForTesting( 140 EXPECT_EQ(kInvalidTrackerID, index()->PickDirtyTracker());
108 CreateTestDatabaseContents().get()); 141 index()->PromoteDemotedDirtyTrackers();
109 142 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 143
115 FileMetadata metadata; 144 FileMetadata metadata;
116 ASSERT_TRUE(index->GetFileMetadata("file_id", &metadata)); 145 ASSERT_TRUE(index()->GetFileMetadata("file_id", &metadata));
117 FileTracker app_root_tracker; 146 FileTracker app_root_tracker;
118 ASSERT_TRUE(index->GetFileTracker(kAppRootTrackerID, &app_root_tracker)); 147 ASSERT_TRUE(index()->GetFileTracker(kAppRootTrackerID, &app_root_tracker));
119 148
120 int64 new_tracker_id = 100; 149 int64 new_tracker_id = 100;
121 scoped_ptr<FileTracker> new_tracker = 150 scoped_ptr<FileTracker> new_tracker =
122 test_util::CreateTracker(metadata, new_tracker_id, &app_root_tracker); 151 test_util::CreateTracker(metadata, new_tracker_id, &app_root_tracker);
123 new_tracker->set_active(false); 152 new_tracker->set_active(false);
124 index->StoreFileTracker(new_tracker.Pass()); 153 index()->StoreFileTracker(new_tracker.Pass());
125 154
126 EXPECT_EQ("file_id", index->PickMultiTrackerFileID()); 155 EXPECT_EQ("file_id", index()->PickMultiTrackerFileID());
127 EXPECT_EQ(ParentIDAndTitle(kAppRootTrackerID, std::string("file")), 156 EXPECT_EQ(ParentIDAndTitle(kAppRootTrackerID, std::string("file")),
128 index->PickMultiBackingFilePath()); 157 index()->PickMultiBackingFilePath());
129 158
130 index->RemoveFileMetadata("file_id"); 159 index()->RemoveFileMetadata("file_id");
131 index->RemoveFileTracker(kFileTrackerID); 160 index()->RemoveFileTracker(kFileTrackerID);
132 161
133 EXPECT_FALSE(index->GetFileMetadata("file_id", NULL)); 162 EXPECT_FALSE(index()->GetFileMetadata("file_id", NULL));
134 EXPECT_FALSE(index->GetFileTracker(kFileTrackerID, NULL)); 163 EXPECT_FALSE(index()->GetFileTracker(kFileTrackerID, NULL));
135 } 164 }
136 165
137 } // namespace drive_backend 166 } // namespace drive_backend
138 } // namespace sync_file_system 167 } // 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