| 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/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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |