Chromium Code Reviews| 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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 #include "base/file_util.h" | 6 #include "base/file_util.h" |
| 7 #include "base/metrics/field_trial.h" | 7 #include "base/metrics/field_trial.h" |
| 8 #include "base/port.h" | 8 #include "base/port.h" |
| 9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
| 10 #include "base/strings/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 34 #if defined(OS_WIN) | 34 #if defined(OS_WIN) |
| 35 #include "base/win/scoped_handle.h" | 35 #include "base/win/scoped_handle.h" |
| 36 #endif | 36 #endif |
| 37 | 37 |
| 38 using base::Time; | 38 using base::Time; |
| 39 | 39 |
| 40 namespace { | 40 namespace { |
| 41 | 41 |
| 42 const char kExistingEntryKey[] = "existing entry key"; | 42 const char kExistingEntryKey[] = "existing entry key"; |
| 43 | 43 |
| 44 disk_cache::BackendImpl* CreateExistingEntryCache( | 44 scoped_ptr<disk_cache::BackendImpl> CreateExistingEntryCache( |
| 45 const base::Thread& cache_thread, | 45 const base::Thread& cache_thread, |
| 46 base::FilePath& cache_path) { | 46 base::FilePath& cache_path) { |
| 47 net::TestCompletionCallback cb; | 47 net::TestCompletionCallback cb; |
| 48 | 48 |
| 49 disk_cache::BackendImpl* cache = new disk_cache::BackendImpl( | 49 scoped_ptr<disk_cache::BackendImpl> cache(new disk_cache::BackendImpl( |
| 50 cache_path, cache_thread.message_loop_proxy(), NULL); | 50 cache_path, cache_thread.message_loop_proxy(), NULL)); |
| 51 int rv = cache->Init(cb.callback()); | 51 int rv = cache->Init(cb.callback()); |
| 52 if (cb.GetResult(rv) != net::OK) | 52 if (cb.GetResult(rv) != net::OK) |
| 53 return NULL; | 53 return scoped_ptr<disk_cache::BackendImpl>(); |
| 54 | 54 |
| 55 disk_cache::Entry* entry = NULL; | 55 disk_cache::Entry* entry = NULL; |
| 56 rv = cache->CreateEntry(kExistingEntryKey, &entry, cb.callback()); | 56 rv = cache->CreateEntry(kExistingEntryKey, &entry, cb.callback()); |
| 57 if (cb.GetResult(rv) != net::OK) { | 57 if (cb.GetResult(rv) != net::OK) { |
| 58 delete cache; | 58 return scoped_ptr<disk_cache::BackendImpl>(); |
| 59 return NULL; | |
| 60 } | 59 } |
|
rvargas (doing something else)
2013/07/26 21:05:01
nit: remove {}
qsr
2013/07/29 08:26:28
Done.
| |
| 61 entry->Close(); | 60 entry->Close(); |
| 62 | 61 |
| 63 return cache; | 62 return cache.Pass(); |
| 64 } | 63 } |
| 65 | 64 |
| 66 } // namespace | 65 } // namespace |
| 67 | 66 |
| 68 // Tests that can run with different types of caches. | 67 // Tests that can run with different types of caches. |
| 69 class DiskCacheBackendTest : public DiskCacheTestWithCache { | 68 class DiskCacheBackendTest : public DiskCacheTestWithCache { |
| 70 protected: | 69 protected: |
| 71 void BackendBasics(); | 70 void BackendBasics(); |
| 72 void BackendKeying(); | 71 void BackendKeying(); |
| 73 void BackendShutdownWithPendingFileIO(bool fast); | 72 void BackendShutdownWithPendingFileIO(bool fast); |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 261 TEST_F(DiskCacheTest, CreateBackend) { | 260 TEST_F(DiskCacheTest, CreateBackend) { |
| 262 net::TestCompletionCallback cb; | 261 net::TestCompletionCallback cb; |
| 263 | 262 |
| 264 { | 263 { |
| 265 ASSERT_TRUE(CleanupCacheDir()); | 264 ASSERT_TRUE(CleanupCacheDir()); |
| 266 base::Thread cache_thread("CacheThread"); | 265 base::Thread cache_thread("CacheThread"); |
| 267 ASSERT_TRUE(cache_thread.StartWithOptions( | 266 ASSERT_TRUE(cache_thread.StartWithOptions( |
| 268 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); | 267 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); |
| 269 | 268 |
| 270 // Test the private factory method(s). | 269 // Test the private factory method(s). |
| 271 disk_cache::Backend* cache = NULL; | 270 scoped_ptr<disk_cache::Backend> cache; |
| 272 cache = disk_cache::MemBackendImpl::CreateBackend(0, NULL); | 271 cache = disk_cache::MemBackendImpl::CreateBackend(0, NULL); |
| 273 ASSERT_TRUE(cache); | 272 ASSERT_TRUE(cache.get()); |
| 274 delete cache; | 273 cache.reset(); |
| 275 cache = NULL; | |
| 276 | 274 |
| 277 // Now test the public API. | 275 // Now test the public API. |
| 278 int rv = | 276 int rv = |
| 279 disk_cache::CreateCacheBackend(net::DISK_CACHE, | 277 disk_cache::CreateCacheBackend(net::DISK_CACHE, |
| 280 net::CACHE_BACKEND_DEFAULT, | 278 net::CACHE_BACKEND_DEFAULT, |
| 281 cache_path_, | 279 cache_path_, |
| 282 0, | 280 0, |
| 283 false, | 281 false, |
| 284 cache_thread.message_loop_proxy().get(), | 282 cache_thread.message_loop_proxy().get(), |
| 285 NULL, | 283 NULL, |
| 286 &cache, | 284 &cache, |
| 287 cb.callback()); | 285 cb.callback()); |
| 288 ASSERT_EQ(net::OK, cb.GetResult(rv)); | 286 ASSERT_EQ(net::OK, cb.GetResult(rv)); |
| 289 ASSERT_TRUE(cache); | 287 ASSERT_TRUE(cache.get()); |
| 290 delete cache; | 288 cache.reset(); |
| 291 cache = NULL; | |
| 292 | 289 |
| 293 rv = disk_cache::CreateCacheBackend(net::MEMORY_CACHE, | 290 rv = disk_cache::CreateCacheBackend(net::MEMORY_CACHE, |
| 294 net::CACHE_BACKEND_DEFAULT, | 291 net::CACHE_BACKEND_DEFAULT, |
| 295 base::FilePath(), 0, | 292 base::FilePath(), 0, |
| 296 false, NULL, NULL, &cache, | 293 false, NULL, NULL, &cache, |
| 297 cb.callback()); | 294 cb.callback()); |
| 298 ASSERT_EQ(net::OK, cb.GetResult(rv)); | 295 ASSERT_EQ(net::OK, cb.GetResult(rv)); |
| 299 ASSERT_TRUE(cache); | 296 ASSERT_TRUE(cache.get()); |
| 300 delete cache; | 297 cache.reset(); |
| 301 } | 298 } |
| 302 | 299 |
| 303 base::MessageLoop::current()->RunUntilIdle(); | 300 base::MessageLoop::current()->RunUntilIdle(); |
| 304 } | 301 } |
| 305 | 302 |
| 306 // Tests that |BackendImpl| fails to initialize with a missing file. | 303 // Tests that |BackendImpl| fails to initialize with a missing file. |
| 307 TEST_F(DiskCacheBackendTest, CreateBackend_MissingFile) { | 304 TEST_F(DiskCacheBackendTest, CreateBackend_MissingFile) { |
| 308 ASSERT_TRUE(CopyTestCache("bad_entry")); | 305 ASSERT_TRUE(CopyTestCache("bad_entry")); |
| 309 base::FilePath filename = cache_path_.AppendASCII("data_1"); | 306 base::FilePath filename = cache_path_.AppendASCII("data_1"); |
| 310 base::DeleteFile(filename, false); | 307 base::DeleteFile(filename, false); |
| 311 base::Thread cache_thread("CacheThread"); | 308 base::Thread cache_thread("CacheThread"); |
| 312 ASSERT_TRUE(cache_thread.StartWithOptions( | 309 ASSERT_TRUE(cache_thread.StartWithOptions( |
| 313 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); | 310 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); |
| 314 net::TestCompletionCallback cb; | 311 net::TestCompletionCallback cb; |
| 315 | 312 |
| 316 bool prev = base::ThreadRestrictions::SetIOAllowed(false); | 313 bool prev = base::ThreadRestrictions::SetIOAllowed(false); |
| 317 disk_cache::BackendImpl* cache = new disk_cache::BackendImpl( | 314 scoped_ptr<disk_cache::BackendImpl> cache(new disk_cache::BackendImpl( |
| 318 cache_path_, cache_thread.message_loop_proxy().get(), NULL); | 315 cache_path_, cache_thread.message_loop_proxy().get(), NULL)); |
| 319 int rv = cache->Init(cb.callback()); | 316 int rv = cache->Init(cb.callback()); |
| 320 ASSERT_EQ(net::ERR_FAILED, cb.GetResult(rv)); | 317 ASSERT_EQ(net::ERR_FAILED, cb.GetResult(rv)); |
| 321 base::ThreadRestrictions::SetIOAllowed(prev); | 318 base::ThreadRestrictions::SetIOAllowed(prev); |
| 322 | 319 |
| 323 delete cache; | 320 cache.reset(); |
| 324 DisableIntegrityCheck(); | 321 DisableIntegrityCheck(); |
| 325 } | 322 } |
| 326 | 323 |
| 327 TEST_F(DiskCacheBackendTest, ExternalFiles) { | 324 TEST_F(DiskCacheBackendTest, ExternalFiles) { |
| 328 InitCache(); | 325 InitCache(); |
| 329 // First, let's create a file on the folder. | 326 // First, let's create a file on the folder. |
| 330 base::FilePath filename = cache_path_.AppendASCII("f_000001"); | 327 base::FilePath filename = cache_path_.AppendASCII("f_000001"); |
| 331 | 328 |
| 332 const int kSize = 50; | 329 const int kSize = 50; |
| 333 scoped_refptr<net::IOBuffer> buffer1(new net::IOBuffer(kSize)); | 330 scoped_refptr<net::IOBuffer> buffer1(new net::IOBuffer(kSize)); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 383 if (rv == net::ERR_IO_PENDING) | 380 if (rv == net::ERR_IO_PENDING) |
| 384 break; | 381 break; |
| 385 EXPECT_EQ(kSize, rv); | 382 EXPECT_EQ(kSize, rv); |
| 386 } | 383 } |
| 387 | 384 |
| 388 // Don't call Close() to avoid going through the queue or we'll deadlock | 385 // Don't call Close() to avoid going through the queue or we'll deadlock |
| 389 // waiting for the operation to finish. | 386 // waiting for the operation to finish. |
| 390 entry->Release(); | 387 entry->Release(); |
| 391 | 388 |
| 392 // The cache destructor will see one pending operation here. | 389 // The cache destructor will see one pending operation here. |
| 393 delete cache_; | 390 cache_.reset(); |
| 394 // Prevent the TearDown() to delete the backend again. | |
| 395 cache_ = NULL; | |
| 396 | 391 |
| 397 if (rv == net::ERR_IO_PENDING) { | 392 if (rv == net::ERR_IO_PENDING) { |
| 398 if (fast) | 393 if (fast) |
| 399 EXPECT_FALSE(cb.have_result()); | 394 EXPECT_FALSE(cb.have_result()); |
| 400 else | 395 else |
| 401 EXPECT_TRUE(cb.have_result()); | 396 EXPECT_TRUE(cb.have_result()); |
| 402 } | 397 } |
| 403 } | 398 } |
| 404 | 399 |
| 405 base::MessageLoop::current()->RunUntilIdle(); | 400 base::MessageLoop::current()->RunUntilIdle(); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 441 | 436 |
| 442 CreateBackend(flags, &cache_thread); | 437 CreateBackend(flags, &cache_thread); |
| 443 | 438 |
| 444 disk_cache::Entry* entry; | 439 disk_cache::Entry* entry; |
| 445 int rv = cache_->CreateEntry("some key", &entry, cb.callback()); | 440 int rv = cache_->CreateEntry("some key", &entry, cb.callback()); |
| 446 ASSERT_EQ(net::OK, cb.GetResult(rv)); | 441 ASSERT_EQ(net::OK, cb.GetResult(rv)); |
| 447 | 442 |
| 448 entry->Close(); | 443 entry->Close(); |
| 449 | 444 |
| 450 // The cache destructor will see one pending operation here. | 445 // The cache destructor will see one pending operation here. |
| 451 delete cache_; | 446 cache_.reset(); |
| 452 // Prevent the TearDown() to delete the backend again. | |
| 453 cache_ = NULL; | |
| 454 } | 447 } |
| 455 | 448 |
| 456 base::MessageLoop::current()->RunUntilIdle(); | 449 base::MessageLoop::current()->RunUntilIdle(); |
| 457 } | 450 } |
| 458 | 451 |
| 459 TEST_F(DiskCacheBackendTest, ShutdownWithPendingIO) { | 452 TEST_F(DiskCacheBackendTest, ShutdownWithPendingIO) { |
| 460 BackendShutdownWithPendingIO(false); | 453 BackendShutdownWithPendingIO(false); |
| 461 } | 454 } |
| 462 | 455 |
| 463 // We'll be leaking from this test. | 456 // We'll be leaking from this test. |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 479 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); | 472 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); |
| 480 | 473 |
| 481 disk_cache::BackendFlags flags = | 474 disk_cache::BackendFlags flags = |
| 482 fast ? disk_cache::kNone : disk_cache::kNoRandom; | 475 fast ? disk_cache::kNone : disk_cache::kNoRandom; |
| 483 CreateBackend(flags, &cache_thread); | 476 CreateBackend(flags, &cache_thread); |
| 484 | 477 |
| 485 disk_cache::Entry* entry; | 478 disk_cache::Entry* entry; |
| 486 int rv = cache_->CreateEntry("some key", &entry, cb.callback()); | 479 int rv = cache_->CreateEntry("some key", &entry, cb.callback()); |
| 487 ASSERT_EQ(net::ERR_IO_PENDING, rv); | 480 ASSERT_EQ(net::ERR_IO_PENDING, rv); |
| 488 | 481 |
| 489 delete cache_; | 482 cache_.reset(); |
| 490 // Prevent the TearDown() to delete the backend again. | |
| 491 cache_ = NULL; | |
| 492 EXPECT_FALSE(cb.have_result()); | 483 EXPECT_FALSE(cb.have_result()); |
| 493 } | 484 } |
| 494 | 485 |
| 495 base::MessageLoop::current()->RunUntilIdle(); | 486 base::MessageLoop::current()->RunUntilIdle(); |
| 496 } | 487 } |
| 497 | 488 |
| 498 TEST_F(DiskCacheBackendTest, ShutdownWithPendingCreate) { | 489 TEST_F(DiskCacheBackendTest, ShutdownWithPendingCreate) { |
| 499 BackendShutdownWithPendingCreate(false); | 490 BackendShutdownWithPendingCreate(false); |
| 500 } | 491 } |
| 501 | 492 |
| 502 // We'll be leaking an entry from this test. | 493 // We'll be leaking an entry from this test. |
| 503 TEST_F(DiskCacheBackendTest, ShutdownWithPendingCreate_Fast) { | 494 TEST_F(DiskCacheBackendTest, ShutdownWithPendingCreate_Fast) { |
| 504 // The integrity test sets kNoRandom so there's a version mismatch if we don't | 495 // The integrity test sets kNoRandom so there's a version mismatch if we don't |
| 505 // force new eviction. | 496 // force new eviction. |
| 506 SetNewEviction(); | 497 SetNewEviction(); |
| 507 BackendShutdownWithPendingCreate(true); | 498 BackendShutdownWithPendingCreate(true); |
| 508 } | 499 } |
| 509 | 500 |
| 510 TEST_F(DiskCacheTest, TruncatedIndex) { | 501 TEST_F(DiskCacheTest, TruncatedIndex) { |
| 511 ASSERT_TRUE(CleanupCacheDir()); | 502 ASSERT_TRUE(CleanupCacheDir()); |
| 512 base::FilePath index = cache_path_.AppendASCII("index"); | 503 base::FilePath index = cache_path_.AppendASCII("index"); |
| 513 ASSERT_EQ(5, file_util::WriteFile(index, "hello", 5)); | 504 ASSERT_EQ(5, file_util::WriteFile(index, "hello", 5)); |
| 514 | 505 |
| 515 base::Thread cache_thread("CacheThread"); | 506 base::Thread cache_thread("CacheThread"); |
| 516 ASSERT_TRUE(cache_thread.StartWithOptions( | 507 ASSERT_TRUE(cache_thread.StartWithOptions( |
| 517 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); | 508 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); |
| 518 net::TestCompletionCallback cb; | 509 net::TestCompletionCallback cb; |
| 519 | 510 |
| 520 disk_cache::Backend* backend = NULL; | 511 scoped_ptr<disk_cache::Backend> backend; |
| 521 int rv = | 512 int rv = |
| 522 disk_cache::CreateCacheBackend(net::DISK_CACHE, | 513 disk_cache::CreateCacheBackend(net::DISK_CACHE, |
| 523 net::CACHE_BACKEND_BLOCKFILE, | 514 net::CACHE_BACKEND_BLOCKFILE, |
| 524 cache_path_, | 515 cache_path_, |
| 525 0, | 516 0, |
| 526 false, | 517 false, |
| 527 cache_thread.message_loop_proxy().get(), | 518 cache_thread.message_loop_proxy().get(), |
| 528 NULL, | 519 NULL, |
| 529 &backend, | 520 &backend, |
| 530 cb.callback()); | 521 cb.callback()); |
| 531 ASSERT_NE(net::OK, cb.GetResult(rv)); | 522 ASSERT_NE(net::OK, cb.GetResult(rv)); |
| 532 | 523 |
| 533 ASSERT_TRUE(backend == NULL); | 524 ASSERT_TRUE(backend.get() == NULL); |
|
rvargas (doing something else)
2013/07/26 21:05:01
nit: false(get())
qsr
2013/07/29 08:26:28
Done.
| |
| 534 delete backend; | |
| 535 } | 525 } |
| 536 | 526 |
| 537 void DiskCacheBackendTest::BackendSetSize() { | 527 void DiskCacheBackendTest::BackendSetSize() { |
| 538 const int cache_size = 0x10000; // 64 kB | 528 const int cache_size = 0x10000; // 64 kB |
| 539 SetMaxSize(cache_size); | 529 SetMaxSize(cache_size); |
| 540 InitCache(); | 530 InitCache(); |
| 541 | 531 |
| 542 std::string first("some key"); | 532 std::string first("some key"); |
| 543 std::string second("something else"); | 533 std::string second("something else"); |
| 544 disk_cache::Entry* entry; | 534 disk_cache::Entry* entry; |
| (...skipping 1051 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1596 ASSERT_NE(net::OK, OpenEntry(key, &entry1)); | 1586 ASSERT_NE(net::OK, OpenEntry(key, &entry1)); |
| 1597 | 1587 |
| 1598 int actual = cache_->GetEntryCount(); | 1588 int actual = cache_->GetEntryCount(); |
| 1599 if (num_entries != actual) { | 1589 if (num_entries != actual) { |
| 1600 ASSERT_TRUE(load); | 1590 ASSERT_TRUE(load); |
| 1601 // If there is a heavy load, inserting an entry will make another entry | 1591 // If there is a heavy load, inserting an entry will make another entry |
| 1602 // dirty (on the hash bucket) so two entries are removed. | 1592 // dirty (on the hash bucket) so two entries are removed. |
| 1603 ASSERT_EQ(num_entries - 1, actual); | 1593 ASSERT_EQ(num_entries - 1, actual); |
| 1604 } | 1594 } |
| 1605 | 1595 |
| 1606 delete cache_; | 1596 cache_.reset(); |
| 1607 cache_ = NULL; | |
| 1608 cache_impl_ = NULL; | 1597 cache_impl_ = NULL; |
| 1609 | 1598 |
| 1610 ASSERT_TRUE(CheckCacheIntegrity(cache_path_, new_eviction_, mask)); | 1599 ASSERT_TRUE(CheckCacheIntegrity(cache_path_, new_eviction_, mask)); |
| 1611 success_ = true; | 1600 success_ = true; |
| 1612 } | 1601 } |
| 1613 | 1602 |
| 1614 void DiskCacheBackendTest::BackendRecoverInsert() { | 1603 void DiskCacheBackendTest::BackendRecoverInsert() { |
| 1615 // Tests with an empty cache. | 1604 // Tests with an empty cache. |
| 1616 BackendTransaction("insert_empty1", 0, false); | 1605 BackendTransaction("insert_empty1", 0, false); |
| 1617 ASSERT_TRUE(success_) << "insert_empty1"; | 1606 ASSERT_TRUE(success_) << "insert_empty1"; |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1716 } | 1705 } |
| 1717 | 1706 |
| 1718 // Tests that the |BackendImpl| fails to start with the wrong cache version. | 1707 // Tests that the |BackendImpl| fails to start with the wrong cache version. |
| 1719 TEST_F(DiskCacheTest, WrongVersion) { | 1708 TEST_F(DiskCacheTest, WrongVersion) { |
| 1720 ASSERT_TRUE(CopyTestCache("wrong_version")); | 1709 ASSERT_TRUE(CopyTestCache("wrong_version")); |
| 1721 base::Thread cache_thread("CacheThread"); | 1710 base::Thread cache_thread("CacheThread"); |
| 1722 ASSERT_TRUE(cache_thread.StartWithOptions( | 1711 ASSERT_TRUE(cache_thread.StartWithOptions( |
| 1723 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); | 1712 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); |
| 1724 net::TestCompletionCallback cb; | 1713 net::TestCompletionCallback cb; |
| 1725 | 1714 |
| 1726 disk_cache::BackendImpl* cache = new disk_cache::BackendImpl( | 1715 scoped_ptr<disk_cache::BackendImpl> cache(new disk_cache::BackendImpl( |
| 1727 cache_path_, cache_thread.message_loop_proxy().get(), NULL); | 1716 cache_path_, cache_thread.message_loop_proxy().get(), NULL)); |
| 1728 int rv = cache->Init(cb.callback()); | 1717 int rv = cache->Init(cb.callback()); |
| 1729 ASSERT_EQ(net::ERR_FAILED, cb.GetResult(rv)); | 1718 ASSERT_EQ(net::ERR_FAILED, cb.GetResult(rv)); |
| 1730 | |
| 1731 delete cache; | |
| 1732 } | 1719 } |
| 1733 | 1720 |
| 1734 class BadEntropyProvider : public base::FieldTrial::EntropyProvider { | 1721 class BadEntropyProvider : public base::FieldTrial::EntropyProvider { |
| 1735 public: | 1722 public: |
| 1736 virtual ~BadEntropyProvider() {} | 1723 virtual ~BadEntropyProvider() {} |
| 1737 | 1724 |
| 1738 virtual double GetEntropyForTrial(const std::string& trial_name, | 1725 virtual double GetEntropyForTrial(const std::string& trial_name, |
| 1739 uint32 randomization_seed) const OVERRIDE { | 1726 uint32 randomization_seed) const OVERRIDE { |
| 1740 return 0.5; | 1727 return 0.5; |
| 1741 } | 1728 } |
| 1742 }; | 1729 }; |
| 1743 | 1730 |
| 1744 // Tests that the disk cache successfully joins the control group, dropping the | 1731 // Tests that the disk cache successfully joins the control group, dropping the |
| 1745 // existing cache in favour of a new empty cache. | 1732 // existing cache in favour of a new empty cache. |
| 1746 TEST_F(DiskCacheTest, SimpleCacheControlJoin) { | 1733 TEST_F(DiskCacheTest, SimpleCacheControlJoin) { |
| 1747 base::Thread cache_thread("CacheThread"); | 1734 base::Thread cache_thread("CacheThread"); |
| 1748 ASSERT_TRUE(cache_thread.StartWithOptions( | 1735 ASSERT_TRUE(cache_thread.StartWithOptions( |
| 1749 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); | 1736 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); |
| 1750 | 1737 |
| 1751 disk_cache::BackendImpl* cache = CreateExistingEntryCache(cache_thread, | 1738 scoped_ptr<disk_cache::BackendImpl> cache = |
| 1752 cache_path_); | 1739 CreateExistingEntryCache(cache_thread, cache_path_); |
| 1753 ASSERT_TRUE(cache); | 1740 ASSERT_TRUE(cache.get()); |
| 1754 delete cache; | 1741 cache.reset(); |
| 1755 cache = NULL; | |
| 1756 | 1742 |
| 1757 // Instantiate the SimpleCacheTrial, forcing this run into the | 1743 // Instantiate the SimpleCacheTrial, forcing this run into the |
| 1758 // ExperimentControl group. | 1744 // ExperimentControl group. |
| 1759 base::FieldTrialList field_trial_list(new BadEntropyProvider()); | 1745 base::FieldTrialList field_trial_list(new BadEntropyProvider()); |
| 1760 base::FieldTrialList::CreateFieldTrial("SimpleCacheTrial", | 1746 base::FieldTrialList::CreateFieldTrial("SimpleCacheTrial", |
| 1761 "ExperimentControl"); | 1747 "ExperimentControl"); |
| 1762 net::TestCompletionCallback cb; | 1748 net::TestCompletionCallback cb; |
| 1763 disk_cache::Backend* base_cache = NULL; | 1749 scoped_ptr<disk_cache::Backend> base_cache; |
| 1764 int rv = | 1750 int rv = |
| 1765 disk_cache::CreateCacheBackend(net::DISK_CACHE, | 1751 disk_cache::CreateCacheBackend(net::DISK_CACHE, |
| 1766 net::CACHE_BACKEND_BLOCKFILE, | 1752 net::CACHE_BACKEND_BLOCKFILE, |
| 1767 cache_path_, | 1753 cache_path_, |
| 1768 0, | 1754 0, |
| 1769 true, | 1755 true, |
| 1770 cache_thread.message_loop_proxy().get(), | 1756 cache_thread.message_loop_proxy().get(), |
| 1771 NULL, | 1757 NULL, |
| 1772 &base_cache, | 1758 &base_cache, |
| 1773 cb.callback()); | 1759 cb.callback()); |
| 1774 ASSERT_EQ(net::OK, cb.GetResult(rv)); | 1760 ASSERT_EQ(net::OK, cb.GetResult(rv)); |
| 1775 cache = static_cast<disk_cache::BackendImpl*>(base_cache); | |
| 1776 EXPECT_EQ(0, base_cache->GetEntryCount()); | 1761 EXPECT_EQ(0, base_cache->GetEntryCount()); |
| 1777 delete cache; | 1762 cache.reset(static_cast<disk_cache::BackendImpl*>(base_cache.release())); |
|
rvargas (doing something else)
2013/07/26 21:05:01
nit: remove this line
qsr
2013/07/29 08:26:28
Done.
| |
| 1778 } | 1763 } |
| 1779 | 1764 |
| 1780 // Tests that the disk cache can restart in the control group preserving | 1765 // Tests that the disk cache can restart in the control group preserving |
| 1781 // existing entries. | 1766 // existing entries. |
| 1782 TEST_F(DiskCacheTest, SimpleCacheControlRestart) { | 1767 TEST_F(DiskCacheTest, SimpleCacheControlRestart) { |
| 1783 // Instantiate the SimpleCacheTrial, forcing this run into the | 1768 // Instantiate the SimpleCacheTrial, forcing this run into the |
| 1784 // ExperimentControl group. | 1769 // ExperimentControl group. |
| 1785 base::FieldTrialList field_trial_list(new BadEntropyProvider()); | 1770 base::FieldTrialList field_trial_list(new BadEntropyProvider()); |
| 1786 base::FieldTrialList::CreateFieldTrial("SimpleCacheTrial", | 1771 base::FieldTrialList::CreateFieldTrial("SimpleCacheTrial", |
| 1787 "ExperimentControl"); | 1772 "ExperimentControl"); |
| 1788 | 1773 |
| 1789 base::Thread cache_thread("CacheThread"); | 1774 base::Thread cache_thread("CacheThread"); |
| 1790 ASSERT_TRUE(cache_thread.StartWithOptions( | 1775 ASSERT_TRUE(cache_thread.StartWithOptions( |
| 1791 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); | 1776 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); |
| 1792 | 1777 |
| 1793 disk_cache::BackendImpl* cache = CreateExistingEntryCache(cache_thread, | 1778 scoped_ptr<disk_cache::BackendImpl> cache = |
| 1794 cache_path_); | 1779 CreateExistingEntryCache(cache_thread, cache_path_); |
| 1795 ASSERT_TRUE(cache); | 1780 ASSERT_TRUE(cache.get()); |
| 1796 delete cache; | |
| 1797 cache = NULL; | |
| 1798 | 1781 |
| 1799 net::TestCompletionCallback cb; | 1782 net::TestCompletionCallback cb; |
| 1800 | 1783 |
| 1801 const int kRestartCount = 5; | 1784 const int kRestartCount = 5; |
| 1802 for (int i=0; i < kRestartCount; ++i) { | 1785 for (int i=0; i < kRestartCount; ++i) { |
| 1803 cache = new disk_cache::BackendImpl(cache_path_, | 1786 cache.reset(new disk_cache::BackendImpl( |
| 1804 cache_thread.message_loop_proxy(), | 1787 cache_path_, cache_thread.message_loop_proxy(), NULL)); |
| 1805 NULL); | |
| 1806 int rv = cache->Init(cb.callback()); | 1788 int rv = cache->Init(cb.callback()); |
| 1807 ASSERT_EQ(net::OK, cb.GetResult(rv)); | 1789 ASSERT_EQ(net::OK, cb.GetResult(rv)); |
| 1808 EXPECT_EQ(1, cache->GetEntryCount()); | 1790 EXPECT_EQ(1, cache->GetEntryCount()); |
| 1809 | 1791 |
| 1810 disk_cache::Entry* entry = NULL; | 1792 disk_cache::Entry* entry = NULL; |
| 1811 rv = cache->OpenEntry(kExistingEntryKey, &entry, cb.callback()); | 1793 rv = cache->OpenEntry(kExistingEntryKey, &entry, cb.callback()); |
| 1812 EXPECT_EQ(net::OK, cb.GetResult(rv)); | 1794 EXPECT_EQ(net::OK, cb.GetResult(rv)); |
| 1813 EXPECT_TRUE(entry); | 1795 EXPECT_TRUE(entry); |
| 1814 entry->Close(); | 1796 entry->Close(); |
| 1815 delete cache; | |
| 1816 cache = NULL; | |
| 1817 } | 1797 } |
| 1818 } | 1798 } |
| 1819 | 1799 |
| 1820 // Tests that the disk cache can leave the control group preserving existing | 1800 // Tests that the disk cache can leave the control group preserving existing |
| 1821 // entries. | 1801 // entries. |
| 1822 TEST_F(DiskCacheTest, SimpleCacheControlLeave) { | 1802 TEST_F(DiskCacheTest, SimpleCacheControlLeave) { |
| 1823 base::Thread cache_thread("CacheThread"); | 1803 base::Thread cache_thread("CacheThread"); |
| 1824 ASSERT_TRUE(cache_thread.StartWithOptions( | 1804 ASSERT_TRUE(cache_thread.StartWithOptions( |
| 1825 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); | 1805 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); |
| 1826 | 1806 |
| 1827 { | 1807 { |
| 1828 // Instantiate the SimpleCacheTrial, forcing this run into the | 1808 // Instantiate the SimpleCacheTrial, forcing this run into the |
| 1829 // ExperimentControl group. | 1809 // ExperimentControl group. |
| 1830 base::FieldTrialList field_trial_list(new BadEntropyProvider()); | 1810 base::FieldTrialList field_trial_list(new BadEntropyProvider()); |
| 1831 base::FieldTrialList::CreateFieldTrial("SimpleCacheTrial", | 1811 base::FieldTrialList::CreateFieldTrial("SimpleCacheTrial", |
| 1832 "ExperimentControl"); | 1812 "ExperimentControl"); |
| 1833 | 1813 |
| 1834 disk_cache::BackendImpl* cache = CreateExistingEntryCache(cache_thread, | 1814 scoped_ptr<disk_cache::BackendImpl> cache = |
| 1835 cache_path_); | 1815 CreateExistingEntryCache(cache_thread, cache_path_); |
| 1836 ASSERT_TRUE(cache); | 1816 ASSERT_TRUE(cache.get()); |
| 1837 delete cache; | |
| 1838 } | 1817 } |
| 1839 | 1818 |
| 1840 // Instantiate the SimpleCacheTrial, forcing this run into the | 1819 // Instantiate the SimpleCacheTrial, forcing this run into the |
| 1841 // ExperimentNo group. | 1820 // ExperimentNo group. |
| 1842 base::FieldTrialList field_trial_list(new BadEntropyProvider()); | 1821 base::FieldTrialList field_trial_list(new BadEntropyProvider()); |
| 1843 base::FieldTrialList::CreateFieldTrial("SimpleCacheTrial", "ExperimentNo"); | 1822 base::FieldTrialList::CreateFieldTrial("SimpleCacheTrial", "ExperimentNo"); |
| 1844 net::TestCompletionCallback cb; | 1823 net::TestCompletionCallback cb; |
| 1845 | 1824 |
| 1846 const int kRestartCount = 5; | 1825 const int kRestartCount = 5; |
| 1847 for (int i = 0; i < kRestartCount; ++i) { | 1826 for (int i = 0; i < kRestartCount; ++i) { |
| 1848 disk_cache::BackendImpl* cache = new disk_cache::BackendImpl( | 1827 scoped_ptr<disk_cache::BackendImpl> cache(new disk_cache::BackendImpl( |
| 1849 cache_path_, cache_thread.message_loop_proxy(), NULL); | 1828 cache_path_, cache_thread.message_loop_proxy(), NULL)); |
| 1850 int rv = cache->Init(cb.callback()); | 1829 int rv = cache->Init(cb.callback()); |
| 1851 ASSERT_EQ(net::OK, cb.GetResult(rv)); | 1830 ASSERT_EQ(net::OK, cb.GetResult(rv)); |
| 1852 EXPECT_EQ(1, cache->GetEntryCount()); | 1831 EXPECT_EQ(1, cache->GetEntryCount()); |
| 1853 | 1832 |
| 1854 disk_cache::Entry* entry = NULL; | 1833 disk_cache::Entry* entry = NULL; |
| 1855 rv = cache->OpenEntry(kExistingEntryKey, &entry, cb.callback()); | 1834 rv = cache->OpenEntry(kExistingEntryKey, &entry, cb.callback()); |
| 1856 EXPECT_EQ(net::OK, cb.GetResult(rv)); | 1835 EXPECT_EQ(net::OK, cb.GetResult(rv)); |
| 1857 EXPECT_TRUE(entry); | 1836 EXPECT_TRUE(entry); |
| 1858 entry->Close(); | 1837 entry->Close(); |
| 1859 delete cache; | |
| 1860 cache = NULL; | |
| 1861 } | 1838 } |
| 1862 } | 1839 } |
| 1863 | 1840 |
| 1864 // Tests that the cache is properly restarted on recovery error. | 1841 // Tests that the cache is properly restarted on recovery error. |
| 1865 TEST_F(DiskCacheBackendTest, DeleteOld) { | 1842 TEST_F(DiskCacheBackendTest, DeleteOld) { |
| 1866 ASSERT_TRUE(CopyTestCache("wrong_version")); | 1843 ASSERT_TRUE(CopyTestCache("wrong_version")); |
| 1867 SetNewEviction(); | 1844 SetNewEviction(); |
| 1868 base::Thread cache_thread("CacheThread"); | 1845 base::Thread cache_thread("CacheThread"); |
| 1869 ASSERT_TRUE(cache_thread.StartWithOptions( | 1846 ASSERT_TRUE(cache_thread.StartWithOptions( |
| 1870 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); | 1847 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); |
| 1871 | 1848 |
| 1872 net::TestCompletionCallback cb; | 1849 net::TestCompletionCallback cb; |
| 1873 bool prev = base::ThreadRestrictions::SetIOAllowed(false); | 1850 bool prev = base::ThreadRestrictions::SetIOAllowed(false); |
| 1874 base::FilePath path(cache_path_); | 1851 base::FilePath path(cache_path_); |
| 1875 int rv = | 1852 int rv = |
| 1876 disk_cache::CreateCacheBackend(net::DISK_CACHE, | 1853 disk_cache::CreateCacheBackend(net::DISK_CACHE, |
| 1877 net::CACHE_BACKEND_BLOCKFILE, | 1854 net::CACHE_BACKEND_BLOCKFILE, |
| 1878 path, | 1855 path, |
| 1879 0, | 1856 0, |
| 1880 true, | 1857 true, |
| 1881 cache_thread.message_loop_proxy().get(), | 1858 cache_thread.message_loop_proxy().get(), |
| 1882 NULL, | 1859 NULL, |
| 1883 &cache_, | 1860 &cache_, |
| 1884 cb.callback()); | 1861 cb.callback()); |
| 1885 path.clear(); // Make sure path was captured by the previous call. | 1862 path.clear(); // Make sure path was captured by the previous call. |
| 1886 ASSERT_EQ(net::OK, cb.GetResult(rv)); | 1863 ASSERT_EQ(net::OK, cb.GetResult(rv)); |
| 1887 base::ThreadRestrictions::SetIOAllowed(prev); | 1864 base::ThreadRestrictions::SetIOAllowed(prev); |
| 1888 delete cache_; | 1865 cache_.reset(); |
| 1889 cache_ = NULL; | |
| 1890 EXPECT_TRUE(CheckCacheIntegrity(cache_path_, new_eviction_, mask_)); | 1866 EXPECT_TRUE(CheckCacheIntegrity(cache_path_, new_eviction_, mask_)); |
| 1891 } | 1867 } |
| 1892 | 1868 |
| 1893 // We want to be able to deal with messed up entries on disk. | 1869 // We want to be able to deal with messed up entries on disk. |
| 1894 void DiskCacheBackendTest::BackendInvalidEntry2() { | 1870 void DiskCacheBackendTest::BackendInvalidEntry2() { |
| 1895 ASSERT_TRUE(CopyTestCache("bad_entry")); | 1871 ASSERT_TRUE(CopyTestCache("bad_entry")); |
| 1896 DisableFirstCleanup(); | 1872 DisableFirstCleanup(); |
| 1897 InitCache(); | 1873 InitCache(); |
| 1898 | 1874 |
| 1899 disk_cache::Entry *entry1, *entry2; | 1875 disk_cache::Entry *entry1, *entry2; |
| (...skipping 853 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2753 base::ScopedTempDir store1, store2; | 2729 base::ScopedTempDir store1, store2; |
| 2754 ASSERT_TRUE(store1.CreateUniqueTempDir()); | 2730 ASSERT_TRUE(store1.CreateUniqueTempDir()); |
| 2755 ASSERT_TRUE(store2.CreateUniqueTempDir()); | 2731 ASSERT_TRUE(store2.CreateUniqueTempDir()); |
| 2756 | 2732 |
| 2757 base::Thread cache_thread("CacheThread"); | 2733 base::Thread cache_thread("CacheThread"); |
| 2758 ASSERT_TRUE(cache_thread.StartWithOptions( | 2734 ASSERT_TRUE(cache_thread.StartWithOptions( |
| 2759 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); | 2735 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); |
| 2760 net::TestCompletionCallback cb; | 2736 net::TestCompletionCallback cb; |
| 2761 | 2737 |
| 2762 const int kNumberOfCaches = 2; | 2738 const int kNumberOfCaches = 2; |
| 2763 disk_cache::Backend* cache[kNumberOfCaches]; | 2739 scoped_ptr<disk_cache::Backend> cache[kNumberOfCaches]; |
| 2764 | 2740 |
| 2765 int rv = | 2741 int rv = |
| 2766 disk_cache::CreateCacheBackend(net::DISK_CACHE, | 2742 disk_cache::CreateCacheBackend(net::DISK_CACHE, |
| 2767 net::CACHE_BACKEND_DEFAULT, | 2743 net::CACHE_BACKEND_DEFAULT, |
| 2768 store1.path(), | 2744 store1.path(), |
| 2769 0, | 2745 0, |
| 2770 false, | 2746 false, |
| 2771 cache_thread.message_loop_proxy().get(), | 2747 cache_thread.message_loop_proxy().get(), |
| 2772 NULL, | 2748 NULL, |
| 2773 &cache[0], | 2749 &cache[0], |
| 2774 cb.callback()); | 2750 cb.callback()); |
| 2775 ASSERT_EQ(net::OK, cb.GetResult(rv)); | 2751 ASSERT_EQ(net::OK, cb.GetResult(rv)); |
| 2776 rv = disk_cache::CreateCacheBackend(net::MEDIA_CACHE, | 2752 rv = disk_cache::CreateCacheBackend(net::MEDIA_CACHE, |
| 2777 net::CACHE_BACKEND_DEFAULT, | 2753 net::CACHE_BACKEND_DEFAULT, |
| 2778 store2.path(), | 2754 store2.path(), |
| 2779 0, | 2755 0, |
| 2780 false, | 2756 false, |
| 2781 cache_thread.message_loop_proxy().get(), | 2757 cache_thread.message_loop_proxy().get(), |
| 2782 NULL, | 2758 NULL, |
| 2783 &cache[1], | 2759 &cache[1], |
| 2784 cb.callback()); | 2760 cb.callback()); |
| 2785 ASSERT_EQ(net::OK, cb.GetResult(rv)); | 2761 ASSERT_EQ(net::OK, cb.GetResult(rv)); |
| 2786 | 2762 |
| 2787 ASSERT_TRUE(cache[0] != NULL && cache[1] != NULL); | 2763 ASSERT_TRUE(cache[0].get() != NULL && cache[1].get() != NULL); |
| 2788 | 2764 |
| 2789 std::string key("the first key"); | 2765 std::string key("the first key"); |
| 2790 disk_cache::Entry* entry; | 2766 disk_cache::Entry* entry; |
| 2791 for (int i = 0; i < kNumberOfCaches; i++) { | 2767 for (int i = 0; i < kNumberOfCaches; i++) { |
| 2792 rv = cache[i]->CreateEntry(key, &entry, cb.callback()); | 2768 rv = cache[i]->CreateEntry(key, &entry, cb.callback()); |
| 2793 ASSERT_EQ(net::OK, cb.GetResult(rv)); | 2769 ASSERT_EQ(net::OK, cb.GetResult(rv)); |
| 2794 entry->Close(); | 2770 entry->Close(); |
| 2795 } | 2771 } |
| 2796 delete cache[0]; | |
| 2797 delete cache[1]; | |
| 2798 } | 2772 } |
| 2799 | 2773 |
| 2800 // Test the six regions of the curve that determines the max cache size. | 2774 // Test the six regions of the curve that determines the max cache size. |
| 2801 TEST_F(DiskCacheTest, AutomaticMaxSize) { | 2775 TEST_F(DiskCacheTest, AutomaticMaxSize) { |
| 2802 const int kDefaultSize = 80 * 1024 * 1024; | 2776 const int kDefaultSize = 80 * 1024 * 1024; |
| 2803 int64 large_size = kDefaultSize; | 2777 int64 large_size = kDefaultSize; |
| 2804 int64 largest_size = kint32max; | 2778 int64 largest_size = kint32max; |
| 2805 | 2779 |
| 2806 // Region 1: expected = available * 0.8 | 2780 // Region 1: expected = available * 0.8 |
| 2807 EXPECT_EQ((kDefaultSize - 1) * 8 / 10, | 2781 EXPECT_EQ((kDefaultSize - 1) * 8 / 10, |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2998 TrimForTest(false); | 2972 TrimForTest(false); |
| 2999 | 2973 |
| 3000 // Make sure the older key remains. | 2974 // Make sure the older key remains. |
| 3001 EXPECT_EQ(1, cache_->GetEntryCount()); | 2975 EXPECT_EQ(1, cache_->GetEntryCount()); |
| 3002 ASSERT_EQ(net::OK, OpenEntry("key0", &entry)); | 2976 ASSERT_EQ(net::OK, OpenEntry("key0", &entry)); |
| 3003 entry->Close(); | 2977 entry->Close(); |
| 3004 } | 2978 } |
| 3005 | 2979 |
| 3006 void DiskCacheBackendTest::TracingBackendBasics() { | 2980 void DiskCacheBackendTest::TracingBackendBasics() { |
| 3007 InitCache(); | 2981 InitCache(); |
| 3008 cache_ = new disk_cache::TracingCacheBackend(cache_); | 2982 cache_.reset(new disk_cache::TracingCacheBackend(cache_.release())); |
| 3009 cache_impl_ = NULL; | 2983 cache_impl_ = NULL; |
| 3010 EXPECT_EQ(net::DISK_CACHE, cache_->GetCacheType()); | 2984 EXPECT_EQ(net::DISK_CACHE, cache_->GetCacheType()); |
| 3011 if (!simple_cache_mode_) { | 2985 if (!simple_cache_mode_) { |
| 3012 EXPECT_EQ(0, cache_->GetEntryCount()); | 2986 EXPECT_EQ(0, cache_->GetEntryCount()); |
| 3013 } | 2987 } |
| 3014 | 2988 |
| 3015 net::TestCompletionCallback cb; | 2989 net::TestCompletionCallback cb; |
| 3016 disk_cache::Entry* entry = NULL; | 2990 disk_cache::Entry* entry = NULL; |
| 3017 EXPECT_NE(net::OK, OpenEntry("key", &entry)); | 2991 EXPECT_NE(net::OK, OpenEntry("key", &entry)); |
| 3018 EXPECT_TRUE(NULL == entry); | 2992 EXPECT_TRUE(NULL == entry); |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3193 TEST_F(DiskCacheBackendTest, SimpleCacheOverBlockfileCache) { | 3167 TEST_F(DiskCacheBackendTest, SimpleCacheOverBlockfileCache) { |
| 3194 // Create a cache structure with the |BackendImpl|. | 3168 // Create a cache structure with the |BackendImpl|. |
| 3195 InitCache(); | 3169 InitCache(); |
| 3196 disk_cache::Entry* entry; | 3170 disk_cache::Entry* entry; |
| 3197 const int kSize = 50; | 3171 const int kSize = 50; |
| 3198 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kSize)); | 3172 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kSize)); |
| 3199 CacheTestFillBuffer(buffer->data(), kSize, false); | 3173 CacheTestFillBuffer(buffer->data(), kSize, false); |
| 3200 ASSERT_EQ(net::OK, CreateEntry("key", &entry)); | 3174 ASSERT_EQ(net::OK, CreateEntry("key", &entry)); |
| 3201 ASSERT_EQ(0, WriteData(entry, 0, 0, buffer.get(), 0, false)); | 3175 ASSERT_EQ(0, WriteData(entry, 0, 0, buffer.get(), 0, false)); |
| 3202 entry->Close(); | 3176 entry->Close(); |
| 3203 delete cache_; | 3177 cache_.reset(); |
| 3204 cache_ = NULL; | |
| 3205 | 3178 |
| 3206 // Check that the |SimpleBackendImpl| does not favor this structure. | 3179 // Check that the |SimpleBackendImpl| does not favor this structure. |
| 3207 base::Thread cache_thread("CacheThread"); | 3180 base::Thread cache_thread("CacheThread"); |
| 3208 ASSERT_TRUE(cache_thread.StartWithOptions( | 3181 ASSERT_TRUE(cache_thread.StartWithOptions( |
| 3209 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); | 3182 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); |
| 3210 disk_cache::SimpleBackendImpl* simple_cache = | 3183 disk_cache::SimpleBackendImpl* simple_cache = |
| 3211 new disk_cache::SimpleBackendImpl(cache_path_, | 3184 new disk_cache::SimpleBackendImpl(cache_path_, |
| 3212 0, | 3185 0, |
| 3213 net::DISK_CACHE, | 3186 net::DISK_CACHE, |
| 3214 cache_thread.message_loop_proxy().get(), | 3187 cache_thread.message_loop_proxy().get(), |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 3226 // Create a cache structure with the |SimpleBackendImpl|. | 3199 // Create a cache structure with the |SimpleBackendImpl|. |
| 3227 SetSimpleCacheMode(); | 3200 SetSimpleCacheMode(); |
| 3228 InitCache(); | 3201 InitCache(); |
| 3229 disk_cache::Entry* entry; | 3202 disk_cache::Entry* entry; |
| 3230 const int kSize = 50; | 3203 const int kSize = 50; |
| 3231 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kSize)); | 3204 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kSize)); |
| 3232 CacheTestFillBuffer(buffer->data(), kSize, false); | 3205 CacheTestFillBuffer(buffer->data(), kSize, false); |
| 3233 ASSERT_EQ(net::OK, CreateEntry("key", &entry)); | 3206 ASSERT_EQ(net::OK, CreateEntry("key", &entry)); |
| 3234 ASSERT_EQ(0, WriteData(entry, 0, 0, buffer.get(), 0, false)); | 3207 ASSERT_EQ(0, WriteData(entry, 0, 0, buffer.get(), 0, false)); |
| 3235 entry->Close(); | 3208 entry->Close(); |
| 3236 delete cache_; | 3209 cache_.reset(); |
| 3237 cache_ = NULL; | |
| 3238 | 3210 |
| 3239 // Check that the |BackendImpl| does not favor this structure. | 3211 // Check that the |BackendImpl| does not favor this structure. |
| 3240 base::Thread cache_thread("CacheThread"); | 3212 base::Thread cache_thread("CacheThread"); |
| 3241 ASSERT_TRUE(cache_thread.StartWithOptions( | 3213 ASSERT_TRUE(cache_thread.StartWithOptions( |
| 3242 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); | 3214 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); |
| 3243 disk_cache::BackendImpl* cache = new disk_cache::BackendImpl( | 3215 disk_cache::BackendImpl* cache = new disk_cache::BackendImpl( |
| 3244 cache_path_, base::MessageLoopProxy::current().get(), NULL); | 3216 cache_path_, base::MessageLoopProxy::current().get(), NULL); |
| 3245 cache->SetUnitTestMode(); | 3217 cache->SetUnitTestMode(); |
| 3246 net::TestCompletionCallback cb; | 3218 net::TestCompletionCallback cb; |
| 3247 int rv = cache->Init(cb.callback()); | 3219 int rv = cache->Init(cb.callback()); |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3396 void* iter = NULL; | 3368 void* iter = NULL; |
| 3397 size_t count = 0; | 3369 size_t count = 0; |
| 3398 ASSERT_TRUE(EnumerateAndMatchKeys(-1, &iter, &keys_to_match, &count)); | 3370 ASSERT_TRUE(EnumerateAndMatchKeys(-1, &iter, &keys_to_match, &count)); |
| 3399 cache_->EndEnumeration(&iter); | 3371 cache_->EndEnumeration(&iter); |
| 3400 | 3372 |
| 3401 EXPECT_EQ(key_pool.size(), count); | 3373 EXPECT_EQ(key_pool.size(), count); |
| 3402 EXPECT_TRUE(keys_to_match.empty()); | 3374 EXPECT_TRUE(keys_to_match.empty()); |
| 3403 } | 3375 } |
| 3404 | 3376 |
| 3405 #endif // !defined(OS_WIN) | 3377 #endif // !defined(OS_WIN) |
| OLD | NEW |