diff options
Diffstat (limited to 'chromium/net/disk_cache/simple/simple_index_file_unittest.cc')
-rw-r--r-- | chromium/net/disk_cache/simple/simple_index_file_unittest.cc | 51 |
1 files changed, 42 insertions, 9 deletions
diff --git a/chromium/net/disk_cache/simple/simple_index_file_unittest.cc b/chromium/net/disk_cache/simple/simple_index_file_unittest.cc index ae4945a045b..3f1bca572dd 100644 --- a/chromium/net/disk_cache/simple/simple_index_file_unittest.cc +++ b/chromium/net/disk_cache/simple/simple_index_file_unittest.cc @@ -87,6 +87,10 @@ class WrappedSimpleIndexFile : public SimpleIndexFile { return index_file_; } + const base::FilePath& GetTempIndexFilePath() const { + return temp_index_file_; + } + bool CreateIndexFileDirectory() const { return base::CreateDirectory(index_file_.DirName()); } @@ -104,14 +108,14 @@ class SimpleIndexFileTest : public testing::Test { TEST_F(SimpleIndexFileTest, Serialize) { SimpleIndex::EntrySet entries; - static const uint64 kHashes[] = { 11, 22, 33 }; + static const uint64_t kHashes[] = {11, 22, 33}; static const size_t kNumHashes = arraysize(kHashes); EntryMetadata metadata_entries[kNumHashes]; - SimpleIndexFile::IndexMetadata index_metadata(static_cast<uint64>(kNumHashes), - 456); + SimpleIndexFile::IndexMetadata index_metadata( + static_cast<uint64_t>(kNumHashes), 456); for (size_t i = 0; i < kNumHashes; ++i) { - uint64 hash = kHashes[i]; + uint64_t hash = kHashes[i]; metadata_entries[i] = EntryMetadata(Time(), hash); SimpleIndex::InsertInEntrySet(hash, metadata_entries[i], &entries); } @@ -177,16 +181,16 @@ TEST_F(SimpleIndexFileTest, WriteThenLoadIndex) { ASSERT_TRUE(cache_dir.CreateUniqueTempDir()); SimpleIndex::EntrySet entries; - static const uint64 kHashes[] = { 11, 22, 33 }; + static const uint64_t kHashes[] = {11, 22, 33}; static const size_t kNumHashes = arraysize(kHashes); EntryMetadata metadata_entries[kNumHashes]; for (size_t i = 0; i < kNumHashes; ++i) { - uint64 hash = kHashes[i]; + uint64_t hash = kHashes[i]; metadata_entries[i] = EntryMetadata(Time(), hash); SimpleIndex::InsertInEntrySet(hash, metadata_entries[i], &entries); } - const uint64 kCacheSize = 456U; + const uint64_t kCacheSize = 456U; net::TestClosure closure; { WrappedSimpleIndexFile simple_index_file(cache_dir.path()); @@ -288,8 +292,8 @@ TEST_F(SimpleIndexFileTest, SimpleCacheUpgrade) { // thread after that. MessageLoopHelper helper; CallbackTest cb_shutdown(&helper, false); - cache_thread.task_runner()->PostTask( - FROM_HERE, + cache_thread.task_runner()->PostTaskAndReply( + FROM_HERE, base::Bind(&base::DoNothing), base::Bind(&CallbackTest::Run, base::Unretained(&cb_shutdown), net::OK)); helper.WaitUntilCacheIoFinished(1); @@ -310,6 +314,35 @@ TEST_F(SimpleIndexFileTest, SimpleCacheUpgrade) { EXPECT_TRUE(deserialize_result.did_load); } +TEST_F(SimpleIndexFileTest, OverwritesStaleTempFile) { + base::ScopedTempDir cache_dir; + ASSERT_TRUE(cache_dir.CreateUniqueTempDir()); + const base::FilePath cache_path = cache_dir.path(); + WrappedSimpleIndexFile simple_index_file(cache_path); + ASSERT_TRUE(simple_index_file.CreateIndexFileDirectory()); + + // Create an temporary index file. + const base::FilePath& temp_index_path = + simple_index_file.GetTempIndexFilePath(); + const std::string kDummyData = "nothing to be seen here"; + EXPECT_EQ( + static_cast<int>(kDummyData.size()), + base::WriteFile(temp_index_path, kDummyData.data(), kDummyData.size())); + ASSERT_TRUE(base::PathExists(simple_index_file.GetTempIndexFilePath())); + + // Write the index file. + SimpleIndex::EntrySet entries; + SimpleIndex::InsertInEntrySet(11, EntryMetadata(Time(), 11), &entries); + net::TestClosure closure; + simple_index_file.WriteToDisk(entries, 120U, base::TimeTicks(), false, + closure.closure()); + closure.WaitForResult(); + + // Check that the temporary file was deleted and the index file was created. + EXPECT_FALSE(base::PathExists(simple_index_file.GetTempIndexFilePath())); + EXPECT_TRUE(base::PathExists(simple_index_file.GetIndexFilePath())); +} + #endif // defined(OS_POSIX) } // namespace disk_cache |