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

Side by Side Diff: net/quic/quic_stream_factory_test.cc

Issue 2109503009: Refactor net tests to use GMock matchers for checking net::Error results (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert changes to contents.txt files Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/quic/quic_network_transaction_unittest.cc ('k') | net/server/http_server_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « net/quic/quic_network_transaction_unittest.cc ('k') | net/server/http_server_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698