OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <stdint.h> | 5 #include <stdint.h> |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/files/file_util.h" | 8 #include "base/files/file_util.h" |
9 #include "base/metrics/field_trial.h" | 9 #include "base/metrics/field_trial.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 const int kNumEntries = 10; | 245 const int kNumEntries = 10; |
246 | 246 |
247 for (int i = 0; i < kNumEntries; ++i) { | 247 for (int i = 0; i < kNumEntries; ++i) { |
248 std::string key = GenerateKey(true); | 248 std::string key = GenerateKey(true); |
249 disk_cache::Entry* entry; | 249 disk_cache::Entry* entry; |
250 if (CreateEntry(key, &entry) != net::OK) | 250 if (CreateEntry(key, &entry) != net::OK) |
251 return false; | 251 return false; |
252 key_pool->insert(key); | 252 key_pool->insert(key); |
253 entry->Close(); | 253 entry->Close(); |
254 } | 254 } |
255 return key_pool->size() == implicit_cast<size_t>(cache_->GetEntryCount()); | 255 return key_pool->size() == static_cast<size_t>(cache_->GetEntryCount()); |
256 } | 256 } |
257 | 257 |
258 // Performs iteration over the backend and checks that the keys of entries | 258 // Performs iteration over the backend and checks that the keys of entries |
259 // opened are in |keys_to_match|, then erases them. Up to |max_to_open| entries | 259 // opened are in |keys_to_match|, then erases them. Up to |max_to_open| entries |
260 // will be opened, if it is positive. Otherwise, iteration will continue until | 260 // will be opened, if it is positive. Otherwise, iteration will continue until |
261 // OpenNextEntry stops returning net::OK. | 261 // OpenNextEntry stops returning net::OK. |
262 bool DiskCacheBackendTest::EnumerateAndMatchKeys( | 262 bool DiskCacheBackendTest::EnumerateAndMatchKeys( |
263 int max_to_open, | 263 int max_to_open, |
264 TestIterator* iter, | 264 TestIterator* iter, |
265 std::set<std::string>* keys_to_match, | 265 std::set<std::string>* keys_to_match, |
266 size_t* count) { | 266 size_t* count) { |
267 disk_cache::Entry* entry; | 267 disk_cache::Entry* entry; |
268 | 268 |
269 if (!iter) | 269 if (!iter) |
270 return false; | 270 return false; |
271 while (iter->OpenNextEntry(&entry) == net::OK) { | 271 while (iter->OpenNextEntry(&entry) == net::OK) { |
272 if (!entry) | 272 if (!entry) |
273 return false; | 273 return false; |
274 EXPECT_EQ(1U, keys_to_match->erase(entry->GetKey())); | 274 EXPECT_EQ(1U, keys_to_match->erase(entry->GetKey())); |
275 entry->Close(); | 275 entry->Close(); |
276 ++(*count); | 276 ++(*count); |
277 if (max_to_open >= 0 && implicit_cast<int>(*count) >= max_to_open) | 277 if (max_to_open >= 0 && static_cast<int>(*count) >= max_to_open) |
278 break; | 278 break; |
279 }; | 279 }; |
280 | 280 |
281 return true; | 281 return true; |
282 } | 282 } |
283 | 283 |
284 void DiskCacheBackendTest::BackendBasics() { | 284 void DiskCacheBackendTest::BackendBasics() { |
285 InitCache(); | 285 InitCache(); |
286 disk_cache::Entry *entry1 = NULL, *entry2 = NULL; | 286 disk_cache::Entry *entry1 = NULL, *entry2 = NULL; |
287 EXPECT_NE(net::OK, OpenEntry("the first key", &entry1)); | 287 EXPECT_NE(net::OK, OpenEntry("the first key", &entry1)); |
(...skipping 3032 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3320 // The entry is being closed on the Simple Cache worker pool | 3320 // The entry is being closed on the Simple Cache worker pool |
3321 disk_cache::SimpleBackendImpl::FlushWorkerPoolForTesting(); | 3321 disk_cache::SimpleBackendImpl::FlushWorkerPoolForTesting(); |
3322 base::RunLoop().RunUntilIdle(); | 3322 base::RunLoop().RunUntilIdle(); |
3323 | 3323 |
3324 // Write an invalid header for stream 0 and stream 1. | 3324 // Write an invalid header for stream 0 and stream 1. |
3325 base::FilePath entry_file1_path = cache_path_.AppendASCII( | 3325 base::FilePath entry_file1_path = cache_path_.AppendASCII( |
3326 disk_cache::simple_util::GetFilenameFromKeyAndFileIndex(key, 0)); | 3326 disk_cache::simple_util::GetFilenameFromKeyAndFileIndex(key, 0)); |
3327 | 3327 |
3328 disk_cache::SimpleFileHeader header; | 3328 disk_cache::SimpleFileHeader header; |
3329 header.initial_magic_number = UINT64_C(0xbadf00d); | 3329 header.initial_magic_number = UINT64_C(0xbadf00d); |
3330 EXPECT_EQ( | 3330 EXPECT_EQ(static_cast<int>(sizeof(header)), |
3331 implicit_cast<int>(sizeof(header)), | 3331 base::WriteFile(entry_file1_path, reinterpret_cast<char*>(&header), |
3332 base::WriteFile(entry_file1_path, reinterpret_cast<char*>(&header), | 3332 sizeof(header))); |
3333 sizeof(header))); | |
3334 ASSERT_EQ(net::ERR_FAILED, OpenEntry(key, &entry)); | 3333 ASSERT_EQ(net::ERR_FAILED, OpenEntry(key, &entry)); |
3335 } | 3334 } |
3336 | 3335 |
3337 // Tests that the Simple Cache Backend fails to initialize with non-matching | 3336 // Tests that the Simple Cache Backend fails to initialize with non-matching |
3338 // file structure on disk. | 3337 // file structure on disk. |
3339 TEST_F(DiskCacheBackendTest, SimpleCacheOverBlockfileCache) { | 3338 TEST_F(DiskCacheBackendTest, SimpleCacheOverBlockfileCache) { |
3340 // Create a cache structure with the |BackendImpl|. | 3339 // Create a cache structure with the |BackendImpl|. |
3341 InitCache(); | 3340 InitCache(); |
3342 disk_cache::Entry* entry; | 3341 disk_cache::Entry* entry; |
3343 const int kSize = 50; | 3342 const int kSize = 50; |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3482 const int kSize = 50; | 3481 const int kSize = 50; |
3483 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kSize)); | 3482 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kSize)); |
3484 CacheTestFillBuffer(buffer->data(), kSize, false); | 3483 CacheTestFillBuffer(buffer->data(), kSize, false); |
3485 ASSERT_EQ(kSize, | 3484 ASSERT_EQ(kSize, |
3486 WriteData(corrupted_entry, 0, 0, buffer.get(), kSize, false)); | 3485 WriteData(corrupted_entry, 0, 0, buffer.get(), kSize, false)); |
3487 ASSERT_EQ(kSize, ReadData(corrupted_entry, 0, 0, buffer.get(), kSize)); | 3486 ASSERT_EQ(kSize, ReadData(corrupted_entry, 0, 0, buffer.get(), kSize)); |
3488 corrupted_entry->Close(); | 3487 corrupted_entry->Close(); |
3489 | 3488 |
3490 EXPECT_TRUE(disk_cache::simple_util::CreateCorruptFileForTests( | 3489 EXPECT_TRUE(disk_cache::simple_util::CreateCorruptFileForTests( |
3491 key, cache_path_)); | 3490 key, cache_path_)); |
3492 EXPECT_EQ(key_pool.size() + 1, | 3491 EXPECT_EQ(key_pool.size() + 1, static_cast<size_t>(cache_->GetEntryCount())); |
3493 implicit_cast<size_t>(cache_->GetEntryCount())); | |
3494 | 3492 |
3495 // Check that enumeration returns all entries but the corrupt one. | 3493 // Check that enumeration returns all entries but the corrupt one. |
3496 std::set<std::string> keys_to_match(key_pool); | 3494 std::set<std::string> keys_to_match(key_pool); |
3497 scoped_ptr<TestIterator> iter = CreateIterator(); | 3495 scoped_ptr<TestIterator> iter = CreateIterator(); |
3498 size_t count = 0; | 3496 size_t count = 0; |
3499 ASSERT_TRUE(EnumerateAndMatchKeys(-1, iter.get(), &keys_to_match, &count)); | 3497 ASSERT_TRUE(EnumerateAndMatchKeys(-1, iter.get(), &keys_to_match, &count)); |
3500 iter.reset(); | 3498 iter.reset(); |
3501 | 3499 |
3502 EXPECT_EQ(key_pool.size(), count); | 3500 EXPECT_EQ(key_pool.size(), count); |
3503 EXPECT_TRUE(keys_to_match.empty()); | 3501 EXPECT_TRUE(keys_to_match.empty()); |
(...skipping 21 matching lines...) Expand all Loading... |
3525 // after closing. | 3523 // after closing. |
3526 // NOTE: IF THIS TEST IS FLAKY THEN IT IS FAILING. See https://crbug.com/416940 | 3524 // NOTE: IF THIS TEST IS FLAKY THEN IT IS FAILING. See https://crbug.com/416940 |
3527 TEST_F(DiskCacheBackendTest, SimpleCacheDeleteQuickly) { | 3525 TEST_F(DiskCacheBackendTest, SimpleCacheDeleteQuickly) { |
3528 SetSimpleCacheMode(); | 3526 SetSimpleCacheMode(); |
3529 for (int i = 0; i < 100; ++i) { | 3527 for (int i = 0; i < 100; ++i) { |
3530 InitCache(); | 3528 InitCache(); |
3531 cache_.reset(); | 3529 cache_.reset(); |
3532 EXPECT_TRUE(CleanupCacheDir()); | 3530 EXPECT_TRUE(CleanupCacheDir()); |
3533 } | 3531 } |
3534 } | 3532 } |
OLD | NEW |