| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/files/file.h" | 5 #include "base/files/file.h" |
| 6 #include "base/files/file_enumerator.h" | 6 #include "base/files/file_enumerator.h" |
| 7 #include "base/files/file_path.h" | 7 #include "base/files/file_path.h" |
| 8 #include "base/files/file_util.h" | 8 #include "base/files/file_util.h" |
| 9 #include "base/files/scoped_temp_dir.h" | 9 #include "base/files/scoped_temp_dir.h" |
| 10 #include "base/test/test_suite.h" | 10 #include "base/test/test_suite.h" |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 TEST(ErrorEncoding, NoEncodedMessage) { | 52 TEST(ErrorEncoding, NoEncodedMessage) { |
| 53 Status s = Status::IOError("Some message", "from leveldb itself"); | 53 Status s = Status::IOError("Some message", "from leveldb itself"); |
| 54 MethodID method = leveldb_env::kRandomAccessFileRead; | 54 MethodID method = leveldb_env::kRandomAccessFileRead; |
| 55 base::File::Error error = base::File::FILE_ERROR_MAX; | 55 base::File::Error error = base::File::FILE_ERROR_MAX; |
| 56 EXPECT_EQ(leveldb_env::NONE, ParseMethodAndError(s, &method, &error)); | 56 EXPECT_EQ(leveldb_env::NONE, ParseMethodAndError(s, &method, &error)); |
| 57 EXPECT_EQ(leveldb_env::kRandomAccessFileRead, method); | 57 EXPECT_EQ(leveldb_env::kRandomAccessFileRead, method); |
| 58 EXPECT_EQ(base::File::FILE_ERROR_MAX, error); | 58 EXPECT_EQ(base::File::FILE_ERROR_MAX, error); |
| 59 } | 59 } |
| 60 | 60 |
| 61 template <typename T> | 61 template <typename T> |
| 62 class MyEnv : public T { | |
| 63 public: | |
| 64 MyEnv() : directory_syncs_(0) {} | |
| 65 int directory_syncs() { return directory_syncs_; } | |
| 66 | |
| 67 protected: | |
| 68 virtual void DidSyncDir(const std::string& fname) { | |
| 69 ++directory_syncs_; | |
| 70 leveldb_env::ChromiumEnv::DidSyncDir(fname); | |
| 71 } | |
| 72 | |
| 73 private: | |
| 74 int directory_syncs_; | |
| 75 }; | |
| 76 | |
| 77 template <typename T> | |
| 78 class ChromiumEnvMultiPlatformTests : public ::testing::Test { | 62 class ChromiumEnvMultiPlatformTests : public ::testing::Test { |
| 79 public: | 63 public: |
| 80 }; | 64 }; |
| 81 | 65 |
| 82 typedef ::testing::Types<ChromiumEnv> ChromiumEnvMultiPlatformTestsTypes; | 66 typedef ::testing::Types<ChromiumEnv> ChromiumEnvMultiPlatformTestsTypes; |
| 83 TYPED_TEST_CASE(ChromiumEnvMultiPlatformTests, | 67 TYPED_TEST_CASE(ChromiumEnvMultiPlatformTests, |
| 84 ChromiumEnvMultiPlatformTestsTypes); | 68 ChromiumEnvMultiPlatformTestsTypes); |
| 85 | 69 |
| 86 TYPED_TEST(ChromiumEnvMultiPlatformTests, DirectorySyncing) { | |
| 87 MyEnv<TypeParam> env; | |
| 88 | |
| 89 base::ScopedTempDir dir; | |
| 90 ASSERT_TRUE(dir.CreateUniqueTempDir()); | |
| 91 base::FilePath dir_path = dir.path(); | |
| 92 std::string some_data = "some data"; | |
| 93 Slice data = some_data; | |
| 94 | |
| 95 std::string manifest_file_name = | |
| 96 dir_path.Append(FILE_PATH_LITERAL("MANIFEST-001")).AsUTF8Unsafe(); | |
| 97 WritableFile* manifest_file_ptr; | |
| 98 Status s = env.NewWritableFile(manifest_file_name, &manifest_file_ptr); | |
| 99 EXPECT_TRUE(s.ok()); | |
| 100 scoped_ptr<WritableFile> manifest_file(manifest_file_ptr); | |
| 101 manifest_file->Append(data); | |
| 102 EXPECT_EQ(0, env.directory_syncs()); | |
| 103 manifest_file->Append(data); | |
| 104 EXPECT_EQ(0, env.directory_syncs()); | |
| 105 | |
| 106 std::string sst_file_name = | |
| 107 dir_path.Append(FILE_PATH_LITERAL("000003.sst")).AsUTF8Unsafe(); | |
| 108 WritableFile* sst_file_ptr; | |
| 109 s = env.NewWritableFile(sst_file_name, &sst_file_ptr); | |
| 110 EXPECT_TRUE(s.ok()); | |
| 111 scoped_ptr<WritableFile> sst_file(sst_file_ptr); | |
| 112 sst_file->Append(data); | |
| 113 EXPECT_EQ(0, env.directory_syncs()); | |
| 114 | |
| 115 manifest_file->Append(data); | |
| 116 EXPECT_EQ(1, env.directory_syncs()); | |
| 117 manifest_file->Append(data); | |
| 118 EXPECT_EQ(1, env.directory_syncs()); | |
| 119 } | |
| 120 | |
| 121 int CountFilesWithExtension(const base::FilePath& dir, | 70 int CountFilesWithExtension(const base::FilePath& dir, |
| 122 const base::FilePath::StringType& extension) { | 71 const base::FilePath::StringType& extension) { |
| 123 int matching_files = 0; | 72 int matching_files = 0; |
| 124 base::FileEnumerator dir_reader( | 73 base::FileEnumerator dir_reader( |
| 125 dir, false, base::FileEnumerator::FILES); | 74 dir, false, base::FileEnumerator::FILES); |
| 126 for (base::FilePath fname = dir_reader.Next(); !fname.empty(); | 75 for (base::FilePath fname = dir_reader.Next(); !fname.empty(); |
| 127 fname = dir_reader.Next()) { | 76 fname = dir_reader.Next()) { |
| 128 if (fname.MatchesExtension(extension)) | 77 if (fname.MatchesExtension(extension)) |
| 129 matching_files++; | 78 matching_files++; |
| 130 } | 79 } |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 EXPECT_TRUE(status.ok()); | 171 EXPECT_TRUE(status.ok()); |
| 223 EXPECT_EQ(1U, result.size()); | 172 EXPECT_EQ(1U, result.size()); |
| 224 | 173 |
| 225 // And a second time should also return one result | 174 // And a second time should also return one result |
| 226 status = env->GetChildren(dir.AsUTF8Unsafe(), &result); | 175 status = env->GetChildren(dir.AsUTF8Unsafe(), &result); |
| 227 EXPECT_TRUE(status.ok()); | 176 EXPECT_TRUE(status.ok()); |
| 228 EXPECT_EQ(1U, result.size()); | 177 EXPECT_EQ(1U, result.size()); |
| 229 } | 178 } |
| 230 | 179 |
| 231 int main(int argc, char** argv) { return base::TestSuite(argc, argv).Run(); } | 180 int main(int argc, char** argv) { return base::TestSuite(argc, argv).Run(); } |
| OLD | NEW |