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

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

Issue 1861903002: mojo leveldb: Add an iteration interface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase + comments Created 4 years, 8 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/leveldb/leveldb_service_impl.cc ('k') | components/leveldb/public/cpp/BUILD.gn » ('j') | 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/binding_set.h" 11 #include "mojo/public/cpp/bindings/binding_set.h"
12 #include "mojo/shell/public/cpp/shell_connection.h" 12 #include "mojo/shell/public/cpp/shell_connection.h"
13 #include "mojo/shell/public/cpp/shell_test.h" 13 #include "mojo/shell/public/cpp/shell_test.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::ShellTest { 22 class LevelDBServiceTest : public mojo::test::ShellTest {
23 public: 23 public:
24 LevelDBApptest() : ShellTest("exe:leveldb_service_unittests") {} 24 LevelDBServiceTest() : ShellTest("exe:leveldb_service_unittests") {}
25 ~LevelDBApptest() override {} 25 ~LevelDBServiceTest() override {}
26 26
27 protected: 27 protected:
28 // Overridden from mojo::test::ApplicationTestBase: 28 // Overridden from mojo::test::ApplicationTestBase:
29 void SetUp() override { 29 void SetUp() override {
30 ShellTest::SetUp(); 30 ShellTest::SetUp();
31 connector()->ConnectToInterface("mojo:filesystem", &files_); 31 connector()->ConnectToInterface("mojo:filesystem", &files_);
32 connector()->ConnectToInterface("mojo:leveldb", &leveldb_); 32 connector()->ConnectToInterface("mojo:leveldb", &leveldb_);
33 } 33 }
34 34
35 void TearDown() override { 35 void TearDown() override {
(...skipping 12 matching lines...) Expand all
48 ASSERT_EQ(FileError::OK, error); 48 ASSERT_EQ(FileError::OK, error);
49 } 49 }
50 50
51 filesystem::FileSystemPtr& files() { return files_; } 51 filesystem::FileSystemPtr& files() { return files_; }
52 LevelDBServicePtr& leveldb() { return leveldb_; } 52 LevelDBServicePtr& leveldb() { return leveldb_; }
53 53
54 private: 54 private:
55 filesystem::FileSystemPtr files_; 55 filesystem::FileSystemPtr files_;
56 LevelDBServicePtr leveldb_; 56 LevelDBServicePtr leveldb_;
57 57
58 DISALLOW_COPY_AND_ASSIGN(LevelDBApptest); 58 DISALLOW_COPY_AND_ASSIGN(LevelDBServiceTest);
59 }; 59 };
60 60
61 TEST_F(LevelDBApptest, Basic) { 61 TEST_F(LevelDBServiceTest, Basic) {
62 filesystem::DirectoryPtr directory; 62 filesystem::DirectoryPtr directory;
63 GetUserDataDir(&directory); 63 GetUserDataDir(&directory);
64 64
65 DatabaseError error; 65 DatabaseError error;
66 LevelDBDatabasePtr database; 66 LevelDBDatabasePtr database;
67 leveldb()->Open(std::move(directory), "test", GetProxy(&database), 67 leveldb()->Open(std::move(directory), "test", GetProxy(&database),
68 Capture(&error)); 68 Capture(&error));
69 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); 69 ASSERT_TRUE(leveldb().WaitForIncomingResponse());
70 EXPECT_EQ(DatabaseError::OK, error); 70 EXPECT_EQ(DatabaseError::OK, error);
71 71
(...skipping 24 matching lines...) Expand all
96 // Read the key back from the database. 96 // Read the key back from the database.
97 error = DatabaseError::INVALID_ARGUMENT; 97 error = DatabaseError::INVALID_ARGUMENT;
98 value.SetToEmpty(); 98 value.SetToEmpty();
99 database->Get(mojo::Array<uint8_t>::From(std::string("key")), 99 database->Get(mojo::Array<uint8_t>::From(std::string("key")),
100 Capture(&error, &value)); 100 Capture(&error, &value));
101 ASSERT_TRUE(database.WaitForIncomingResponse()); 101 ASSERT_TRUE(database.WaitForIncomingResponse());
102 EXPECT_EQ(DatabaseError::NOT_FOUND, error); 102 EXPECT_EQ(DatabaseError::NOT_FOUND, error);
103 EXPECT_EQ("", value.To<std::string>()); 103 EXPECT_EQ("", value.To<std::string>());
104 } 104 }
105 105
106 TEST_F(LevelDBApptest, WriteBatch) { 106 TEST_F(LevelDBServiceTest, WriteBatch) {
107 filesystem::DirectoryPtr directory; 107 filesystem::DirectoryPtr directory;
108 GetUserDataDir(&directory); 108 GetUserDataDir(&directory);
109 109
110 DatabaseError error; 110 DatabaseError error;
111 LevelDBDatabasePtr database; 111 LevelDBDatabasePtr database;
112 leveldb()->Open(std::move(directory), "test", GetProxy(&database), 112 leveldb()->Open(std::move(directory), "test", GetProxy(&database),
113 Capture(&error)); 113 Capture(&error));
114 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); 114 ASSERT_TRUE(leveldb().WaitForIncomingResponse());
115 EXPECT_EQ(DatabaseError::OK, error); 115 EXPECT_EQ(DatabaseError::OK, error);
116 116
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 149
150 // Reading "other" should return "more" 150 // Reading "other" should return "more"
151 error = DatabaseError::INVALID_ARGUMENT; 151 error = DatabaseError::INVALID_ARGUMENT;
152 database->Get(mojo::Array<uint8_t>::From(std::string("other")), 152 database->Get(mojo::Array<uint8_t>::From(std::string("other")),
153 Capture(&error, &value)); 153 Capture(&error, &value));
154 ASSERT_TRUE(database.WaitForIncomingResponse()); 154 ASSERT_TRUE(database.WaitForIncomingResponse());
155 EXPECT_EQ(DatabaseError::OK, error); 155 EXPECT_EQ(DatabaseError::OK, error);
156 EXPECT_EQ("more", value.To<std::string>()); 156 EXPECT_EQ("more", value.To<std::string>());
157 } 157 }
158 158
159 TEST_F(LevelDBApptest, Reconnect) { 159 TEST_F(LevelDBServiceTest, Reconnect) {
160 DatabaseError error; 160 DatabaseError error;
161 161
162 { 162 {
163 filesystem::DirectoryPtr directory; 163 filesystem::DirectoryPtr directory;
164 GetUserDataDir(&directory); 164 GetUserDataDir(&directory);
165 165
166 LevelDBDatabasePtr database; 166 LevelDBDatabasePtr database;
167 leveldb()->Open(std::move(directory), "test", GetProxy(&database), 167 leveldb()->Open(std::move(directory), "test", GetProxy(&database),
168 Capture(&error)); 168 Capture(&error));
169 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); 169 ASSERT_TRUE(leveldb().WaitForIncomingResponse());
(...skipping 25 matching lines...) Expand all
195 error = DatabaseError::INVALID_ARGUMENT; 195 error = DatabaseError::INVALID_ARGUMENT;
196 mojo::Array<uint8_t> value; 196 mojo::Array<uint8_t> value;
197 database->Get(mojo::Array<uint8_t>::From(std::string("key")), 197 database->Get(mojo::Array<uint8_t>::From(std::string("key")),
198 Capture(&error, &value)); 198 Capture(&error, &value));
199 ASSERT_TRUE(database.WaitForIncomingResponse()); 199 ASSERT_TRUE(database.WaitForIncomingResponse());
200 EXPECT_EQ(DatabaseError::OK, error); 200 EXPECT_EQ(DatabaseError::OK, error);
201 EXPECT_EQ("value", value.To<std::string>()); 201 EXPECT_EQ("value", value.To<std::string>());
202 } 202 }
203 } 203 }
204 204
205 TEST_F(LevelDBApptest, GetSnapshotSimple) { 205 TEST_F(LevelDBServiceTest, GetSnapshotSimple) {
206 DatabaseError error; 206 DatabaseError error;
207 207
208 filesystem::DirectoryPtr directory; 208 filesystem::DirectoryPtr directory;
209 GetUserDataDir(&directory); 209 GetUserDataDir(&directory);
210 210
211 LevelDBDatabasePtr database; 211 LevelDBDatabasePtr database;
212 leveldb()->Open(std::move(directory), "test", GetProxy(&database), 212 leveldb()->Open(std::move(directory), "test", GetProxy(&database),
213 Capture(&error)); 213 Capture(&error));
214 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); 214 ASSERT_TRUE(leveldb().WaitForIncomingResponse());
215 EXPECT_EQ(DatabaseError::OK, error); 215 EXPECT_EQ(DatabaseError::OK, error);
216 216
217 uint64_t snapshot_id = 0; 217 uint64_t snapshot_id = 0;
218 database->GetSnapshot(Capture(&snapshot_id)); 218 database->GetSnapshot(Capture(&snapshot_id));
219 ASSERT_TRUE(database.WaitForIncomingResponse()); 219 ASSERT_TRUE(database.WaitForIncomingResponse());
220 EXPECT_NE(static_cast<uint64_t>(0), snapshot_id); 220 EXPECT_NE(static_cast<uint64_t>(0), snapshot_id);
221 } 221 }
222 222
223 TEST_F(LevelDBApptest, GetFromSnapshots) { 223 TEST_F(LevelDBServiceTest, GetFromSnapshots) {
224 DatabaseError error; 224 DatabaseError error;
225 225
226 filesystem::DirectoryPtr directory; 226 filesystem::DirectoryPtr directory;
227 GetUserDataDir(&directory); 227 GetUserDataDir(&directory);
228 228
229 LevelDBDatabasePtr database; 229 LevelDBDatabasePtr database;
230 leveldb()->Open(std::move(directory), "test", GetProxy(&database), 230 leveldb()->Open(std::move(directory), "test", GetProxy(&database),
231 Capture(&error)); 231 Capture(&error));
232 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); 232 ASSERT_TRUE(leveldb().WaitForIncomingResponse());
233 EXPECT_EQ(DatabaseError::OK, error); 233 EXPECT_EQ(DatabaseError::OK, error);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 value.SetToEmpty(); 267 value.SetToEmpty();
268 database->GetFromSnapshot( 268 database->GetFromSnapshot(
269 key_value_snapshot, 269 key_value_snapshot,
270 mojo::Array<uint8_t>::From(std::string("key")), 270 mojo::Array<uint8_t>::From(std::string("key")),
271 Capture(&error, &value)); 271 Capture(&error, &value));
272 ASSERT_TRUE(database.WaitForIncomingResponse()); 272 ASSERT_TRUE(database.WaitForIncomingResponse());
273 EXPECT_EQ(DatabaseError::OK, error); 273 EXPECT_EQ(DatabaseError::OK, error);
274 EXPECT_EQ("value", value.To<std::string>()); 274 EXPECT_EQ("value", value.To<std::string>());
275 } 275 }
276 276
277 TEST_F(LevelDBApptest, InvalidArgumentOnInvalidSnapshot) { 277 TEST_F(LevelDBServiceTest, InvalidArgumentOnInvalidSnapshot) {
278 filesystem::DirectoryPtr directory; 278 filesystem::DirectoryPtr directory;
279 GetUserDataDir(&directory); 279 GetUserDataDir(&directory);
280 280
281 LevelDBDatabasePtr database; 281 LevelDBDatabasePtr database;
282 DatabaseError error = DatabaseError::INVALID_ARGUMENT; 282 DatabaseError error = DatabaseError::INVALID_ARGUMENT;
283 leveldb()->Open(std::move(directory), "test", GetProxy(&database), 283 leveldb()->Open(std::move(directory), "test", GetProxy(&database),
284 Capture(&error)); 284 Capture(&error));
285 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); 285 ASSERT_TRUE(leveldb().WaitForIncomingResponse());
286 EXPECT_EQ(DatabaseError::OK, error); 286 EXPECT_EQ(DatabaseError::OK, error);
287 287
288 uint64_t invalid_snapshot = 8; 288 uint64_t invalid_snapshot = 8;
289 289
290 error = DatabaseError::OK; 290 error = DatabaseError::OK;
291 mojo::Array<uint8_t> value; 291 mojo::Array<uint8_t> value;
292 database->GetFromSnapshot( 292 database->GetFromSnapshot(
293 invalid_snapshot, 293 invalid_snapshot,
294 mojo::Array<uint8_t>::From(std::string("key")), 294 mojo::Array<uint8_t>::From(std::string("key")),
295 Capture(&error, &value)); 295 Capture(&error, &value));
296 ASSERT_TRUE(database.WaitForIncomingResponse()); 296 ASSERT_TRUE(database.WaitForIncomingResponse());
297 EXPECT_EQ(DatabaseError::INVALID_ARGUMENT, error); 297 EXPECT_EQ(DatabaseError::INVALID_ARGUMENT, error);
298 } 298 }
299 299
300 TEST_F(LevelDBApptest, MemoryDBReadWrite) { 300 TEST_F(LevelDBServiceTest, MemoryDBReadWrite) {
301 LevelDBDatabasePtr database; 301 LevelDBDatabasePtr database;
302 DatabaseError error = DatabaseError::INVALID_ARGUMENT; 302 DatabaseError error = DatabaseError::INVALID_ARGUMENT;
303 leveldb()->OpenInMemory(GetProxy(&database), Capture(&error)); 303 leveldb()->OpenInMemory(GetProxy(&database), Capture(&error));
304 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); 304 ASSERT_TRUE(leveldb().WaitForIncomingResponse());
305 EXPECT_EQ(DatabaseError::OK, error); 305 EXPECT_EQ(DatabaseError::OK, error);
306 306
307 // Write a key to the database. 307 // Write a key to the database.
308 error = DatabaseError::INVALID_ARGUMENT; 308 error = DatabaseError::INVALID_ARGUMENT;
309 database->Put(mojo::Array<uint8_t>::From(std::string("key")), 309 database->Put(mojo::Array<uint8_t>::From(std::string("key")),
310 mojo::Array<uint8_t>::From(std::string("value")), 310 mojo::Array<uint8_t>::From(std::string("value")),
(...skipping 23 matching lines...) Expand all
334 database->Get(mojo::Array<uint8_t>::From(std::string("key")), 334 database->Get(mojo::Array<uint8_t>::From(std::string("key")),
335 Capture(&error, &value)); 335 Capture(&error, &value));
336 ASSERT_TRUE(database.WaitForIncomingResponse()); 336 ASSERT_TRUE(database.WaitForIncomingResponse());
337 EXPECT_EQ(DatabaseError::NOT_FOUND, error); 337 EXPECT_EQ(DatabaseError::NOT_FOUND, error);
338 EXPECT_EQ("", value.To<std::string>()); 338 EXPECT_EQ("", value.To<std::string>());
339 } 339 }
340 340
341 341
342 } // namespace 342 } // namespace
343 } // namespace leveldb 343 } // namespace leveldb
OLDNEW
« no previous file with comments | « components/leveldb/leveldb_service_impl.cc ('k') | components/leveldb/public/cpp/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698