| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/chromium/bidirectional_stream_quic_impl.h" | 5 #include "net/quic/chromium/bidirectional_stream_quic_impl.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/callback_helpers.h" | 9 #include "base/callback_helpers.h" |
| 10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
| (...skipping 638 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 649 std::unique_ptr<QuicReceivedPacket> ConstructServerAckPacket( | 649 std::unique_ptr<QuicReceivedPacket> ConstructServerAckPacket( |
| 650 QuicPacketNumber packet_number, | 650 QuicPacketNumber packet_number, |
| 651 QuicPacketNumber largest_received, | 651 QuicPacketNumber largest_received, |
| 652 QuicPacketNumber smallest_received, | 652 QuicPacketNumber smallest_received, |
| 653 QuicPacketNumber least_unacked) { | 653 QuicPacketNumber least_unacked) { |
| 654 return server_maker_.MakeAckPacket(packet_number, largest_received, | 654 return server_maker_.MakeAckPacket(packet_number, largest_received, |
| 655 smallest_received, least_unacked, | 655 smallest_received, least_unacked, |
| 656 !kIncludeCongestionFeedback); | 656 !kIncludeCongestionFeedback); |
| 657 } | 657 } |
| 658 | 658 |
| 659 std::unique_ptr<QuicReceivedPacket> ConstructSettingsPacket( | 659 std::unique_ptr<QuicReceivedPacket> ConstructInitialSettingsPacket( |
| 660 QuicPacketNumber packet_number, | 660 QuicPacketNumber packet_number, |
| 661 SpdySettingsIds id, | |
| 662 size_t value, | |
| 663 QuicStreamOffset* offset) { | 661 QuicStreamOffset* offset) { |
| 664 return client_maker_.MakeSettingsPacket(packet_number, id, value, | 662 return client_maker_.MakeInitialSettingsPacket(packet_number, offset); |
| 665 kIncludeVersion, offset); | |
| 666 } | 663 } |
| 667 | 664 |
| 668 void ExpectLoadTimingValid(const LoadTimingInfo& load_timing_info, | 665 void ExpectLoadTimingValid(const LoadTimingInfo& load_timing_info, |
| 669 bool session_reused) { | 666 bool session_reused) { |
| 670 EXPECT_EQ(session_reused, load_timing_info.socket_reused); | 667 EXPECT_EQ(session_reused, load_timing_info.socket_reused); |
| 671 | 668 |
| 672 if (session_reused) { | 669 if (session_reused) { |
| 673 ExpectConnectTimingHasNoTimes(load_timing_info.connect_timing); | 670 ExpectConnectTimingHasNoTimes(load_timing_info.connect_timing); |
| 674 } else { | 671 } else { |
| 675 ExpectConnectTimingHasTimes( | 672 ExpectConnectTimingHasTimes( |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 715 BidirectionalStreamQuicImplTest, | 712 BidirectionalStreamQuicImplTest, |
| 716 ::testing::ValuesIn(AllSupportedVersions())); | 713 ::testing::ValuesIn(AllSupportedVersions())); |
| 717 | 714 |
| 718 TEST_P(BidirectionalStreamQuicImplTest, GetRequest) { | 715 TEST_P(BidirectionalStreamQuicImplTest, GetRequest) { |
| 719 SetRequest("GET", "/", DEFAULT_PRIORITY); | 716 SetRequest("GET", "/", DEFAULT_PRIORITY); |
| 720 size_t spdy_request_headers_frame_length; | 717 size_t spdy_request_headers_frame_length; |
| 721 QuicStreamOffset header_stream_offset = 0; | 718 QuicStreamOffset header_stream_offset = 0; |
| 722 AddWrite(ConstructRequestHeadersPacketInner( | 719 AddWrite(ConstructRequestHeadersPacketInner( |
| 723 1, kClientDataStreamId1, kFin, DEFAULT_PRIORITY, | 720 1, kClientDataStreamId1, kFin, DEFAULT_PRIORITY, |
| 724 &spdy_request_headers_frame_length, &header_stream_offset)); | 721 &spdy_request_headers_frame_length, &header_stream_offset)); |
| 725 AddWrite(ConstructSettingsPacket(2, SETTINGS_MAX_HEADER_LIST_SIZE, | 722 AddWrite(ConstructInitialSettingsPacket(2, &header_stream_offset)); |
| 726 kDefaultMaxUncompressedHeaderSize, | |
| 727 &header_stream_offset)); | |
| 728 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); | 723 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); |
| 729 | 724 |
| 730 Initialize(); | 725 Initialize(); |
| 731 | 726 |
| 732 BidirectionalStreamRequestInfo request; | 727 BidirectionalStreamRequestInfo request; |
| 733 request.method = "GET"; | 728 request.method = "GET"; |
| 734 request.url = GURL("http://www.google.com/"); | 729 request.url = GURL("http://www.google.com/"); |
| 735 request.end_stream_on_headers = true; | 730 request.end_stream_on_headers = true; |
| 736 request.priority = DEFAULT_PRIORITY; | 731 request.priority = DEFAULT_PRIORITY; |
| 737 | 732 |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 817 | 812 |
| 818 TEST_P(BidirectionalStreamQuicImplTest, LoadTimingTwoRequests) { | 813 TEST_P(BidirectionalStreamQuicImplTest, LoadTimingTwoRequests) { |
| 819 SetRequest("GET", "/", DEFAULT_PRIORITY); | 814 SetRequest("GET", "/", DEFAULT_PRIORITY); |
| 820 QuicStreamOffset offset = 0; | 815 QuicStreamOffset offset = 0; |
| 821 AddWrite(ConstructRequestHeadersPacketInner( | 816 AddWrite(ConstructRequestHeadersPacketInner( |
| 822 1, kClientDataStreamId1, kFin, DEFAULT_PRIORITY, nullptr, &offset)); | 817 1, kClientDataStreamId1, kFin, DEFAULT_PRIORITY, nullptr, &offset)); |
| 823 // SetRequest() again for second request as |request_headers_| was moved. | 818 // SetRequest() again for second request as |request_headers_| was moved. |
| 824 SetRequest("GET", "/", DEFAULT_PRIORITY); | 819 SetRequest("GET", "/", DEFAULT_PRIORITY); |
| 825 AddWrite(ConstructRequestHeadersPacketInner( | 820 AddWrite(ConstructRequestHeadersPacketInner( |
| 826 2, kClientDataStreamId2, kFin, DEFAULT_PRIORITY, nullptr, &offset)); | 821 2, kClientDataStreamId2, kFin, DEFAULT_PRIORITY, nullptr, &offset)); |
| 827 AddWrite(ConstructSettingsPacket(3, SETTINGS_MAX_HEADER_LIST_SIZE, | 822 AddWrite(ConstructInitialSettingsPacket(3, &offset)); |
| 828 kDefaultMaxUncompressedHeaderSize, &offset)); | |
| 829 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); | 823 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); |
| 830 Initialize(); | 824 Initialize(); |
| 831 | 825 |
| 832 BidirectionalStreamRequestInfo request; | 826 BidirectionalStreamRequestInfo request; |
| 833 request.method = "GET"; | 827 request.method = "GET"; |
| 834 request.url = GURL("http://www.google.com/"); | 828 request.url = GURL("http://www.google.com/"); |
| 835 request.end_stream_on_headers = true; | 829 request.end_stream_on_headers = true; |
| 836 request.priority = DEFAULT_PRIORITY; | 830 request.priority = DEFAULT_PRIORITY; |
| 837 | 831 |
| 838 // Start first request. | 832 // Start first request. |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 880 EXPECT_EQ(OK, delegate->ReadData(dummy_callback.callback())); | 874 EXPECT_EQ(OK, delegate->ReadData(dummy_callback.callback())); |
| 881 EXPECT_EQ(OK, delegate2->ReadData(dummy_callback.callback())); | 875 EXPECT_EQ(OK, delegate2->ReadData(dummy_callback.callback())); |
| 882 } | 876 } |
| 883 | 877 |
| 884 // Tests that when request headers are not delayed, only data buffers are | 878 // Tests that when request headers are not delayed, only data buffers are |
| 885 // coalesced. | 879 // coalesced. |
| 886 TEST_P(BidirectionalStreamQuicImplTest, CoalesceDataBuffersNotHeadersFrame) { | 880 TEST_P(BidirectionalStreamQuicImplTest, CoalesceDataBuffersNotHeadersFrame) { |
| 887 SetRequest("POST", "/", DEFAULT_PRIORITY); | 881 SetRequest("POST", "/", DEFAULT_PRIORITY); |
| 888 size_t spdy_request_headers_frame_length; | 882 size_t spdy_request_headers_frame_length; |
| 889 QuicStreamOffset header_stream_offset = 0; | 883 QuicStreamOffset header_stream_offset = 0; |
| 890 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 884 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); |
| 891 kDefaultMaxUncompressedHeaderSize, | |
| 892 &header_stream_offset)); | |
| 893 const char kBody1[] = "here are some data"; | 885 const char kBody1[] = "here are some data"; |
| 894 const char kBody2[] = "data keep coming"; | 886 const char kBody2[] = "data keep coming"; |
| 895 std::vector<std::string> two_writes = {kBody1, kBody2}; | 887 std::vector<std::string> two_writes = {kBody1, kBody2}; |
| 896 AddWrite(ConstructRequestHeadersPacketInner( | 888 AddWrite(ConstructRequestHeadersPacketInner( |
| 897 2, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, | 889 2, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, |
| 898 &spdy_request_headers_frame_length, &header_stream_offset)); | 890 &spdy_request_headers_frame_length, &header_stream_offset)); |
| 899 AddWrite(ConstructClientMultipleDataFramesPacket(3, kIncludeVersion, !kFin, 0, | 891 AddWrite(ConstructClientMultipleDataFramesPacket(3, kIncludeVersion, !kFin, 0, |
| 900 {kBody1, kBody2})); | 892 {kBody1, kBody2})); |
| 901 // Ack server's data packet. | 893 // Ack server's data packet. |
| 902 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); | 894 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 994 delegate->GetTotalReceivedBytes()); | 986 delegate->GetTotalReceivedBytes()); |
| 995 } | 987 } |
| 996 | 988 |
| 997 // Tests that when request headers are delayed, SendData triggers coalescing of | 989 // Tests that when request headers are delayed, SendData triggers coalescing of |
| 998 // request headers with data buffers. | 990 // request headers with data buffers. |
| 999 TEST_P(BidirectionalStreamQuicImplTest, | 991 TEST_P(BidirectionalStreamQuicImplTest, |
| 1000 SendDataCoalesceDataBufferAndHeaderFrame) { | 992 SendDataCoalesceDataBufferAndHeaderFrame) { |
| 1001 SetRequest("POST", "/", DEFAULT_PRIORITY); | 993 SetRequest("POST", "/", DEFAULT_PRIORITY); |
| 1002 size_t spdy_request_headers_frame_length; | 994 size_t spdy_request_headers_frame_length; |
| 1003 QuicStreamOffset header_stream_offset = 0; | 995 QuicStreamOffset header_stream_offset = 0; |
| 1004 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 996 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); |
| 1005 kDefaultMaxUncompressedHeaderSize, | |
| 1006 &header_stream_offset)); | |
| 1007 const char kBody1[] = "here are some data"; | 997 const char kBody1[] = "here are some data"; |
| 1008 AddWrite(ConstructRequestHeadersAndMultipleDataFramesPacket( | 998 AddWrite(ConstructRequestHeadersAndMultipleDataFramesPacket( |
| 1009 2, !kFin, DEFAULT_PRIORITY, &header_stream_offset, | 999 2, !kFin, DEFAULT_PRIORITY, &header_stream_offset, |
| 1010 &spdy_request_headers_frame_length, {kBody1})); | 1000 &spdy_request_headers_frame_length, {kBody1})); |
| 1011 // Ack server's data packet. | 1001 // Ack server's data packet. |
| 1012 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); | 1002 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); |
| 1013 const char kBody2[] = "really small"; | 1003 const char kBody2[] = "really small"; |
| 1014 QuicStreamOffset data_offset = strlen(kBody1); | 1004 QuicStreamOffset data_offset = strlen(kBody1); |
| 1015 AddWrite(ConstructClientMultipleDataFramesPacket(4, !kIncludeVersion, kFin, | 1005 AddWrite(ConstructClientMultipleDataFramesPacket(4, !kIncludeVersion, kFin, |
| 1016 data_offset, {kBody2})); | 1006 data_offset, {kBody2})); |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1091 delegate->GetTotalReceivedBytes()); | 1081 delegate->GetTotalReceivedBytes()); |
| 1092 } | 1082 } |
| 1093 | 1083 |
| 1094 // Tests that when request headers are delayed, SendvData triggers coalescing of | 1084 // Tests that when request headers are delayed, SendvData triggers coalescing of |
| 1095 // request headers with data buffers. | 1085 // request headers with data buffers. |
| 1096 TEST_P(BidirectionalStreamQuicImplTest, | 1086 TEST_P(BidirectionalStreamQuicImplTest, |
| 1097 SendvDataCoalesceDataBuffersAndHeaderFrame) { | 1087 SendvDataCoalesceDataBuffersAndHeaderFrame) { |
| 1098 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1088 SetRequest("POST", "/", DEFAULT_PRIORITY); |
| 1099 size_t spdy_request_headers_frame_length; | 1089 size_t spdy_request_headers_frame_length; |
| 1100 QuicStreamOffset header_stream_offset = 0; | 1090 QuicStreamOffset header_stream_offset = 0; |
| 1101 AddWrite(ConstructSettingsPacket(1, SETTINGS_MAX_HEADER_LIST_SIZE, | 1091 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); |
| 1102 kDefaultMaxUncompressedHeaderSize, | |
| 1103 &header_stream_offset)); | |
| 1104 const char kBody1[] = "here are some data"; | 1092 const char kBody1[] = "here are some data"; |
| 1105 const char kBody2[] = "data keep coming"; | 1093 const char kBody2[] = "data keep coming"; |
| 1106 std::vector<std::string> two_writes = {kBody1, kBody2}; | 1094 std::vector<std::string> two_writes = {kBody1, kBody2}; |
| 1107 AddWrite(ConstructRequestHeadersAndMultipleDataFramesPacket( | 1095 AddWrite(ConstructRequestHeadersAndMultipleDataFramesPacket( |
| 1108 2, !kFin, DEFAULT_PRIORITY, &header_stream_offset, | 1096 2, !kFin, DEFAULT_PRIORITY, &header_stream_offset, |
| 1109 &spdy_request_headers_frame_length, two_writes)); | 1097 &spdy_request_headers_frame_length, two_writes)); |
| 1110 // Ack server's data packet. | 1098 // Ack server's data packet. |
| 1111 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); | 1099 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); |
| 1112 const char kBody3[] = "hello there"; | 1100 const char kBody3[] = "hello there"; |
| 1113 const char kBody4[] = "another piece of small data"; | 1101 const char kBody4[] = "another piece of small data"; |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1199 delegate->GetTotalReceivedBytes()); | 1187 delegate->GetTotalReceivedBytes()); |
| 1200 } | 1188 } |
| 1201 | 1189 |
| 1202 TEST_P(BidirectionalStreamQuicImplTest, PostRequest) { | 1190 TEST_P(BidirectionalStreamQuicImplTest, PostRequest) { |
| 1203 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1191 SetRequest("POST", "/", DEFAULT_PRIORITY); |
| 1204 size_t spdy_request_headers_frame_length; | 1192 size_t spdy_request_headers_frame_length; |
| 1205 QuicStreamOffset header_stream_offset = 0; | 1193 QuicStreamOffset header_stream_offset = 0; |
| 1206 AddWrite(ConstructRequestHeadersPacketInner( | 1194 AddWrite(ConstructRequestHeadersPacketInner( |
| 1207 1, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, | 1195 1, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, |
| 1208 &spdy_request_headers_frame_length, &header_stream_offset)); | 1196 &spdy_request_headers_frame_length, &header_stream_offset)); |
| 1209 AddWrite(ConstructSettingsPacket(2, SETTINGS_MAX_HEADER_LIST_SIZE, | 1197 AddWrite(ConstructInitialSettingsPacket(2, &header_stream_offset)); |
| 1210 kDefaultMaxUncompressedHeaderSize, | |
| 1211 &header_stream_offset)); | |
| 1212 AddWrite(ConstructDataPacket(3, kIncludeVersion, kFin, 0, kUploadData, | 1198 AddWrite(ConstructDataPacket(3, kIncludeVersion, kFin, 0, kUploadData, |
| 1213 &client_maker_)); | 1199 &client_maker_)); |
| 1214 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); | 1200 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); |
| 1215 | 1201 |
| 1216 Initialize(); | 1202 Initialize(); |
| 1217 | 1203 |
| 1218 BidirectionalStreamRequestInfo request; | 1204 BidirectionalStreamRequestInfo request; |
| 1219 request.method = "POST"; | 1205 request.method = "POST"; |
| 1220 request.url = GURL("http://www.google.com/"); | 1206 request.url = GURL("http://www.google.com/"); |
| 1221 request.end_stream_on_headers = false; | 1207 request.end_stream_on_headers = false; |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1360 } | 1346 } |
| 1361 | 1347 |
| 1362 TEST_P(BidirectionalStreamQuicImplTest, InterleaveReadDataAndSendData) { | 1348 TEST_P(BidirectionalStreamQuicImplTest, InterleaveReadDataAndSendData) { |
| 1363 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1349 SetRequest("POST", "/", DEFAULT_PRIORITY); |
| 1364 size_t spdy_request_headers_frame_length; | 1350 size_t spdy_request_headers_frame_length; |
| 1365 QuicStreamOffset header_stream_offset = 0; | 1351 QuicStreamOffset header_stream_offset = 0; |
| 1366 AddWrite(ConstructRequestHeadersPacketInner( | 1352 AddWrite(ConstructRequestHeadersPacketInner( |
| 1367 1, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, | 1353 1, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, |
| 1368 &spdy_request_headers_frame_length, &header_stream_offset)); | 1354 &spdy_request_headers_frame_length, &header_stream_offset)); |
| 1369 | 1355 |
| 1370 AddWrite(ConstructSettingsPacket(2, SETTINGS_MAX_HEADER_LIST_SIZE, | 1356 AddWrite(ConstructInitialSettingsPacket(2, &header_stream_offset)); |
| 1371 kDefaultMaxUncompressedHeaderSize, | |
| 1372 &header_stream_offset)); | |
| 1373 AddWrite(ConstructAckAndDataPacket(3, !kIncludeVersion, 2, 1, 1, !kFin, 0, | 1357 AddWrite(ConstructAckAndDataPacket(3, !kIncludeVersion, 2, 1, 1, !kFin, 0, |
| 1374 kUploadData, &client_maker_)); | 1358 kUploadData, &client_maker_)); |
| 1375 AddWrite(ConstructAckAndDataPacket(4, !kIncludeVersion, 3, 3, 3, kFin, | 1359 AddWrite(ConstructAckAndDataPacket(4, !kIncludeVersion, 3, 3, 3, kFin, |
| 1376 strlen(kUploadData), kUploadData, | 1360 strlen(kUploadData), kUploadData, |
| 1377 &client_maker_)); | 1361 &client_maker_)); |
| 1378 Initialize(); | 1362 Initialize(); |
| 1379 | 1363 |
| 1380 BidirectionalStreamRequestInfo request; | 1364 BidirectionalStreamRequestInfo request; |
| 1381 request.method = "POST"; | 1365 request.method = "POST"; |
| 1382 request.url = GURL("http://www.google.com/"); | 1366 request.url = GURL("http://www.google.com/"); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1450 delegate->GetTotalReceivedBytes()); | 1434 delegate->GetTotalReceivedBytes()); |
| 1451 } | 1435 } |
| 1452 | 1436 |
| 1453 TEST_P(BidirectionalStreamQuicImplTest, ServerSendsRstAfterHeaders) { | 1437 TEST_P(BidirectionalStreamQuicImplTest, ServerSendsRstAfterHeaders) { |
| 1454 SetRequest("GET", "/", DEFAULT_PRIORITY); | 1438 SetRequest("GET", "/", DEFAULT_PRIORITY); |
| 1455 size_t spdy_request_headers_frame_length; | 1439 size_t spdy_request_headers_frame_length; |
| 1456 QuicStreamOffset header_stream_offset = 0; | 1440 QuicStreamOffset header_stream_offset = 0; |
| 1457 AddWrite(ConstructRequestHeadersPacketInner( | 1441 AddWrite(ConstructRequestHeadersPacketInner( |
| 1458 1, kClientDataStreamId1, kFin, DEFAULT_PRIORITY, | 1442 1, kClientDataStreamId1, kFin, DEFAULT_PRIORITY, |
| 1459 &spdy_request_headers_frame_length, &header_stream_offset)); | 1443 &spdy_request_headers_frame_length, &header_stream_offset)); |
| 1460 AddWrite(ConstructSettingsPacket(2, SETTINGS_MAX_HEADER_LIST_SIZE, | 1444 AddWrite(ConstructInitialSettingsPacket(2, &header_stream_offset)); |
| 1461 kDefaultMaxUncompressedHeaderSize, | |
| 1462 &header_stream_offset)); | |
| 1463 Initialize(); | 1445 Initialize(); |
| 1464 | 1446 |
| 1465 BidirectionalStreamRequestInfo request; | 1447 BidirectionalStreamRequestInfo request; |
| 1466 request.method = "GET"; | 1448 request.method = "GET"; |
| 1467 request.url = GURL("http://www.google.com/"); | 1449 request.url = GURL("http://www.google.com/"); |
| 1468 request.end_stream_on_headers = true; | 1450 request.end_stream_on_headers = true; |
| 1469 request.priority = DEFAULT_PRIORITY; | 1451 request.priority = DEFAULT_PRIORITY; |
| 1470 | 1452 |
| 1471 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 1453 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
| 1472 std::unique_ptr<TestDelegateBase> delegate( | 1454 std::unique_ptr<TestDelegateBase> delegate( |
| (...skipping 20 matching lines...) Expand all Loading... |
| 1493 EXPECT_EQ(0, delegate->GetTotalReceivedBytes()); | 1475 EXPECT_EQ(0, delegate->GetTotalReceivedBytes()); |
| 1494 } | 1476 } |
| 1495 | 1477 |
| 1496 TEST_P(BidirectionalStreamQuicImplTest, ServerSendsRstAfterReadData) { | 1478 TEST_P(BidirectionalStreamQuicImplTest, ServerSendsRstAfterReadData) { |
| 1497 SetRequest("GET", "/", DEFAULT_PRIORITY); | 1479 SetRequest("GET", "/", DEFAULT_PRIORITY); |
| 1498 size_t spdy_request_headers_frame_length; | 1480 size_t spdy_request_headers_frame_length; |
| 1499 QuicStreamOffset header_stream_offset = 0; | 1481 QuicStreamOffset header_stream_offset = 0; |
| 1500 AddWrite(ConstructRequestHeadersPacketInner( | 1482 AddWrite(ConstructRequestHeadersPacketInner( |
| 1501 1, kClientDataStreamId1, kFin, DEFAULT_PRIORITY, | 1483 1, kClientDataStreamId1, kFin, DEFAULT_PRIORITY, |
| 1502 &spdy_request_headers_frame_length, &header_stream_offset)); | 1484 &spdy_request_headers_frame_length, &header_stream_offset)); |
| 1503 AddWrite(ConstructSettingsPacket(2, SETTINGS_MAX_HEADER_LIST_SIZE, | 1485 AddWrite(ConstructInitialSettingsPacket(2, &header_stream_offset)); |
| 1504 kDefaultMaxUncompressedHeaderSize, | |
| 1505 &header_stream_offset)); | |
| 1506 // Why does QUIC ack Rst? Is this expected? | 1486 // Why does QUIC ack Rst? Is this expected? |
| 1507 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); | 1487 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); |
| 1508 | 1488 |
| 1509 Initialize(); | 1489 Initialize(); |
| 1510 | 1490 |
| 1511 BidirectionalStreamRequestInfo request; | 1491 BidirectionalStreamRequestInfo request; |
| 1512 request.method = "GET"; | 1492 request.method = "GET"; |
| 1513 request.url = GURL("http://www.google.com/"); | 1493 request.url = GURL("http://www.google.com/"); |
| 1514 request.end_stream_on_headers = true; | 1494 request.end_stream_on_headers = true; |
| 1515 request.priority = DEFAULT_PRIORITY; | 1495 request.priority = DEFAULT_PRIORITY; |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1556 delegate->GetTotalReceivedBytes()); | 1536 delegate->GetTotalReceivedBytes()); |
| 1557 } | 1537 } |
| 1558 | 1538 |
| 1559 TEST_P(BidirectionalStreamQuicImplTest, SessionClosedBeforeReadData) { | 1539 TEST_P(BidirectionalStreamQuicImplTest, SessionClosedBeforeReadData) { |
| 1560 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1540 SetRequest("POST", "/", DEFAULT_PRIORITY); |
| 1561 size_t spdy_request_headers_frame_length; | 1541 size_t spdy_request_headers_frame_length; |
| 1562 QuicStreamOffset header_stream_offset = 0; | 1542 QuicStreamOffset header_stream_offset = 0; |
| 1563 AddWrite(ConstructRequestHeadersPacketInner( | 1543 AddWrite(ConstructRequestHeadersPacketInner( |
| 1564 1, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, | 1544 1, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, |
| 1565 &spdy_request_headers_frame_length, &header_stream_offset)); | 1545 &spdy_request_headers_frame_length, &header_stream_offset)); |
| 1566 AddWrite(ConstructSettingsPacket(2, SETTINGS_MAX_HEADER_LIST_SIZE, | 1546 AddWrite(ConstructInitialSettingsPacket(2, &header_stream_offset)); |
| 1567 kDefaultMaxUncompressedHeaderSize, | |
| 1568 &header_stream_offset)); | |
| 1569 Initialize(); | 1547 Initialize(); |
| 1570 | 1548 |
| 1571 BidirectionalStreamRequestInfo request; | 1549 BidirectionalStreamRequestInfo request; |
| 1572 request.method = "POST"; | 1550 request.method = "POST"; |
| 1573 request.url = GURL("http://www.google.com/"); | 1551 request.url = GURL("http://www.google.com/"); |
| 1574 request.end_stream_on_headers = false; | 1552 request.end_stream_on_headers = false; |
| 1575 request.priority = DEFAULT_PRIORITY; | 1553 request.priority = DEFAULT_PRIORITY; |
| 1576 | 1554 |
| 1577 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 1555 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
| 1578 std::unique_ptr<TestDelegateBase> delegate( | 1556 std::unique_ptr<TestDelegateBase> delegate( |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1618 delegate->GetTotalReceivedBytes()); | 1596 delegate->GetTotalReceivedBytes()); |
| 1619 } | 1597 } |
| 1620 | 1598 |
| 1621 TEST_P(BidirectionalStreamQuicImplTest, DeleteStreamAfterReadData) { | 1599 TEST_P(BidirectionalStreamQuicImplTest, DeleteStreamAfterReadData) { |
| 1622 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1600 SetRequest("POST", "/", DEFAULT_PRIORITY); |
| 1623 size_t spdy_request_headers_frame_length; | 1601 size_t spdy_request_headers_frame_length; |
| 1624 QuicStreamOffset header_stream_offset = 0; | 1602 QuicStreamOffset header_stream_offset = 0; |
| 1625 AddWrite(ConstructRequestHeadersPacketInner( | 1603 AddWrite(ConstructRequestHeadersPacketInner( |
| 1626 1, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, | 1604 1, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, |
| 1627 &spdy_request_headers_frame_length, &header_stream_offset)); | 1605 &spdy_request_headers_frame_length, &header_stream_offset)); |
| 1628 AddWrite(ConstructSettingsPacket(2, SETTINGS_MAX_HEADER_LIST_SIZE, | 1606 AddWrite(ConstructInitialSettingsPacket(2, &header_stream_offset)); |
| 1629 kDefaultMaxUncompressedHeaderSize, | |
| 1630 &header_stream_offset)); | |
| 1631 AddWrite(ConstructClientAckAndRstStreamPacket(3, 2, 1, 1)); | 1607 AddWrite(ConstructClientAckAndRstStreamPacket(3, 2, 1, 1)); |
| 1632 | 1608 |
| 1633 Initialize(); | 1609 Initialize(); |
| 1634 | 1610 |
| 1635 BidirectionalStreamRequestInfo request; | 1611 BidirectionalStreamRequestInfo request; |
| 1636 request.method = "POST"; | 1612 request.method = "POST"; |
| 1637 request.url = GURL("http://www.google.com/"); | 1613 request.url = GURL("http://www.google.com/"); |
| 1638 request.end_stream_on_headers = false; | 1614 request.end_stream_on_headers = false; |
| 1639 request.priority = DEFAULT_PRIORITY; | 1615 request.priority = DEFAULT_PRIORITY; |
| 1640 | 1616 |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1674 delegate->GetTotalReceivedBytes()); | 1650 delegate->GetTotalReceivedBytes()); |
| 1675 } | 1651 } |
| 1676 | 1652 |
| 1677 TEST_P(BidirectionalStreamQuicImplTest, DeleteStreamDuringOnHeadersReceived) { | 1653 TEST_P(BidirectionalStreamQuicImplTest, DeleteStreamDuringOnHeadersReceived) { |
| 1678 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1654 SetRequest("POST", "/", DEFAULT_PRIORITY); |
| 1679 size_t spdy_request_headers_frame_length; | 1655 size_t spdy_request_headers_frame_length; |
| 1680 QuicStreamOffset header_stream_offset = 0; | 1656 QuicStreamOffset header_stream_offset = 0; |
| 1681 AddWrite(ConstructRequestHeadersPacketInner( | 1657 AddWrite(ConstructRequestHeadersPacketInner( |
| 1682 1, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, | 1658 1, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, |
| 1683 &spdy_request_headers_frame_length, &header_stream_offset)); | 1659 &spdy_request_headers_frame_length, &header_stream_offset)); |
| 1684 AddWrite(ConstructSettingsPacket(2, SETTINGS_MAX_HEADER_LIST_SIZE, | 1660 AddWrite(ConstructInitialSettingsPacket(2, &header_stream_offset)); |
| 1685 kDefaultMaxUncompressedHeaderSize, | |
| 1686 &header_stream_offset)); | |
| 1687 AddWrite(ConstructClientAckAndRstStreamPacket(3, 2, 1, 1)); | 1661 AddWrite(ConstructClientAckAndRstStreamPacket(3, 2, 1, 1)); |
| 1688 | 1662 |
| 1689 Initialize(); | 1663 Initialize(); |
| 1690 | 1664 |
| 1691 BidirectionalStreamRequestInfo request; | 1665 BidirectionalStreamRequestInfo request; |
| 1692 request.method = "POST"; | 1666 request.method = "POST"; |
| 1693 request.url = GURL("http://www.google.com/"); | 1667 request.url = GURL("http://www.google.com/"); |
| 1694 request.end_stream_on_headers = false; | 1668 request.end_stream_on_headers = false; |
| 1695 request.priority = DEFAULT_PRIORITY; | 1669 request.priority = DEFAULT_PRIORITY; |
| 1696 | 1670 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1722 EXPECT_EQ(0, delegate->on_data_sent_count()); | 1696 EXPECT_EQ(0, delegate->on_data_sent_count()); |
| 1723 } | 1697 } |
| 1724 | 1698 |
| 1725 TEST_P(BidirectionalStreamQuicImplTest, DeleteStreamDuringOnDataRead) { | 1699 TEST_P(BidirectionalStreamQuicImplTest, DeleteStreamDuringOnDataRead) { |
| 1726 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1700 SetRequest("POST", "/", DEFAULT_PRIORITY); |
| 1727 size_t spdy_request_headers_frame_length; | 1701 size_t spdy_request_headers_frame_length; |
| 1728 QuicStreamOffset header_stream_offset = 0; | 1702 QuicStreamOffset header_stream_offset = 0; |
| 1729 AddWrite(ConstructRequestHeadersPacketInner( | 1703 AddWrite(ConstructRequestHeadersPacketInner( |
| 1730 1, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, | 1704 1, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, |
| 1731 &spdy_request_headers_frame_length, &header_stream_offset)); | 1705 &spdy_request_headers_frame_length, &header_stream_offset)); |
| 1732 AddWrite(ConstructSettingsPacket(2, SETTINGS_MAX_HEADER_LIST_SIZE, | 1706 AddWrite(ConstructInitialSettingsPacket(2, &header_stream_offset)); |
| 1733 kDefaultMaxUncompressedHeaderSize, | |
| 1734 &header_stream_offset)); | |
| 1735 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); | 1707 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); |
| 1736 AddWrite(ConstructClientRstStreamPacket(4)); | 1708 AddWrite(ConstructClientRstStreamPacket(4)); |
| 1737 | 1709 |
| 1738 Initialize(); | 1710 Initialize(); |
| 1739 | 1711 |
| 1740 BidirectionalStreamRequestInfo request; | 1712 BidirectionalStreamRequestInfo request; |
| 1741 request.method = "POST"; | 1713 request.method = "POST"; |
| 1742 request.url = GURL("http://www.google.com/"); | 1714 request.url = GURL("http://www.google.com/"); |
| 1743 request.end_stream_on_headers = false; | 1715 request.end_stream_on_headers = false; |
| 1744 request.priority = DEFAULT_PRIORITY; | 1716 request.priority = DEFAULT_PRIORITY; |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1844 | 1816 |
| 1845 base::RunLoop().RunUntilIdle(); | 1817 base::RunLoop().RunUntilIdle(); |
| 1846 | 1818 |
| 1847 EXPECT_EQ(1, delegate->on_data_read_count()); | 1819 EXPECT_EQ(1, delegate->on_data_read_count()); |
| 1848 EXPECT_EQ(0, delegate->on_data_sent_count()); | 1820 EXPECT_EQ(0, delegate->on_data_sent_count()); |
| 1849 } | 1821 } |
| 1850 | 1822 |
| 1851 } // namespace test | 1823 } // namespace test |
| 1852 | 1824 |
| 1853 } // namespace net | 1825 } // namespace net |
| OLD | NEW |