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

Side by Side Diff: net/test/embedded_test_server/embedded_test_server_unittest.cc

Issue 15069003: Rename the embedded test server to EmbeddedTestServer in net::test_server namespace. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nit Created 7 years, 7 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "net/test/embedded_test_server/http_server.h" 5 #include "net/test/embedded_test_server/embedded_test_server.h"
6 6
7 #include "base/stringprintf.h" 7 #include "base/stringprintf.h"
8 #include "base/threading/thread.h" 8 #include "base/threading/thread.h"
9 #include "net/http/http_response_headers.h" 9 #include "net/http/http_response_headers.h"
10 #include "net/test/embedded_test_server/http_request.h" 10 #include "net/test/embedded_test_server/http_request.h"
11 #include "net/test/embedded_test_server/http_response.h" 11 #include "net/test/embedded_test_server/http_response.h"
12 #include "net/url_request/url_fetcher.h" 12 #include "net/url_request/url_fetcher.h"
13 #include "net/url_request/url_fetcher_delegate.h" 13 #include "net/url_request/url_fetcher_delegate.h"
14 #include "net/url_request/url_request_test_util.h" 14 #include "net/url_request/url_request_test_util.h"
15 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
16 16
17 namespace google_apis { 17 namespace net {
18 namespace test_server { 18 namespace test_server {
19 19
20 namespace { 20 namespace {
21 21
22 // Gets the content from the given URLFetcher. 22 // Gets the content from the given URLFetcher.
23 std::string GetContentFromFetcher(const net::URLFetcher& fetcher) { 23 std::string GetContentFromFetcher(const URLFetcher& fetcher) {
24 std::string result; 24 std::string result;
25 const bool success = fetcher.GetResponseAsString(&result); 25 const bool success = fetcher.GetResponseAsString(&result);
26 EXPECT_TRUE(success); 26 EXPECT_TRUE(success);
27 return result; 27 return result;
28 } 28 }
29 29
30 // Gets the content type from the given URLFetcher. 30 // Gets the content type from the given URLFetcher.
31 std::string GetContentTypeFromFetcher(const net::URLFetcher& fetcher) { 31 std::string GetContentTypeFromFetcher(const URLFetcher& fetcher) {
32 const net::HttpResponseHeaders* headers = fetcher.GetResponseHeaders(); 32 const HttpResponseHeaders* headers = fetcher.GetResponseHeaders();
33 if (headers) { 33 if (headers) {
34 std::string content_type; 34 std::string content_type;
35 if (headers->GetMimeType(&content_type)) 35 if (headers->GetMimeType(&content_type))
36 return content_type; 36 return content_type;
37 } 37 }
38 return std::string(); 38 return std::string();
39 } 39 }
40 40
41 } // namespace 41 } // namespace
42 42
43 class HttpServerTest : public testing::Test, 43 class EmbeddedTestServerTest : public testing::Test,
44 public net::URLFetcherDelegate { 44 public URLFetcherDelegate {
45 public: 45 public:
46 HttpServerTest() 46 EmbeddedTestServerTest()
47 : num_responses_received_(0), 47 : num_responses_received_(0),
48 num_responses_expected_(0), 48 num_responses_expected_(0),
49 io_thread_("io_thread") { 49 io_thread_("io_thread") {
50 } 50 }
51 51
52 virtual void SetUp() OVERRIDE { 52 virtual void SetUp() OVERRIDE {
53 base::Thread::Options thread_options; 53 base::Thread::Options thread_options;
54 thread_options.message_loop_type = MessageLoop::TYPE_IO; 54 thread_options.message_loop_type = MessageLoop::TYPE_IO;
55 ASSERT_TRUE(io_thread_.StartWithOptions(thread_options)); 55 ASSERT_TRUE(io_thread_.StartWithOptions(thread_options));
56 56
57 request_context_getter_ = new net::TestURLRequestContextGetter( 57 request_context_getter_ = new TestURLRequestContextGetter(
58 io_thread_.message_loop_proxy()); 58 io_thread_.message_loop_proxy());
59 59
60 server_.reset(new HttpServer(io_thread_.message_loop_proxy())); 60 server_.reset(new EmbeddedTestServer(io_thread_.message_loop_proxy()));
61 ASSERT_TRUE(server_->InitializeAndWaitUntilReady()); 61 ASSERT_TRUE(server_->InitializeAndWaitUntilReady());
62 } 62 }
63 63
64 virtual void TearDown() OVERRIDE { 64 virtual void TearDown() OVERRIDE {
65 ASSERT_TRUE(server_->ShutdownAndWaitUntilComplete()); 65 ASSERT_TRUE(server_->ShutdownAndWaitUntilComplete());
66 } 66 }
67 67
68 // net::URLFetcherDelegate override. 68 // URLFetcherDelegate override.
69 virtual void OnURLFetchComplete(const net::URLFetcher* source) OVERRIDE { 69 virtual void OnURLFetchComplete(const URLFetcher* source) OVERRIDE {
70 ++num_responses_received_; 70 ++num_responses_received_;
71 if (num_responses_received_ == num_responses_expected_) 71 if (num_responses_received_ == num_responses_expected_)
72 MessageLoop::current()->Quit(); 72 MessageLoop::current()->Quit();
73 } 73 }
74 74
75 // Waits until the specified number of responses are received. 75 // Waits until the specified number of responses are received.
76 void WaitForResponses(int num_responses) { 76 void WaitForResponses(int num_responses) {
77 num_responses_received_ = 0; 77 num_responses_received_ = 0;
78 num_responses_expected_ = num_responses; 78 num_responses_expected_ = num_responses;
79 // Will be terminated in OnURLFetchComplete(). 79 // Will be terminated in OnURLFetchComplete().
(...skipping 19 matching lines...) Expand all
99 } 99 }
100 100
101 return scoped_ptr<HttpResponse>(); 101 return scoped_ptr<HttpResponse>();
102 } 102 }
103 103
104 protected: 104 protected:
105 int num_responses_received_; 105 int num_responses_received_;
106 int num_responses_expected_; 106 int num_responses_expected_;
107 std::string request_relative_url_; 107 std::string request_relative_url_;
108 base::Thread io_thread_; 108 base::Thread io_thread_;
109 scoped_refptr<net::TestURLRequestContextGetter> request_context_getter_; 109 scoped_refptr<TestURLRequestContextGetter> request_context_getter_;
110 scoped_ptr<HttpServer> server_; 110 scoped_ptr<EmbeddedTestServer> server_;
111 }; 111 };
112 112
113 TEST_F(HttpServerTest, GetBaseURL) { 113 TEST_F(EmbeddedTestServerTest, GetBaseURL) {
114 EXPECT_EQ(base::StringPrintf("http://127.0.0.1:%d/", server_->port()), 114 EXPECT_EQ(base::StringPrintf("http://127.0.0.1:%d/", server_->port()),
115 server_->base_url().spec()); 115 server_->base_url().spec());
116 } 116 }
117 117
118 TEST_F(HttpServerTest, GetURL) { 118 TEST_F(EmbeddedTestServerTest, GetURL) {
119 EXPECT_EQ(base::StringPrintf("http://127.0.0.1:%d/path?query=foo", 119 EXPECT_EQ(base::StringPrintf("http://127.0.0.1:%d/path?query=foo",
120 server_->port()), 120 server_->port()),
121 server_->GetURL("/path?query=foo").spec()); 121 server_->GetURL("/path?query=foo").spec());
122 } 122 }
123 123
124 TEST_F(HttpServerTest, RegisterRequestHandler) { 124 TEST_F(EmbeddedTestServerTest, RegisterRequestHandler) {
125 server_->RegisterRequestHandler(base::Bind(&HttpServerTest::HandleRequest, 125 server_->RegisterRequestHandler(
126 base::Unretained(this), 126 base::Bind(&EmbeddedTestServerTest::HandleRequest,
127 "/test", 127 base::Unretained(this),
128 "<b>Worked!</b>", 128 "/test",
129 "text/html", 129 "<b>Worked!</b>",
130 SUCCESS)); 130 "text/html",
131 SUCCESS));
131 132
132 scoped_ptr<net::URLFetcher> fetcher( 133 scoped_ptr<URLFetcher> fetcher(
133 net::URLFetcher::Create(server_->GetURL("/test?q=foo"), 134 URLFetcher::Create(server_->GetURL("/test?q=foo"),
134 net::URLFetcher::GET, 135 URLFetcher::GET,
135 this)); 136 this));
136 fetcher->SetRequestContext(request_context_getter_.get()); 137 fetcher->SetRequestContext(request_context_getter_.get());
137 fetcher->Start(); 138 fetcher->Start();
138 WaitForResponses(1); 139 WaitForResponses(1);
139 140
140 EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher->GetStatus().status()); 141 EXPECT_EQ(URLRequestStatus::SUCCESS, fetcher->GetStatus().status());
141 EXPECT_EQ(SUCCESS, fetcher->GetResponseCode()); 142 EXPECT_EQ(SUCCESS, fetcher->GetResponseCode());
142 EXPECT_EQ("<b>Worked!</b>", GetContentFromFetcher(*fetcher)); 143 EXPECT_EQ("<b>Worked!</b>", GetContentFromFetcher(*fetcher));
143 EXPECT_EQ("text/html", GetContentTypeFromFetcher(*fetcher)); 144 EXPECT_EQ("text/html", GetContentTypeFromFetcher(*fetcher));
144 145
145 EXPECT_EQ("/test?q=foo", request_relative_url_); 146 EXPECT_EQ("/test?q=foo", request_relative_url_);
146 } 147 }
147 148
148 TEST_F(HttpServerTest, DefaultNotFoundResponse) { 149 TEST_F(EmbeddedTestServerTest, DefaultNotFoundResponse) {
149 scoped_ptr<net::URLFetcher> fetcher( 150 scoped_ptr<URLFetcher> fetcher(
150 net::URLFetcher::Create(server_->GetURL("/non-existent"), 151 URLFetcher::Create(server_->GetURL("/non-existent"),
151 net::URLFetcher::GET, 152 URLFetcher::GET,
152 this)); 153 this));
153 fetcher->SetRequestContext(request_context_getter_.get()); 154 fetcher->SetRequestContext(request_context_getter_.get());
154 155
155 fetcher->Start(); 156 fetcher->Start();
156 WaitForResponses(1); 157 WaitForResponses(1);
157 EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher->GetStatus().status()); 158 EXPECT_EQ(URLRequestStatus::SUCCESS, fetcher->GetStatus().status());
158 EXPECT_EQ(NOT_FOUND, fetcher->GetResponseCode()); 159 EXPECT_EQ(NOT_FOUND, fetcher->GetResponseCode());
159 } 160 }
160 161
161 TEST_F(HttpServerTest, ConcurrentFetches) { 162 TEST_F(EmbeddedTestServerTest, ConcurrentFetches) {
162 server_->RegisterRequestHandler( 163 server_->RegisterRequestHandler(
163 base::Bind(&HttpServerTest::HandleRequest, 164 base::Bind(&EmbeddedTestServerTest::HandleRequest,
164 base::Unretained(this), 165 base::Unretained(this),
165 "/test1", 166 "/test1",
166 "Raspberry chocolate", 167 "Raspberry chocolate",
167 "text/html", 168 "text/html",
168 SUCCESS)); 169 SUCCESS));
169 server_->RegisterRequestHandler( 170 server_->RegisterRequestHandler(
170 base::Bind(&HttpServerTest::HandleRequest, 171 base::Bind(&EmbeddedTestServerTest::HandleRequest,
171 base::Unretained(this), 172 base::Unretained(this),
172 "/test2", 173 "/test2",
173 "Vanilla chocolate", 174 "Vanilla chocolate",
174 "text/html", 175 "text/html",
175 SUCCESS)); 176 SUCCESS));
176 server_->RegisterRequestHandler( 177 server_->RegisterRequestHandler(
177 base::Bind(&HttpServerTest::HandleRequest, 178 base::Bind(&EmbeddedTestServerTest::HandleRequest,
178 base::Unretained(this), 179 base::Unretained(this),
179 "/test3", 180 "/test3",
180 "No chocolates", 181 "No chocolates",
181 "text/plain", 182 "text/plain",
182 NOT_FOUND)); 183 NOT_FOUND));
183 184
184 scoped_ptr<net::URLFetcher> fetcher1 = scoped_ptr<net::URLFetcher>( 185 scoped_ptr<URLFetcher> fetcher1 = scoped_ptr<URLFetcher>(
185 net::URLFetcher::Create(server_->GetURL("/test1"), 186 URLFetcher::Create(server_->GetURL("/test1"),
186 net::URLFetcher::GET, 187 URLFetcher::GET,
187 this)); 188 this));
188 fetcher1->SetRequestContext(request_context_getter_.get()); 189 fetcher1->SetRequestContext(request_context_getter_.get());
189 scoped_ptr<net::URLFetcher> fetcher2 = scoped_ptr<net::URLFetcher>( 190 scoped_ptr<URLFetcher> fetcher2 = scoped_ptr<URLFetcher>(
190 net::URLFetcher::Create(server_->GetURL("/test2"), 191 URLFetcher::Create(server_->GetURL("/test2"),
191 net::URLFetcher::GET, 192 URLFetcher::GET,
192 this)); 193 this));
193 fetcher2->SetRequestContext(request_context_getter_.get()); 194 fetcher2->SetRequestContext(request_context_getter_.get());
194 scoped_ptr<net::URLFetcher> fetcher3 = scoped_ptr<net::URLFetcher>( 195 scoped_ptr<URLFetcher> fetcher3 = scoped_ptr<URLFetcher>(
195 net::URLFetcher::Create(server_->GetURL("/test3"), 196 URLFetcher::Create(server_->GetURL("/test3"),
196 net::URLFetcher::GET, 197 URLFetcher::GET,
197 this)); 198 this));
198 fetcher3->SetRequestContext(request_context_getter_.get()); 199 fetcher3->SetRequestContext(request_context_getter_.get());
199 200
200 // Fetch the three URLs concurrently. 201 // Fetch the three URLs concurrently.
201 fetcher1->Start(); 202 fetcher1->Start();
202 fetcher2->Start(); 203 fetcher2->Start();
203 fetcher3->Start(); 204 fetcher3->Start();
204 WaitForResponses(3); 205 WaitForResponses(3);
205 206
206 EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher1->GetStatus().status()); 207 EXPECT_EQ(URLRequestStatus::SUCCESS, fetcher1->GetStatus().status());
207 EXPECT_EQ(SUCCESS, fetcher1->GetResponseCode()); 208 EXPECT_EQ(SUCCESS, fetcher1->GetResponseCode());
208 EXPECT_EQ("Raspberry chocolate", GetContentFromFetcher(*fetcher1)); 209 EXPECT_EQ("Raspberry chocolate", GetContentFromFetcher(*fetcher1));
209 EXPECT_EQ("text/html", GetContentTypeFromFetcher(*fetcher1)); 210 EXPECT_EQ("text/html", GetContentTypeFromFetcher(*fetcher1));
210 211
211 EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher2->GetStatus().status()); 212 EXPECT_EQ(URLRequestStatus::SUCCESS, fetcher2->GetStatus().status());
212 EXPECT_EQ(SUCCESS, fetcher2->GetResponseCode()); 213 EXPECT_EQ(SUCCESS, fetcher2->GetResponseCode());
213 EXPECT_EQ("Vanilla chocolate", GetContentFromFetcher(*fetcher2)); 214 EXPECT_EQ("Vanilla chocolate", GetContentFromFetcher(*fetcher2));
214 EXPECT_EQ("text/html", GetContentTypeFromFetcher(*fetcher2)); 215 EXPECT_EQ("text/html", GetContentTypeFromFetcher(*fetcher2));
215 216
216 EXPECT_EQ(net::URLRequestStatus::SUCCESS, fetcher3->GetStatus().status()); 217 EXPECT_EQ(URLRequestStatus::SUCCESS, fetcher3->GetStatus().status());
217 EXPECT_EQ(NOT_FOUND, fetcher3->GetResponseCode()); 218 EXPECT_EQ(NOT_FOUND, fetcher3->GetResponseCode());
218 EXPECT_EQ("No chocolates", GetContentFromFetcher(*fetcher3)); 219 EXPECT_EQ("No chocolates", GetContentFromFetcher(*fetcher3));
219 EXPECT_EQ("text/plain", GetContentTypeFromFetcher(*fetcher3)); 220 EXPECT_EQ("text/plain", GetContentTypeFromFetcher(*fetcher3));
220 } 221 }
221 222
222 } // namespace test_server 223 } // namespace test_server
223 } // namespace google_apis 224 } // namespace net
OLDNEW
« no previous file with comments | « net/test/embedded_test_server/embedded_test_server.cc ('k') | net/test/embedded_test_server/http_connection.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698