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

Unified Diff: webkit/fileapi/file_system_directory_database_unittest.cc

Issue 9663021: Add database recovery for FileSystemOriginDatabase (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add tests Created 8 years, 9 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
Index: webkit/fileapi/file_system_directory_database_unittest.cc
diff --git a/webkit/fileapi/file_system_directory_database_unittest.cc b/webkit/fileapi/file_system_directory_database_unittest.cc
index 3a47c91c8d0ca286439120e87466bca7cd35964e..82c94d75ad035457476f050d8cf9ed94f822abd8 100644
--- a/webkit/fileapi/file_system_directory_database_unittest.cc
+++ b/webkit/fileapi/file_system_directory_database_unittest.cc
@@ -6,6 +6,7 @@
#include <math.h>
+#include "base/platform_file.h"
#include "base/memory/scoped_ptr.h"
#include "base/scoped_temp_dir.h"
#include "base/string_number_conversions.h"
@@ -29,9 +30,12 @@ class FileSystemDirectoryDatabaseTest : public testing::Test {
}
void InitDatabase() {
+ CloseDatabase();
+ db_.reset(new FileSystemDirectoryDatabase(db_path()));
+ }
+
+ void CloseDatabase() {
db_.reset();
- FilePath path = base_.path().AppendASCII("db");
- db_.reset(new FileSystemDirectoryDatabase(path));
}
bool AddFileInfo(FileId parent_id, const FilePath::StringType& name) {
@@ -42,6 +46,10 @@ class FileSystemDirectoryDatabaseTest : public testing::Test {
return db_->AddFileInfo(info, &file_id);
}
+ FilePath db_path() const {
+ return base_.path().AppendASCII("db");
+ }
+
protected:
// Common temp base for nondestructive uses.
ScopedTempDir base_;
@@ -417,4 +425,28 @@ TEST_F(FileSystemDirectoryDatabaseTest, TestGetNextInteger) {
EXPECT_EQ(4, next);
}
+TEST_F(FileSystemDirectoryDatabaseTest, TestDatabaseRecovery) {
+ int64 next = -1;
+ EXPECT_TRUE(db()->GetNextInteger(&next));
+ EXPECT_EQ(0, next);
+ InitDatabase();
+ EXPECT_TRUE(db()->GetNextInteger(&next));
+ EXPECT_EQ(1, next);
+ CloseDatabase();
+
+ bool created = false;
+ base::PlatformFileError error = base::PLATFORM_FILE_ERROR_FAILED;
+ base::PlatformFile file = base::CreatePlatformFile(
+ db_path().AppendASCII("CURRENT"),
+ base::PLATFORM_FILE_CREATE_ALWAYS | base::PLATFORM_FILE_WRITE,
+ &created, &error);
+ EXPECT_EQ(base::PLATFORM_FILE_OK, error);
+ EXPECT_TRUE(created);
+ EXPECT_TRUE(base::ClosePlatformFile(file));
+
+ InitDatabase();
+ EXPECT_TRUE(db()->GetNextInteger(&next));
+ EXPECT_EQ(0, next);
+}
+
} // namespace fileapi

Powered by Google App Engine
This is Rietveld 408576698