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

Side by Side Diff: chrome/common/net/url_fetcher_unittest.cc

Issue 6711046: Add an opt-out header for HTTP throttling. Never throttle for localhost. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Merge to head. Created 9 years, 9 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/message_loop_proxy.h" 5 #include "base/message_loop_proxy.h"
6 #include "base/synchronization/waitable_event.h" 6 #include "base/synchronization/waitable_event.h"
7 #include "base/threading/thread.h" 7 #include "base/threading/thread.h"
8 #include "build/build_config.h" 8 #include "build/build_config.h"
9 #include "chrome/common/net/url_fetcher.h" 9 #include "chrome/common/net/url_fetcher.h"
10 #include "chrome/common/net/url_request_context_getter.h" 10 #include "chrome/common/net/url_request_context_getter.h"
(...skipping 558 matching lines...) Expand 10 before | Expand all | Expand 10 after
569 } 569 }
570 570
571 TEST_F(URLFetcherProtectTest, Overload) { 571 TEST_F(URLFetcherProtectTest, Overload) {
572 net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot)); 572 net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot));
573 ASSERT_TRUE(test_server.Start()); 573 ASSERT_TRUE(test_server.Start());
574 574
575 GURL url(test_server.GetURL("defaultresponse")); 575 GURL url(test_server.GetURL("defaultresponse"));
576 576
577 // Registers an entry for test url. It only allows 3 requests to be sent 577 // Registers an entry for test url. It only allows 3 requests to be sent
578 // in 200 milliseconds. 578 // in 200 milliseconds.
579 net::URLRequestThrottlerManager* manager =
580 net::URLRequestThrottlerManager::GetInstance();
579 scoped_refptr<net::URLRequestThrottlerEntry> entry( 581 scoped_refptr<net::URLRequestThrottlerEntry> entry(
580 new net::URLRequestThrottlerEntry(200, 3, 1, 2.0, 0.0, 256)); 582 new net::URLRequestThrottlerEntry(manager, 200, 3, 1, 2.0, 0.0, 256));
581 net::URLRequestThrottlerManager::GetInstance()->OverrideEntryForTests( 583 manager->OverrideEntryForTests(url, entry);
582 url, entry);
583 584
584 CreateFetcher(url); 585 CreateFetcher(url);
585 586
586 MessageLoop::current()->Run(); 587 MessageLoop::current()->Run();
587 588
588 net::URLRequestThrottlerManager::GetInstance()->EraseEntryForTests(url); 589 net::URLRequestThrottlerManager::GetInstance()->EraseEntryForTests(url);
589 } 590 }
590 591
591 TEST_F(URLFetcherProtectTest, ServerUnavailable) { 592 TEST_F(URLFetcherProtectTest, ServerUnavailable) {
592 net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot)); 593 net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot));
593 ASSERT_TRUE(test_server.Start()); 594 ASSERT_TRUE(test_server.Start());
594 595
595 GURL url(test_server.GetURL("files/server-unavailable.html")); 596 GURL url(test_server.GetURL("files/server-unavailable.html"));
596 597
597 // Registers an entry for test url. The backoff time is calculated by: 598 // Registers an entry for test url. The backoff time is calculated by:
598 // new_backoff = 2.0 * old_backoff + 0 599 // new_backoff = 2.0 * old_backoff + 0
599 // and maximum backoff time is 256 milliseconds. 600 // and maximum backoff time is 256 milliseconds.
600 // Maximum retries allowed is set to 11. 601 // Maximum retries allowed is set to 11.
602 net::URLRequestThrottlerManager* manager =
603 net::URLRequestThrottlerManager::GetInstance();
601 scoped_refptr<net::URLRequestThrottlerEntry> entry( 604 scoped_refptr<net::URLRequestThrottlerEntry> entry(
602 new net::URLRequestThrottlerEntry(200, 3, 1, 2.0, 0.0, 256)); 605 new net::URLRequestThrottlerEntry(manager, 200, 3, 1, 2.0, 0.0, 256));
603 net::URLRequestThrottlerManager::GetInstance()->OverrideEntryForTests( 606 manager->OverrideEntryForTests(url, entry);
604 url, entry);
605 607
606 CreateFetcher(url); 608 CreateFetcher(url);
607 609
608 MessageLoop::current()->Run(); 610 MessageLoop::current()->Run();
609 611
610 net::URLRequestThrottlerManager::GetInstance()->EraseEntryForTests(url); 612 net::URLRequestThrottlerManager::GetInstance()->EraseEntryForTests(url);
611 } 613 }
612 614
613 TEST_F(URLFetcherProtectTestPassedThrough, ServerUnavailablePropagateResponse) { 615 TEST_F(URLFetcherProtectTestPassedThrough, ServerUnavailablePropagateResponse) {
614 net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot)); 616 net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot));
615 ASSERT_TRUE(test_server.Start()); 617 ASSERT_TRUE(test_server.Start());
616 618
617 GURL url(test_server.GetURL("files/server-unavailable.html")); 619 GURL url(test_server.GetURL("files/server-unavailable.html"));
618 620
619 // Registers an entry for test url. The backoff time is calculated by: 621 // Registers an entry for test url. The backoff time is calculated by:
620 // new_backoff = 2.0 * old_backoff + 0 622 // new_backoff = 2.0 * old_backoff + 0
621 // and maximum backoff time is 150000 milliseconds. 623 // and maximum backoff time is 150000 milliseconds.
622 // Maximum retries allowed is set to 11. 624 // Maximum retries allowed is set to 11.
625 net::URLRequestThrottlerManager* manager =
626 net::URLRequestThrottlerManager::GetInstance();
623 scoped_refptr<net::URLRequestThrottlerEntry> entry( 627 scoped_refptr<net::URLRequestThrottlerEntry> entry(
624 new net::URLRequestThrottlerEntry(200, 3, 100, 2.0, 0.0, 150000)); 628 new net::URLRequestThrottlerEntry(
629 manager, 200, 3, 100, 2.0, 0.0, 150000));
625 // Total time if *not* for not doing automatic backoff would be 150s. 630 // Total time if *not* for not doing automatic backoff would be 150s.
626 // In reality it should be "as soon as server responds". 631 // In reality it should be "as soon as server responds".
627 net::URLRequestThrottlerManager::GetInstance()->OverrideEntryForTests( 632 manager->OverrideEntryForTests(url, entry);
628 url, entry);
629 633
630 CreateFetcher(url); 634 CreateFetcher(url);
631 635
632 MessageLoop::current()->Run(); 636 MessageLoop::current()->Run();
633 637
634 net::URLRequestThrottlerManager::GetInstance()->EraseEntryForTests(url); 638 net::URLRequestThrottlerManager::GetInstance()->EraseEntryForTests(url);
635 } 639 }
636 640
637 #if defined(OS_MACOSX) 641 #if defined(OS_MACOSX)
638 // SIGSEGV on Mac: http://crbug.com/60426 642 // SIGSEGV on Mac: http://crbug.com/60426
(...skipping 18 matching lines...) Expand all
657 #endif 661 #endif
658 net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot)); 662 net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot));
659 ASSERT_TRUE(test_server.Start()); 663 ASSERT_TRUE(test_server.Start());
660 664
661 GURL url(test_server.GetURL("files/server-unavailable.html")); 665 GURL url(test_server.GetURL("files/server-unavailable.html"));
662 666
663 // Registers an entry for test url. The backoff time is calculated by: 667 // Registers an entry for test url. The backoff time is calculated by:
664 // new_backoff = 2.0 * old_backoff + 0 668 // new_backoff = 2.0 * old_backoff + 0
665 // The initial backoff is 2 seconds and maximum backoff is 4 seconds. 669 // The initial backoff is 2 seconds and maximum backoff is 4 seconds.
666 // Maximum retries allowed is set to 2. 670 // Maximum retries allowed is set to 2.
671 net::URLRequestThrottlerManager* manager =
672 net::URLRequestThrottlerManager::GetInstance();
667 scoped_refptr<net::URLRequestThrottlerEntry> entry( 673 scoped_refptr<net::URLRequestThrottlerEntry> entry(
668 new net::URLRequestThrottlerEntry(200, 3, 2000, 2.0, 0.0, 4000)); 674 new net::URLRequestThrottlerEntry(
669 net::URLRequestThrottlerManager::GetInstance()->OverrideEntryForTests( 675 manager, 200, 3, 2000, 2.0, 0.0, 4000));
670 url, entry); 676 manager->OverrideEntryForTests(url, entry);
671 677
672 // Create a separate thread that will create the URLFetcher. The current 678 // Create a separate thread that will create the URLFetcher. The current
673 // (main) thread will do the IO, and when the fetch is complete it will 679 // (main) thread will do the IO, and when the fetch is complete it will
674 // terminate the main thread's message loop; then the other thread's 680 // terminate the main thread's message loop; then the other thread's
675 // message loop will be shut down automatically as the thread goes out of 681 // message loop will be shut down automatically as the thread goes out of
676 // scope. 682 // scope.
677 base::Thread t("URLFetcher test thread"); 683 base::Thread t("URLFetcher test thread");
678 ASSERT_TRUE(t.Start()); 684 ASSERT_TRUE(t.Start());
679 t.message_loop()->PostTask(FROM_HERE, new FetcherWrapperTask(this, url)); 685 t.message_loop()->PostTask(FROM_HERE, new FetcherWrapperTask(this, url));
680 686
681 MessageLoop::current()->Run(); 687 MessageLoop::current()->Run();
682 688
683 net::URLRequestThrottlerManager::GetInstance()->EraseEntryForTests(url); 689 net::URLRequestThrottlerManager::GetInstance()->EraseEntryForTests(url);
684 } 690 }
685 691
686 TEST_F(URLFetcherCancelTest, CancelWhileDelayedStartTaskPending) { 692 TEST_F(URLFetcherCancelTest, CancelWhileDelayedStartTaskPending) {
687 net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot)); 693 net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot));
688 ASSERT_TRUE(test_server.Start()); 694 ASSERT_TRUE(test_server.Start());
689 695
690 GURL url(test_server.GetURL("files/server-unavailable.html")); 696 GURL url(test_server.GetURL("files/server-unavailable.html"));
691 697
692 // Register an entry for test url. 698 // Register an entry for test url.
693 // Using a sliding window of 4 seconds, and max of 1 request, under a fast 699 // Using a sliding window of 4 seconds, and max of 1 request, under a fast
694 // run we expect to have a 4 second delay when posting the Start task. 700 // run we expect to have a 4 second delay when posting the Start task.
701 net::URLRequestThrottlerManager* manager =
702 net::URLRequestThrottlerManager::GetInstance();
695 scoped_refptr<net::URLRequestThrottlerEntry> entry( 703 scoped_refptr<net::URLRequestThrottlerEntry> entry(
696 new net::URLRequestThrottlerEntry(4000, 1, 2000, 2.0, 0.0, 4000)); 704 new net::URLRequestThrottlerEntry(
697 net::URLRequestThrottlerManager::GetInstance()->OverrideEntryForTests( 705 manager, 4000, 1, 2000, 2.0, 0.0, 4000));
698 url, entry); 706 manager->OverrideEntryForTests(url, entry);
699 // Fake that a request has just started. 707 // Fake that a request has just started.
700 entry->ReserveSendingTimeForNextRequest(base::TimeTicks()); 708 entry->ReserveSendingTimeForNextRequest(base::TimeTicks());
701 709
702 // The next request we try to send will be delayed by ~4 seconds. 710 // The next request we try to send will be delayed by ~4 seconds.
703 // The slower the test runs, the less the delay will be (since it takes the 711 // The slower the test runs, the less the delay will be (since it takes the
704 // time difference from now). 712 // time difference from now).
705 713
706 base::Thread t("URLFetcher test thread"); 714 base::Thread t("URLFetcher test thread");
707 ASSERT_TRUE(t.Start()); 715 ASSERT_TRUE(t.Start());
708 t.message_loop()->PostTask(FROM_HERE, new FetcherWrapperTask(this, url)); 716 t.message_loop()->PostTask(FROM_HERE, new FetcherWrapperTask(this, url));
(...skipping 26 matching lines...) Expand all
735 FROM_HERE, 743 FROM_HERE,
736 new CurriedTask(new MessageLoop::QuitTask(), MessageLoop::current())); 744 new CurriedTask(new MessageLoop::QuitTask(), MessageLoop::current()));
737 MessageLoop::current()->Run(); 745 MessageLoop::current()->Run();
738 EXPECT_EQ(1, GetNumFetcherCores()); 746 EXPECT_EQ(1, GetNumFetcherCores());
739 URLFetcher::CancelAll(); 747 URLFetcher::CancelAll();
740 EXPECT_EQ(0, GetNumFetcherCores()); 748 EXPECT_EQ(0, GetNumFetcherCores());
741 delete fetcher_; 749 delete fetcher_;
742 } 750 }
743 751
744 } // namespace. 752 } // namespace.
OLDNEW
« no previous file with comments | « no previous file | chrome/service/cloud_print/cloud_print_url_fetcher_unittest.cc » ('j') | net/base/net_util.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698