OLD | NEW |
1 // Copyright (c) 2006-2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2010 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/platform_thread.h" | 7 #include "base/platform_thread.h" |
8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
9 #include "base/stringprintf.h" | 9 #include "base/stringprintf.h" |
10 #include "base/third_party/dynamic_annotations/dynamic_annotations.h" | 10 #include "base/third_party/dynamic_annotations/dynamic_annotations.h" |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 | 223 |
224 MessageLoop::current()->RunAllPending(); | 224 MessageLoop::current()->RunAllPending(); |
225 } | 225 } |
226 | 226 |
227 TEST_F(DiskCacheBackendTest, ExternalFiles) { | 227 TEST_F(DiskCacheBackendTest, ExternalFiles) { |
228 InitCache(); | 228 InitCache(); |
229 // First, lets create a file on the folder. | 229 // First, lets create a file on the folder. |
230 FilePath filename = GetCacheFilePath().AppendASCII("f_000001"); | 230 FilePath filename = GetCacheFilePath().AppendASCII("f_000001"); |
231 | 231 |
232 const int kSize = 50; | 232 const int kSize = 50; |
233 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize); | 233 scoped_refptr<net::IOBuffer> buffer1(new net::IOBuffer(kSize)); |
234 CacheTestFillBuffer(buffer1->data(), kSize, false); | 234 CacheTestFillBuffer(buffer1->data(), kSize, false); |
235 ASSERT_EQ(kSize, file_util::WriteFile(filename, buffer1->data(), kSize)); | 235 ASSERT_EQ(kSize, file_util::WriteFile(filename, buffer1->data(), kSize)); |
236 | 236 |
237 // Now let's create a file with the cache. | 237 // Now let's create a file with the cache. |
238 disk_cache::Entry* entry; | 238 disk_cache::Entry* entry; |
239 ASSERT_EQ(net::OK, CreateEntry("key", &entry)); | 239 ASSERT_EQ(net::OK, CreateEntry("key", &entry)); |
240 ASSERT_EQ(0, WriteData(entry, 0, 20000, buffer1, 0, false)); | 240 ASSERT_EQ(0, WriteData(entry, 0, 20000, buffer1, 0, false)); |
241 entry->Close(); | 241 entry->Close(); |
242 | 242 |
243 // And verify that the first file is still there. | 243 // And verify that the first file is still there. |
244 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kSize); | 244 scoped_refptr<net::IOBuffer> buffer2(new net::IOBuffer(kSize)); |
245 ASSERT_EQ(kSize, file_util::ReadFile(filename, buffer2->data(), kSize)); | 245 ASSERT_EQ(kSize, file_util::ReadFile(filename, buffer2->data(), kSize)); |
246 EXPECT_EQ(0, memcmp(buffer1->data(), buffer2->data(), kSize)); | 246 EXPECT_EQ(0, memcmp(buffer1->data(), buffer2->data(), kSize)); |
247 } | 247 } |
248 | 248 |
249 // Tests that we deal with file-level pending operations at destruction time. | 249 // Tests that we deal with file-level pending operations at destruction time. |
250 TEST_F(DiskCacheTest, ShutdownWithPendingIO) { | 250 TEST_F(DiskCacheTest, ShutdownWithPendingIO) { |
251 TestCompletionCallback cb; | 251 TestCompletionCallback cb; |
252 | 252 |
253 { | 253 { |
254 FilePath path = GetCacheFilePath(); | 254 FilePath path = GetCacheFilePath(); |
255 ASSERT_TRUE(DeleteCache(path)); | 255 ASSERT_TRUE(DeleteCache(path)); |
256 base::Thread cache_thread("CacheThread"); | 256 base::Thread cache_thread("CacheThread"); |
257 ASSERT_TRUE(cache_thread.StartWithOptions( | 257 ASSERT_TRUE(cache_thread.StartWithOptions( |
258 base::Thread::Options(MessageLoop::TYPE_IO, 0))); | 258 base::Thread::Options(MessageLoop::TYPE_IO, 0))); |
259 | 259 |
260 disk_cache::Backend* cache; | 260 disk_cache::Backend* cache; |
261 int rv = disk_cache::BackendImpl::CreateBackend( | 261 int rv = disk_cache::BackendImpl::CreateBackend( |
262 path, false, 0, net::DISK_CACHE, disk_cache::kNoRandom, | 262 path, false, 0, net::DISK_CACHE, disk_cache::kNoRandom, |
263 base::MessageLoopProxy::CreateForCurrentThread(), &cache, &cb); | 263 base::MessageLoopProxy::CreateForCurrentThread(), &cache, &cb); |
264 ASSERT_EQ(net::OK, cb.GetResult(rv)); | 264 ASSERT_EQ(net::OK, cb.GetResult(rv)); |
265 | 265 |
266 disk_cache::EntryImpl* entry; | 266 disk_cache::EntryImpl* entry; |
267 rv = cache->CreateEntry("some key", | 267 rv = cache->CreateEntry("some key", |
268 reinterpret_cast<disk_cache::Entry**>(&entry), &cb); | 268 reinterpret_cast<disk_cache::Entry**>(&entry), &cb); |
269 ASSERT_EQ(net::OK, cb.GetResult(rv)); | 269 ASSERT_EQ(net::OK, cb.GetResult(rv)); |
270 | 270 |
271 const int kSize = 25000; | 271 const int kSize = 25000; |
272 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(kSize); | 272 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kSize)); |
273 CacheTestFillBuffer(buffer->data(), kSize, false); | 273 CacheTestFillBuffer(buffer->data(), kSize, false); |
274 | 274 |
275 for (int i = 0; i < 10 * 1024 * 1024; i += 64 * 1024) { | 275 for (int i = 0; i < 10 * 1024 * 1024; i += 64 * 1024) { |
276 // We are using the current thread as the cache thread because we want to | 276 // We are using the current thread as the cache thread because we want to |
277 // be able to call directly this method to make sure that the OS (instead | 277 // be able to call directly this method to make sure that the OS (instead |
278 // of us switching thread) is returning IO pending. | 278 // of us switching thread) is returning IO pending. |
279 rv = entry->WriteDataImpl(0, i, buffer, kSize, &cb, false); | 279 rv = entry->WriteDataImpl(0, i, buffer, kSize, &cb, false); |
280 if (rv == net::ERR_IO_PENDING) | 280 if (rv == net::ERR_IO_PENDING) |
281 break; | 281 break; |
282 EXPECT_EQ(kSize, rv); | 282 EXPECT_EQ(kSize, rv); |
(...skipping 29 matching lines...) Expand all Loading... |
312 int rv = disk_cache::BackendImpl::CreateBackend( | 312 int rv = disk_cache::BackendImpl::CreateBackend( |
313 path, false, 0, net::DISK_CACHE, disk_cache::kNoRandom, | 313 path, false, 0, net::DISK_CACHE, disk_cache::kNoRandom, |
314 cache_thread.message_loop_proxy(), &cache, &cb); | 314 cache_thread.message_loop_proxy(), &cache, &cb); |
315 ASSERT_EQ(net::OK, cb.GetResult(rv)); | 315 ASSERT_EQ(net::OK, cb.GetResult(rv)); |
316 | 316 |
317 disk_cache::Entry* entry; | 317 disk_cache::Entry* entry; |
318 rv = cache->CreateEntry("some key", &entry, &cb); | 318 rv = cache->CreateEntry("some key", &entry, &cb); |
319 ASSERT_EQ(net::OK, cb.GetResult(rv)); | 319 ASSERT_EQ(net::OK, cb.GetResult(rv)); |
320 | 320 |
321 const int kSize = 25000; | 321 const int kSize = 25000; |
322 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(kSize); | 322 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kSize)); |
323 CacheTestFillBuffer(buffer->data(), kSize, false); | 323 CacheTestFillBuffer(buffer->data(), kSize, false); |
324 | 324 |
325 rv = entry->WriteData(0, 0, buffer, kSize, &cb, false); | 325 rv = entry->WriteData(0, 0, buffer, kSize, &cb, false); |
326 EXPECT_EQ(net::ERR_IO_PENDING, rv); | 326 EXPECT_EQ(net::ERR_IO_PENDING, rv); |
327 | 327 |
328 entry->Close(); | 328 entry->Close(); |
329 | 329 |
330 // The cache destructor will see two pending operations here. | 330 // The cache destructor will see two pending operations here. |
331 delete cache; | 331 delete cache; |
332 } | 332 } |
(...skipping 26 matching lines...) Expand all Loading... |
359 SetDirectMode(); | 359 SetDirectMode(); |
360 const int cache_size = 0x10000; // 64 kB | 360 const int cache_size = 0x10000; // 64 kB |
361 SetMaxSize(cache_size); | 361 SetMaxSize(cache_size); |
362 InitCache(); | 362 InitCache(); |
363 | 363 |
364 std::string first("some key"); | 364 std::string first("some key"); |
365 std::string second("something else"); | 365 std::string second("something else"); |
366 disk_cache::Entry* entry; | 366 disk_cache::Entry* entry; |
367 ASSERT_EQ(net::OK, CreateEntry(first, &entry)); | 367 ASSERT_EQ(net::OK, CreateEntry(first, &entry)); |
368 | 368 |
369 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(cache_size); | 369 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(cache_size)); |
370 memset(buffer->data(), 0, cache_size); | 370 memset(buffer->data(), 0, cache_size); |
371 EXPECT_EQ(cache_size / 10, WriteData(entry, 0, 0, buffer, cache_size / 10, | 371 EXPECT_EQ(cache_size / 10, WriteData(entry, 0, 0, buffer, cache_size / 10, |
372 false)) << "normal file"; | 372 false)) << "normal file"; |
373 | 373 |
374 EXPECT_EQ(net::ERR_FAILED, WriteData(entry, 1, 0, buffer, cache_size / 5, | 374 EXPECT_EQ(net::ERR_FAILED, WriteData(entry, 1, 0, buffer, cache_size / 5, |
375 false)) << "file size above the limit"; | 375 false)) << "file size above the limit"; |
376 | 376 |
377 // By doubling the total size, we make this file cacheable. | 377 // By doubling the total size, we make this file cacheable. |
378 SetMaxSize(cache_size * 2); | 378 SetMaxSize(cache_size * 2); |
379 EXPECT_EQ(cache_size / 5, WriteData(entry, 1, 0, buffer, cache_size / 5, | 379 EXPECT_EQ(cache_size / 5, WriteData(entry, 1, 0, buffer, cache_size / 5, |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
490 // Before looking for invalid entries, let's check a valid entry. | 490 // Before looking for invalid entries, let's check a valid entry. |
491 void DiskCacheBackendTest::BackendValidEntry() { | 491 void DiskCacheBackendTest::BackendValidEntry() { |
492 SetDirectMode(); | 492 SetDirectMode(); |
493 InitCache(); | 493 InitCache(); |
494 | 494 |
495 std::string key("Some key"); | 495 std::string key("Some key"); |
496 disk_cache::Entry* entry; | 496 disk_cache::Entry* entry; |
497 ASSERT_EQ(net::OK, CreateEntry(key, &entry)); | 497 ASSERT_EQ(net::OK, CreateEntry(key, &entry)); |
498 | 498 |
499 const int kSize = 50; | 499 const int kSize = 50; |
500 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize); | 500 scoped_refptr<net::IOBuffer> buffer1(new net::IOBuffer(kSize)); |
501 memset(buffer1->data(), 0, kSize); | 501 memset(buffer1->data(), 0, kSize); |
502 base::strlcpy(buffer1->data(), "And the data to save", kSize); | 502 base::strlcpy(buffer1->data(), "And the data to save", kSize); |
503 EXPECT_EQ(kSize, WriteData(entry, 0, 0, buffer1, kSize, false)); | 503 EXPECT_EQ(kSize, WriteData(entry, 0, 0, buffer1, kSize, false)); |
504 entry->Close(); | 504 entry->Close(); |
505 SimulateCrash(); | 505 SimulateCrash(); |
506 | 506 |
507 ASSERT_EQ(net::OK, OpenEntry(key, &entry)); | 507 ASSERT_EQ(net::OK, OpenEntry(key, &entry)); |
508 | 508 |
509 scoped_refptr<net::IOBuffer> buffer2 = new net::IOBuffer(kSize); | 509 scoped_refptr<net::IOBuffer> buffer2(new net::IOBuffer(kSize)); |
510 memset(buffer2->data(), 0, kSize); | 510 memset(buffer2->data(), 0, kSize); |
511 EXPECT_EQ(kSize, ReadData(entry, 0, 0, buffer2, kSize)); | 511 EXPECT_EQ(kSize, ReadData(entry, 0, 0, buffer2, kSize)); |
512 entry->Close(); | 512 entry->Close(); |
513 EXPECT_STREQ(buffer1->data(), buffer2->data()); | 513 EXPECT_STREQ(buffer1->data(), buffer2->data()); |
514 } | 514 } |
515 | 515 |
516 TEST_F(DiskCacheBackendTest, ValidEntry) { | 516 TEST_F(DiskCacheBackendTest, ValidEntry) { |
517 BackendValidEntry(); | 517 BackendValidEntry(); |
518 } | 518 } |
519 | 519 |
520 TEST_F(DiskCacheBackendTest, NewEvictionValidEntry) { | 520 TEST_F(DiskCacheBackendTest, NewEvictionValidEntry) { |
521 SetNewEviction(); | 521 SetNewEviction(); |
522 BackendValidEntry(); | 522 BackendValidEntry(); |
523 } | 523 } |
524 | 524 |
525 // The same logic of the previous test (ValidEntry), but this time force the | 525 // The same logic of the previous test (ValidEntry), but this time force the |
526 // entry to be invalid, simulating a crash in the middle. | 526 // entry to be invalid, simulating a crash in the middle. |
527 // We'll be leaking memory from this test. | 527 // We'll be leaking memory from this test. |
528 void DiskCacheBackendTest::BackendInvalidEntry() { | 528 void DiskCacheBackendTest::BackendInvalidEntry() { |
529 // Use the implementation directly... we need to simulate a crash. | 529 // Use the implementation directly... we need to simulate a crash. |
530 SetDirectMode(); | 530 SetDirectMode(); |
531 InitCache(); | 531 InitCache(); |
532 | 532 |
533 std::string key("Some key"); | 533 std::string key("Some key"); |
534 disk_cache::Entry* entry; | 534 disk_cache::Entry* entry; |
535 ASSERT_EQ(net::OK, CreateEntry(key, &entry)); | 535 ASSERT_EQ(net::OK, CreateEntry(key, &entry)); |
536 | 536 |
537 const int kSize = 50; | 537 const int kSize = 50; |
538 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(kSize); | 538 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kSize)); |
539 memset(buffer->data(), 0, kSize); | 539 memset(buffer->data(), 0, kSize); |
540 base::strlcpy(buffer->data(), "And the data to save", kSize); | 540 base::strlcpy(buffer->data(), "And the data to save", kSize); |
541 EXPECT_EQ(kSize, WriteData(entry, 0, 0, buffer, kSize, false)); | 541 EXPECT_EQ(kSize, WriteData(entry, 0, 0, buffer, kSize, false)); |
542 SimulateCrash(); | 542 SimulateCrash(); |
543 | 543 |
544 EXPECT_NE(net::OK, OpenEntry(key, &entry)); | 544 EXPECT_NE(net::OK, OpenEntry(key, &entry)); |
545 EXPECT_EQ(0, cache_->GetEntryCount()); | 545 EXPECT_EQ(0, cache_->GetEntryCount()); |
546 } | 546 } |
547 | 547 |
548 // This and the other intentionally leaky tests below are excluded from | 548 // This and the other intentionally leaky tests below are excluded from |
(...skipping 23 matching lines...) Expand all Loading... |
572 void DiskCacheBackendTest::BackendInvalidEntryRead() { | 572 void DiskCacheBackendTest::BackendInvalidEntryRead() { |
573 // Use the implementation directly... we need to simulate a crash. | 573 // Use the implementation directly... we need to simulate a crash. |
574 SetDirectMode(); | 574 SetDirectMode(); |
575 InitCache(); | 575 InitCache(); |
576 | 576 |
577 std::string key("Some key"); | 577 std::string key("Some key"); |
578 disk_cache::Entry* entry; | 578 disk_cache::Entry* entry; |
579 ASSERT_EQ(net::OK, CreateEntry(key, &entry)); | 579 ASSERT_EQ(net::OK, CreateEntry(key, &entry)); |
580 | 580 |
581 const int kSize = 50; | 581 const int kSize = 50; |
582 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(kSize); | 582 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kSize)); |
583 memset(buffer->data(), 0, kSize); | 583 memset(buffer->data(), 0, kSize); |
584 base::strlcpy(buffer->data(), "And the data to save", kSize); | 584 base::strlcpy(buffer->data(), "And the data to save", kSize); |
585 EXPECT_EQ(kSize, WriteData(entry, 0, 0, buffer, kSize, false)); | 585 EXPECT_EQ(kSize, WriteData(entry, 0, 0, buffer, kSize, false)); |
586 entry->Close(); | 586 entry->Close(); |
587 ASSERT_EQ(net::OK, OpenEntry(key, &entry)); | 587 ASSERT_EQ(net::OK, OpenEntry(key, &entry)); |
588 EXPECT_EQ(kSize, ReadData(entry, 0, 0, buffer, kSize)); | 588 EXPECT_EQ(kSize, ReadData(entry, 0, 0, buffer, kSize)); |
589 | 589 |
590 SimulateCrash(); | 590 SimulateCrash(); |
591 | 591 |
592 if (type_ == net::APP_CACHE) { | 592 if (type_ == net::APP_CACHE) { |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
690 | 690 |
691 const int kSize = 0x3000; // 12 kB | 691 const int kSize = 0x3000; // 12 kB |
692 SetMaxSize(kSize * 10); | 692 SetMaxSize(kSize * 10); |
693 InitCache(); | 693 InitCache(); |
694 | 694 |
695 std::string first("some key"); | 695 std::string first("some key"); |
696 std::string second("something else"); | 696 std::string second("something else"); |
697 disk_cache::Entry* entry; | 697 disk_cache::Entry* entry; |
698 ASSERT_EQ(net::OK, CreateEntry(first, &entry)); | 698 ASSERT_EQ(net::OK, CreateEntry(first, &entry)); |
699 | 699 |
700 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(kSize); | 700 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kSize)); |
701 memset(buffer->data(), 0, kSize); | 701 memset(buffer->data(), 0, kSize); |
702 EXPECT_EQ(kSize, WriteData(entry, 0, 0, buffer, kSize, false)); | 702 EXPECT_EQ(kSize, WriteData(entry, 0, 0, buffer, kSize, false)); |
703 | 703 |
704 // Simulate a crash. | 704 // Simulate a crash. |
705 SimulateCrash(); | 705 SimulateCrash(); |
706 | 706 |
707 ASSERT_EQ(net::OK, CreateEntry(second, &entry)); | 707 ASSERT_EQ(net::OK, CreateEntry(second, &entry)); |
708 EXPECT_EQ(kSize, WriteData(entry, 0, 0, buffer, kSize, false)); | 708 EXPECT_EQ(kSize, WriteData(entry, 0, 0, buffer, kSize, false)); |
709 | 709 |
710 EXPECT_EQ(2, cache_->GetEntryCount()); | 710 EXPECT_EQ(2, cache_->GetEntryCount()); |
(...skipping 30 matching lines...) Expand all Loading... |
741 // We'll be leaking memory from this test. | 741 // We'll be leaking memory from this test. |
742 void DiskCacheBackendTest::BackendTrimInvalidEntry2() { | 742 void DiskCacheBackendTest::BackendTrimInvalidEntry2() { |
743 // Use the implementation directly... we need to simulate a crash. | 743 // Use the implementation directly... we need to simulate a crash. |
744 SetDirectMode(); | 744 SetDirectMode(); |
745 SetMask(0xf); // 16-entry table. | 745 SetMask(0xf); // 16-entry table. |
746 | 746 |
747 const int kSize = 0x3000; // 12 kB | 747 const int kSize = 0x3000; // 12 kB |
748 SetMaxSize(kSize * 40); | 748 SetMaxSize(kSize * 40); |
749 InitCache(); | 749 InitCache(); |
750 | 750 |
751 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(kSize); | 751 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kSize)); |
752 memset(buffer->data(), 0, kSize); | 752 memset(buffer->data(), 0, kSize); |
753 disk_cache::Entry* entry; | 753 disk_cache::Entry* entry; |
754 | 754 |
755 // Writing 32 entries to this cache chains most of them. | 755 // Writing 32 entries to this cache chains most of them. |
756 for (int i = 0; i < 32; i++) { | 756 for (int i = 0; i < 32; i++) { |
757 std::string key(base::StringPrintf("some key %d", i)); | 757 std::string key(base::StringPrintf("some key %d", i)); |
758 ASSERT_EQ(net::OK, CreateEntry(key, &entry)); | 758 ASSERT_EQ(net::OK, CreateEntry(key, &entry)); |
759 EXPECT_EQ(kSize, WriteData(entry, 0, 0, buffer, kSize, false)); | 759 EXPECT_EQ(kSize, WriteData(entry, 0, 0, buffer, kSize, false)); |
760 entry->Close(); | 760 entry->Close(); |
761 ASSERT_EQ(net::OK, OpenEntry(key, &entry)); | 761 ASSERT_EQ(net::OK, OpenEntry(key, &entry)); |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
933 void DiskCacheBackendTest::BackendInvalidEntryEnumeration() { | 933 void DiskCacheBackendTest::BackendInvalidEntryEnumeration() { |
934 // Use the implementation directly... we need to simulate a crash. | 934 // Use the implementation directly... we need to simulate a crash. |
935 SetDirectMode(); | 935 SetDirectMode(); |
936 InitCache(); | 936 InitCache(); |
937 | 937 |
938 std::string key("Some key"); | 938 std::string key("Some key"); |
939 disk_cache::Entry *entry, *entry1, *entry2; | 939 disk_cache::Entry *entry, *entry1, *entry2; |
940 ASSERT_EQ(net::OK, CreateEntry(key, &entry1)); | 940 ASSERT_EQ(net::OK, CreateEntry(key, &entry1)); |
941 | 941 |
942 const int kSize = 50; | 942 const int kSize = 50; |
943 scoped_refptr<net::IOBuffer> buffer1 = new net::IOBuffer(kSize); | 943 scoped_refptr<net::IOBuffer> buffer1(new net::IOBuffer(kSize)); |
944 memset(buffer1->data(), 0, kSize); | 944 memset(buffer1->data(), 0, kSize); |
945 base::strlcpy(buffer1->data(), "And the data to save", kSize); | 945 base::strlcpy(buffer1->data(), "And the data to save", kSize); |
946 EXPECT_EQ(kSize, WriteData(entry1, 0, 0, buffer1, kSize, false)); | 946 EXPECT_EQ(kSize, WriteData(entry1, 0, 0, buffer1, kSize, false)); |
947 entry1->Close(); | 947 entry1->Close(); |
948 ASSERT_EQ(net::OK, OpenEntry(key, &entry1)); | 948 ASSERT_EQ(net::OK, OpenEntry(key, &entry1)); |
949 EXPECT_EQ(kSize, ReadData(entry1, 0, 0, buffer1, kSize)); | 949 EXPECT_EQ(kSize, ReadData(entry1, 0, 0, buffer1, kSize)); |
950 | 950 |
951 std::string key2("Another key"); | 951 std::string key2("Another key"); |
952 ASSERT_EQ(net::OK, CreateEntry(key2, &entry2)); | 952 ASSERT_EQ(net::OK, CreateEntry(key2, &entry2)); |
953 entry2->Close(); | 953 entry2->Close(); |
(...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1567 char key2[2000]; | 1567 char key2[2000]; |
1568 char key3[20000]; | 1568 char key3[20000]; |
1569 CacheTestFillBuffer(key2, sizeof(key2), true); | 1569 CacheTestFillBuffer(key2, sizeof(key2), true); |
1570 CacheTestFillBuffer(key3, sizeof(key3), true); | 1570 CacheTestFillBuffer(key3, sizeof(key3), true); |
1571 key2[sizeof(key2) - 1] = '\0'; | 1571 key2[sizeof(key2) - 1] = '\0'; |
1572 key3[sizeof(key3) - 1] = '\0'; | 1572 key3[sizeof(key3) - 1] = '\0'; |
1573 ASSERT_EQ(net::OK, CreateEntry(key2, &entry2)); | 1573 ASSERT_EQ(net::OK, CreateEntry(key2, &entry2)); |
1574 ASSERT_EQ(net::OK, CreateEntry(key3, &entry3)); | 1574 ASSERT_EQ(net::OK, CreateEntry(key3, &entry3)); |
1575 | 1575 |
1576 const int kBufSize = 20000; | 1576 const int kBufSize = 20000; |
1577 scoped_refptr<net::IOBuffer> buf = new net::IOBuffer(kBufSize); | 1577 scoped_refptr<net::IOBuffer> buf(new net::IOBuffer(kBufSize)); |
1578 memset(buf->data(), 0, kBufSize); | 1578 memset(buf->data(), 0, kBufSize); |
1579 EXPECT_EQ(100, WriteData(entry2, 0, 0, buf, 100, false)); | 1579 EXPECT_EQ(100, WriteData(entry2, 0, 0, buf, 100, false)); |
1580 EXPECT_EQ(kBufSize, WriteData(entry3, 0, 0, buf, kBufSize, false)); | 1580 EXPECT_EQ(kBufSize, WriteData(entry3, 0, 0, buf, kBufSize, false)); |
1581 | 1581 |
1582 // This line should disable the cache but not delete it. | 1582 // This line should disable the cache but not delete it. |
1583 EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry4)); | 1583 EXPECT_NE(net::OK, OpenNextEntry(&iter, &entry4)); |
1584 EXPECT_EQ(4, cache_->GetEntryCount()); | 1584 EXPECT_EQ(4, cache_->GetEntryCount()); |
1585 | 1585 |
1586 EXPECT_NE(net::OK, CreateEntry("cache is disabled", &entry4)); | 1586 EXPECT_NE(net::OK, CreateEntry("cache is disabled", &entry4)); |
1587 | 1587 |
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1833 // Make sure that we keep the total memory used by the internal buffers under | 1833 // Make sure that we keep the total memory used by the internal buffers under |
1834 // control. | 1834 // control. |
1835 TEST_F(DiskCacheBackendTest, TotalBuffersSize1) { | 1835 TEST_F(DiskCacheBackendTest, TotalBuffersSize1) { |
1836 SetDirectMode(); | 1836 SetDirectMode(); |
1837 InitCache(); | 1837 InitCache(); |
1838 std::string key("the first key"); | 1838 std::string key("the first key"); |
1839 disk_cache::Entry* entry; | 1839 disk_cache::Entry* entry; |
1840 ASSERT_EQ(net::OK, CreateEntry(key, &entry)); | 1840 ASSERT_EQ(net::OK, CreateEntry(key, &entry)); |
1841 | 1841 |
1842 const int kSize = 200; | 1842 const int kSize = 200; |
1843 scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(kSize); | 1843 scoped_refptr<net::IOBuffer> buffer(new net::IOBuffer(kSize)); |
1844 CacheTestFillBuffer(buffer->data(), kSize, true); | 1844 CacheTestFillBuffer(buffer->data(), kSize, true); |
1845 | 1845 |
1846 for (int i = 0; i < 10; i++) { | 1846 for (int i = 0; i < 10; i++) { |
1847 SCOPED_TRACE(i); | 1847 SCOPED_TRACE(i); |
1848 // Allocate 2MB for this entry. | 1848 // Allocate 2MB for this entry. |
1849 EXPECT_EQ(kSize, WriteData(entry, 0, 0, buffer, kSize, true)); | 1849 EXPECT_EQ(kSize, WriteData(entry, 0, 0, buffer, kSize, true)); |
1850 EXPECT_EQ(kSize, WriteData(entry, 1, 0, buffer, kSize, true)); | 1850 EXPECT_EQ(kSize, WriteData(entry, 1, 0, buffer, kSize, true)); |
1851 EXPECT_EQ(kSize, WriteData(entry, 0, 1024 * 1024, buffer, kSize, false)); | 1851 EXPECT_EQ(kSize, WriteData(entry, 0, 1024 * 1024, buffer, kSize, false)); |
1852 EXPECT_EQ(kSize, WriteData(entry, 1, 1024 * 1024, buffer, kSize, false)); | 1852 EXPECT_EQ(kSize, WriteData(entry, 1, 1024 * 1024, buffer, kSize, false)); |
1853 | 1853 |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1924 char buffer1[kSize]; | 1924 char buffer1[kSize]; |
1925 char buffer2[kSize]; | 1925 char buffer2[kSize]; |
1926 memset(buffer1, 't', kSize); | 1926 memset(buffer1, 't', kSize); |
1927 memset(buffer2, 0, kSize); | 1927 memset(buffer2, 0, kSize); |
1928 EXPECT_TRUE(file->Write(buffer1, kSize, 0)); | 1928 EXPECT_TRUE(file->Write(buffer1, kSize, 0)); |
1929 EXPECT_TRUE(file->Read(buffer2, kSize, 0)); | 1929 EXPECT_TRUE(file->Read(buffer2, kSize, 0)); |
1930 EXPECT_EQ(0, memcmp(buffer1, buffer2, kSize)); | 1930 EXPECT_EQ(0, memcmp(buffer1, buffer2, kSize)); |
1931 | 1931 |
1932 EXPECT_TRUE(disk_cache::DeleteCacheFile(name)); | 1932 EXPECT_TRUE(disk_cache::DeleteCacheFile(name)); |
1933 } | 1933 } |
OLD | NEW |