| 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 "base/run_loop.h" | 7 #include "base/run_loop.h" |
| 8 #include "components/filesystem/public/interfaces/directory.mojom.h" | 8 #include "components/filesystem/public/interfaces/directory.mojom.h" |
| 9 #include "components/filesystem/public/interfaces/file_system.mojom.h" | 9 #include "components/filesystem/public/interfaces/file_system.mojom.h" |
| 10 #include "components/filesystem/public/interfaces/types.mojom.h" | 10 #include "components/filesystem/public/interfaces/types.mojom.h" |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 void DatabaseSyncDeletePrefixed(mojom::LevelDBDatabase* database, | 88 void DatabaseSyncDeletePrefixed(mojom::LevelDBDatabase* database, |
| 89 const std::string& key_prefix, | 89 const std::string& key_prefix, |
| 90 mojom::DatabaseError* out_error) { | 90 mojom::DatabaseError* out_error) { |
| 91 base::RunLoop run_loop; | 91 base::RunLoop run_loop; |
| 92 database->DeletePrefixed(StdStringToUint8Vector(key_prefix), | 92 database->DeletePrefixed(StdStringToUint8Vector(key_prefix), |
| 93 Capture(out_error, run_loop.QuitClosure())); | 93 Capture(out_error, run_loop.QuitClosure())); |
| 94 run_loop.Run(); | 94 run_loop.Run(); |
| 95 } | 95 } |
| 96 | 96 |
| 97 void LevelDBSyncOpenInMemory(mojom::LevelDBService* leveldb, | 97 void LevelDBSyncOpenInMemory(mojom::LevelDBService* leveldb, |
| 98 mojom::LevelDBDatabaseRequest database, | 98 mojom::LevelDBDatabaseAssociatedRequest database, |
| 99 mojom::DatabaseError* out_error) { | 99 mojom::DatabaseError* out_error) { |
| 100 base::RunLoop run_loop; | 100 base::RunLoop run_loop; |
| 101 leveldb->OpenInMemory(std::move(database), | 101 leveldb->OpenInMemory(std::move(database), |
| 102 Capture(out_error, run_loop.QuitClosure())); | 102 Capture(out_error, run_loop.QuitClosure())); |
| 103 run_loop.Run(); | 103 run_loop.Run(); |
| 104 } | 104 } |
| 105 | 105 |
| 106 class LevelDBServiceTest : public service_manager::test::ServiceTest { | 106 class LevelDBServiceTest : public service_manager::test::ServiceTest { |
| 107 public: | 107 public: |
| 108 LevelDBServiceTest() : ServiceTest("leveldb_service_unittests") {} | 108 LevelDBServiceTest() : ServiceTest("leveldb_service_unittests") {} |
| (...skipping 27 matching lines...) Expand all Loading... |
| 136 | 136 |
| 137 private: | 137 private: |
| 138 filesystem::mojom::FileSystemPtr files_; | 138 filesystem::mojom::FileSystemPtr files_; |
| 139 mojom::LevelDBServicePtr leveldb_; | 139 mojom::LevelDBServicePtr leveldb_; |
| 140 | 140 |
| 141 DISALLOW_COPY_AND_ASSIGN(LevelDBServiceTest); | 141 DISALLOW_COPY_AND_ASSIGN(LevelDBServiceTest); |
| 142 }; | 142 }; |
| 143 | 143 |
| 144 TEST_F(LevelDBServiceTest, Basic) { | 144 TEST_F(LevelDBServiceTest, Basic) { |
| 145 mojom::DatabaseError error; | 145 mojom::DatabaseError error; |
| 146 mojom::LevelDBDatabasePtr database; | 146 mojom::LevelDBDatabaseAssociatedPtr database; |
| 147 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error); | 147 LevelDBSyncOpenInMemory(leveldb().get(), |
| 148 MakeRequest(&database, leveldb().associated_group()), |
| 149 &error); |
| 148 EXPECT_EQ(mojom::DatabaseError::OK, error); | 150 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 149 | 151 |
| 150 // Write a key to the database. | 152 // Write a key to the database. |
| 151 error = mojom::DatabaseError::INVALID_ARGUMENT; | 153 error = mojom::DatabaseError::INVALID_ARGUMENT; |
| 152 DatabaseSyncPut(database.get(), "key", "value", &error); | 154 DatabaseSyncPut(database.get(), "key", "value", &error); |
| 153 EXPECT_EQ(mojom::DatabaseError::OK, error); | 155 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 154 | 156 |
| 155 // Read the key back from the database. | 157 // Read the key back from the database. |
| 156 error = mojom::DatabaseError::INVALID_ARGUMENT; | 158 error = mojom::DatabaseError::INVALID_ARGUMENT; |
| 157 std::vector<uint8_t> value; | 159 std::vector<uint8_t> value; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 170 // Read the key back from the database. | 172 // Read the key back from the database. |
| 171 error = mojom::DatabaseError::INVALID_ARGUMENT; | 173 error = mojom::DatabaseError::INVALID_ARGUMENT; |
| 172 value.clear(); | 174 value.clear(); |
| 173 DatabaseSyncGet(database.get(), "key", &error, &value); | 175 DatabaseSyncGet(database.get(), "key", &error, &value); |
| 174 EXPECT_EQ(mojom::DatabaseError::NOT_FOUND, error); | 176 EXPECT_EQ(mojom::DatabaseError::NOT_FOUND, error); |
| 175 EXPECT_EQ("", Uint8VectorToStdString(value)); | 177 EXPECT_EQ("", Uint8VectorToStdString(value)); |
| 176 } | 178 } |
| 177 | 179 |
| 178 TEST_F(LevelDBServiceTest, WriteBatch) { | 180 TEST_F(LevelDBServiceTest, WriteBatch) { |
| 179 mojom::DatabaseError error; | 181 mojom::DatabaseError error; |
| 180 mojom::LevelDBDatabasePtr database; | 182 mojom::LevelDBDatabaseAssociatedPtr database; |
| 181 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error); | 183 LevelDBSyncOpenInMemory(leveldb().get(), |
| 184 MakeRequest(&database, leveldb().associated_group()), |
| 185 &error); |
| 182 EXPECT_EQ(mojom::DatabaseError::OK, error); | 186 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 183 | 187 |
| 184 // Write a key to the database. | 188 // Write a key to the database. |
| 185 DatabaseSyncPut(database.get(), "key", "value", &error); | 189 DatabaseSyncPut(database.get(), "key", "value", &error); |
| 186 EXPECT_EQ(mojom::DatabaseError::OK, error); | 190 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 187 | 191 |
| 188 // Create a batched operation which both deletes "key" and adds another write. | 192 // Create a batched operation which both deletes "key" and adds another write. |
| 189 std::vector<mojom::BatchedOperationPtr> operations; | 193 std::vector<mojom::BatchedOperationPtr> operations; |
| 190 mojom::BatchedOperationPtr item = mojom::BatchedOperation::New(); | 194 mojom::BatchedOperationPtr item = mojom::BatchedOperation::New(); |
| 191 item->type = mojom::BatchOperationType::DELETE_KEY; | 195 item->type = mojom::BatchOperationType::DELETE_KEY; |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 252 TEST_F(LevelDBServiceTest, Reconnect) { | 256 TEST_F(LevelDBServiceTest, Reconnect) { |
| 253 mojom::DatabaseError error; | 257 mojom::DatabaseError error; |
| 254 | 258 |
| 255 filesystem::mojom::DirectoryPtr temp_directory; | 259 filesystem::mojom::DirectoryPtr temp_directory; |
| 256 GetTempDirectory(&temp_directory); | 260 GetTempDirectory(&temp_directory); |
| 257 | 261 |
| 258 { | 262 { |
| 259 filesystem::mojom::DirectoryPtr directory; | 263 filesystem::mojom::DirectoryPtr directory; |
| 260 temp_directory->Clone(MakeRequest(&directory)); | 264 temp_directory->Clone(MakeRequest(&directory)); |
| 261 | 265 |
| 262 mojom::LevelDBDatabasePtr database; | 266 mojom::LevelDBDatabaseAssociatedPtr database; |
| 263 leveldb::mojom::OpenOptionsPtr options = leveldb::mojom::OpenOptions::New(); | 267 leveldb::mojom::OpenOptionsPtr options = leveldb::mojom::OpenOptions::New(); |
| 264 options->error_if_exists = true; | 268 options->error_if_exists = true; |
| 265 options->create_if_missing = true; | 269 options->create_if_missing = true; |
| 266 base::RunLoop run_loop; | 270 base::RunLoop run_loop; |
| 267 leveldb()->OpenWithOptions(std::move(options), std::move(directory), "test", | 271 leveldb()->OpenWithOptions( |
| 268 MakeRequest(&database), | 272 std::move(options), std::move(directory), "test", |
| 269 Capture(&error, run_loop.QuitClosure())); | 273 MakeRequest(&database, leveldb().associated_group()), |
| 274 Capture(&error, run_loop.QuitClosure())); |
| 270 run_loop.Run(); | 275 run_loop.Run(); |
| 271 EXPECT_EQ(mojom::DatabaseError::OK, error); | 276 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 272 | 277 |
| 273 // Write a key to the database. | 278 // Write a key to the database. |
| 274 error = mojom::DatabaseError::INVALID_ARGUMENT; | 279 error = mojom::DatabaseError::INVALID_ARGUMENT; |
| 275 DatabaseSyncPut(database.get(), "key", "value", &error); | 280 DatabaseSyncPut(database.get(), "key", "value", &error); |
| 276 EXPECT_EQ(mojom::DatabaseError::OK, error); | 281 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 277 | 282 |
| 278 // The database should go out of scope here. | 283 // The database should go out of scope here. |
| 279 } | 284 } |
| 280 | 285 |
| 281 { | 286 { |
| 282 filesystem::mojom::DirectoryPtr directory; | 287 filesystem::mojom::DirectoryPtr directory; |
| 283 temp_directory->Clone(MakeRequest(&directory)); | 288 temp_directory->Clone(MakeRequest(&directory)); |
| 284 | 289 |
| 285 // Reconnect to the database. | 290 // Reconnect to the database. |
| 286 mojom::LevelDBDatabasePtr database; | 291 mojom::LevelDBDatabaseAssociatedPtr database; |
| 287 base::RunLoop run_loop; | 292 base::RunLoop run_loop; |
| 288 leveldb()->Open(std::move(directory), "test", MakeRequest(&database), | 293 leveldb()->Open(std::move(directory), "test", |
| 294 MakeRequest(&database, leveldb().associated_group()), |
| 289 Capture(&error, run_loop.QuitClosure())); | 295 Capture(&error, run_loop.QuitClosure())); |
| 290 run_loop.Run(); | 296 run_loop.Run(); |
| 291 EXPECT_EQ(mojom::DatabaseError::OK, error); | 297 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 292 | 298 |
| 293 // We should still be able to read the key back from the database. | 299 // We should still be able to read the key back from the database. |
| 294 error = mojom::DatabaseError::INVALID_ARGUMENT; | 300 error = mojom::DatabaseError::INVALID_ARGUMENT; |
| 295 std::vector<uint8_t> value; | 301 std::vector<uint8_t> value; |
| 296 DatabaseSyncGet(database.get(), "key", &error, &value); | 302 DatabaseSyncGet(database.get(), "key", &error, &value); |
| 297 EXPECT_EQ(mojom::DatabaseError::OK, error); | 303 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 298 EXPECT_EQ("value", Uint8VectorToStdString(value)); | 304 EXPECT_EQ("value", Uint8VectorToStdString(value)); |
| 299 } | 305 } |
| 300 } | 306 } |
| 301 | 307 |
| 308 TEST_F(LevelDBServiceTest, Destroy) { |
| 309 mojom::DatabaseError error; |
| 310 |
| 311 filesystem::mojom::DirectoryPtr temp_directory; |
| 312 GetTempDirectory(&temp_directory); |
| 313 |
| 314 { |
| 315 filesystem::mojom::DirectoryPtr directory; |
| 316 temp_directory->Clone(MakeRequest(&directory)); |
| 317 |
| 318 mojom::LevelDBDatabaseAssociatedPtr database; |
| 319 leveldb::mojom::OpenOptionsPtr options = leveldb::mojom::OpenOptions::New(); |
| 320 options->error_if_exists = true; |
| 321 options->create_if_missing = true; |
| 322 base::RunLoop run_loop; |
| 323 leveldb()->OpenWithOptions( |
| 324 std::move(options), std::move(directory), "test", |
| 325 MakeRequest(&database, leveldb().associated_group()), |
| 326 Capture(&error, run_loop.QuitClosure())); |
| 327 run_loop.Run(); |
| 328 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 329 |
| 330 // Write a key to the database. |
| 331 error = mojom::DatabaseError::INVALID_ARGUMENT; |
| 332 DatabaseSyncPut(database.get(), "key", "value", &error); |
| 333 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 334 |
| 335 // The database should go out of scope here. |
| 336 } |
| 337 |
| 338 { |
| 339 filesystem::mojom::DirectoryPtr directory; |
| 340 temp_directory->Clone(MakeRequest(&directory)); |
| 341 |
| 342 // Destroy the database. |
| 343 base::RunLoop run_loop; |
| 344 leveldb()->Destroy(std::move(directory), "test", |
| 345 Capture(&error, run_loop.QuitClosure())); |
| 346 run_loop.Run(); |
| 347 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 348 } |
| 349 |
| 350 { |
| 351 filesystem::mojom::DirectoryPtr directory; |
| 352 temp_directory->Clone(MakeRequest(&directory)); |
| 353 |
| 354 // Reconnect to the database should fail. |
| 355 mojom::LevelDBDatabaseAssociatedPtr database; |
| 356 base::RunLoop run_loop; |
| 357 leveldb()->Open(std::move(directory), "test", |
| 358 MakeRequest(&database, leveldb().associated_group()), |
| 359 Capture(&error, run_loop.QuitClosure())); |
| 360 run_loop.Run(); |
| 361 EXPECT_EQ(mojom::DatabaseError::INVALID_ARGUMENT, error); |
| 362 } |
| 363 |
| 364 { |
| 365 filesystem::mojom::DirectoryPtr directory; |
| 366 temp_directory->Clone(MakeRequest(&directory)); |
| 367 |
| 368 // Destroying a non-existant database should still succeed. |
| 369 base::RunLoop run_loop; |
| 370 leveldb()->Destroy(std::move(directory), "test", |
| 371 Capture(&error, run_loop.QuitClosure())); |
| 372 run_loop.Run(); |
| 373 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 374 } |
| 375 } |
| 376 |
| 302 TEST_F(LevelDBServiceTest, GetSnapshotSimple) { | 377 TEST_F(LevelDBServiceTest, GetSnapshotSimple) { |
| 303 mojom::DatabaseError error; | 378 mojom::DatabaseError error; |
| 304 mojom::LevelDBDatabasePtr database; | 379 mojom::LevelDBDatabaseAssociatedPtr database; |
| 305 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error); | 380 LevelDBSyncOpenInMemory(leveldb().get(), |
| 381 MakeRequest(&database, leveldb().associated_group()), |
| 382 &error); |
| 306 EXPECT_EQ(mojom::DatabaseError::OK, error); | 383 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 307 | 384 |
| 308 base::UnguessableToken snapshot; | 385 base::UnguessableToken snapshot; |
| 309 base::RunLoop run_loop; | 386 base::RunLoop run_loop; |
| 310 database->GetSnapshot(CaptureConstRef(&snapshot, run_loop.QuitClosure())); | 387 database->GetSnapshot(CaptureConstRef(&snapshot, run_loop.QuitClosure())); |
| 311 run_loop.Run(); | 388 run_loop.Run(); |
| 312 EXPECT_FALSE(snapshot.is_empty()); | 389 EXPECT_FALSE(snapshot.is_empty()); |
| 313 } | 390 } |
| 314 | 391 |
| 315 TEST_F(LevelDBServiceTest, GetFromSnapshots) { | 392 TEST_F(LevelDBServiceTest, GetFromSnapshots) { |
| 316 mojom::DatabaseError error; | 393 mojom::DatabaseError error; |
| 317 mojom::LevelDBDatabasePtr database; | 394 mojom::LevelDBDatabaseAssociatedPtr database; |
| 318 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error); | 395 LevelDBSyncOpenInMemory(leveldb().get(), |
| 396 MakeRequest(&database, leveldb().associated_group()), |
| 397 &error); |
| 319 EXPECT_EQ(mojom::DatabaseError::OK, error); | 398 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 320 | 399 |
| 321 // Write a key to the database. | 400 // Write a key to the database. |
| 322 error = mojom::DatabaseError::INVALID_ARGUMENT; | 401 error = mojom::DatabaseError::INVALID_ARGUMENT; |
| 323 DatabaseSyncPut(database.get(), "key", "value", &error); | 402 DatabaseSyncPut(database.get(), "key", "value", &error); |
| 324 EXPECT_EQ(mojom::DatabaseError::OK, error); | 403 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 325 | 404 |
| 326 // Take a snapshot where key=value. | 405 // Take a snapshot where key=value. |
| 327 base::UnguessableToken key_value_snapshot; | 406 base::UnguessableToken key_value_snapshot; |
| 328 base::RunLoop run_loop; | 407 base::RunLoop run_loop; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 348 base::RunLoop run_loop2; | 427 base::RunLoop run_loop2; |
| 349 database->GetFromSnapshot( | 428 database->GetFromSnapshot( |
| 350 key_value_snapshot, StdStringToUint8Vector("key"), | 429 key_value_snapshot, StdStringToUint8Vector("key"), |
| 351 CaptureConstRef(&error, &value, run_loop2.QuitClosure())); | 430 CaptureConstRef(&error, &value, run_loop2.QuitClosure())); |
| 352 run_loop2.Run(); | 431 run_loop2.Run(); |
| 353 EXPECT_EQ(mojom::DatabaseError::OK, error); | 432 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 354 EXPECT_EQ("value", Uint8VectorToStdString(value)); | 433 EXPECT_EQ("value", Uint8VectorToStdString(value)); |
| 355 } | 434 } |
| 356 | 435 |
| 357 TEST_F(LevelDBServiceTest, InvalidArgumentOnInvalidSnapshot) { | 436 TEST_F(LevelDBServiceTest, InvalidArgumentOnInvalidSnapshot) { |
| 358 mojom::LevelDBDatabasePtr database; | 437 mojom::LevelDBDatabaseAssociatedPtr database; |
| 359 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT; | 438 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT; |
| 360 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error); | 439 LevelDBSyncOpenInMemory(leveldb().get(), |
| 440 MakeRequest(&database, leveldb().associated_group()), |
| 441 &error); |
| 361 EXPECT_EQ(mojom::DatabaseError::OK, error); | 442 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 362 | 443 |
| 363 base::UnguessableToken invalid_snapshot = base::UnguessableToken::Create(); | 444 base::UnguessableToken invalid_snapshot = base::UnguessableToken::Create(); |
| 364 | 445 |
| 365 error = mojom::DatabaseError::OK; | 446 error = mojom::DatabaseError::OK; |
| 366 std::vector<uint8_t> value; | 447 std::vector<uint8_t> value; |
| 367 base::RunLoop run_loop; | 448 base::RunLoop run_loop; |
| 368 database->GetFromSnapshot( | 449 database->GetFromSnapshot( |
| 369 invalid_snapshot, StdStringToUint8Vector("key"), | 450 invalid_snapshot, StdStringToUint8Vector("key"), |
| 370 CaptureConstRef(&error, &value, run_loop.QuitClosure())); | 451 CaptureConstRef(&error, &value, run_loop.QuitClosure())); |
| 371 run_loop.Run(); | 452 run_loop.Run(); |
| 372 EXPECT_EQ(mojom::DatabaseError::INVALID_ARGUMENT, error); | 453 EXPECT_EQ(mojom::DatabaseError::INVALID_ARGUMENT, error); |
| 373 } | 454 } |
| 374 | 455 |
| 375 TEST_F(LevelDBServiceTest, MemoryDBReadWrite) { | 456 TEST_F(LevelDBServiceTest, MemoryDBReadWrite) { |
| 376 mojom::LevelDBDatabasePtr database; | 457 mojom::LevelDBDatabaseAssociatedPtr database; |
| 377 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT; | 458 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT; |
| 378 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error); | 459 LevelDBSyncOpenInMemory(leveldb().get(), |
| 460 MakeRequest(&database, leveldb().associated_group()), |
| 461 &error); |
| 379 EXPECT_EQ(mojom::DatabaseError::OK, error); | 462 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 380 | 463 |
| 381 // Write a key to the database. | 464 // Write a key to the database. |
| 382 error = mojom::DatabaseError::INVALID_ARGUMENT; | 465 error = mojom::DatabaseError::INVALID_ARGUMENT; |
| 383 DatabaseSyncPut(database.get(), "key", "value", &error); | 466 DatabaseSyncPut(database.get(), "key", "value", &error); |
| 384 EXPECT_EQ(mojom::DatabaseError::OK, error); | 467 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 385 | 468 |
| 386 // Read the key back from the database. | 469 // Read the key back from the database. |
| 387 error = mojom::DatabaseError::INVALID_ARGUMENT; | 470 error = mojom::DatabaseError::INVALID_ARGUMENT; |
| 388 std::vector<uint8_t> value; | 471 std::vector<uint8_t> value; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 402 error = mojom::DatabaseError::INVALID_ARGUMENT; | 485 error = mojom::DatabaseError::INVALID_ARGUMENT; |
| 403 value.clear(); | 486 value.clear(); |
| 404 DatabaseSyncGet(database.get(), "key", &error, &value); | 487 DatabaseSyncGet(database.get(), "key", &error, &value); |
| 405 EXPECT_EQ(mojom::DatabaseError::NOT_FOUND, error); | 488 EXPECT_EQ(mojom::DatabaseError::NOT_FOUND, error); |
| 406 EXPECT_EQ("", Uint8VectorToStdString(value)); | 489 EXPECT_EQ("", Uint8VectorToStdString(value)); |
| 407 } | 490 } |
| 408 | 491 |
| 409 TEST_F(LevelDBServiceTest, Prefixed) { | 492 TEST_F(LevelDBServiceTest, Prefixed) { |
| 410 // Open an in memory database for speed. | 493 // Open an in memory database for speed. |
| 411 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT; | 494 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT; |
| 412 mojom::LevelDBDatabasePtr database; | 495 mojom::LevelDBDatabaseAssociatedPtr database; |
| 413 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error); | 496 LevelDBSyncOpenInMemory(leveldb().get(), |
| 497 MakeRequest(&database, leveldb().associated_group()), |
| 498 &error); |
| 414 EXPECT_EQ(mojom::DatabaseError::OK, error); | 499 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 415 | 500 |
| 416 const std::string prefix("prefix"); | 501 const std::string prefix("prefix"); |
| 417 std::vector<mojom::KeyValuePtr> key_values; | 502 std::vector<mojom::KeyValuePtr> key_values; |
| 418 | 503 |
| 419 // Completely empty database. | 504 // Completely empty database. |
| 420 error = mojom::DatabaseError::INVALID_ARGUMENT; | 505 error = mojom::DatabaseError::INVALID_ARGUMENT; |
| 421 DatabaseSyncGetPrefixed(database.get(), prefix, &error, &key_values); | 506 DatabaseSyncGetPrefixed(database.get(), prefix, &error, &key_values); |
| 422 EXPECT_EQ(mojom::DatabaseError::OK, error); | 507 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 423 EXPECT_TRUE(key_values.empty()); | 508 EXPECT_TRUE(key_values.empty()); |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 497 EXPECT_EQ(mojom::DatabaseError::OK, error); | 582 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 498 error = mojom::DatabaseError::INVALID_ARGUMENT; | 583 error = mojom::DatabaseError::INVALID_ARGUMENT; |
| 499 key_values.clear(); | 584 key_values.clear(); |
| 500 DatabaseSyncGetPrefixed(database.get(), prefix, &error, &key_values); | 585 DatabaseSyncGetPrefixed(database.get(), prefix, &error, &key_values); |
| 501 EXPECT_EQ(mojom::DatabaseError::OK, error); | 586 EXPECT_EQ(mojom::DatabaseError::OK, error); |
| 502 EXPECT_TRUE(key_values.empty()); | 587 EXPECT_TRUE(key_values.empty()); |
| 503 } | 588 } |
| 504 | 589 |
| 505 } // namespace | 590 } // namespace |
| 506 } // namespace leveldb | 591 } // namespace leveldb |
| OLD | NEW |