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

Unified Diff: components/leveldb/leveldb_service_unittest.cc

Issue 2625873004: Delete and try to recreate localstorage database on invalid schema version. (Closed)
Patch Set: add unit test for Destroy Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/leveldb/leveldb_service_impl.cc ('k') | components/leveldb/public/interfaces/leveldb.mojom » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/leveldb/leveldb_service_unittest.cc
diff --git a/components/leveldb/leveldb_service_unittest.cc b/components/leveldb/leveldb_service_unittest.cc
index 0f750799518e861fa4b28c633760703f6e3b51c1..5275d39dd19a4e1349b14225ede8ed3bb13e7c23 100644
--- a/components/leveldb/leveldb_service_unittest.cc
+++ b/components/leveldb/leveldb_service_unittest.cc
@@ -95,7 +95,7 @@ void DatabaseSyncDeletePrefixed(mojom::LevelDBDatabase* database,
}
void LevelDBSyncOpenInMemory(mojom::LevelDBService* leveldb,
- mojom::LevelDBDatabaseRequest database,
+ mojom::LevelDBDatabaseAssociatedRequest database,
mojom::DatabaseError* out_error) {
base::RunLoop run_loop;
leveldb->OpenInMemory(std::move(database),
@@ -143,8 +143,10 @@ class LevelDBServiceTest : public service_manager::test::ServiceTest {
TEST_F(LevelDBServiceTest, Basic) {
mojom::DatabaseError error;
- mojom::LevelDBDatabasePtr database;
- LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error);
+ mojom::LevelDBDatabaseAssociatedPtr database;
+ LevelDBSyncOpenInMemory(leveldb().get(),
+ MakeRequest(&database, leveldb().associated_group()),
+ &error);
EXPECT_EQ(mojom::DatabaseError::OK, error);
// Write a key to the database.
@@ -177,8 +179,10 @@ TEST_F(LevelDBServiceTest, Basic) {
TEST_F(LevelDBServiceTest, WriteBatch) {
mojom::DatabaseError error;
- mojom::LevelDBDatabasePtr database;
- LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error);
+ mojom::LevelDBDatabaseAssociatedPtr database;
+ LevelDBSyncOpenInMemory(leveldb().get(),
+ MakeRequest(&database, leveldb().associated_group()),
+ &error);
EXPECT_EQ(mojom::DatabaseError::OK, error);
// Write a key to the database.
@@ -259,14 +263,15 @@ TEST_F(LevelDBServiceTest, Reconnect) {
filesystem::mojom::DirectoryPtr directory;
temp_directory->Clone(MakeRequest(&directory));
- mojom::LevelDBDatabasePtr database;
+ mojom::LevelDBDatabaseAssociatedPtr database;
leveldb::mojom::OpenOptionsPtr options = leveldb::mojom::OpenOptions::New();
options->error_if_exists = true;
options->create_if_missing = true;
base::RunLoop run_loop;
- leveldb()->OpenWithOptions(std::move(options), std::move(directory), "test",
- MakeRequest(&database),
- Capture(&error, run_loop.QuitClosure()));
+ leveldb()->OpenWithOptions(
+ std::move(options), std::move(directory), "test",
+ MakeRequest(&database, leveldb().associated_group()),
+ Capture(&error, run_loop.QuitClosure()));
run_loop.Run();
EXPECT_EQ(mojom::DatabaseError::OK, error);
@@ -283,9 +288,10 @@ TEST_F(LevelDBServiceTest, Reconnect) {
temp_directory->Clone(MakeRequest(&directory));
// Reconnect to the database.
- mojom::LevelDBDatabasePtr database;
+ mojom::LevelDBDatabaseAssociatedPtr database;
base::RunLoop run_loop;
- leveldb()->Open(std::move(directory), "test", MakeRequest(&database),
+ leveldb()->Open(std::move(directory), "test",
+ MakeRequest(&database, leveldb().associated_group()),
Capture(&error, run_loop.QuitClosure()));
run_loop.Run();
EXPECT_EQ(mojom::DatabaseError::OK, error);
@@ -299,10 +305,79 @@ TEST_F(LevelDBServiceTest, Reconnect) {
}
}
+TEST_F(LevelDBServiceTest, Destroy) {
+ mojom::DatabaseError error;
+
+ filesystem::mojom::DirectoryPtr temp_directory;
+ GetTempDirectory(&temp_directory);
+
+ {
+ filesystem::mojom::DirectoryPtr directory;
+ temp_directory->Clone(MakeRequest(&directory));
+
+ mojom::LevelDBDatabaseAssociatedPtr database;
+ leveldb::mojom::OpenOptionsPtr options = leveldb::mojom::OpenOptions::New();
+ options->error_if_exists = true;
+ options->create_if_missing = true;
+ base::RunLoop run_loop;
+ leveldb()->OpenWithOptions(
+ std::move(options), std::move(directory), "test",
+ MakeRequest(&database, leveldb().associated_group()),
+ Capture(&error, run_loop.QuitClosure()));
+ run_loop.Run();
+ EXPECT_EQ(mojom::DatabaseError::OK, error);
+
+ // Write a key to the database.
+ error = mojom::DatabaseError::INVALID_ARGUMENT;
+ DatabaseSyncPut(database.get(), "key", "value", &error);
+ EXPECT_EQ(mojom::DatabaseError::OK, error);
+
+ // The database should go out of scope here.
+ }
+
+ {
+ filesystem::mojom::DirectoryPtr directory;
+ temp_directory->Clone(MakeRequest(&directory));
+
+ // Destroy the database.
+ base::RunLoop run_loop;
+ leveldb()->Destroy(std::move(directory), "test", Capture(&error, run_loop.QuitClosure()));
jam 2017/01/14 00:17:55 nit: 80 chars, also below
+ run_loop.Run();
+ EXPECT_EQ(mojom::DatabaseError::OK, error);
+ }
+
+ {
+ filesystem::mojom::DirectoryPtr directory;
+ temp_directory->Clone(MakeRequest(&directory));
+
+ // Reconnect to the database shuold fail.
jam 2017/01/14 00:17:55 nit: should
+ mojom::LevelDBDatabaseAssociatedPtr database;
+ base::RunLoop run_loop;
+ leveldb()->Open(std::move(directory), "test",
+ MakeRequest(&database, leveldb().associated_group()),
+ Capture(&error, run_loop.QuitClosure()));
+ run_loop.Run();
+ EXPECT_EQ(mojom::DatabaseError::INVALID_ARGUMENT, error);
+ }
+
+ {
+ filesystem::mojom::DirectoryPtr directory;
+ temp_directory->Clone(MakeRequest(&directory));
+
+ // Destroying a non-existant database should still succeed.
+ base::RunLoop run_loop;
+ leveldb()->Destroy(std::move(directory), "test", Capture(&error, run_loop.QuitClosure()));
+ run_loop.Run();
+ EXPECT_EQ(mojom::DatabaseError::OK, error);
+ }
+}
+
TEST_F(LevelDBServiceTest, GetSnapshotSimple) {
mojom::DatabaseError error;
- mojom::LevelDBDatabasePtr database;
- LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error);
+ mojom::LevelDBDatabaseAssociatedPtr database;
+ LevelDBSyncOpenInMemory(leveldb().get(),
+ MakeRequest(&database, leveldb().associated_group()),
+ &error);
EXPECT_EQ(mojom::DatabaseError::OK, error);
base::UnguessableToken snapshot;
@@ -314,8 +389,10 @@ TEST_F(LevelDBServiceTest, GetSnapshotSimple) {
TEST_F(LevelDBServiceTest, GetFromSnapshots) {
mojom::DatabaseError error;
- mojom::LevelDBDatabasePtr database;
- LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error);
+ mojom::LevelDBDatabaseAssociatedPtr database;
+ LevelDBSyncOpenInMemory(leveldb().get(),
+ MakeRequest(&database, leveldb().associated_group()),
+ &error);
EXPECT_EQ(mojom::DatabaseError::OK, error);
// Write a key to the database.
@@ -355,9 +432,11 @@ TEST_F(LevelDBServiceTest, GetFromSnapshots) {
}
TEST_F(LevelDBServiceTest, InvalidArgumentOnInvalidSnapshot) {
- mojom::LevelDBDatabasePtr database;
+ mojom::LevelDBDatabaseAssociatedPtr database;
mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT;
- LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error);
+ LevelDBSyncOpenInMemory(leveldb().get(),
+ MakeRequest(&database, leveldb().associated_group()),
+ &error);
EXPECT_EQ(mojom::DatabaseError::OK, error);
base::UnguessableToken invalid_snapshot = base::UnguessableToken::Create();
@@ -373,9 +452,11 @@ TEST_F(LevelDBServiceTest, InvalidArgumentOnInvalidSnapshot) {
}
TEST_F(LevelDBServiceTest, MemoryDBReadWrite) {
- mojom::LevelDBDatabasePtr database;
+ mojom::LevelDBDatabaseAssociatedPtr database;
mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT;
- LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error);
+ LevelDBSyncOpenInMemory(leveldb().get(),
+ MakeRequest(&database, leveldb().associated_group()),
+ &error);
EXPECT_EQ(mojom::DatabaseError::OK, error);
// Write a key to the database.
@@ -409,8 +490,10 @@ TEST_F(LevelDBServiceTest, MemoryDBReadWrite) {
TEST_F(LevelDBServiceTest, Prefixed) {
// Open an in memory database for speed.
mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT;
- mojom::LevelDBDatabasePtr database;
- LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error);
+ mojom::LevelDBDatabaseAssociatedPtr database;
+ LevelDBSyncOpenInMemory(leveldb().get(),
+ MakeRequest(&database, leveldb().associated_group()),
+ &error);
EXPECT_EQ(mojom::DatabaseError::OK, error);
const std::string prefix("prefix");
« no previous file with comments | « components/leveldb/leveldb_service_impl.cc ('k') | components/leveldb/public/interfaces/leveldb.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698