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

Side by Side Diff: content/common/net/url_fetcher_impl_unittest.cc

Issue 8403017: Rename URLFetcher to be URLFetcherImpl, now that we have the content::URLFetcher interface. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month 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
« no previous file with comments | « content/common/net/url_fetcher_impl.cc ('k') | content/common/net/url_fetcher_unittest.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) 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 "content/common/net/url_fetcher.h" 5 #include "content/common/net/url_fetcher_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/message_loop_proxy.h" 8 #include "base/message_loop_proxy.h"
9 #include "base/synchronization/waitable_event.h" 9 #include "base/synchronization/waitable_event.h"
10 #include "base/threading/thread.h" 10 #include "base/threading/thread.h"
11 #include "build/build_config.h" 11 #include "build/build_config.h"
12 #include "content/public/common/url_fetcher_delegate.h" 12 #include "content/public/common/url_fetcher_delegate.h"
13 #include "crypto/nss_util.h" 13 #include "crypto/nss_util.h"
14 #include "net/http/http_response_headers.h" 14 #include "net/http/http_response_headers.h"
15 #include "net/test/test_server.h" 15 #include "net/test/test_server.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 }; 57 };
58 58
59 } // namespace 59 } // namespace
60 60
61 class URLFetcherTest : public testing::Test, 61 class URLFetcherTest : public testing::Test,
62 public content::URLFetcherDelegate { 62 public content::URLFetcherDelegate {
63 public: 63 public:
64 URLFetcherTest() : fetcher_(NULL) { } 64 URLFetcherTest() : fetcher_(NULL) { }
65 65
66 static int GetNumFetcherCores() { 66 static int GetNumFetcherCores() {
67 return URLFetcher::GetNumFetcherCores(); 67 return URLFetcherImpl::GetNumFetcherCores();
68 } 68 }
69 69
70 // Creates a URLFetcher, using the program's main thread to do IO. 70 // Creates a URLFetcher, using the program's main thread to do IO.
71 virtual void CreateFetcher(const GURL& url); 71 virtual void CreateFetcher(const GURL& url);
72 72
73 // content::URLFetcherDelegate 73 // content::URLFetcherDelegate
74 virtual void OnURLFetchComplete(const content::URLFetcher* source); 74 virtual void OnURLFetchComplete(const content::URLFetcher* source);
75 75
76 scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy() { 76 scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy() {
77 return io_message_loop_proxy_; 77 return io_message_loop_proxy_;
(...skipping 17 matching lines...) Expand all
95 #endif 95 #endif
96 } 96 }
97 97
98 // URLFetcher is designed to run on the main UI thread, but in our tests 98 // URLFetcher is designed to run on the main UI thread, but in our tests
99 // we assume that the current thread is the IO thread where the URLFetcher 99 // we assume that the current thread is the IO thread where the URLFetcher
100 // dispatches its requests to. When we wish to simulate being used from 100 // dispatches its requests to. When we wish to simulate being used from
101 // a UI thread, we dispatch a worker thread to do so. 101 // a UI thread, we dispatch a worker thread to do so.
102 MessageLoopForIO io_loop_; 102 MessageLoopForIO io_loop_;
103 scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy_; 103 scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy_;
104 104
105 URLFetcher* fetcher_; 105 URLFetcherImpl* fetcher_;
106 }; 106 };
107 107
108 void URLFetcherTest::CreateFetcher(const GURL& url) { 108 void URLFetcherTest::CreateFetcher(const GURL& url) {
109 fetcher_ = new URLFetcher(url, URLFetcher::GET, this); 109 fetcher_ = new URLFetcherImpl(url, content::URLFetcher::GET, this);
110 fetcher_->SetRequestContext(new TestURLRequestContextGetter( 110 fetcher_->SetRequestContext(new TestURLRequestContextGetter(
111 io_message_loop_proxy())); 111 io_message_loop_proxy()));
112 fetcher_->Start(); 112 fetcher_->Start();
113 } 113 }
114 114
115 void URLFetcherTest::OnURLFetchComplete(const content::URLFetcher* source) { 115 void URLFetcherTest::OnURLFetchComplete(const content::URLFetcher* source) {
116 EXPECT_TRUE(source->GetStatus().is_success()); 116 EXPECT_TRUE(source->GetStatus().is_success());
117 EXPECT_EQ(200, source->GetResponseCode()); // HTTP OK 117 EXPECT_EQ(200, source->GetResponseCode()); // HTTP OK
118 118
119 std::string data; 119 std::string data;
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 FilePath expected_file_; 263 FilePath expected_file_;
264 FilePath temp_file_; 264 FilePath temp_file_;
265 265
266 // Set by the test. Used in OnURLFetchComplete() to decide if 266 // Set by the test. Used in OnURLFetchComplete() to decide if
267 // the URLFetcher should own the temp file, so that we can test 267 // the URLFetcher should own the temp file, so that we can test
268 // disowning prevents the file from being deleted. 268 // disowning prevents the file from being deleted.
269 bool take_ownership_of_temp_file_; 269 bool take_ownership_of_temp_file_;
270 }; 270 };
271 271
272 void URLFetcherTempFileTest::CreateFetcher(const GURL& url) { 272 void URLFetcherTempFileTest::CreateFetcher(const GURL& url) {
273 fetcher_ = new URLFetcher(url, URLFetcher::GET, this); 273 fetcher_ = new URLFetcherImpl(url, content::URLFetcher::GET, this);
274 fetcher_->SetRequestContext(new TestURLRequestContextGetter( 274 fetcher_->SetRequestContext(new TestURLRequestContextGetter(
275 io_message_loop_proxy())); 275 io_message_loop_proxy()));
276 276
277 // Use the IO message loop to do the file operations in this test. 277 // Use the IO message loop to do the file operations in this test.
278 fetcher_->SaveResponseToTemporaryFile(io_message_loop_proxy()); 278 fetcher_->SaveResponseToTemporaryFile(io_message_loop_proxy());
279 fetcher_->Start(); 279 fetcher_->Start();
280 } 280 }
281 281
282 TEST_F(URLFetcherTempFileTest, SmallGet) { 282 TEST_F(URLFetcherTempFileTest, SmallGet) {
283 net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot)); 283 net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot));
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 virtual void Run() { 338 virtual void Run() {
339 test_->CreateFetcher(url_); 339 test_->CreateFetcher(url_);
340 } 340 }
341 341
342 private: 342 private:
343 URLFetcherTest* test_; 343 URLFetcherTest* test_;
344 GURL url_; 344 GURL url_;
345 }; 345 };
346 346
347 void URLFetcherPostTest::CreateFetcher(const GURL& url) { 347 void URLFetcherPostTest::CreateFetcher(const GURL& url) {
348 fetcher_ = new URLFetcher(url, URLFetcher::POST, this); 348 fetcher_ = new URLFetcherImpl(url, content::URLFetcher::POST, this);
349 fetcher_->SetRequestContext(new TestURLRequestContextGetter( 349 fetcher_->SetRequestContext(new TestURLRequestContextGetter(
350 io_message_loop_proxy())); 350 io_message_loop_proxy()));
351 fetcher_->SetUploadData("application/x-www-form-urlencoded", 351 fetcher_->SetUploadData("application/x-www-form-urlencoded",
352 "bobsyeruncle"); 352 "bobsyeruncle");
353 fetcher_->Start(); 353 fetcher_->Start();
354 } 354 }
355 355
356 void URLFetcherPostTest::OnURLFetchComplete(const content::URLFetcher* source) { 356 void URLFetcherPostTest::OnURLFetchComplete(const content::URLFetcher* source) {
357 std::string data; 357 std::string data;
358 EXPECT_TRUE(source->GetResponseAsString(&data)); 358 EXPECT_TRUE(source->GetResponseAsString(&data));
359 EXPECT_EQ(std::string("bobsyeruncle"), data); 359 EXPECT_EQ(std::string("bobsyeruncle"), data);
360 URLFetcherTest::OnURLFetchComplete(source); 360 URLFetcherTest::OnURLFetchComplete(source);
361 } 361 }
362 362
363 void URLFetcherHeadersTest::OnURLFetchComplete(const content::URLFetcher* source ) { 363 void URLFetcherHeadersTest::OnURLFetchComplete(
364 const content::URLFetcher* source) {
364 std::string header; 365 std::string header;
365 EXPECT_TRUE(source->GetResponseHeaders()->GetNormalizedHeader("cache-control", 366 EXPECT_TRUE(source->GetResponseHeaders()->GetNormalizedHeader("cache-control",
366 &header)); 367 &header));
367 EXPECT_EQ("private", header); 368 EXPECT_EQ("private", header);
368 URLFetcherTest::OnURLFetchComplete(source); 369 URLFetcherTest::OnURLFetchComplete(source);
369 } 370 }
370 371
371 void URLFetcherSocketAddressTest::OnURLFetchComplete( 372 void URLFetcherSocketAddressTest::OnURLFetchComplete(
372 const content::URLFetcher* source) { 373 const content::URLFetcher* source) {
373 EXPECT_EQ("127.0.0.1", source->GetSocketAddress().host()); 374 EXPECT_EQ("127.0.0.1", source->GetSocketAddress().host());
374 EXPECT_EQ(expected_port_, source->GetSocketAddress().port()); 375 EXPECT_EQ(expected_port_, source->GetSocketAddress().port());
375 URLFetcherTest::OnURLFetchComplete(source); 376 URLFetcherTest::OnURLFetchComplete(source);
376 } 377 }
377 378
378 void URLFetcherProtectTest::CreateFetcher(const GURL& url) { 379 void URLFetcherProtectTest::CreateFetcher(const GURL& url) {
379 fetcher_ = new URLFetcher(url, URLFetcher::GET, this); 380 fetcher_ = new URLFetcherImpl(url, content::URLFetcher::GET, this);
380 fetcher_->SetRequestContext(new TestURLRequestContextGetter( 381 fetcher_->SetRequestContext(new TestURLRequestContextGetter(
381 io_message_loop_proxy())); 382 io_message_loop_proxy()));
382 start_time_ = Time::Now(); 383 start_time_ = Time::Now();
383 fetcher_->SetMaxRetries(11); 384 fetcher_->SetMaxRetries(11);
384 fetcher_->Start(); 385 fetcher_->Start();
385 } 386 }
386 387
387 void URLFetcherProtectTest::OnURLFetchComplete( 388 void URLFetcherProtectTest::OnURLFetchComplete(
388 const content::URLFetcher* source) { 389 const content::URLFetcher* source) {
389 const TimeDelta one_second = TimeDelta::FromMilliseconds(1000); 390 const TimeDelta one_second = TimeDelta::FromMilliseconds(1000);
(...skipping 17 matching lines...) Expand all
407 } else { 408 } else {
408 // We have already sent 20 requests continuously. And we expect that 409 // We have already sent 20 requests continuously. And we expect that
409 // it takes more than 1 second due to the overload protection settings. 410 // it takes more than 1 second due to the overload protection settings.
410 EXPECT_TRUE(Time::Now() - start_time_ >= one_second); 411 EXPECT_TRUE(Time::Now() - start_time_ >= one_second);
411 URLFetcherTest::OnURLFetchComplete(source); 412 URLFetcherTest::OnURLFetchComplete(source);
412 } 413 }
413 } 414 }
414 } 415 }
415 416
416 void URLFetcherProtectTestPassedThrough::CreateFetcher(const GURL& url) { 417 void URLFetcherProtectTestPassedThrough::CreateFetcher(const GURL& url) {
417 fetcher_ = new URLFetcher(url, URLFetcher::GET, this); 418 fetcher_ = new URLFetcherImpl(url, content::URLFetcher::GET, this);
418 fetcher_->SetRequestContext(new TestURLRequestContextGetter( 419 fetcher_->SetRequestContext(new TestURLRequestContextGetter(
419 io_message_loop_proxy())); 420 io_message_loop_proxy()));
420 fetcher_->SetAutomaticallyRetryOn5xx(false); 421 fetcher_->SetAutomaticallyRetryOn5xx(false);
421 start_time_ = Time::Now(); 422 start_time_ = Time::Now();
422 fetcher_->SetMaxRetries(11); 423 fetcher_->SetMaxRetries(11);
423 fetcher_->Start(); 424 fetcher_->Start();
424 } 425 }
425 426
426 void URLFetcherProtectTestPassedThrough::OnURLFetchComplete( 427 void URLFetcherProtectTestPassedThrough::OnURLFetchComplete(
427 const content::URLFetcher* source) { 428 const content::URLFetcher* source) {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 std::string data; 471 std::string data;
471 EXPECT_TRUE(source->GetResponseAsString(&data)); 472 EXPECT_TRUE(source->GetResponseAsString(&data));
472 EXPECT_TRUE(data.empty()); 473 EXPECT_TRUE(data.empty());
473 474
474 // The rest is the same as URLFetcherTest::OnURLFetchComplete. 475 // The rest is the same as URLFetcherTest::OnURLFetchComplete.
475 delete fetcher_; 476 delete fetcher_;
476 io_message_loop_proxy()->PostTask(FROM_HERE, new MessageLoop::QuitTask()); 477 io_message_loop_proxy()->PostTask(FROM_HERE, new MessageLoop::QuitTask());
477 } 478 }
478 479
479 void URLFetcherCancelTest::CreateFetcher(const GURL& url) { 480 void URLFetcherCancelTest::CreateFetcher(const GURL& url) {
480 fetcher_ = new URLFetcher(url, URLFetcher::GET, this); 481 fetcher_ = new URLFetcherImpl(url, content::URLFetcher::GET, this);
481 CancelTestURLRequestContextGetter* context_getter = 482 CancelTestURLRequestContextGetter* context_getter =
482 new CancelTestURLRequestContextGetter(io_message_loop_proxy()); 483 new CancelTestURLRequestContextGetter(io_message_loop_proxy());
483 fetcher_->SetRequestContext(context_getter); 484 fetcher_->SetRequestContext(context_getter);
484 fetcher_->SetMaxRetries(2); 485 fetcher_->SetMaxRetries(2);
485 fetcher_->Start(); 486 fetcher_->Start();
486 // We need to wait for the creation of the net::URLRequestContext, since we 487 // We need to wait for the creation of the net::URLRequestContext, since we
487 // rely on it being destroyed as a signal to end the test. 488 // rely on it being destroyed as a signal to end the test.
488 context_getter->WaitForContextCreation(); 489 context_getter->WaitForContextCreation();
489 CancelRequest(); 490 CancelRequest();
490 } 491 }
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after
770 // Create the fetcher on the main thread. Since IO will happen on the main 771 // Create the fetcher on the main thread. Since IO will happen on the main
771 // thread, this will test URLFetcher's ability to do everything on one 772 // thread, this will test URLFetcher's ability to do everything on one
772 // thread. 773 // thread.
773 CreateFetcher(test_server.GetURL("defaultresponse")); 774 CreateFetcher(test_server.GetURL("defaultresponse"));
774 775
775 MessageLoop::current()->Run(); 776 MessageLoop::current()->Run();
776 } 777 }
777 778
778 void CancelAllOnIO() { 779 void CancelAllOnIO() {
779 EXPECT_EQ(1, URLFetcherTest::GetNumFetcherCores()); 780 EXPECT_EQ(1, URLFetcherTest::GetNumFetcherCores());
780 URLFetcher::CancelAll(); 781 URLFetcherImpl::CancelAll();
781 EXPECT_EQ(0, URLFetcherTest::GetNumFetcherCores()); 782 EXPECT_EQ(0, URLFetcherTest::GetNumFetcherCores());
782 } 783 }
783 784
784 // Tests to make sure CancelAll() will successfully cancel existing URLFetchers. 785 // Tests to make sure CancelAll() will successfully cancel existing URLFetchers.
785 TEST_F(URLFetcherTest, CancelAll) { 786 TEST_F(URLFetcherTest, CancelAll) {
786 net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot)); 787 net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot));
787 ASSERT_TRUE(test_server.Start()); 788 ASSERT_TRUE(test_server.Start());
788 EXPECT_EQ(0, GetNumFetcherCores()); 789 EXPECT_EQ(0, GetNumFetcherCores());
789 790
790 CreateFetcher(test_server.GetURL("defaultresponse")); 791 CreateFetcher(test_server.GetURL("defaultresponse"));
791 io_message_loop_proxy()->PostTaskAndReply( 792 io_message_loop_proxy()->PostTaskAndReply(
792 FROM_HERE, 793 FROM_HERE,
793 base::Bind(&CancelAllOnIO), 794 base::Bind(&CancelAllOnIO),
794 base::Bind(&MessageLoop::Quit, 795 base::Bind(&MessageLoop::Quit,
795 base::Unretained(MessageLoop::current()))); 796 base::Unretained(MessageLoop::current())));
796 MessageLoop::current()->Run(); 797 MessageLoop::current()->Run();
797 EXPECT_EQ(0, GetNumFetcherCores()); 798 EXPECT_EQ(0, GetNumFetcherCores());
798 delete fetcher_; 799 delete fetcher_;
799 } 800 }
800 801
801 } // namespace. 802 } // namespace.
OLDNEW
« no previous file with comments | « content/common/net/url_fetcher_impl.cc ('k') | content/common/net/url_fetcher_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698