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/bidirectional_stream_quic_impl.h" | 5 #include "net/quic/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 18 matching lines...) Expand all Loading... |
29 #include "net/quic/spdy_utils.h" | 29 #include "net/quic/spdy_utils.h" |
30 #include "net/quic/test_tools/crypto_test_utils.h" | 30 #include "net/quic/test_tools/crypto_test_utils.h" |
31 #include "net/quic/test_tools/mock_clock.h" | 31 #include "net/quic/test_tools/mock_clock.h" |
32 #include "net/quic/test_tools/mock_crypto_client_stream_factory.h" | 32 #include "net/quic/test_tools/mock_crypto_client_stream_factory.h" |
33 #include "net/quic/test_tools/mock_random.h" | 33 #include "net/quic/test_tools/mock_random.h" |
34 #include "net/quic/test_tools/quic_connection_peer.h" | 34 #include "net/quic/test_tools/quic_connection_peer.h" |
35 #include "net/quic/test_tools/quic_test_packet_maker.h" | 35 #include "net/quic/test_tools/quic_test_packet_maker.h" |
36 #include "net/quic/test_tools/quic_test_utils.h" | 36 #include "net/quic/test_tools/quic_test_utils.h" |
37 #include "net/quic/test_tools/test_task_runner.h" | 37 #include "net/quic/test_tools/test_task_runner.h" |
38 #include "net/socket/socket_test_util.h" | 38 #include "net/socket/socket_test_util.h" |
| 39 #include "net/test/gtest_util.h" |
39 #include "testing/gmock/include/gmock/gmock.h" | 40 #include "testing/gmock/include/gmock/gmock.h" |
40 #include "testing/gtest/include/gtest/gtest.h" | 41 #include "testing/gtest/include/gtest/gtest.h" |
41 | 42 |
| 43 using net::test::IsError; |
| 44 using net::test::IsOk; |
| 45 |
42 namespace net { | 46 namespace net { |
43 | 47 |
44 namespace test { | 48 namespace test { |
45 | 49 |
46 namespace { | 50 namespace { |
47 | 51 |
48 const char kUploadData[] = "Really nifty data!"; | 52 const char kUploadData[] = "Really nifty data!"; |
49 const char kDefaultServerHostName[] = "www.google.com"; | 53 const char kDefaultServerHostName[] = "www.google.com"; |
50 const uint16_t kDefaultServerPort = 80; | 54 const uint16_t kDefaultServerPort = 80; |
51 // Size of the buffer to be allocated for each read. | 55 // Size of the buffer to be allocated for each read. |
(...skipping 582 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
634 | 638 |
635 size_t spdy_response_headers_frame_length; | 639 size_t spdy_response_headers_frame_length; |
636 QuicStreamOffset offset = 0; | 640 QuicStreamOffset offset = 0; |
637 ProcessPacket(ConstructResponseHeadersPacket( | 641 ProcessPacket(ConstructResponseHeadersPacket( |
638 2, !kFin, std::move(response_headers), | 642 2, !kFin, std::move(response_headers), |
639 &spdy_response_headers_frame_length, &offset)); | 643 &spdy_response_headers_frame_length, &offset)); |
640 | 644 |
641 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 645 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
642 TestCompletionCallback cb; | 646 TestCompletionCallback cb; |
643 int rv = delegate->ReadData(cb.callback()); | 647 int rv = delegate->ReadData(cb.callback()); |
644 EXPECT_EQ(ERR_IO_PENDING, rv); | 648 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
645 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 649 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
646 const char kResponseBody[] = "Hello world!"; | 650 const char kResponseBody[] = "Hello world!"; |
647 // Server sends data. | 651 // Server sends data. |
648 ProcessPacket( | 652 ProcessPacket( |
649 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); | 653 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); |
650 EXPECT_EQ(12, cb.WaitForResult()); | 654 EXPECT_EQ(12, cb.WaitForResult()); |
651 | 655 |
652 EXPECT_EQ(std::string(kResponseBody), delegate->data_received()); | 656 EXPECT_EQ(std::string(kResponseBody), delegate->data_received()); |
653 TestCompletionCallback cb2; | 657 TestCompletionCallback cb2; |
654 EXPECT_EQ(ERR_IO_PENDING, delegate->ReadData(cb2.callback())); | 658 EXPECT_THAT(delegate->ReadData(cb2.callback()), IsError(ERR_IO_PENDING)); |
655 | 659 |
656 SpdyHeaderBlock trailers; | 660 SpdyHeaderBlock trailers; |
657 size_t spdy_trailers_frame_length; | 661 size_t spdy_trailers_frame_length; |
658 trailers["foo"] = "bar"; | 662 trailers["foo"] = "bar"; |
659 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); | 663 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); |
660 // Server sends trailers. | 664 // Server sends trailers. |
661 ProcessPacket(ConstructResponseTrailersPacket( | 665 ProcessPacket(ConstructResponseTrailersPacket( |
662 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); | 666 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); |
663 | 667 |
664 delegate->WaitUntilNextCallback(); // OnTrailersReceived | 668 delegate->WaitUntilNextCallback(); // OnTrailersReceived |
665 EXPECT_EQ(OK, cb2.WaitForResult()); | 669 EXPECT_THAT(cb2.WaitForResult(), IsOk()); |
666 trailers.erase(kFinalOffsetHeaderKey); | 670 trailers.erase(kFinalOffsetHeaderKey); |
667 EXPECT_EQ(trailers, delegate->trailers()); | 671 EXPECT_EQ(trailers, delegate->trailers()); |
668 | 672 |
669 EXPECT_EQ(OK, delegate->ReadData(cb2.callback())); | 673 EXPECT_THAT(delegate->ReadData(cb2.callback()), IsOk()); |
670 base::RunLoop().RunUntilIdle(); | 674 base::RunLoop().RunUntilIdle(); |
671 | 675 |
672 EXPECT_EQ(2, delegate->on_data_read_count()); | 676 EXPECT_EQ(2, delegate->on_data_read_count()); |
673 EXPECT_EQ(0, delegate->on_data_sent_count()); | 677 EXPECT_EQ(0, delegate->on_data_sent_count()); |
674 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); | 678 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); |
675 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), | 679 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), |
676 delegate->GetTotalSentBytes()); | 680 delegate->GetTotalSentBytes()); |
677 EXPECT_EQ( | 681 EXPECT_EQ( |
678 static_cast<int64_t>(spdy_response_headers_frame_length + | 682 static_cast<int64_t>(spdy_response_headers_frame_length + |
679 strlen(kResponseBody) + spdy_trailers_frame_length), | 683 strlen(kResponseBody) + spdy_trailers_frame_length), |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
752 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 756 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
753 size_t spdy_response_headers_frame_length; | 757 size_t spdy_response_headers_frame_length; |
754 QuicStreamOffset offset = 0; | 758 QuicStreamOffset offset = 0; |
755 ProcessPacket(ConstructResponseHeadersPacket( | 759 ProcessPacket(ConstructResponseHeadersPacket( |
756 2, !kFin, std::move(response_headers), | 760 2, !kFin, std::move(response_headers), |
757 &spdy_response_headers_frame_length, &offset)); | 761 &spdy_response_headers_frame_length, &offset)); |
758 | 762 |
759 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 763 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
760 TestCompletionCallback cb; | 764 TestCompletionCallback cb; |
761 int rv = delegate->ReadData(cb.callback()); | 765 int rv = delegate->ReadData(cb.callback()); |
762 EXPECT_EQ(ERR_IO_PENDING, rv); | 766 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
763 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 767 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
764 const char kResponseBody[] = "Hello world!"; | 768 const char kResponseBody[] = "Hello world!"; |
765 // Server sends data. | 769 // Server sends data. |
766 ProcessPacket( | 770 ProcessPacket( |
767 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); | 771 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); |
768 | 772 |
769 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult()); | 773 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult()); |
770 | 774 |
771 // Send a second Data packet. | 775 // Send a second Data packet. |
772 scoped_refptr<StringIOBuffer> buf3(new StringIOBuffer(kBody3)); | 776 scoped_refptr<StringIOBuffer> buf3(new StringIOBuffer(kBody3)); |
773 scoped_refptr<StringIOBuffer> buf4(new StringIOBuffer(kBody4)); | 777 scoped_refptr<StringIOBuffer> buf4(new StringIOBuffer(kBody4)); |
774 scoped_refptr<StringIOBuffer> buf5(new StringIOBuffer(kBody5)); | 778 scoped_refptr<StringIOBuffer> buf5(new StringIOBuffer(kBody5)); |
775 | 779 |
776 delegate->SendvData({buf3, buf4, buf5}, | 780 delegate->SendvData({buf3, buf4, buf5}, |
777 {buf3->size(), buf4->size(), buf5->size()}, kFin); | 781 {buf3->size(), buf4->size(), buf5->size()}, kFin); |
778 delegate->WaitUntilNextCallback(); // OnDataSent | 782 delegate->WaitUntilNextCallback(); // OnDataSent |
779 | 783 |
780 size_t spdy_trailers_frame_length; | 784 size_t spdy_trailers_frame_length; |
781 SpdyHeaderBlock trailers; | 785 SpdyHeaderBlock trailers; |
782 trailers["foo"] = "bar"; | 786 trailers["foo"] = "bar"; |
783 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); | 787 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); |
784 // Server sends trailers. | 788 // Server sends trailers. |
785 ProcessPacket(ConstructResponseTrailersPacket( | 789 ProcessPacket(ConstructResponseTrailersPacket( |
786 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); | 790 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); |
787 | 791 |
788 delegate->WaitUntilNextCallback(); // OnTrailersReceived | 792 delegate->WaitUntilNextCallback(); // OnTrailersReceived |
789 trailers.erase(kFinalOffsetHeaderKey); | 793 trailers.erase(kFinalOffsetHeaderKey); |
790 EXPECT_EQ(trailers, delegate->trailers()); | 794 EXPECT_EQ(trailers, delegate->trailers()); |
791 EXPECT_EQ(OK, delegate->ReadData(cb.callback())); | 795 EXPECT_THAT(delegate->ReadData(cb.callback()), IsOk()); |
792 | 796 |
793 EXPECT_EQ(1, delegate->on_data_read_count()); | 797 EXPECT_EQ(1, delegate->on_data_read_count()); |
794 EXPECT_EQ(2, delegate->on_data_sent_count()); | 798 EXPECT_EQ(2, delegate->on_data_sent_count()); |
795 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); | 799 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); |
796 EXPECT_EQ( | 800 EXPECT_EQ( |
797 static_cast<int64_t>(spdy_request_headers_frame_length + strlen(kBody1) + | 801 static_cast<int64_t>(spdy_request_headers_frame_length + strlen(kBody1) + |
798 strlen(kBody2) + strlen(kBody3) + strlen(kBody4) + | 802 strlen(kBody2) + strlen(kBody3) + strlen(kBody4) + |
799 strlen(kBody5)), | 803 strlen(kBody5)), |
800 delegate->GetTotalSentBytes()); | 804 delegate->GetTotalSentBytes()); |
801 EXPECT_EQ( | 805 EXPECT_EQ( |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
851 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 855 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
852 size_t spdy_response_headers_frame_length; | 856 size_t spdy_response_headers_frame_length; |
853 QuicStreamOffset offset = 0; | 857 QuicStreamOffset offset = 0; |
854 ProcessPacket(ConstructResponseHeadersPacket( | 858 ProcessPacket(ConstructResponseHeadersPacket( |
855 2, !kFin, std::move(response_headers), | 859 2, !kFin, std::move(response_headers), |
856 &spdy_response_headers_frame_length, &offset)); | 860 &spdy_response_headers_frame_length, &offset)); |
857 | 861 |
858 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 862 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
859 TestCompletionCallback cb; | 863 TestCompletionCallback cb; |
860 int rv = delegate->ReadData(cb.callback()); | 864 int rv = delegate->ReadData(cb.callback()); |
861 EXPECT_EQ(ERR_IO_PENDING, rv); | 865 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
862 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 866 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
863 const char kResponseBody[] = "Hello world!"; | 867 const char kResponseBody[] = "Hello world!"; |
864 // Server sends data. | 868 // Server sends data. |
865 ProcessPacket( | 869 ProcessPacket( |
866 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); | 870 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); |
867 | 871 |
868 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult()); | 872 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult()); |
869 | 873 |
870 // Send a second Data packet. | 874 // Send a second Data packet. |
871 scoped_refptr<StringIOBuffer> buf2(new StringIOBuffer(kBody2)); | 875 scoped_refptr<StringIOBuffer> buf2(new StringIOBuffer(kBody2)); |
872 | 876 |
873 delegate->SendData(buf2, buf2->size(), true); | 877 delegate->SendData(buf2, buf2->size(), true); |
874 delegate->WaitUntilNextCallback(); // OnDataSent | 878 delegate->WaitUntilNextCallback(); // OnDataSent |
875 | 879 |
876 size_t spdy_trailers_frame_length; | 880 size_t spdy_trailers_frame_length; |
877 SpdyHeaderBlock trailers; | 881 SpdyHeaderBlock trailers; |
878 trailers["foo"] = "bar"; | 882 trailers["foo"] = "bar"; |
879 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); | 883 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); |
880 // Server sends trailers. | 884 // Server sends trailers. |
881 ProcessPacket(ConstructResponseTrailersPacket( | 885 ProcessPacket(ConstructResponseTrailersPacket( |
882 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); | 886 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); |
883 | 887 |
884 delegate->WaitUntilNextCallback(); // OnTrailersReceived | 888 delegate->WaitUntilNextCallback(); // OnTrailersReceived |
885 trailers.erase(kFinalOffsetHeaderKey); | 889 trailers.erase(kFinalOffsetHeaderKey); |
886 EXPECT_EQ(trailers, delegate->trailers()); | 890 EXPECT_EQ(trailers, delegate->trailers()); |
887 EXPECT_EQ(OK, delegate->ReadData(cb.callback())); | 891 EXPECT_THAT(delegate->ReadData(cb.callback()), IsOk()); |
888 | 892 |
889 EXPECT_EQ(1, delegate->on_data_read_count()); | 893 EXPECT_EQ(1, delegate->on_data_read_count()); |
890 EXPECT_EQ(2, delegate->on_data_sent_count()); | 894 EXPECT_EQ(2, delegate->on_data_sent_count()); |
891 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); | 895 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); |
892 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length + | 896 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length + |
893 strlen(kBody1) + strlen(kBody2)), | 897 strlen(kBody1) + strlen(kBody2)), |
894 delegate->GetTotalSentBytes()); | 898 delegate->GetTotalSentBytes()); |
895 EXPECT_EQ( | 899 EXPECT_EQ( |
896 static_cast<int64_t>(spdy_response_headers_frame_length + | 900 static_cast<int64_t>(spdy_response_headers_frame_length + |
897 strlen(kResponseBody) + spdy_trailers_frame_length), | 901 strlen(kResponseBody) + spdy_trailers_frame_length), |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
951 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 955 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
952 size_t spdy_response_headers_frame_length; | 956 size_t spdy_response_headers_frame_length; |
953 QuicStreamOffset offset = 0; | 957 QuicStreamOffset offset = 0; |
954 ProcessPacket(ConstructResponseHeadersPacket( | 958 ProcessPacket(ConstructResponseHeadersPacket( |
955 2, !kFin, std::move(response_headers), | 959 2, !kFin, std::move(response_headers), |
956 &spdy_response_headers_frame_length, &offset)); | 960 &spdy_response_headers_frame_length, &offset)); |
957 | 961 |
958 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 962 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
959 TestCompletionCallback cb; | 963 TestCompletionCallback cb; |
960 int rv = delegate->ReadData(cb.callback()); | 964 int rv = delegate->ReadData(cb.callback()); |
961 EXPECT_EQ(ERR_IO_PENDING, rv); | 965 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
962 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 966 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
963 const char kResponseBody[] = "Hello world!"; | 967 const char kResponseBody[] = "Hello world!"; |
964 // Server sends data. | 968 // Server sends data. |
965 ProcessPacket( | 969 ProcessPacket( |
966 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); | 970 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); |
967 | 971 |
968 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult()); | 972 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult()); |
969 | 973 |
970 // Send a second Data packet. | 974 // Send a second Data packet. |
971 scoped_refptr<StringIOBuffer> buf3(new StringIOBuffer(kBody3)); | 975 scoped_refptr<StringIOBuffer> buf3(new StringIOBuffer(kBody3)); |
972 scoped_refptr<StringIOBuffer> buf4(new StringIOBuffer(kBody4)); | 976 scoped_refptr<StringIOBuffer> buf4(new StringIOBuffer(kBody4)); |
973 scoped_refptr<StringIOBuffer> buf5(new StringIOBuffer(kBody5)); | 977 scoped_refptr<StringIOBuffer> buf5(new StringIOBuffer(kBody5)); |
974 | 978 |
975 delegate->SendvData({buf3, buf4, buf5}, | 979 delegate->SendvData({buf3, buf4, buf5}, |
976 {buf3->size(), buf4->size(), buf5->size()}, kFin); | 980 {buf3->size(), buf4->size(), buf5->size()}, kFin); |
977 delegate->WaitUntilNextCallback(); // OnDataSent | 981 delegate->WaitUntilNextCallback(); // OnDataSent |
978 | 982 |
979 size_t spdy_trailers_frame_length; | 983 size_t spdy_trailers_frame_length; |
980 SpdyHeaderBlock trailers; | 984 SpdyHeaderBlock trailers; |
981 trailers["foo"] = "bar"; | 985 trailers["foo"] = "bar"; |
982 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); | 986 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); |
983 // Server sends trailers. | 987 // Server sends trailers. |
984 ProcessPacket(ConstructResponseTrailersPacket( | 988 ProcessPacket(ConstructResponseTrailersPacket( |
985 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); | 989 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); |
986 | 990 |
987 delegate->WaitUntilNextCallback(); // OnTrailersReceived | 991 delegate->WaitUntilNextCallback(); // OnTrailersReceived |
988 trailers.erase(kFinalOffsetHeaderKey); | 992 trailers.erase(kFinalOffsetHeaderKey); |
989 EXPECT_EQ(trailers, delegate->trailers()); | 993 EXPECT_EQ(trailers, delegate->trailers()); |
990 EXPECT_EQ(OK, delegate->ReadData(cb.callback())); | 994 EXPECT_THAT(delegate->ReadData(cb.callback()), IsOk()); |
991 | 995 |
992 EXPECT_EQ(1, delegate->on_data_read_count()); | 996 EXPECT_EQ(1, delegate->on_data_read_count()); |
993 EXPECT_EQ(2, delegate->on_data_sent_count()); | 997 EXPECT_EQ(2, delegate->on_data_sent_count()); |
994 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); | 998 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); |
995 EXPECT_EQ( | 999 EXPECT_EQ( |
996 static_cast<int64_t>(spdy_request_headers_frame_length + strlen(kBody1) + | 1000 static_cast<int64_t>(spdy_request_headers_frame_length + strlen(kBody1) + |
997 strlen(kBody2) + strlen(kBody3) + strlen(kBody4) + | 1001 strlen(kBody2) + strlen(kBody3) + strlen(kBody4) + |
998 strlen(kBody5)), | 1002 strlen(kBody5)), |
999 delegate->GetTotalSentBytes()); | 1003 delegate->GetTotalSentBytes()); |
1000 EXPECT_EQ( | 1004 EXPECT_EQ( |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1040 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1044 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
1041 size_t spdy_response_headers_frame_length; | 1045 size_t spdy_response_headers_frame_length; |
1042 QuicStreamOffset offset = 0; | 1046 QuicStreamOffset offset = 0; |
1043 ProcessPacket(ConstructResponseHeadersPacket( | 1047 ProcessPacket(ConstructResponseHeadersPacket( |
1044 2, !kFin, std::move(response_headers), | 1048 2, !kFin, std::move(response_headers), |
1045 &spdy_response_headers_frame_length, &offset)); | 1049 &spdy_response_headers_frame_length, &offset)); |
1046 | 1050 |
1047 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 1051 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
1048 TestCompletionCallback cb; | 1052 TestCompletionCallback cb; |
1049 int rv = delegate->ReadData(cb.callback()); | 1053 int rv = delegate->ReadData(cb.callback()); |
1050 EXPECT_EQ(ERR_IO_PENDING, rv); | 1054 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
1051 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 1055 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
1052 const char kResponseBody[] = "Hello world!"; | 1056 const char kResponseBody[] = "Hello world!"; |
1053 // Server sends data. | 1057 // Server sends data. |
1054 ProcessPacket( | 1058 ProcessPacket( |
1055 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); | 1059 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); |
1056 | 1060 |
1057 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult()); | 1061 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult()); |
1058 | 1062 |
1059 size_t spdy_trailers_frame_length; | 1063 size_t spdy_trailers_frame_length; |
1060 SpdyHeaderBlock trailers; | 1064 SpdyHeaderBlock trailers; |
1061 trailers["foo"] = "bar"; | 1065 trailers["foo"] = "bar"; |
1062 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); | 1066 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); |
1063 // Server sends trailers. | 1067 // Server sends trailers. |
1064 ProcessPacket(ConstructResponseTrailersPacket( | 1068 ProcessPacket(ConstructResponseTrailersPacket( |
1065 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); | 1069 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); |
1066 | 1070 |
1067 delegate->WaitUntilNextCallback(); // OnTrailersReceived | 1071 delegate->WaitUntilNextCallback(); // OnTrailersReceived |
1068 trailers.erase(kFinalOffsetHeaderKey); | 1072 trailers.erase(kFinalOffsetHeaderKey); |
1069 EXPECT_EQ(trailers, delegate->trailers()); | 1073 EXPECT_EQ(trailers, delegate->trailers()); |
1070 EXPECT_EQ(OK, delegate->ReadData(cb.callback())); | 1074 EXPECT_THAT(delegate->ReadData(cb.callback()), IsOk()); |
1071 | 1075 |
1072 EXPECT_EQ(1, delegate->on_data_read_count()); | 1076 EXPECT_EQ(1, delegate->on_data_read_count()); |
1073 EXPECT_EQ(1, delegate->on_data_sent_count()); | 1077 EXPECT_EQ(1, delegate->on_data_sent_count()); |
1074 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); | 1078 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); |
1075 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length + | 1079 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length + |
1076 strlen(kUploadData)), | 1080 strlen(kUploadData)), |
1077 delegate->GetTotalSentBytes()); | 1081 delegate->GetTotalSentBytes()); |
1078 EXPECT_EQ( | 1082 EXPECT_EQ( |
1079 static_cast<int64_t>(spdy_response_headers_frame_length + | 1083 static_cast<int64_t>(spdy_response_headers_frame_length + |
1080 strlen(kResponseBody) + spdy_trailers_frame_length), | 1084 strlen(kResponseBody) + spdy_trailers_frame_length), |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1117 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); | 1121 SpdyHeaderBlock response_headers = ConstructResponseHeaders("200"); |
1118 size_t spdy_response_headers_frame_length; | 1122 size_t spdy_response_headers_frame_length; |
1119 QuicStreamOffset offset = 0; | 1123 QuicStreamOffset offset = 0; |
1120 ProcessPacket(ConstructResponseHeadersPacket( | 1124 ProcessPacket(ConstructResponseHeadersPacket( |
1121 2, !kFin, std::move(response_headers), | 1125 2, !kFin, std::move(response_headers), |
1122 &spdy_response_headers_frame_length, &offset)); | 1126 &spdy_response_headers_frame_length, &offset)); |
1123 | 1127 |
1124 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 1128 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
1125 TestCompletionCallback cb; | 1129 TestCompletionCallback cb; |
1126 int rv = delegate->ReadData(cb.callback()); | 1130 int rv = delegate->ReadData(cb.callback()); |
1127 EXPECT_EQ(ERR_IO_PENDING, rv); | 1131 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
1128 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 1132 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
1129 const char kResponseBody[] = "Hello world!"; | 1133 const char kResponseBody[] = "Hello world!"; |
1130 // Server sends data. | 1134 // Server sends data. |
1131 ProcessPacket( | 1135 ProcessPacket( |
1132 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); | 1136 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); |
1133 | 1137 |
1134 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult()); | 1138 EXPECT_EQ(static_cast<int>(strlen(kResponseBody)), cb.WaitForResult()); |
1135 | 1139 |
1136 size_t spdy_trailers_frame_length; | 1140 size_t spdy_trailers_frame_length; |
1137 SpdyHeaderBlock trailers; | 1141 SpdyHeaderBlock trailers; |
1138 trailers["foo"] = "bar"; | 1142 trailers["foo"] = "bar"; |
1139 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); | 1143 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); |
1140 // Server sends trailers. | 1144 // Server sends trailers. |
1141 ProcessPacket(ConstructResponseTrailersPacket( | 1145 ProcessPacket(ConstructResponseTrailersPacket( |
1142 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); | 1146 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); |
1143 | 1147 |
1144 delegate->WaitUntilNextCallback(); // OnTrailersReceived | 1148 delegate->WaitUntilNextCallback(); // OnTrailersReceived |
1145 trailers.erase(kFinalOffsetHeaderKey); | 1149 trailers.erase(kFinalOffsetHeaderKey); |
1146 EXPECT_EQ(trailers, delegate->trailers()); | 1150 EXPECT_EQ(trailers, delegate->trailers()); |
1147 EXPECT_EQ(OK, delegate->ReadData(cb.callback())); | 1151 EXPECT_THAT(delegate->ReadData(cb.callback()), IsOk()); |
1148 | 1152 |
1149 EXPECT_EQ(1, delegate->on_data_read_count()); | 1153 EXPECT_EQ(1, delegate->on_data_read_count()); |
1150 EXPECT_EQ(1, delegate->on_data_sent_count()); | 1154 EXPECT_EQ(1, delegate->on_data_sent_count()); |
1151 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); | 1155 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); |
1152 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length + | 1156 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length + |
1153 strlen(kUploadData)), | 1157 strlen(kUploadData)), |
1154 delegate->GetTotalSentBytes()); | 1158 delegate->GetTotalSentBytes()); |
1155 EXPECT_EQ( | 1159 EXPECT_EQ( |
1156 static_cast<int64_t>(spdy_response_headers_frame_length + | 1160 static_cast<int64_t>(spdy_response_headers_frame_length + |
1157 strlen(kResponseBody) + spdy_trailers_frame_length), | 1161 strlen(kResponseBody) + spdy_trailers_frame_length), |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1197 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 1201 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
1198 | 1202 |
1199 // Client sends a data packet. | 1203 // Client sends a data packet. |
1200 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData)); | 1204 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData)); |
1201 | 1205 |
1202 delegate->SendData(buf, buf->size(), false); | 1206 delegate->SendData(buf, buf->size(), false); |
1203 delegate->WaitUntilNextCallback(); // OnDataSent | 1207 delegate->WaitUntilNextCallback(); // OnDataSent |
1204 | 1208 |
1205 TestCompletionCallback cb; | 1209 TestCompletionCallback cb; |
1206 int rv = delegate->ReadData(cb.callback()); | 1210 int rv = delegate->ReadData(cb.callback()); |
1207 EXPECT_EQ(ERR_IO_PENDING, rv); | 1211 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
1208 const char kResponseBody[] = "Hello world!"; | 1212 const char kResponseBody[] = "Hello world!"; |
1209 | 1213 |
1210 // Server sends a data packet. | 1214 // Server sends a data packet. |
1211 ProcessPacket(ConstructAckAndDataPacket(3, !kIncludeVersion, 2, 1, !kFin, 0, | 1215 ProcessPacket(ConstructAckAndDataPacket(3, !kIncludeVersion, 2, 1, !kFin, 0, |
1212 kResponseBody, &server_maker_)); | 1216 kResponseBody, &server_maker_)); |
1213 | 1217 |
1214 EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), cb.WaitForResult()); | 1218 EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), cb.WaitForResult()); |
1215 EXPECT_EQ(std::string(kResponseBody), delegate->data_received()); | 1219 EXPECT_EQ(std::string(kResponseBody), delegate->data_received()); |
1216 | 1220 |
1217 // Client sends a data packet. | 1221 // Client sends a data packet. |
1218 delegate->SendData(buf, buf->size(), true); | 1222 delegate->SendData(buf, buf->size(), true); |
1219 delegate->WaitUntilNextCallback(); // OnDataSent | 1223 delegate->WaitUntilNextCallback(); // OnDataSent |
1220 | 1224 |
1221 TestCompletionCallback cb2; | 1225 TestCompletionCallback cb2; |
1222 rv = delegate->ReadData(cb2.callback()); | 1226 rv = delegate->ReadData(cb2.callback()); |
1223 EXPECT_EQ(ERR_IO_PENDING, rv); | 1227 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
1224 ProcessPacket(ConstructAckAndDataPacket(4, !kIncludeVersion, 3, 1, kFin, | 1228 ProcessPacket(ConstructAckAndDataPacket(4, !kIncludeVersion, 3, 1, kFin, |
1225 strlen(kResponseBody), kResponseBody, | 1229 strlen(kResponseBody), kResponseBody, |
1226 &server_maker_)); | 1230 &server_maker_)); |
1227 | 1231 |
1228 EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), cb2.WaitForResult()); | 1232 EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), cb2.WaitForResult()); |
1229 | 1233 |
1230 std::string expected_body(kResponseBody); | 1234 std::string expected_body(kResponseBody); |
1231 expected_body.append(kResponseBody); | 1235 expected_body.append(kResponseBody); |
1232 EXPECT_EQ(expected_body, delegate->data_received()); | 1236 EXPECT_EQ(expected_body, delegate->data_received()); |
1233 | 1237 |
1234 EXPECT_EQ(OK, delegate->ReadData(cb.callback())); | 1238 EXPECT_THAT(delegate->ReadData(cb.callback()), IsOk()); |
1235 EXPECT_EQ(2, delegate->on_data_read_count()); | 1239 EXPECT_EQ(2, delegate->on_data_read_count()); |
1236 EXPECT_EQ(2, delegate->on_data_sent_count()); | 1240 EXPECT_EQ(2, delegate->on_data_sent_count()); |
1237 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); | 1241 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); |
1238 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length + | 1242 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length + |
1239 2 * strlen(kUploadData)), | 1243 2 * strlen(kUploadData)), |
1240 delegate->GetTotalSentBytes()); | 1244 delegate->GetTotalSentBytes()); |
1241 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length + | 1245 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length + |
1242 2 * strlen(kResponseBody)), | 1246 2 * strlen(kResponseBody)), |
1243 delegate->GetTotalReceivedBytes()); | 1247 delegate->GetTotalReceivedBytes()); |
1244 } | 1248 } |
(...skipping 16 matching lines...) Expand all Loading... |
1261 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); | 1265 new TestDelegateBase(read_buffer.get(), kReadBufferSize)); |
1262 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); | 1266 delegate->Start(&request, net_log().bound(), session()->GetWeakPtr()); |
1263 delegate->WaitUntilNextCallback(); // OnStreamReady | 1267 delegate->WaitUntilNextCallback(); // OnStreamReady |
1264 ConfirmHandshake(); | 1268 ConfirmHandshake(); |
1265 | 1269 |
1266 // Server sends a Rst. | 1270 // Server sends a Rst. |
1267 ProcessPacket(ConstructServerRstStreamPacket(1)); | 1271 ProcessPacket(ConstructServerRstStreamPacket(1)); |
1268 | 1272 |
1269 delegate->WaitUntilNextCallback(); // OnFailed | 1273 delegate->WaitUntilNextCallback(); // OnFailed |
1270 TestCompletionCallback cb; | 1274 TestCompletionCallback cb; |
1271 EXPECT_EQ(ERR_QUIC_PROTOCOL_ERROR, delegate->ReadData(cb.callback())); | 1275 EXPECT_THAT(delegate->ReadData(cb.callback()), |
| 1276 IsError(ERR_QUIC_PROTOCOL_ERROR)); |
1272 | 1277 |
1273 base::RunLoop().RunUntilIdle(); | 1278 base::RunLoop().RunUntilIdle(); |
1274 | 1279 |
1275 EXPECT_EQ(ERR_QUIC_PROTOCOL_ERROR, delegate->error()); | 1280 EXPECT_THAT(delegate->error(), IsError(ERR_QUIC_PROTOCOL_ERROR)); |
1276 EXPECT_EQ(0, delegate->on_data_read_count()); | 1281 EXPECT_EQ(0, delegate->on_data_read_count()); |
1277 EXPECT_EQ(0, delegate->on_data_sent_count()); | 1282 EXPECT_EQ(0, delegate->on_data_sent_count()); |
1278 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), | 1283 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), |
1279 delegate->GetTotalSentBytes()); | 1284 delegate->GetTotalSentBytes()); |
1280 EXPECT_EQ(0, delegate->GetTotalReceivedBytes()); | 1285 EXPECT_EQ(0, delegate->GetTotalReceivedBytes()); |
1281 } | 1286 } |
1282 | 1287 |
1283 TEST_P(BidirectionalStreamQuicImplTest, ServerSendsRstAfterReadData) { | 1288 TEST_P(BidirectionalStreamQuicImplTest, ServerSendsRstAfterReadData) { |
1284 SetRequest("GET", "/", DEFAULT_PRIORITY); | 1289 SetRequest("GET", "/", DEFAULT_PRIORITY); |
1285 size_t spdy_request_headers_frame_length; | 1290 size_t spdy_request_headers_frame_length; |
(...skipping 27 matching lines...) Expand all Loading... |
1313 QuicStreamOffset offset = 0; | 1318 QuicStreamOffset offset = 0; |
1314 ProcessPacket(ConstructResponseHeadersPacket( | 1319 ProcessPacket(ConstructResponseHeadersPacket( |
1315 2, !kFin, std::move(response_headers), | 1320 2, !kFin, std::move(response_headers), |
1316 &spdy_response_headers_frame_length, &offset)); | 1321 &spdy_response_headers_frame_length, &offset)); |
1317 | 1322 |
1318 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 1323 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
1319 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 1324 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
1320 | 1325 |
1321 TestCompletionCallback cb; | 1326 TestCompletionCallback cb; |
1322 int rv = delegate->ReadData(cb.callback()); | 1327 int rv = delegate->ReadData(cb.callback()); |
1323 EXPECT_EQ(ERR_IO_PENDING, rv); | 1328 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
1324 | 1329 |
1325 // Server sends a Rst. | 1330 // Server sends a Rst. |
1326 ProcessPacket(ConstructServerRstStreamPacket(3)); | 1331 ProcessPacket(ConstructServerRstStreamPacket(3)); |
1327 | 1332 |
1328 delegate->WaitUntilNextCallback(); // OnFailed | 1333 delegate->WaitUntilNextCallback(); // OnFailed |
1329 | 1334 |
1330 EXPECT_EQ(ERR_QUIC_PROTOCOL_ERROR, delegate->ReadData(cb.callback())); | 1335 EXPECT_THAT(delegate->ReadData(cb.callback()), |
1331 EXPECT_EQ(ERR_QUIC_PROTOCOL_ERROR, delegate->error()); | 1336 IsError(ERR_QUIC_PROTOCOL_ERROR)); |
| 1337 EXPECT_THAT(delegate->error(), IsError(ERR_QUIC_PROTOCOL_ERROR)); |
1332 EXPECT_EQ(0, delegate->on_data_read_count()); | 1338 EXPECT_EQ(0, delegate->on_data_read_count()); |
1333 EXPECT_EQ(0, delegate->on_data_sent_count()); | 1339 EXPECT_EQ(0, delegate->on_data_sent_count()); |
1334 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), | 1340 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), |
1335 delegate->GetTotalSentBytes()); | 1341 delegate->GetTotalSentBytes()); |
1336 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length), | 1342 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length), |
1337 delegate->GetTotalReceivedBytes()); | 1343 delegate->GetTotalReceivedBytes()); |
1338 } | 1344 } |
1339 | 1345 |
1340 TEST_P(BidirectionalStreamQuicImplTest, CancelStreamAfterSendData) { | 1346 TEST_P(BidirectionalStreamQuicImplTest, CancelStreamAfterSendData) { |
1341 SetRequest("POST", "/", DEFAULT_PRIORITY); | 1347 SetRequest("POST", "/", DEFAULT_PRIORITY); |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1427 | 1433 |
1428 size_t spdy_response_headers_frame_length; | 1434 size_t spdy_response_headers_frame_length; |
1429 QuicStreamOffset offset = 0; | 1435 QuicStreamOffset offset = 0; |
1430 ProcessPacket(ConstructResponseHeadersPacket( | 1436 ProcessPacket(ConstructResponseHeadersPacket( |
1431 2, !kFin, std::move(response_headers), | 1437 2, !kFin, std::move(response_headers), |
1432 &spdy_response_headers_frame_length, &offset)); | 1438 &spdy_response_headers_frame_length, &offset)); |
1433 | 1439 |
1434 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 1440 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
1435 TestCompletionCallback cb; | 1441 TestCompletionCallback cb; |
1436 int rv = delegate->ReadData(cb.callback()); | 1442 int rv = delegate->ReadData(cb.callback()); |
1437 EXPECT_EQ(ERR_IO_PENDING, rv); | 1443 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
1438 session()->connection()->CloseConnection( | 1444 session()->connection()->CloseConnection( |
1439 QUIC_NO_ERROR, "test", ConnectionCloseBehavior::SILENT_CLOSE); | 1445 QUIC_NO_ERROR, "test", ConnectionCloseBehavior::SILENT_CLOSE); |
1440 delegate->WaitUntilNextCallback(); // OnFailed | 1446 delegate->WaitUntilNextCallback(); // OnFailed |
1441 EXPECT_TRUE(delegate->on_failed_called()); | 1447 EXPECT_TRUE(delegate->on_failed_called()); |
1442 | 1448 |
1443 // Try to send data after OnFailed(), should not get called back. | 1449 // Try to send data after OnFailed(), should not get called back. |
1444 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData)); | 1450 scoped_refptr<StringIOBuffer> buf(new StringIOBuffer(kUploadData)); |
1445 delegate->SendData(buf, buf->size(), false); | 1451 delegate->SendData(buf, buf->size(), false); |
1446 base::RunLoop().RunUntilIdle(); | 1452 base::RunLoop().RunUntilIdle(); |
1447 | 1453 |
1448 EXPECT_EQ(ERR_UNEXPECTED, delegate->ReadData(cb.callback())); | 1454 EXPECT_THAT(delegate->ReadData(cb.callback()), IsError(ERR_UNEXPECTED)); |
1449 EXPECT_EQ(ERR_UNEXPECTED, delegate->error()); | 1455 EXPECT_THAT(delegate->error(), IsError(ERR_UNEXPECTED)); |
1450 EXPECT_EQ(0, delegate->on_data_read_count()); | 1456 EXPECT_EQ(0, delegate->on_data_read_count()); |
1451 EXPECT_EQ(0, delegate->on_data_sent_count()); | 1457 EXPECT_EQ(0, delegate->on_data_sent_count()); |
1452 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); | 1458 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); |
1453 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), | 1459 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), |
1454 delegate->GetTotalSentBytes()); | 1460 delegate->GetTotalSentBytes()); |
1455 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length), | 1461 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length), |
1456 delegate->GetTotalReceivedBytes()); | 1462 delegate->GetTotalReceivedBytes()); |
1457 } | 1463 } |
1458 | 1464 |
1459 TEST_P(BidirectionalStreamQuicImplTest, CancelStreamAfterReadData) { | 1465 TEST_P(BidirectionalStreamQuicImplTest, CancelStreamAfterReadData) { |
(...skipping 26 matching lines...) Expand all Loading... |
1486 size_t spdy_response_headers_frame_length; | 1492 size_t spdy_response_headers_frame_length; |
1487 ProcessPacket( | 1493 ProcessPacket( |
1488 ConstructResponseHeadersPacket(2, !kFin, std::move(response_headers), | 1494 ConstructResponseHeadersPacket(2, !kFin, std::move(response_headers), |
1489 &spdy_response_headers_frame_length, 0)); | 1495 &spdy_response_headers_frame_length, 0)); |
1490 | 1496 |
1491 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 1497 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
1492 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 1498 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
1493 | 1499 |
1494 // Cancel the stream after ReadData returns ERR_IO_PENDING. | 1500 // Cancel the stream after ReadData returns ERR_IO_PENDING. |
1495 TestCompletionCallback cb; | 1501 TestCompletionCallback cb; |
1496 EXPECT_EQ(ERR_IO_PENDING, delegate->ReadData(cb.callback())); | 1502 EXPECT_THAT(delegate->ReadData(cb.callback()), IsError(ERR_IO_PENDING)); |
1497 delegate->CancelStream(); | 1503 delegate->CancelStream(); |
1498 | 1504 |
1499 base::RunLoop().RunUntilIdle(); | 1505 base::RunLoop().RunUntilIdle(); |
1500 | 1506 |
1501 EXPECT_EQ(0, delegate->on_data_read_count()); | 1507 EXPECT_EQ(0, delegate->on_data_read_count()); |
1502 EXPECT_EQ(0, delegate->on_data_sent_count()); | 1508 EXPECT_EQ(0, delegate->on_data_sent_count()); |
1503 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); | 1509 EXPECT_EQ(kProtoQUIC1SPDY3, delegate->GetProtocol()); |
1504 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), | 1510 EXPECT_EQ(static_cast<int64_t>(spdy_request_headers_frame_length), |
1505 delegate->GetTotalSentBytes()); | 1511 delegate->GetTotalSentBytes()); |
1506 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length), | 1512 EXPECT_EQ(static_cast<int64_t>(spdy_response_headers_frame_length), |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1583 ProcessPacket(ConstructResponseHeadersPacket( | 1589 ProcessPacket(ConstructResponseHeadersPacket( |
1584 2, !kFin, std::move(response_headers), | 1590 2, !kFin, std::move(response_headers), |
1585 &spdy_response_headers_frame_length, nullptr)); | 1591 &spdy_response_headers_frame_length, nullptr)); |
1586 | 1592 |
1587 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 1593 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
1588 | 1594 |
1589 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 1595 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
1590 | 1596 |
1591 TestCompletionCallback cb; | 1597 TestCompletionCallback cb; |
1592 int rv = delegate->ReadData(cb.callback()); | 1598 int rv = delegate->ReadData(cb.callback()); |
1593 EXPECT_EQ(ERR_IO_PENDING, rv); | 1599 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
1594 const char kResponseBody[] = "Hello world!"; | 1600 const char kResponseBody[] = "Hello world!"; |
1595 // Server sends data. | 1601 // Server sends data. |
1596 ProcessPacket( | 1602 ProcessPacket( |
1597 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); | 1603 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); |
1598 EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), cb.WaitForResult()); | 1604 EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), cb.WaitForResult()); |
1599 | 1605 |
1600 base::RunLoop().RunUntilIdle(); | 1606 base::RunLoop().RunUntilIdle(); |
1601 | 1607 |
1602 EXPECT_EQ(1, delegate->on_data_read_count()); | 1608 EXPECT_EQ(1, delegate->on_data_read_count()); |
1603 EXPECT_EQ(0, delegate->on_data_sent_count()); | 1609 EXPECT_EQ(0, delegate->on_data_sent_count()); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1636 ProcessPacket(ConstructResponseHeadersPacket( | 1642 ProcessPacket(ConstructResponseHeadersPacket( |
1637 2, !kFin, std::move(response_headers), | 1643 2, !kFin, std::move(response_headers), |
1638 &spdy_response_headers_frame_length, &offset)); | 1644 &spdy_response_headers_frame_length, &offset)); |
1639 | 1645 |
1640 delegate->WaitUntilNextCallback(); // OnHeadersReceived | 1646 delegate->WaitUntilNextCallback(); // OnHeadersReceived |
1641 | 1647 |
1642 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); | 1648 EXPECT_EQ("200", delegate->response_headers().find(":status")->second); |
1643 | 1649 |
1644 TestCompletionCallback cb; | 1650 TestCompletionCallback cb; |
1645 int rv = delegate->ReadData(cb.callback()); | 1651 int rv = delegate->ReadData(cb.callback()); |
1646 EXPECT_EQ(ERR_IO_PENDING, rv); | 1652 EXPECT_THAT(rv, IsError(ERR_IO_PENDING)); |
1647 const char kResponseBody[] = "Hello world!"; | 1653 const char kResponseBody[] = "Hello world!"; |
1648 // Server sends data. | 1654 // Server sends data. |
1649 ProcessPacket( | 1655 ProcessPacket( |
1650 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); | 1656 ConstructServerDataPacket(3, !kIncludeVersion, !kFin, 0, kResponseBody)); |
1651 | 1657 |
1652 EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), cb.WaitForResult()); | 1658 EXPECT_EQ(static_cast<int64_t>(strlen(kResponseBody)), cb.WaitForResult()); |
1653 EXPECT_EQ(std::string(kResponseBody), delegate->data_received()); | 1659 EXPECT_EQ(std::string(kResponseBody), delegate->data_received()); |
1654 | 1660 |
1655 size_t spdy_trailers_frame_length; | 1661 size_t spdy_trailers_frame_length; |
1656 SpdyHeaderBlock trailers; | 1662 SpdyHeaderBlock trailers; |
1657 trailers["foo"] = "bar"; | 1663 trailers["foo"] = "bar"; |
1658 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); | 1664 trailers[kFinalOffsetHeaderKey] = base::IntToString(strlen(kResponseBody)); |
1659 // Server sends trailers. | 1665 // Server sends trailers. |
1660 ProcessPacket(ConstructResponseTrailersPacket( | 1666 ProcessPacket(ConstructResponseTrailersPacket( |
1661 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); | 1667 4, kFin, trailers.Clone(), &spdy_trailers_frame_length, &offset)); |
1662 | 1668 |
1663 delegate->WaitUntilNextCallback(); // OnTrailersReceived | 1669 delegate->WaitUntilNextCallback(); // OnTrailersReceived |
1664 trailers.erase(kFinalOffsetHeaderKey); | 1670 trailers.erase(kFinalOffsetHeaderKey); |
1665 EXPECT_EQ(trailers, delegate->trailers()); | 1671 EXPECT_EQ(trailers, delegate->trailers()); |
1666 | 1672 |
1667 base::RunLoop().RunUntilIdle(); | 1673 base::RunLoop().RunUntilIdle(); |
1668 | 1674 |
1669 EXPECT_EQ(1, delegate->on_data_read_count()); | 1675 EXPECT_EQ(1, delegate->on_data_read_count()); |
1670 EXPECT_EQ(0, delegate->on_data_sent_count()); | 1676 EXPECT_EQ(0, delegate->on_data_sent_count()); |
1671 } | 1677 } |
1672 | 1678 |
1673 } // namespace test | 1679 } // namespace test |
1674 | 1680 |
1675 } // namespace net | 1681 } // namespace net |
OLD | NEW |