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

Unified Diff: webkit/browser/fileapi/sandbox_origin_database_unittest.cc

Issue 253753007: Move all remaining fileapi and quota unit tests from webkit/ to content/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address feedback Created 6 years, 8 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/browser/fileapi/sandbox_origin_database_unittest.cc
diff --git a/webkit/browser/fileapi/sandbox_origin_database_unittest.cc b/webkit/browser/fileapi/sandbox_origin_database_unittest.cc
deleted file mode 100644
index dd870ebd3d6497e2998714b4b52f29a37409445b..0000000000000000000000000000000000000000
--- a/webkit/browser/fileapi/sandbox_origin_database_unittest.cc
+++ /dev/null
@@ -1,303 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include <algorithm>
-#include <functional>
-#include <limits>
-#include <string>
-#include <vector>
-
-#include "base/file_util.h"
-#include "base/files/file.h"
-#include "base/files/file_path.h"
-#include "base/files/scoped_temp_dir.h"
-#include "base/stl_util.h"
-#include "testing/gtest/include/gtest/gtest.h"
-#include "third_party/leveldatabase/src/db/filename.h"
-#include "third_party/leveldatabase/src/include/leveldb/db.h"
-#include "webkit/browser/fileapi/sandbox_database_test_helper.h"
-#include "webkit/browser/fileapi/sandbox_origin_database.h"
-#include "webkit/common/fileapi/file_system_util.h"
-
-namespace fileapi {
-
-namespace {
-const base::FilePath::CharType kFileSystemDirName[] =
- FILE_PATH_LITERAL("File System");
-const base::FilePath::CharType kOriginDatabaseName[] =
- FILE_PATH_LITERAL("Origins");
-} // namespace
-
-TEST(SandboxOriginDatabaseTest, BasicTest) {
- base::ScopedTempDir dir;
- ASSERT_TRUE(dir.CreateUniqueTempDir());
- const base::FilePath kFSDir = dir.path().Append(kFileSystemDirName);
- EXPECT_FALSE(base::PathExists(kFSDir));
- EXPECT_TRUE(base::CreateDirectory(kFSDir));
-
- SandboxOriginDatabase database(kFSDir, NULL);
- std::string origin("origin");
-
- EXPECT_FALSE(database.HasOriginPath(origin));
- // Double-check to make sure that had no side effects.
- EXPECT_FALSE(database.HasOriginPath(origin));
-
- base::FilePath path0;
- base::FilePath path1;
-
- // Empty strings aren't valid origins.
- EXPECT_FALSE(database.GetPathForOrigin(std::string(), &path0));
-
- EXPECT_TRUE(database.GetPathForOrigin(origin, &path0));
- EXPECT_TRUE(database.HasOriginPath(origin));
- EXPECT_TRUE(database.GetPathForOrigin(origin, &path1));
- EXPECT_FALSE(path0.empty());
- EXPECT_FALSE(path1.empty());
- EXPECT_EQ(path0, path1);
-
- EXPECT_TRUE(base::PathExists(kFSDir.Append(kOriginDatabaseName)));
-}
-
-TEST(SandboxOriginDatabaseTest, TwoPathTest) {
- base::ScopedTempDir dir;
- ASSERT_TRUE(dir.CreateUniqueTempDir());
- const base::FilePath kFSDir = dir.path().Append(kFileSystemDirName);
- EXPECT_FALSE(base::PathExists(kFSDir));
- EXPECT_TRUE(base::CreateDirectory(kFSDir));
-
- SandboxOriginDatabase database(kFSDir, NULL);
- std::string origin0("origin0");
- std::string origin1("origin1");
-
- EXPECT_FALSE(database.HasOriginPath(origin0));
- EXPECT_FALSE(database.HasOriginPath(origin1));
-
- base::FilePath path0;
- base::FilePath path1;
- EXPECT_TRUE(database.GetPathForOrigin(origin0, &path0));
- EXPECT_TRUE(database.HasOriginPath(origin0));
- EXPECT_FALSE(database.HasOriginPath(origin1));
- EXPECT_TRUE(database.GetPathForOrigin(origin1, &path1));
- EXPECT_TRUE(database.HasOriginPath(origin1));
- EXPECT_FALSE(path0.empty());
- EXPECT_FALSE(path1.empty());
- EXPECT_NE(path0, path1);
-
- EXPECT_TRUE(base::PathExists(kFSDir.Append(kOriginDatabaseName)));
-}
-
-TEST(SandboxOriginDatabaseTest, DropDatabaseTest) {
- base::ScopedTempDir dir;
- ASSERT_TRUE(dir.CreateUniqueTempDir());
- const base::FilePath kFSDir = dir.path().Append(kFileSystemDirName);
- EXPECT_FALSE(base::PathExists(kFSDir));
- EXPECT_TRUE(base::CreateDirectory(kFSDir));
-
- SandboxOriginDatabase database(kFSDir, NULL);
- std::string origin("origin");
-
- EXPECT_FALSE(database.HasOriginPath(origin));
-
- base::FilePath path0;
- EXPECT_TRUE(database.GetPathForOrigin(origin, &path0));
- EXPECT_TRUE(database.HasOriginPath(origin));
- EXPECT_FALSE(path0.empty());
-
- EXPECT_TRUE(base::PathExists(kFSDir.Append(kOriginDatabaseName)));
-
- database.DropDatabase();
-
- base::FilePath path1;
- EXPECT_TRUE(database.HasOriginPath(origin));
- EXPECT_TRUE(database.GetPathForOrigin(origin, &path1));
- EXPECT_FALSE(path1.empty());
- EXPECT_EQ(path0, path1);
-}
-
-TEST(SandboxOriginDatabaseTest, DeleteOriginTest) {
- base::ScopedTempDir dir;
- ASSERT_TRUE(dir.CreateUniqueTempDir());
- const base::FilePath kFSDir = dir.path().Append(kFileSystemDirName);
- EXPECT_FALSE(base::PathExists(kFSDir));
- EXPECT_TRUE(base::CreateDirectory(kFSDir));
-
- SandboxOriginDatabase database(kFSDir, NULL);
- std::string origin("origin");
-
- EXPECT_FALSE(database.HasOriginPath(origin));
- EXPECT_TRUE(database.RemovePathForOrigin(origin));
-
- base::FilePath path0;
- EXPECT_TRUE(database.GetPathForOrigin(origin, &path0));
- EXPECT_TRUE(database.HasOriginPath(origin));
- EXPECT_FALSE(path0.empty());
-
- EXPECT_TRUE(database.RemovePathForOrigin(origin));
- EXPECT_FALSE(database.HasOriginPath(origin));
-
- base::FilePath path1;
- EXPECT_TRUE(database.GetPathForOrigin(origin, &path1));
- EXPECT_FALSE(path1.empty());
- EXPECT_NE(path0, path1);
-}
-
-TEST(SandboxOriginDatabaseTest, ListOriginsTest) {
- base::ScopedTempDir dir;
- ASSERT_TRUE(dir.CreateUniqueTempDir());
- const base::FilePath kFSDir = dir.path().Append(kFileSystemDirName);
- EXPECT_FALSE(base::PathExists(kFSDir));
- EXPECT_TRUE(base::CreateDirectory(kFSDir));
-
- std::vector<SandboxOriginDatabase::OriginRecord> origins;
-
- SandboxOriginDatabase database(kFSDir, NULL);
- EXPECT_TRUE(database.ListAllOrigins(&origins));
- EXPECT_TRUE(origins.empty());
- origins.clear();
-
- std::string origin0("origin0");
- std::string origin1("origin1");
-
- EXPECT_FALSE(database.HasOriginPath(origin0));
- EXPECT_FALSE(database.HasOriginPath(origin1));
-
- base::FilePath path0;
- base::FilePath path1;
- EXPECT_TRUE(database.GetPathForOrigin(origin0, &path0));
- EXPECT_TRUE(database.ListAllOrigins(&origins));
- EXPECT_EQ(origins.size(), 1UL);
- EXPECT_EQ(origins[0].origin, origin0);
- EXPECT_EQ(origins[0].path, path0);
- origins.clear();
- EXPECT_TRUE(database.GetPathForOrigin(origin1, &path1));
- EXPECT_TRUE(database.ListAllOrigins(&origins));
- EXPECT_EQ(origins.size(), 2UL);
- if (origins[0].origin == origin0) {
- EXPECT_EQ(origins[0].path, path0);
- EXPECT_EQ(origins[1].origin, origin1);
- EXPECT_EQ(origins[1].path, path1);
- } else {
- EXPECT_EQ(origins[0].origin, origin1);
- EXPECT_EQ(origins[0].path, path1);
- EXPECT_EQ(origins[1].origin, origin0);
- EXPECT_EQ(origins[1].path, path0);
- }
-}
-
-TEST(SandboxOriginDatabaseTest, DatabaseRecoveryTest) {
- // Checks if SandboxOriginDatabase properly handles database corruption.
- // In this test, we'll register some origins to the origin database, then
- // corrupt database and its log file.
- // After repairing, the origin database should be consistent even when some
- // entries lost.
-
- base::ScopedTempDir dir;
- ASSERT_TRUE(dir.CreateUniqueTempDir());
- const base::FilePath kFSDir = dir.path().Append(kFileSystemDirName);
- const base::FilePath kDBDir = kFSDir.Append(kOriginDatabaseName);
- EXPECT_FALSE(base::PathExists(kFSDir));
- EXPECT_TRUE(base::CreateDirectory(kFSDir));
-
- const std::string kOrigins[] = {
- "foo.example.com",
- "bar.example.com",
- "baz.example.com",
- "hoge.example.com",
- "fuga.example.com",
- };
-
- scoped_ptr<SandboxOriginDatabase> database(
- new SandboxOriginDatabase(kFSDir, NULL));
- for (size_t i = 0; i < arraysize(kOrigins); ++i) {
- base::FilePath path;
- EXPECT_FALSE(database->HasOriginPath(kOrigins[i]));
- EXPECT_TRUE(database->GetPathForOrigin(kOrigins[i], &path));
- EXPECT_FALSE(path.empty());
- EXPECT_TRUE(database->GetPathForOrigin(kOrigins[i], &path));
-
- if (i != 1)
- EXPECT_TRUE(base::CreateDirectory(kFSDir.Append(path)));
- }
- database.reset();
-
- const base::FilePath kGarbageDir = kFSDir.AppendASCII("foo");
- const base::FilePath kGarbageFile = kGarbageDir.AppendASCII("bar");
- EXPECT_TRUE(base::CreateDirectory(kGarbageDir));
- base::File file(kGarbageFile,
- base::File::FLAG_CREATE | base::File::FLAG_WRITE);
- EXPECT_TRUE(file.IsValid());
- file.Close();
-
- // Corrupt database itself and last log entry to drop last 1 database
- // operation. The database should detect the corruption and should recover
- // its consistency after recovery.
- CorruptDatabase(kDBDir, leveldb::kDescriptorFile,
- 0, std::numeric_limits<size_t>::max());
- CorruptDatabase(kDBDir, leveldb::kLogFile, -1, 1);
-
- base::FilePath path;
- database.reset(new SandboxOriginDatabase(kFSDir, NULL));
- std::vector<SandboxOriginDatabase::OriginRecord> origins_in_db;
- EXPECT_TRUE(database->ListAllOrigins(&origins_in_db));
-
- // Expect all but last added origin will be repaired back, and kOrigins[1]
- // should be dropped due to absence of backing directory.
- EXPECT_EQ(arraysize(kOrigins) - 2, origins_in_db.size());
-
- const std::string kOrigin("piyo.example.org");
- EXPECT_FALSE(database->HasOriginPath(kOrigin));
- EXPECT_TRUE(database->GetPathForOrigin(kOrigin, &path));
- EXPECT_FALSE(path.empty());
- EXPECT_TRUE(database->HasOriginPath(kOrigin));
-
- EXPECT_FALSE(base::PathExists(kGarbageFile));
- EXPECT_FALSE(base::PathExists(kGarbageDir));
-}
-
-TEST(SandboxOriginDatabaseTest, DatabaseRecoveryForMissingDBFileTest) {
- const leveldb::FileType kLevelDBFileTypes[] = {
- leveldb::kLogFile,
- leveldb::kDBLockFile,
- leveldb::kTableFile,
- leveldb::kDescriptorFile,
- leveldb::kCurrentFile,
- leveldb::kTempFile,
- leveldb::kInfoLogFile,
- };
-
- for (size_t i = 0; i < arraysize(kLevelDBFileTypes); ++i) {
- base::ScopedTempDir dir;
- ASSERT_TRUE(dir.CreateUniqueTempDir());
- const base::FilePath kFSDir = dir.path().Append(kFileSystemDirName);
- const base::FilePath kDBDir = kFSDir.Append(kOriginDatabaseName);
- EXPECT_FALSE(base::PathExists(kFSDir));
- EXPECT_TRUE(base::CreateDirectory(kFSDir));
-
- const std::string kOrigin = "foo.example.com";
- base::FilePath path;
-
- scoped_ptr<SandboxOriginDatabase> database(
- new SandboxOriginDatabase(kFSDir, NULL));
- EXPECT_FALSE(database->HasOriginPath(kOrigin));
- EXPECT_TRUE(database->GetPathForOrigin(kOrigin, &path));
- EXPECT_FALSE(path.empty());
- EXPECT_TRUE(database->GetPathForOrigin(kOrigin, &path));
- EXPECT_TRUE(base::CreateDirectory(kFSDir.Append(path)));
- database.reset();
-
- DeleteDatabaseFile(kDBDir, kLevelDBFileTypes[i]);
-
- database.reset(new SandboxOriginDatabase(kFSDir, NULL));
- std::vector<SandboxOriginDatabase::OriginRecord> origins_in_db;
- EXPECT_TRUE(database->ListAllOrigins(&origins_in_db));
-
- const std::string kOrigin2("piyo.example.org");
- EXPECT_FALSE(database->HasOriginPath(kOrigin2));
- EXPECT_TRUE(database->GetPathForOrigin(kOrigin2, &path));
- EXPECT_FALSE(path.empty());
- EXPECT_TRUE(database->HasOriginPath(kOrigin2));
- }
-}
-
-} // namespace fileapi

Powered by Google App Engine
This is Rietveld 408576698