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 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
349 PacketToWrite(IoMode mode, int rv) : mode(mode), packet(nullptr), rv(rv) {} | 349 PacketToWrite(IoMode mode, int rv) : mode(mode), packet(nullptr), rv(rv) {} |
350 IoMode mode; | 350 IoMode mode; |
351 QuicReceivedPacket* packet; | 351 QuicReceivedPacket* packet; |
352 int rv; | 352 int rv; |
353 }; | 353 }; |
354 | 354 |
355 BidirectionalStreamQuicImplTest() | 355 BidirectionalStreamQuicImplTest() |
356 : crypto_config_(crypto_test_utils::ProofVerifierForTesting()), | 356 : crypto_config_(crypto_test_utils::ProofVerifierForTesting()), |
357 read_buffer_(new IOBufferWithSize(4096)), | 357 read_buffer_(new IOBufferWithSize(4096)), |
358 connection_id_(2), | 358 connection_id_(2), |
359 stream_id_(kClientDataStreamId1), | 359 stream_id_(GetNthClientInitiatedStreamId(0)), |
360 client_maker_(GetParam(), | 360 client_maker_(GetParam(), |
361 connection_id_, | 361 connection_id_, |
362 &clock_, | 362 &clock_, |
363 kDefaultServerHostName, | 363 kDefaultServerHostName, |
364 Perspective::IS_CLIENT), | 364 Perspective::IS_CLIENT), |
365 server_maker_(GetParam(), | 365 server_maker_(GetParam(), |
366 connection_id_, | 366 connection_id_, |
367 &clock_, | 367 &clock_, |
368 kDefaultServerHostName, | 368 kDefaultServerHostName, |
369 Perspective::IS_SERVER), | 369 Perspective::IS_SERVER), |
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
673 load_timing_info.connect_timing, | 673 load_timing_info.connect_timing, |
674 CONNECT_TIMING_HAS_SSL_TIMES | CONNECT_TIMING_HAS_DNS_TIMES); | 674 CONNECT_TIMING_HAS_SSL_TIMES | CONNECT_TIMING_HAS_DNS_TIMES); |
675 } | 675 } |
676 ExpectLoadTimingHasOnlyConnectionTimes(load_timing_info); | 676 ExpectLoadTimingHasOnlyConnectionTimes(load_timing_info); |
677 } | 677 } |
678 | 678 |
679 const BoundTestNetLog& net_log() const { return net_log_; } | 679 const BoundTestNetLog& net_log() const { return net_log_; } |
680 | 680 |
681 QuicChromiumClientSession* session() const { return session_.get(); } | 681 QuicChromiumClientSession* session() const { return session_.get(); } |
682 | 682 |
| 683 QuicStreamId GetNthClientInitiatedStreamId(int n) { |
| 684 return test::GetNthClientInitiatedStreamId(GetParam(), n); |
| 685 } |
| 686 |
683 protected: | 687 protected: |
684 BoundTestNetLog net_log_; | 688 BoundTestNetLog net_log_; |
685 scoped_refptr<TestTaskRunner> runner_; | 689 scoped_refptr<TestTaskRunner> runner_; |
686 std::unique_ptr<MockWrite[]> mock_writes_; | 690 std::unique_ptr<MockWrite[]> mock_writes_; |
687 MockClock clock_; | 691 MockClock clock_; |
688 QuicConnection* connection_; | 692 QuicConnection* connection_; |
689 std::unique_ptr<QuicChromiumConnectionHelper> helper_; | 693 std::unique_ptr<QuicChromiumConnectionHelper> helper_; |
690 std::unique_ptr<QuicChromiumAlarmFactory> alarm_factory_; | 694 std::unique_ptr<QuicChromiumAlarmFactory> alarm_factory_; |
691 TransportSecurityState transport_security_state_; | 695 TransportSecurityState transport_security_state_; |
692 std::unique_ptr<QuicChromiumClientSession> session_; | 696 std::unique_ptr<QuicChromiumClientSession> session_; |
(...skipping 17 matching lines...) Expand all Loading... |
710 | 714 |
711 INSTANTIATE_TEST_CASE_P(Version, | 715 INSTANTIATE_TEST_CASE_P(Version, |
712 BidirectionalStreamQuicImplTest, | 716 BidirectionalStreamQuicImplTest, |
713 ::testing::ValuesIn(AllSupportedVersions())); | 717 ::testing::ValuesIn(AllSupportedVersions())); |
714 | 718 |
715 TEST_P(BidirectionalStreamQuicImplTest, GetRequest) { | 719 TEST_P(BidirectionalStreamQuicImplTest, GetRequest) { |
716 SetRequest("GET", "/", DEFAULT_PRIORITY); | 720 SetRequest("GET", "/", DEFAULT_PRIORITY); |
717 size_t spdy_request_headers_frame_length; | 721 size_t spdy_request_headers_frame_length; |
718 QuicStreamOffset header_stream_offset = 0; | 722 QuicStreamOffset header_stream_offset = 0; |
719 AddWrite(ConstructRequestHeadersPacketInner( | 723 AddWrite(ConstructRequestHeadersPacketInner( |
720 1, kClientDataStreamId1, kFin, DEFAULT_PRIORITY, | 724 1, GetNthClientInitiatedStreamId(0), kFin, DEFAULT_PRIORITY, |
721 &spdy_request_headers_frame_length, &header_stream_offset)); | 725 &spdy_request_headers_frame_length, &header_stream_offset)); |
722 AddWrite(ConstructInitialSettingsPacket(2, &header_stream_offset)); | 726 AddWrite(ConstructInitialSettingsPacket(2, &header_stream_offset)); |
723 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); | 727 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); |
724 | 728 |
725 Initialize(); | 729 Initialize(); |
726 | 730 |
727 BidirectionalStreamRequestInfo request; | 731 BidirectionalStreamRequestInfo request; |
728 request.method = "GET"; | 732 request.method = "GET"; |
729 request.url = GURL("http://www.google.com/"); | 733 request.url = GURL("http://www.google.com/"); |
730 request.end_stream_on_headers = true; | 734 request.end_stream_on_headers = true; |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
807 ExpectLogContainsSomewhere( | 811 ExpectLogContainsSomewhere( |
808 entries, /*min_offset=*/pos, | 812 entries, /*min_offset=*/pos, |
809 NetLogEventType::QUIC_CHROMIUM_CLIENT_STREAM_SEND_REQUEST_HEADERS, | 813 NetLogEventType::QUIC_CHROMIUM_CLIENT_STREAM_SEND_REQUEST_HEADERS, |
810 NetLogEventPhase::NONE); | 814 NetLogEventPhase::NONE); |
811 } | 815 } |
812 | 816 |
813 TEST_P(BidirectionalStreamQuicImplTest, LoadTimingTwoRequests) { | 817 TEST_P(BidirectionalStreamQuicImplTest, LoadTimingTwoRequests) { |
814 SetRequest("GET", "/", DEFAULT_PRIORITY); | 818 SetRequest("GET", "/", DEFAULT_PRIORITY); |
815 QuicStreamOffset offset = 0; | 819 QuicStreamOffset offset = 0; |
816 AddWrite(ConstructRequestHeadersPacketInner( | 820 AddWrite(ConstructRequestHeadersPacketInner( |
817 1, kClientDataStreamId1, kFin, DEFAULT_PRIORITY, nullptr, &offset)); | 821 1, GetNthClientInitiatedStreamId(0), kFin, DEFAULT_PRIORITY, nullptr, |
| 822 &offset)); |
818 // SetRequest() again for second request as |request_headers_| was moved. | 823 // SetRequest() again for second request as |request_headers_| was moved. |
819 SetRequest("GET", "/", DEFAULT_PRIORITY); | 824 SetRequest("GET", "/", DEFAULT_PRIORITY); |
820 AddWrite(ConstructRequestHeadersPacketInner( | 825 AddWrite(ConstructRequestHeadersPacketInner( |
821 2, kClientDataStreamId2, kFin, DEFAULT_PRIORITY, nullptr, &offset)); | 826 2, GetNthClientInitiatedStreamId(1), kFin, DEFAULT_PRIORITY, nullptr, |
| 827 &offset)); |
822 AddWrite(ConstructInitialSettingsPacket(3, &offset)); | 828 AddWrite(ConstructInitialSettingsPacket(3, &offset)); |
823 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); | 829 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); |
824 Initialize(); | 830 Initialize(); |
825 | 831 |
826 BidirectionalStreamRequestInfo request; | 832 BidirectionalStreamRequestInfo request; |
827 request.method = "GET"; | 833 request.method = "GET"; |
828 request.url = GURL("http://www.google.com/"); | 834 request.url = GURL("http://www.google.com/"); |
829 request.end_stream_on_headers = true; | 835 request.end_stream_on_headers = true; |
830 request.priority = DEFAULT_PRIORITY; | 836 request.priority = DEFAULT_PRIORITY; |
831 | 837 |
(...skipping 12 matching lines...) Expand all Loading... |
844 delegate->WaitUntilNextCallback(); // OnStreamReady | 850 delegate->WaitUntilNextCallback(); // OnStreamReady |
845 delegate2->WaitUntilNextCallback(); // OnStreamReady | 851 delegate2->WaitUntilNextCallback(); // OnStreamReady |
846 | 852 |
847 ConfirmHandshake(); | 853 ConfirmHandshake(); |
848 // Server acks the request. | 854 // Server acks the request. |
849 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); | 855 ProcessPacket(ConstructServerAckPacket(1, 0, 0, 0)); |
850 | 856 |
851 // Server sends the response headers. | 857 // Server sends the response headers. |
852 offset = 0; | 858 offset = 0; |
853 ProcessPacket(ConstructResponseHeadersPacketInner( | 859 ProcessPacket(ConstructResponseHeadersPacketInner( |
854 2, kClientDataStreamId1, kFin, ConstructResponseHeaders("200"), nullptr, | 860 2, GetNthClientInitiatedStreamId(0), kFin, |
855 &offset)); | 861 ConstructResponseHeaders("200"), nullptr, &offset)); |
856 | 862 |
857 ProcessPacket(ConstructResponseHeadersPacketInner( | 863 ProcessPacket(ConstructResponseHeadersPacketInner( |
858 3, kClientDataStreamId2, kFin, ConstructResponseHeaders("200"), nullptr, | 864 3, GetNthClientInitiatedStreamId(1), kFin, |
859 &offset)); | 865 ConstructResponseHeaders("200"), nullptr, &offset)); |
860 | 866 |
861 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 867 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
862 delegate2->WaitUntilNextCallback(); // OnHeadersReceived | 868 delegate2->WaitUntilNextCallback(); // OnHeadersReceived |
863 | 869 |
864 LoadTimingInfo load_timing_info; | 870 LoadTimingInfo load_timing_info; |
865 EXPECT_TRUE(delegate->GetLoadTimingInfo(&load_timing_info)); | 871 EXPECT_TRUE(delegate->GetLoadTimingInfo(&load_timing_info)); |
866 LoadTimingInfo load_timing_info2; | 872 LoadTimingInfo load_timing_info2; |
867 EXPECT_TRUE(delegate2->GetLoadTimingInfo(&load_timing_info2)); | 873 EXPECT_TRUE(delegate2->GetLoadTimingInfo(&load_timing_info2)); |
868 ExpectLoadTimingValid(load_timing_info, /*session_reused=*/false); | 874 ExpectLoadTimingValid(load_timing_info, /*session_reused=*/false); |
869 ExpectLoadTimingValid(load_timing_info2, /*session_reused=*/true); | 875 ExpectLoadTimingValid(load_timing_info2, /*session_reused=*/true); |
870 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 876 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
871 EXPECT_EQ("200", delegate2->response_headers().find(":status")->second); | 877 EXPECT_EQ("200", delegate2->response_headers().find(":status")->second); |
872 // No response body. ReadData() should return OK synchronously. | 878 // No response body. ReadData() should return OK synchronously. |
873 TestCompletionCallback dummy_callback; | 879 TestCompletionCallback dummy_callback; |
874 EXPECT_EQ(OK, delegate->ReadData(dummy_callback.callback())); | 880 EXPECT_EQ(OK, delegate->ReadData(dummy_callback.callback())); |
875 EXPECT_EQ(OK, delegate2->ReadData(dummy_callback.callback())); | 881 EXPECT_EQ(OK, delegate2->ReadData(dummy_callback.callback())); |
876 } | 882 } |
877 | 883 |
878 // Tests that when request headers are not delayed, only data buffers are | 884 // Tests that when request headers are not delayed, only data buffers are |
879 // coalesced. | 885 // coalesced. |
880 TEST_P(BidirectionalStreamQuicImplTest, CoalesceDataBuffersNotHeadersFrame) { | 886 TEST_P(BidirectionalStreamQuicImplTest, CoalesceDataBuffersNotHeadersFrame) { |
881 SetRequest("POST", "/", DEFAULT_PRIORITY); | 887 SetRequest("POST", "/", DEFAULT_PRIORITY); |
882 size_t spdy_request_headers_frame_length; | 888 size_t spdy_request_headers_frame_length; |
883 QuicStreamOffset header_stream_offset = 0; | 889 QuicStreamOffset header_stream_offset = 0; |
884 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); | 890 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); |
885 const char kBody1[] = "here are some data"; | 891 const char kBody1[] = "here are some data"; |
886 const char kBody2[] = "data keep coming"; | 892 const char kBody2[] = "data keep coming"; |
887 std::vector<std::string> two_writes = {kBody1, kBody2}; | 893 std::vector<std::string> two_writes = {kBody1, kBody2}; |
888 AddWrite(ConstructRequestHeadersPacketInner( | 894 AddWrite(ConstructRequestHeadersPacketInner( |
889 2, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, | 895 2, GetNthClientInitiatedStreamId(0), !kFin, DEFAULT_PRIORITY, |
890 &spdy_request_headers_frame_length, &header_stream_offset)); | 896 &spdy_request_headers_frame_length, &header_stream_offset)); |
891 AddWrite(ConstructClientMultipleDataFramesPacket(3, kIncludeVersion, !kFin, 0, | 897 AddWrite(ConstructClientMultipleDataFramesPacket(3, kIncludeVersion, !kFin, 0, |
892 {kBody1, kBody2})); | 898 {kBody1, kBody2})); |
893 // Ack server's data packet. | 899 // Ack server's data packet. |
894 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); | 900 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); |
895 const char kBody3[] = "hello there"; | 901 const char kBody3[] = "hello there"; |
896 const char kBody4[] = "another piece of small data"; | 902 const char kBody4[] = "another piece of small data"; |
897 const char kBody5[] = "really small"; | 903 const char kBody5[] = "really small"; |
898 QuicStreamOffset data_offset = strlen(kBody1) + strlen(kBody2); | 904 QuicStreamOffset data_offset = strlen(kBody1) + strlen(kBody2); |
899 AddWrite(ConstructClientMultipleDataFramesPacket( | 905 AddWrite(ConstructClientMultipleDataFramesPacket( |
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1187 strlen(kResponseBody) + spdy_trailers_frame_length), | 1193 strlen(kResponseBody) + spdy_trailers_frame_length), |
1188 delegate->GetTotalReceivedBytes()); | 1194 delegate->GetTotalReceivedBytes()); |
1189 } | 1195 } |
1190 | 1196 |
1191 TEST_P(BidirectionalStreamQuicImplTest, PostRequest) { | 1197 TEST_P(BidirectionalStreamQuicImplTest, PostRequest) { |
1192 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1198 SetRequest("POST", "/", DEFAULT_PRIORITY); |
1193 size_t spdy_request_headers_frame_length; | 1199 size_t spdy_request_headers_frame_length; |
1194 QuicStreamOffset header_stream_offset = 0; | 1200 QuicStreamOffset header_stream_offset = 0; |
1195 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); | 1201 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); |
1196 AddWrite(ConstructRequestHeadersPacketInner( | 1202 AddWrite(ConstructRequestHeadersPacketInner( |
1197 2, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, | 1203 2, GetNthClientInitiatedStreamId(0), !kFin, DEFAULT_PRIORITY, |
1198 &spdy_request_headers_frame_length, &header_stream_offset)); | 1204 &spdy_request_headers_frame_length, &header_stream_offset)); |
1199 AddWrite(ConstructDataPacket(3, kIncludeVersion, kFin, 0, kUploadData, | 1205 AddWrite(ConstructDataPacket(3, kIncludeVersion, kFin, 0, kUploadData, |
1200 &client_maker_)); | 1206 &client_maker_)); |
1201 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); | 1207 AddWrite(ConstructClientAckPacket(4, 3, 1, 1)); |
1202 | 1208 |
1203 Initialize(); | 1209 Initialize(); |
1204 | 1210 |
1205 BidirectionalStreamRequestInfo request; | 1211 BidirectionalStreamRequestInfo request; |
1206 request.method = "POST"; | 1212 request.method = "POST"; |
1207 request.url = GURL("http://www.google.com/"); | 1213 request.url = GURL("http://www.google.com/"); |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1345 strlen(kResponseBody) + spdy_trailers_frame_length), | 1351 strlen(kResponseBody) + spdy_trailers_frame_length), |
1346 delegate->GetTotalReceivedBytes()); | 1352 delegate->GetTotalReceivedBytes()); |
1347 } | 1353 } |
1348 | 1354 |
1349 TEST_P(BidirectionalStreamQuicImplTest, InterleaveReadDataAndSendData) { | 1355 TEST_P(BidirectionalStreamQuicImplTest, InterleaveReadDataAndSendData) { |
1350 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1356 SetRequest("POST", "/", DEFAULT_PRIORITY); |
1351 size_t spdy_request_headers_frame_length; | 1357 size_t spdy_request_headers_frame_length; |
1352 QuicStreamOffset header_stream_offset = 0; | 1358 QuicStreamOffset header_stream_offset = 0; |
1353 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); | 1359 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); |
1354 AddWrite(ConstructRequestHeadersPacketInner( | 1360 AddWrite(ConstructRequestHeadersPacketInner( |
1355 2, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, | 1361 2, GetNthClientInitiatedStreamId(0), !kFin, DEFAULT_PRIORITY, |
1356 &spdy_request_headers_frame_length, &header_stream_offset)); | 1362 &spdy_request_headers_frame_length, &header_stream_offset)); |
1357 AddWrite(ConstructAckAndDataPacket(3, !kIncludeVersion, 2, 1, 1, !kFin, 0, | 1363 AddWrite(ConstructAckAndDataPacket(3, !kIncludeVersion, 2, 1, 1, !kFin, 0, |
1358 kUploadData, &client_maker_)); | 1364 kUploadData, &client_maker_)); |
1359 AddWrite(ConstructAckAndDataPacket(4, !kIncludeVersion, 3, 3, 3, kFin, | 1365 AddWrite(ConstructAckAndDataPacket(4, !kIncludeVersion, 3, 3, 3, kFin, |
1360 strlen(kUploadData), kUploadData, | 1366 strlen(kUploadData), kUploadData, |
1361 &client_maker_)); | 1367 &client_maker_)); |
1362 Initialize(); | 1368 Initialize(); |
1363 | 1369 |
1364 BidirectionalStreamRequestInfo request; | 1370 BidirectionalStreamRequestInfo request; |
1365 request.method = "POST"; | 1371 request.method = "POST"; |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1432 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length + | 1438 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length + |
1433 2 * strlen(kResponseBody)), | 1439 2 * strlen(kResponseBody)), |
1434 delegate->GetTotalReceivedBytes()); | 1440 delegate->GetTotalReceivedBytes()); |
1435 } | 1441 } |
1436 | 1442 |
1437 TEST_P(BidirectionalStreamQuicImplTest, ServerSendsRstAfterHeaders) { | 1443 TEST_P(BidirectionalStreamQuicImplTest, ServerSendsRstAfterHeaders) { |
1438 SetRequest("GET", "/", DEFAULT_PRIORITY); | 1444 SetRequest("GET", "/", DEFAULT_PRIORITY); |
1439 size_t spdy_request_headers_frame_length; | 1445 size_t spdy_request_headers_frame_length; |
1440 QuicStreamOffset header_stream_offset = 0; | 1446 QuicStreamOffset header_stream_offset = 0; |
1441 AddWrite(ConstructRequestHeadersPacketInner( | 1447 AddWrite(ConstructRequestHeadersPacketInner( |
1442 1, kClientDataStreamId1, kFin, DEFAULT_PRIORITY, | 1448 1, GetNthClientInitiatedStreamId(0), kFin, DEFAULT_PRIORITY, |
1443 &spdy_request_headers_frame_length, &header_stream_offset)); | 1449 &spdy_request_headers_frame_length, &header_stream_offset)); |
1444 AddWrite(ConstructInitialSettingsPacket(2, &header_stream_offset)); | 1450 AddWrite(ConstructInitialSettingsPacket(2, &header_stream_offset)); |
1445 Initialize(); | 1451 Initialize(); |
1446 | 1452 |
1447 BidirectionalStreamRequestInfo request; | 1453 BidirectionalStreamRequestInfo request; |
1448 request.method = "GET"; | 1454 request.method = "GET"; |
1449 request.url = GURL("http://www.google.com/"); | 1455 request.url = GURL("http://www.google.com/"); |
1450 request.end_stream_on_headers = true; | 1456 request.end_stream_on_headers = true; |
1451 request.priority = DEFAULT_PRIORITY; | 1457 request.priority = DEFAULT_PRIORITY; |
1452 | 1458 |
(...skipping 20 matching lines...) Expand all Loading... |
1473 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), | 1479 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), |
1474 delegate->GetTotalSentBytes()); | 1480 delegate->GetTotalSentBytes()); |
1475 EXPECT_EQ(0, delegate->GetTotalReceivedBytes()); | 1481 EXPECT_EQ(0, delegate->GetTotalReceivedBytes()); |
1476 } | 1482 } |
1477 | 1483 |
1478 TEST_P(BidirectionalStreamQuicImplTest, ServerSendsRstAfterReadData) { | 1484 TEST_P(BidirectionalStreamQuicImplTest, ServerSendsRstAfterReadData) { |
1479 SetRequest("GET", "/", DEFAULT_PRIORITY); | 1485 SetRequest("GET", "/", DEFAULT_PRIORITY); |
1480 size_t spdy_request_headers_frame_length; | 1486 size_t spdy_request_headers_frame_length; |
1481 QuicStreamOffset header_stream_offset = 0; | 1487 QuicStreamOffset header_stream_offset = 0; |
1482 AddWrite(ConstructRequestHeadersPacketInner( | 1488 AddWrite(ConstructRequestHeadersPacketInner( |
1483 1, kClientDataStreamId1, kFin, DEFAULT_PRIORITY, | 1489 1, GetNthClientInitiatedStreamId(0), kFin, DEFAULT_PRIORITY, |
1484 &spdy_request_headers_frame_length, &header_stream_offset)); | 1490 &spdy_request_headers_frame_length, &header_stream_offset)); |
1485 AddWrite(ConstructInitialSettingsPacket(2, &header_stream_offset)); | 1491 AddWrite(ConstructInitialSettingsPacket(2, &header_stream_offset)); |
1486 // Why does QUIC ack Rst? Is this expected? | 1492 // Why does QUIC ack Rst? Is this expected? |
1487 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); | 1493 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); |
1488 | 1494 |
1489 Initialize(); | 1495 Initialize(); |
1490 | 1496 |
1491 BidirectionalStreamRequestInfo request; | 1497 BidirectionalStreamRequestInfo request; |
1492 request.method = "GET"; | 1498 request.method = "GET"; |
1493 request.url = GURL("http://www.google.com/"); | 1499 request.url = GURL("http://www.google.com/"); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1535 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length), | 1541 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length), |
1536 delegate->GetTotalReceivedBytes()); | 1542 delegate->GetTotalReceivedBytes()); |
1537 } | 1543 } |
1538 | 1544 |
1539 TEST_P(BidirectionalStreamQuicImplTest, SessionClosedBeforeReadData) { | 1545 TEST_P(BidirectionalStreamQuicImplTest, SessionClosedBeforeReadData) { |
1540 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1546 SetRequest("POST", "/", DEFAULT_PRIORITY); |
1541 size_t spdy_request_headers_frame_length; | 1547 size_t spdy_request_headers_frame_length; |
1542 QuicStreamOffset header_stream_offset = 0; | 1548 QuicStreamOffset header_stream_offset = 0; |
1543 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); | 1549 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); |
1544 AddWrite(ConstructRequestHeadersPacketInner( | 1550 AddWrite(ConstructRequestHeadersPacketInner( |
1545 2, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, | 1551 2, GetNthClientInitiatedStreamId(0), !kFin, DEFAULT_PRIORITY, |
1546 &spdy_request_headers_frame_length, &header_stream_offset)); | 1552 &spdy_request_headers_frame_length, &header_stream_offset)); |
1547 Initialize(); | 1553 Initialize(); |
1548 | 1554 |
1549 BidirectionalStreamRequestInfo request; | 1555 BidirectionalStreamRequestInfo request; |
1550 request.method = "POST"; | 1556 request.method = "POST"; |
1551 request.url = GURL("http://www.google.com/"); | 1557 request.url = GURL("http://www.google.com/"); |
1552 request.end_stream_on_headers = false; | 1558 request.end_stream_on_headers = false; |
1553 request.priority = DEFAULT_PRIORITY; | 1559 request.priority = DEFAULT_PRIORITY; |
1554 | 1560 |
1555 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); | 1561 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1595 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length), | 1601 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length), |
1596 delegate->GetTotalReceivedBytes()); | 1602 delegate->GetTotalReceivedBytes()); |
1597 } | 1603 } |
1598 | 1604 |
1599 TEST_P(BidirectionalStreamQuicImplTest, DeleteStreamAfterReadData) { | 1605 TEST_P(BidirectionalStreamQuicImplTest, DeleteStreamAfterReadData) { |
1600 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1606 SetRequest("POST", "/", DEFAULT_PRIORITY); |
1601 size_t spdy_request_headers_frame_length; | 1607 size_t spdy_request_headers_frame_length; |
1602 QuicStreamOffset header_stream_offset = 0; | 1608 QuicStreamOffset header_stream_offset = 0; |
1603 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); | 1609 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); |
1604 AddWrite(ConstructRequestHeadersPacketInner( | 1610 AddWrite(ConstructRequestHeadersPacketInner( |
1605 2, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, | 1611 2, GetNthClientInitiatedStreamId(0), !kFin, DEFAULT_PRIORITY, |
1606 &spdy_request_headers_frame_length, &header_stream_offset)); | 1612 &spdy_request_headers_frame_length, &header_stream_offset)); |
1607 AddWrite(ConstructClientAckAndRstStreamPacket(3, 2, 1, 1)); | 1613 AddWrite(ConstructClientAckAndRstStreamPacket(3, 2, 1, 1)); |
1608 | 1614 |
1609 Initialize(); | 1615 Initialize(); |
1610 | 1616 |
1611 BidirectionalStreamRequestInfo request; | 1617 BidirectionalStreamRequestInfo request; |
1612 request.method = "POST"; | 1618 request.method = "POST"; |
1613 request.url = GURL("http://www.google.com/"); | 1619 request.url = GURL("http://www.google.com/"); |
1614 request.end_stream_on_headers = false; | 1620 request.end_stream_on_headers = false; |
1615 request.priority = DEFAULT_PRIORITY; | 1621 request.priority = DEFAULT_PRIORITY; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1649 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length), | 1655 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length), |
1650 delegate->GetTotalReceivedBytes()); | 1656 delegate->GetTotalReceivedBytes()); |
1651 } | 1657 } |
1652 | 1658 |
1653 TEST_P(BidirectionalStreamQuicImplTest, DeleteStreamDuringOnHeadersReceived) { | 1659 TEST_P(BidirectionalStreamQuicImplTest, DeleteStreamDuringOnHeadersReceived) { |
1654 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1660 SetRequest("POST", "/", DEFAULT_PRIORITY); |
1655 size_t spdy_request_headers_frame_length; | 1661 size_t spdy_request_headers_frame_length; |
1656 QuicStreamOffset header_stream_offset = 0; | 1662 QuicStreamOffset header_stream_offset = 0; |
1657 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); | 1663 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); |
1658 AddWrite(ConstructRequestHeadersPacketInner( | 1664 AddWrite(ConstructRequestHeadersPacketInner( |
1659 2, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, | 1665 2, GetNthClientInitiatedStreamId(0), !kFin, DEFAULT_PRIORITY, |
1660 &spdy_request_headers_frame_length, &header_stream_offset)); | 1666 &spdy_request_headers_frame_length, &header_stream_offset)); |
1661 AddWrite(ConstructClientAckAndRstStreamPacket(3, 2, 1, 1)); | 1667 AddWrite(ConstructClientAckAndRstStreamPacket(3, 2, 1, 1)); |
1662 | 1668 |
1663 Initialize(); | 1669 Initialize(); |
1664 | 1670 |
1665 BidirectionalStreamRequestInfo request; | 1671 BidirectionalStreamRequestInfo request; |
1666 request.method = "POST"; | 1672 request.method = "POST"; |
1667 request.url = GURL("http://www.google.com/"); | 1673 request.url = GURL("http://www.google.com/"); |
1668 request.end_stream_on_headers = false; | 1674 request.end_stream_on_headers = false; |
1669 request.priority = DEFAULT_PRIORITY; | 1675 request.priority = DEFAULT_PRIORITY; |
(...skipping 25 matching lines...) Expand all Loading... |
1695 EXPECT_EQ(0, delegate->on_data_read_count()); | 1701 EXPECT_EQ(0, delegate->on_data_read_count()); |
1696 EXPECT_EQ(0, delegate->on_data_sent_count()); | 1702 EXPECT_EQ(0, delegate->on_data_sent_count()); |
1697 } | 1703 } |
1698 | 1704 |
1699 TEST_P(BidirectionalStreamQuicImplTest, DeleteStreamDuringOnDataRead) { | 1705 TEST_P(BidirectionalStreamQuicImplTest, DeleteStreamDuringOnDataRead) { |
1700 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1706 SetRequest("POST", "/", DEFAULT_PRIORITY); |
1701 size_t spdy_request_headers_frame_length; | 1707 size_t spdy_request_headers_frame_length; |
1702 QuicStreamOffset header_stream_offset = 0; | 1708 QuicStreamOffset header_stream_offset = 0; |
1703 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); | 1709 AddWrite(ConstructInitialSettingsPacket(1, &header_stream_offset)); |
1704 AddWrite(ConstructRequestHeadersPacketInner( | 1710 AddWrite(ConstructRequestHeadersPacketInner( |
1705 2, kClientDataStreamId1, !kFin, DEFAULT_PRIORITY, | 1711 2, GetNthClientInitiatedStreamId(0), !kFin, DEFAULT_PRIORITY, |
1706 &spdy_request_headers_frame_length, &header_stream_offset)); | 1712 &spdy_request_headers_frame_length, &header_stream_offset)); |
1707 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); | 1713 AddWrite(ConstructClientAckPacket(3, 3, 1, 1)); |
1708 AddWrite(ConstructClientRstStreamPacket(4)); | 1714 AddWrite(ConstructClientRstStreamPacket(4)); |
1709 | 1715 |
1710 Initialize(); | 1716 Initialize(); |
1711 | 1717 |
1712 BidirectionalStreamRequestInfo request; | 1718 BidirectionalStreamRequestInfo request; |
1713 request.method = "POST"; | 1719 request.method = "POST"; |
1714 request.url = GURL("http://www.google.com/"); | 1720 request.url = GURL("http://www.google.com/"); |
1715 request.end_stream_on_headers = false; | 1721 request.end_stream_on_headers = false; |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1816 | 1822 |
1817 base::RunLoop().RunUntilIdle(); | 1823 base::RunLoop().RunUntilIdle(); |
1818 | 1824 |
1819 EXPECT_EQ(1, delegate->on_data_read_count()); | 1825 EXPECT_EQ(1, delegate->on_data_read_count()); |
1820 EXPECT_EQ(0, delegate->on_data_sent_count()); | 1826 EXPECT_EQ(0, delegate->on_data_sent_count()); |
1821 } | 1827 } |
1822 | 1828 |
1823 } // namespace test | 1829 } // namespace test |
1824 | 1830 |
1825 } // namespace net | 1831 } // namespace net |
OLD | NEW |