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 |