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 <memory> | 5 #include <memory> |
6 #include <ostream> | 6 #include <ostream> |
7 #include <string> | 7 #include <string> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 bool rtt_notification_received_; | 200 bool rtt_notification_received_; |
201 | 201 |
202 DISALLOW_COPY_AND_ASSIGN(TestSocketPerformanceWatcherFactory); | 202 DISALLOW_COPY_AND_ASSIGN(TestSocketPerformanceWatcherFactory); |
203 }; | 203 }; |
204 | 204 |
205 class QuicNetworkTransactionTest | 205 class QuicNetworkTransactionTest |
206 : public PlatformTest, | 206 : public PlatformTest, |
207 public ::testing::WithParamInterface<QuicVersion> { | 207 public ::testing::WithParamInterface<QuicVersion> { |
208 protected: | 208 protected: |
209 QuicNetworkTransactionTest() | 209 QuicNetworkTransactionTest() |
210 : clock_(new MockClock), | 210 : version_(GetParam()), |
211 client_maker_(GetParam(), | 211 clock_(new MockClock), |
| 212 client_maker_(version_, |
212 0, | 213 0, |
213 clock_, | 214 clock_, |
214 kDefaultServerHostName, | 215 kDefaultServerHostName, |
215 Perspective::IS_CLIENT), | 216 Perspective::IS_CLIENT), |
216 server_maker_(GetParam(), | 217 server_maker_(version_, |
217 0, | 218 0, |
218 clock_, | 219 clock_, |
219 kDefaultServerHostName, | 220 kDefaultServerHostName, |
220 Perspective::IS_SERVER), | 221 Perspective::IS_SERVER), |
221 cert_transparency_verifier_(new MultiLogCTVerifier()), | 222 cert_transparency_verifier_(new MultiLogCTVerifier()), |
222 ssl_config_service_(new SSLConfigServiceDefaults), | 223 ssl_config_service_(new SSLConfigServiceDefaults), |
223 proxy_service_(ProxyService::CreateDirect()), | 224 proxy_service_(ProxyService::CreateDirect()), |
224 auth_handler_factory_( | 225 auth_handler_factory_( |
225 HttpAuthHandlerFactory::CreateDefault(&host_resolver_)), | 226 HttpAuthHandlerFactory::CreateDefault(&host_resolver_)), |
226 random_generator_(0), | 227 random_generator_(0), |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 params_.cert_verifier = &cert_verifier_; | 463 params_.cert_verifier = &cert_verifier_; |
463 params_.transport_security_state = &transport_security_state_; | 464 params_.transport_security_state = &transport_security_state_; |
464 params_.cert_transparency_verifier = cert_transparency_verifier_.get(); | 465 params_.cert_transparency_verifier = cert_transparency_verifier_.get(); |
465 params_.ct_policy_enforcer = &ct_policy_enforcer_; | 466 params_.ct_policy_enforcer = &ct_policy_enforcer_; |
466 params_.socket_performance_watcher_factory = | 467 params_.socket_performance_watcher_factory = |
467 &test_socket_performance_watcher_factory_; | 468 &test_socket_performance_watcher_factory_; |
468 params_.proxy_service = proxy_service_.get(); | 469 params_.proxy_service = proxy_service_.get(); |
469 params_.ssl_config_service = ssl_config_service_.get(); | 470 params_.ssl_config_service = ssl_config_service_.get(); |
470 params_.http_auth_handler_factory = auth_handler_factory_.get(); | 471 params_.http_auth_handler_factory = auth_handler_factory_.get(); |
471 params_.http_server_properties = &http_server_properties_; | 472 params_.http_server_properties = &http_server_properties_; |
472 params_.quic_supported_versions = SupportedVersions(GetParam()); | 473 params_.quic_supported_versions = SupportedVersions(version_); |
473 for (const char* host : | 474 for (const char* host : |
474 {kDefaultServerHostName, "www.example.org", "news.example.org", | 475 {kDefaultServerHostName, "www.example.org", "news.example.org", |
475 "bar.example.org", "foo.example.org", "invalid.example.org", | 476 "bar.example.org", "foo.example.org", "invalid.example.org", |
476 "mail.example.com"}) { | 477 "mail.example.com"}) { |
477 params_.quic_host_whitelist.insert(host); | 478 params_.quic_host_whitelist.insert(host); |
478 } | 479 } |
479 | 480 |
480 session_.reset(new HttpNetworkSession(params_)); | 481 session_.reset(new HttpNetworkSession(params_)); |
481 session_->quic_stream_factory()->set_require_confirmation(false); | 482 session_->quic_stream_factory()->set_require_confirmation(false); |
482 ASSERT_EQ(params_.quic_socket_receive_buffer_size, | 483 ASSERT_EQ(params_.quic_socket_receive_buffer_size, |
483 session_->quic_stream_factory()->socket_receive_buffer_size()); | 484 session_->quic_stream_factory()->socket_receive_buffer_size()); |
484 } | 485 } |
485 | 486 |
486 void CheckWasQuicResponse(HttpNetworkTransaction* trans) { | 487 void CheckWasQuicResponse(HttpNetworkTransaction* trans) { |
487 const HttpResponseInfo* response = trans->GetResponseInfo(); | 488 const HttpResponseInfo* response = trans->GetResponseInfo(); |
488 ASSERT_TRUE(response != nullptr); | 489 ASSERT_TRUE(response != nullptr); |
489 ASSERT_TRUE(response->headers.get() != nullptr); | 490 ASSERT_TRUE(response->headers.get() != nullptr); |
490 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 491 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
491 EXPECT_TRUE(response->was_fetched_via_spdy); | 492 EXPECT_TRUE(response->was_fetched_via_spdy); |
492 EXPECT_TRUE(response->was_alpn_negotiated); | 493 EXPECT_TRUE(response->was_alpn_negotiated); |
493 EXPECT_EQ(HttpResponseInfo::CONNECTION_INFO_QUIC, | 494 EXPECT_EQ(QuicHttpStream::ConnectionInfoFromQuicVersion(version_), |
494 response->connection_info); | 495 response->connection_info); |
495 } | 496 } |
496 | 497 |
497 void CheckResponsePort(HttpNetworkTransaction* trans, uint16_t port) { | 498 void CheckResponsePort(HttpNetworkTransaction* trans, uint16_t port) { |
498 const HttpResponseInfo* response = trans->GetResponseInfo(); | 499 const HttpResponseInfo* response = trans->GetResponseInfo(); |
499 ASSERT_TRUE(response != nullptr); | 500 ASSERT_TRUE(response != nullptr); |
500 EXPECT_EQ(port, response->socket_address.port()); | 501 EXPECT_EQ(port, response->socket_address.port()); |
501 } | 502 } |
502 | 503 |
503 void CheckWasHttpResponse(HttpNetworkTransaction* trans) { | 504 void CheckWasHttpResponse(HttpNetworkTransaction* trans) { |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
669 EXPECT_TRUE(session_->proxy_service()->proxy_retry_info().empty()); | 670 EXPECT_TRUE(session_->proxy_service()->proxy_retry_info().empty()); |
670 | 671 |
671 // The alternative proxy server should no longer be in use. | 672 // The alternative proxy server should no longer be in use. |
672 EXPECT_FALSE(test_proxy_delegate.alternative_proxy_server().is_valid()); | 673 EXPECT_FALSE(test_proxy_delegate.alternative_proxy_server().is_valid()); |
673 | 674 |
674 // Verify that the second request completes successfully, and the | 675 // Verify that the second request completes successfully, and the |
675 // alternative proxy server job is not started. | 676 // alternative proxy server job is not started. |
676 SendRequestAndExpectHttpResponseFromProxy("hello from http", true, 443); | 677 SendRequestAndExpectHttpResponseFromProxy("hello from http", true, 443); |
677 } | 678 } |
678 | 679 |
| 680 const QuicVersion version_; |
679 QuicFlagSaver flags_; // Save/restore all QUIC flag values. | 681 QuicFlagSaver flags_; // Save/restore all QUIC flag values. |
680 MockClock* clock_; // Owned by QuicStreamFactory after CreateSession. | 682 MockClock* clock_; // Owned by QuicStreamFactory after CreateSession. |
681 QuicTestPacketMaker client_maker_; | 683 QuicTestPacketMaker client_maker_; |
682 QuicTestPacketMaker server_maker_; | 684 QuicTestPacketMaker server_maker_; |
683 std::unique_ptr<HttpNetworkSession> session_; | 685 std::unique_ptr<HttpNetworkSession> session_; |
684 MockClientSocketFactory socket_factory_; | 686 MockClientSocketFactory socket_factory_; |
685 ProofVerifyDetailsChromium verify_details_; | 687 ProofVerifyDetailsChromium verify_details_; |
686 MockCryptoClientStreamFactory crypto_client_stream_factory_; | 688 MockCryptoClientStreamFactory crypto_client_stream_factory_; |
687 MockHostResolver host_resolver_; | 689 MockHostResolver host_resolver_; |
688 MockCertVerifier cert_verifier_; | 690 MockCertVerifier cert_verifier_; |
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1113 http_server_properties->GetAlternativeServices(https_server); | 1115 http_server_properties->GetAlternativeServices(https_server); |
1114 EXPECT_EQ(2u, alternative_service_vector.size()); | 1116 EXPECT_EQ(2u, alternative_service_vector.size()); |
1115 | 1117 |
1116 // Send http request to the same origin but with diffrent scheme, should not | 1118 // Send http request to the same origin but with diffrent scheme, should not |
1117 // use QUIC. | 1119 // use QUIC. |
1118 request_.url = GURL("http://mail.example.org:443"); | 1120 request_.url = GURL("http://mail.example.org:443"); |
1119 SendRequestAndExpectHttpResponse("hello world"); | 1121 SendRequestAndExpectHttpResponse("hello world"); |
1120 } | 1122 } |
1121 | 1123 |
1122 TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceAllSupportedVersion) { | 1124 TEST_P(QuicNetworkTransactionTest, UseAlternativeServiceAllSupportedVersion) { |
1123 std::string altsvc_header = base::StringPrintf( | 1125 std::string altsvc_header = |
1124 "Alt-Svc: quic=\":443\"; v=\"%u\"\r\n\r\n", GetParam()); | 1126 base::StringPrintf("Alt-Svc: quic=\":443\"; v=\"%u\"\r\n\r\n", version_); |
1125 MockRead http_reads[] = { | 1127 MockRead http_reads[] = { |
1126 MockRead("HTTP/1.1 200 OK\r\n"), MockRead(altsvc_header.c_str()), | 1128 MockRead("HTTP/1.1 200 OK\r\n"), MockRead(altsvc_header.c_str()), |
1127 MockRead("hello world"), | 1129 MockRead("hello world"), |
1128 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 1130 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
1129 MockRead(ASYNC, OK)}; | 1131 MockRead(ASYNC, OK)}; |
1130 | 1132 |
1131 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | 1133 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, |
1132 0); | 1134 0); |
1133 socket_factory_.AddSocketDataProvider(&http_data); | 1135 socket_factory_.AddSocketDataProvider(&http_data); |
1134 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | 1136 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1211 // because of migrating port. | 1213 // because of migrating port. |
1212 NetErrorDetails details; | 1214 NetErrorDetails details; |
1213 EXPECT_FALSE(details.quic_port_migration_detected); | 1215 EXPECT_FALSE(details.quic_port_migration_detected); |
1214 trans.PopulateNetErrorDetails(&details); | 1216 trans.PopulateNetErrorDetails(&details); |
1215 EXPECT_TRUE(details.quic_port_migration_detected); | 1217 EXPECT_TRUE(details.quic_port_migration_detected); |
1216 } | 1218 } |
1217 | 1219 |
1218 TEST_P(QuicNetworkTransactionTest, | 1220 TEST_P(QuicNetworkTransactionTest, |
1219 DoNotUseAlternativeServiceQuicUnsupportedVersion) { | 1221 DoNotUseAlternativeServiceQuicUnsupportedVersion) { |
1220 std::string altsvc_header = base::StringPrintf( | 1222 std::string altsvc_header = base::StringPrintf( |
1221 "Alt-Svc: quic=\":443\"; v=\"%u\"\r\n\r\n", GetParam() - 1); | 1223 "Alt-Svc: quic=\":443\"; v=\"%u\"\r\n\r\n", version_ - 1); |
1222 MockRead http_reads[] = { | 1224 MockRead http_reads[] = { |
1223 MockRead("HTTP/1.1 200 OK\r\n"), MockRead(altsvc_header.c_str()), | 1225 MockRead("HTTP/1.1 200 OK\r\n"), MockRead(altsvc_header.c_str()), |
1224 MockRead("hello world"), | 1226 MockRead("hello world"), |
1225 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), | 1227 MockRead(SYNCHRONOUS, ERR_TEST_PEER_CLOSE_AFTER_NEXT_MOCK_READ), |
1226 MockRead(ASYNC, OK)}; | 1228 MockRead(ASYNC, OK)}; |
1227 | 1229 |
1228 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, | 1230 StaticSocketDataProvider http_data(http_reads, arraysize(http_reads), nullptr, |
1229 0); | 1231 0); |
1230 socket_factory_.AddSocketDataProvider(&http_data); | 1232 socket_factory_.AddSocketDataProvider(&http_data); |
1231 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | 1233 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1448 1, kClientDataStreamId1, true, true, | 1450 1, kClientDataStreamId1, true, true, |
1449 GetRequestHeaders("GET", "https", "/"), &request_header_offset)); | 1451 GetRequestHeaders("GET", "https", "/"), &request_header_offset)); |
1450 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( | 1452 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( |
1451 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"), | 1453 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"), |
1452 &response_header_offset)); | 1454 &response_header_offset)); |
1453 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, | 1455 mock_quic_data.AddRead(ConstructServerDataPacket(2, kClientDataStreamId1, |
1454 false, true, 0, "hello!")); | 1456 false, true, 0, "hello!")); |
1455 mock_quic_data.AddWrite(ConstructClientAckPacket(2, 1)); | 1457 mock_quic_data.AddWrite(ConstructClientAckPacket(2, 1)); |
1456 | 1458 |
1457 // Second request. | 1459 // Second request. |
1458 QuicTestPacketMaker client_maker2(GetParam(), 0, clock_, origin2.host(), | 1460 QuicTestPacketMaker client_maker2(version_, 0, clock_, origin2.host(), |
1459 Perspective::IS_CLIENT); | 1461 Perspective::IS_CLIENT); |
1460 QuicTestPacketMaker server_maker2(GetParam(), 0, clock_, origin2.host(), | 1462 QuicTestPacketMaker server_maker2(version_, 0, clock_, origin2.host(), |
1461 Perspective::IS_SERVER); | 1463 Perspective::IS_SERVER); |
1462 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( | 1464 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( |
1463 3, kClientDataStreamId2, false, true, | 1465 3, kClientDataStreamId2, false, true, |
1464 GetRequestHeaders("GET", "https", "/", &client_maker2), | 1466 GetRequestHeaders("GET", "https", "/", &client_maker2), |
1465 &request_header_offset)); | 1467 &request_header_offset)); |
1466 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( | 1468 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( |
1467 3, kClientDataStreamId2, false, false, GetResponseHeaders("200 OK"), | 1469 3, kClientDataStreamId2, false, false, GetResponseHeaders("200 OK"), |
1468 &response_header_offset)); | 1470 &response_header_offset)); |
1469 mock_quic_data.AddRead(ConstructServerDataPacket(4, kClientDataStreamId2, | 1471 mock_quic_data.AddRead(ConstructServerDataPacket(4, kClientDataStreamId2, |
1470 false, true, 0, "hello!")); | 1472 false, true, 0, "hello!")); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1542 MockRead(ASYNC, OK)}; | 1544 MockRead(ASYNC, OK)}; |
1543 | 1545 |
1544 StaticSocketDataProvider http_data2(http_reads2, arraysize(http_reads2), | 1546 StaticSocketDataProvider http_data2(http_reads2, arraysize(http_reads2), |
1545 nullptr, 0); | 1547 nullptr, 0); |
1546 socket_factory_.AddSocketDataProvider(&http_data2); | 1548 socket_factory_.AddSocketDataProvider(&http_data2); |
1547 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); | 1549 socket_factory_.AddSSLSocketDataProvider(&ssl_data_); |
1548 | 1550 |
1549 QuicStreamOffset request_header_offset = 0; | 1551 QuicStreamOffset request_header_offset = 0; |
1550 QuicStreamOffset response_header_offset = 0; | 1552 QuicStreamOffset response_header_offset = 0; |
1551 | 1553 |
1552 QuicTestPacketMaker client_maker(GetParam(), 0, clock_, "mail.example.org", | 1554 QuicTestPacketMaker client_maker(version_, 0, clock_, "mail.example.org", |
1553 Perspective::IS_CLIENT); | 1555 Perspective::IS_CLIENT); |
1554 server_maker_.set_hostname("www.example.org"); | 1556 server_maker_.set_hostname("www.example.org"); |
1555 client_maker_.set_hostname("www.example.org"); | 1557 client_maker_.set_hostname("www.example.org"); |
1556 MockQuicData mock_quic_data; | 1558 MockQuicData mock_quic_data; |
1557 | 1559 |
1558 // First QUIC request data. | 1560 // First QUIC request data. |
1559 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( | 1561 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( |
1560 1, kClientDataStreamId1, true, true, | 1562 1, kClientDataStreamId1, true, true, |
1561 GetRequestHeaders("GET", "https", "/"), &request_header_offset)); | 1563 GetRequestHeaders("GET", "https", "/"), &request_header_offset)); |
1562 | 1564 |
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2097 QuicSession::HANDSHAKE_CONFIRMED); | 2099 QuicSession::HANDSHAKE_CONFIRMED); |
2098 // Read the headers. | 2100 // Read the headers. |
2099 EXPECT_THAT(callback.WaitForResult(), IsOk()); | 2101 EXPECT_THAT(callback.WaitForResult(), IsOk()); |
2100 | 2102 |
2101 const HttpResponseInfo* response = trans.GetResponseInfo(); | 2103 const HttpResponseInfo* response = trans.GetResponseInfo(); |
2102 ASSERT_TRUE(response != nullptr); | 2104 ASSERT_TRUE(response != nullptr); |
2103 ASSERT_TRUE(response->headers.get() != nullptr); | 2105 ASSERT_TRUE(response->headers.get() != nullptr); |
2104 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 2106 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
2105 EXPECT_TRUE(response->was_fetched_via_spdy); | 2107 EXPECT_TRUE(response->was_fetched_via_spdy); |
2106 EXPECT_TRUE(response->was_alpn_negotiated); | 2108 EXPECT_TRUE(response->was_alpn_negotiated); |
2107 EXPECT_EQ(HttpResponseInfo::CONNECTION_INFO_QUIC, response->connection_info); | 2109 EXPECT_EQ(QuicHttpStream::ConnectionInfoFromQuicVersion(version_), |
| 2110 response->connection_info); |
2108 | 2111 |
2109 std::string response_data; | 2112 std::string response_data; |
2110 ASSERT_EQ(ERR_QUIC_PROTOCOL_ERROR, ReadTransaction(&trans, &response_data)); | 2113 ASSERT_EQ(ERR_QUIC_PROTOCOL_ERROR, ReadTransaction(&trans, &response_data)); |
2111 } | 2114 } |
2112 | 2115 |
2113 TEST_P(QuicNetworkTransactionTest, RstSteamBeforeHeaders) { | 2116 TEST_P(QuicNetworkTransactionTest, RstSteamBeforeHeaders) { |
2114 MockQuicData mock_quic_data; | 2117 MockQuicData mock_quic_data; |
2115 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( | 2118 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( |
2116 1, kClientDataStreamId1, true, true, | 2119 1, kClientDataStreamId1, true, true, |
2117 GetRequestHeaders("GET", "https", "/"))); | 2120 GetRequestHeaders("GET", "https", "/"))); |
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2661 HostPortPair::FromString("mail.example.org:443")); | 2664 HostPortPair::FromString("mail.example.org:443")); |
2662 | 2665 |
2663 MockQuicData mock_quic_data; | 2666 MockQuicData mock_quic_data; |
2664 | 2667 |
2665 QuicStreamOffset offset = 0; | 2668 QuicStreamOffset offset = 0; |
2666 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( | 2669 mock_quic_data.AddWrite(ConstructClientRequestHeadersPacket( |
2667 1, kClientDataStreamId1, true, false, | 2670 1, kClientDataStreamId1, true, false, |
2668 GetRequestHeaders("POST", "https", "/"), &offset)); | 2671 GetRequestHeaders("POST", "https", "/"), &offset)); |
2669 | 2672 |
2670 std::unique_ptr<QuicEncryptedPacket> packet; | 2673 std::unique_ptr<QuicEncryptedPacket> packet; |
2671 if (GetParam() > QUIC_VERSION_35) { | 2674 if (version_ > QUIC_VERSION_35) { |
2672 packet = ConstructClientForceHolDataPacket(2, kClientDataStreamId1, true, | 2675 packet = ConstructClientForceHolDataPacket(2, kClientDataStreamId1, true, |
2673 true, &offset, "1"); | 2676 true, &offset, "1"); |
2674 } else { | 2677 } else { |
2675 packet = | 2678 packet = |
2676 ConstructClientDataPacket(2, kClientDataStreamId1, true, true, 0, "1"); | 2679 ConstructClientDataPacket(2, kClientDataStreamId1, true, true, 0, "1"); |
2677 } | 2680 } |
2678 mock_quic_data.AddWrite(std::move(packet)); | 2681 mock_quic_data.AddWrite(std::move(packet)); |
2679 | 2682 |
2680 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( | 2683 mock_quic_data.AddRead(ConstructServerResponseHeadersPacket( |
2681 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); | 2684 1, kClientDataStreamId1, false, false, GetResponseHeaders("200 OK"))); |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3047 std::string response_data; | 3050 std::string response_data; |
3048 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk()); | 3051 ASSERT_THAT(ReadTransaction(&trans, &response_data), IsOk()); |
3049 EXPECT_EQ("hello", response_data); | 3052 EXPECT_EQ("hello", response_data); |
3050 | 3053 |
3051 const HttpResponseInfo* response = trans.GetResponseInfo(); | 3054 const HttpResponseInfo* response = trans.GetResponseInfo(); |
3052 ASSERT_TRUE(response != nullptr); | 3055 ASSERT_TRUE(response != nullptr); |
3053 ASSERT_TRUE(response->headers.get() != nullptr); | 3056 ASSERT_TRUE(response->headers.get() != nullptr); |
3054 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); | 3057 EXPECT_EQ("HTTP/1.1 200 OK", response->headers->GetStatusLine()); |
3055 EXPECT_TRUE(response->was_fetched_via_spdy); | 3058 EXPECT_TRUE(response->was_fetched_via_spdy); |
3056 EXPECT_TRUE(response->was_alpn_negotiated); | 3059 EXPECT_TRUE(response->was_alpn_negotiated); |
3057 EXPECT_EQ(HttpResponseInfo::CONNECTION_INFO_QUIC, | 3060 EXPECT_EQ(QuicHttpStream::ConnectionInfoFromQuicVersion(version_), |
3058 response->connection_info); | 3061 response->connection_info); |
3059 EXPECT_EQ(443, response->socket_address.port()); | 3062 EXPECT_EQ(443, response->socket_address.port()); |
3060 } | 3063 } |
3061 | 3064 |
3062 MockClock* clock_; | 3065 MockClock* clock_; |
3063 QuicVersion version_; | 3066 QuicVersion version_; |
3064 DestinationType destination_type_; | 3067 DestinationType destination_type_; |
3065 std::string origin1_; | 3068 std::string origin1_; |
3066 std::string origin2_; | 3069 std::string origin2_; |
3067 std::unique_ptr<HttpNetworkSession> session_; | 3070 std::unique_ptr<HttpNetworkSession> session_; |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3275 AddHangingSocketData(); | 3278 AddHangingSocketData(); |
3276 | 3279 |
3277 SendRequestAndExpectQuicResponse(origin1_); | 3280 SendRequestAndExpectQuicResponse(origin1_); |
3278 SendRequestAndExpectQuicResponse(origin2_); | 3281 SendRequestAndExpectQuicResponse(origin2_); |
3279 | 3282 |
3280 EXPECT_TRUE(AllDataConsumed()); | 3283 EXPECT_TRUE(AllDataConsumed()); |
3281 } | 3284 } |
3282 | 3285 |
3283 } // namespace test | 3286 } // namespace test |
3284 } // namespace net | 3287 } // namespace net |
OLD | NEW |