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

Side by Side Diff: components/leveldb/leveldb_apptest.cc

Issue 1718123004: mojo filesystem: Further clean ups. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: jam comments Created 4 years, 10 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
« no previous file with comments | « components/filesystem/public/interfaces/file_system.mojom ('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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/macros.h" 5 #include "base/macros.h"
6 #include "components/filesystem/public/interfaces/directory.mojom.h" 6 #include "components/filesystem/public/interfaces/directory.mojom.h"
7 #include "components/filesystem/public/interfaces/file_system.mojom.h" 7 #include "components/filesystem/public/interfaces/file_system.mojom.h"
8 #include "components/filesystem/public/interfaces/types.mojom.h" 8 #include "components/filesystem/public/interfaces/types.mojom.h"
9 #include "components/leveldb/public/interfaces/leveldb.mojom.h" 9 #include "components/leveldb/public/interfaces/leveldb.mojom.h"
10 #include "mojo/common/common_type_converters.h" 10 #include "mojo/common/common_type_converters.h"
11 #include "mojo/public/cpp/bindings/weak_binding_set.h" 11 #include "mojo/public/cpp/bindings/weak_binding_set.h"
12 #include "mojo/shell/public/cpp/application_test_base.h" 12 #include "mojo/shell/public/cpp/application_test_base.h"
13 #include "mojo/shell/public/cpp/shell_connection.h" 13 #include "mojo/shell/public/cpp/shell_connection.h"
14 #include "mojo/util/capture_util.h" 14 #include "mojo/util/capture_util.h"
15 15
16 using filesystem::FileError; 16 using filesystem::FileError;
17 using mojo::Capture; 17 using mojo::Capture;
18 18
19 namespace leveldb { 19 namespace leveldb {
20 namespace { 20 namespace {
21 21
22 class LevelDBApptest : public mojo::test::ApplicationTestBase, 22 class LevelDBApptest : public mojo::test::ApplicationTestBase {
23 public filesystem::FileSystemClient {
24 public: 23 public:
25 LevelDBApptest() {} 24 LevelDBApptest() {}
26 ~LevelDBApptest() override {} 25 ~LevelDBApptest() override {}
27 26
28 protected: 27 protected:
29 // Overridden from mojo::test::ApplicationTestBase: 28 // Overridden from mojo::test::ApplicationTestBase:
30 void SetUp() override { 29 void SetUp() override {
31 ApplicationTestBase::SetUp(); 30 ApplicationTestBase::SetUp();
32 shell()->ConnectToInterface("mojo:filesystem", &files_); 31 shell()->ConnectToInterface("mojo:filesystem", &files_);
33 shell()->ConnectToInterface("mojo:leveldb", &leveldb_); 32 shell()->ConnectToInterface("mojo:leveldb", &leveldb_);
34 } 33 }
35 34
36 // Overridden from FileSystemClient:
37 void OnFileSystemShutdown() override {}
38
39 // Note: This has an out parameter rather than returning the |DirectoryPtr|, 35 // Note: This has an out parameter rather than returning the |DirectoryPtr|,
40 // since |ASSERT_...()| doesn't work with return values. 36 // since |ASSERT_...()| doesn't work with return values.
41 void GetOriginRoot(filesystem::DirectoryPtr* directory) { 37 void GetUserDataDir(filesystem::DirectoryPtr* directory) {
42 FileError error = FileError::FAILED; 38 FileError error = FileError::FAILED;
43 files()->OpenFileSystem("origin", GetProxy(directory), 39 files()->OpenPersistentFileSystem(GetProxy(directory),
44 bindings_.CreateInterfacePtrAndBind(this), 40 mojo::Capture(&error));
45 mojo::Capture(&error));
46 ASSERT_TRUE(files().WaitForIncomingResponse()); 41 ASSERT_TRUE(files().WaitForIncomingResponse());
47 ASSERT_EQ(FileError::OK, error); 42 ASSERT_EQ(FileError::OK, error);
48 } 43 }
49 44
50 filesystem::FileSystemPtr& files() { return files_; } 45 filesystem::FileSystemPtr& files() { return files_; }
51 LevelDBServicePtr& leveldb() { return leveldb_; } 46 LevelDBServicePtr& leveldb() { return leveldb_; }
52 47
53 private: 48 private:
54 mojo::WeakBindingSet<filesystem::FileSystemClient> bindings_;
55
56 filesystem::FileSystemPtr files_; 49 filesystem::FileSystemPtr files_;
57 LevelDBServicePtr leveldb_; 50 LevelDBServicePtr leveldb_;
58 51
59 DISALLOW_COPY_AND_ASSIGN(LevelDBApptest); 52 DISALLOW_COPY_AND_ASSIGN(LevelDBApptest);
60 }; 53 };
61 54
62 TEST_F(LevelDBApptest, Basic) { 55 TEST_F(LevelDBApptest, Basic) {
63 filesystem::DirectoryPtr directory; 56 filesystem::DirectoryPtr directory;
64 GetOriginRoot(&directory); 57 GetUserDataDir(&directory);
65 58
66 DatabaseError error; 59 DatabaseError error;
67 LevelDBDatabasePtr database; 60 LevelDBDatabasePtr database;
68 leveldb()->Open(std::move(directory), "test", GetProxy(&database), 61 leveldb()->Open(std::move(directory), "test", GetProxy(&database),
69 Capture(&error)); 62 Capture(&error));
70 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); 63 ASSERT_TRUE(leveldb().WaitForIncomingResponse());
71 EXPECT_EQ(DatabaseError::OK, error); 64 EXPECT_EQ(DatabaseError::OK, error);
72 65
73 // Write a key to the database. 66 // Write a key to the database.
74 error = DatabaseError::INVALID_ARGUMENT; 67 error = DatabaseError::INVALID_ARGUMENT;
(...skipping 24 matching lines...) Expand all
99 value.SetToEmpty(); 92 value.SetToEmpty();
100 database->Get(mojo::Array<uint8_t>::From(std::string("key")), 93 database->Get(mojo::Array<uint8_t>::From(std::string("key")),
101 Capture(&error, &value)); 94 Capture(&error, &value));
102 ASSERT_TRUE(database.WaitForIncomingResponse()); 95 ASSERT_TRUE(database.WaitForIncomingResponse());
103 EXPECT_EQ(DatabaseError::NOT_FOUND, error); 96 EXPECT_EQ(DatabaseError::NOT_FOUND, error);
104 EXPECT_EQ("", value.To<std::string>()); 97 EXPECT_EQ("", value.To<std::string>());
105 } 98 }
106 99
107 TEST_F(LevelDBApptest, WriteBatch) { 100 TEST_F(LevelDBApptest, WriteBatch) {
108 filesystem::DirectoryPtr directory; 101 filesystem::DirectoryPtr directory;
109 GetOriginRoot(&directory); 102 GetUserDataDir(&directory);
110 103
111 DatabaseError error; 104 DatabaseError error;
112 LevelDBDatabasePtr database; 105 LevelDBDatabasePtr database;
113 leveldb()->Open(std::move(directory), "test", GetProxy(&database), 106 leveldb()->Open(std::move(directory), "test", GetProxy(&database),
114 Capture(&error)); 107 Capture(&error));
115 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); 108 ASSERT_TRUE(leveldb().WaitForIncomingResponse());
116 EXPECT_EQ(DatabaseError::OK, error); 109 EXPECT_EQ(DatabaseError::OK, error);
117 110
118 // Write a key to the database. 111 // Write a key to the database.
119 database->Put(mojo::Array<uint8_t>::From(std::string("key")), 112 database->Put(mojo::Array<uint8_t>::From(std::string("key")),
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 ASSERT_TRUE(database.WaitForIncomingResponse()); 148 ASSERT_TRUE(database.WaitForIncomingResponse());
156 EXPECT_EQ(DatabaseError::OK, error); 149 EXPECT_EQ(DatabaseError::OK, error);
157 EXPECT_EQ("more", value.To<std::string>()); 150 EXPECT_EQ("more", value.To<std::string>());
158 } 151 }
159 152
160 TEST_F(LevelDBApptest, Reconnect) { 153 TEST_F(LevelDBApptest, Reconnect) {
161 DatabaseError error; 154 DatabaseError error;
162 155
163 { 156 {
164 filesystem::DirectoryPtr directory; 157 filesystem::DirectoryPtr directory;
165 GetOriginRoot(&directory); 158 GetUserDataDir(&directory);
166 159
167 LevelDBDatabasePtr database; 160 LevelDBDatabasePtr database;
168 leveldb()->Open(std::move(directory), "test", GetProxy(&database), 161 leveldb()->Open(std::move(directory), "test", GetProxy(&database),
169 Capture(&error)); 162 Capture(&error));
170 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); 163 ASSERT_TRUE(leveldb().WaitForIncomingResponse());
171 EXPECT_EQ(DatabaseError::OK, error); 164 EXPECT_EQ(DatabaseError::OK, error);
172 165
173 // Write a key to the database. 166 // Write a key to the database.
174 error = DatabaseError::INVALID_ARGUMENT; 167 error = DatabaseError::INVALID_ARGUMENT;
175 database->Put(mojo::Array<uint8_t>::From(std::string("key")), 168 database->Put(mojo::Array<uint8_t>::From(std::string("key")),
176 mojo::Array<uint8_t>::From(std::string("value")), 169 mojo::Array<uint8_t>::From(std::string("value")),
177 Capture(&error)); 170 Capture(&error));
178 ASSERT_TRUE(database.WaitForIncomingResponse()); 171 ASSERT_TRUE(database.WaitForIncomingResponse());
179 EXPECT_EQ(DatabaseError::OK, error); 172 EXPECT_EQ(DatabaseError::OK, error);
180 173
181 // The database should go out of scope here. 174 // The database should go out of scope here.
182 } 175 }
183 176
184 { 177 {
185 filesystem::DirectoryPtr directory; 178 filesystem::DirectoryPtr directory;
186 GetOriginRoot(&directory); 179 GetUserDataDir(&directory);
187 180
188 // Reconnect to the database. 181 // Reconnect to the database.
189 LevelDBDatabasePtr database; 182 LevelDBDatabasePtr database;
190 leveldb()->Open(std::move(directory), "test", GetProxy(&database), 183 leveldb()->Open(std::move(directory), "test", GetProxy(&database),
191 Capture(&error)); 184 Capture(&error));
192 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); 185 ASSERT_TRUE(leveldb().WaitForIncomingResponse());
193 EXPECT_EQ(DatabaseError::OK, error); 186 EXPECT_EQ(DatabaseError::OK, error);
194 187
195 // We should still be able to read the key back from the database. 188 // We should still be able to read the key back from the database.
196 error = DatabaseError::INVALID_ARGUMENT; 189 error = DatabaseError::INVALID_ARGUMENT;
197 mojo::Array<uint8_t> value; 190 mojo::Array<uint8_t> value;
198 database->Get(mojo::Array<uint8_t>::From(std::string("key")), 191 database->Get(mojo::Array<uint8_t>::From(std::string("key")),
199 Capture(&error, &value)); 192 Capture(&error, &value));
200 ASSERT_TRUE(database.WaitForIncomingResponse()); 193 ASSERT_TRUE(database.WaitForIncomingResponse());
201 EXPECT_EQ(DatabaseError::OK, error); 194 EXPECT_EQ(DatabaseError::OK, error);
202 EXPECT_EQ("value", value.To<std::string>()); 195 EXPECT_EQ("value", value.To<std::string>());
203 } 196 }
204 } 197 }
205 198
206 TEST_F(LevelDBApptest, GetSnapshotSimple) { 199 TEST_F(LevelDBApptest, GetSnapshotSimple) {
207 DatabaseError error; 200 DatabaseError error;
208 201
209 filesystem::DirectoryPtr directory; 202 filesystem::DirectoryPtr directory;
210 GetOriginRoot(&directory); 203 GetUserDataDir(&directory);
211 204
212 LevelDBDatabasePtr database; 205 LevelDBDatabasePtr database;
213 leveldb()->Open(std::move(directory), "test", GetProxy(&database), 206 leveldb()->Open(std::move(directory), "test", GetProxy(&database),
214 Capture(&error)); 207 Capture(&error));
215 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); 208 ASSERT_TRUE(leveldb().WaitForIncomingResponse());
216 EXPECT_EQ(DatabaseError::OK, error); 209 EXPECT_EQ(DatabaseError::OK, error);
217 210
218 uint64_t snapshot_id = 0; 211 uint64_t snapshot_id = 0;
219 database->GetSnapshot(Capture(&snapshot_id)); 212 database->GetSnapshot(Capture(&snapshot_id));
220 ASSERT_TRUE(database.WaitForIncomingResponse()); 213 ASSERT_TRUE(database.WaitForIncomingResponse());
221 EXPECT_NE(static_cast<uint64_t>(0), snapshot_id); 214 EXPECT_NE(static_cast<uint64_t>(0), snapshot_id);
222 } 215 }
223 216
224 TEST_F(LevelDBApptest, GetFromSnapshots) { 217 TEST_F(LevelDBApptest, GetFromSnapshots) {
225 DatabaseError error; 218 DatabaseError error;
226 219
227 filesystem::DirectoryPtr directory; 220 filesystem::DirectoryPtr directory;
228 GetOriginRoot(&directory); 221 GetUserDataDir(&directory);
229 222
230 LevelDBDatabasePtr database; 223 LevelDBDatabasePtr database;
231 leveldb()->Open(std::move(directory), "test", GetProxy(&database), 224 leveldb()->Open(std::move(directory), "test", GetProxy(&database),
232 Capture(&error)); 225 Capture(&error));
233 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); 226 ASSERT_TRUE(leveldb().WaitForIncomingResponse());
234 EXPECT_EQ(DatabaseError::OK, error); 227 EXPECT_EQ(DatabaseError::OK, error);
235 228
236 // Write a key to the database. 229 // Write a key to the database.
237 error = DatabaseError::INVALID_ARGUMENT; 230 error = DatabaseError::INVALID_ARGUMENT;
238 database->Put(mojo::Array<uint8_t>::From(std::string("key")), 231 database->Put(mojo::Array<uint8_t>::From(std::string("key")),
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 key_value_snapshot, 263 key_value_snapshot,
271 mojo::Array<uint8_t>::From(std::string("key")), 264 mojo::Array<uint8_t>::From(std::string("key")),
272 Capture(&error, &value)); 265 Capture(&error, &value));
273 ASSERT_TRUE(database.WaitForIncomingResponse()); 266 ASSERT_TRUE(database.WaitForIncomingResponse());
274 EXPECT_EQ(DatabaseError::OK, error); 267 EXPECT_EQ(DatabaseError::OK, error);
275 EXPECT_EQ("value", value.To<std::string>()); 268 EXPECT_EQ("value", value.To<std::string>());
276 } 269 }
277 270
278 TEST_F(LevelDBApptest, InvalidArgumentOnInvalidSnapshot) { 271 TEST_F(LevelDBApptest, InvalidArgumentOnInvalidSnapshot) {
279 filesystem::DirectoryPtr directory; 272 filesystem::DirectoryPtr directory;
280 GetOriginRoot(&directory); 273 GetUserDataDir(&directory);
281 274
282 LevelDBDatabasePtr database; 275 LevelDBDatabasePtr database;
283 DatabaseError error = DatabaseError::INVALID_ARGUMENT; 276 DatabaseError error = DatabaseError::INVALID_ARGUMENT;
284 leveldb()->Open(std::move(directory), "test", GetProxy(&database), 277 leveldb()->Open(std::move(directory), "test", GetProxy(&database),
285 Capture(&error)); 278 Capture(&error));
286 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); 279 ASSERT_TRUE(leveldb().WaitForIncomingResponse());
287 EXPECT_EQ(DatabaseError::OK, error); 280 EXPECT_EQ(DatabaseError::OK, error);
288 281
289 uint64_t invalid_snapshot = 8; 282 uint64_t invalid_snapshot = 8;
290 283
291 error = DatabaseError::OK; 284 error = DatabaseError::OK;
292 mojo::Array<uint8_t> value; 285 mojo::Array<uint8_t> value;
293 database->GetFromSnapshot( 286 database->GetFromSnapshot(
294 invalid_snapshot, 287 invalid_snapshot,
295 mojo::Array<uint8_t>::From(std::string("key")), 288 mojo::Array<uint8_t>::From(std::string("key")),
296 Capture(&error, &value)); 289 Capture(&error, &value));
297 ASSERT_TRUE(database.WaitForIncomingResponse()); 290 ASSERT_TRUE(database.WaitForIncomingResponse());
298 EXPECT_EQ(DatabaseError::INVALID_ARGUMENT, error); 291 EXPECT_EQ(DatabaseError::INVALID_ARGUMENT, error);
299 } 292 }
300 293
301 } // namespace 294 } // namespace
302 } // namespace leveldb 295 } // namespace leveldb
OLDNEW
« no previous file with comments | « components/filesystem/public/interfaces/file_system.mojom ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698