Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(133)

Side by Side Diff: net/disk_cache/backend_unittest.cc

Issue 2053133002: Remove MessageLoop::current()->RunUntilIdle() in net. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/cookies/cookie_monster_unittest.cc ('k') | net/disk_cache/disk_cache_perftest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stdint.h> 5 #include <stdint.h>
6 6
7 #include "base/files/file.h" 7 #include "base/files/file.h"
8 #include "base/files/file_util.h" 8 #include "base/files/file_util.h"
9 #include "base/metrics/field_trial.h" 9 #include "base/metrics/field_trial.h"
10 #include "base/run_loop.h" 10 #include "base/run_loop.h"
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 rv = disk_cache::CreateCacheBackend(net::MEMORY_CACHE, 474 rv = disk_cache::CreateCacheBackend(net::MEMORY_CACHE,
475 net::CACHE_BACKEND_DEFAULT, 475 net::CACHE_BACKEND_DEFAULT,
476 base::FilePath(), 0, 476 base::FilePath(), 0,
477 false, NULL, NULL, &cache, 477 false, NULL, NULL, &cache,
478 cb.callback()); 478 cb.callback());
479 ASSERT_EQ(net::OK, cb.GetResult(rv)); 479 ASSERT_EQ(net::OK, cb.GetResult(rv));
480 ASSERT_TRUE(cache.get()); 480 ASSERT_TRUE(cache.get());
481 cache.reset(); 481 cache.reset();
482 } 482 }
483 483
484 base::MessageLoop::current()->RunUntilIdle(); 484 base::RunLoop().RunUntilIdle();
485 } 485 }
486 486
487 // Tests that |BackendImpl| fails to initialize with a missing file. 487 // Tests that |BackendImpl| fails to initialize with a missing file.
488 TEST_F(DiskCacheBackendTest, CreateBackend_MissingFile) { 488 TEST_F(DiskCacheBackendTest, CreateBackend_MissingFile) {
489 ASSERT_TRUE(CopyTestCache("bad_entry")); 489 ASSERT_TRUE(CopyTestCache("bad_entry"));
490 base::FilePath filename = cache_path_.AppendASCII("data_1"); 490 base::FilePath filename = cache_path_.AppendASCII("data_1");
491 base::DeleteFile(filename, false); 491 base::DeleteFile(filename, false);
492 base::Thread cache_thread("CacheThread"); 492 base::Thread cache_thread("CacheThread");
493 ASSERT_TRUE(cache_thread.StartWithOptions( 493 ASSERT_TRUE(cache_thread.StartWithOptions(
494 base::Thread::Options(base::MessageLoop::TYPE_IO, 0))); 494 base::Thread::Options(base::MessageLoop::TYPE_IO, 0)));
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 // The cache destructor will see one pending operation here. 543 // The cache destructor will see one pending operation here.
544 cache_.reset(); 544 cache_.reset();
545 545
546 if (rv == net::ERR_IO_PENDING) { 546 if (rv == net::ERR_IO_PENDING) {
547 if (fast || simple_cache_mode_) 547 if (fast || simple_cache_mode_)
548 EXPECT_FALSE(cb.have_result()); 548 EXPECT_FALSE(cb.have_result());
549 else 549 else
550 EXPECT_TRUE(cb.have_result()); 550 EXPECT_TRUE(cb.have_result());
551 } 551 }
552 552
553 base::MessageLoop::current()->RunUntilIdle(); 553 base::RunLoop().RunUntilIdle();
554 554
555 #if !defined(OS_IOS) 555 #if !defined(OS_IOS)
556 // Wait for the actual operation to complete, or we'll keep a file handle that 556 // Wait for the actual operation to complete, or we'll keep a file handle that
557 // may cause issues later. Note that on iOS systems even though this test 557 // may cause issues later. Note that on iOS systems even though this test
558 // uses a single thread, the actual IO is posted to a worker thread and the 558 // uses a single thread, the actual IO is posted to a worker thread and the
559 // cache destructor breaks the link to reach cb when the operation completes. 559 // cache destructor breaks the link to reach cb when the operation completes.
560 rv = cb.GetResult(rv); 560 rv = cb.GetResult(rv);
561 #endif 561 #endif
562 } 562 }
563 563
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
607 607
608 CreateBackend(disk_cache::kNoBuffering, NULL); 608 CreateBackend(disk_cache::kNoBuffering, NULL);
609 rv = GeneratePendingIO(&cb); 609 rv = GeneratePendingIO(&cb);
610 610
611 // cache_ has a pending operation, and extra_cache will go away. 611 // cache_ has a pending operation, and extra_cache will go away.
612 extra_cache.reset(); 612 extra_cache.reset();
613 613
614 if (rv == net::ERR_IO_PENDING) 614 if (rv == net::ERR_IO_PENDING)
615 EXPECT_FALSE(cb.have_result()); 615 EXPECT_FALSE(cb.have_result());
616 616
617 base::MessageLoop::current()->RunUntilIdle(); 617 base::RunLoop().RunUntilIdle();
618 618
619 // Wait for the actual operation to complete, or we'll keep a file handle that 619 // Wait for the actual operation to complete, or we'll keep a file handle that
620 // may cause issues later. 620 // may cause issues later.
621 rv = cb.GetResult(rv); 621 rv = cb.GetResult(rv);
622 } 622 }
623 #endif 623 #endif
624 624
625 // Tests that we deal with background-thread pending operations. 625 // Tests that we deal with background-thread pending operations.
626 void DiskCacheBackendTest::BackendShutdownWithPendingIO(bool fast) { 626 void DiskCacheBackendTest::BackendShutdownWithPendingIO(bool fast) {
627 net::TestCompletionCallback cb; 627 net::TestCompletionCallback cb;
(...skipping 13 matching lines...) Expand all
641 disk_cache::Entry* entry; 641 disk_cache::Entry* entry;
642 int rv = cache_->CreateEntry("some key", &entry, cb.callback()); 642 int rv = cache_->CreateEntry("some key", &entry, cb.callback());
643 ASSERT_EQ(net::OK, cb.GetResult(rv)); 643 ASSERT_EQ(net::OK, cb.GetResult(rv));
644 644
645 entry->Close(); 645 entry->Close();
646 646
647 // The cache destructor will see one pending operation here. 647 // The cache destructor will see one pending operation here.
648 cache_.reset(); 648 cache_.reset();
649 } 649 }
650 650
651 base::MessageLoop::current()->RunUntilIdle(); 651 base::RunLoop().RunUntilIdle();
652 EXPECT_FALSE(cb.have_result()); 652 EXPECT_FALSE(cb.have_result());
653 } 653 }
654 654
655 TEST_F(DiskCacheBackendTest, ShutdownWithPendingIO) { 655 TEST_F(DiskCacheBackendTest, ShutdownWithPendingIO) {
656 BackendShutdownWithPendingIO(false); 656 BackendShutdownWithPendingIO(false);
657 } 657 }
658 658
659 #if !defined(LEAK_SANITIZER) 659 #if !defined(LEAK_SANITIZER)
660 // We'll be leaking from this test. 660 // We'll be leaking from this test.
661 TEST_F(DiskCacheBackendTest, ShutdownWithPendingIO_Fast) { 661 TEST_F(DiskCacheBackendTest, ShutdownWithPendingIO_Fast) {
(...skipping 19 matching lines...) Expand all
681 CreateBackend(flags, &cache_thread); 681 CreateBackend(flags, &cache_thread);
682 682
683 disk_cache::Entry* entry; 683 disk_cache::Entry* entry;
684 int rv = cache_->CreateEntry("some key", &entry, cb.callback()); 684 int rv = cache_->CreateEntry("some key", &entry, cb.callback());
685 ASSERT_EQ(net::ERR_IO_PENDING, rv); 685 ASSERT_EQ(net::ERR_IO_PENDING, rv);
686 686
687 cache_.reset(); 687 cache_.reset();
688 EXPECT_FALSE(cb.have_result()); 688 EXPECT_FALSE(cb.have_result());
689 } 689 }
690 690
691 base::MessageLoop::current()->RunUntilIdle(); 691 base::RunLoop().RunUntilIdle();
692 EXPECT_FALSE(cb.have_result()); 692 EXPECT_FALSE(cb.have_result());
693 } 693 }
694 694
695 TEST_F(DiskCacheBackendTest, ShutdownWithPendingCreate) { 695 TEST_F(DiskCacheBackendTest, ShutdownWithPendingCreate) {
696 BackendShutdownWithPendingCreate(false); 696 BackendShutdownWithPendingCreate(false);
697 } 697 }
698 698
699 #if !defined(LEAK_SANITIZER) 699 #if !defined(LEAK_SANITIZER)
700 // We'll be leaking an entry from this test. 700 // We'll be leaking an entry from this test.
701 TEST_F(DiskCacheBackendTest, ShutdownWithPendingCreate_Fast) { 701 TEST_F(DiskCacheBackendTest, ShutdownWithPendingCreate_Fast) {
(...skipping 21 matching lines...) Expand all
723 entry->Close(); 723 entry->Close();
724 entry = nullptr; 724 entry = nullptr;
725 725
726 rv = cache_->DoomEntry("some key", cb.callback()); 726 rv = cache_->DoomEntry("some key", cb.callback());
727 ASSERT_EQ(net::ERR_IO_PENDING, rv); 727 ASSERT_EQ(net::ERR_IO_PENDING, rv);
728 728
729 cache_.reset(); 729 cache_.reset();
730 EXPECT_FALSE(cb.have_result()); 730 EXPECT_FALSE(cb.have_result());
731 } 731 }
732 732
733 base::MessageLoop::current()->RunUntilIdle(); 733 base::RunLoop().RunUntilIdle();
734 EXPECT_FALSE(cb.have_result()); 734 EXPECT_FALSE(cb.have_result());
735 } 735 }
736 736
737 TEST_F(DiskCacheBackendTest, ShutdownWithPendingDoom) { 737 TEST_F(DiskCacheBackendTest, ShutdownWithPendingDoom) {
738 BackendShutdownWithPendingDoom(); 738 BackendShutdownWithPendingDoom();
739 } 739 }
740 740
741 // Disabled on android since this test requires cache creator to create 741 // Disabled on android since this test requires cache creator to create
742 // blockfile caches. 742 // blockfile caches.
743 #if !defined(OS_ANDROID) 743 #if !defined(OS_ANDROID)
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
1196 EXPECT_EQ(kSize, WriteData(entry, 0, 0, buffer.get(), kSize, false)); 1196 EXPECT_EQ(kSize, WriteData(entry, 0, 0, buffer.get(), kSize, false));
1197 1197
1198 EXPECT_EQ(2, cache_->GetEntryCount()); 1198 EXPECT_EQ(2, cache_->GetEntryCount());
1199 SetMaxSize(kSize); 1199 SetMaxSize(kSize);
1200 entry->Close(); // Trim the cache. 1200 entry->Close(); // Trim the cache.
1201 FlushQueueForTest(); 1201 FlushQueueForTest();
1202 1202
1203 // If we evicted the entry in less than 20mS, we have one entry in the cache; 1203 // If we evicted the entry in less than 20mS, we have one entry in the cache;
1204 // if it took more than that, we posted a task and we'll delete the second 1204 // if it took more than that, we posted a task and we'll delete the second
1205 // entry too. 1205 // entry too.
1206 base::MessageLoop::current()->RunUntilIdle(); 1206 base::RunLoop().RunUntilIdle();
1207 1207
1208 // This may be not thread-safe in general, but for now it's OK so add some 1208 // This may be not thread-safe in general, but for now it's OK so add some
1209 // ThreadSanitizer annotations to ignore data races on cache_. 1209 // ThreadSanitizer annotations to ignore data races on cache_.
1210 // See http://crbug.com/55970 1210 // See http://crbug.com/55970
1211 ANNOTATE_IGNORE_READS_BEGIN(); 1211 ANNOTATE_IGNORE_READS_BEGIN();
1212 EXPECT_GE(1, cache_->GetEntryCount()); 1212 EXPECT_GE(1, cache_->GetEntryCount());
1213 ANNOTATE_IGNORE_READS_END(); 1213 ANNOTATE_IGNORE_READS_END();
1214 1214
1215 EXPECT_NE(net::OK, OpenEntry(first, &entry)); 1215 EXPECT_NE(net::OK, OpenEntry(first, &entry));
1216 } 1216 }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1261 // For the new eviction code, all corrupt entries are on the second list so 1261 // For the new eviction code, all corrupt entries are on the second list so
1262 // they are not going away that easy. 1262 // they are not going away that easy.
1263 if (new_eviction_) { 1263 if (new_eviction_) {
1264 EXPECT_EQ(net::OK, DoomAllEntries()); 1264 EXPECT_EQ(net::OK, DoomAllEntries());
1265 } 1265 }
1266 1266
1267 entry->Close(); // Trim the cache. 1267 entry->Close(); // Trim the cache.
1268 FlushQueueForTest(); 1268 FlushQueueForTest();
1269 1269
1270 // We may abort the eviction before cleaning up everything. 1270 // We may abort the eviction before cleaning up everything.
1271 base::MessageLoop::current()->RunUntilIdle(); 1271 base::RunLoop().RunUntilIdle();
1272 FlushQueueForTest(); 1272 FlushQueueForTest();
1273 // If it's not clear enough: we may still have eviction tasks running at this 1273 // If it's not clear enough: we may still have eviction tasks running at this
1274 // time, so the number of entries is changing while we read it. 1274 // time, so the number of entries is changing while we read it.
1275 ANNOTATE_IGNORE_READS_AND_WRITES_BEGIN(); 1275 ANNOTATE_IGNORE_READS_AND_WRITES_BEGIN();
1276 EXPECT_GE(30, cache_->GetEntryCount()); 1276 EXPECT_GE(30, cache_->GetEntryCount());
1277 ANNOTATE_IGNORE_READS_AND_WRITES_END(); 1277 ANNOTATE_IGNORE_READS_AND_WRITES_END();
1278 } 1278 }
1279 1279
1280 // We'll be leaking memory from this test. 1280 // We'll be leaking memory from this test.
1281 TEST_F(DiskCacheBackendTest, TrimInvalidEntry2) { 1281 TEST_F(DiskCacheBackendTest, TrimInvalidEntry2) {
(...skipping 1779 matching lines...) Expand 10 before | Expand all | Expand 10 after
3061 entry2->Close(); 3061 entry2->Close();
3062 3062
3063 ASSERT_EQ(net::OK, CreateEntry("third", &entry1)); 3063 ASSERT_EQ(net::OK, CreateEntry("third", &entry1));
3064 ASSERT_EQ(net::OK, CreateEntry("fourth", &entry2)); 3064 ASSERT_EQ(net::OK, CreateEntry("fourth", &entry2));
3065 3065
3066 ASSERT_EQ(4, cache_->GetEntryCount()); 3066 ASSERT_EQ(4, cache_->GetEntryCount());
3067 EXPECT_EQ(net::OK, DoomAllEntries()); 3067 EXPECT_EQ(net::OK, DoomAllEntries());
3068 ASSERT_EQ(0, cache_->GetEntryCount()); 3068 ASSERT_EQ(0, cache_->GetEntryCount());
3069 3069
3070 // We should stop posting tasks at some point (if we post any). 3070 // We should stop posting tasks at some point (if we post any).
3071 base::MessageLoop::current()->RunUntilIdle(); 3071 base::RunLoop().RunUntilIdle();
3072 3072
3073 disk_cache::Entry *entry3, *entry4; 3073 disk_cache::Entry *entry3, *entry4;
3074 EXPECT_NE(net::OK, OpenEntry("third", &entry3)); 3074 EXPECT_NE(net::OK, OpenEntry("third", &entry3));
3075 ASSERT_EQ(net::OK, CreateEntry("third", &entry3)); 3075 ASSERT_EQ(net::OK, CreateEntry("third", &entry3));
3076 ASSERT_EQ(net::OK, CreateEntry("fourth", &entry4)); 3076 ASSERT_EQ(net::OK, CreateEntry("fourth", &entry4));
3077 3077
3078 EXPECT_EQ(net::OK, DoomAllEntries()); 3078 EXPECT_EQ(net::OK, DoomAllEntries());
3079 ASSERT_EQ(0, cache_->GetEntryCount()); 3079 ASSERT_EQ(0, cache_->GetEntryCount());
3080 3080
3081 entry1->Close(); 3081 entry1->Close();
(...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after
3801 // because that would advance the cache directory mtime and invalidate the 3801 // because that would advance the cache directory mtime and invalidate the
3802 // index. 3802 // index.
3803 entry2->Doom(); 3803 entry2->Doom();
3804 entry2->Close(); 3804 entry2->Close();
3805 3805
3806 DisableFirstCleanup(); 3806 DisableFirstCleanup();
3807 InitCache(); 3807 InitCache();
3808 EXPECT_EQ(disk_cache::SimpleIndex::INITIALIZE_METHOD_LOADED, 3808 EXPECT_EQ(disk_cache::SimpleIndex::INITIALIZE_METHOD_LOADED,
3809 simple_cache_impl_->index()->init_method()); 3809 simple_cache_impl_->index()->init_method());
3810 } 3810 }
OLDNEW
« no previous file with comments | « net/cookies/cookie_monster_unittest.cc ('k') | net/disk_cache/disk_cache_perftest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698