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

Side by Side Diff: net/quic/chromium/bidirectional_stream_quic_impl_unittest.cc

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

Powered by Google App Engine
This is Rietveld 408576698