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 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 ++(*count); | 270 ++(*count); |
271 if (max_to_open >= 0 && implicit_cast<int>(*count) >= max_to_open) | 271 if (max_to_open >= 0 && implicit_cast<int>(*count) >= max_to_open) |
272 break; | 272 break; |
273 }; | 273 }; |
274 | 274 |
275 return true; | 275 return true; |
276 } | 276 } |
277 | 277 |
278 void DiskCacheBackendTest::BackendBasics() { | 278 void DiskCacheBackendTest::BackendBasics() { |
279 InitCache(); | 279 InitCache(); |
280 disk_cache::Entry *entry1 = NULL, *entry2 = NULL; | 280 disk_cache::Entry* entry1 = NULL, *entry2 = NULL; |
281 EXPECT_NE(net::OK, OpenEntry("the first key", &entry1)); | 281 EXPECT_NE(net::OK, OpenEntry("the first key", &entry1)); |
282 ASSERT_EQ(net::OK, CreateEntry("the first key", &entry1)); | 282 ASSERT_EQ(net::OK, CreateEntry("the first key", &entry1)); |
283 ASSERT_TRUE(NULL != entry1); | 283 ASSERT_TRUE(NULL != entry1); |
284 entry1->Close(); | 284 entry1->Close(); |
285 entry1 = NULL; | 285 entry1 = NULL; |
286 | 286 |
287 ASSERT_EQ(net::OK, OpenEntry("the first key", &entry1)); | 287 ASSERT_EQ(net::OK, OpenEntry("the first key", &entry1)); |
288 ASSERT_TRUE(NULL != entry1); | 288 ASSERT_TRUE(NULL != entry1); |
289 entry1->Close(); | 289 entry1->Close(); |
290 entry1 = NULL; | 290 entry1 = NULL; |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
342 | 342 |
343 TEST_F(DiskCacheBackendTest, ShaderCacheBasics) { | 343 TEST_F(DiskCacheBackendTest, ShaderCacheBasics) { |
344 SetCacheType(net::SHADER_CACHE); | 344 SetCacheType(net::SHADER_CACHE); |
345 BackendBasics(); | 345 BackendBasics(); |
346 } | 346 } |
347 | 347 |
348 void DiskCacheBackendTest::BackendKeying() { | 348 void DiskCacheBackendTest::BackendKeying() { |
349 InitCache(); | 349 InitCache(); |
350 const char* kName1 = "the first key"; | 350 const char* kName1 = "the first key"; |
351 const char* kName2 = "the first Key"; | 351 const char* kName2 = "the first Key"; |
352 disk_cache::Entry *entry1, *entry2; | 352 disk_cache::Entry* entry1, *entry2; |
353 ASSERT_EQ(net::OK, CreateEntry(kName1, &entry1)); | 353 ASSERT_EQ(net::OK, CreateEntry(kName1, &entry1)); |
354 | 354 |
355 ASSERT_EQ(net::OK, CreateEntry(kName2, &entry2)); | 355 ASSERT_EQ(net::OK, CreateEntry(kName2, &entry2)); |
356 EXPECT_TRUE(entry1 != entry2) << "Case sensitive"; | 356 EXPECT_TRUE(entry1 != entry2) << "Case sensitive"; |
357 entry2->Close(); | 357 entry2->Close(); |
358 | 358 |
359 char buffer[30]; | 359 char buffer[30]; |
360 base::strlcpy(buffer, kName1, arraysize(buffer)); | 360 base::strlcpy(buffer, kName1, arraysize(buffer)); |
361 ASSERT_EQ(net::OK, OpenEntry(buffer, &entry2)); | 361 ASSERT_EQ(net::OK, OpenEntry(buffer, &entry2)); |
362 EXPECT_TRUE(entry1 == entry2); | 362 EXPECT_TRUE(entry1 == entry2); |
363 entry2->Close(); | 363 entry2->Close(); |
364 | 364 |
365 base::strlcpy(buffer + 1, kName1, arraysize(buffer) - 1); | 365 base::strlcpy(buffer + 1, kName1, arraysize(buffer) - 1); |
366 ASSERT_EQ(net::OK, OpenEntry(buffer + 1, &entry2)); | 366 ASSERT_EQ(net::OK, OpenEntry(buffer + 1, &entry2)); |
367 EXPECT_TRUE(entry1 == entry2); | 367 EXPECT_TRUE(entry1 == entry2); |
368 entry2->Close(); | 368 entry2->Close(); |
369 | 369 |
370 base::strlcpy(buffer + 3, kName1, arraysize(buffer) - 3); | 370 base::strlcpy(buffer + 3, kName1, arraysize(buffer) - 3); |
371 ASSERT_EQ(net::OK, OpenEntry(buffer + 3, &entry2)); | 371 ASSERT_EQ(net::OK, OpenEntry(buffer + 3, &entry2)); |
372 EXPECT_TRUE(entry1 == entry2); | 372 EXPECT_TRUE(entry1 == entry2); |
373 entry2->Close(); | 373 entry2->Close(); |
374 | 374 |
375 // Now verify long keys. | 375 // Now verify long keys. |
376 char buffer2[20000]; | 376 char buffer2[20000]; |
377 memset(buffer2, 's', sizeof(buffer2)); | 377 memset(buffer2, 's', sizeof(buffer2)); |
378 buffer2[1023] = '\0'; | 378 buffer2[1023] = '\0'; |
379 ASSERT_EQ(net::OK, CreateEntry(buffer2, &entry2)) << "key on block file"; | 379 ASSERT_EQ(net::OK, CreateEntry(buffer2, &entry2)) << "key on block file"; |
380 entry2->Close(); | 380 entry2->Close(); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
435 cache_thread.message_loop_proxy().get(), | 435 cache_thread.message_loop_proxy().get(), |
436 NULL, | 436 NULL, |
437 &cache, | 437 &cache, |
438 cb.callback()); | 438 cb.callback()); |
439 ASSERT_EQ(net::OK, cb.GetResult(rv)); | 439 ASSERT_EQ(net::OK, cb.GetResult(rv)); |
440 ASSERT_TRUE(cache.get()); | 440 ASSERT_TRUE(cache.get()); |
441 cache.reset(); | 441 cache.reset(); |
442 | 442 |
443 rv = disk_cache::CreateCacheBackend(net::MEMORY_CACHE, | 443 rv = disk_cache::CreateCacheBackend(net::MEMORY_CACHE, |
444 net::CACHE_BACKEND_DEFAULT, | 444 net::CACHE_BACKEND_DEFAULT, |
445 base::FilePath(), 0, | 445 base::FilePath(), |
446 false, NULL, NULL, &cache, | 446 0, |
| 447 false, |
| 448 NULL, |
| 449 NULL, |
| 450 &cache, |
447 cb.callback()); | 451 cb.callback()); |
448 ASSERT_EQ(net::OK, cb.GetResult(rv)); | 452 ASSERT_EQ(net::OK, cb.GetResult(rv)); |
449 ASSERT_TRUE(cache.get()); | 453 ASSERT_TRUE(cache.get()); |
450 cache.reset(); | 454 cache.reset(); |
451 } | 455 } |
452 | 456 |
453 base::MessageLoop::current()->RunUntilIdle(); | 457 base::MessageLoop::current()->RunUntilIdle(); |
454 } | 458 } |
455 | 459 |
456 // Tests that |BackendImpl| fails to initialize with a missing file. | 460 // Tests that |BackendImpl| fails to initialize with a missing file. |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
551 | 555 |
552 // See crbug.com/330074 | 556 // See crbug.com/330074 |
553 #if !defined(OS_IOS) | 557 #if !defined(OS_IOS) |
554 // Tests that one cache instance is not affected by another one going away. | 558 // Tests that one cache instance is not affected by another one going away. |
555 TEST_F(DiskCacheBackendTest, MultipleInstancesWithPendingFileIO) { | 559 TEST_F(DiskCacheBackendTest, MultipleInstancesWithPendingFileIO) { |
556 base::ScopedTempDir store; | 560 base::ScopedTempDir store; |
557 ASSERT_TRUE(store.CreateUniqueTempDir()); | 561 ASSERT_TRUE(store.CreateUniqueTempDir()); |
558 | 562 |
559 net::TestCompletionCallback cb; | 563 net::TestCompletionCallback cb; |
560 scoped_ptr<disk_cache::Backend> extra_cache; | 564 scoped_ptr<disk_cache::Backend> extra_cache; |
561 int rv = disk_cache::CreateCacheBackend( | 565 int rv = |
562 net::DISK_CACHE, net::CACHE_BACKEND_DEFAULT, store.path(), 0, | 566 disk_cache::CreateCacheBackend(net::DISK_CACHE, |
563 false, base::MessageLoopProxy::current().get(), NULL, | 567 net::CACHE_BACKEND_DEFAULT, |
564 &extra_cache, cb.callback()); | 568 store.path(), |
| 569 0, |
| 570 false, |
| 571 base::MessageLoopProxy::current().get(), |
| 572 NULL, |
| 573 &extra_cache, |
| 574 cb.callback()); |
565 ASSERT_EQ(net::OK, cb.GetResult(rv)); | 575 ASSERT_EQ(net::OK, cb.GetResult(rv)); |
566 ASSERT_TRUE(extra_cache.get() != NULL); | 576 ASSERT_TRUE(extra_cache.get() != NULL); |
567 | 577 |
568 ASSERT_TRUE(CleanupCacheDir()); | 578 ASSERT_TRUE(CleanupCacheDir()); |
569 SetNewEviction(); // Match the expected behavior for integrity verification. | 579 SetNewEviction(); // Match the expected behavior for integrity verification. |
570 UseCurrentThread(); | 580 UseCurrentThread(); |
571 | 581 |
572 CreateBackend(disk_cache::kNoBuffering, NULL); | 582 CreateBackend(disk_cache::kNoBuffering, NULL); |
573 rv = GeneratePendingIO(&cb); | 583 rv = GeneratePendingIO(&cb); |
574 | 584 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
633 void DiskCacheBackendTest::BackendShutdownWithPendingCreate(bool fast) { | 643 void DiskCacheBackendTest::BackendShutdownWithPendingCreate(bool fast) { |
634 net::TestCompletionCallback cb; | 644 net::TestCompletionCallback cb; |
635 | 645 |
636 { | 646 { |
637 ASSERT_TRUE(CleanupCacheDir()); | 647 ASSERT_TRUE(CleanupCacheDir()); |
638 base::Thread cache_thread("CacheThread"); | 648 base::Thread cache_thread("CacheThread"); |
639 ASSERT_TRUE(cache_thread.StartWithOptions( | 649 ASSERT_TRUE(cache_thread.StartWithOptions( |
640 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); | 650 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); |
641 | 651 |
642 disk_cache::BackendFlags flags = | 652 disk_cache::BackendFlags flags = |
643 fast ? disk_cache::kNone : disk_cache::kNoRandom; | 653 fast ? disk_cache::kNone : disk_cache::kNoRandom; |
644 CreateBackend(flags, &cache_thread); | 654 CreateBackend(flags, &cache_thread); |
645 | 655 |
646 disk_cache::Entry* entry; | 656 disk_cache::Entry* entry; |
647 int rv = cache_->CreateEntry("some key", &entry, cb.callback()); | 657 int rv = cache_->CreateEntry("some key", &entry, cb.callback()); |
648 ASSERT_EQ(net::ERR_IO_PENDING, rv); | 658 ASSERT_EQ(net::ERR_IO_PENDING, rv); |
649 | 659 |
650 cache_.reset(); | 660 cache_.reset(); |
651 EXPECT_FALSE(cb.have_result()); | 661 EXPECT_FALSE(cb.have_result()); |
652 } | 662 } |
653 | 663 |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
833 TEST_F(DiskCacheBackendTest, ShaderCacheLoad) { | 843 TEST_F(DiskCacheBackendTest, ShaderCacheLoad) { |
834 SetCacheType(net::SHADER_CACHE); | 844 SetCacheType(net::SHADER_CACHE); |
835 // Work with a tiny index table (16 entries) | 845 // Work with a tiny index table (16 entries) |
836 SetMask(0xf); | 846 SetMask(0xf); |
837 SetMaxSize(0x100000); | 847 SetMaxSize(0x100000); |
838 BackendLoad(); | 848 BackendLoad(); |
839 } | 849 } |
840 | 850 |
841 // Tests the chaining of an entry to the current head. | 851 // Tests the chaining of an entry to the current head. |
842 void DiskCacheBackendTest::BackendChain() { | 852 void DiskCacheBackendTest::BackendChain() { |
843 SetMask(0x1); // 2-entry table. | 853 SetMask(0x1); // 2-entry table. |
844 SetMaxSize(0x3000); // 12 kB. | 854 SetMaxSize(0x3000); // 12 kB. |
845 InitCache(); | 855 InitCache(); |
846 | 856 |
847 disk_cache::Entry* entry; | 857 disk_cache::Entry* entry; |
848 ASSERT_EQ(net::OK, CreateEntry("The first key", &entry)); | 858 ASSERT_EQ(net::OK, CreateEntry("The first key", &entry)); |
849 entry->Close(); | 859 entry->Close(); |
850 ASSERT_EQ(net::OK, CreateEntry("The Second key", &entry)); | 860 ASSERT_EQ(net::OK, CreateEntry("The Second key", &entry)); |
851 entry->Close(); | 861 entry->Close(); |
852 } | 862 } |
853 | 863 |
(...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1290 TEST_F(DiskCacheBackendTest, AppCacheEnumerations) { | 1300 TEST_F(DiskCacheBackendTest, AppCacheEnumerations) { |
1291 SetCacheType(net::APP_CACHE); | 1301 SetCacheType(net::APP_CACHE); |
1292 BackendEnumerations(); | 1302 BackendEnumerations(); |
1293 } | 1303 } |
1294 | 1304 |
1295 // Verifies enumerations while entries are open. | 1305 // Verifies enumerations while entries are open. |
1296 void DiskCacheBackendTest::BackendEnumerations2() { | 1306 void DiskCacheBackendTest::BackendEnumerations2() { |
1297 InitCache(); | 1307 InitCache(); |
1298 const std::string first("first"); | 1308 const std::string first("first"); |
1299 const std::string second("second"); | 1309 const std::string second("second"); |
1300 disk_cache::Entry *entry1, *entry2; | 1310 disk_cache::Entry* entry1, *entry2; |
1301 ASSERT_EQ(net::OK, CreateEntry(first, &entry1)); | 1311 ASSERT_EQ(net::OK, CreateEntry(first, &entry1)); |
1302 entry1->Close(); | 1312 entry1->Close(); |
1303 ASSERT_EQ(net::OK, CreateEntry(second, &entry2)); | 1313 ASSERT_EQ(net::OK, CreateEntry(second, &entry2)); |
1304 entry2->Close(); | 1314 entry2->Close(); |
1305 FlushQueueForTest(); | 1315 FlushQueueForTest(); |
1306 | 1316 |
1307 // Make sure that the timestamp is not the same. | 1317 // Make sure that the timestamp is not the same. |
1308 AddDelay(); | 1318 AddDelay(); |
1309 ASSERT_EQ(net::OK, OpenEntry(second, &entry1)); | 1319 ASSERT_EQ(net::OK, OpenEntry(second, &entry1)); |
1310 void* iter = NULL; | 1320 void* iter = NULL; |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1361 BackendEnumerations2(); | 1371 BackendEnumerations2(); |
1362 } | 1372 } |
1363 | 1373 |
1364 // Verify that ReadData calls do not update the LRU cache | 1374 // Verify that ReadData calls do not update the LRU cache |
1365 // when using the SHADER_CACHE type. | 1375 // when using the SHADER_CACHE type. |
1366 TEST_F(DiskCacheBackendTest, ShaderCacheEnumerationReadData) { | 1376 TEST_F(DiskCacheBackendTest, ShaderCacheEnumerationReadData) { |
1367 SetCacheType(net::SHADER_CACHE); | 1377 SetCacheType(net::SHADER_CACHE); |
1368 InitCache(); | 1378 InitCache(); |
1369 const std::string first("first"); | 1379 const std::string first("first"); |
1370 const std::string second("second"); | 1380 const std::string second("second"); |
1371 disk_cache::Entry *entry1, *entry2; | 1381 disk_cache::Entry* entry1, *entry2; |
1372 const int kSize = 50; | 1382 const int kSize = 50; |
1373 scoped_refptr<net::IOBuffer> buffer1(new net::IOBuffer(kSize)); | 1383 scoped_refptr<net::IOBuffer> buffer1(new net::IOBuffer(kSize)); |
1374 | 1384 |
1375 ASSERT_EQ(net::OK, CreateEntry(first, &entry1)); | 1385 ASSERT_EQ(net::OK, CreateEntry(first, &entry1)); |
1376 memset(buffer1->data(), 0, kSize); | 1386 memset(buffer1->data(), 0, kSize); |
1377 base::strlcpy(buffer1->data(), "And the data to save", kSize); | 1387 base::strlcpy(buffer1->data(), "And the data to save", kSize); |
1378 EXPECT_EQ(kSize, WriteData(entry1, 0, 0, buffer1.get(), kSize, false)); | 1388 EXPECT_EQ(kSize, WriteData(entry1, 0, 0, buffer1.get(), kSize, false)); |
1379 | 1389 |
1380 ASSERT_EQ(net::OK, CreateEntry(second, &entry2)); | 1390 ASSERT_EQ(net::OK, CreateEntry(second, &entry2)); |
1381 entry2->Close(); | 1391 entry2->Close(); |
(...skipping 14 matching lines...) Expand all Loading... |
1396 cache_->EndEnumeration(&iter); | 1406 cache_->EndEnumeration(&iter); |
1397 } | 1407 } |
1398 | 1408 |
1399 #if !defined(LEAK_SANITIZER) | 1409 #if !defined(LEAK_SANITIZER) |
1400 // Verify handling of invalid entries while doing enumerations. | 1410 // Verify handling of invalid entries while doing enumerations. |
1401 // We'll be leaking memory from this test. | 1411 // We'll be leaking memory from this test. |
1402 void DiskCacheBackendTest::BackendInvalidEntryEnumeration() { | 1412 void DiskCacheBackendTest::BackendInvalidEntryEnumeration() { |
1403 InitCache(); | 1413 InitCache(); |
1404 | 1414 |
1405 std::string key("Some key"); | 1415 std::string key("Some key"); |
1406 disk_cache::Entry *entry, *entry1, *entry2; | 1416 disk_cache::Entry* entry, *entry1, *entry2; |
1407 ASSERT_EQ(net::OK, CreateEntry(key, &entry1)); | 1417 ASSERT_EQ(net::OK, CreateEntry(key, &entry1)); |
1408 | 1418 |
1409 const int kSize = 50; | 1419 const int kSize = 50; |
1410 scoped_refptr<net::IOBuffer> buffer1(new net::IOBuffer(kSize)); | 1420 scoped_refptr<net::IOBuffer> buffer1(new net::IOBuffer(kSize)); |
1411 memset(buffer1->data(), 0, kSize); | 1421 memset(buffer1->data(), 0, kSize); |
1412 base::strlcpy(buffer1->data(), "And the data to save", kSize); | 1422 base::strlcpy(buffer1->data(), "And the data to save", kSize); |
1413 EXPECT_EQ(kSize, WriteData(entry1, 0, 0, buffer1.get(), kSize, false)); | 1423 EXPECT_EQ(kSize, WriteData(entry1, 0, 0, buffer1.get(), kSize, false)); |
1414 entry1->Close(); | 1424 entry1->Close(); |
1415 ASSERT_EQ(net::OK, OpenEntry(key, &entry1)); | 1425 ASSERT_EQ(net::OK, OpenEntry(key, &entry1)); |
1416 EXPECT_EQ(kSize, ReadData(entry1, 0, 0, buffer1.get(), kSize)); | 1426 EXPECT_EQ(kSize, ReadData(entry1, 0, 0, buffer1.get(), kSize)); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1456 | 1466 |
1457 const int kNumEntries = 10; | 1467 const int kNumEntries = 10; |
1458 for (int i = 0; i < kNumEntries; i++) { | 1468 for (int i = 0; i < kNumEntries; i++) { |
1459 std::string key = GenerateKey(true); | 1469 std::string key = GenerateKey(true); |
1460 disk_cache::Entry* entry; | 1470 disk_cache::Entry* entry; |
1461 ASSERT_EQ(net::OK, CreateEntry(key, &entry)); | 1471 ASSERT_EQ(net::OK, CreateEntry(key, &entry)); |
1462 entry->Close(); | 1472 entry->Close(); |
1463 } | 1473 } |
1464 EXPECT_EQ(kNumEntries, cache_->GetEntryCount()); | 1474 EXPECT_EQ(kNumEntries, cache_->GetEntryCount()); |
1465 | 1475 |
1466 disk_cache::Entry *entry1, *entry2; | 1476 disk_cache::Entry* entry1, *entry2; |
1467 void* iter1 = NULL; | 1477 void* iter1 = NULL; |
1468 void* iter2 = NULL; | 1478 void* iter2 = NULL; |
1469 ASSERT_EQ(net::OK, OpenNextEntry(&iter1, &entry1)); | 1479 ASSERT_EQ(net::OK, OpenNextEntry(&iter1, &entry1)); |
1470 ASSERT_TRUE(NULL != entry1); | 1480 ASSERT_TRUE(NULL != entry1); |
1471 entry1->Close(); | 1481 entry1->Close(); |
1472 entry1 = NULL; | 1482 entry1 = NULL; |
1473 | 1483 |
1474 // Let's go to the middle of the list. | 1484 // Let's go to the middle of the list. |
1475 for (int i = 0; i < kNumEntries / 2; i++) { | 1485 for (int i = 0; i < kNumEntries / 2; i++) { |
1476 if (entry1) | 1486 if (entry1) |
(...skipping 30 matching lines...) Expand all Loading... |
1507 } | 1517 } |
1508 | 1518 |
1509 TEST_F(DiskCacheBackendTest, NewEvictionFixEnumerators) { | 1519 TEST_F(DiskCacheBackendTest, NewEvictionFixEnumerators) { |
1510 SetNewEviction(); | 1520 SetNewEviction(); |
1511 BackendFixEnumerators(); | 1521 BackendFixEnumerators(); |
1512 } | 1522 } |
1513 | 1523 |
1514 void DiskCacheBackendTest::BackendDoomRecent() { | 1524 void DiskCacheBackendTest::BackendDoomRecent() { |
1515 InitCache(); | 1525 InitCache(); |
1516 | 1526 |
1517 disk_cache::Entry *entry; | 1527 disk_cache::Entry* entry; |
1518 ASSERT_EQ(net::OK, CreateEntry("first", &entry)); | 1528 ASSERT_EQ(net::OK, CreateEntry("first", &entry)); |
1519 entry->Close(); | 1529 entry->Close(); |
1520 ASSERT_EQ(net::OK, CreateEntry("second", &entry)); | 1530 ASSERT_EQ(net::OK, CreateEntry("second", &entry)); |
1521 entry->Close(); | 1531 entry->Close(); |
1522 FlushQueueForTest(); | 1532 FlushQueueForTest(); |
1523 | 1533 |
1524 AddDelay(); | 1534 AddDelay(); |
1525 Time middle = Time::Now(); | 1535 Time middle = Time::Now(); |
1526 | 1536 |
1527 ASSERT_EQ(net::OK, CreateEntry("third", &entry)); | 1537 ASSERT_EQ(net::OK, CreateEntry("third", &entry)); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1585 | 1595 |
1586 TEST_F(DiskCacheBackendTest, DoomAllSparse) { | 1596 TEST_F(DiskCacheBackendTest, DoomAllSparse) { |
1587 InitSparseCache(NULL, NULL); | 1597 InitSparseCache(NULL, NULL); |
1588 EXPECT_EQ(net::OK, DoomAllEntries()); | 1598 EXPECT_EQ(net::OK, DoomAllEntries()); |
1589 EXPECT_EQ(0, cache_->GetEntryCount()); | 1599 EXPECT_EQ(0, cache_->GetEntryCount()); |
1590 } | 1600 } |
1591 | 1601 |
1592 void DiskCacheBackendTest::BackendDoomBetween() { | 1602 void DiskCacheBackendTest::BackendDoomBetween() { |
1593 InitCache(); | 1603 InitCache(); |
1594 | 1604 |
1595 disk_cache::Entry *entry; | 1605 disk_cache::Entry* entry; |
1596 ASSERT_EQ(net::OK, CreateEntry("first", &entry)); | 1606 ASSERT_EQ(net::OK, CreateEntry("first", &entry)); |
1597 entry->Close(); | 1607 entry->Close(); |
1598 FlushQueueForTest(); | 1608 FlushQueueForTest(); |
1599 | 1609 |
1600 AddDelay(); | 1610 AddDelay(); |
1601 Time middle_start = Time::Now(); | 1611 Time middle_start = Time::Now(); |
1602 | 1612 |
1603 ASSERT_EQ(net::OK, CreateEntry("second", &entry)); | 1613 ASSERT_EQ(net::OK, CreateEntry("second", &entry)); |
1604 entry->Close(); | 1614 entry->Close(); |
1605 ASSERT_EQ(net::OK, CreateEntry("third", &entry)); | 1615 ASSERT_EQ(net::OK, CreateEntry("third", &entry)); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1666 DoomEntriesBetween(start, end); | 1676 DoomEntriesBetween(start, end); |
1667 EXPECT_EQ(9, cache_->GetEntryCount()); | 1677 EXPECT_EQ(9, cache_->GetEntryCount()); |
1668 | 1678 |
1669 start = end; | 1679 start = end; |
1670 end = base::Time::Now(); | 1680 end = base::Time::Now(); |
1671 DoomEntriesBetween(start, end); | 1681 DoomEntriesBetween(start, end); |
1672 EXPECT_EQ(3, cache_->GetEntryCount()); | 1682 EXPECT_EQ(3, cache_->GetEntryCount()); |
1673 } | 1683 } |
1674 | 1684 |
1675 void DiskCacheBackendTest::BackendTransaction(const std::string& name, | 1685 void DiskCacheBackendTest::BackendTransaction(const std::string& name, |
1676 int num_entries, bool load) { | 1686 int num_entries, |
| 1687 bool load) { |
1677 success_ = false; | 1688 success_ = false; |
1678 ASSERT_TRUE(CopyTestCache(name)); | 1689 ASSERT_TRUE(CopyTestCache(name)); |
1679 DisableFirstCleanup(); | 1690 DisableFirstCleanup(); |
1680 | 1691 |
1681 uint32 mask; | 1692 uint32 mask; |
1682 if (load) { | 1693 if (load) { |
1683 mask = 0xf; | 1694 mask = 0xf; |
1684 SetMaxSize(0x100000); | 1695 SetMaxSize(0x100000); |
1685 } else { | 1696 } else { |
1686 // Clear the settings from the previous run. | 1697 // Clear the settings from the previous run. |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1840 }; | 1851 }; |
1841 | 1852 |
1842 // Tests that the disk cache successfully joins the control group, dropping the | 1853 // Tests that the disk cache successfully joins the control group, dropping the |
1843 // existing cache in favour of a new empty cache. | 1854 // existing cache in favour of a new empty cache. |
1844 // Disabled on android since this test requires cache creator to create | 1855 // Disabled on android since this test requires cache creator to create |
1845 // blockfile caches. | 1856 // blockfile caches. |
1846 #if !defined(OS_ANDROID) | 1857 #if !defined(OS_ANDROID) |
1847 TEST_F(DiskCacheTest, SimpleCacheControlJoin) { | 1858 TEST_F(DiskCacheTest, SimpleCacheControlJoin) { |
1848 base::Thread cache_thread("CacheThread"); | 1859 base::Thread cache_thread("CacheThread"); |
1849 ASSERT_TRUE(cache_thread.StartWithOptions( | 1860 ASSERT_TRUE(cache_thread.StartWithOptions( |
1850 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); | 1861 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); |
1851 | 1862 |
1852 scoped_ptr<disk_cache::BackendImpl> cache = | 1863 scoped_ptr<disk_cache::BackendImpl> cache = |
1853 CreateExistingEntryCache(cache_thread, cache_path_); | 1864 CreateExistingEntryCache(cache_thread, cache_path_); |
1854 ASSERT_TRUE(cache.get()); | 1865 ASSERT_TRUE(cache.get()); |
1855 cache.reset(); | 1866 cache.reset(); |
1856 | 1867 |
1857 // Instantiate the SimpleCacheTrial, forcing this run into the | 1868 // Instantiate the SimpleCacheTrial, forcing this run into the |
1858 // ExperimentControl group. | 1869 // ExperimentControl group. |
1859 base::FieldTrialList field_trial_list(new BadEntropyProvider()); | 1870 base::FieldTrialList field_trial_list(new BadEntropyProvider()); |
1860 base::FieldTrialList::CreateFieldTrial("SimpleCacheTrial", | 1871 base::FieldTrialList::CreateFieldTrial("SimpleCacheTrial", |
(...skipping 19 matching lines...) Expand all Loading... |
1880 // existing entries. | 1891 // existing entries. |
1881 TEST_F(DiskCacheTest, SimpleCacheControlRestart) { | 1892 TEST_F(DiskCacheTest, SimpleCacheControlRestart) { |
1882 // Instantiate the SimpleCacheTrial, forcing this run into the | 1893 // Instantiate the SimpleCacheTrial, forcing this run into the |
1883 // ExperimentControl group. | 1894 // ExperimentControl group. |
1884 base::FieldTrialList field_trial_list(new BadEntropyProvider()); | 1895 base::FieldTrialList field_trial_list(new BadEntropyProvider()); |
1885 base::FieldTrialList::CreateFieldTrial("SimpleCacheTrial", | 1896 base::FieldTrialList::CreateFieldTrial("SimpleCacheTrial", |
1886 "ExperimentControl"); | 1897 "ExperimentControl"); |
1887 | 1898 |
1888 base::Thread cache_thread("CacheThread"); | 1899 base::Thread cache_thread("CacheThread"); |
1889 ASSERT_TRUE(cache_thread.StartWithOptions( | 1900 ASSERT_TRUE(cache_thread.StartWithOptions( |
1890 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); | 1901 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); |
1891 | 1902 |
1892 scoped_ptr<disk_cache::BackendImpl> cache = | 1903 scoped_ptr<disk_cache::BackendImpl> cache = |
1893 CreateExistingEntryCache(cache_thread, cache_path_); | 1904 CreateExistingEntryCache(cache_thread, cache_path_); |
1894 ASSERT_TRUE(cache.get()); | 1905 ASSERT_TRUE(cache.get()); |
1895 | 1906 |
1896 net::TestCompletionCallback cb; | 1907 net::TestCompletionCallback cb; |
1897 | 1908 |
1898 const int kRestartCount = 5; | 1909 const int kRestartCount = 5; |
1899 for (int i = 0; i < kRestartCount; ++i) { | 1910 for (int i = 0; i < kRestartCount; ++i) { |
1900 cache.reset(new disk_cache::BackendImpl( | 1911 cache.reset(new disk_cache::BackendImpl( |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1983 EXPECT_TRUE(CheckCacheIntegrity(cache_path_, new_eviction_, mask_)); | 1994 EXPECT_TRUE(CheckCacheIntegrity(cache_path_, new_eviction_, mask_)); |
1984 } | 1995 } |
1985 #endif | 1996 #endif |
1986 | 1997 |
1987 // We want to be able to deal with messed up entries on disk. | 1998 // We want to be able to deal with messed up entries on disk. |
1988 void DiskCacheBackendTest::BackendInvalidEntry2() { | 1999 void DiskCacheBackendTest::BackendInvalidEntry2() { |
1989 ASSERT_TRUE(CopyTestCache("bad_entry")); | 2000 ASSERT_TRUE(CopyTestCache("bad_entry")); |
1990 DisableFirstCleanup(); | 2001 DisableFirstCleanup(); |
1991 InitCache(); | 2002 InitCache(); |
1992 | 2003 |
1993 disk_cache::Entry *entry1, *entry2; | 2004 disk_cache::Entry* entry1, *entry2; |
1994 ASSERT_EQ(net::OK, OpenEntry("the first key", &entry1)); | 2005 ASSERT_EQ(net::OK, OpenEntry("the first key", &entry1)); |
1995 EXPECT_NE(net::OK, OpenEntry("some other key", &entry2)); | 2006 EXPECT_NE(net::OK, OpenEntry("some other key", &entry2)); |
1996 entry1->Close(); | 2007 entry1->Close(); |
1997 | 2008 |
1998 // CheckCacheIntegrity will fail at this point. | 2009 // CheckCacheIntegrity will fail at this point. |
1999 DisableIntegrityCheck(); | 2010 DisableIntegrityCheck(); |
2000 } | 2011 } |
2001 | 2012 |
2002 TEST_F(DiskCacheBackendTest, InvalidEntry2) { | 2013 TEST_F(DiskCacheBackendTest, InvalidEntry2) { |
2003 BackendInvalidEntry2(); | 2014 BackendInvalidEntry2(); |
2004 } | 2015 } |
2005 | 2016 |
2006 TEST_F(DiskCacheBackendTest, NewEvictionInvalidEntry2) { | 2017 TEST_F(DiskCacheBackendTest, NewEvictionInvalidEntry2) { |
2007 SetNewEviction(); | 2018 SetNewEviction(); |
2008 BackendInvalidEntry2(); | 2019 BackendInvalidEntry2(); |
2009 } | 2020 } |
2010 | 2021 |
2011 // Tests that we don't crash or hang when enumerating this cache. | 2022 // Tests that we don't crash or hang when enumerating this cache. |
2012 void DiskCacheBackendTest::BackendInvalidEntry3() { | 2023 void DiskCacheBackendTest::BackendInvalidEntry3() { |
2013 SetMask(0x1); // 2-entry table. | 2024 SetMask(0x1); // 2-entry table. |
2014 SetMaxSize(0x3000); // 12 kB. | 2025 SetMaxSize(0x3000); // 12 kB. |
2015 DisableFirstCleanup(); | 2026 DisableFirstCleanup(); |
2016 InitCache(); | 2027 InitCache(); |
2017 | 2028 |
2018 disk_cache::Entry* entry; | 2029 disk_cache::Entry* entry; |
2019 void* iter = NULL; | 2030 void* iter = NULL; |
2020 while (OpenNextEntry(&iter, &entry) == net::OK) { | 2031 while (OpenNextEntry(&iter, &entry) == net::OK) { |
2021 entry->Close(); | 2032 entry->Close(); |
2022 } | 2033 } |
2023 } | 2034 } |
2024 | 2035 |
2025 TEST_F(DiskCacheBackendTest, InvalidEntry3) { | 2036 TEST_F(DiskCacheBackendTest, InvalidEntry3) { |
2026 ASSERT_TRUE(CopyTestCache("dirty_entry3")); | 2037 ASSERT_TRUE(CopyTestCache("dirty_entry3")); |
2027 BackendInvalidEntry3(); | 2038 BackendInvalidEntry3(); |
2028 } | 2039 } |
2029 | 2040 |
2030 TEST_F(DiskCacheBackendTest, NewEvictionInvalidEntry3) { | 2041 TEST_F(DiskCacheBackendTest, NewEvictionInvalidEntry3) { |
2031 ASSERT_TRUE(CopyTestCache("dirty_entry4")); | 2042 ASSERT_TRUE(CopyTestCache("dirty_entry4")); |
2032 SetNewEviction(); | 2043 SetNewEviction(); |
2033 BackendInvalidEntry3(); | 2044 BackendInvalidEntry3(); |
2034 DisableIntegrityCheck(); | 2045 DisableIntegrityCheck(); |
2035 } | 2046 } |
2036 | 2047 |
2037 // Test that we handle a dirty entry on the LRU list, already replaced with | 2048 // Test that we handle a dirty entry on the LRU list, already replaced with |
2038 // the same key, and with hash collisions. | 2049 // the same key, and with hash collisions. |
2039 TEST_F(DiskCacheBackendTest, InvalidEntry4) { | 2050 TEST_F(DiskCacheBackendTest, InvalidEntry4) { |
2040 ASSERT_TRUE(CopyTestCache("dirty_entry3")); | 2051 ASSERT_TRUE(CopyTestCache("dirty_entry3")); |
2041 SetMask(0x1); // 2-entry table. | 2052 SetMask(0x1); // 2-entry table. |
2042 SetMaxSize(0x3000); // 12 kB. | 2053 SetMaxSize(0x3000); // 12 kB. |
2043 DisableFirstCleanup(); | 2054 DisableFirstCleanup(); |
2044 InitCache(); | 2055 InitCache(); |
2045 | 2056 |
2046 TrimForTest(false); | 2057 TrimForTest(false); |
2047 } | 2058 } |
2048 | 2059 |
2049 // Test that we handle a dirty entry on the deleted list, already replaced with | 2060 // Test that we handle a dirty entry on the deleted list, already replaced with |
2050 // the same key, and with hash collisions. | 2061 // the same key, and with hash collisions. |
2051 TEST_F(DiskCacheBackendTest, InvalidEntry5) { | 2062 TEST_F(DiskCacheBackendTest, InvalidEntry5) { |
2052 ASSERT_TRUE(CopyTestCache("dirty_entry4")); | 2063 ASSERT_TRUE(CopyTestCache("dirty_entry4")); |
2053 SetNewEviction(); | 2064 SetNewEviction(); |
2054 SetMask(0x1); // 2-entry table. | 2065 SetMask(0x1); // 2-entry table. |
2055 SetMaxSize(0x3000); // 12 kB. | 2066 SetMaxSize(0x3000); // 12 kB. |
2056 DisableFirstCleanup(); | 2067 DisableFirstCleanup(); |
2057 InitCache(); | 2068 InitCache(); |
2058 | 2069 |
2059 TrimDeletedListForTest(false); | 2070 TrimDeletedListForTest(false); |
2060 } | 2071 } |
2061 | 2072 |
2062 TEST_F(DiskCacheBackendTest, InvalidEntry6) { | 2073 TEST_F(DiskCacheBackendTest, InvalidEntry6) { |
2063 ASSERT_TRUE(CopyTestCache("dirty_entry5")); | 2074 ASSERT_TRUE(CopyTestCache("dirty_entry5")); |
2064 SetMask(0x1); // 2-entry table. | 2075 SetMask(0x1); // 2-entry table. |
2065 SetMaxSize(0x3000); // 12 kB. | 2076 SetMaxSize(0x3000); // 12 kB. |
2066 DisableFirstCleanup(); | 2077 DisableFirstCleanup(); |
2067 InitCache(); | 2078 InitCache(); |
2068 | 2079 |
2069 // There is a dirty entry (but marked as clean) at the end, pointing to a | 2080 // There is a dirty entry (but marked as clean) at the end, pointing to a |
2070 // deleted entry through the hash collision list. We should not re-insert the | 2081 // deleted entry through the hash collision list. We should not re-insert the |
2071 // deleted entry into the index table. | 2082 // deleted entry into the index table. |
2072 | 2083 |
2073 TrimForTest(false); | 2084 TrimForTest(false); |
2074 // The cache should be clean (as detected by CheckCacheIntegrity). | 2085 // The cache should be clean (as detected by CheckCacheIntegrity). |
2075 } | 2086 } |
2076 | 2087 |
2077 // Tests that we don't hang when there is a loop on the hash collision list. | 2088 // Tests that we don't hang when there is a loop on the hash collision list. |
2078 // The test cache could be a result of bug 69135. | 2089 // The test cache could be a result of bug 69135. |
2079 TEST_F(DiskCacheBackendTest, BadNextEntry1) { | 2090 TEST_F(DiskCacheBackendTest, BadNextEntry1) { |
2080 ASSERT_TRUE(CopyTestCache("list_loop2")); | 2091 ASSERT_TRUE(CopyTestCache("list_loop2")); |
2081 SetMask(0x1); // 2-entry table. | 2092 SetMask(0x1); // 2-entry table. |
2082 SetMaxSize(0x3000); // 12 kB. | 2093 SetMaxSize(0x3000); // 12 kB. |
2083 DisableFirstCleanup(); | 2094 DisableFirstCleanup(); |
2084 InitCache(); | 2095 InitCache(); |
2085 | 2096 |
2086 // The second entry points at itselft, and the first entry is not accessible | 2097 // The second entry points at itselft, and the first entry is not accessible |
2087 // though the index, but it is at the head of the LRU. | 2098 // though the index, but it is at the head of the LRU. |
2088 | 2099 |
2089 disk_cache::Entry* entry; | 2100 disk_cache::Entry* entry; |
2090 ASSERT_EQ(net::OK, CreateEntry("The first key", &entry)); | 2101 ASSERT_EQ(net::OK, CreateEntry("The first key", &entry)); |
2091 entry->Close(); | 2102 entry->Close(); |
2092 | 2103 |
2093 TrimForTest(false); | 2104 TrimForTest(false); |
2094 TrimForTest(false); | 2105 TrimForTest(false); |
2095 ASSERT_EQ(net::OK, OpenEntry("The first key", &entry)); | 2106 ASSERT_EQ(net::OK, OpenEntry("The first key", &entry)); |
2096 entry->Close(); | 2107 entry->Close(); |
2097 EXPECT_EQ(1, cache_->GetEntryCount()); | 2108 EXPECT_EQ(1, cache_->GetEntryCount()); |
2098 } | 2109 } |
2099 | 2110 |
2100 // Tests that we don't hang when there is a loop on the hash collision list. | 2111 // Tests that we don't hang when there is a loop on the hash collision list. |
2101 // The test cache could be a result of bug 69135. | 2112 // The test cache could be a result of bug 69135. |
2102 TEST_F(DiskCacheBackendTest, BadNextEntry2) { | 2113 TEST_F(DiskCacheBackendTest, BadNextEntry2) { |
2103 ASSERT_TRUE(CopyTestCache("list_loop3")); | 2114 ASSERT_TRUE(CopyTestCache("list_loop3")); |
2104 SetMask(0x1); // 2-entry table. | 2115 SetMask(0x1); // 2-entry table. |
2105 SetMaxSize(0x3000); // 12 kB. | 2116 SetMaxSize(0x3000); // 12 kB. |
2106 DisableFirstCleanup(); | 2117 DisableFirstCleanup(); |
2107 InitCache(); | 2118 InitCache(); |
2108 | 2119 |
2109 // There is a wide loop of 5 entries. | 2120 // There is a wide loop of 5 entries. |
2110 | 2121 |
2111 disk_cache::Entry* entry; | 2122 disk_cache::Entry* entry; |
2112 ASSERT_NE(net::OK, OpenEntry("Not present key", &entry)); | 2123 ASSERT_NE(net::OK, OpenEntry("Not present key", &entry)); |
2113 } | 2124 } |
2114 | 2125 |
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2459 SetNewEviction(); | 2470 SetNewEviction(); |
2460 BackendTrimInvalidEntry12(); | 2471 BackendTrimInvalidEntry12(); |
2461 } | 2472 } |
2462 | 2473 |
2463 // We want to be able to deal with messed up entries on disk. | 2474 // We want to be able to deal with messed up entries on disk. |
2464 void DiskCacheBackendTest::BackendInvalidRankings2() { | 2475 void DiskCacheBackendTest::BackendInvalidRankings2() { |
2465 ASSERT_TRUE(CopyTestCache("bad_rankings")); | 2476 ASSERT_TRUE(CopyTestCache("bad_rankings")); |
2466 DisableFirstCleanup(); | 2477 DisableFirstCleanup(); |
2467 InitCache(); | 2478 InitCache(); |
2468 | 2479 |
2469 disk_cache::Entry *entry1, *entry2; | 2480 disk_cache::Entry* entry1, *entry2; |
2470 EXPECT_NE(net::OK, OpenEntry("the first key", &entry1)); | 2481 EXPECT_NE(net::OK, OpenEntry("the first key", &entry1)); |
2471 ASSERT_EQ(net::OK, OpenEntry("some other key", &entry2)); | 2482 ASSERT_EQ(net::OK, OpenEntry("some other key", &entry2)); |
2472 entry2->Close(); | 2483 entry2->Close(); |
2473 | 2484 |
2474 // CheckCacheIntegrity will fail at this point. | 2485 // CheckCacheIntegrity will fail at this point. |
2475 DisableIntegrityCheck(); | 2486 DisableIntegrityCheck(); |
2476 } | 2487 } |
2477 | 2488 |
2478 TEST_F(DiskCacheBackendTest, InvalidRankings2) { | 2489 TEST_F(DiskCacheBackendTest, InvalidRankings2) { |
2479 BackendInvalidRankings2(); | 2490 BackendInvalidRankings2(); |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2524 ASSERT_TRUE(CopyTestCache("bad_rankings")); | 2535 ASSERT_TRUE(CopyTestCache("bad_rankings")); |
2525 DisableFirstCleanup(); | 2536 DisableFirstCleanup(); |
2526 SetNewEviction(); | 2537 SetNewEviction(); |
2527 InitCache(); | 2538 InitCache(); |
2528 SetTestMode(); // Fail cache reinitialization. | 2539 SetTestMode(); // Fail cache reinitialization. |
2529 BackendInvalidRankings(); | 2540 BackendInvalidRankings(); |
2530 } | 2541 } |
2531 | 2542 |
2532 // If the LRU is corrupt and we have open entries, we disable the cache. | 2543 // If the LRU is corrupt and we have open entries, we disable the cache. |
2533 void DiskCacheBackendTest::BackendDisable() { | 2544 void DiskCacheBackendTest::BackendDisable() { |
2534 disk_cache::Entry *entry1, *entry2; | 2545 disk_cache::Entry* entry1, *entry2; |
2535 void* iter = NULL; | 2546 void* iter = NULL; |
2536 ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry1)); | 2547 ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry1)); |
2537 | 2548 |
2538 EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry2)); | 2549 EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry2)); |
2539 EXPECT_EQ(0, cache_->GetEntryCount()); | 2550 EXPECT_EQ(0, cache_->GetEntryCount()); |
2540 EXPECT_NE(net::OK, CreateEntry("Something new", &entry2)); | 2551 EXPECT_NE(net::OK, CreateEntry("Something new", &entry2)); |
2541 | 2552 |
2542 entry1->Close(); | 2553 entry1->Close(); |
2543 FlushQueueForTest(); // Flushing the Close posts a task to restart the cache. | 2554 FlushQueueForTest(); // Flushing the Close posts a task to restart the cache. |
2544 FlushQueueForTest(); // This one actually allows that task to complete. | 2555 FlushQueueForTest(); // This one actually allows that task to complete. |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2623 ASSERT_TRUE(CopyTestCache("list_loop")); | 2634 ASSERT_TRUE(CopyTestCache("list_loop")); |
2624 DisableFirstCleanup(); | 2635 DisableFirstCleanup(); |
2625 SetNewEviction(); | 2636 SetNewEviction(); |
2626 InitCache(); | 2637 InitCache(); |
2627 SetTestMode(); // Fail cache reinitialization. | 2638 SetTestMode(); // Fail cache reinitialization. |
2628 BackendDisable2(); | 2639 BackendDisable2(); |
2629 } | 2640 } |
2630 | 2641 |
2631 // If the index size changes when we disable the cache, we should not crash. | 2642 // If the index size changes when we disable the cache, we should not crash. |
2632 void DiskCacheBackendTest::BackendDisable3() { | 2643 void DiskCacheBackendTest::BackendDisable3() { |
2633 disk_cache::Entry *entry1, *entry2; | 2644 disk_cache::Entry* entry1, *entry2; |
2634 void* iter = NULL; | 2645 void* iter = NULL; |
2635 EXPECT_EQ(2, cache_->GetEntryCount()); | 2646 EXPECT_EQ(2, cache_->GetEntryCount()); |
2636 ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry1)); | 2647 ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry1)); |
2637 entry1->Close(); | 2648 entry1->Close(); |
2638 | 2649 |
2639 EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry2)); | 2650 EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry2)); |
2640 FlushQueueForTest(); | 2651 FlushQueueForTest(); |
2641 | 2652 |
2642 ASSERT_EQ(net::OK, CreateEntry("Something new", &entry2)); | 2653 ASSERT_EQ(net::OK, CreateEntry("Something new", &entry2)); |
2643 entry2->Close(); | 2654 entry2->Close(); |
(...skipping 13 matching lines...) Expand all Loading... |
2657 ASSERT_TRUE(CopyTestCache("bad_rankings2")); | 2668 ASSERT_TRUE(CopyTestCache("bad_rankings2")); |
2658 DisableFirstCleanup(); | 2669 DisableFirstCleanup(); |
2659 SetMaxSize(20 * 1024 * 1024); | 2670 SetMaxSize(20 * 1024 * 1024); |
2660 SetNewEviction(); | 2671 SetNewEviction(); |
2661 InitCache(); | 2672 InitCache(); |
2662 BackendDisable3(); | 2673 BackendDisable3(); |
2663 } | 2674 } |
2664 | 2675 |
2665 // If we disable the cache, already open entries should work as far as possible. | 2676 // If we disable the cache, already open entries should work as far as possible. |
2666 void DiskCacheBackendTest::BackendDisable4() { | 2677 void DiskCacheBackendTest::BackendDisable4() { |
2667 disk_cache::Entry *entry1, *entry2, *entry3, *entry4; | 2678 disk_cache::Entry* entry1, *entry2, *entry3, *entry4; |
2668 void* iter = NULL; | 2679 void* iter = NULL; |
2669 ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry1)); | 2680 ASSERT_EQ(net::OK, OpenNextEntry(&iter, &entry1)); |
2670 | 2681 |
2671 char key2[2000]; | 2682 char key2[2000]; |
2672 char key3[20000]; | 2683 char key3[20000]; |
2673 CacheTestFillBuffer(key2, sizeof(key2), true); | 2684 CacheTestFillBuffer(key2, sizeof(key2), true); |
2674 CacheTestFillBuffer(key3, sizeof(key3), true); | 2685 CacheTestFillBuffer(key3, sizeof(key3), true); |
2675 key2[sizeof(key2) - 1] = '\0'; | 2686 key2[sizeof(key2) - 1] = '\0'; |
2676 key3[sizeof(key3) - 1] = '\0'; | 2687 key3[sizeof(key3) - 1] = '\0'; |
2677 ASSERT_EQ(net::OK, CreateEntry(key2, &entry2)); | 2688 ASSERT_EQ(net::OK, CreateEntry(key2, &entry2)); |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2781 stats.clear(); | 2792 stats.clear(); |
2782 cache_->GetStats(&stats); | 2793 cache_->GetStats(&stats); |
2783 EXPECT_FALSE(stats.empty()); | 2794 EXPECT_FALSE(stats.empty()); |
2784 | 2795 |
2785 EXPECT_EQ(1, std::count(stats.begin(), stats.end(), hits)); | 2796 EXPECT_EQ(1, std::count(stats.begin(), stats.end(), hits)); |
2786 } | 2797 } |
2787 | 2798 |
2788 void DiskCacheBackendTest::BackendDoomAll() { | 2799 void DiskCacheBackendTest::BackendDoomAll() { |
2789 InitCache(); | 2800 InitCache(); |
2790 | 2801 |
2791 disk_cache::Entry *entry1, *entry2; | 2802 disk_cache::Entry* entry1, *entry2; |
2792 ASSERT_EQ(net::OK, CreateEntry("first", &entry1)); | 2803 ASSERT_EQ(net::OK, CreateEntry("first", &entry1)); |
2793 ASSERT_EQ(net::OK, CreateEntry("second", &entry2)); | 2804 ASSERT_EQ(net::OK, CreateEntry("second", &entry2)); |
2794 entry1->Close(); | 2805 entry1->Close(); |
2795 entry2->Close(); | 2806 entry2->Close(); |
2796 | 2807 |
2797 ASSERT_EQ(net::OK, CreateEntry("third", &entry1)); | 2808 ASSERT_EQ(net::OK, CreateEntry("third", &entry1)); |
2798 ASSERT_EQ(net::OK, CreateEntry("fourth", &entry2)); | 2809 ASSERT_EQ(net::OK, CreateEntry("fourth", &entry2)); |
2799 | 2810 |
2800 ASSERT_EQ(4, cache_->GetEntryCount()); | 2811 ASSERT_EQ(4, cache_->GetEntryCount()); |
2801 EXPECT_EQ(net::OK, DoomAllEntries()); | 2812 EXPECT_EQ(net::OK, DoomAllEntries()); |
2802 ASSERT_EQ(0, cache_->GetEntryCount()); | 2813 ASSERT_EQ(0, cache_->GetEntryCount()); |
2803 | 2814 |
2804 // We should stop posting tasks at some point (if we post any). | 2815 // We should stop posting tasks at some point (if we post any). |
2805 base::MessageLoop::current()->RunUntilIdle(); | 2816 base::MessageLoop::current()->RunUntilIdle(); |
2806 | 2817 |
2807 disk_cache::Entry *entry3, *entry4; | 2818 disk_cache::Entry* entry3, *entry4; |
2808 EXPECT_NE(net::OK, OpenEntry("third", &entry3)); | 2819 EXPECT_NE(net::OK, OpenEntry("third", &entry3)); |
2809 ASSERT_EQ(net::OK, CreateEntry("third", &entry3)); | 2820 ASSERT_EQ(net::OK, CreateEntry("third", &entry3)); |
2810 ASSERT_EQ(net::OK, CreateEntry("fourth", &entry4)); | 2821 ASSERT_EQ(net::OK, CreateEntry("fourth", &entry4)); |
2811 | 2822 |
2812 EXPECT_EQ(net::OK, DoomAllEntries()); | 2823 EXPECT_EQ(net::OK, DoomAllEntries()); |
2813 ASSERT_EQ(0, cache_->GetEntryCount()); | 2824 ASSERT_EQ(0, cache_->GetEntryCount()); |
2814 | 2825 |
2815 entry1->Close(); | 2826 entry1->Close(); |
2816 entry2->Close(); | 2827 entry2->Close(); |
2817 entry3->Doom(); // The entry should be already doomed, but this must work. | 2828 entry3->Doom(); // The entry should be already doomed, but this must work. |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2945 EXPECT_EQ(kDefaultCacheSize - 1, | 2956 EXPECT_EQ(kDefaultCacheSize - 1, |
2946 disk_cache::PreferredCacheSize(large_size * 10 / 8 - 1)); | 2957 disk_cache::PreferredCacheSize(large_size * 10 / 8 - 1)); |
2947 | 2958 |
2948 // Region 2: expected = default_size | 2959 // Region 2: expected = default_size |
2949 EXPECT_EQ(kDefaultCacheSize, | 2960 EXPECT_EQ(kDefaultCacheSize, |
2950 disk_cache::PreferredCacheSize(large_size * 10 / 8)); | 2961 disk_cache::PreferredCacheSize(large_size * 10 / 8)); |
2951 EXPECT_EQ(kDefaultCacheSize, | 2962 EXPECT_EQ(kDefaultCacheSize, |
2952 disk_cache::PreferredCacheSize(large_size * 10 - 1)); | 2963 disk_cache::PreferredCacheSize(large_size * 10 - 1)); |
2953 | 2964 |
2954 // Region 3: expected = available * 0.1 | 2965 // Region 3: expected = available * 0.1 |
2955 EXPECT_EQ(kDefaultCacheSize, | 2966 EXPECT_EQ(kDefaultCacheSize, disk_cache::PreferredCacheSize(large_size * 10)); |
2956 disk_cache::PreferredCacheSize(large_size * 10)); | |
2957 EXPECT_EQ((kDefaultCacheSize * 25 - 1) / 10, | 2967 EXPECT_EQ((kDefaultCacheSize * 25 - 1) / 10, |
2958 disk_cache::PreferredCacheSize(large_size * 25 - 1)); | 2968 disk_cache::PreferredCacheSize(large_size * 25 - 1)); |
2959 | 2969 |
2960 // Region 4: expected = default_size * 2.5 | 2970 // Region 4: expected = default_size * 2.5 |
2961 EXPECT_EQ(kDefaultCacheSize * 25 / 10, | 2971 EXPECT_EQ(kDefaultCacheSize * 25 / 10, |
2962 disk_cache::PreferredCacheSize(large_size * 25)); | 2972 disk_cache::PreferredCacheSize(large_size * 25)); |
2963 EXPECT_EQ(kDefaultCacheSize * 25 / 10, | 2973 EXPECT_EQ(kDefaultCacheSize * 25 / 10, |
2964 disk_cache::PreferredCacheSize(large_size * 100 - 1)); | 2974 disk_cache::PreferredCacheSize(large_size * 100 - 1)); |
2965 EXPECT_EQ(kDefaultCacheSize * 25 / 10, | 2975 EXPECT_EQ(kDefaultCacheSize * 25 / 10, |
2966 disk_cache::PreferredCacheSize(large_size * 100)); | 2976 disk_cache::PreferredCacheSize(large_size * 100)); |
2967 EXPECT_EQ(kDefaultCacheSize * 25 / 10, | 2977 EXPECT_EQ(kDefaultCacheSize * 25 / 10, |
2968 disk_cache::PreferredCacheSize(large_size * 250 - 1)); | 2978 disk_cache::PreferredCacheSize(large_size * 250 - 1)); |
2969 | 2979 |
2970 // Region 5: expected = available * 0.1 | 2980 // Region 5: expected = available * 0.1 |
2971 int64 largest_size = kDefaultCacheSize * 4; | 2981 int64 largest_size = kDefaultCacheSize * 4; |
2972 EXPECT_EQ(kDefaultCacheSize * 25 / 10, | 2982 EXPECT_EQ(kDefaultCacheSize * 25 / 10, |
2973 disk_cache::PreferredCacheSize(large_size * 250)); | 2983 disk_cache::PreferredCacheSize(large_size * 250)); |
2974 EXPECT_EQ(largest_size - 1, | 2984 EXPECT_EQ(largest_size - 1, |
2975 disk_cache::PreferredCacheSize(largest_size * 100 - 1)); | 2985 disk_cache::PreferredCacheSize(largest_size * 100 - 1)); |
2976 | 2986 |
2977 // Region 6: expected = largest possible size | 2987 // Region 6: expected = largest possible size |
2978 EXPECT_EQ(largest_size, | 2988 EXPECT_EQ(largest_size, disk_cache::PreferredCacheSize(largest_size * 100)); |
2979 disk_cache::PreferredCacheSize(largest_size * 100)); | 2989 EXPECT_EQ(largest_size, disk_cache::PreferredCacheSize(largest_size * 10000)); |
2980 EXPECT_EQ(largest_size, | |
2981 disk_cache::PreferredCacheSize(largest_size * 10000)); | |
2982 } | 2990 } |
2983 | 2991 |
2984 // Tests that we can "migrate" a running instance from one experiment group to | 2992 // Tests that we can "migrate" a running instance from one experiment group to |
2985 // another. | 2993 // another. |
2986 TEST_F(DiskCacheBackendTest, Histograms) { | 2994 TEST_F(DiskCacheBackendTest, Histograms) { |
2987 InitCache(); | 2995 InitCache(); |
2988 disk_cache::BackendImpl* backend_ = cache_impl_; // Needed be the macro. | 2996 disk_cache::BackendImpl* backend_ = cache_impl_; // Needed be the macro. |
2989 | 2997 |
2990 for (int i = 1; i < 3; i++) { | 2998 for (int i = 1; i < 3; i++) { |
2991 CACHE_UMA(HOURS, "FillupTime", i, 28); | 2999 CACHE_UMA(HOURS, "FillupTime", i, 28); |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3066 file->Init(name); | 3074 file->Init(name); |
3067 | 3075 |
3068 #if defined(OS_WIN) | 3076 #if defined(OS_WIN) |
3069 DWORD sharing = FILE_SHARE_READ | FILE_SHARE_WRITE; | 3077 DWORD sharing = FILE_SHARE_READ | FILE_SHARE_WRITE; |
3070 DWORD access = GENERIC_READ | GENERIC_WRITE; | 3078 DWORD access = GENERIC_READ | GENERIC_WRITE; |
3071 base::win::ScopedHandle file2(CreateFile( | 3079 base::win::ScopedHandle file2(CreateFile( |
3072 name.value().c_str(), access, sharing, NULL, OPEN_EXISTING, 0, NULL)); | 3080 name.value().c_str(), access, sharing, NULL, OPEN_EXISTING, 0, NULL)); |
3073 EXPECT_FALSE(file2.IsValid()); | 3081 EXPECT_FALSE(file2.IsValid()); |
3074 | 3082 |
3075 sharing |= FILE_SHARE_DELETE; | 3083 sharing |= FILE_SHARE_DELETE; |
3076 file2.Set(CreateFile(name.value().c_str(), access, sharing, NULL, | 3084 file2.Set(CreateFile( |
3077 OPEN_EXISTING, 0, NULL)); | 3085 name.value().c_str(), access, sharing, NULL, OPEN_EXISTING, 0, NULL)); |
3078 EXPECT_TRUE(file2.IsValid()); | 3086 EXPECT_TRUE(file2.IsValid()); |
3079 #endif | 3087 #endif |
3080 | 3088 |
3081 EXPECT_TRUE(base::DeleteFile(name, false)); | 3089 EXPECT_TRUE(base::DeleteFile(name, false)); |
3082 | 3090 |
3083 // We should be able to use the file. | 3091 // We should be able to use the file. |
3084 const int kSize = 200; | 3092 const int kSize = 200; |
3085 char buffer1[kSize]; | 3093 char buffer1[kSize]; |
3086 char buffer2[kSize]; | 3094 char buffer2[kSize]; |
3087 memset(buffer1, 't', kSize); | 3095 memset(buffer1, 't', kSize); |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3212 } | 3220 } |
3213 | 3221 |
3214 TEST_F(DiskCacheBackendTest, DISABLED_SimpleCacheSetSize) { | 3222 TEST_F(DiskCacheBackendTest, DISABLED_SimpleCacheSetSize) { |
3215 SetSimpleCacheMode(); | 3223 SetSimpleCacheMode(); |
3216 BackendSetSize(); | 3224 BackendSetSize(); |
3217 } | 3225 } |
3218 | 3226 |
3219 // MacOS has a default open file limit of 256 files, which is incompatible with | 3227 // MacOS has a default open file limit of 256 files, which is incompatible with |
3220 // this simple cache test. | 3228 // this simple cache test. |
3221 #if defined(OS_MACOSX) | 3229 #if defined(OS_MACOSX) |
3222 #define SIMPLE_MAYBE_MACOS(TestName) DISABLED_ ## TestName | 3230 #define SIMPLE_MAYBE_MACOS(TestName) DISABLED_##TestName |
3223 #else | 3231 #else |
3224 #define SIMPLE_MAYBE_MACOS(TestName) TestName | 3232 #define SIMPLE_MAYBE_MACOS(TestName) TestName |
3225 #endif | 3233 #endif |
3226 | 3234 |
3227 TEST_F(DiskCacheBackendTest, SIMPLE_MAYBE_MACOS(SimpleCacheLoad)) { | 3235 TEST_F(DiskCacheBackendTest, SIMPLE_MAYBE_MACOS(SimpleCacheLoad)) { |
3228 SetMaxSize(0x100000); | 3236 SetMaxSize(0x100000); |
3229 SetSimpleCacheMode(); | 3237 SetSimpleCacheMode(); |
3230 BackendLoad(); | 3238 BackendLoad(); |
3231 } | 3239 } |
3232 | 3240 |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3322 entry = NULL; | 3330 entry = NULL; |
3323 | 3331 |
3324 // Write an invalid header for stream 0 and stream 1. | 3332 // Write an invalid header for stream 0 and stream 1. |
3325 base::FilePath entry_file1_path = cache_path_.AppendASCII( | 3333 base::FilePath entry_file1_path = cache_path_.AppendASCII( |
3326 disk_cache::simple_util::GetFilenameFromKeyAndFileIndex(key, 0)); | 3334 disk_cache::simple_util::GetFilenameFromKeyAndFileIndex(key, 0)); |
3327 | 3335 |
3328 disk_cache::SimpleFileHeader header; | 3336 disk_cache::SimpleFileHeader header; |
3329 header.initial_magic_number = GG_UINT64_C(0xbadf00d); | 3337 header.initial_magic_number = GG_UINT64_C(0xbadf00d); |
3330 EXPECT_EQ( | 3338 EXPECT_EQ( |
3331 implicit_cast<int>(sizeof(header)), | 3339 implicit_cast<int>(sizeof(header)), |
3332 base::WriteFile(entry_file1_path, reinterpret_cast<char*>(&header), | 3340 base::WriteFile( |
3333 sizeof(header))); | 3341 entry_file1_path, reinterpret_cast<char*>(&header), sizeof(header))); |
3334 ASSERT_EQ(net::ERR_FAILED, OpenEntry(key, &entry)); | 3342 ASSERT_EQ(net::ERR_FAILED, OpenEntry(key, &entry)); |
3335 } | 3343 } |
3336 | 3344 |
3337 // Tests that the Simple Cache Backend fails to initialize with non-matching | 3345 // Tests that the Simple Cache Backend fails to initialize with non-matching |
3338 // file structure on disk. | 3346 // file structure on disk. |
3339 TEST_F(DiskCacheBackendTest, SimpleCacheOverBlockfileCache) { | 3347 TEST_F(DiskCacheBackendTest, SimpleCacheOverBlockfileCache) { |
3340 // Create a cache structure with the |BackendImpl|. | 3348 // Create a cache structure with the |BackendImpl|. |
3341 InitCache(); | 3349 InitCache(); |
3342 disk_cache::Entry* entry; | 3350 disk_cache::Entry* entry; |
3343 const int kSize = 50; | 3351 const int kSize = 50; |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3415 cache_->EndEnumeration(&iter); | 3423 cache_->EndEnumeration(&iter); |
3416 EXPECT_EQ(key_pool.size(), count); | 3424 EXPECT_EQ(key_pool.size(), count); |
3417 EXPECT_TRUE(keys_to_match.empty()); | 3425 EXPECT_TRUE(keys_to_match.empty()); |
3418 | 3426 |
3419 // Check that opening entries does not affect enumeration. | 3427 // Check that opening entries does not affect enumeration. |
3420 keys_to_match = key_pool; | 3428 keys_to_match = key_pool; |
3421 iter = NULL; | 3429 iter = NULL; |
3422 count = 0; | 3430 count = 0; |
3423 disk_cache::Entry* entry_opened_before; | 3431 disk_cache::Entry* entry_opened_before; |
3424 ASSERT_EQ(net::OK, OpenEntry(*(key_pool.begin()), &entry_opened_before)); | 3432 ASSERT_EQ(net::OK, OpenEntry(*(key_pool.begin()), &entry_opened_before)); |
3425 ASSERT_TRUE(EnumerateAndMatchKeys(key_pool.size()/2, | 3433 ASSERT_TRUE(EnumerateAndMatchKeys( |
3426 &iter, | 3434 key_pool.size() / 2, &iter, &keys_to_match, &count)); |
3427 &keys_to_match, | |
3428 &count)); | |
3429 | 3435 |
3430 disk_cache::Entry* entry_opened_middle; | 3436 disk_cache::Entry* entry_opened_middle; |
3431 ASSERT_EQ(net::OK, | 3437 ASSERT_EQ(net::OK, OpenEntry(*(keys_to_match.begin()), &entry_opened_middle)); |
3432 OpenEntry(*(keys_to_match.begin()), &entry_opened_middle)); | |
3433 ASSERT_TRUE(EnumerateAndMatchKeys(-1, &iter, &keys_to_match, &count)); | 3438 ASSERT_TRUE(EnumerateAndMatchKeys(-1, &iter, &keys_to_match, &count)); |
3434 cache_->EndEnumeration(&iter); | 3439 cache_->EndEnumeration(&iter); |
3435 entry_opened_before->Close(); | 3440 entry_opened_before->Close(); |
3436 entry_opened_middle->Close(); | 3441 entry_opened_middle->Close(); |
3437 | 3442 |
3438 EXPECT_EQ(key_pool.size(), count); | 3443 EXPECT_EQ(key_pool.size(), count); |
3439 EXPECT_TRUE(keys_to_match.empty()); | 3444 EXPECT_TRUE(keys_to_match.empty()); |
3440 } | 3445 } |
3441 | 3446 |
3442 // Tests that the enumerations are not affected by dooming an entry in the | 3447 // Tests that the enumerations are not affected by dooming an entry in the |
3443 // middle. | 3448 // middle. |
3444 TEST_F(DiskCacheBackendTest, SimpleCacheEnumerationWhileDoomed) { | 3449 TEST_F(DiskCacheBackendTest, SimpleCacheEnumerationWhileDoomed) { |
3445 SetSimpleCacheMode(); | 3450 SetSimpleCacheMode(); |
3446 InitCache(); | 3451 InitCache(); |
3447 std::set<std::string> key_pool; | 3452 std::set<std::string> key_pool; |
3448 ASSERT_TRUE(CreateSetOfRandomEntries(&key_pool)); | 3453 ASSERT_TRUE(CreateSetOfRandomEntries(&key_pool)); |
3449 | 3454 |
3450 // Check that enumeration returns all entries but the doomed one. | 3455 // Check that enumeration returns all entries but the doomed one. |
3451 std::set<std::string> keys_to_match(key_pool); | 3456 std::set<std::string> keys_to_match(key_pool); |
3452 void* iter = NULL; | 3457 void* iter = NULL; |
3453 size_t count = 0; | 3458 size_t count = 0; |
3454 ASSERT_TRUE(EnumerateAndMatchKeys(key_pool.size()/2, | 3459 ASSERT_TRUE(EnumerateAndMatchKeys( |
3455 &iter, | 3460 key_pool.size() / 2, &iter, &keys_to_match, &count)); |
3456 &keys_to_match, | |
3457 &count)); | |
3458 | 3461 |
3459 std::string key_to_delete = *(keys_to_match.begin()); | 3462 std::string key_to_delete = *(keys_to_match.begin()); |
3460 DoomEntry(key_to_delete); | 3463 DoomEntry(key_to_delete); |
3461 keys_to_match.erase(key_to_delete); | 3464 keys_to_match.erase(key_to_delete); |
3462 key_pool.erase(key_to_delete); | 3465 key_pool.erase(key_to_delete); |
3463 ASSERT_TRUE(EnumerateAndMatchKeys(-1, &iter, &keys_to_match, &count)); | 3466 ASSERT_TRUE(EnumerateAndMatchKeys(-1, &iter, &keys_to_match, &count)); |
3464 cache_->EndEnumeration(&iter); | 3467 cache_->EndEnumeration(&iter); |
3465 | 3468 |
3466 EXPECT_EQ(key_pool.size(), count); | 3469 EXPECT_EQ(key_pool.size(), count); |
3467 EXPECT_TRUE(keys_to_match.empty()); | 3470 EXPECT_TRUE(keys_to_match.empty()); |
(...skipping 15 matching lines...) Expand all Loading... |
3483 ASSERT_EQ(net::OK, CreateEntry(key, &corrupted_entry)); | 3486 ASSERT_EQ(net::OK, CreateEntry(key, &corrupted_entry)); |
3484 ASSERT_TRUE(corrupted_entry); | 3487 ASSERT_TRUE(corrupted_entry); |
3485 const int kSize = 50; | 3488 const int kSize = 50; |
3486 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kSize)); | 3489 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kSize)); |
3487 CacheTestFillBuffer(buffer->data(), kSize, false); | 3490 CacheTestFillBuffer(buffer->data(), kSize, false); |
3488 ASSERT_EQ(kSize, | 3491 ASSERT_EQ(kSize, |
3489 WriteData(corrupted_entry, 0, 0, buffer.get(), kSize, false)); | 3492 WriteData(corrupted_entry, 0, 0, buffer.get(), kSize, false)); |
3490 ASSERT_EQ(kSize, ReadData(corrupted_entry, 0, 0, buffer.get(), kSize)); | 3493 ASSERT_EQ(kSize, ReadData(corrupted_entry, 0, 0, buffer.get(), kSize)); |
3491 corrupted_entry->Close(); | 3494 corrupted_entry->Close(); |
3492 | 3495 |
3493 EXPECT_TRUE(disk_cache::simple_util::CreateCorruptFileForTests( | 3496 EXPECT_TRUE( |
3494 key, cache_path_)); | 3497 disk_cache::simple_util::CreateCorruptFileForTests(key, cache_path_)); |
3495 EXPECT_EQ(key_pool.size() + 1, | 3498 EXPECT_EQ(key_pool.size() + 1, |
3496 implicit_cast<size_t>(cache_->GetEntryCount())); | 3499 implicit_cast<size_t>(cache_->GetEntryCount())); |
3497 | 3500 |
3498 // Check that enumeration returns all entries but the corrupt one. | 3501 // Check that enumeration returns all entries but the corrupt one. |
3499 std::set<std::string> keys_to_match(key_pool); | 3502 std::set<std::string> keys_to_match(key_pool); |
3500 void* iter = NULL; | 3503 void* iter = NULL; |
3501 size_t count = 0; | 3504 size_t count = 0; |
3502 ASSERT_TRUE(EnumerateAndMatchKeys(-1, &iter, &keys_to_match, &count)); | 3505 ASSERT_TRUE(EnumerateAndMatchKeys(-1, &iter, &keys_to_match, &count)); |
3503 cache_->EndEnumeration(&iter); | 3506 cache_->EndEnumeration(&iter); |
3504 | 3507 |
3505 EXPECT_EQ(key_pool.size(), count); | 3508 EXPECT_EQ(key_pool.size(), count); |
3506 EXPECT_TRUE(keys_to_match.empty()); | 3509 EXPECT_TRUE(keys_to_match.empty()); |
3507 } | 3510 } |
3508 | 3511 |
3509 #endif // defined(OS_POSIX) | 3512 #endif // defined(OS_POSIX) |
OLD | NEW |