| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/base/net_log_unittest.h" |
| 6 #include "net/http/http_transaction_unittest.h" |
| 7 #include "net/spdy/spdy_http_stream.h" |
| 5 #include "net/spdy/spdy_network_transaction.h" | 8 #include "net/spdy/spdy_network_transaction.h" |
| 6 | |
| 7 #include "base/basictypes.h" | |
| 8 #include "base/ref_counted.h" | |
| 9 #include "base/string_util.h" | |
| 10 #include "net/base/completion_callback.h" | |
| 11 #include "net/base/mock_host_resolver.h" | |
| 12 #include "net/base/net_log_unittest.h" | |
| 13 #include "net/base/request_priority.h" | |
| 14 #include "net/base/ssl_config_service_defaults.h" | |
| 15 #include "net/base/test_completion_callback.h" | |
| 16 #include "net/base/upload_data.h" | |
| 17 #include "net/http/http_auth_handler_factory.h" | |
| 18 #include "net/http/http_network_session.h" | |
| 19 #include "net/http/http_transaction_unittest.h" | |
| 20 #include "net/proxy/proxy_config_service_fixed.h" | |
| 21 #include "net/socket/socket_test_util.h" | |
| 22 #include "net/spdy/spdy_framer.h" | |
| 23 #include "net/spdy/spdy_http_stream.h" | |
| 24 #include "net/spdy/spdy_protocol.h" | |
| 25 #include "net/spdy/spdy_test_util.h" | 9 #include "net/spdy/spdy_test_util.h" |
| 26 #include "testing/platform_test.h" | 10 #include "testing/platform_test.h" |
| 27 | 11 |
| 28 //----------------------------------------------------------------------------- | 12 //----------------------------------------------------------------------------- |
| 29 | 13 |
| 30 namespace net { | 14 namespace net { |
| 31 | 15 |
| 32 class SpdyNetworkTransactionTest : public PlatformTest { | 16 class SpdyNetworkTransactionTest : public PlatformTest { |
| 33 protected: | 17 protected: |
| 34 virtual void SetUp() { | 18 virtual void SetUp() { |
| (...skipping 20 matching lines...) Expand all Loading... |
| 55 HttpResponseInfo response_info; | 39 HttpResponseInfo response_info; |
| 56 }; | 40 }; |
| 57 | 41 |
| 58 void EnableCompression(bool enabled) { | 42 void EnableCompression(bool enabled) { |
| 59 spdy::SpdyFramer::set_enable_compression_default(enabled); | 43 spdy::SpdyFramer::set_enable_compression_default(enabled); |
| 60 } | 44 } |
| 61 | 45 |
| 62 class StartTransactionCallback; | 46 class StartTransactionCallback; |
| 63 class DeleteSessionCallback; | 47 class DeleteSessionCallback; |
| 64 | 48 |
| 65 // Helper to manage the lifetimes of the dependencies for a | |
| 66 // HttpNetworkTransaction. | |
| 67 class SessionDependencies { | |
| 68 public: | |
| 69 // Default set of dependencies -- "null" proxy service. | |
| 70 SessionDependencies() | |
| 71 : host_resolver(new MockHostResolver), | |
| 72 proxy_service(ProxyService::CreateNull()), | |
| 73 ssl_config_service(new SSLConfigServiceDefaults), | |
| 74 http_auth_handler_factory(HttpAuthHandlerFactory::CreateDefault()), | |
| 75 spdy_session_pool(new SpdySessionPool()) { | |
| 76 // Note: The CancelledTransaction test does cleanup by running all | |
| 77 // tasks in the message loop (RunAllPending). Unfortunately, that | |
| 78 // doesn't clean up tasks on the host resolver thread; and | |
| 79 // TCPConnectJob is currently not cancellable. Using synchronous | |
| 80 // lookups allows the test to shutdown cleanly. Until we have | |
| 81 // cancellable TCPConnectJobs, use synchronous lookups. | |
| 82 host_resolver->set_synchronous_mode(true); | |
| 83 } | |
| 84 | |
| 85 // Custom proxy service dependency. | |
| 86 explicit SessionDependencies(ProxyService* proxy_service) | |
| 87 : host_resolver(new MockHostResolver), | |
| 88 proxy_service(proxy_service), | |
| 89 ssl_config_service(new SSLConfigServiceDefaults), | |
| 90 http_auth_handler_factory(HttpAuthHandlerFactory::CreateDefault()), | |
| 91 spdy_session_pool(new SpdySessionPool()) {} | |
| 92 | |
| 93 scoped_refptr<MockHostResolverBase> host_resolver; | |
| 94 scoped_refptr<ProxyService> proxy_service; | |
| 95 scoped_refptr<SSLConfigService> ssl_config_service; | |
| 96 MockClientSocketFactory socket_factory; | |
| 97 scoped_ptr<HttpAuthHandlerFactory> http_auth_handler_factory; | |
| 98 scoped_refptr<SpdySessionPool> spdy_session_pool; | |
| 99 }; | |
| 100 | |
| 101 static HttpNetworkSession* CreateSession(SessionDependencies* session_deps) { | |
| 102 return new HttpNetworkSession(session_deps->host_resolver, | |
| 103 session_deps->proxy_service, | |
| 104 &session_deps->socket_factory, | |
| 105 session_deps->ssl_config_service, | |
| 106 session_deps->spdy_session_pool, | |
| 107 session_deps->http_auth_handler_factory.get(), | |
| 108 NULL, | |
| 109 NULL); | |
| 110 } | |
| 111 | |
| 112 // A helper class that handles all the initial npn/ssl setup. | 49 // A helper class that handles all the initial npn/ssl setup. |
| 113 class NormalSpdyTransactionHelper { | 50 class NormalSpdyTransactionHelper { |
| 114 public: | 51 public: |
| 115 NormalSpdyTransactionHelper(const HttpRequestInfo& request, | 52 NormalSpdyTransactionHelper(const HttpRequestInfo& request, |
| 116 const BoundNetLog& log) | 53 const BoundNetLog& log) |
| 117 : request_(request), session_(CreateSession(&session_deps_)), | 54 : request_(request), |
| 55 session_(SpdySessionDependencies::SpdyCreateSession(&session_deps_)), |
| 118 log_(log), add_data_allowed_(true) {} | 56 log_(log), add_data_allowed_(true) {} |
| 119 | 57 |
| 120 void RunPreTestSetup() { | 58 void RunPreTestSetup() { |
| 121 // Disallow future calls to AddData | 59 // Disallow future calls to AddData |
| 122 add_data_allowed_ = false; | 60 add_data_allowed_ = false; |
| 123 | 61 |
| 124 // Set up http data. | 62 // Set up http data. |
| 125 MockRead data_reads[] = { | 63 MockRead data_reads[] = { |
| 126 MockRead("HTTP/1.1 200 OK\r\n"), | 64 MockRead("HTTP/1.1 200 OK\r\n"), |
| 127 MockRead("Alternate-Protocol: 443:npn-spdy/1\r\n\r\n"), | 65 MockRead("Alternate-Protocol: 443:npn-spdy/1\r\n\r\n"), |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 258 HttpNetworkTransaction* trans() { return trans_.get(); } | 196 HttpNetworkTransaction* trans() { return trans_.get(); } |
| 259 void ResetTrans() { trans_.reset(); } | 197 void ResetTrans() { trans_.reset(); } |
| 260 TransactionHelperResult& output() { return output_; } | 198 TransactionHelperResult& output() { return output_; } |
| 261 HttpRequestInfo& request() { return request_; } | 199 HttpRequestInfo& request() { return request_; } |
| 262 scoped_refptr<HttpNetworkSession>& session() { return session_; } | 200 scoped_refptr<HttpNetworkSession>& session() { return session_; } |
| 263 | 201 |
| 264 private: | 202 private: |
| 265 typedef std::vector<StaticSocketDataProvider*> DataVector; | 203 typedef std::vector<StaticSocketDataProvider*> DataVector; |
| 266 typedef std::vector<linked_ptr<SSLSocketDataProvider> > SSLVector; | 204 typedef std::vector<linked_ptr<SSLSocketDataProvider> > SSLVector; |
| 267 HttpRequestInfo request_; | 205 HttpRequestInfo request_; |
| 268 SessionDependencies session_deps_; | 206 SpdySessionDependencies session_deps_; |
| 269 scoped_refptr<HttpNetworkSession> session_; | 207 scoped_refptr<HttpNetworkSession> session_; |
| 270 TransactionHelperResult output_; | 208 TransactionHelperResult output_; |
| 271 scoped_ptr<StaticSocketDataProvider> first_transaction_; | 209 scoped_ptr<StaticSocketDataProvider> first_transaction_; |
| 272 SSLVector ssl_vector_; | 210 SSLVector ssl_vector_; |
| 273 TestCompletionCallback callback; | 211 TestCompletionCallback callback; |
| 274 scoped_ptr<HttpNetworkTransaction> trans_; | 212 scoped_ptr<HttpNetworkTransaction> trans_; |
| 275 scoped_ptr<HttpNetworkTransaction> trans_http_; | 213 scoped_ptr<HttpNetworkTransaction> trans_http_; |
| 276 DataVector data_vector_; | 214 DataVector data_vector_; |
| 277 const BoundNetLog& log_; | 215 const BoundNetLog& log_; |
| 278 bool add_data_allowed_; | 216 bool add_data_allowed_; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 295 | 233 |
| 296 private: | 234 private: |
| 297 bool google_get_request_initialized_; | 235 bool google_get_request_initialized_; |
| 298 HttpRequestInfo google_get_request_; | 236 HttpRequestInfo google_get_request_; |
| 299 }; | 237 }; |
| 300 | 238 |
| 301 //----------------------------------------------------------------------------- | 239 //----------------------------------------------------------------------------- |
| 302 | 240 |
| 303 // Verify HttpNetworkTransaction constructor. | 241 // Verify HttpNetworkTransaction constructor. |
| 304 TEST_F(SpdyNetworkTransactionTest, Constructor) { | 242 TEST_F(SpdyNetworkTransactionTest, Constructor) { |
| 305 SessionDependencies session_deps; | 243 SpdySessionDependencies session_deps; |
| 306 scoped_refptr<HttpNetworkSession> session = | 244 scoped_refptr<HttpNetworkSession> session = |
| 307 CreateSession(&session_deps); | 245 SpdySessionDependencies::SpdyCreateSession(&session_deps); |
| 308 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); | 246 scoped_ptr<HttpTransaction> trans(new HttpNetworkTransaction(session)); |
| 309 } | 247 } |
| 310 | 248 |
| 311 TEST_F(SpdyNetworkTransactionTest, Get) { | 249 TEST_F(SpdyNetworkTransactionTest, Get) { |
| 312 // Construct the request. | 250 // Construct the request. |
| 313 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); | 251 scoped_ptr<spdy::SpdyFrame> req(ConstructSpdyGet(NULL, 0, false, 1, LOWEST)); |
| 314 MockWrite writes[] = { CreateMockWrite(*req) }; | 252 MockWrite writes[] = { CreateMockWrite(*req) }; |
| 315 | 253 |
| 316 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); | 254 scoped_ptr<spdy::SpdyFrame> resp(ConstructSpdyGetSynReply(NULL, 0, 1)); |
| 317 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); | 255 scoped_ptr<spdy::SpdyFrame> body(ConstructSpdyBodyFrame(1, true)); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 378 MockRead(true, 0, 0), // EOF | 316 MockRead(true, 0, 0), // EOF |
| 379 }; | 317 }; |
| 380 | 318 |
| 381 scoped_refptr<OrderedSocketData> data( | 319 scoped_refptr<OrderedSocketData> data( |
| 382 new OrderedSocketData(reads, arraysize(reads), | 320 new OrderedSocketData(reads, arraysize(reads), |
| 383 writes, arraysize(writes))); | 321 writes, arraysize(writes))); |
| 384 | 322 |
| 385 BoundNetLog log; | 323 BoundNetLog log; |
| 386 TransactionHelperResult out; | 324 TransactionHelperResult out; |
| 387 { | 325 { |
| 388 SessionDependencies session_deps; | 326 SpdySessionDependencies session_deps; |
| 389 HttpNetworkSession* session = CreateSession(&session_deps); | 327 HttpNetworkSession* session = |
| 328 SpdySessionDependencies::SpdyCreateSession(&session_deps); |
| 390 SpdySession::SetSSLMode(false); | 329 SpdySession::SetSSLMode(false); |
| 391 scoped_ptr<SpdyNetworkTransaction> trans1( | 330 scoped_ptr<SpdyNetworkTransaction> trans1( |
| 392 new SpdyNetworkTransaction(session)); | 331 new SpdyNetworkTransaction(session)); |
| 393 scoped_ptr<SpdyNetworkTransaction> trans2( | 332 scoped_ptr<SpdyNetworkTransaction> trans2( |
| 394 new SpdyNetworkTransaction(session)); | 333 new SpdyNetworkTransaction(session)); |
| 395 scoped_ptr<SpdyNetworkTransaction> trans3( | 334 scoped_ptr<SpdyNetworkTransaction> trans3( |
| 396 new SpdyNetworkTransaction(session)); | 335 new SpdyNetworkTransaction(session)); |
| 397 | 336 |
| 398 session_deps.socket_factory.AddSocketDataProvider(data); | 337 session_deps.socket_factory.AddSocketDataProvider(data); |
| 399 | 338 |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 487 MockRead(true, 0, 0), // EOF | 426 MockRead(true, 0, 0), // EOF |
| 488 }; | 427 }; |
| 489 | 428 |
| 490 scoped_refptr<OrderedSocketData> data( | 429 scoped_refptr<OrderedSocketData> data( |
| 491 new OrderedSocketData(reads, arraysize(reads), | 430 new OrderedSocketData(reads, arraysize(reads), |
| 492 writes, arraysize(writes))); | 431 writes, arraysize(writes))); |
| 493 | 432 |
| 494 BoundNetLog log; | 433 BoundNetLog log; |
| 495 TransactionHelperResult out; | 434 TransactionHelperResult out; |
| 496 { | 435 { |
| 497 SessionDependencies session_deps; | 436 SpdySessionDependencies session_deps; |
| 498 HttpNetworkSession* session = CreateSession(&session_deps); | 437 HttpNetworkSession* session = |
| 438 SpdySessionDependencies::SpdyCreateSession(&session_deps); |
| 499 SpdySession::SetSSLMode(false); | 439 SpdySession::SetSSLMode(false); |
| 500 scoped_ptr<SpdyNetworkTransaction> trans1( | 440 scoped_ptr<SpdyNetworkTransaction> trans1( |
| 501 new SpdyNetworkTransaction(session)); | 441 new SpdyNetworkTransaction(session)); |
| 502 scoped_ptr<SpdyNetworkTransaction> trans2( | 442 scoped_ptr<SpdyNetworkTransaction> trans2( |
| 503 new SpdyNetworkTransaction(session)); | 443 new SpdyNetworkTransaction(session)); |
| 504 scoped_ptr<SpdyNetworkTransaction> trans3( | 444 scoped_ptr<SpdyNetworkTransaction> trans3( |
| 505 new SpdyNetworkTransaction(session)); | 445 new SpdyNetworkTransaction(session)); |
| 506 | 446 |
| 507 session_deps.socket_factory.AddSocketDataProvider(data); | 447 session_deps.socket_factory.AddSocketDataProvider(data); |
| 508 | 448 |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 621 MockRead(true, 0, 0), // EOF | 561 MockRead(true, 0, 0), // EOF |
| 622 }; | 562 }; |
| 623 | 563 |
| 624 scoped_refptr<OrderedSocketData> data( | 564 scoped_refptr<OrderedSocketData> data( |
| 625 new OrderedSocketData(reads, arraysize(reads), | 565 new OrderedSocketData(reads, arraysize(reads), |
| 626 writes, arraysize(writes))); | 566 writes, arraysize(writes))); |
| 627 | 567 |
| 628 BoundNetLog log; | 568 BoundNetLog log; |
| 629 TransactionHelperResult out; | 569 TransactionHelperResult out; |
| 630 { | 570 { |
| 631 SessionDependencies session_deps; | 571 SpdySessionDependencies session_deps; |
| 632 HttpNetworkSession* session = CreateSession(&session_deps); | 572 HttpNetworkSession* session = |
| 573 SpdySessionDependencies::SpdyCreateSession(&session_deps); |
| 633 SpdySession::SetSSLMode(false); | 574 SpdySession::SetSSLMode(false); |
| 634 scoped_ptr<SpdyNetworkTransaction> trans1( | 575 scoped_ptr<SpdyNetworkTransaction> trans1( |
| 635 new SpdyNetworkTransaction(session)); | 576 new SpdyNetworkTransaction(session)); |
| 636 scoped_ptr<SpdyNetworkTransaction> trans2( | 577 scoped_ptr<SpdyNetworkTransaction> trans2( |
| 637 new SpdyNetworkTransaction(session)); | 578 new SpdyNetworkTransaction(session)); |
| 638 scoped_ptr<SpdyNetworkTransaction> trans3( | 579 scoped_ptr<SpdyNetworkTransaction> trans3( |
| 639 new SpdyNetworkTransaction(session)); | 580 new SpdyNetworkTransaction(session)); |
| 640 scoped_ptr<SpdyNetworkTransaction> trans4( | 581 scoped_ptr<SpdyNetworkTransaction> trans4( |
| 641 new SpdyNetworkTransaction(session)); | 582 new SpdyNetworkTransaction(session)); |
| 642 | 583 |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 761 MockRead(true, 0, 0), // EOF | 702 MockRead(true, 0, 0), // EOF |
| 762 }; | 703 }; |
| 763 | 704 |
| 764 scoped_refptr<OrderedSocketData> data( | 705 scoped_refptr<OrderedSocketData> data( |
| 765 new OrderedSocketData(reads, arraysize(reads), | 706 new OrderedSocketData(reads, arraysize(reads), |
| 766 writes, arraysize(writes))); | 707 writes, arraysize(writes))); |
| 767 | 708 |
| 768 BoundNetLog log; | 709 BoundNetLog log; |
| 769 TransactionHelperResult out; | 710 TransactionHelperResult out; |
| 770 { | 711 { |
| 771 SessionDependencies session_deps; | 712 SpdySessionDependencies session_deps; |
| 772 HttpNetworkSession* session = CreateSession(&session_deps); | 713 HttpNetworkSession* session = |
| 714 SpdySessionDependencies::SpdyCreateSession(&session_deps); |
| 773 SpdySession::SetSSLMode(false); | 715 SpdySession::SetSSLMode(false); |
| 774 scoped_ptr<SpdyNetworkTransaction> trans1( | 716 scoped_ptr<SpdyNetworkTransaction> trans1( |
| 775 new SpdyNetworkTransaction(session)); | 717 new SpdyNetworkTransaction(session)); |
| 776 scoped_ptr<SpdyNetworkTransaction> trans2( | 718 scoped_ptr<SpdyNetworkTransaction> trans2( |
| 777 new SpdyNetworkTransaction(session)); | 719 new SpdyNetworkTransaction(session)); |
| 778 scoped_ptr<SpdyNetworkTransaction> trans3( | 720 scoped_ptr<SpdyNetworkTransaction> trans3( |
| 779 new SpdyNetworkTransaction(session)); | 721 new SpdyNetworkTransaction(session)); |
| 780 | 722 |
| 781 session_deps.socket_factory.AddSocketDataProvider(data); | 723 session_deps.socket_factory.AddSocketDataProvider(data); |
| 782 | 724 |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 993 EXPECT_TRUE(response->was_fetched_via_spdy); | 935 EXPECT_TRUE(response->was_fetched_via_spdy); |
| 994 std::string response_data; | 936 std::string response_data; |
| 995 rv = ReadTransaction(trans, &response_data); | 937 rv = ReadTransaction(trans, &response_data); |
| 996 EXPECT_EQ(ERR_SPDY_PROTOCOL_ERROR, rv); | 938 EXPECT_EQ(ERR_SPDY_PROTOCOL_ERROR, rv); |
| 997 | 939 |
| 998 helper.VerifyDataConsumed(); | 940 helper.VerifyDataConsumed(); |
| 999 } | 941 } |
| 1000 | 942 |
| 1001 // Test that WINDOW_UPDATE frames change window_size correctly. | 943 // Test that WINDOW_UPDATE frames change window_size correctly. |
| 1002 TEST_F(SpdyNetworkTransactionTest, WindowUpdate) { | 944 TEST_F(SpdyNetworkTransactionTest, WindowUpdate) { |
| 1003 SessionDependencies session_deps; | 945 SpdySessionDependencies session_deps; |
| 1004 scoped_refptr<HttpNetworkSession> session = CreateSession(&session_deps); | 946 scoped_refptr<HttpNetworkSession> session = |
| 947 SpdySessionDependencies::SpdyCreateSession(&session_deps); |
| 1005 | 948 |
| 1006 // We disable SSL for this test. | 949 // We disable SSL for this test. |
| 1007 SpdySession::SetSSLMode(false); | 950 SpdySession::SetSSLMode(false); |
| 1008 | 951 |
| 1009 // Setup the request | 952 // Setup the request |
| 1010 static const char upload[] = { "hello!" }; | 953 static const char upload[] = { "hello!" }; |
| 1011 HttpRequestInfo request; | 954 HttpRequestInfo request; |
| 1012 request.method = "POST"; | 955 request.method = "POST"; |
| 1013 request.url = GURL("http://www.google.com/"); | 956 request.url = GURL("http://www.google.com/"); |
| 1014 request.upload_data = new UploadData(); | 957 request.upload_data = new UploadData(); |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1055 ASSERT_TRUE(trans->stream_ != NULL); | 998 ASSERT_TRUE(trans->stream_ != NULL); |
| 1056 ASSERT_TRUE(trans->stream_->stream() != NULL); | 999 ASSERT_TRUE(trans->stream_->stream() != NULL); |
| 1057 EXPECT_EQ(spdy::kInitialWindowSize + kDeltaWindowSize, | 1000 EXPECT_EQ(spdy::kInitialWindowSize + kDeltaWindowSize, |
| 1058 trans->stream_->stream()->window_size()); | 1001 trans->stream_->stream()->window_size()); |
| 1059 EXPECT_TRUE(data->at_read_eof()); | 1002 EXPECT_TRUE(data->at_read_eof()); |
| 1060 EXPECT_TRUE(data->at_write_eof()); | 1003 EXPECT_TRUE(data->at_write_eof()); |
| 1061 } | 1004 } |
| 1062 | 1005 |
| 1063 // Test that WINDOW_UPDATE frame causing overflow is handled correctly. | 1006 // Test that WINDOW_UPDATE frame causing overflow is handled correctly. |
| 1064 TEST_F(SpdyNetworkTransactionTest, WindowUpdateOverflow) { | 1007 TEST_F(SpdyNetworkTransactionTest, WindowUpdateOverflow) { |
| 1065 SessionDependencies session_deps; | 1008 SpdySessionDependencies session_deps; |
| 1066 scoped_refptr<HttpNetworkSession> session = CreateSession(&session_deps); | 1009 scoped_refptr<HttpNetworkSession> session = |
| 1010 SpdySessionDependencies::SpdyCreateSession(&session_deps); |
| 1067 | 1011 |
| 1068 // We disable SSL for this test. | 1012 // We disable SSL for this test. |
| 1069 SpdySession::SetSSLMode(false); | 1013 SpdySession::SetSSLMode(false); |
| 1070 | 1014 |
| 1071 // Setup the request | 1015 // Setup the request |
| 1072 static const char upload[] = { "hello!" }; | 1016 static const char upload[] = { "hello!" }; |
| 1073 HttpRequestInfo request; | 1017 HttpRequestInfo request; |
| 1074 request.method = "POST"; | 1018 request.method = "POST"; |
| 1075 request.url = GURL("http://www.google.com/"); | 1019 request.url = GURL("http://www.google.com/"); |
| 1076 request.upload_data = new UploadData(); | 1020 request.upload_data = new UploadData(); |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1149 BoundNetLog()); | 1093 BoundNetLog()); |
| 1150 helper.AddData(&data); | 1094 helper.AddData(&data); |
| 1151 helper.RunPreTestSetup(); | 1095 helper.RunPreTestSetup(); |
| 1152 HttpNetworkTransaction* trans = helper.trans(); | 1096 HttpNetworkTransaction* trans = helper.trans(); |
| 1153 | 1097 |
| 1154 TestCompletionCallback callback; | 1098 TestCompletionCallback callback; |
| 1155 int rv = trans->Start(&CreateGetRequest(), &callback, BoundNetLog()); | 1099 int rv = trans->Start(&CreateGetRequest(), &callback, BoundNetLog()); |
| 1156 EXPECT_EQ(ERR_IO_PENDING, rv); | 1100 EXPECT_EQ(ERR_IO_PENDING, rv); |
| 1157 helper.ResetTrans(); // Cancel the transaction. | 1101 helper.ResetTrans(); // Cancel the transaction. |
| 1158 | 1102 |
| 1159 // Flush the MessageLoop while the SessionDependencies (in particular, the | 1103 // Flush the MessageLoop while the SpdySessionDependencies (in particular, the |
| 1160 // MockClientSocketFactory) are still alive. | 1104 // MockClientSocketFactory) are still alive. |
| 1161 MessageLoop::current()->RunAllPending(); | 1105 MessageLoop::current()->RunAllPending(); |
| 1162 helper.VerifyDataNotConsumed(); | 1106 helper.VerifyDataNotConsumed(); |
| 1163 } | 1107 } |
| 1164 | 1108 |
| 1165 class SpdyNetworkTransactionTest::StartTransactionCallback | 1109 class SpdyNetworkTransactionTest::StartTransactionCallback |
| 1166 : public CallbackRunner< Tuple1<int> > { | 1110 : public CallbackRunner< Tuple1<int> > { |
| 1167 public: | 1111 public: |
| 1168 explicit StartTransactionCallback( | 1112 explicit StartTransactionCallback( |
| 1169 scoped_refptr<HttpNetworkSession>& session, | 1113 scoped_refptr<HttpNetworkSession>& session, |
| (...skipping 713 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1883 } | 1827 } |
| 1884 if (rv > 0) { | 1828 if (rv > 0) { |
| 1885 content.append(buf->data(), rv); | 1829 content.append(buf->data(), rv); |
| 1886 } else if (rv < 0) { | 1830 } else if (rv < 0) { |
| 1887 NOTREACHED(); | 1831 NOTREACHED(); |
| 1888 } | 1832 } |
| 1889 } while (rv > 0); | 1833 } while (rv > 0); |
| 1890 | 1834 |
| 1891 out.response_data.swap(content); | 1835 out.response_data.swap(content); |
| 1892 | 1836 |
| 1893 // Flush the MessageLoop while the SessionDependencies (in particular, the | 1837 // Flush the MessageLoop while the SpdySessionDependencies (in particular, the |
| 1894 // MockClientSocketFactory) are still alive. | 1838 // MockClientSocketFactory) are still alive. |
| 1895 MessageLoop::current()->RunAllPending(); | 1839 MessageLoop::current()->RunAllPending(); |
| 1896 | 1840 |
| 1897 // Verify that we consumed all test data. | 1841 // Verify that we consumed all test data. |
| 1898 helper.VerifyDataConsumed(); | 1842 helper.VerifyDataConsumed(); |
| 1899 | 1843 |
| 1900 EXPECT_EQ(OK, out.rv); | 1844 EXPECT_EQ(OK, out.rv); |
| 1901 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line); | 1845 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line); |
| 1902 EXPECT_EQ("goodbye world", out.response_data); | 1846 EXPECT_EQ("goodbye world", out.response_data); |
| 1903 } | 1847 } |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2047 } else if (rv < 0) { | 1991 } else if (rv < 0) { |
| 2048 FAIL() << "Unexpected read error: " << rv; | 1992 FAIL() << "Unexpected read error: " << rv; |
| 2049 } | 1993 } |
| 2050 reads_completed++; | 1994 reads_completed++; |
| 2051 } while (rv > 0); | 1995 } while (rv > 0); |
| 2052 | 1996 |
| 2053 EXPECT_EQ(3, reads_completed); // Reads are: 14 bytes, 14 bytes, 0 bytes. | 1997 EXPECT_EQ(3, reads_completed); // Reads are: 14 bytes, 14 bytes, 0 bytes. |
| 2054 | 1998 |
| 2055 out.response_data.swap(content); | 1999 out.response_data.swap(content); |
| 2056 | 2000 |
| 2057 // Flush the MessageLoop while the SessionDependencies (in particular, the | 2001 // Flush the MessageLoop while the SpdySessionDependencies (in particular, the |
| 2058 // MockClientSocketFactory) are still alive. | 2002 // MockClientSocketFactory) are still alive. |
| 2059 MessageLoop::current()->RunAllPending(); | 2003 MessageLoop::current()->RunAllPending(); |
| 2060 | 2004 |
| 2061 // Verify that we consumed all test data. | 2005 // Verify that we consumed all test data. |
| 2062 helper.VerifyDataConsumed(); | 2006 helper.VerifyDataConsumed(); |
| 2063 | 2007 |
| 2064 EXPECT_EQ(OK, out.rv); | 2008 EXPECT_EQ(OK, out.rv); |
| 2065 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line); | 2009 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line); |
| 2066 EXPECT_EQ("messagemessagemessagemessage", out.response_data); | 2010 EXPECT_EQ("messagemessagemessagemessage", out.response_data); |
| 2067 } | 2011 } |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2138 } else if (rv < 0) { | 2082 } else if (rv < 0) { |
| 2139 FAIL() << "Unexpected read error: " << rv; | 2083 FAIL() << "Unexpected read error: " << rv; |
| 2140 } | 2084 } |
| 2141 reads_completed++; | 2085 reads_completed++; |
| 2142 } while (rv > 0); | 2086 } while (rv > 0); |
| 2143 | 2087 |
| 2144 EXPECT_EQ(3, reads_completed); | 2088 EXPECT_EQ(3, reads_completed); |
| 2145 | 2089 |
| 2146 out.response_data.swap(content); | 2090 out.response_data.swap(content); |
| 2147 | 2091 |
| 2148 // Flush the MessageLoop while the SessionDependencies (in particular, the | 2092 // Flush the MessageLoop while the SpdySessionDependencies (in particular, the |
| 2149 // MockClientSocketFactory) are still alive. | 2093 // MockClientSocketFactory) are still alive. |
| 2150 MessageLoop::current()->RunAllPending(); | 2094 MessageLoop::current()->RunAllPending(); |
| 2151 | 2095 |
| 2152 // Verify that we consumed all test data. | 2096 // Verify that we consumed all test data. |
| 2153 helper.VerifyDataConsumed(); | 2097 helper.VerifyDataConsumed(); |
| 2154 | 2098 |
| 2155 EXPECT_EQ(OK, out.rv); | 2099 EXPECT_EQ(OK, out.rv); |
| 2156 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line); | 2100 EXPECT_EQ("HTTP/1.1 200 OK", out.status_line); |
| 2157 EXPECT_EQ("messagemessagemessagemessage", out.response_data); | 2101 EXPECT_EQ("messagemessagemessagemessage", out.response_data); |
| 2158 } | 2102 } |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2232 EXPECT_EQ(ERR_CONNECTION_CLOSED, rv); | 2176 EXPECT_EQ(ERR_CONNECTION_CLOSED, rv); |
| 2233 break; | 2177 break; |
| 2234 } | 2178 } |
| 2235 reads_completed++; | 2179 reads_completed++; |
| 2236 } while (rv > 0); | 2180 } while (rv > 0); |
| 2237 | 2181 |
| 2238 EXPECT_EQ(0, reads_completed); | 2182 EXPECT_EQ(0, reads_completed); |
| 2239 | 2183 |
| 2240 out.response_data.swap(content); | 2184 out.response_data.swap(content); |
| 2241 | 2185 |
| 2242 // Flush the MessageLoop while the SessionDependencies (in particular, the | 2186 // Flush the MessageLoop while the SpdySessionDependencies (in particular, the |
| 2243 // MockClientSocketFactory) are still alive. | 2187 // MockClientSocketFactory) are still alive. |
| 2244 MessageLoop::current()->RunAllPending(); | 2188 MessageLoop::current()->RunAllPending(); |
| 2245 | 2189 |
| 2246 // Verify that we consumed all test data. | 2190 // Verify that we consumed all test data. |
| 2247 helper.VerifyDataConsumed(); | 2191 helper.VerifyDataConsumed(); |
| 2248 } | 2192 } |
| 2249 | 2193 |
| 2250 // Verify the case where we buffer data and cancel the transaction. | 2194 // Verify the case where we buffer data and cancel the transaction. |
| 2251 TEST_F(SpdyNetworkTransactionTest, BufferedCancelled) { | 2195 TEST_F(SpdyNetworkTransactionTest, BufferedCancelled) { |
| 2252 spdy::SpdyFramer framer; | 2196 spdy::SpdyFramer framer; |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2581 EXPECT_TRUE(response->headers != NULL); | 2525 EXPECT_TRUE(response->headers != NULL); |
| 2582 EXPECT_TRUE(response->was_fetched_via_spdy); | 2526 EXPECT_TRUE(response->was_fetched_via_spdy); |
| 2583 out.rv = ReadTransaction(trans, &out.response_data); | 2527 out.rv = ReadTransaction(trans, &out.response_data); |
| 2584 EXPECT_EQ(ERR_CONNECTION_CLOSED, out.rv); | 2528 EXPECT_EQ(ERR_CONNECTION_CLOSED, out.rv); |
| 2585 | 2529 |
| 2586 // Verify that we consumed all test data. | 2530 // Verify that we consumed all test data. |
| 2587 helper.VerifyDataConsumed(); | 2531 helper.VerifyDataConsumed(); |
| 2588 } | 2532 } |
| 2589 | 2533 |
| 2590 } // namespace net | 2534 } // namespace net |
| OLD | NEW |