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

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

Issue 2692353003: Mojo C++ bindings: remove some usage of AssociatedGroup from user code. (Closed)
Patch Set: Created 3 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 | « no previous file | components/leveldb/remote_iterator_unittest.cc » ('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/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 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
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::LevelDBDatabaseAssociatedPtr database; 146 mojom::LevelDBDatabaseAssociatedPtr database;
147 LevelDBSyncOpenInMemory(leveldb().get(), 147 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error);
148 MakeRequest(&database, leveldb().associated_group()),
149 &error);
150 EXPECT_EQ(mojom::DatabaseError::OK, error); 148 EXPECT_EQ(mojom::DatabaseError::OK, error);
151 149
152 // Write a key to the database. 150 // Write a key to the database.
153 error = mojom::DatabaseError::INVALID_ARGUMENT; 151 error = mojom::DatabaseError::INVALID_ARGUMENT;
154 DatabaseSyncPut(database.get(), "key", "value", &error); 152 DatabaseSyncPut(database.get(), "key", "value", &error);
155 EXPECT_EQ(mojom::DatabaseError::OK, error); 153 EXPECT_EQ(mojom::DatabaseError::OK, error);
156 154
157 // Read the key back from the database. 155 // Read the key back from the database.
158 error = mojom::DatabaseError::INVALID_ARGUMENT; 156 error = mojom::DatabaseError::INVALID_ARGUMENT;
159 std::vector<uint8_t> value; 157 std::vector<uint8_t> value;
(...skipping 13 matching lines...) Expand all
173 error = mojom::DatabaseError::INVALID_ARGUMENT; 171 error = mojom::DatabaseError::INVALID_ARGUMENT;
174 value.clear(); 172 value.clear();
175 DatabaseSyncGet(database.get(), "key", &error, &value); 173 DatabaseSyncGet(database.get(), "key", &error, &value);
176 EXPECT_EQ(mojom::DatabaseError::NOT_FOUND, error); 174 EXPECT_EQ(mojom::DatabaseError::NOT_FOUND, error);
177 EXPECT_EQ("", Uint8VectorToStdString(value)); 175 EXPECT_EQ("", Uint8VectorToStdString(value));
178 } 176 }
179 177
180 TEST_F(LevelDBServiceTest, WriteBatch) { 178 TEST_F(LevelDBServiceTest, WriteBatch) {
181 mojom::DatabaseError error; 179 mojom::DatabaseError error;
182 mojom::LevelDBDatabaseAssociatedPtr database; 180 mojom::LevelDBDatabaseAssociatedPtr database;
183 LevelDBSyncOpenInMemory(leveldb().get(), 181 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error);
184 MakeRequest(&database, leveldb().associated_group()),
185 &error);
186 EXPECT_EQ(mojom::DatabaseError::OK, error); 182 EXPECT_EQ(mojom::DatabaseError::OK, error);
187 183
188 // Write a key to the database. 184 // Write a key to the database.
189 DatabaseSyncPut(database.get(), "key", "value", &error); 185 DatabaseSyncPut(database.get(), "key", "value", &error);
190 EXPECT_EQ(mojom::DatabaseError::OK, error); 186 EXPECT_EQ(mojom::DatabaseError::OK, error);
191 187
192 // Create a batched operation which both deletes "key" and adds another write. 188 // Create a batched operation which both deletes "key" and adds another write.
193 std::vector<mojom::BatchedOperationPtr> operations; 189 std::vector<mojom::BatchedOperationPtr> operations;
194 mojom::BatchedOperationPtr item = mojom::BatchedOperation::New(); 190 mojom::BatchedOperationPtr item = mojom::BatchedOperation::New();
195 item->type = mojom::BatchOperationType::DELETE_KEY; 191 item->type = mojom::BatchOperationType::DELETE_KEY;
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 257
262 { 258 {
263 filesystem::mojom::DirectoryPtr directory; 259 filesystem::mojom::DirectoryPtr directory;
264 temp_directory->Clone(MakeRequest(&directory)); 260 temp_directory->Clone(MakeRequest(&directory));
265 261
266 mojom::LevelDBDatabaseAssociatedPtr database; 262 mojom::LevelDBDatabaseAssociatedPtr database;
267 leveldb::mojom::OpenOptionsPtr options = leveldb::mojom::OpenOptions::New(); 263 leveldb::mojom::OpenOptionsPtr options = leveldb::mojom::OpenOptions::New();
268 options->error_if_exists = true; 264 options->error_if_exists = true;
269 options->create_if_missing = true; 265 options->create_if_missing = true;
270 base::RunLoop run_loop; 266 base::RunLoop run_loop;
271 leveldb()->OpenWithOptions( 267 leveldb()->OpenWithOptions(std::move(options), std::move(directory), "test",
272 std::move(options), std::move(directory), "test", 268 MakeRequest(&database),
273 MakeRequest(&database, leveldb().associated_group()), 269 Capture(&error, run_loop.QuitClosure()));
274 Capture(&error, run_loop.QuitClosure()));
275 run_loop.Run(); 270 run_loop.Run();
276 EXPECT_EQ(mojom::DatabaseError::OK, error); 271 EXPECT_EQ(mojom::DatabaseError::OK, error);
277 272
278 // Write a key to the database. 273 // Write a key to the database.
279 error = mojom::DatabaseError::INVALID_ARGUMENT; 274 error = mojom::DatabaseError::INVALID_ARGUMENT;
280 DatabaseSyncPut(database.get(), "key", "value", &error); 275 DatabaseSyncPut(database.get(), "key", "value", &error);
281 EXPECT_EQ(mojom::DatabaseError::OK, error); 276 EXPECT_EQ(mojom::DatabaseError::OK, error);
282 277
283 // The database should go out of scope here. 278 // The database should go out of scope here.
284 } 279 }
285 280
286 { 281 {
287 filesystem::mojom::DirectoryPtr directory; 282 filesystem::mojom::DirectoryPtr directory;
288 temp_directory->Clone(MakeRequest(&directory)); 283 temp_directory->Clone(MakeRequest(&directory));
289 284
290 // Reconnect to the database. 285 // Reconnect to the database.
291 mojom::LevelDBDatabaseAssociatedPtr database; 286 mojom::LevelDBDatabaseAssociatedPtr database;
292 base::RunLoop run_loop; 287 base::RunLoop run_loop;
293 leveldb()->Open(std::move(directory), "test", 288 leveldb()->Open(std::move(directory), "test", MakeRequest(&database),
294 MakeRequest(&database, leveldb().associated_group()),
295 Capture(&error, run_loop.QuitClosure())); 289 Capture(&error, run_loop.QuitClosure()));
296 run_loop.Run(); 290 run_loop.Run();
297 EXPECT_EQ(mojom::DatabaseError::OK, error); 291 EXPECT_EQ(mojom::DatabaseError::OK, error);
298 292
299 // We should still be able to read the key back from the database. 293 // We should still be able to read the key back from the database.
300 error = mojom::DatabaseError::INVALID_ARGUMENT; 294 error = mojom::DatabaseError::INVALID_ARGUMENT;
301 std::vector<uint8_t> value; 295 std::vector<uint8_t> value;
302 DatabaseSyncGet(database.get(), "key", &error, &value); 296 DatabaseSyncGet(database.get(), "key", &error, &value);
303 EXPECT_EQ(mojom::DatabaseError::OK, error); 297 EXPECT_EQ(mojom::DatabaseError::OK, error);
304 EXPECT_EQ("value", Uint8VectorToStdString(value)); 298 EXPECT_EQ("value", Uint8VectorToStdString(value));
305 } 299 }
306 } 300 }
307 301
308 TEST_F(LevelDBServiceTest, Destroy) { 302 TEST_F(LevelDBServiceTest, Destroy) {
309 mojom::DatabaseError error; 303 mojom::DatabaseError error;
310 304
311 filesystem::mojom::DirectoryPtr temp_directory; 305 filesystem::mojom::DirectoryPtr temp_directory;
312 GetTempDirectory(&temp_directory); 306 GetTempDirectory(&temp_directory);
313 307
314 { 308 {
315 filesystem::mojom::DirectoryPtr directory; 309 filesystem::mojom::DirectoryPtr directory;
316 temp_directory->Clone(MakeRequest(&directory)); 310 temp_directory->Clone(MakeRequest(&directory));
317 311
318 mojom::LevelDBDatabaseAssociatedPtr database; 312 mojom::LevelDBDatabaseAssociatedPtr database;
319 leveldb::mojom::OpenOptionsPtr options = leveldb::mojom::OpenOptions::New(); 313 leveldb::mojom::OpenOptionsPtr options = leveldb::mojom::OpenOptions::New();
320 options->error_if_exists = true; 314 options->error_if_exists = true;
321 options->create_if_missing = true; 315 options->create_if_missing = true;
322 base::RunLoop run_loop; 316 base::RunLoop run_loop;
323 leveldb()->OpenWithOptions( 317 leveldb()->OpenWithOptions(std::move(options), std::move(directory), "test",
324 std::move(options), std::move(directory), "test", 318 MakeRequest(&database),
325 MakeRequest(&database, leveldb().associated_group()), 319 Capture(&error, run_loop.QuitClosure()));
326 Capture(&error, run_loop.QuitClosure()));
327 run_loop.Run(); 320 run_loop.Run();
328 EXPECT_EQ(mojom::DatabaseError::OK, error); 321 EXPECT_EQ(mojom::DatabaseError::OK, error);
329 322
330 // Write a key to the database. 323 // Write a key to the database.
331 error = mojom::DatabaseError::INVALID_ARGUMENT; 324 error = mojom::DatabaseError::INVALID_ARGUMENT;
332 DatabaseSyncPut(database.get(), "key", "value", &error); 325 DatabaseSyncPut(database.get(), "key", "value", &error);
333 EXPECT_EQ(mojom::DatabaseError::OK, error); 326 EXPECT_EQ(mojom::DatabaseError::OK, error);
334 327
335 // The database should go out of scope here. 328 // The database should go out of scope here.
336 } 329 }
(...skipping 10 matching lines...) Expand all
347 EXPECT_EQ(mojom::DatabaseError::OK, error); 340 EXPECT_EQ(mojom::DatabaseError::OK, error);
348 } 341 }
349 342
350 { 343 {
351 filesystem::mojom::DirectoryPtr directory; 344 filesystem::mojom::DirectoryPtr directory;
352 temp_directory->Clone(MakeRequest(&directory)); 345 temp_directory->Clone(MakeRequest(&directory));
353 346
354 // Reconnect to the database should fail. 347 // Reconnect to the database should fail.
355 mojom::LevelDBDatabaseAssociatedPtr database; 348 mojom::LevelDBDatabaseAssociatedPtr database;
356 base::RunLoop run_loop; 349 base::RunLoop run_loop;
357 leveldb()->Open(std::move(directory), "test", 350 leveldb()->Open(std::move(directory), "test", MakeRequest(&database),
358 MakeRequest(&database, leveldb().associated_group()),
359 Capture(&error, run_loop.QuitClosure())); 351 Capture(&error, run_loop.QuitClosure()));
360 run_loop.Run(); 352 run_loop.Run();
361 EXPECT_EQ(mojom::DatabaseError::INVALID_ARGUMENT, error); 353 EXPECT_EQ(mojom::DatabaseError::INVALID_ARGUMENT, error);
362 } 354 }
363 355
364 { 356 {
365 filesystem::mojom::DirectoryPtr directory; 357 filesystem::mojom::DirectoryPtr directory;
366 temp_directory->Clone(MakeRequest(&directory)); 358 temp_directory->Clone(MakeRequest(&directory));
367 359
368 // Destroying a non-existant database should still succeed. 360 // Destroying a non-existant database should still succeed.
369 base::RunLoop run_loop; 361 base::RunLoop run_loop;
370 leveldb()->Destroy(std::move(directory), "test", 362 leveldb()->Destroy(std::move(directory), "test",
371 Capture(&error, run_loop.QuitClosure())); 363 Capture(&error, run_loop.QuitClosure()));
372 run_loop.Run(); 364 run_loop.Run();
373 EXPECT_EQ(mojom::DatabaseError::OK, error); 365 EXPECT_EQ(mojom::DatabaseError::OK, error);
374 } 366 }
375 } 367 }
376 368
377 TEST_F(LevelDBServiceTest, GetSnapshotSimple) { 369 TEST_F(LevelDBServiceTest, GetSnapshotSimple) {
378 mojom::DatabaseError error; 370 mojom::DatabaseError error;
379 mojom::LevelDBDatabaseAssociatedPtr database; 371 mojom::LevelDBDatabaseAssociatedPtr database;
380 LevelDBSyncOpenInMemory(leveldb().get(), 372 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error);
381 MakeRequest(&database, leveldb().associated_group()),
382 &error);
383 EXPECT_EQ(mojom::DatabaseError::OK, error); 373 EXPECT_EQ(mojom::DatabaseError::OK, error);
384 374
385 base::UnguessableToken snapshot; 375 base::UnguessableToken snapshot;
386 base::RunLoop run_loop; 376 base::RunLoop run_loop;
387 database->GetSnapshot(CaptureConstRef(&snapshot, run_loop.QuitClosure())); 377 database->GetSnapshot(CaptureConstRef(&snapshot, run_loop.QuitClosure()));
388 run_loop.Run(); 378 run_loop.Run();
389 EXPECT_FALSE(snapshot.is_empty()); 379 EXPECT_FALSE(snapshot.is_empty());
390 } 380 }
391 381
392 TEST_F(LevelDBServiceTest, GetFromSnapshots) { 382 TEST_F(LevelDBServiceTest, GetFromSnapshots) {
393 mojom::DatabaseError error; 383 mojom::DatabaseError error;
394 mojom::LevelDBDatabaseAssociatedPtr database; 384 mojom::LevelDBDatabaseAssociatedPtr database;
395 LevelDBSyncOpenInMemory(leveldb().get(), 385 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error);
396 MakeRequest(&database, leveldb().associated_group()),
397 &error);
398 EXPECT_EQ(mojom::DatabaseError::OK, error); 386 EXPECT_EQ(mojom::DatabaseError::OK, error);
399 387
400 // Write a key to the database. 388 // Write a key to the database.
401 error = mojom::DatabaseError::INVALID_ARGUMENT; 389 error = mojom::DatabaseError::INVALID_ARGUMENT;
402 DatabaseSyncPut(database.get(), "key", "value", &error); 390 DatabaseSyncPut(database.get(), "key", "value", &error);
403 EXPECT_EQ(mojom::DatabaseError::OK, error); 391 EXPECT_EQ(mojom::DatabaseError::OK, error);
404 392
405 // Take a snapshot where key=value. 393 // Take a snapshot where key=value.
406 base::UnguessableToken key_value_snapshot; 394 base::UnguessableToken key_value_snapshot;
407 base::RunLoop run_loop; 395 base::RunLoop run_loop;
(...skipping 21 matching lines...) Expand all
429 key_value_snapshot, StdStringToUint8Vector("key"), 417 key_value_snapshot, StdStringToUint8Vector("key"),
430 CaptureConstRef(&error, &value, run_loop2.QuitClosure())); 418 CaptureConstRef(&error, &value, run_loop2.QuitClosure()));
431 run_loop2.Run(); 419 run_loop2.Run();
432 EXPECT_EQ(mojom::DatabaseError::OK, error); 420 EXPECT_EQ(mojom::DatabaseError::OK, error);
433 EXPECT_EQ("value", Uint8VectorToStdString(value)); 421 EXPECT_EQ("value", Uint8VectorToStdString(value));
434 } 422 }
435 423
436 TEST_F(LevelDBServiceTest, InvalidArgumentOnInvalidSnapshot) { 424 TEST_F(LevelDBServiceTest, InvalidArgumentOnInvalidSnapshot) {
437 mojom::LevelDBDatabaseAssociatedPtr database; 425 mojom::LevelDBDatabaseAssociatedPtr database;
438 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT; 426 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT;
439 LevelDBSyncOpenInMemory(leveldb().get(), 427 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error);
440 MakeRequest(&database, leveldb().associated_group()),
441 &error);
442 EXPECT_EQ(mojom::DatabaseError::OK, error); 428 EXPECT_EQ(mojom::DatabaseError::OK, error);
443 429
444 base::UnguessableToken invalid_snapshot = base::UnguessableToken::Create(); 430 base::UnguessableToken invalid_snapshot = base::UnguessableToken::Create();
445 431
446 error = mojom::DatabaseError::OK; 432 error = mojom::DatabaseError::OK;
447 std::vector<uint8_t> value; 433 std::vector<uint8_t> value;
448 base::RunLoop run_loop; 434 base::RunLoop run_loop;
449 database->GetFromSnapshot( 435 database->GetFromSnapshot(
450 invalid_snapshot, StdStringToUint8Vector("key"), 436 invalid_snapshot, StdStringToUint8Vector("key"),
451 CaptureConstRef(&error, &value, run_loop.QuitClosure())); 437 CaptureConstRef(&error, &value, run_loop.QuitClosure()));
452 run_loop.Run(); 438 run_loop.Run();
453 EXPECT_EQ(mojom::DatabaseError::INVALID_ARGUMENT, error); 439 EXPECT_EQ(mojom::DatabaseError::INVALID_ARGUMENT, error);
454 } 440 }
455 441
456 TEST_F(LevelDBServiceTest, MemoryDBReadWrite) { 442 TEST_F(LevelDBServiceTest, MemoryDBReadWrite) {
457 mojom::LevelDBDatabaseAssociatedPtr database; 443 mojom::LevelDBDatabaseAssociatedPtr database;
458 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT; 444 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT;
459 LevelDBSyncOpenInMemory(leveldb().get(), 445 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error);
460 MakeRequest(&database, leveldb().associated_group()),
461 &error);
462 EXPECT_EQ(mojom::DatabaseError::OK, error); 446 EXPECT_EQ(mojom::DatabaseError::OK, error);
463 447
464 // Write a key to the database. 448 // Write a key to the database.
465 error = mojom::DatabaseError::INVALID_ARGUMENT; 449 error = mojom::DatabaseError::INVALID_ARGUMENT;
466 DatabaseSyncPut(database.get(), "key", "value", &error); 450 DatabaseSyncPut(database.get(), "key", "value", &error);
467 EXPECT_EQ(mojom::DatabaseError::OK, error); 451 EXPECT_EQ(mojom::DatabaseError::OK, error);
468 452
469 // Read the key back from the database. 453 // Read the key back from the database.
470 error = mojom::DatabaseError::INVALID_ARGUMENT; 454 error = mojom::DatabaseError::INVALID_ARGUMENT;
471 std::vector<uint8_t> value; 455 std::vector<uint8_t> value;
(...skipping 14 matching lines...) Expand all
486 value.clear(); 470 value.clear();
487 DatabaseSyncGet(database.get(), "key", &error, &value); 471 DatabaseSyncGet(database.get(), "key", &error, &value);
488 EXPECT_EQ(mojom::DatabaseError::NOT_FOUND, error); 472 EXPECT_EQ(mojom::DatabaseError::NOT_FOUND, error);
489 EXPECT_EQ("", Uint8VectorToStdString(value)); 473 EXPECT_EQ("", Uint8VectorToStdString(value));
490 } 474 }
491 475
492 TEST_F(LevelDBServiceTest, Prefixed) { 476 TEST_F(LevelDBServiceTest, Prefixed) {
493 // Open an in memory database for speed. 477 // Open an in memory database for speed.
494 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT; 478 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT;
495 mojom::LevelDBDatabaseAssociatedPtr database; 479 mojom::LevelDBDatabaseAssociatedPtr database;
496 LevelDBSyncOpenInMemory(leveldb().get(), 480 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error);
497 MakeRequest(&database, leveldb().associated_group()),
498 &error);
499 EXPECT_EQ(mojom::DatabaseError::OK, error); 481 EXPECT_EQ(mojom::DatabaseError::OK, error);
500 482
501 const std::string prefix("prefix"); 483 const std::string prefix("prefix");
502 std::vector<mojom::KeyValuePtr> key_values; 484 std::vector<mojom::KeyValuePtr> key_values;
503 485
504 // Completely empty database. 486 // Completely empty database.
505 error = mojom::DatabaseError::INVALID_ARGUMENT; 487 error = mojom::DatabaseError::INVALID_ARGUMENT;
506 DatabaseSyncGetPrefixed(database.get(), prefix, &error, &key_values); 488 DatabaseSyncGetPrefixed(database.get(), prefix, &error, &key_values);
507 EXPECT_EQ(mojom::DatabaseError::OK, error); 489 EXPECT_EQ(mojom::DatabaseError::OK, error);
508 EXPECT_TRUE(key_values.empty()); 490 EXPECT_TRUE(key_values.empty());
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 EXPECT_EQ(mojom::DatabaseError::OK, error); 564 EXPECT_EQ(mojom::DatabaseError::OK, error);
583 error = mojom::DatabaseError::INVALID_ARGUMENT; 565 error = mojom::DatabaseError::INVALID_ARGUMENT;
584 key_values.clear(); 566 key_values.clear();
585 DatabaseSyncGetPrefixed(database.get(), prefix, &error, &key_values); 567 DatabaseSyncGetPrefixed(database.get(), prefix, &error, &key_values);
586 EXPECT_EQ(mojom::DatabaseError::OK, error); 568 EXPECT_EQ(mojom::DatabaseError::OK, error);
587 EXPECT_TRUE(key_values.empty()); 569 EXPECT_TRUE(key_values.empty());
588 } 570 }
589 571
590 } // namespace 572 } // namespace
591 } // namespace leveldb 573 } // namespace leveldb
OLDNEW
« no previous file with comments | « no previous file | components/leveldb/remote_iterator_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698