| OLD | NEW |
| 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/thread.h" | 5 #include "base/thread.h" |
| 6 #include "base/time.h" | 6 #include "base/time.h" |
| 7 #include "chrome/browser/url_fetcher.h" | 7 #include "chrome/browser/url_fetcher.h" |
| 8 #include "chrome/browser/url_fetcher_protect.h" | 8 #include "chrome/browser/url_fetcher_protect.h" |
| 9 #include "net/base/ssl_test_util.h" | 9 #include "net/base/ssl_test_util.h" |
| 10 #include "net/url_request/url_request_unittest.h" | 10 #include "net/url_request/url_request_unittest.h" |
| (...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 331 timer_.Stop(); | 331 timer_.Stop(); |
| 332 io_loop_.PostTask(FROM_HERE, new MessageLoop::QuitTask()); | 332 io_loop_.PostTask(FROM_HERE, new MessageLoop::QuitTask()); |
| 333 } | 333 } |
| 334 | 334 |
| 335 } // namespace. | 335 } // namespace. |
| 336 | 336 |
| 337 TEST_F(URLFetcherTest, SameThreadsTest) { | 337 TEST_F(URLFetcherTest, SameThreadsTest) { |
| 338 // Create the fetcher on the main thread. Since IO will happen on the main | 338 // Create the fetcher on the main thread. Since IO will happen on the main |
| 339 // thread, this will test URLFetcher's ability to do everything on one | 339 // thread, this will test URLFetcher's ability to do everything on one |
| 340 // thread. | 340 // thread. |
| 341 TestServer server(kDocRoot); | 341 scoped_refptr<HTTPTestServer> server = |
| 342 HTTPTestServer::CreateServer(kDocRoot); |
| 343 ASSERT_TRUE(NULL != server.get()); |
| 342 | 344 |
| 343 CreateFetcher(GURL(server.TestServerPage("defaultresponse"))); | 345 CreateFetcher(GURL(server->TestServerPage("defaultresponse"))); |
| 344 | 346 |
| 345 MessageLoop::current()->Run(); | 347 MessageLoop::current()->Run(); |
| 346 } | 348 } |
| 347 | 349 |
| 348 TEST_F(URLFetcherTest, DifferentThreadsTest) { | 350 TEST_F(URLFetcherTest, DifferentThreadsTest) { |
| 349 TestServer server(kDocRoot); | 351 scoped_refptr<HTTPTestServer> server = |
| 352 HTTPTestServer::CreateServer(kDocRoot); |
| 353 ASSERT_TRUE(NULL != server.get()); |
| 350 // Create a separate thread that will create the URLFetcher. The current | 354 // Create a separate thread that will create the URLFetcher. The current |
| 351 // (main) thread will do the IO, and when the fetch is complete it will | 355 // (main) thread will do the IO, and when the fetch is complete it will |
| 352 // terminate the main thread's message loop; then the other thread's | 356 // terminate the main thread's message loop; then the other thread's |
| 353 // message loop will be shut down automatically as the thread goes out of | 357 // message loop will be shut down automatically as the thread goes out of |
| 354 // scope. | 358 // scope. |
| 355 base::Thread t("URLFetcher test thread"); | 359 base::Thread t("URLFetcher test thread"); |
| 356 t.Start(); | 360 t.Start(); |
| 357 t.message_loop()->PostTask(FROM_HERE, new FetcherWrapperTask(this, | 361 t.message_loop()->PostTask(FROM_HERE, new FetcherWrapperTask(this, |
| 358 GURL(server.TestServerPage("defaultresponse")))); | 362 GURL(server->TestServerPage("defaultresponse")))); |
| 359 | 363 |
| 360 MessageLoop::current()->Run(); | 364 MessageLoop::current()->Run(); |
| 361 } | 365 } |
| 362 | 366 |
| 363 TEST_F(URLFetcherPostTest, Basic) { | 367 TEST_F(URLFetcherPostTest, Basic) { |
| 364 TestServer server(kDocRoot); | 368 scoped_refptr<HTTPTestServer> server = |
| 365 CreateFetcher(GURL(server.TestServerPage("echo"))); | 369 HTTPTestServer::CreateServer(kDocRoot); |
| 370 ASSERT_TRUE(NULL != server.get()); |
| 371 CreateFetcher(GURL(server->TestServerPage("echo"))); |
| 366 MessageLoop::current()->Run(); | 372 MessageLoop::current()->Run(); |
| 367 } | 373 } |
| 368 | 374 |
| 369 TEST_F(URLFetcherHeadersTest, Headers) { | 375 TEST_F(URLFetcherHeadersTest, Headers) { |
| 370 TestServer server(L"net/data/url_request_unittest"); | 376 scoped_refptr<HTTPTestServer> server = |
| 371 CreateFetcher(GURL(server.TestServerPage("files/with-headers.html"))); | 377 HTTPTestServer::CreateServer(L"net/data/url_request_unittest"); |
| 378 ASSERT_TRUE(NULL != server.get()); |
| 379 CreateFetcher(GURL(server->TestServerPage("files/with-headers.html"))); |
| 372 MessageLoop::current()->Run(); | 380 MessageLoop::current()->Run(); |
| 373 // The actual tests are in the URLFetcherHeadersTest fixture. | 381 // The actual tests are in the URLFetcherHeadersTest fixture. |
| 374 } | 382 } |
| 375 | 383 |
| 376 TEST_F(URLFetcherProtectTest, Overload) { | 384 TEST_F(URLFetcherProtectTest, Overload) { |
| 377 TestServer server(kDocRoot); | 385 scoped_refptr<HTTPTestServer> server = |
| 378 GURL url = GURL(server.TestServerPage("defaultresponse")); | 386 HTTPTestServer::CreateServer(kDocRoot); |
| 387 ASSERT_TRUE(NULL != server.get()); |
| 388 GURL url = GURL(server->TestServerPage("defaultresponse")); |
| 379 | 389 |
| 380 // Registers an entry for test url. It only allows 3 requests to be sent | 390 // Registers an entry for test url. It only allows 3 requests to be sent |
| 381 // in 200 milliseconds. | 391 // in 200 milliseconds. |
| 382 URLFetcherProtectManager* manager = URLFetcherProtectManager::GetInstance(); | 392 URLFetcherProtectManager* manager = URLFetcherProtectManager::GetInstance(); |
| 383 URLFetcherProtectEntry* entry = | 393 URLFetcherProtectEntry* entry = |
| 384 new URLFetcherProtectEntry(200, 3, 11, 1, 2.0, 0, 256); | 394 new URLFetcherProtectEntry(200, 3, 11, 1, 2.0, 0, 256); |
| 385 manager->Register(url.host(), entry); | 395 manager->Register(url.host(), entry); |
| 386 | 396 |
| 387 CreateFetcher(url); | 397 CreateFetcher(url); |
| 388 | 398 |
| 389 MessageLoop::current()->Run(); | 399 MessageLoop::current()->Run(); |
| 390 } | 400 } |
| 391 | 401 |
| 392 TEST_F(URLFetcherProtectTest, ServerUnavailable) { | 402 TEST_F(URLFetcherProtectTest, ServerUnavailable) { |
| 393 TestServer server(L"chrome/test/data"); | 403 scoped_refptr<HTTPTestServer> server = |
| 394 GURL url = GURL(server.TestServerPage("files/server-unavailable.html")); | 404 HTTPTestServer::CreateServer(L"chrome/test/data"); |
| 405 ASSERT_TRUE(NULL != server.get()); |
| 406 GURL url = GURL(server->TestServerPage("files/server-unavailable.html")); |
| 395 | 407 |
| 396 // Registers an entry for test url. The backoff time is calculated by: | 408 // Registers an entry for test url. The backoff time is calculated by: |
| 397 // new_backoff = 2.0 * old_backoff + 0 | 409 // new_backoff = 2.0 * old_backoff + 0 |
| 398 // and maximum backoff time is 256 milliseconds. | 410 // and maximum backoff time is 256 milliseconds. |
| 399 // Maximum retries allowed is set to 11. | 411 // Maximum retries allowed is set to 11. |
| 400 URLFetcherProtectManager* manager = URLFetcherProtectManager::GetInstance(); | 412 URLFetcherProtectManager* manager = URLFetcherProtectManager::GetInstance(); |
| 401 URLFetcherProtectEntry* entry = | 413 URLFetcherProtectEntry* entry = |
| 402 new URLFetcherProtectEntry(200, 3, 11, 1, 2.0, 0, 256); | 414 new URLFetcherProtectEntry(200, 3, 11, 1, 2.0, 0, 256); |
| 403 manager->Register(url.host(), entry); | 415 manager->Register(url.host(), entry); |
| 404 | 416 |
| 405 CreateFetcher(url); | 417 CreateFetcher(url); |
| 406 | 418 |
| 407 MessageLoop::current()->Run(); | 419 MessageLoop::current()->Run(); |
| 408 } | 420 } |
| 409 | 421 |
| 410 TEST_F(URLFetcherBadHTTPSTest, BadHTTPSTest) { | 422 TEST_F(URLFetcherBadHTTPSTest, BadHTTPSTest) { |
| 411 HTTPSTestServer server(util_.kHostName, util_.kBadHTTPSPort, | 423 scoped_refptr<HTTPSTestServer> server = |
| 424 HTTPSTestServer::CreateServer(util_.kHostName, util_.kBadHTTPSPort, |
| 412 kDocRoot, util_.GetExpiredCertPath().ToWStringHack()); | 425 kDocRoot, util_.GetExpiredCertPath().ToWStringHack()); |
| 426 ASSERT_TRUE(NULL != server.get()); |
| 413 | 427 |
| 414 CreateFetcher(GURL(server.TestServerPage("defaultresponse"))); | 428 CreateFetcher(GURL(server->TestServerPage("defaultresponse"))); |
| 415 | 429 |
| 416 MessageLoop::current()->Run(); | 430 MessageLoop::current()->Run(); |
| 417 } | 431 } |
| 418 | 432 |
| 419 TEST_F(URLFetcherCancelTest, ReleasesContext) { | 433 TEST_F(URLFetcherCancelTest, ReleasesContext) { |
| 420 TestServer server(L"chrome/test/data"); | 434 scoped_refptr<HTTPTestServer> server = |
| 421 GURL url = GURL(server.TestServerPage("files/server-unavailable.html")); | 435 HTTPTestServer::CreateServer(L"chrome/test/data"); |
| 436 ASSERT_TRUE(NULL != server.get()); |
| 437 GURL url = GURL(server->TestServerPage("files/server-unavailable.html")); |
| 422 | 438 |
| 423 // Registers an entry for test url. The backoff time is calculated by: | 439 // Registers an entry for test url. The backoff time is calculated by: |
| 424 // new_backoff = 2.0 * old_backoff + 0 | 440 // new_backoff = 2.0 * old_backoff + 0 |
| 425 // The initial backoff is 2 seconds and maximum backoff is 4 seconds. | 441 // The initial backoff is 2 seconds and maximum backoff is 4 seconds. |
| 426 // Maximum retries allowed is set to 2. | 442 // Maximum retries allowed is set to 2. |
| 427 URLFetcherProtectManager* manager = URLFetcherProtectManager::GetInstance(); | 443 URLFetcherProtectManager* manager = URLFetcherProtectManager::GetInstance(); |
| 428 URLFetcherProtectEntry* entry = | 444 URLFetcherProtectEntry* entry = |
| 429 new URLFetcherProtectEntry(200, 3, 2, 2000, 2.0, 0, 4000); | 445 new URLFetcherProtectEntry(200, 3, 2, 2000, 2.0, 0, 4000); |
| 430 manager->Register(url.host(), entry); | 446 manager->Register(url.host(), entry); |
| 431 | 447 |
| 432 // Create a separate thread that will create the URLFetcher. The current | 448 // Create a separate thread that will create the URLFetcher. The current |
| 433 // (main) thread will do the IO, and when the fetch is complete it will | 449 // (main) thread will do the IO, and when the fetch is complete it will |
| 434 // terminate the main thread's message loop; then the other thread's | 450 // terminate the main thread's message loop; then the other thread's |
| 435 // message loop will be shut down automatically as the thread goes out of | 451 // message loop will be shut down automatically as the thread goes out of |
| 436 // scope. | 452 // scope. |
| 437 base::Thread t("URLFetcher test thread"); | 453 base::Thread t("URLFetcher test thread"); |
| 438 t.Start(); | 454 t.Start(); |
| 439 t.message_loop()->PostTask(FROM_HERE, new FetcherWrapperTask(this, url)); | 455 t.message_loop()->PostTask(FROM_HERE, new FetcherWrapperTask(this, url)); |
| 440 | 456 |
| 441 MessageLoop::current()->Run(); | 457 MessageLoop::current()->Run(); |
| 442 } | 458 } |
| OLD | NEW |