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

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

Issue 3034038: GTTF: Move more test server code from net/url_request/url_request_unittest.h (Closed)
Patch Set: hopefully final Created 10 years, 4 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
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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/thread.h" 6 #include "base/thread.h"
7 #include "base/waitable_event.h" 7 #include "base/waitable_event.h"
8 #include "chrome/common/chrome_plugin_lib.h" 8 #include "chrome/common/chrome_plugin_lib.h"
9 #include "chrome/common/net/url_fetcher.h" 9 #include "chrome/common/net/url_fetcher.h"
10 #include "chrome/common/net/url_fetcher_protect.h" 10 #include "chrome/common/net/url_fetcher_protect.h"
11 #include "chrome/common/net/url_request_context_getter.h" 11 #include "chrome/common/net/url_request_context_getter.h"
12 #include "net/http/http_response_headers.h" 12 #include "net/http/http_response_headers.h"
13 #include "net/url_request/url_request_unittest.h"
13 #include "net/test/test_server.h" 14 #include "net/test/test_server.h"
14 #include "net/url_request/url_request_unittest.h"
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 16
17 using base::Time; 17 using base::Time;
18 using base::TimeDelta; 18 using base::TimeDelta;
19 19
20 // TODO(eroman): Add a regression test for http://crbug.com/40505. 20 // TODO(eroman): Add a regression test for http://crbug.com/40505.
21 21
22 namespace { 22 namespace {
23 23
24 const wchar_t kDocRoot[] = L"chrome/test/data"; 24 const wchar_t kDocRoot[] = L"chrome/test/data";
(...skipping 399 matching lines...) Expand 10 before | Expand all | Expand 10 after
424 } 424 }
425 425
426 void URLFetcherCancelTest::CancelRequest() { 426 void URLFetcherCancelTest::CancelRequest() {
427 delete fetcher_; 427 delete fetcher_;
428 // The URLFetcher's test context will post a Quit task once it is 428 // The URLFetcher's test context will post a Quit task once it is
429 // deleted. So if this test simply hangs, it means cancellation 429 // deleted. So if this test simply hangs, it means cancellation
430 // did not work. 430 // did not work.
431 } 431 }
432 432
433 TEST_F(URLFetcherTest, SameThreadsTest) { 433 TEST_F(URLFetcherTest, SameThreadsTest) {
434 scoped_refptr<HTTPTestServer> server(HTTPTestServer::CreateServer(kDocRoot)); 434 scoped_refptr<net::HTTPTestServer> server(
435 net::HTTPTestServer::CreateServer(kDocRoot));
435 ASSERT_TRUE(NULL != server.get()); 436 ASSERT_TRUE(NULL != server.get());
436 437
437 // Create the fetcher on the main thread. Since IO will happen on the main 438 // Create the fetcher on the main thread. Since IO will happen on the main
438 // thread, this will test URLFetcher's ability to do everything on one 439 // thread, this will test URLFetcher's ability to do everything on one
439 // thread. 440 // thread.
440 CreateFetcher(GURL(server->TestServerPage("defaultresponse"))); 441 CreateFetcher(GURL(server->TestServerPage("defaultresponse")));
441 442
442 MessageLoop::current()->Run(); 443 MessageLoop::current()->Run();
443 } 444 }
444 445
445 TEST_F(URLFetcherTest, DifferentThreadsTest) { 446 TEST_F(URLFetcherTest, DifferentThreadsTest) {
446 scoped_refptr<HTTPTestServer> server(HTTPTestServer::CreateServer(kDocRoot)); 447 scoped_refptr<net::HTTPTestServer> server(
448 net::HTTPTestServer::CreateServer(kDocRoot));
447 ASSERT_TRUE(NULL != server.get()); 449 ASSERT_TRUE(NULL != server.get());
448 450
449 // Create a separate thread that will create the URLFetcher. The current 451 // Create a separate thread that will create the URLFetcher. The current
450 // (main) thread will do the IO, and when the fetch is complete it will 452 // (main) thread will do the IO, and when the fetch is complete it will
451 // terminate the main thread's message loop; then the other thread's 453 // terminate the main thread's message loop; then the other thread's
452 // message loop will be shut down automatically as the thread goes out of 454 // message loop will be shut down automatically as the thread goes out of
453 // scope. 455 // scope.
454 base::Thread t("URLFetcher test thread"); 456 base::Thread t("URLFetcher test thread");
455 ASSERT_TRUE(t.Start()); 457 ASSERT_TRUE(t.Start());
456 t.message_loop()->PostTask(FROM_HERE, new FetcherWrapperTask(this, 458 t.message_loop()->PostTask(FROM_HERE, new FetcherWrapperTask(this,
457 GURL(server->TestServerPage("defaultresponse")))); 459 GURL(server->TestServerPage("defaultresponse"))));
458 460
459 MessageLoop::current()->Run(); 461 MessageLoop::current()->Run();
460 } 462 }
461 463
462 TEST_F(URLFetcherPostTest, Basic) { 464 TEST_F(URLFetcherPostTest, Basic) {
463 scoped_refptr<HTTPTestServer> server(HTTPTestServer::CreateServer(kDocRoot)); 465 scoped_refptr<net::HTTPTestServer> server(
466 net::HTTPTestServer::CreateServer(kDocRoot));
464 ASSERT_TRUE(NULL != server.get()); 467 ASSERT_TRUE(NULL != server.get());
465 CreateFetcher(GURL(server->TestServerPage("echo"))); 468 CreateFetcher(GURL(server->TestServerPage("echo")));
466 MessageLoop::current()->Run(); 469 MessageLoop::current()->Run();
467 } 470 }
468 471
469 TEST_F(URLFetcherHeadersTest, Headers) { 472 TEST_F(URLFetcherHeadersTest, Headers) {
470 scoped_refptr<HTTPTestServer> server = 473 scoped_refptr<net::HTTPTestServer> server =
471 HTTPTestServer::CreateServer(L"net/data/url_request_unittest"); 474 net::HTTPTestServer::CreateServer(L"net/data/url_request_unittest");
472 ASSERT_TRUE(NULL != server.get()); 475 ASSERT_TRUE(NULL != server.get());
473 CreateFetcher(GURL(server->TestServerPage("files/with-headers.html"))); 476 CreateFetcher(GURL(server->TestServerPage("files/with-headers.html")));
474 MessageLoop::current()->Run(); 477 MessageLoop::current()->Run();
475 // The actual tests are in the URLFetcherHeadersTest fixture. 478 // The actual tests are in the URLFetcherHeadersTest fixture.
476 } 479 }
477 480
478 TEST_F(URLFetcherProtectTest, Overload) { 481 TEST_F(URLFetcherProtectTest, Overload) {
479 scoped_refptr<HTTPTestServer> server(HTTPTestServer::CreateServer(kDocRoot)); 482 scoped_refptr<net::HTTPTestServer> server(
483 net::HTTPTestServer::CreateServer(kDocRoot));
480 ASSERT_TRUE(NULL != server.get()); 484 ASSERT_TRUE(NULL != server.get());
481 GURL url = GURL(server->TestServerPage("defaultresponse")); 485 GURL url = GURL(server->TestServerPage("defaultresponse"));
482 486
483 // Registers an entry for test url. It only allows 3 requests to be sent 487 // Registers an entry for test url. It only allows 3 requests to be sent
484 // in 200 milliseconds. 488 // in 200 milliseconds.
485 URLFetcherProtectManager* manager = URLFetcherProtectManager::GetInstance(); 489 URLFetcherProtectManager* manager = URLFetcherProtectManager::GetInstance();
486 URLFetcherProtectEntry* entry = 490 URLFetcherProtectEntry* entry =
487 new URLFetcherProtectEntry(200, 3, 11, 1, 2.0, 0, 256); 491 new URLFetcherProtectEntry(200, 3, 11, 1, 2.0, 0, 256);
488 manager->Register(url.host(), entry); 492 manager->Register(url.host(), entry);
489 493
490 CreateFetcher(url); 494 CreateFetcher(url);
491 495
492 MessageLoop::current()->Run(); 496 MessageLoop::current()->Run();
493 } 497 }
494 498
495 TEST_F(URLFetcherProtectTest, ServerUnavailable) { 499 TEST_F(URLFetcherProtectTest, ServerUnavailable) {
496 scoped_refptr<HTTPTestServer> server(HTTPTestServer::CreateServer(kDocRoot)); 500 scoped_refptr<net::HTTPTestServer> server(
501 net::HTTPTestServer::CreateServer(kDocRoot));
497 ASSERT_TRUE(NULL != server.get()); 502 ASSERT_TRUE(NULL != server.get());
498 GURL url = GURL(server->TestServerPage("files/server-unavailable.html")); 503 GURL url = GURL(server->TestServerPage("files/server-unavailable.html"));
499 504
500 // Registers an entry for test url. The backoff time is calculated by: 505 // Registers an entry for test url. The backoff time is calculated by:
501 // new_backoff = 2.0 * old_backoff + 0 506 // new_backoff = 2.0 * old_backoff + 0
502 // and maximum backoff time is 256 milliseconds. 507 // and maximum backoff time is 256 milliseconds.
503 // Maximum retries allowed is set to 11. 508 // Maximum retries allowed is set to 11.
504 URLFetcherProtectManager* manager = URLFetcherProtectManager::GetInstance(); 509 URLFetcherProtectManager* manager = URLFetcherProtectManager::GetInstance();
505 URLFetcherProtectEntry* entry = 510 URLFetcherProtectEntry* entry =
506 new URLFetcherProtectEntry(200, 3, 11, 1, 2.0, 0, 256); 511 new URLFetcherProtectEntry(200, 3, 11, 1, 2.0, 0, 256);
507 manager->Register(url.host(), entry); 512 manager->Register(url.host(), entry);
508 513
509 CreateFetcher(url); 514 CreateFetcher(url);
510 515
511 MessageLoop::current()->Run(); 516 MessageLoop::current()->Run();
512 } 517 }
513 518
514 TEST_F(URLFetcherProtectTestPassedThrough, ServerUnavailablePropagateResponse) { 519 TEST_F(URLFetcherProtectTestPassedThrough, ServerUnavailablePropagateResponse) {
515 scoped_refptr<HTTPTestServer> server(HTTPTestServer::CreateServer(kDocRoot)); 520 scoped_refptr<net::HTTPTestServer> server(
521 net::HTTPTestServer::CreateServer(kDocRoot));
516 ASSERT_TRUE(NULL != server.get()); 522 ASSERT_TRUE(NULL != server.get());
517 GURL url = GURL(server->TestServerPage("files/server-unavailable.html")); 523 GURL url = GURL(server->TestServerPage("files/server-unavailable.html"));
518 524
519 // Registers an entry for test url. The backoff time is calculated by: 525 // Registers an entry for test url. The backoff time is calculated by:
520 // new_backoff = 2.0 * old_backoff + 0 526 // new_backoff = 2.0 * old_backoff + 0
521 // and maximum backoff time is 256 milliseconds. 527 // and maximum backoff time is 256 milliseconds.
522 // Maximum retries allowed is set to 11. 528 // Maximum retries allowed is set to 11.
523 URLFetcherProtectManager* manager = URLFetcherProtectManager::GetInstance(); 529 URLFetcherProtectManager* manager = URLFetcherProtectManager::GetInstance();
524 // Total time if *not* for not doing automatic backoff would be 150s. 530 // Total time if *not* for not doing automatic backoff would be 150s.
525 // In reality it should be "as soon as server responds". 531 // In reality it should be "as soon as server responds".
526 URLFetcherProtectEntry* entry = 532 URLFetcherProtectEntry* entry =
527 new URLFetcherProtectEntry(200, 3, 11, 100, 2.0, 0, 150000); 533 new URLFetcherProtectEntry(200, 3, 11, 100, 2.0, 0, 150000);
528 manager->Register(url.host(), entry); 534 manager->Register(url.host(), entry);
529 535
530 CreateFetcher(url); 536 CreateFetcher(url);
531 537
532 MessageLoop::current()->Run(); 538 MessageLoop::current()->Run();
533 } 539 }
534 540
535 541
536 TEST_F(URLFetcherBadHTTPSTest, BadHTTPSTest) { 542 TEST_F(URLFetcherBadHTTPSTest, BadHTTPSTest) {
537 scoped_refptr<HTTPSTestServer> server = 543 scoped_refptr<net::HTTPSTestServer> server =
538 HTTPSTestServer::CreateExpiredServer(kDocRoot); 544 net::HTTPSTestServer::CreateExpiredServer(kDocRoot);
539 ASSERT_TRUE(NULL != server.get()); 545 ASSERT_TRUE(NULL != server.get());
540 546
541 CreateFetcher(GURL(server->TestServerPage("defaultresponse"))); 547 CreateFetcher(GURL(server->TestServerPage("defaultresponse")));
542 548
543 MessageLoop::current()->Run(); 549 MessageLoop::current()->Run();
544 } 550 }
545 551
546 TEST_F(URLFetcherCancelTest, ReleasesContext) { 552 TEST_F(URLFetcherCancelTest, ReleasesContext) {
547 scoped_refptr<HTTPTestServer> server(HTTPTestServer::CreateServer(kDocRoot)); 553 scoped_refptr<net::HTTPTestServer> server(
554 net::HTTPTestServer::CreateServer(kDocRoot));
548 ASSERT_TRUE(NULL != server.get()); 555 ASSERT_TRUE(NULL != server.get());
549 GURL url = GURL(server->TestServerPage("files/server-unavailable.html")); 556 GURL url = GURL(server->TestServerPage("files/server-unavailable.html"));
550 557
551 // Registers an entry for test url. The backoff time is calculated by: 558 // Registers an entry for test url. The backoff time is calculated by:
552 // new_backoff = 2.0 * old_backoff + 0 559 // new_backoff = 2.0 * old_backoff + 0
553 // The initial backoff is 2 seconds and maximum backoff is 4 seconds. 560 // The initial backoff is 2 seconds and maximum backoff is 4 seconds.
554 // Maximum retries allowed is set to 2. 561 // Maximum retries allowed is set to 2.
555 URLFetcherProtectManager* manager = URLFetcherProtectManager::GetInstance(); 562 URLFetcherProtectManager* manager = URLFetcherProtectManager::GetInstance();
556 URLFetcherProtectEntry* entry = 563 URLFetcherProtectEntry* entry =
557 new URLFetcherProtectEntry(200, 3, 2, 2000, 2.0, 0, 4000); 564 new URLFetcherProtectEntry(200, 3, 2, 2000, 2.0, 0, 4000);
558 manager->Register(url.host(), entry); 565 manager->Register(url.host(), entry);
559 566
560 // Create a separate thread that will create the URLFetcher. The current 567 // Create a separate thread that will create the URLFetcher. The current
561 // (main) thread will do the IO, and when the fetch is complete it will 568 // (main) thread will do the IO, and when the fetch is complete it will
562 // terminate the main thread's message loop; then the other thread's 569 // terminate the main thread's message loop; then the other thread's
563 // message loop will be shut down automatically as the thread goes out of 570 // message loop will be shut down automatically as the thread goes out of
564 // scope. 571 // scope.
565 base::Thread t("URLFetcher test thread"); 572 base::Thread t("URLFetcher test thread");
566 ASSERT_TRUE(t.Start()); 573 ASSERT_TRUE(t.Start());
567 t.message_loop()->PostTask(FROM_HERE, new FetcherWrapperTask(this, url)); 574 t.message_loop()->PostTask(FROM_HERE, new FetcherWrapperTask(this, url));
568 575
569 MessageLoop::current()->Run(); 576 MessageLoop::current()->Run();
570 } 577 }
571 578
572 TEST_F(URLFetcherCancelTest, CancelWhileDelayedStartTaskPending) { 579 TEST_F(URLFetcherCancelTest, CancelWhileDelayedStartTaskPending) {
573 scoped_refptr<HTTPTestServer> server(HTTPTestServer::CreateServer(kDocRoot)); 580 scoped_refptr<net::HTTPTestServer> server(
581 net::HTTPTestServer::CreateServer(kDocRoot));
574 ASSERT_TRUE(NULL != server.get()); 582 ASSERT_TRUE(NULL != server.get());
575 GURL url = GURL(server->TestServerPage("files/server-unavailable.html")); 583 GURL url = GURL(server->TestServerPage("files/server-unavailable.html"));
576 584
577 // Register an entry for test url. 585 // Register an entry for test url.
578 // 586 //
579 // Ideally we would mock URLFetcherProtectEntry to return XXX seconds 587 // Ideally we would mock URLFetcherProtectEntry to return XXX seconds
580 // in response to entry->UpdateBackoff(SEND). 588 // in response to entry->UpdateBackoff(SEND).
581 // 589 //
582 // Unfortunately this function is time sensitive, so we fudge some numbers 590 // Unfortunately this function is time sensitive, so we fudge some numbers
583 // to make it at least somewhat likely to have a non-zero deferred 591 // to make it at least somewhat likely to have a non-zero deferred
(...skipping 13 matching lines...) Expand all
597 // time difference from now). 605 // time difference from now).
598 606
599 base::Thread t("URLFetcher test thread"); 607 base::Thread t("URLFetcher test thread");
600 ASSERT_TRUE(t.Start()); 608 ASSERT_TRUE(t.Start());
601 t.message_loop()->PostTask(FROM_HERE, new FetcherWrapperTask(this, url)); 609 t.message_loop()->PostTask(FROM_HERE, new FetcherWrapperTask(this, url));
602 610
603 MessageLoop::current()->Run(); 611 MessageLoop::current()->Run();
604 } 612 }
605 613
606 } // namespace. 614 } // namespace.
OLDNEW
« no previous file with comments | « chrome/browser/views/find_bar_host_uitest.cc ('k') | chrome/renderer/external_extension_uitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698