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 |