OLD | NEW |
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/bind.h" | 5 #include "base/bind.h" |
6 #include "base/macros.h" | 6 #include "base/macros.h" |
7 #include "components/filesystem/public/interfaces/directory.mojom.h" | 7 #include "components/filesystem/public/interfaces/directory.mojom.h" |
8 #include "components/filesystem/public/interfaces/file_system.mojom.h" | 8 #include "components/filesystem/public/interfaces/file_system.mojom.h" |
9 #include "components/filesystem/public/interfaces/types.mojom.h" | 9 #include "components/filesystem/public/interfaces/types.mojom.h" |
10 #include "components/leveldb/public/interfaces/leveldb.mojom.h" | 10 #include "components/leveldb/public/interfaces/leveldb.mojom.h" |
11 #include "mojo/common/common_type_converters.h" | 11 #include "mojo/common/common_type_converters.h" |
12 #include "mojo/public/cpp/bindings/binding_set.h" | 12 #include "mojo/public/cpp/bindings/binding_set.h" |
13 #include "mojo/util/capture_util.h" | 13 #include "mojo/util/capture_util.h" |
14 #include "services/shell/public/cpp/shell_connection.h" | 14 #include "services/shell/public/cpp/shell_connection.h" |
15 #include "services/shell/public/cpp/shell_test.h" | 15 #include "services/shell/public/cpp/shell_test.h" |
16 | 16 |
17 using filesystem::FileError; | 17 using filesystem::mojom::FileError; |
18 using mojo::Capture; | 18 using mojo::Capture; |
19 | 19 |
20 namespace leveldb { | 20 namespace leveldb { |
21 namespace { | 21 namespace { |
22 | 22 |
23 class LevelDBServiceTest : public shell::test::ShellTest { | 23 class LevelDBServiceTest : public shell::test::ShellTest { |
24 public: | 24 public: |
25 LevelDBServiceTest() : ShellTest("exe:leveldb_service_unittests") {} | 25 LevelDBServiceTest() : ShellTest("exe:leveldb_service_unittests") {} |
26 ~LevelDBServiceTest() override {} | 26 ~LevelDBServiceTest() override {} |
27 | 27 |
28 protected: | 28 protected: |
29 // Overridden from mojo::test::ApplicationTestBase: | 29 // Overridden from mojo::test::ApplicationTestBase: |
30 void SetUp() override { | 30 void SetUp() override { |
31 ShellTest::SetUp(); | 31 ShellTest::SetUp(); |
32 connector()->ConnectToInterface("mojo:filesystem", &files_); | 32 connector()->ConnectToInterface("mojo:filesystem", &files_); |
33 connector()->ConnectToInterface("mojo:leveldb", &leveldb_); | 33 connector()->ConnectToInterface("mojo:leveldb", &leveldb_); |
34 } | 34 } |
35 | 35 |
36 void TearDown() override { | 36 void TearDown() override { |
37 leveldb_.reset(); | 37 leveldb_.reset(); |
38 files_.reset(); | 38 files_.reset(); |
39 ShellTest::TearDown(); | 39 ShellTest::TearDown(); |
40 } | 40 } |
41 | 41 |
42 // Note: This has an out parameter rather than returning the |DirectoryPtr|, | 42 // Note: This has an out parameter rather than returning the |DirectoryPtr|, |
43 // since |ASSERT_...()| doesn't work with return values. | 43 // since |ASSERT_...()| doesn't work with return values. |
44 void GetTempDirectory(filesystem::DirectoryPtr* directory) { | 44 void GetTempDirectory(filesystem::mojom::DirectoryPtr* directory) { |
45 FileError error = FileError::FAILED; | 45 FileError error = FileError::FAILED; |
46 files()->OpenTempDirectory(GetProxy(directory), mojo::Capture(&error)); | 46 files()->OpenTempDirectory(GetProxy(directory), mojo::Capture(&error)); |
47 ASSERT_TRUE(files().WaitForIncomingResponse()); | 47 ASSERT_TRUE(files().WaitForIncomingResponse()); |
48 ASSERT_EQ(FileError::OK, error); | 48 ASSERT_EQ(FileError::OK, error); |
49 } | 49 } |
50 | 50 |
51 filesystem::FileSystemPtr& files() { return files_; } | 51 filesystem::mojom::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::mojom::FileSystemPtr files_; |
56 LevelDBServicePtr leveldb_; | 56 LevelDBServicePtr leveldb_; |
57 | 57 |
58 DISALLOW_COPY_AND_ASSIGN(LevelDBServiceTest); | 58 DISALLOW_COPY_AND_ASSIGN(LevelDBServiceTest); |
59 }; | 59 }; |
60 | 60 |
61 TEST_F(LevelDBServiceTest, Basic) { | 61 TEST_F(LevelDBServiceTest, Basic) { |
62 DatabaseError error; | 62 DatabaseError error; |
63 LevelDBDatabasePtr database; | 63 LevelDBDatabasePtr database; |
64 leveldb()->OpenInMemory(GetProxy(&database), Capture(&error)); | 64 leveldb()->OpenInMemory(GetProxy(&database), Capture(&error)); |
65 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); | 65 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
183 database->Get(mojo::Array<uint8_t>::From(std::string("prefix-key2")), | 183 database->Get(mojo::Array<uint8_t>::From(std::string("prefix-key2")), |
184 Capture(&error, &value)); | 184 Capture(&error, &value)); |
185 ASSERT_TRUE(database.WaitForIncomingResponse()); | 185 ASSERT_TRUE(database.WaitForIncomingResponse()); |
186 EXPECT_EQ(DatabaseError::NOT_FOUND, error); | 186 EXPECT_EQ(DatabaseError::NOT_FOUND, error); |
187 EXPECT_EQ("", value.To<std::string>()); | 187 EXPECT_EQ("", value.To<std::string>()); |
188 } | 188 } |
189 | 189 |
190 TEST_F(LevelDBServiceTest, Reconnect) { | 190 TEST_F(LevelDBServiceTest, Reconnect) { |
191 DatabaseError error; | 191 DatabaseError error; |
192 | 192 |
193 filesystem::DirectoryPtr temp_directory; | 193 filesystem::mojom::DirectoryPtr temp_directory; |
194 GetTempDirectory(&temp_directory); | 194 GetTempDirectory(&temp_directory); |
195 | 195 |
196 { | 196 { |
197 filesystem::DirectoryPtr directory; | 197 filesystem::mojom::DirectoryPtr directory; |
198 temp_directory->Clone(GetProxy(&directory)); | 198 temp_directory->Clone(GetProxy(&directory)); |
199 | 199 |
200 LevelDBDatabasePtr database; | 200 LevelDBDatabasePtr database; |
201 leveldb::OpenOptionsPtr options = leveldb::OpenOptions::New(); | 201 leveldb::OpenOptionsPtr options = leveldb::OpenOptions::New(); |
202 options->error_if_exists = true; | 202 options->error_if_exists = true; |
203 options->create_if_missing = true; | 203 options->create_if_missing = true; |
204 leveldb()->OpenWithOptions(std::move(options), | 204 leveldb()->OpenWithOptions(std::move(options), |
205 std::move(directory), "test", | 205 std::move(directory), "test", |
206 GetProxy(&database), | 206 GetProxy(&database), |
207 Capture(&error)); | 207 Capture(&error)); |
208 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); | 208 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); |
209 EXPECT_EQ(DatabaseError::OK, error); | 209 EXPECT_EQ(DatabaseError::OK, error); |
210 | 210 |
211 // Write a key to the database. | 211 // Write a key to the database. |
212 error = DatabaseError::INVALID_ARGUMENT; | 212 error = DatabaseError::INVALID_ARGUMENT; |
213 database->Put(mojo::Array<uint8_t>::From(std::string("key")), | 213 database->Put(mojo::Array<uint8_t>::From(std::string("key")), |
214 mojo::Array<uint8_t>::From(std::string("value")), | 214 mojo::Array<uint8_t>::From(std::string("value")), |
215 Capture(&error)); | 215 Capture(&error)); |
216 ASSERT_TRUE(database.WaitForIncomingResponse()); | 216 ASSERT_TRUE(database.WaitForIncomingResponse()); |
217 EXPECT_EQ(DatabaseError::OK, error); | 217 EXPECT_EQ(DatabaseError::OK, error); |
218 | 218 |
219 // The database should go out of scope here. | 219 // The database should go out of scope here. |
220 } | 220 } |
221 | 221 |
222 { | 222 { |
223 filesystem::DirectoryPtr directory; | 223 filesystem::mojom::DirectoryPtr directory; |
224 temp_directory->Clone(GetProxy(&directory)); | 224 temp_directory->Clone(GetProxy(&directory)); |
225 | 225 |
226 // Reconnect to the database. | 226 // Reconnect to the database. |
227 LevelDBDatabasePtr database; | 227 LevelDBDatabasePtr database; |
228 leveldb()->Open(std::move(directory), "test", GetProxy(&database), | 228 leveldb()->Open(std::move(directory), "test", GetProxy(&database), |
229 Capture(&error)); | 229 Capture(&error)); |
230 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); | 230 ASSERT_TRUE(leveldb().WaitForIncomingResponse()); |
231 EXPECT_EQ(DatabaseError::OK, error); | 231 EXPECT_EQ(DatabaseError::OK, error); |
232 | 232 |
233 // We should still be able to read the key back from the database. | 233 // We should still be able to read the key back from the database. |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
492 key_values.SetToEmpty(); | 492 key_values.SetToEmpty(); |
493 database->GetPrefixed(mojo::Array<uint8_t>::From(prefix), | 493 database->GetPrefixed(mojo::Array<uint8_t>::From(prefix), |
494 Capture(&error, &key_values)); | 494 Capture(&error, &key_values)); |
495 ASSERT_TRUE(database.WaitForIncomingResponse()); | 495 ASSERT_TRUE(database.WaitForIncomingResponse()); |
496 EXPECT_EQ(DatabaseError::OK, error); | 496 EXPECT_EQ(DatabaseError::OK, error); |
497 EXPECT_TRUE(key_values.empty()); | 497 EXPECT_TRUE(key_values.empty()); |
498 } | 498 } |
499 | 499 |
500 } // namespace | 500 } // namespace |
501 } // namespace leveldb | 501 } // namespace leveldb |
OLD | NEW |