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