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

Side by Side Diff: net/http/http_pipelined_network_transaction_unittest.cc

Issue 9764003: Increase number of max sockets per group for WebSocket connections. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add NUM_SOCKET_POOL_TYPES. Created 8 years, 9 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 <string> 5 #include <string>
6 6
7 #include "base/memory/ref_counted.h" 7 #include "base/memory/ref_counted.h"
8 #include "base/memory/scoped_vector.h" 8 #include "base/memory/scoped_vector.h"
9 #include "base/stringprintf.h" 9 #include "base/stringprintf.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
11 #include "net/base/address_list.h" 11 #include "net/base/address_list.h"
12 #include "net/base/host_cache.h" 12 #include "net/base/host_cache.h"
13 #include "net/base/io_buffer.h" 13 #include "net/base/io_buffer.h"
14 #include "net/base/mock_host_resolver.h" 14 #include "net/base/mock_host_resolver.h"
15 #include "net/base/net_errors.h" 15 #include "net/base/net_errors.h"
16 #include "net/base/net_util.h" 16 #include "net/base/net_util.h"
17 #include "net/base/request_priority.h" 17 #include "net/base/request_priority.h"
18 #include "net/base/ssl_config_service_defaults.h" 18 #include "net/base/ssl_config_service_defaults.h"
19 #include "net/http/http_auth_handler_mock.h" 19 #include "net/http/http_auth_handler_mock.h"
20 #include "net/http/http_network_session.h" 20 #include "net/http/http_network_session.h"
21 #include "net/http/http_network_transaction.h" 21 #include "net/http/http_network_transaction.h"
22 #include "net/http/http_request_info.h" 22 #include "net/http/http_request_info.h"
23 #include "net/http/http_server_properties_impl.h" 23 #include "net/http/http_server_properties_impl.h"
24 #include "net/proxy/proxy_config_service.h" 24 #include "net/proxy/proxy_config_service.h"
25 #include "net/proxy/proxy_service.h" 25 #include "net/proxy/proxy_service.h"
26 #include "net/socket/client_socket_handle.h" 26 #include "net/socket/client_socket_handle.h"
27 #include "net/socket/client_socket_pool_histograms.h" 27 #include "net/socket/client_socket_pool_histograms.h"
28 #include "net/socket/client_socket_pool_manager.h"
28 #include "net/socket/socket_test_util.h" 29 #include "net/socket/socket_test_util.h"
29 #include "testing/gmock/include/gmock/gmock.h" 30 #include "testing/gmock/include/gmock/gmock.h"
30 #include "testing/gtest/include/gtest/gtest.h" 31 #include "testing/gtest/include/gtest/gtest.h"
31 32
32 using testing::StrEq; 33 using testing::StrEq;
33 34
34 namespace net { 35 namespace net {
35 36
36 namespace { 37 namespace {
37 38
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 MockRead(SYNCHRONOUS, 5, "HTTP/1.1 200 OK\r\n"), 273 MockRead(SYNCHRONOUS, 5, "HTTP/1.1 200 OK\r\n"),
273 MockRead(SYNCHRONOUS, 6, "Content-Length: 8\r\n\r\n"), 274 MockRead(SYNCHRONOUS, 6, "Content-Length: 8\r\n\r\n"),
274 MockRead(SYNCHRONOUS, 7, "two.html"), 275 MockRead(SYNCHRONOUS, 7, "two.html"),
275 }; 276 };
276 AddExpectedConnection(reads, arraysize(reads), writes, arraysize(writes)); 277 AddExpectedConnection(reads, arraysize(reads), writes, arraysize(writes));
277 278
278 CompleteTwoRequests(0, 5); 279 CompleteTwoRequests(0, 5);
279 } 280 }
280 281
281 TEST_F(HttpPipelinedNetworkTransactionTest, ReusesOnSpaceAvailable) { 282 TEST_F(HttpPipelinedNetworkTransactionTest, ReusesOnSpaceAvailable) {
282 int old_max_sockets = ClientSocketPoolManager::max_sockets_per_group(); 283 int old_max_sockets = ClientSocketPoolManager::max_sockets_per_group(
283 ClientSocketPoolManager::set_max_sockets_per_group(1); 284 HttpNetworkSession::NORMAL_SOCKET_POOL);
285 ClientSocketPoolManager::set_max_sockets_per_group(
286 HttpNetworkSession::NORMAL_SOCKET_POOL, 1);
284 Initialize(false); 287 Initialize(false);
285 288
286 MockWrite writes[] = { 289 MockWrite writes[] = {
287 MockWrite(SYNCHRONOUS, 0, "GET /one.html HTTP/1.1\r\n" 290 MockWrite(SYNCHRONOUS, 0, "GET /one.html HTTP/1.1\r\n"
288 "Host: localhost\r\n" 291 "Host: localhost\r\n"
289 "Connection: keep-alive\r\n\r\n"), 292 "Connection: keep-alive\r\n\r\n"),
290 MockWrite(SYNCHRONOUS, 4, "GET /two.html HTTP/1.1\r\n" 293 MockWrite(SYNCHRONOUS, 4, "GET /two.html HTTP/1.1\r\n"
291 "Host: localhost\r\n" 294 "Host: localhost\r\n"
292 "Connection: keep-alive\r\n\r\n"), 295 "Connection: keep-alive\r\n\r\n"),
293 MockWrite(SYNCHRONOUS, 7, "GET /three.html HTTP/1.1\r\n" 296 MockWrite(SYNCHRONOUS, 7, "GET /three.html HTTP/1.1\r\n"
(...skipping 14 matching lines...) Expand all
308 MockRead(SYNCHRONOUS, 10, "Content-Length: 10\r\n\r\n"), 311 MockRead(SYNCHRONOUS, 10, "Content-Length: 10\r\n\r\n"),
309 MockRead(SYNCHRONOUS, 11, "three.html"), 312 MockRead(SYNCHRONOUS, 11, "three.html"),
310 MockRead(SYNCHRONOUS, 13, "HTTP/1.1 200 OK\r\n"), 313 MockRead(SYNCHRONOUS, 13, "HTTP/1.1 200 OK\r\n"),
311 MockRead(SYNCHRONOUS, 14, "Content-Length: 9\r\n\r\n"), 314 MockRead(SYNCHRONOUS, 14, "Content-Length: 9\r\n\r\n"),
312 MockRead(SYNCHRONOUS, 15, "four.html"), 315 MockRead(SYNCHRONOUS, 15, "four.html"),
313 }; 316 };
314 AddExpectedConnection(reads, arraysize(reads), writes, arraysize(writes)); 317 AddExpectedConnection(reads, arraysize(reads), writes, arraysize(writes));
315 318
316 CompleteFourRequests(); 319 CompleteFourRequests();
317 320
318 ClientSocketPoolManager::set_max_sockets_per_group(old_max_sockets); 321 ClientSocketPoolManager::set_max_sockets_per_group(
322 HttpNetworkSession::NORMAL_SOCKET_POOL, old_max_sockets);
319 } 323 }
320 324
321 TEST_F(HttpPipelinedNetworkTransactionTest, UnknownSizeEvictsToNewPipeline) { 325 TEST_F(HttpPipelinedNetworkTransactionTest, UnknownSizeEvictsToNewPipeline) {
322 Initialize(false); 326 Initialize(false);
323 327
324 MockWrite writes[] = { 328 MockWrite writes[] = {
325 MockWrite(SYNCHRONOUS, 0, "GET /one.html HTTP/1.1\r\n" 329 MockWrite(SYNCHRONOUS, 0, "GET /one.html HTTP/1.1\r\n"
326 "Host: localhost\r\n" 330 "Host: localhost\r\n"
327 "Connection: keep-alive\r\n\r\n"), 331 "Connection: keep-alive\r\n\r\n"),
328 }; 332 };
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 ExpectResponse("pipelined.html", one_transaction, SYNCHRONOUS); 614 ExpectResponse("pipelined.html", one_transaction, SYNCHRONOUS);
611 615
612 CompleteTwoRequests(1, 4); 616 CompleteTwoRequests(1, 4);
613 } 617 }
614 618
615 TEST_F(HttpPipelinedNetworkTransactionTest, PipelinesImmediatelyIfKnownGood) { 619 TEST_F(HttpPipelinedNetworkTransactionTest, PipelinesImmediatelyIfKnownGood) {
616 // The first request gets us an HTTP/1.1. The next 3 test pipelining. When the 620 // The first request gets us an HTTP/1.1. The next 3 test pipelining. When the
617 // 3rd request completes, we know pipelining is safe. After the first 4 621 // 3rd request completes, we know pipelining is safe. After the first 4
618 // complete, the 5th and 6th should then be immediately sent pipelined on a 622 // complete, the 5th and 6th should then be immediately sent pipelined on a
619 // new HttpPipelinedConnection. 623 // new HttpPipelinedConnection.
620 int old_max_sockets = ClientSocketPoolManager::max_sockets_per_group(); 624 int old_max_sockets = ClientSocketPoolManager::max_sockets_per_group(
621 ClientSocketPoolManager::set_max_sockets_per_group(1); 625 HttpNetworkSession::NORMAL_SOCKET_POOL);
626 ClientSocketPoolManager::set_max_sockets_per_group(
627 HttpNetworkSession::NORMAL_SOCKET_POOL, 1);
622 Initialize(false); 628 Initialize(false);
623 629
624 MockWrite writes[] = { 630 MockWrite writes[] = {
625 MockWrite(SYNCHRONOUS, 0, "GET /one.html HTTP/1.1\r\n" 631 MockWrite(SYNCHRONOUS, 0, "GET /one.html HTTP/1.1\r\n"
626 "Host: localhost\r\n" 632 "Host: localhost\r\n"
627 "Connection: keep-alive\r\n\r\n"), 633 "Connection: keep-alive\r\n\r\n"),
628 MockWrite(SYNCHRONOUS, 4, "GET /two.html HTTP/1.1\r\n" 634 MockWrite(SYNCHRONOUS, 4, "GET /two.html HTTP/1.1\r\n"
629 "Host: localhost\r\n" 635 "Host: localhost\r\n"
630 "Connection: keep-alive\r\n\r\n"), 636 "Connection: keep-alive\r\n\r\n"),
631 MockWrite(SYNCHRONOUS, 7, "GET /three.html HTTP/1.1\r\n" 637 MockWrite(SYNCHRONOUS, 7, "GET /three.html HTTP/1.1\r\n"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 688
683 data_vector_[0]->RunFor(3); 689 data_vector_[0]->RunFor(3);
684 EXPECT_EQ(OK, second_one_callback.WaitForResult()); 690 EXPECT_EQ(OK, second_one_callback.WaitForResult());
685 data_vector_[0]->StopAfter(100); 691 data_vector_[0]->StopAfter(100);
686 ExpectResponse("second-pipeline-one.html", second_one_transaction, 692 ExpectResponse("second-pipeline-one.html", second_one_transaction,
687 SYNCHRONOUS); 693 SYNCHRONOUS);
688 EXPECT_EQ(OK, second_two_callback.WaitForResult()); 694 EXPECT_EQ(OK, second_two_callback.WaitForResult());
689 ExpectResponse("second-pipeline-two.html", second_two_transaction, 695 ExpectResponse("second-pipeline-two.html", second_two_transaction,
690 SYNCHRONOUS); 696 SYNCHRONOUS);
691 697
692 ClientSocketPoolManager::set_max_sockets_per_group(old_max_sockets); 698 ClientSocketPoolManager::set_max_sockets_per_group(
699 HttpNetworkSession::NORMAL_SOCKET_POOL, old_max_sockets);
693 } 700 }
694 701
695 class DataRunnerObserver : public MessageLoop::TaskObserver { 702 class DataRunnerObserver : public MessageLoop::TaskObserver {
696 public: 703 public:
697 DataRunnerObserver(DeterministicSocketData* data, int run_before_task) 704 DataRunnerObserver(DeterministicSocketData* data, int run_before_task)
698 : data_(data), 705 : data_(data),
699 run_before_task_(run_before_task), 706 run_before_task_(run_before_task),
700 current_task_(0) { } 707 current_task_(0) { }
701 708
702 virtual void WillProcessTask(base::TimeTicks) OVERRIDE { 709 virtual void WillProcessTask(base::TimeTicks) OVERRIDE {
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
975 EXPECT_EQ(ERR_PIPELINE_EVICTION, two_callback.WaitForResult()); 982 EXPECT_EQ(ERR_PIPELINE_EVICTION, two_callback.WaitForResult());
976 two_transaction.reset(); 983 two_transaction.reset();
977 EXPECT_EQ(ERR_PIPELINE_EVICTION, three_callback.WaitForResult()); 984 EXPECT_EQ(ERR_PIPELINE_EVICTION, three_callback.WaitForResult());
978 three_transaction.reset(); 985 three_transaction.reset();
979 EXPECT_EQ(ERR_PIPELINE_EVICTION, four_callback.WaitForResult()); 986 EXPECT_EQ(ERR_PIPELINE_EVICTION, four_callback.WaitForResult());
980 } 987 }
981 988
982 } // anonymous namespace 989 } // anonymous namespace
983 990
984 } // namespace net 991 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698