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/quic/quic_stream_factory.h" | 5 #include "net/quic/quic_stream_factory.h" |
6 | 6 |
7 #include <ostream> | 7 #include <ostream> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
(...skipping 24 matching lines...) Expand all Loading... |
35 #include "net/quic/test_tools/quic_stream_factory_peer.h" | 35 #include "net/quic/test_tools/quic_stream_factory_peer.h" |
36 #include "net/quic/test_tools/quic_test_packet_maker.h" | 36 #include "net/quic/test_tools/quic_test_packet_maker.h" |
37 #include "net/quic/test_tools/quic_test_utils.h" | 37 #include "net/quic/test_tools/quic_test_utils.h" |
38 #include "net/quic/test_tools/test_task_runner.h" | 38 #include "net/quic/test_tools/test_task_runner.h" |
39 #include "net/socket/socket_test_util.h" | 39 #include "net/socket/socket_test_util.h" |
40 #include "net/spdy/spdy_session_test_util.h" | 40 #include "net/spdy/spdy_session_test_util.h" |
41 #include "net/spdy/spdy_test_utils.h" | 41 #include "net/spdy/spdy_test_utils.h" |
42 #include "net/ssl/channel_id_service.h" | 42 #include "net/ssl/channel_id_service.h" |
43 #include "net/ssl/default_channel_id_store.h" | 43 #include "net/ssl/default_channel_id_store.h" |
44 #include "net/test/cert_test_util.h" | 44 #include "net/test/cert_test_util.h" |
| 45 #include "net/test/gtest_util.h" |
45 #include "net/test/test_data_directory.h" | 46 #include "net/test/test_data_directory.h" |
| 47 #include "testing/gmock/include/gmock/gmock.h" |
46 #include "testing/gtest/include/gtest/gtest.h" | 48 #include "testing/gtest/include/gtest/gtest.h" |
47 | 49 |
| 50 using net::test::IsError; |
| 51 using net::test::IsOk; |
| 52 |
48 using std::string; | 53 using std::string; |
49 using std::vector; | 54 using std::vector; |
50 | 55 |
51 namespace net { | 56 namespace net { |
52 | 57 |
53 namespace { | 58 namespace { |
54 | 59 |
55 class MockSSLConfigService : public SSLConfigService { | 60 class MockSSLConfigService : public SSLConfigService { |
56 public: | 61 public: |
57 MockSSLConfigService() {} | 62 MockSSLConfigService() {} |
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
403 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); | 408 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
404 socket_factory_.AddSocketDataProvider(&socket_data); | 409 socket_factory_.AddSocketDataProvider(&socket_data); |
405 | 410 |
406 QuicStreamRequest request(factory_.get()); | 411 QuicStreamRequest request(factory_.get()); |
407 GURL url("https://" + destination.host() + "/"); | 412 GURL url("https://" + destination.host() + "/"); |
408 EXPECT_EQ(ERR_IO_PENDING, | 413 EXPECT_EQ(ERR_IO_PENDING, |
409 request.Request(destination, privacy_mode_, | 414 request.Request(destination, privacy_mode_, |
410 /*cert_verify_flags=*/0, url, "GET", net_log_, | 415 /*cert_verify_flags=*/0, url, "GET", net_log_, |
411 callback_.callback())); | 416 callback_.callback())); |
412 | 417 |
413 EXPECT_EQ(OK, callback_.WaitForResult()); | 418 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
414 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 419 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
415 EXPECT_TRUE(stream.get()); | 420 EXPECT_TRUE(stream.get()); |
416 stream.reset(); | 421 stream.reset(); |
417 | 422 |
418 QuicChromiumClientSession* session = GetActiveSession(destination); | 423 QuicChromiumClientSession* session = GetActiveSession(destination); |
419 | 424 |
420 if (socket_count + 1 != socket_factory_.udp_client_socket_ports().size()) { | 425 if (socket_count + 1 != socket_factory_.udp_client_socket_ports().size()) { |
421 ADD_FAILURE(); | 426 ADD_FAILURE(); |
422 return 0; | 427 return 0; |
423 } | 428 } |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
562 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 567 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
563 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); | 568 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
564 socket_factory_.AddSocketDataProvider(&socket_data); | 569 socket_factory_.AddSocketDataProvider(&socket_data); |
565 | 570 |
566 QuicStreamRequest request(factory_.get()); | 571 QuicStreamRequest request(factory_.get()); |
567 EXPECT_EQ(ERR_IO_PENDING, | 572 EXPECT_EQ(ERR_IO_PENDING, |
568 request.Request(host_port_pair_, privacy_mode_, | 573 request.Request(host_port_pair_, privacy_mode_, |
569 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 574 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
570 callback_.callback())); | 575 callback_.callback())); |
571 | 576 |
572 EXPECT_EQ(OK, callback_.WaitForResult()); | 577 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
573 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 578 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
574 EXPECT_TRUE(stream.get()); | 579 EXPECT_TRUE(stream.get()); |
575 | 580 |
576 // Will reset stream 3. | 581 // Will reset stream 3. |
577 stream = CreateFromSession(host_port_pair_); | 582 stream = CreateFromSession(host_port_pair_); |
578 EXPECT_TRUE(stream.get()); | 583 EXPECT_TRUE(stream.get()); |
579 | 584 |
580 // TODO(rtenneti): We should probably have a tests that HTTP and HTTPS result | 585 // TODO(rtenneti): We should probably have a tests that HTTP and HTTPS result |
581 // in streams on different sessions. | 586 // in streams on different sessions. |
582 QuicStreamRequest request2(factory_.get()); | 587 QuicStreamRequest request2(factory_.get()); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
650 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 655 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
651 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); | 656 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
652 socket_factory_.AddSocketDataProvider(&socket_data); | 657 socket_factory_.AddSocketDataProvider(&socket_data); |
653 | 658 |
654 QuicStreamRequest request(factory_.get()); | 659 QuicStreamRequest request(factory_.get()); |
655 EXPECT_EQ(ERR_IO_PENDING, | 660 EXPECT_EQ(ERR_IO_PENDING, |
656 request.Request(host_port_pair_, privacy_mode_, | 661 request.Request(host_port_pair_, privacy_mode_, |
657 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 662 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
658 callback_.callback())); | 663 callback_.callback())); |
659 | 664 |
660 EXPECT_EQ(OK, callback_.WaitForResult()); | 665 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
661 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 666 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
662 EXPECT_TRUE(stream.get()); | 667 EXPECT_TRUE(stream.get()); |
663 | 668 |
664 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 669 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
665 | 670 |
666 session->OnGoAway(QuicGoAwayFrame()); | 671 session->OnGoAway(QuicGoAwayFrame()); |
667 | 672 |
668 EXPECT_FALSE(HasActiveSession(host_port_pair_)); | 673 EXPECT_FALSE(HasActiveSession(host_port_pair_)); |
669 | 674 |
670 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 675 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
671 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 676 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
672 } | 677 } |
673 | 678 |
674 TEST_P(QuicStreamFactoryTest, GoAwayForConnectionMigrationWithPortOnly) { | 679 TEST_P(QuicStreamFactoryTest, GoAwayForConnectionMigrationWithPortOnly) { |
675 Initialize(); | 680 Initialize(); |
676 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 681 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
677 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 682 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
678 | 683 |
679 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 684 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
680 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); | 685 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
681 socket_factory_.AddSocketDataProvider(&socket_data); | 686 socket_factory_.AddSocketDataProvider(&socket_data); |
682 | 687 |
683 QuicStreamRequest request(factory_.get()); | 688 QuicStreamRequest request(factory_.get()); |
684 EXPECT_EQ(ERR_IO_PENDING, | 689 EXPECT_EQ(ERR_IO_PENDING, |
685 request.Request(host_port_pair_, privacy_mode_, | 690 request.Request(host_port_pair_, privacy_mode_, |
686 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 691 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
687 callback_.callback())); | 692 callback_.callback())); |
688 | 693 |
689 EXPECT_EQ(OK, callback_.WaitForResult()); | 694 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
690 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 695 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
691 EXPECT_TRUE(stream.get()); | 696 EXPECT_TRUE(stream.get()); |
692 | 697 |
693 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 698 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
694 | 699 |
695 session->OnGoAway( | 700 session->OnGoAway( |
696 QuicGoAwayFrame(QUIC_ERROR_MIGRATING_PORT, 0, | 701 QuicGoAwayFrame(QUIC_ERROR_MIGRATING_PORT, 0, |
697 "peer connection migration due to port change only")); | 702 "peer connection migration due to port change only")); |
698 NetErrorDetails details; | 703 NetErrorDetails details; |
699 EXPECT_FALSE(details.quic_port_migration_detected); | 704 EXPECT_FALSE(details.quic_port_migration_detected); |
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1079 socket_factory_.AddSocketDataProvider(&socket_data); | 1084 socket_factory_.AddSocketDataProvider(&socket_data); |
1080 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0); | 1085 SequencedSocketData socket_data2(reads, arraysize(reads), nullptr, 0); |
1081 socket_factory_.AddSocketDataProvider(&socket_data2); | 1086 socket_factory_.AddSocketDataProvider(&socket_data2); |
1082 | 1087 |
1083 QuicStreamRequest request(factory_.get()); | 1088 QuicStreamRequest request(factory_.get()); |
1084 EXPECT_EQ(ERR_IO_PENDING, | 1089 EXPECT_EQ(ERR_IO_PENDING, |
1085 request.Request(host_port_pair_, privacy_mode_, | 1090 request.Request(host_port_pair_, privacy_mode_, |
1086 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1091 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1087 callback_.callback())); | 1092 callback_.callback())); |
1088 | 1093 |
1089 EXPECT_EQ(OK, callback_.WaitForResult()); | 1094 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
1090 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1095 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
1091 EXPECT_TRUE(stream.get()); | 1096 EXPECT_TRUE(stream.get()); |
1092 | 1097 |
1093 // Mark the session as going away. Ensure that while it is still alive | 1098 // Mark the session as going away. Ensure that while it is still alive |
1094 // that it is no longer active. | 1099 // that it is no longer active. |
1095 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 1100 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
1096 factory_->OnSessionGoingAway(session); | 1101 factory_->OnSessionGoingAway(session); |
1097 EXPECT_EQ(true, | 1102 EXPECT_EQ(true, |
1098 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 1103 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
1099 EXPECT_FALSE(HasActiveSession(host_port_pair_)); | 1104 EXPECT_FALSE(HasActiveSession(host_port_pair_)); |
1100 | 1105 |
1101 // Create a new request for the same destination and verify that a | 1106 // Create a new request for the same destination and verify that a |
1102 // new session is created. | 1107 // new session is created. |
1103 QuicStreamRequest request2(factory_.get()); | 1108 QuicStreamRequest request2(factory_.get()); |
1104 EXPECT_EQ(ERR_IO_PENDING, | 1109 EXPECT_EQ(ERR_IO_PENDING, |
1105 request2.Request(host_port_pair_, privacy_mode_, | 1110 request2.Request(host_port_pair_, privacy_mode_, |
1106 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1111 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1107 callback_.callback())); | 1112 callback_.callback())); |
1108 EXPECT_EQ(OK, callback_.WaitForResult()); | 1113 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
1109 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); | 1114 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); |
1110 EXPECT_TRUE(stream2.get()); | 1115 EXPECT_TRUE(stream2.get()); |
1111 | 1116 |
1112 EXPECT_TRUE(HasActiveSession(host_port_pair_)); | 1117 EXPECT_TRUE(HasActiveSession(host_port_pair_)); |
1113 EXPECT_NE(session, GetActiveSession(host_port_pair_)); | 1118 EXPECT_NE(session, GetActiveSession(host_port_pair_)); |
1114 EXPECT_EQ(true, | 1119 EXPECT_EQ(true, |
1115 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 1120 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
1116 | 1121 |
1117 stream2.reset(); | 1122 stream2.reset(); |
1118 stream.reset(); | 1123 stream.reset(); |
(...skipping 27 matching lines...) Expand all Loading... |
1146 HttpRequestInfo request_info; | 1151 HttpRequestInfo request_info; |
1147 vector<QuicHttpStream*> streams; | 1152 vector<QuicHttpStream*> streams; |
1148 // The MockCryptoClientStream sets max_open_streams to be | 1153 // The MockCryptoClientStream sets max_open_streams to be |
1149 // kDefaultMaxStreamsPerConnection / 2. | 1154 // kDefaultMaxStreamsPerConnection / 2. |
1150 for (size_t i = 0; i < kDefaultMaxStreamsPerConnection / 2; i++) { | 1155 for (size_t i = 0; i < kDefaultMaxStreamsPerConnection / 2; i++) { |
1151 QuicStreamRequest request(factory_.get()); | 1156 QuicStreamRequest request(factory_.get()); |
1152 int rv = request.Request(host_port_pair_, privacy_mode_, | 1157 int rv = request.Request(host_port_pair_, privacy_mode_, |
1153 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1158 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1154 callback_.callback()); | 1159 callback_.callback()); |
1155 if (i == 0) { | 1160 if (i == 0) { |
1156 EXPECT_EQ(ERR_IO_PENDING, rv); | 1161 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
1157 EXPECT_EQ(OK, callback_.WaitForResult()); | 1162 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
1158 } else { | 1163 } else { |
1159 EXPECT_EQ(OK, rv); | 1164 EXPECT_THAT(rv, IsOk()); |
1160 } | 1165 } |
1161 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1166 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
1162 EXPECT_TRUE(stream); | 1167 EXPECT_TRUE(stream); |
1163 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1168 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
1164 net_log_, CompletionCallback())); | 1169 net_log_, CompletionCallback())); |
1165 streams.push_back(stream.release()); | 1170 streams.push_back(stream.release()); |
1166 } | 1171 } |
1167 | 1172 |
1168 QuicStreamRequest request(factory_.get()); | 1173 QuicStreamRequest request(factory_.get()); |
1169 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, | 1174 EXPECT_EQ(OK, request.Request(host_port_pair_, privacy_mode_, |
1170 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1175 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1171 CompletionCallback())); | 1176 CompletionCallback())); |
1172 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1177 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
1173 EXPECT_TRUE(stream); | 1178 EXPECT_TRUE(stream); |
1174 EXPECT_EQ(ERR_IO_PENDING, | 1179 EXPECT_EQ(ERR_IO_PENDING, |
1175 stream->InitializeStream(&request_info, DEFAULT_PRIORITY, net_log_, | 1180 stream->InitializeStream(&request_info, DEFAULT_PRIORITY, net_log_, |
1176 callback_.callback())); | 1181 callback_.callback())); |
1177 | 1182 |
1178 // Close the first stream. | 1183 // Close the first stream. |
1179 streams.front()->Close(false); | 1184 streams.front()->Close(false); |
1180 // Trigger exchange of RSTs that in turn allow progress for the last | 1185 // Trigger exchange of RSTs that in turn allow progress for the last |
1181 // stream. | 1186 // stream. |
1182 EXPECT_EQ(OK, callback_.WaitForResult()); | 1187 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
1183 | 1188 |
1184 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 1189 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
1185 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 1190 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
1186 | 1191 |
1187 // Force close of the connection to suppress the generation of RST | 1192 // Force close of the connection to suppress the generation of RST |
1188 // packets when streams are torn down, which wouldn't be relevant to | 1193 // packets when streams are torn down, which wouldn't be relevant to |
1189 // this test anyway. | 1194 // this test anyway. |
1190 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 1195 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
1191 session->connection()->CloseConnection(QUIC_PUBLIC_RESET, "test", | 1196 session->connection()->CloseConnection(QUIC_PUBLIC_RESET, "test", |
1192 ConnectionCloseBehavior::SILENT_CLOSE); | 1197 ConnectionCloseBehavior::SILENT_CLOSE); |
1193 | 1198 |
1194 STLDeleteElements(&streams); | 1199 STLDeleteElements(&streams); |
1195 } | 1200 } |
1196 | 1201 |
1197 TEST_P(QuicStreamFactoryTest, ResolutionErrorInCreate) { | 1202 TEST_P(QuicStreamFactoryTest, ResolutionErrorInCreate) { |
1198 Initialize(); | 1203 Initialize(); |
1199 SequencedSocketData socket_data(nullptr, 0, nullptr, 0); | 1204 SequencedSocketData socket_data(nullptr, 0, nullptr, 0); |
1200 socket_factory_.AddSocketDataProvider(&socket_data); | 1205 socket_factory_.AddSocketDataProvider(&socket_data); |
1201 | 1206 |
1202 host_resolver_.rules()->AddSimulatedFailure(kDefaultServerHostName); | 1207 host_resolver_.rules()->AddSimulatedFailure(kDefaultServerHostName); |
1203 | 1208 |
1204 QuicStreamRequest request(factory_.get()); | 1209 QuicStreamRequest request(factory_.get()); |
1205 EXPECT_EQ(ERR_IO_PENDING, | 1210 EXPECT_EQ(ERR_IO_PENDING, |
1206 request.Request(host_port_pair_, privacy_mode_, | 1211 request.Request(host_port_pair_, privacy_mode_, |
1207 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1212 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1208 callback_.callback())); | 1213 callback_.callback())); |
1209 | 1214 |
1210 EXPECT_EQ(ERR_NAME_NOT_RESOLVED, callback_.WaitForResult()); | 1215 EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_NAME_NOT_RESOLVED)); |
1211 | 1216 |
1212 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 1217 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
1213 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 1218 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
1214 } | 1219 } |
1215 | 1220 |
1216 TEST_P(QuicStreamFactoryTest, ConnectErrorInCreate) { | 1221 TEST_P(QuicStreamFactoryTest, ConnectErrorInCreate) { |
1217 Initialize(); | 1222 Initialize(); |
1218 MockConnect connect(SYNCHRONOUS, ERR_ADDRESS_IN_USE); | 1223 MockConnect connect(SYNCHRONOUS, ERR_ADDRESS_IN_USE); |
1219 SequencedSocketData socket_data(nullptr, 0, nullptr, 0); | 1224 SequencedSocketData socket_data(nullptr, 0, nullptr, 0); |
1220 socket_data.set_connect_data(connect); | 1225 socket_data.set_connect_data(connect); |
1221 socket_factory_.AddSocketDataProvider(&socket_data); | 1226 socket_factory_.AddSocketDataProvider(&socket_data); |
1222 | 1227 |
1223 QuicStreamRequest request(factory_.get()); | 1228 QuicStreamRequest request(factory_.get()); |
1224 EXPECT_EQ(ERR_IO_PENDING, | 1229 EXPECT_EQ(ERR_IO_PENDING, |
1225 request.Request(host_port_pair_, privacy_mode_, | 1230 request.Request(host_port_pair_, privacy_mode_, |
1226 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1231 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1227 callback_.callback())); | 1232 callback_.callback())); |
1228 | 1233 |
1229 EXPECT_EQ(ERR_ADDRESS_IN_USE, callback_.WaitForResult()); | 1234 EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_ADDRESS_IN_USE)); |
1230 | 1235 |
1231 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 1236 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
1232 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 1237 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
1233 } | 1238 } |
1234 | 1239 |
1235 TEST_P(QuicStreamFactoryTest, CancelCreate) { | 1240 TEST_P(QuicStreamFactoryTest, CancelCreate) { |
1236 Initialize(); | 1241 Initialize(); |
1237 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 1242 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
1238 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); | 1243 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
1239 socket_factory_.AddSocketDataProvider(&socket_data); | 1244 socket_factory_.AddSocketDataProvider(&socket_data); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1308 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 1313 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
1309 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); | 1314 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
1310 socket_factory_.AddSocketDataProvider(&socket_data2); | 1315 socket_factory_.AddSocketDataProvider(&socket_data2); |
1311 | 1316 |
1312 QuicStreamRequest request(factory_.get()); | 1317 QuicStreamRequest request(factory_.get()); |
1313 EXPECT_EQ(ERR_IO_PENDING, | 1318 EXPECT_EQ(ERR_IO_PENDING, |
1314 request.Request(host_port_pair_, privacy_mode_, | 1319 request.Request(host_port_pair_, privacy_mode_, |
1315 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1320 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1316 callback_.callback())); | 1321 callback_.callback())); |
1317 | 1322 |
1318 EXPECT_EQ(OK, callback_.WaitForResult()); | 1323 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
1319 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1324 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
1320 HttpRequestInfo request_info; | 1325 HttpRequestInfo request_info; |
1321 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1326 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
1322 net_log_, CompletionCallback())); | 1327 net_log_, CompletionCallback())); |
1323 | 1328 |
1324 // Close the session and verify that stream saw the error. | 1329 // Close the session and verify that stream saw the error. |
1325 factory_->CloseAllSessions(ERR_INTERNET_DISCONNECTED, QUIC_INTERNAL_ERROR); | 1330 factory_->CloseAllSessions(ERR_INTERNET_DISCONNECTED, QUIC_INTERNAL_ERROR); |
1326 EXPECT_EQ(ERR_INTERNET_DISCONNECTED, | 1331 EXPECT_EQ(ERR_INTERNET_DISCONNECTED, |
1327 stream->ReadResponseHeaders(callback_.callback())); | 1332 stream->ReadResponseHeaders(callback_.callback())); |
1328 | 1333 |
1329 // Now attempting to request a stream to the same origin should create | 1334 // Now attempting to request a stream to the same origin should create |
1330 // a new session. | 1335 // a new session. |
1331 | 1336 |
1332 QuicStreamRequest request2(factory_.get()); | 1337 QuicStreamRequest request2(factory_.get()); |
1333 EXPECT_EQ(ERR_IO_PENDING, | 1338 EXPECT_EQ(ERR_IO_PENDING, |
1334 request2.Request(host_port_pair_, privacy_mode_, | 1339 request2.Request(host_port_pair_, privacy_mode_, |
1335 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1340 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1336 callback_.callback())); | 1341 callback_.callback())); |
1337 | 1342 |
1338 EXPECT_EQ(OK, callback_.WaitForResult()); | 1343 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
1339 stream = request2.CreateStream(); | 1344 stream = request2.CreateStream(); |
1340 stream.reset(); // Will reset stream 3. | 1345 stream.reset(); // Will reset stream 3. |
1341 | 1346 |
1342 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 1347 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
1343 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 1348 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
1344 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); | 1349 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
1345 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); | 1350 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
1346 } | 1351 } |
1347 | 1352 |
1348 TEST_P(QuicStreamFactoryTest, OnIPAddressChanged) { | 1353 TEST_P(QuicStreamFactoryTest, OnIPAddressChanged) { |
(...skipping 15 matching lines...) Expand all Loading... |
1364 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 1369 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
1365 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); | 1370 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
1366 socket_factory_.AddSocketDataProvider(&socket_data2); | 1371 socket_factory_.AddSocketDataProvider(&socket_data2); |
1367 | 1372 |
1368 QuicStreamRequest request(factory_.get()); | 1373 QuicStreamRequest request(factory_.get()); |
1369 EXPECT_EQ(ERR_IO_PENDING, | 1374 EXPECT_EQ(ERR_IO_PENDING, |
1370 request.Request(host_port_pair_, privacy_mode_, | 1375 request.Request(host_port_pair_, privacy_mode_, |
1371 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1376 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1372 callback_.callback())); | 1377 callback_.callback())); |
1373 | 1378 |
1374 EXPECT_EQ(OK, callback_.WaitForResult()); | 1379 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
1375 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1380 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
1376 HttpRequestInfo request_info; | 1381 HttpRequestInfo request_info; |
1377 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1382 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
1378 net_log_, CompletionCallback())); | 1383 net_log_, CompletionCallback())); |
1379 | 1384 |
1380 // Change the IP address and verify that stream saw the error. | 1385 // Change the IP address and verify that stream saw the error. |
1381 NotifyIPAddressChanged(); | 1386 NotifyIPAddressChanged(); |
1382 EXPECT_EQ(ERR_NETWORK_CHANGED, | 1387 EXPECT_EQ(ERR_NETWORK_CHANGED, |
1383 stream->ReadResponseHeaders(callback_.callback())); | 1388 stream->ReadResponseHeaders(callback_.callback())); |
1384 EXPECT_TRUE(factory_->require_confirmation()); | 1389 EXPECT_TRUE(factory_->require_confirmation()); |
1385 | 1390 |
1386 // Now attempting to request a stream to the same origin should create | 1391 // Now attempting to request a stream to the same origin should create |
1387 // a new session. | 1392 // a new session. |
1388 | 1393 |
1389 QuicStreamRequest request2(factory_.get()); | 1394 QuicStreamRequest request2(factory_.get()); |
1390 EXPECT_EQ(ERR_IO_PENDING, | 1395 EXPECT_EQ(ERR_IO_PENDING, |
1391 request2.Request(host_port_pair_, privacy_mode_, | 1396 request2.Request(host_port_pair_, privacy_mode_, |
1392 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1397 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1393 callback_.callback())); | 1398 callback_.callback())); |
1394 | 1399 |
1395 EXPECT_EQ(OK, callback_.WaitForResult()); | 1400 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
1396 stream = request2.CreateStream(); | 1401 stream = request2.CreateStream(); |
1397 stream.reset(); // Will reset stream 3. | 1402 stream.reset(); // Will reset stream 3. |
1398 | 1403 |
1399 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 1404 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
1400 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 1405 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
1401 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); | 1406 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
1402 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); | 1407 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
1403 } | 1408 } |
1404 | 1409 |
1405 TEST_P(QuicStreamFactoryTest, OnNetworkChangeSoonToDisconnect) { | 1410 TEST_P(QuicStreamFactoryTest, OnNetworkChangeSoonToDisconnect) { |
(...skipping 11 matching lines...) Expand all Loading... |
1417 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1422 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
1418 arraysize(writes)); | 1423 arraysize(writes)); |
1419 socket_factory_.AddSocketDataProvider(&socket_data); | 1424 socket_factory_.AddSocketDataProvider(&socket_data); |
1420 | 1425 |
1421 // Create request and QuicHttpStream. | 1426 // Create request and QuicHttpStream. |
1422 QuicStreamRequest request(factory_.get()); | 1427 QuicStreamRequest request(factory_.get()); |
1423 EXPECT_EQ(ERR_IO_PENDING, | 1428 EXPECT_EQ(ERR_IO_PENDING, |
1424 request.Request(host_port_pair_, privacy_mode_, | 1429 request.Request(host_port_pair_, privacy_mode_, |
1425 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1430 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1426 callback_.callback())); | 1431 callback_.callback())); |
1427 EXPECT_EQ(OK, callback_.WaitForResult()); | 1432 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
1428 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1433 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
1429 EXPECT_TRUE(stream.get()); | 1434 EXPECT_TRUE(stream.get()); |
1430 | 1435 |
1431 // Cause QUIC stream to be created. | 1436 // Cause QUIC stream to be created. |
1432 HttpRequestInfo request_info; | 1437 HttpRequestInfo request_info; |
1433 request_info.method = "GET"; | 1438 request_info.method = "GET"; |
1434 request_info.url = url_; | 1439 request_info.url = url_; |
1435 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1440 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
1436 net_log_, CompletionCallback())); | 1441 net_log_, CompletionCallback())); |
1437 | 1442 |
(...skipping 29 matching lines...) Expand all Loading... |
1467 ->NotifyNetworkSoonToDisconnect(kDefaultNetworkForTests); | 1472 ->NotifyNetworkSoonToDisconnect(kDefaultNetworkForTests); |
1468 | 1473 |
1469 // The session should now be marked as going away. Ensure that | 1474 // The session should now be marked as going away. Ensure that |
1470 // while it is still alive, it is no longer active. | 1475 // while it is still alive, it is no longer active. |
1471 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 1476 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
1472 EXPECT_FALSE(HasActiveSession(host_port_pair_)); | 1477 EXPECT_FALSE(HasActiveSession(host_port_pair_)); |
1473 EXPECT_EQ(1u, session->GetNumActiveStreams()); | 1478 EXPECT_EQ(1u, session->GetNumActiveStreams()); |
1474 | 1479 |
1475 // Verify that response headers on the migrated socket were delivered to the | 1480 // Verify that response headers on the migrated socket were delivered to the |
1476 // stream. | 1481 // stream. |
1477 EXPECT_EQ(OK, stream->ReadResponseHeaders(callback_.callback())); | 1482 EXPECT_THAT(stream->ReadResponseHeaders(callback_.callback()), IsOk()); |
1478 EXPECT_EQ(200, response.headers->response_code()); | 1483 EXPECT_EQ(200, response.headers->response_code()); |
1479 | 1484 |
1480 // Create a new request for the same destination and verify that a | 1485 // Create a new request for the same destination and verify that a |
1481 // new session is created. | 1486 // new session is created. |
1482 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 1487 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
1483 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); | 1488 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
1484 socket_factory_.AddSocketDataProvider(&socket_data2); | 1489 socket_factory_.AddSocketDataProvider(&socket_data2); |
1485 | 1490 |
1486 QuicStreamRequest request2(factory_.get()); | 1491 QuicStreamRequest request2(factory_.get()); |
1487 EXPECT_EQ(ERR_IO_PENDING, | 1492 EXPECT_EQ(ERR_IO_PENDING, |
1488 request2.Request(host_port_pair_, privacy_mode_, | 1493 request2.Request(host_port_pair_, privacy_mode_, |
1489 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1494 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1490 callback_.callback())); | 1495 callback_.callback())); |
1491 EXPECT_EQ(OK, callback_.WaitForResult()); | 1496 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
1492 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); | 1497 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); |
1493 EXPECT_TRUE(stream2.get()); | 1498 EXPECT_TRUE(stream2.get()); |
1494 | 1499 |
1495 EXPECT_TRUE(HasActiveSession(host_port_pair_)); | 1500 EXPECT_TRUE(HasActiveSession(host_port_pair_)); |
1496 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_); | 1501 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_); |
1497 EXPECT_NE(session, new_session); | 1502 EXPECT_NE(session, new_session); |
1498 | 1503 |
1499 // On a DISCONNECTED notification, nothing happens to the migrated | 1504 // On a DISCONNECTED notification, nothing happens to the migrated |
1500 // session, but the new session is closed since it has no open | 1505 // session, but the new session is closed since it has no open |
1501 // streams. | 1506 // streams. |
(...skipping 27 matching lines...) Expand all Loading... |
1529 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1534 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
1530 arraysize(writes)); | 1535 arraysize(writes)); |
1531 socket_factory_.AddSocketDataProvider(&socket_data); | 1536 socket_factory_.AddSocketDataProvider(&socket_data); |
1532 | 1537 |
1533 // Create request and QuicHttpStream. | 1538 // Create request and QuicHttpStream. |
1534 QuicStreamRequest request(factory_.get()); | 1539 QuicStreamRequest request(factory_.get()); |
1535 EXPECT_EQ(ERR_IO_PENDING, | 1540 EXPECT_EQ(ERR_IO_PENDING, |
1536 request.Request(host_port_pair_, privacy_mode_, | 1541 request.Request(host_port_pair_, privacy_mode_, |
1537 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1542 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1538 callback_.callback())); | 1543 callback_.callback())); |
1539 EXPECT_EQ(OK, callback_.WaitForResult()); | 1544 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
1540 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1545 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
1541 EXPECT_TRUE(stream.get()); | 1546 EXPECT_TRUE(stream.get()); |
1542 | 1547 |
1543 // Cause QUIC stream to be created. | 1548 // Cause QUIC stream to be created. |
1544 HttpRequestInfo request_info; | 1549 HttpRequestInfo request_info; |
1545 request_info.method = "GET"; | 1550 request_info.method = "GET"; |
1546 request_info.url = url_; | 1551 request_info.url = url_; |
1547 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1552 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
1548 net_log_, CompletionCallback())); | 1553 net_log_, CompletionCallback())); |
1549 | 1554 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1589 // new session is created. | 1594 // new session is created. |
1590 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 1595 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
1591 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); | 1596 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
1592 socket_factory_.AddSocketDataProvider(&socket_data2); | 1597 socket_factory_.AddSocketDataProvider(&socket_data2); |
1593 | 1598 |
1594 QuicStreamRequest request2(factory_.get()); | 1599 QuicStreamRequest request2(factory_.get()); |
1595 EXPECT_EQ(ERR_IO_PENDING, | 1600 EXPECT_EQ(ERR_IO_PENDING, |
1596 request2.Request(host_port_pair_, privacy_mode_, | 1601 request2.Request(host_port_pair_, privacy_mode_, |
1597 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1602 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1598 callback_.callback())); | 1603 callback_.callback())); |
1599 EXPECT_EQ(OK, callback_.WaitForResult()); | 1604 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
1600 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); | 1605 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); |
1601 EXPECT_TRUE(stream2.get()); | 1606 EXPECT_TRUE(stream2.get()); |
1602 | 1607 |
1603 EXPECT_TRUE(HasActiveSession(host_port_pair_)); | 1608 EXPECT_TRUE(HasActiveSession(host_port_pair_)); |
1604 EXPECT_NE(session, GetActiveSession(host_port_pair_)); | 1609 EXPECT_NE(session, GetActiveSession(host_port_pair_)); |
1605 EXPECT_EQ(true, | 1610 EXPECT_EQ(true, |
1606 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 1611 QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
1607 | 1612 |
1608 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 1613 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
1609 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 1614 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
(...skipping 18 matching lines...) Expand all Loading... |
1628 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1633 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
1629 arraysize(writes)); | 1634 arraysize(writes)); |
1630 socket_factory_.AddSocketDataProvider(&socket_data); | 1635 socket_factory_.AddSocketDataProvider(&socket_data); |
1631 | 1636 |
1632 // Create request and QuicHttpStream. | 1637 // Create request and QuicHttpStream. |
1633 QuicStreamRequest request(factory_.get()); | 1638 QuicStreamRequest request(factory_.get()); |
1634 EXPECT_EQ(ERR_IO_PENDING, | 1639 EXPECT_EQ(ERR_IO_PENDING, |
1635 request.Request(host_port_pair_, privacy_mode_, | 1640 request.Request(host_port_pair_, privacy_mode_, |
1636 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1641 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1637 callback_.callback())); | 1642 callback_.callback())); |
1638 EXPECT_EQ(OK, callback_.WaitForResult()); | 1643 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
1639 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1644 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
1640 EXPECT_TRUE(stream.get()); | 1645 EXPECT_TRUE(stream.get()); |
1641 | 1646 |
1642 // Cause QUIC stream to be created. | 1647 // Cause QUIC stream to be created. |
1643 HttpRequestInfo request_info; | 1648 HttpRequestInfo request_info; |
1644 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1649 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
1645 net_log_, CompletionCallback())); | 1650 net_log_, CompletionCallback())); |
1646 | 1651 |
1647 // Ensure that session is alive and active. | 1652 // Ensure that session is alive and active. |
1648 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 1653 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1681 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1686 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
1682 arraysize(writes)); | 1687 arraysize(writes)); |
1683 socket_factory_.AddSocketDataProvider(&socket_data); | 1688 socket_factory_.AddSocketDataProvider(&socket_data); |
1684 | 1689 |
1685 // Create request and QuicHttpStream. | 1690 // Create request and QuicHttpStream. |
1686 QuicStreamRequest request(factory_.get()); | 1691 QuicStreamRequest request(factory_.get()); |
1687 EXPECT_EQ(ERR_IO_PENDING, | 1692 EXPECT_EQ(ERR_IO_PENDING, |
1688 request.Request(host_port_pair_, privacy_mode_, | 1693 request.Request(host_port_pair_, privacy_mode_, |
1689 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1694 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1690 callback_.callback())); | 1695 callback_.callback())); |
1691 EXPECT_EQ(OK, callback_.WaitForResult()); | 1696 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
1692 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1697 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
1693 EXPECT_TRUE(stream.get()); | 1698 EXPECT_TRUE(stream.get()); |
1694 | 1699 |
1695 // Cause QUIC stream to be created. | 1700 // Cause QUIC stream to be created. |
1696 HttpRequestInfo request_info; | 1701 HttpRequestInfo request_info; |
1697 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1702 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
1698 net_log_, CompletionCallback())); | 1703 net_log_, CompletionCallback())); |
1699 | 1704 |
1700 // Ensure that session is alive and active. | 1705 // Ensure that session is alive and active. |
1701 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 1706 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
(...skipping 27 matching lines...) Expand all Loading... |
1729 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1734 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
1730 arraysize(writes)); | 1735 arraysize(writes)); |
1731 socket_factory_.AddSocketDataProvider(&socket_data); | 1736 socket_factory_.AddSocketDataProvider(&socket_data); |
1732 | 1737 |
1733 // Create request and QuicHttpStream. | 1738 // Create request and QuicHttpStream. |
1734 QuicStreamRequest request(factory_.get()); | 1739 QuicStreamRequest request(factory_.get()); |
1735 EXPECT_EQ(ERR_IO_PENDING, | 1740 EXPECT_EQ(ERR_IO_PENDING, |
1736 request.Request(host_port_pair_, privacy_mode_, | 1741 request.Request(host_port_pair_, privacy_mode_, |
1737 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1742 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1738 callback_.callback())); | 1743 callback_.callback())); |
1739 EXPECT_EQ(OK, callback_.WaitForResult()); | 1744 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
1740 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1745 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
1741 EXPECT_TRUE(stream.get()); | 1746 EXPECT_TRUE(stream.get()); |
1742 | 1747 |
1743 // Cause QUIC stream to be created. | 1748 // Cause QUIC stream to be created. |
1744 HttpRequestInfo request_info; | 1749 HttpRequestInfo request_info; |
1745 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1750 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
1746 net_log_, CompletionCallback())); | 1751 net_log_, CompletionCallback())); |
1747 | 1752 |
1748 // Ensure that session is alive and active. | 1753 // Ensure that session is alive and active. |
1749 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 1754 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
(...skipping 30 matching lines...) Expand all Loading... |
1780 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1785 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
1781 arraysize(writes)); | 1786 arraysize(writes)); |
1782 socket_factory_.AddSocketDataProvider(&socket_data); | 1787 socket_factory_.AddSocketDataProvider(&socket_data); |
1783 | 1788 |
1784 // Create request and QuicHttpStream. | 1789 // Create request and QuicHttpStream. |
1785 QuicStreamRequest request(factory_.get()); | 1790 QuicStreamRequest request(factory_.get()); |
1786 EXPECT_EQ(ERR_IO_PENDING, | 1791 EXPECT_EQ(ERR_IO_PENDING, |
1787 request.Request(host_port_pair_, privacy_mode_, | 1792 request.Request(host_port_pair_, privacy_mode_, |
1788 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1793 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1789 callback_.callback())); | 1794 callback_.callback())); |
1790 EXPECT_EQ(OK, callback_.WaitForResult()); | 1795 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
1791 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1796 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
1792 EXPECT_TRUE(stream.get()); | 1797 EXPECT_TRUE(stream.get()); |
1793 | 1798 |
1794 // Cause QUIC stream to be created. | 1799 // Cause QUIC stream to be created. |
1795 HttpRequestInfo request_info; | 1800 HttpRequestInfo request_info; |
1796 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1801 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
1797 net_log_, CompletionCallback())); | 1802 net_log_, CompletionCallback())); |
1798 | 1803 |
1799 // Ensure that session is alive and active. | 1804 // Ensure that session is alive and active. |
1800 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 1805 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
(...skipping 29 matching lines...) Expand all Loading... |
1830 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1835 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
1831 arraysize(writes)); | 1836 arraysize(writes)); |
1832 socket_factory_.AddSocketDataProvider(&socket_data); | 1837 socket_factory_.AddSocketDataProvider(&socket_data); |
1833 | 1838 |
1834 // Create request and QuicHttpStream. | 1839 // Create request and QuicHttpStream. |
1835 QuicStreamRequest request(factory_.get()); | 1840 QuicStreamRequest request(factory_.get()); |
1836 EXPECT_EQ(ERR_IO_PENDING, | 1841 EXPECT_EQ(ERR_IO_PENDING, |
1837 request.Request(host_port_pair_, privacy_mode_, | 1842 request.Request(host_port_pair_, privacy_mode_, |
1838 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1843 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1839 callback_.callback())); | 1844 callback_.callback())); |
1840 EXPECT_EQ(OK, callback_.WaitForResult()); | 1845 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
1841 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1846 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
1842 EXPECT_TRUE(stream.get()); | 1847 EXPECT_TRUE(stream.get()); |
1843 | 1848 |
1844 // Cause QUIC stream to be created, but marked as non-migratable. | 1849 // Cause QUIC stream to be created, but marked as non-migratable. |
1845 HttpRequestInfo request_info; | 1850 HttpRequestInfo request_info; |
1846 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; | 1851 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; |
1847 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1852 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
1848 net_log_, CompletionCallback())); | 1853 net_log_, CompletionCallback())); |
1849 | 1854 |
1850 // Ensure that session is alive and active. | 1855 // Ensure that session is alive and active. |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1883 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1888 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
1884 arraysize(writes)); | 1889 arraysize(writes)); |
1885 socket_factory_.AddSocketDataProvider(&socket_data); | 1890 socket_factory_.AddSocketDataProvider(&socket_data); |
1886 | 1891 |
1887 // Create request and QuicHttpStream. | 1892 // Create request and QuicHttpStream. |
1888 QuicStreamRequest request(factory_.get()); | 1893 QuicStreamRequest request(factory_.get()); |
1889 EXPECT_EQ(ERR_IO_PENDING, | 1894 EXPECT_EQ(ERR_IO_PENDING, |
1890 request.Request(host_port_pair_, privacy_mode_, | 1895 request.Request(host_port_pair_, privacy_mode_, |
1891 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1896 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1892 callback_.callback())); | 1897 callback_.callback())); |
1893 EXPECT_EQ(OK, callback_.WaitForResult()); | 1898 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
1894 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1899 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
1895 EXPECT_TRUE(stream.get()); | 1900 EXPECT_TRUE(stream.get()); |
1896 | 1901 |
1897 // Cause QUIC stream to be created. | 1902 // Cause QUIC stream to be created. |
1898 HttpRequestInfo request_info; | 1903 HttpRequestInfo request_info; |
1899 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1904 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
1900 net_log_, CompletionCallback())); | 1905 net_log_, CompletionCallback())); |
1901 | 1906 |
1902 // Ensure that session is alive and active. | 1907 // Ensure that session is alive and active. |
1903 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 1908 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1938 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1943 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
1939 arraysize(writes)); | 1944 arraysize(writes)); |
1940 socket_factory_.AddSocketDataProvider(&socket_data); | 1945 socket_factory_.AddSocketDataProvider(&socket_data); |
1941 | 1946 |
1942 // Create request and QuicHttpStream. | 1947 // Create request and QuicHttpStream. |
1943 QuicStreamRequest request(factory_.get()); | 1948 QuicStreamRequest request(factory_.get()); |
1944 EXPECT_EQ(ERR_IO_PENDING, | 1949 EXPECT_EQ(ERR_IO_PENDING, |
1945 request.Request(host_port_pair_, privacy_mode_, | 1950 request.Request(host_port_pair_, privacy_mode_, |
1946 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 1951 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1947 callback_.callback())); | 1952 callback_.callback())); |
1948 EXPECT_EQ(OK, callback_.WaitForResult()); | 1953 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
1949 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 1954 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
1950 EXPECT_TRUE(stream.get()); | 1955 EXPECT_TRUE(stream.get()); |
1951 | 1956 |
1952 // Cause QUIC stream to be created, but marked as non-migratable. | 1957 // Cause QUIC stream to be created, but marked as non-migratable. |
1953 HttpRequestInfo request_info; | 1958 HttpRequestInfo request_info; |
1954 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; | 1959 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; |
1955 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 1960 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
1956 net_log_, CompletionCallback())); | 1961 net_log_, CompletionCallback())); |
1957 | 1962 |
1958 // Ensure that session is alive and active. | 1963 // Ensure that session is alive and active. |
(...skipping 30 matching lines...) Expand all Loading... |
1989 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 1994 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
1990 arraysize(writes)); | 1995 arraysize(writes)); |
1991 socket_factory_.AddSocketDataProvider(&socket_data); | 1996 socket_factory_.AddSocketDataProvider(&socket_data); |
1992 | 1997 |
1993 // Create request and QuicHttpStream. | 1998 // Create request and QuicHttpStream. |
1994 QuicStreamRequest request(factory_.get()); | 1999 QuicStreamRequest request(factory_.get()); |
1995 EXPECT_EQ(ERR_IO_PENDING, | 2000 EXPECT_EQ(ERR_IO_PENDING, |
1996 request.Request(host_port_pair_, privacy_mode_, | 2001 request.Request(host_port_pair_, privacy_mode_, |
1997 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2002 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
1998 callback_.callback())); | 2003 callback_.callback())); |
1999 EXPECT_EQ(OK, callback_.WaitForResult()); | 2004 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
2000 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2005 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
2001 EXPECT_TRUE(stream.get()); | 2006 EXPECT_TRUE(stream.get()); |
2002 | 2007 |
2003 // Cause QUIC stream to be created. | 2008 // Cause QUIC stream to be created. |
2004 HttpRequestInfo request_info; | 2009 HttpRequestInfo request_info; |
2005 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 2010 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
2006 net_log_, CompletionCallback())); | 2011 net_log_, CompletionCallback())); |
2007 | 2012 |
2008 // Ensure that session is alive and active. | 2013 // Ensure that session is alive and active. |
2009 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 2014 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
(...skipping 26 matching lines...) Expand all Loading... |
2036 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 2041 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
2037 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0u); | 2042 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0u); |
2038 socket_factory_.AddSocketDataProvider(&socket_data); | 2043 socket_factory_.AddSocketDataProvider(&socket_data); |
2039 | 2044 |
2040 // Create request and QuicHttpStream. | 2045 // Create request and QuicHttpStream. |
2041 QuicStreamRequest request(factory_.get()); | 2046 QuicStreamRequest request(factory_.get()); |
2042 EXPECT_EQ(ERR_IO_PENDING, | 2047 EXPECT_EQ(ERR_IO_PENDING, |
2043 request.Request(host_port_pair_, privacy_mode_, | 2048 request.Request(host_port_pair_, privacy_mode_, |
2044 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2049 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
2045 callback_.callback())); | 2050 callback_.callback())); |
2046 EXPECT_EQ(OK, callback_.WaitForResult()); | 2051 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
2047 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2052 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
2048 EXPECT_TRUE(stream.get()); | 2053 EXPECT_TRUE(stream.get()); |
2049 | 2054 |
2050 // Ensure that session is alive and active. | 2055 // Ensure that session is alive and active. |
2051 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 2056 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
2052 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 2057 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
2053 EXPECT_TRUE(HasActiveSession(host_port_pair_)); | 2058 EXPECT_TRUE(HasActiveSession(host_port_pair_)); |
2054 | 2059 |
2055 // Trigger connection migration. Since there are no active streams, | 2060 // Trigger connection migration. Since there are no active streams, |
2056 // the session will be closed. | 2061 // the session will be closed. |
(...skipping 16 matching lines...) Expand all Loading... |
2073 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 2078 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
2074 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0u); | 2079 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0u); |
2075 socket_factory_.AddSocketDataProvider(&socket_data); | 2080 socket_factory_.AddSocketDataProvider(&socket_data); |
2076 | 2081 |
2077 // Create request and QuicHttpStream. | 2082 // Create request and QuicHttpStream. |
2078 QuicStreamRequest request(factory_.get()); | 2083 QuicStreamRequest request(factory_.get()); |
2079 EXPECT_EQ(ERR_IO_PENDING, | 2084 EXPECT_EQ(ERR_IO_PENDING, |
2080 request.Request(host_port_pair_, privacy_mode_, | 2085 request.Request(host_port_pair_, privacy_mode_, |
2081 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2086 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
2082 callback_.callback())); | 2087 callback_.callback())); |
2083 EXPECT_EQ(OK, callback_.WaitForResult()); | 2088 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
2084 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2089 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
2085 EXPECT_TRUE(stream.get()); | 2090 EXPECT_TRUE(stream.get()); |
2086 | 2091 |
2087 // Ensure that session is alive and active. | 2092 // Ensure that session is alive and active. |
2088 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 2093 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
2089 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 2094 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
2090 EXPECT_TRUE(HasActiveSession(host_port_pair_)); | 2095 EXPECT_TRUE(HasActiveSession(host_port_pair_)); |
2091 | 2096 |
2092 // Trigger connection migration. Since there are no active streams, | 2097 // Trigger connection migration. Since there are no active streams, |
2093 // the session will be closed. | 2098 // the session will be closed. |
(...skipping 22 matching lines...) Expand all Loading... |
2116 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 2121 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
2117 arraysize(writes)); | 2122 arraysize(writes)); |
2118 socket_factory_.AddSocketDataProvider(&socket_data); | 2123 socket_factory_.AddSocketDataProvider(&socket_data); |
2119 | 2124 |
2120 // Create request and QuicHttpStream. | 2125 // Create request and QuicHttpStream. |
2121 QuicStreamRequest request(factory_.get()); | 2126 QuicStreamRequest request(factory_.get()); |
2122 EXPECT_EQ(ERR_IO_PENDING, | 2127 EXPECT_EQ(ERR_IO_PENDING, |
2123 request.Request(host_port_pair_, privacy_mode_, | 2128 request.Request(host_port_pair_, privacy_mode_, |
2124 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2129 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
2125 callback_.callback())); | 2130 callback_.callback())); |
2126 EXPECT_EQ(OK, callback_.WaitForResult()); | 2131 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
2127 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2132 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
2128 EXPECT_TRUE(stream.get()); | 2133 EXPECT_TRUE(stream.get()); |
2129 | 2134 |
2130 // Cause QUIC stream to be created. | 2135 // Cause QUIC stream to be created. |
2131 HttpRequestInfo request_info; | 2136 HttpRequestInfo request_info; |
2132 request_info.method = "GET"; | 2137 request_info.method = "GET"; |
2133 request_info.url = url_; | 2138 request_info.url = url_; |
2134 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 2139 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
2135 net_log_, CompletionCallback())); | 2140 net_log_, CompletionCallback())); |
2136 | 2141 |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2169 base::RunLoop().RunUntilIdle(); | 2174 base::RunLoop().RunUntilIdle(); |
2170 | 2175 |
2171 // The session should now be marked as going away. Ensure that | 2176 // The session should now be marked as going away. Ensure that |
2172 // while it is still alive, it is no longer active. | 2177 // while it is still alive, it is no longer active. |
2173 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); | 2178 EXPECT_TRUE(QuicStreamFactoryPeer::IsLiveSession(factory_.get(), session)); |
2174 EXPECT_FALSE(HasActiveSession(host_port_pair_)); | 2179 EXPECT_FALSE(HasActiveSession(host_port_pair_)); |
2175 EXPECT_EQ(1u, session->GetNumActiveStreams()); | 2180 EXPECT_EQ(1u, session->GetNumActiveStreams()); |
2176 | 2181 |
2177 // Verify that response headers on the migrated socket were delivered to the | 2182 // Verify that response headers on the migrated socket were delivered to the |
2178 // stream. | 2183 // stream. |
2179 EXPECT_EQ(OK, stream->ReadResponseHeaders(callback_.callback())); | 2184 EXPECT_THAT(stream->ReadResponseHeaders(callback_.callback()), IsOk()); |
2180 EXPECT_EQ(200, response.headers->response_code()); | 2185 EXPECT_EQ(200, response.headers->response_code()); |
2181 | 2186 |
2182 // Create a new request for the same destination and verify that a | 2187 // Create a new request for the same destination and verify that a |
2183 // new session is created. | 2188 // new session is created. |
2184 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 2189 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
2185 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); | 2190 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
2186 socket_factory_.AddSocketDataProvider(&socket_data2); | 2191 socket_factory_.AddSocketDataProvider(&socket_data2); |
2187 | 2192 |
2188 QuicStreamRequest request2(factory_.get()); | 2193 QuicStreamRequest request2(factory_.get()); |
2189 EXPECT_EQ(ERR_IO_PENDING, | 2194 EXPECT_EQ(ERR_IO_PENDING, |
2190 request2.Request(host_port_pair_, privacy_mode_, | 2195 request2.Request(host_port_pair_, privacy_mode_, |
2191 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2196 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
2192 callback_.callback())); | 2197 callback_.callback())); |
2193 EXPECT_EQ(OK, callback_.WaitForResult()); | 2198 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
2194 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); | 2199 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); |
2195 EXPECT_TRUE(stream2.get()); | 2200 EXPECT_TRUE(stream2.get()); |
2196 | 2201 |
2197 EXPECT_TRUE(HasActiveSession(host_port_pair_)); | 2202 EXPECT_TRUE(HasActiveSession(host_port_pair_)); |
2198 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_); | 2203 QuicChromiumClientSession* new_session = GetActiveSession(host_port_pair_); |
2199 EXPECT_NE(session, new_session); | 2204 EXPECT_NE(session, new_session); |
2200 | 2205 |
2201 // On a SOON_TO_DISCONNECT notification, nothing happens to the | 2206 // On a SOON_TO_DISCONNECT notification, nothing happens to the |
2202 // migrated session, but the new session is closed since it has no | 2207 // migrated session, but the new session is closed since it has no |
2203 // open streams. | 2208 // open streams. |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2236 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 2241 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
2237 arraysize(writes)); | 2242 arraysize(writes)); |
2238 socket_factory_.AddSocketDataProvider(&socket_data); | 2243 socket_factory_.AddSocketDataProvider(&socket_data); |
2239 | 2244 |
2240 // Create request and QuicHttpStream. | 2245 // Create request and QuicHttpStream. |
2241 QuicStreamRequest request(factory_.get()); | 2246 QuicStreamRequest request(factory_.get()); |
2242 EXPECT_EQ(ERR_IO_PENDING, | 2247 EXPECT_EQ(ERR_IO_PENDING, |
2243 request.Request(host_port_pair_, privacy_mode_, | 2248 request.Request(host_port_pair_, privacy_mode_, |
2244 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2249 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
2245 callback_.callback())); | 2250 callback_.callback())); |
2246 EXPECT_EQ(OK, callback_.WaitForResult()); | 2251 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
2247 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2252 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
2248 EXPECT_TRUE(stream.get()); | 2253 EXPECT_TRUE(stream.get()); |
2249 | 2254 |
2250 // Cause QUIC stream to be created. | 2255 // Cause QUIC stream to be created. |
2251 HttpRequestInfo request_info; | 2256 HttpRequestInfo request_info; |
2252 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 2257 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
2253 net_log_, CompletionCallback())); | 2258 net_log_, CompletionCallback())); |
2254 | 2259 |
2255 // Ensure that session is alive and active. | 2260 // Ensure that session is alive and active. |
2256 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 2261 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2291 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 2296 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
2292 arraysize(writes)); | 2297 arraysize(writes)); |
2293 socket_factory_.AddSocketDataProvider(&socket_data); | 2298 socket_factory_.AddSocketDataProvider(&socket_data); |
2294 | 2299 |
2295 // Create request and QuicHttpStream. | 2300 // Create request and QuicHttpStream. |
2296 QuicStreamRequest request(factory_.get()); | 2301 QuicStreamRequest request(factory_.get()); |
2297 EXPECT_EQ(ERR_IO_PENDING, | 2302 EXPECT_EQ(ERR_IO_PENDING, |
2298 request.Request(host_port_pair_, privacy_mode_, | 2303 request.Request(host_port_pair_, privacy_mode_, |
2299 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2304 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
2300 callback_.callback())); | 2305 callback_.callback())); |
2301 EXPECT_EQ(OK, callback_.WaitForResult()); | 2306 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
2302 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2307 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
2303 EXPECT_TRUE(stream.get()); | 2308 EXPECT_TRUE(stream.get()); |
2304 | 2309 |
2305 // Cause QUIC stream to be created, but marked as non-migratable. | 2310 // Cause QUIC stream to be created, but marked as non-migratable. |
2306 HttpRequestInfo request_info; | 2311 HttpRequestInfo request_info; |
2307 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; | 2312 request_info.load_flags |= LOAD_DISABLE_CONNECTION_MIGRATION; |
2308 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 2313 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
2309 net_log_, CompletionCallback())); | 2314 net_log_, CompletionCallback())); |
2310 | 2315 |
2311 // Ensure that session is alive and active. | 2316 // Ensure that session is alive and active. |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2346 SequencedSocketData socket_data(reads, arraysize(reads), writes, | 2351 SequencedSocketData socket_data(reads, arraysize(reads), writes, |
2347 arraysize(writes)); | 2352 arraysize(writes)); |
2348 socket_factory_.AddSocketDataProvider(&socket_data); | 2353 socket_factory_.AddSocketDataProvider(&socket_data); |
2349 | 2354 |
2350 // Create request and QuicHttpStream. | 2355 // Create request and QuicHttpStream. |
2351 QuicStreamRequest request(factory_.get()); | 2356 QuicStreamRequest request(factory_.get()); |
2352 EXPECT_EQ(ERR_IO_PENDING, | 2357 EXPECT_EQ(ERR_IO_PENDING, |
2353 request.Request(host_port_pair_, privacy_mode_, | 2358 request.Request(host_port_pair_, privacy_mode_, |
2354 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2359 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
2355 callback_.callback())); | 2360 callback_.callback())); |
2356 EXPECT_EQ(OK, callback_.WaitForResult()); | 2361 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
2357 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2362 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
2358 EXPECT_TRUE(stream.get()); | 2363 EXPECT_TRUE(stream.get()); |
2359 | 2364 |
2360 // Cause QUIC stream to be created. | 2365 // Cause QUIC stream to be created. |
2361 HttpRequestInfo request_info; | 2366 HttpRequestInfo request_info; |
2362 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 2367 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
2363 net_log_, CompletionCallback())); | 2368 net_log_, CompletionCallback())); |
2364 | 2369 |
2365 // Ensure that session is alive and active. | 2370 // Ensure that session is alive and active. |
2366 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 2371 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2407 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 2412 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
2408 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); | 2413 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
2409 socket_factory_.AddSocketDataProvider(&socket_data2); | 2414 socket_factory_.AddSocketDataProvider(&socket_data2); |
2410 | 2415 |
2411 QuicStreamRequest request(factory_.get()); | 2416 QuicStreamRequest request(factory_.get()); |
2412 EXPECT_EQ(ERR_IO_PENDING, | 2417 EXPECT_EQ(ERR_IO_PENDING, |
2413 request.Request(host_port_pair_, privacy_mode_, | 2418 request.Request(host_port_pair_, privacy_mode_, |
2414 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2419 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
2415 callback_.callback())); | 2420 callback_.callback())); |
2416 | 2421 |
2417 EXPECT_EQ(OK, callback_.WaitForResult()); | 2422 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
2418 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2423 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
2419 HttpRequestInfo request_info; | 2424 HttpRequestInfo request_info; |
2420 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 2425 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
2421 net_log_, CompletionCallback())); | 2426 net_log_, CompletionCallback())); |
2422 | 2427 |
2423 ssl_config_service_->NotifySSLConfigChange(); | 2428 ssl_config_service_->NotifySSLConfigChange(); |
2424 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, | 2429 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, |
2425 stream->ReadResponseHeaders(callback_.callback())); | 2430 stream->ReadResponseHeaders(callback_.callback())); |
2426 EXPECT_FALSE(factory_->require_confirmation()); | 2431 EXPECT_FALSE(factory_->require_confirmation()); |
2427 | 2432 |
2428 // Now attempting to request a stream to the same origin should create | 2433 // Now attempting to request a stream to the same origin should create |
2429 // a new session. | 2434 // a new session. |
2430 | 2435 |
2431 QuicStreamRequest request2(factory_.get()); | 2436 QuicStreamRequest request2(factory_.get()); |
2432 EXPECT_EQ(ERR_IO_PENDING, | 2437 EXPECT_EQ(ERR_IO_PENDING, |
2433 request2.Request(host_port_pair_, privacy_mode_, | 2438 request2.Request(host_port_pair_, privacy_mode_, |
2434 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2439 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
2435 callback_.callback())); | 2440 callback_.callback())); |
2436 | 2441 |
2437 EXPECT_EQ(OK, callback_.WaitForResult()); | 2442 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
2438 stream = request2.CreateStream(); | 2443 stream = request2.CreateStream(); |
2439 stream.reset(); // Will reset stream 3. | 2444 stream.reset(); // Will reset stream 3. |
2440 | 2445 |
2441 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 2446 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
2442 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 2447 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
2443 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); | 2448 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
2444 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); | 2449 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
2445 } | 2450 } |
2446 | 2451 |
2447 TEST_P(QuicStreamFactoryTest, OnCertAdded) { | 2452 TEST_P(QuicStreamFactoryTest, OnCertAdded) { |
(...skipping 14 matching lines...) Expand all Loading... |
2462 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 2467 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
2463 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); | 2468 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
2464 socket_factory_.AddSocketDataProvider(&socket_data2); | 2469 socket_factory_.AddSocketDataProvider(&socket_data2); |
2465 | 2470 |
2466 QuicStreamRequest request(factory_.get()); | 2471 QuicStreamRequest request(factory_.get()); |
2467 EXPECT_EQ(ERR_IO_PENDING, | 2472 EXPECT_EQ(ERR_IO_PENDING, |
2468 request.Request(host_port_pair_, privacy_mode_, | 2473 request.Request(host_port_pair_, privacy_mode_, |
2469 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2474 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
2470 callback_.callback())); | 2475 callback_.callback())); |
2471 | 2476 |
2472 EXPECT_EQ(OK, callback_.WaitForResult()); | 2477 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
2473 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2478 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
2474 HttpRequestInfo request_info; | 2479 HttpRequestInfo request_info; |
2475 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 2480 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
2476 net_log_, CompletionCallback())); | 2481 net_log_, CompletionCallback())); |
2477 | 2482 |
2478 // Add a cert and verify that stream saw the event. | 2483 // Add a cert and verify that stream saw the event. |
2479 factory_->OnCertAdded(nullptr); | 2484 factory_->OnCertAdded(nullptr); |
2480 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, | 2485 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, |
2481 stream->ReadResponseHeaders(callback_.callback())); | 2486 stream->ReadResponseHeaders(callback_.callback())); |
2482 EXPECT_FALSE(factory_->require_confirmation()); | 2487 EXPECT_FALSE(factory_->require_confirmation()); |
2483 | 2488 |
2484 // Now attempting to request a stream to the same origin should create | 2489 // Now attempting to request a stream to the same origin should create |
2485 // a new session. | 2490 // a new session. |
2486 | 2491 |
2487 QuicStreamRequest request2(factory_.get()); | 2492 QuicStreamRequest request2(factory_.get()); |
2488 EXPECT_EQ(ERR_IO_PENDING, | 2493 EXPECT_EQ(ERR_IO_PENDING, |
2489 request2.Request(host_port_pair_, privacy_mode_, | 2494 request2.Request(host_port_pair_, privacy_mode_, |
2490 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2495 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
2491 callback_.callback())); | 2496 callback_.callback())); |
2492 | 2497 |
2493 EXPECT_EQ(OK, callback_.WaitForResult()); | 2498 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
2494 stream = request2.CreateStream(); | 2499 stream = request2.CreateStream(); |
2495 stream.reset(); // Will reset stream 3. | 2500 stream.reset(); // Will reset stream 3. |
2496 | 2501 |
2497 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 2502 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
2498 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 2503 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
2499 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); | 2504 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
2500 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); | 2505 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
2501 } | 2506 } |
2502 | 2507 |
2503 TEST_P(QuicStreamFactoryTest, OnCACertChanged) { | 2508 TEST_P(QuicStreamFactoryTest, OnCACertChanged) { |
(...skipping 14 matching lines...) Expand all Loading... |
2518 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 2523 MockRead reads2[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
2519 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); | 2524 SequencedSocketData socket_data2(reads2, arraysize(reads2), nullptr, 0); |
2520 socket_factory_.AddSocketDataProvider(&socket_data2); | 2525 socket_factory_.AddSocketDataProvider(&socket_data2); |
2521 | 2526 |
2522 QuicStreamRequest request(factory_.get()); | 2527 QuicStreamRequest request(factory_.get()); |
2523 EXPECT_EQ(ERR_IO_PENDING, | 2528 EXPECT_EQ(ERR_IO_PENDING, |
2524 request.Request(host_port_pair_, privacy_mode_, | 2529 request.Request(host_port_pair_, privacy_mode_, |
2525 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2530 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
2526 callback_.callback())); | 2531 callback_.callback())); |
2527 | 2532 |
2528 EXPECT_EQ(OK, callback_.WaitForResult()); | 2533 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
2529 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 2534 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
2530 HttpRequestInfo request_info; | 2535 HttpRequestInfo request_info; |
2531 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, | 2536 EXPECT_EQ(OK, stream->InitializeStream(&request_info, DEFAULT_PRIORITY, |
2532 net_log_, CompletionCallback())); | 2537 net_log_, CompletionCallback())); |
2533 | 2538 |
2534 // Change the CA cert and verify that stream saw the event. | 2539 // Change the CA cert and verify that stream saw the event. |
2535 factory_->OnCACertChanged(nullptr); | 2540 factory_->OnCACertChanged(nullptr); |
2536 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, | 2541 EXPECT_EQ(ERR_CERT_DATABASE_CHANGED, |
2537 stream->ReadResponseHeaders(callback_.callback())); | 2542 stream->ReadResponseHeaders(callback_.callback())); |
2538 EXPECT_FALSE(factory_->require_confirmation()); | 2543 EXPECT_FALSE(factory_->require_confirmation()); |
2539 | 2544 |
2540 // Now attempting to request a stream to the same origin should create | 2545 // Now attempting to request a stream to the same origin should create |
2541 // a new session. | 2546 // a new session. |
2542 | 2547 |
2543 QuicStreamRequest request2(factory_.get()); | 2548 QuicStreamRequest request2(factory_.get()); |
2544 EXPECT_EQ(ERR_IO_PENDING, | 2549 EXPECT_EQ(ERR_IO_PENDING, |
2545 request2.Request(host_port_pair_, privacy_mode_, | 2550 request2.Request(host_port_pair_, privacy_mode_, |
2546 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 2551 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
2547 callback_.callback())); | 2552 callback_.callback())); |
2548 | 2553 |
2549 EXPECT_EQ(OK, callback_.WaitForResult()); | 2554 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
2550 stream = request2.CreateStream(); | 2555 stream = request2.CreateStream(); |
2551 stream.reset(); // Will reset stream 3. | 2556 stream.reset(); // Will reset stream 3. |
2552 | 2557 |
2553 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 2558 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
2554 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 2559 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
2555 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); | 2560 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
2556 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); | 2561 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
2557 } | 2562 } |
2558 | 2563 |
2559 TEST_P(QuicStreamFactoryTest, SharedCryptoConfig) { | 2564 TEST_P(QuicStreamFactoryTest, SharedCryptoConfig) { |
(...skipping 1132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3692 // server supports QUIC. | 3697 // server supports QUIC. |
3693 QuicStreamFactoryPeer::SetDelayTcpRace(factory_.get(), true); | 3698 QuicStreamFactoryPeer::SetDelayTcpRace(factory_.get(), true); |
3694 EXPECT_TRUE(factory_->delay_tcp_race()); | 3699 EXPECT_TRUE(factory_->delay_tcp_race()); |
3695 EXPECT_EQ(base::TimeDelta::FromMicroseconds(15), | 3700 EXPECT_EQ(base::TimeDelta::FromMicroseconds(15), |
3696 request.GetTimeDelayForWaitingJob()); | 3701 request.GetTimeDelayForWaitingJob()); |
3697 | 3702 |
3698 // Confirm the handshake and verify that the stream is created. | 3703 // Confirm the handshake and verify that the stream is created. |
3699 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent( | 3704 crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent( |
3700 QuicSession::HANDSHAKE_CONFIRMED); | 3705 QuicSession::HANDSHAKE_CONFIRMED); |
3701 | 3706 |
3702 EXPECT_EQ(OK, callback_.WaitForResult()); | 3707 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
3703 | 3708 |
3704 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 3709 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
3705 EXPECT_TRUE(stream.get()); | 3710 EXPECT_TRUE(stream.get()); |
3706 EXPECT_TRUE(socket_data.AllReadDataConsumed()); | 3711 EXPECT_TRUE(socket_data.AllReadDataConsumed()); |
3707 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); | 3712 EXPECT_TRUE(socket_data.AllWriteDataConsumed()); |
3708 QuicStreamFactoryPeer::SetDelayTcpRace(factory_.get(), delay_tcp_race); | 3713 QuicStreamFactoryPeer::SetDelayTcpRace(factory_.get(), delay_tcp_race); |
3709 } | 3714 } |
3710 | 3715 |
3711 TEST_P(QuicStreamFactoryTest, MaybeInitialize) { | 3716 TEST_P(QuicStreamFactoryTest, MaybeInitialize) { |
3712 idle_connection_timeout_seconds_ = 500; | 3717 idle_connection_timeout_seconds_ = 500; |
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3990 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 3995 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
3991 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); | 3996 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
3992 socket_factory_.AddSocketDataProvider(&socket_data); | 3997 socket_factory_.AddSocketDataProvider(&socket_data); |
3993 | 3998 |
3994 QuicStreamRequest request(factory_.get()); | 3999 QuicStreamRequest request(factory_.get()); |
3995 EXPECT_EQ(ERR_IO_PENDING, | 4000 EXPECT_EQ(ERR_IO_PENDING, |
3996 request.Request(host_port_pair_, privacy_mode_, | 4001 request.Request(host_port_pair_, privacy_mode_, |
3997 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 4002 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
3998 callback_.callback())); | 4003 callback_.callback())); |
3999 | 4004 |
4000 EXPECT_EQ(OK, callback_.WaitForResult()); | 4005 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
4001 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 4006 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
4002 EXPECT_TRUE(stream.get()); | 4007 EXPECT_TRUE(stream.get()); |
4003 | 4008 |
4004 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); | 4009 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); |
4005 | 4010 |
4006 string url = "https://www.example.org/"; | 4011 string url = "https://www.example.org/"; |
4007 | 4012 |
4008 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 4013 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
4009 | 4014 |
4010 QuicClientPromisedInfo promised(session, kServerDataStreamId1, kDefaultUrl); | 4015 QuicClientPromisedInfo promised(session, kServerDataStreamId1, kDefaultUrl); |
(...skipping 28 matching lines...) Expand all Loading... |
4039 | 4044 |
4040 socket_factory_.AddSocketDataProvider(&socket_data1); | 4045 socket_factory_.AddSocketDataProvider(&socket_data1); |
4041 socket_factory_.AddSocketDataProvider(&socket_data2); | 4046 socket_factory_.AddSocketDataProvider(&socket_data2); |
4042 | 4047 |
4043 QuicStreamRequest request(factory_.get()); | 4048 QuicStreamRequest request(factory_.get()); |
4044 EXPECT_EQ(ERR_IO_PENDING, | 4049 EXPECT_EQ(ERR_IO_PENDING, |
4045 request.Request(host_port_pair_, privacy_mode_, | 4050 request.Request(host_port_pair_, privacy_mode_, |
4046 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 4051 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
4047 callback_.callback())); | 4052 callback_.callback())); |
4048 | 4053 |
4049 EXPECT_EQ(OK, callback_.WaitForResult()); | 4054 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
4050 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); | 4055 std::unique_ptr<QuicHttpStream> stream = request.CreateStream(); |
4051 EXPECT_TRUE(stream.get()); | 4056 EXPECT_TRUE(stream.get()); |
4052 | 4057 |
4053 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); | 4058 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); |
4054 | 4059 |
4055 string url = "https://www.example.org/"; | 4060 string url = "https://www.example.org/"; |
4056 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); | 4061 QuicChromiumClientSession* session = GetActiveSession(host_port_pair_); |
4057 | 4062 |
4058 QuicClientPromisedInfo promised(session, kServerDataStreamId1, kDefaultUrl); | 4063 QuicClientPromisedInfo promised(session, kServerDataStreamId1, kDefaultUrl); |
4059 | 4064 |
4060 QuicClientPushPromiseIndex* index = | 4065 QuicClientPushPromiseIndex* index = |
4061 QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get()); | 4066 QuicStreamFactoryPeer::GetPushPromiseIndex(factory_.get()); |
4062 | 4067 |
4063 (*index->promised_by_url())[kDefaultUrl] = &promised; | 4068 (*index->promised_by_url())[kDefaultUrl] = &promised; |
4064 EXPECT_EQ(index->GetPromised(kDefaultUrl), &promised); | 4069 EXPECT_EQ(index->GetPromised(kDefaultUrl), &promised); |
4065 | 4070 |
4066 // Doing the request should not use the push stream, but rather | 4071 // Doing the request should not use the push stream, but rather |
4067 // cancel it because the privacy modes do not match. | 4072 // cancel it because the privacy modes do not match. |
4068 QuicStreamRequest request2(factory_.get()); | 4073 QuicStreamRequest request2(factory_.get()); |
4069 EXPECT_EQ(ERR_IO_PENDING, | 4074 EXPECT_EQ(ERR_IO_PENDING, |
4070 request2.Request(host_port_pair_, PRIVACY_MODE_ENABLED, | 4075 request2.Request(host_port_pair_, PRIVACY_MODE_ENABLED, |
4071 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 4076 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
4072 callback_.callback())); | 4077 callback_.callback())); |
4073 | 4078 |
4074 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); | 4079 EXPECT_EQ(0, QuicStreamFactoryPeer::GetNumPushStreamsCreated(factory_.get())); |
4075 EXPECT_EQ(index->GetPromised(kDefaultUrl), nullptr); | 4080 EXPECT_EQ(index->GetPromised(kDefaultUrl), nullptr); |
4076 | 4081 |
4077 EXPECT_EQ(OK, callback_.WaitForResult()); | 4082 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
4078 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); | 4083 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); |
4079 EXPECT_TRUE(stream2.get()); | 4084 EXPECT_TRUE(stream2.get()); |
4080 | 4085 |
4081 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); | 4086 EXPECT_TRUE(socket_data1.AllReadDataConsumed()); |
4082 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); | 4087 EXPECT_TRUE(socket_data1.AllWriteDataConsumed()); |
4083 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); | 4088 EXPECT_TRUE(socket_data2.AllReadDataConsumed()); |
4084 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); | 4089 EXPECT_TRUE(socket_data2.AllWriteDataConsumed()); |
4085 } | 4090 } |
4086 | 4091 |
4087 // Pool to existing session with matching QuicServerId | 4092 // Pool to existing session with matching QuicServerId |
4088 // even if destination is different. | 4093 // even if destination is different. |
4089 TEST_P(QuicStreamFactoryTest, PoolByOrigin) { | 4094 TEST_P(QuicStreamFactoryTest, PoolByOrigin) { |
4090 Initialize(); | 4095 Initialize(); |
4091 | 4096 |
4092 HostPortPair destination1("first.example.com", 443); | 4097 HostPortPair destination1("first.example.com", 443); |
4093 HostPortPair destination2("second.example.com", 443); | 4098 HostPortPair destination2("second.example.com", 443); |
4094 | 4099 |
4095 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); | 4100 ProofVerifyDetailsChromium verify_details = DefaultProofVerifyDetails(); |
4096 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 4101 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
4097 | 4102 |
4098 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; | 4103 MockRead reads[] = {MockRead(SYNCHRONOUS, ERR_IO_PENDING, 0)}; |
4099 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); | 4104 SequencedSocketData socket_data(reads, arraysize(reads), nullptr, 0); |
4100 socket_factory_.AddSocketDataProvider(&socket_data); | 4105 socket_factory_.AddSocketDataProvider(&socket_data); |
4101 | 4106 |
4102 QuicStreamRequest request1(factory_.get()); | 4107 QuicStreamRequest request1(factory_.get()); |
4103 EXPECT_EQ(ERR_IO_PENDING, | 4108 EXPECT_EQ(ERR_IO_PENDING, |
4104 request1.Request(destination1, privacy_mode_, | 4109 request1.Request(destination1, privacy_mode_, |
4105 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 4110 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
4106 callback_.callback())); | 4111 callback_.callback())); |
4107 EXPECT_EQ(OK, callback_.WaitForResult()); | 4112 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
4108 std::unique_ptr<QuicHttpStream> stream1 = request1.CreateStream(); | 4113 std::unique_ptr<QuicHttpStream> stream1 = request1.CreateStream(); |
4109 EXPECT_TRUE(stream1.get()); | 4114 EXPECT_TRUE(stream1.get()); |
4110 EXPECT_TRUE(HasActiveSession(host_port_pair_)); | 4115 EXPECT_TRUE(HasActiveSession(host_port_pair_)); |
4111 | 4116 |
4112 // Second request returns synchronously because it pools to existing session. | 4117 // Second request returns synchronously because it pools to existing session. |
4113 TestCompletionCallback callback2; | 4118 TestCompletionCallback callback2; |
4114 QuicStreamRequest request2(factory_.get()); | 4119 QuicStreamRequest request2(factory_.get()); |
4115 EXPECT_EQ(OK, request2.Request(destination2, privacy_mode_, | 4120 EXPECT_EQ(OK, request2.Request(destination2, privacy_mode_, |
4116 /*cert_verify_flags=*/0, url_, "GET", net_log_, | 4121 /*cert_verify_flags=*/0, url_, "GET", net_log_, |
4117 callback2.callback())); | 4122 callback2.callback())); |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4210 verify_details.cert_verify_result.is_issued_by_known_root = true; | 4215 verify_details.cert_verify_result.is_issued_by_known_root = true; |
4211 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 4216 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
4212 | 4217 |
4213 AddHangingSocketData(); | 4218 AddHangingSocketData(); |
4214 | 4219 |
4215 QuicStreamRequest request(factory_.get()); | 4220 QuicStreamRequest request(factory_.get()); |
4216 EXPECT_EQ(ERR_IO_PENDING, request.Request(destination, privacy_mode_, | 4221 EXPECT_EQ(ERR_IO_PENDING, request.Request(destination, privacy_mode_, |
4217 /*cert_verify_flags=*/0, url, "GET", | 4222 /*cert_verify_flags=*/0, url, "GET", |
4218 net_log_, callback_.callback())); | 4223 net_log_, callback_.callback())); |
4219 | 4224 |
4220 EXPECT_EQ(ERR_QUIC_HANDSHAKE_FAILED, callback_.WaitForResult()); | 4225 EXPECT_THAT(callback_.WaitForResult(), IsError(ERR_QUIC_HANDSHAKE_FAILED)); |
4221 | 4226 |
4222 EXPECT_TRUE(AllDataConsumed()); | 4227 EXPECT_TRUE(AllDataConsumed()); |
4223 } | 4228 } |
4224 | 4229 |
4225 // QuicStreamRequest is pooled based on |destination| if certificate matches. | 4230 // QuicStreamRequest is pooled based on |destination| if certificate matches. |
4226 TEST_P(QuicStreamFactoryWithDestinationTest, SharedCertificate) { | 4231 TEST_P(QuicStreamFactoryWithDestinationTest, SharedCertificate) { |
4227 Initialize(); | 4232 Initialize(); |
4228 | 4233 |
4229 GURL url1("https://www.example.org/"); | 4234 GURL url1("https://www.example.org/"); |
4230 GURL url2("https://mail.example.org/"); | 4235 GURL url2("https://mail.example.org/"); |
(...skipping 14 matching lines...) Expand all Loading... |
4245 verify_details.cert_verify_result.is_issued_by_known_root = true; | 4250 verify_details.cert_verify_result.is_issued_by_known_root = true; |
4246 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); | 4251 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details); |
4247 | 4252 |
4248 AddHangingSocketData(); | 4253 AddHangingSocketData(); |
4249 | 4254 |
4250 QuicStreamRequest request1(factory_.get()); | 4255 QuicStreamRequest request1(factory_.get()); |
4251 EXPECT_EQ(ERR_IO_PENDING, | 4256 EXPECT_EQ(ERR_IO_PENDING, |
4252 request1.Request(destination, privacy_mode_, | 4257 request1.Request(destination, privacy_mode_, |
4253 /*cert_verify_flags=*/0, url1, "GET", net_log_, | 4258 /*cert_verify_flags=*/0, url1, "GET", net_log_, |
4254 callback_.callback())); | 4259 callback_.callback())); |
4255 EXPECT_EQ(OK, callback_.WaitForResult()); | 4260 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
4256 std::unique_ptr<QuicHttpStream> stream1 = request1.CreateStream(); | 4261 std::unique_ptr<QuicHttpStream> stream1 = request1.CreateStream(); |
4257 EXPECT_TRUE(stream1.get()); | 4262 EXPECT_TRUE(stream1.get()); |
4258 EXPECT_TRUE(HasActiveSession(origin1_)); | 4263 EXPECT_TRUE(HasActiveSession(origin1_)); |
4259 | 4264 |
4260 // Second request returns synchronously because it pools to existing session. | 4265 // Second request returns synchronously because it pools to existing session. |
4261 TestCompletionCallback callback2; | 4266 TestCompletionCallback callback2; |
4262 QuicStreamRequest request2(factory_.get()); | 4267 QuicStreamRequest request2(factory_.get()); |
4263 EXPECT_EQ(OK, request2.Request(destination, privacy_mode_, | 4268 EXPECT_EQ(OK, request2.Request(destination, privacy_mode_, |
4264 /*cert_verify_flags=*/0, url2, "GET", net_log_, | 4269 /*cert_verify_flags=*/0, url2, "GET", net_log_, |
4265 callback2.callback())); | 4270 callback2.callback())); |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4379 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2); | 4384 crypto_client_stream_factory_.AddProofVerifyDetails(&verify_details2); |
4380 | 4385 |
4381 AddHangingSocketData(); | 4386 AddHangingSocketData(); |
4382 AddHangingSocketData(); | 4387 AddHangingSocketData(); |
4383 | 4388 |
4384 QuicStreamRequest request1(factory_.get()); | 4389 QuicStreamRequest request1(factory_.get()); |
4385 EXPECT_EQ(ERR_IO_PENDING, | 4390 EXPECT_EQ(ERR_IO_PENDING, |
4386 request1.Request(destination, privacy_mode_, | 4391 request1.Request(destination, privacy_mode_, |
4387 /*cert_verify_flags=*/0, url1, "GET", net_log_, | 4392 /*cert_verify_flags=*/0, url1, "GET", net_log_, |
4388 callback_.callback())); | 4393 callback_.callback())); |
4389 EXPECT_EQ(OK, callback_.WaitForResult()); | 4394 EXPECT_THAT(callback_.WaitForResult(), IsOk()); |
4390 std::unique_ptr<QuicHttpStream> stream1 = request1.CreateStream(); | 4395 std::unique_ptr<QuicHttpStream> stream1 = request1.CreateStream(); |
4391 EXPECT_TRUE(stream1.get()); | 4396 EXPECT_TRUE(stream1.get()); |
4392 EXPECT_TRUE(HasActiveSession(origin1_)); | 4397 EXPECT_TRUE(HasActiveSession(origin1_)); |
4393 | 4398 |
4394 TestCompletionCallback callback2; | 4399 TestCompletionCallback callback2; |
4395 QuicStreamRequest request2(factory_.get()); | 4400 QuicStreamRequest request2(factory_.get()); |
4396 EXPECT_EQ(ERR_IO_PENDING, | 4401 EXPECT_EQ(ERR_IO_PENDING, |
4397 request2.Request(destination, privacy_mode_, | 4402 request2.Request(destination, privacy_mode_, |
4398 /*cert_verify_flags=*/0, url2, "GET", net_log_, | 4403 /*cert_verify_flags=*/0, url2, "GET", net_log_, |
4399 callback2.callback())); | 4404 callback2.callback())); |
4400 EXPECT_EQ(OK, callback2.WaitForResult()); | 4405 EXPECT_THAT(callback2.WaitForResult(), IsOk()); |
4401 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); | 4406 std::unique_ptr<QuicHttpStream> stream2 = request2.CreateStream(); |
4402 EXPECT_TRUE(stream2.get()); | 4407 EXPECT_TRUE(stream2.get()); |
4403 | 4408 |
4404 // |request2| does not pool to the first session, because the certificate does | 4409 // |request2| does not pool to the first session, because the certificate does |
4405 // not match. Instead, another session is opened to the same destination, but | 4410 // not match. Instead, another session is opened to the same destination, but |
4406 // with a different QuicServerId. | 4411 // with a different QuicServerId. |
4407 QuicChromiumClientSession* session1 = | 4412 QuicChromiumClientSession* session1 = |
4408 QuicHttpStreamPeer::GetSession(stream1.get()); | 4413 QuicHttpStreamPeer::GetSession(stream1.get()); |
4409 QuicChromiumClientSession* session2 = | 4414 QuicChromiumClientSession* session2 = |
4410 QuicHttpStreamPeer::GetSession(stream2.get()); | 4415 QuicHttpStreamPeer::GetSession(stream2.get()); |
4411 EXPECT_NE(session1, session2); | 4416 EXPECT_NE(session1, session2); |
4412 | 4417 |
4413 EXPECT_EQ(QuicServerId(origin1_, privacy_mode_), session1->server_id()); | 4418 EXPECT_EQ(QuicServerId(origin1_, privacy_mode_), session1->server_id()); |
4414 EXPECT_EQ(QuicServerId(origin2_, privacy_mode_), session2->server_id()); | 4419 EXPECT_EQ(QuicServerId(origin2_, privacy_mode_), session2->server_id()); |
4415 | 4420 |
4416 EXPECT_TRUE(AllDataConsumed()); | 4421 EXPECT_TRUE(AllDataConsumed()); |
4417 } | 4422 } |
4418 | 4423 |
4419 } // namespace test | 4424 } // namespace test |
4420 } // namespace net | 4425 } // namespace net |
OLD | NEW |