OLD | NEW |
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/embedded_test_server.h" | 5 #include "net/test/embedded_test_server/embedded_test_server.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/memory/ptr_util.h" |
10 #include "base/memory/weak_ptr.h" | 11 #include "base/memory/weak_ptr.h" |
11 #include "base/path_service.h" | 12 #include "base/path_service.h" |
12 #include "base/run_loop.h" | 13 #include "base/run_loop.h" |
13 #include "base/single_thread_task_runner.h" | 14 #include "base/single_thread_task_runner.h" |
14 #include "base/strings/stringprintf.h" | 15 #include "base/strings/stringprintf.h" |
15 #include "base/synchronization/lock.h" | 16 #include "base/synchronization/lock.h" |
16 #include "base/threading/thread.h" | 17 #include "base/threading/thread.h" |
17 #include "crypto/nss_util.h" | 18 #include "crypto/nss_util.h" |
18 #include "net/base/test_completion_callback.h" | 19 #include "net/base/test_completion_callback.h" |
19 #include "net/http/http_response_headers.h" | 20 #include "net/http/http_response_headers.h" |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 // Waits until the specified number of responses are received. | 161 // Waits until the specified number of responses are received. |
161 void WaitForResponses(int num_responses) { | 162 void WaitForResponses(int num_responses) { |
162 num_responses_received_ = 0; | 163 num_responses_received_ = 0; |
163 num_responses_expected_ = num_responses; | 164 num_responses_expected_ = num_responses; |
164 // Will be terminated in OnURLFetchComplete(). | 165 // Will be terminated in OnURLFetchComplete(). |
165 base::MessageLoop::current()->Run(); | 166 base::MessageLoop::current()->Run(); |
166 } | 167 } |
167 | 168 |
168 // Handles |request| sent to |path| and returns the response per |content|, | 169 // Handles |request| sent to |path| and returns the response per |content|, |
169 // |content type|, and |code|. Saves the request URL for verification. | 170 // |content type|, and |code|. Saves the request URL for verification. |
170 scoped_ptr<HttpResponse> HandleRequest(const std::string& path, | 171 std::unique_ptr<HttpResponse> HandleRequest(const std::string& path, |
171 const std::string& content, | 172 const std::string& content, |
172 const std::string& content_type, | 173 const std::string& content_type, |
173 HttpStatusCode code, | 174 HttpStatusCode code, |
174 const HttpRequest& request) { | 175 const HttpRequest& request) { |
175 request_relative_url_ = request.relative_url; | 176 request_relative_url_ = request.relative_url; |
176 | 177 |
177 GURL absolute_url = server_->GetURL(request.relative_url); | 178 GURL absolute_url = server_->GetURL(request.relative_url); |
178 if (absolute_url.path() == path) { | 179 if (absolute_url.path() == path) { |
179 scoped_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); | 180 std::unique_ptr<BasicHttpResponse> http_response(new BasicHttpResponse); |
180 http_response->set_code(code); | 181 http_response->set_code(code); |
181 http_response->set_content(content); | 182 http_response->set_content(content); |
182 http_response->set_content_type(content_type); | 183 http_response->set_content_type(content_type); |
183 return std::move(http_response); | 184 return std::move(http_response); |
184 } | 185 } |
185 | 186 |
186 return nullptr; | 187 return nullptr; |
187 } | 188 } |
188 | 189 |
189 protected: | 190 protected: |
190 int num_responses_received_; | 191 int num_responses_received_; |
191 int num_responses_expected_; | 192 int num_responses_expected_; |
192 std::string request_relative_url_; | 193 std::string request_relative_url_; |
193 base::Thread io_thread_; | 194 base::Thread io_thread_; |
194 scoped_refptr<TestURLRequestContextGetter> request_context_getter_; | 195 scoped_refptr<TestURLRequestContextGetter> request_context_getter_; |
195 TestConnectionListener connection_listener_; | 196 TestConnectionListener connection_listener_; |
196 scoped_ptr<EmbeddedTestServer> server_; | 197 std::unique_ptr<EmbeddedTestServer> server_; |
197 }; | 198 }; |
198 | 199 |
199 TEST_P(EmbeddedTestServerTest, GetBaseURL) { | 200 TEST_P(EmbeddedTestServerTest, GetBaseURL) { |
200 ASSERT_TRUE(server_->Start()); | 201 ASSERT_TRUE(server_->Start()); |
201 if (GetParam() == EmbeddedTestServer::TYPE_HTTPS) { | 202 if (GetParam() == EmbeddedTestServer::TYPE_HTTPS) { |
202 EXPECT_EQ(base::StringPrintf("https://127.0.0.1:%u/", server_->port()), | 203 EXPECT_EQ(base::StringPrintf("https://127.0.0.1:%u/", server_->port()), |
203 server_->base_url().spec()); | 204 server_->base_url().spec()); |
204 } else { | 205 } else { |
205 EXPECT_EQ(base::StringPrintf("http://127.0.0.1:%u/", server_->port()), | 206 EXPECT_EQ(base::StringPrintf("http://127.0.0.1:%u/", server_->port()), |
206 server_->base_url().spec()); | 207 server_->base_url().spec()); |
(...skipping 29 matching lines...) Expand all Loading... |
236 TEST_P(EmbeddedTestServerTest, RegisterRequestHandler) { | 237 TEST_P(EmbeddedTestServerTest, RegisterRequestHandler) { |
237 server_->RegisterRequestHandler( | 238 server_->RegisterRequestHandler( |
238 base::Bind(&EmbeddedTestServerTest::HandleRequest, | 239 base::Bind(&EmbeddedTestServerTest::HandleRequest, |
239 base::Unretained(this), | 240 base::Unretained(this), |
240 "/test", | 241 "/test", |
241 "<b>Worked!</b>", | 242 "<b>Worked!</b>", |
242 "text/html", | 243 "text/html", |
243 HTTP_OK)); | 244 HTTP_OK)); |
244 ASSERT_TRUE(server_->Start()); | 245 ASSERT_TRUE(server_->Start()); |
245 | 246 |
246 scoped_ptr<URLFetcher> fetcher = | 247 std::unique_ptr<URLFetcher> fetcher = |
247 URLFetcher::Create(server_->GetURL("/test?q=foo"), URLFetcher::GET, this); | 248 URLFetcher::Create(server_->GetURL("/test?q=foo"), URLFetcher::GET, this); |
248 fetcher->SetRequestContext(request_context_getter_.get()); | 249 fetcher->SetRequestContext(request_context_getter_.get()); |
249 fetcher->Start(); | 250 fetcher->Start(); |
250 WaitForResponses(1); | 251 WaitForResponses(1); |
251 | 252 |
252 EXPECT_EQ(URLRequestStatus::SUCCESS, fetcher->GetStatus().status()); | 253 EXPECT_EQ(URLRequestStatus::SUCCESS, fetcher->GetStatus().status()); |
253 EXPECT_EQ(HTTP_OK, fetcher->GetResponseCode()); | 254 EXPECT_EQ(HTTP_OK, fetcher->GetResponseCode()); |
254 EXPECT_EQ("<b>Worked!</b>", GetContentFromFetcher(*fetcher)); | 255 EXPECT_EQ("<b>Worked!</b>", GetContentFromFetcher(*fetcher)); |
255 EXPECT_EQ("text/html", GetContentTypeFromFetcher(*fetcher)); | 256 EXPECT_EQ("text/html", GetContentTypeFromFetcher(*fetcher)); |
256 | 257 |
257 EXPECT_EQ("/test?q=foo", request_relative_url_); | 258 EXPECT_EQ("/test?q=foo", request_relative_url_); |
258 } | 259 } |
259 | 260 |
260 TEST_P(EmbeddedTestServerTest, ServeFilesFromDirectory) { | 261 TEST_P(EmbeddedTestServerTest, ServeFilesFromDirectory) { |
261 base::FilePath src_dir; | 262 base::FilePath src_dir; |
262 ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &src_dir)); | 263 ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &src_dir)); |
263 server_->ServeFilesFromDirectory( | 264 server_->ServeFilesFromDirectory( |
264 src_dir.AppendASCII("net").AppendASCII("data")); | 265 src_dir.AppendASCII("net").AppendASCII("data")); |
265 ASSERT_TRUE(server_->Start()); | 266 ASSERT_TRUE(server_->Start()); |
266 | 267 |
267 scoped_ptr<URLFetcher> fetcher = | 268 std::unique_ptr<URLFetcher> fetcher = |
268 URLFetcher::Create(server_->GetURL("/test.html"), URLFetcher::GET, this); | 269 URLFetcher::Create(server_->GetURL("/test.html"), URLFetcher::GET, this); |
269 fetcher->SetRequestContext(request_context_getter_.get()); | 270 fetcher->SetRequestContext(request_context_getter_.get()); |
270 fetcher->Start(); | 271 fetcher->Start(); |
271 WaitForResponses(1); | 272 WaitForResponses(1); |
272 | 273 |
273 EXPECT_EQ(URLRequestStatus::SUCCESS, fetcher->GetStatus().status()); | 274 EXPECT_EQ(URLRequestStatus::SUCCESS, fetcher->GetStatus().status()); |
274 EXPECT_EQ(HTTP_OK, fetcher->GetResponseCode()); | 275 EXPECT_EQ(HTTP_OK, fetcher->GetResponseCode()); |
275 EXPECT_EQ("<p>Hello World!</p>", GetContentFromFetcher(*fetcher)); | 276 EXPECT_EQ("<p>Hello World!</p>", GetContentFromFetcher(*fetcher)); |
276 EXPECT_EQ("text/html", GetContentTypeFromFetcher(*fetcher)); | 277 EXPECT_EQ("text/html", GetContentTypeFromFetcher(*fetcher)); |
277 } | 278 } |
278 | 279 |
279 TEST_P(EmbeddedTestServerTest, DefaultNotFoundResponse) { | 280 TEST_P(EmbeddedTestServerTest, DefaultNotFoundResponse) { |
280 ASSERT_TRUE(server_->Start()); | 281 ASSERT_TRUE(server_->Start()); |
281 | 282 |
282 scoped_ptr<URLFetcher> fetcher = URLFetcher::Create( | 283 std::unique_ptr<URLFetcher> fetcher = URLFetcher::Create( |
283 server_->GetURL("/non-existent"), URLFetcher::GET, this); | 284 server_->GetURL("/non-existent"), URLFetcher::GET, this); |
284 fetcher->SetRequestContext(request_context_getter_.get()); | 285 fetcher->SetRequestContext(request_context_getter_.get()); |
285 | 286 |
286 fetcher->Start(); | 287 fetcher->Start(); |
287 WaitForResponses(1); | 288 WaitForResponses(1); |
288 EXPECT_EQ(URLRequestStatus::SUCCESS, fetcher->GetStatus().status()); | 289 EXPECT_EQ(URLRequestStatus::SUCCESS, fetcher->GetStatus().status()); |
289 EXPECT_EQ(HTTP_NOT_FOUND, fetcher->GetResponseCode()); | 290 EXPECT_EQ(HTTP_NOT_FOUND, fetcher->GetResponseCode()); |
290 } | 291 } |
291 | 292 |
292 TEST_P(EmbeddedTestServerTest, ConnectionListenerAccept) { | 293 TEST_P(EmbeddedTestServerTest, ConnectionListenerAccept) { |
293 ASSERT_TRUE(server_->Start()); | 294 ASSERT_TRUE(server_->Start()); |
294 | 295 |
295 TestNetLog net_log; | 296 TestNetLog net_log; |
296 net::AddressList address_list; | 297 net::AddressList address_list; |
297 EXPECT_TRUE(server_->GetAddressList(&address_list)); | 298 EXPECT_TRUE(server_->GetAddressList(&address_list)); |
298 | 299 |
299 scoped_ptr<StreamSocket> socket = | 300 std::unique_ptr<StreamSocket> socket = |
300 ClientSocketFactory::GetDefaultFactory()->CreateTransportClientSocket( | 301 ClientSocketFactory::GetDefaultFactory()->CreateTransportClientSocket( |
301 address_list, NULL, &net_log, NetLog::Source()); | 302 address_list, NULL, &net_log, NetLog::Source()); |
302 TestCompletionCallback callback; | 303 TestCompletionCallback callback; |
303 ASSERT_EQ(OK, callback.GetResult(socket->Connect(callback.callback()))); | 304 ASSERT_EQ(OK, callback.GetResult(socket->Connect(callback.callback()))); |
304 | 305 |
305 connection_listener_.WaitUntilFirstConnectionAccepted(); | 306 connection_listener_.WaitUntilFirstConnectionAccepted(); |
306 | 307 |
307 EXPECT_EQ(1u, connection_listener_.SocketAcceptedCount()); | 308 EXPECT_EQ(1u, connection_listener_.SocketAcceptedCount()); |
308 EXPECT_FALSE(connection_listener_.DidReadFromSocket()); | 309 EXPECT_FALSE(connection_listener_.DidReadFromSocket()); |
309 } | 310 } |
310 | 311 |
311 TEST_P(EmbeddedTestServerTest, ConnectionListenerRead) { | 312 TEST_P(EmbeddedTestServerTest, ConnectionListenerRead) { |
312 ASSERT_TRUE(server_->Start()); | 313 ASSERT_TRUE(server_->Start()); |
313 | 314 |
314 scoped_ptr<URLFetcher> fetcher = URLFetcher::Create( | 315 std::unique_ptr<URLFetcher> fetcher = URLFetcher::Create( |
315 server_->GetURL("/non-existent"), URLFetcher::GET, this); | 316 server_->GetURL("/non-existent"), URLFetcher::GET, this); |
316 fetcher->SetRequestContext(request_context_getter_.get()); | 317 fetcher->SetRequestContext(request_context_getter_.get()); |
317 | 318 |
318 fetcher->Start(); | 319 fetcher->Start(); |
319 WaitForResponses(1); | 320 WaitForResponses(1); |
320 EXPECT_EQ(1u, connection_listener_.SocketAcceptedCount()); | 321 EXPECT_EQ(1u, connection_listener_.SocketAcceptedCount()); |
321 EXPECT_TRUE(connection_listener_.DidReadFromSocket()); | 322 EXPECT_TRUE(connection_listener_.DidReadFromSocket()); |
322 } | 323 } |
323 | 324 |
324 TEST_P(EmbeddedTestServerTest, ConcurrentFetches) { | 325 TEST_P(EmbeddedTestServerTest, ConcurrentFetches) { |
(...skipping 13 matching lines...) Expand all Loading... |
338 HTTP_OK)); | 339 HTTP_OK)); |
339 server_->RegisterRequestHandler( | 340 server_->RegisterRequestHandler( |
340 base::Bind(&EmbeddedTestServerTest::HandleRequest, | 341 base::Bind(&EmbeddedTestServerTest::HandleRequest, |
341 base::Unretained(this), | 342 base::Unretained(this), |
342 "/test3", | 343 "/test3", |
343 "No chocolates", | 344 "No chocolates", |
344 "text/plain", | 345 "text/plain", |
345 HTTP_NOT_FOUND)); | 346 HTTP_NOT_FOUND)); |
346 ASSERT_TRUE(server_->Start()); | 347 ASSERT_TRUE(server_->Start()); |
347 | 348 |
348 scoped_ptr<URLFetcher> fetcher1 = | 349 std::unique_ptr<URLFetcher> fetcher1 = |
349 URLFetcher::Create(server_->GetURL("/test1"), URLFetcher::GET, this); | 350 URLFetcher::Create(server_->GetURL("/test1"), URLFetcher::GET, this); |
350 fetcher1->SetRequestContext(request_context_getter_.get()); | 351 fetcher1->SetRequestContext(request_context_getter_.get()); |
351 scoped_ptr<URLFetcher> fetcher2 = | 352 std::unique_ptr<URLFetcher> fetcher2 = |
352 URLFetcher::Create(server_->GetURL("/test2"), URLFetcher::GET, this); | 353 URLFetcher::Create(server_->GetURL("/test2"), URLFetcher::GET, this); |
353 fetcher2->SetRequestContext(request_context_getter_.get()); | 354 fetcher2->SetRequestContext(request_context_getter_.get()); |
354 scoped_ptr<URLFetcher> fetcher3 = | 355 std::unique_ptr<URLFetcher> fetcher3 = |
355 URLFetcher::Create(server_->GetURL("/test3"), URLFetcher::GET, this); | 356 URLFetcher::Create(server_->GetURL("/test3"), URLFetcher::GET, this); |
356 fetcher3->SetRequestContext(request_context_getter_.get()); | 357 fetcher3->SetRequestContext(request_context_getter_.get()); |
357 | 358 |
358 // Fetch the three URLs concurrently. | 359 // Fetch the three URLs concurrently. |
359 fetcher1->Start(); | 360 fetcher1->Start(); |
360 fetcher2->Start(); | 361 fetcher2->Start(); |
361 fetcher3->Start(); | 362 fetcher3->Start(); |
362 WaitForResponses(3); | 363 WaitForResponses(3); |
363 | 364 |
364 EXPECT_EQ(URLRequestStatus::SUCCESS, fetcher1->GetStatus().status()); | 365 EXPECT_EQ(URLRequestStatus::SUCCESS, fetcher1->GetStatus().status()); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
416 base::Bind(send, "echo", | 417 base::Bind(send, "echo", |
417 base::Bind(&InfiniteResponse::SendInfinite, | 418 base::Bind(&InfiniteResponse::SendInfinite, |
418 weak_ptr_factory_.GetWeakPtr(), send))); | 419 weak_ptr_factory_.GetWeakPtr(), send))); |
419 } | 420 } |
420 | 421 |
421 base::WeakPtrFactory<InfiniteResponse> weak_ptr_factory_; | 422 base::WeakPtrFactory<InfiniteResponse> weak_ptr_factory_; |
422 | 423 |
423 DISALLOW_COPY_AND_ASSIGN(InfiniteResponse); | 424 DISALLOW_COPY_AND_ASSIGN(InfiniteResponse); |
424 }; | 425 }; |
425 | 426 |
426 scoped_ptr<HttpResponse> HandleInfiniteRequest(const HttpRequest& request) { | 427 std::unique_ptr<HttpResponse> HandleInfiniteRequest( |
427 return make_scoped_ptr(new InfiniteResponse); | 428 const HttpRequest& request) { |
| 429 return base::WrapUnique(new InfiniteResponse); |
428 } | 430 } |
429 } | 431 } |
430 | 432 |
431 // Tests the case the connection is closed while the server is sending a | 433 // Tests the case the connection is closed while the server is sending a |
432 // response. May non-deterministically end up at one of three paths | 434 // response. May non-deterministically end up at one of three paths |
433 // (Discover the close event synchronously, asynchronously, or server | 435 // (Discover the close event synchronously, asynchronously, or server |
434 // shutting down before it is discovered). | 436 // shutting down before it is discovered). |
435 TEST_P(EmbeddedTestServerTest, CloseDuringWrite) { | 437 TEST_P(EmbeddedTestServerTest, CloseDuringWrite) { |
436 CancelRequestDelegate cancel_delegate; | 438 CancelRequestDelegate cancel_delegate; |
437 TestURLRequestContext context; | 439 TestURLRequestContext context; |
438 cancel_delegate.set_cancel_in_response_started(true); | 440 cancel_delegate.set_cancel_in_response_started(true); |
439 server_->RegisterRequestHandler(base::Bind( | 441 server_->RegisterRequestHandler(base::Bind( |
440 &HandlePrefixedRequest, "/infinite", base::Bind(&HandleInfiniteRequest))); | 442 &HandlePrefixedRequest, "/infinite", base::Bind(&HandleInfiniteRequest))); |
441 ASSERT_TRUE(server_->Start()); | 443 ASSERT_TRUE(server_->Start()); |
442 | 444 |
443 scoped_ptr<URLRequest> request = context.CreateRequest( | 445 std::unique_ptr<URLRequest> request = context.CreateRequest( |
444 server_->GetURL("/infinite"), DEFAULT_PRIORITY, &cancel_delegate); | 446 server_->GetURL("/infinite"), DEFAULT_PRIORITY, &cancel_delegate); |
445 request->Start(); | 447 request->Start(); |
446 cancel_delegate.WaitUntilDone(); | 448 cancel_delegate.WaitUntilDone(); |
447 } | 449 } |
448 | 450 |
449 struct CertificateValuesEntry { | 451 struct CertificateValuesEntry { |
450 const EmbeddedTestServer::ServerCertificate server_cert; | 452 const EmbeddedTestServer::ServerCertificate server_cert; |
451 const bool is_expired; | 453 const bool is_expired; |
452 const char* common_name; | 454 const char* common_name; |
453 const char* root; | 455 const char* root; |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
527 | 529 |
528 // base::PlatformThread::Delegate: | 530 // base::PlatformThread::Delegate: |
529 void ThreadMain() override { | 531 void ThreadMain() override { |
530 scoped_refptr<base::SingleThreadTaskRunner> io_thread_runner; | 532 scoped_refptr<base::SingleThreadTaskRunner> io_thread_runner; |
531 base::Thread io_thread("io_thread"); | 533 base::Thread io_thread("io_thread"); |
532 base::Thread::Options thread_options; | 534 base::Thread::Options thread_options; |
533 thread_options.message_loop_type = base::MessageLoop::TYPE_IO; | 535 thread_options.message_loop_type = base::MessageLoop::TYPE_IO; |
534 ASSERT_TRUE(io_thread.StartWithOptions(thread_options)); | 536 ASSERT_TRUE(io_thread.StartWithOptions(thread_options)); |
535 io_thread_runner = io_thread.task_runner(); | 537 io_thread_runner = io_thread.task_runner(); |
536 | 538 |
537 scoped_ptr<base::MessageLoop> loop; | 539 std::unique_ptr<base::MessageLoop> loop; |
538 if (message_loop_present_on_initialize_) | 540 if (message_loop_present_on_initialize_) |
539 loop.reset(new base::MessageLoopForIO); | 541 loop.reset(new base::MessageLoopForIO); |
540 | 542 |
541 // Create the test server instance. | 543 // Create the test server instance. |
542 EmbeddedTestServer server(type_); | 544 EmbeddedTestServer server(type_); |
543 base::FilePath src_dir; | 545 base::FilePath src_dir; |
544 ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &src_dir)); | 546 ASSERT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &src_dir)); |
545 ASSERT_TRUE(server.Start()); | 547 ASSERT_TRUE(server.Start()); |
546 | 548 |
547 // Make a request and wait for the reply. | 549 // Make a request and wait for the reply. |
548 if (!loop) | 550 if (!loop) |
549 loop.reset(new base::MessageLoopForIO); | 551 loop.reset(new base::MessageLoopForIO); |
550 | 552 |
551 scoped_ptr<URLFetcher> fetcher = | 553 std::unique_ptr<URLFetcher> fetcher = |
552 URLFetcher::Create(server.GetURL("/test?q=foo"), URLFetcher::GET, this); | 554 URLFetcher::Create(server.GetURL("/test?q=foo"), URLFetcher::GET, this); |
553 fetcher->SetRequestContext( | 555 fetcher->SetRequestContext( |
554 new TestURLRequestContextGetter(loop->task_runner())); | 556 new TestURLRequestContextGetter(loop->task_runner())); |
555 fetcher->Start(); | 557 fetcher->Start(); |
556 loop->Run(); | 558 loop->Run(); |
557 fetcher.reset(); | 559 fetcher.reset(); |
558 | 560 |
559 // Shut down. | 561 // Shut down. |
560 if (message_loop_present_on_shutdown_) | 562 if (message_loop_present_on_shutdown_) |
561 loop.reset(); | 563 loop.reset(); |
(...skipping 29 matching lines...) Expand all Loading... |
591 INSTANTIATE_TEST_CASE_P( | 593 INSTANTIATE_TEST_CASE_P( |
592 EmbeddedTestServerThreadingTestInstantiation, | 594 EmbeddedTestServerThreadingTestInstantiation, |
593 EmbeddedTestServerThreadingTest, | 595 EmbeddedTestServerThreadingTest, |
594 testing::Combine(testing::Bool(), | 596 testing::Combine(testing::Bool(), |
595 testing::Bool(), | 597 testing::Bool(), |
596 testing::Values(EmbeddedTestServer::TYPE_HTTP, | 598 testing::Values(EmbeddedTestServer::TYPE_HTTP, |
597 EmbeddedTestServer::TYPE_HTTPS))); | 599 EmbeddedTestServer::TYPE_HTTPS))); |
598 | 600 |
599 } // namespace test_server | 601 } // namespace test_server |
600 } // namespace net | 602 } // namespace net |
OLD | NEW |