| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/core/quic_headers_stream.h" | 5 #include "net/quic/core/quic_headers_stream.h" |
| 6 | 6 |
| 7 #include <cstdint> | 7 #include <cstdint> |
| 8 #include <ostream> | 8 #include <ostream> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <tuple> | 10 #include <tuple> |
| (...skipping 954 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 965 .Times(AtLeast(kMinDataFrames)); | 965 .Times(AtLeast(kMinDataFrames)); |
| 966 EXPECT_CALL(visitor_, OnStreamFrameData(id, _, _)) | 966 EXPECT_CALL(visitor_, OnStreamFrameData(id, _, _)) |
| 967 .WillRepeatedly(WithArgs<1, 2>( | 967 .WillRepeatedly(WithArgs<1, 2>( |
| 968 Invoke(this, &QuicHeadersStreamTest::SavePayload))); | 968 Invoke(this, &QuicHeadersStreamTest::SavePayload))); |
| 969 if (fin) { | 969 if (fin) { |
| 970 EXPECT_CALL(visitor_, OnStreamEnd(id)); | 970 EXPECT_CALL(visitor_, OnStreamEnd(id)); |
| 971 } | 971 } |
| 972 framer_->ProcessInput(saved_data_.data(), saved_data_.length()); | 972 framer_->ProcessInput(saved_data_.data(), saved_data_.length()); |
| 973 EXPECT_EQ(saved_payloads_, data); | 973 EXPECT_EQ(saved_payloads_, data); |
| 974 | 974 |
| 975 if (use_ack_listener) { | 975 if (use_ack_listener && !session_.use_stream_notifier()) { |
| 976 // Notice, acked bytes doesn't include extra bytes used by | 976 // Notice, acked bytes doesn't include extra bytes used by |
| 977 // HTTP/2 DATA frame headers. | 977 // HTTP/2 DATA frame headers. |
| 978 EXPECT_EQ(ack_listener->total_acked_bytes(), data_len); | 978 EXPECT_EQ(ack_listener->total_acked_bytes(), data_len); |
| 979 } | 979 } |
| 980 saved_data_.clear(); | 980 saved_data_.clear(); |
| 981 saved_payloads_.clear(); | 981 saved_payloads_.clear(); |
| 982 } | 982 } |
| 983 } | 983 } |
| 984 } | 984 } |
| 985 | 985 |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1034 EXPECT_EQ(consumed_data.fin_consumed, false); | 1034 EXPECT_EQ(consumed_data.fin_consumed, false); |
| 1035 | 1035 |
| 1036 // If session already blocked, then bytes_consumed should be zero. | 1036 // If session already blocked, then bytes_consumed should be zero. |
| 1037 consumed_data = session_.WritevStreamData(id, MakeIOVector(data, &iov), | 1037 consumed_data = session_.WritevStreamData(id, MakeIOVector(data, &iov), |
| 1038 offset, fin, nullptr); | 1038 offset, fin, nullptr); |
| 1039 | 1039 |
| 1040 EXPECT_EQ(consumed_data.bytes_consumed, 0u); | 1040 EXPECT_EQ(consumed_data.bytes_consumed, 0u); |
| 1041 EXPECT_EQ(consumed_data.fin_consumed, false); | 1041 EXPECT_EQ(consumed_data.fin_consumed, false); |
| 1042 } | 1042 } |
| 1043 | 1043 |
| 1044 TEST_P(QuicHeadersStreamTest, AckSentData) { |
| 1045 if (!session_.use_stream_notifier()) { |
| 1046 return; |
| 1047 } |
| 1048 EXPECT_CALL(session_, |
| 1049 WritevData(headers_stream_, kHeadersStreamId, _, _, NO_FIN, _)) |
| 1050 .WillRepeatedly( |
| 1051 WithArgs<2>(Invoke(this, &QuicHeadersStreamTest::SaveIov))); |
| 1052 InSequence s; |
| 1053 QuicReferenceCountedPointer<MockAckListener> ack_listener1( |
| 1054 new MockAckListener()); |
| 1055 QuicReferenceCountedPointer<MockAckListener> ack_listener2( |
| 1056 new MockAckListener()); |
| 1057 QuicReferenceCountedPointer<MockAckListener> ack_listener3( |
| 1058 new MockAckListener()); |
| 1059 |
| 1060 // Packet 1. |
| 1061 headers_stream_->WriteOrBufferData("Header5", false, ack_listener1); |
| 1062 headers_stream_->WriteOrBufferData("Header5", false, ack_listener1); |
| 1063 headers_stream_->WriteOrBufferData("Header7", false, ack_listener2); |
| 1064 |
| 1065 // Packet 2. |
| 1066 headers_stream_->WriteOrBufferData("Header9", false, ack_listener3); |
| 1067 headers_stream_->WriteOrBufferData("Header7", false, ack_listener2); |
| 1068 |
| 1069 // Packet 3. |
| 1070 headers_stream_->WriteOrBufferData("Header9", false, ack_listener3); |
| 1071 |
| 1072 QuicStreamFrame frame1(kHeadersStreamId, false, 0, "Header5"); |
| 1073 QuicStreamFrame frame2(kHeadersStreamId, false, 7, "Header5"); |
| 1074 // This is a bad frame3. |
| 1075 QuicStreamFrame frame3(kHeadersStreamId, false, 14, "BadHeader7"); |
| 1076 QuicStreamFrame frame4(kHeadersStreamId, false, 21, "Header9"); |
| 1077 QuicStreamFrame frame5(kHeadersStreamId, false, 28, "Header7"); |
| 1078 QuicStreamFrame frame6(kHeadersStreamId, false, 35, "Header9"); |
| 1079 // Packet 2 gets retransmitted. |
| 1080 EXPECT_CALL(*ack_listener3, OnPacketRetransmitted(7)).Times(1); |
| 1081 EXPECT_CALL(*ack_listener2, OnPacketRetransmitted(7)).Times(1); |
| 1082 headers_stream_->OnStreamFrameRetransmitted(frame4); |
| 1083 headers_stream_->OnStreamFrameRetransmitted(frame5); |
| 1084 |
| 1085 // Packets are acked in order: 2, 3, 1. |
| 1086 EXPECT_CALL(*ack_listener3, OnPacketAcked(7, _)); |
| 1087 EXPECT_CALL(*ack_listener2, OnPacketAcked(7, _)); |
| 1088 headers_stream_->OnStreamFrameAcked(frame4, QuicTime::Delta::Zero()); |
| 1089 headers_stream_->OnStreamFrameAcked(frame5, QuicTime::Delta::Zero()); |
| 1090 |
| 1091 EXPECT_CALL(*ack_listener3, OnPacketAcked(7, _)); |
| 1092 headers_stream_->OnStreamFrameAcked(frame6, QuicTime::Delta::Zero()); |
| 1093 |
| 1094 EXPECT_CALL(*ack_listener1, OnPacketAcked(7, _)); |
| 1095 EXPECT_CALL(*ack_listener1, OnPacketAcked(7, _)); |
| 1096 headers_stream_->OnStreamFrameAcked(frame1, QuicTime::Delta::Zero()); |
| 1097 headers_stream_->OnStreamFrameAcked(frame2, QuicTime::Delta::Zero()); |
| 1098 // Unsent data is acked. |
| 1099 EXPECT_CALL(*connection_, CloseConnection(QUIC_INTERNAL_ERROR, _, _)); |
| 1100 headers_stream_->OnStreamFrameAcked(frame3, QuicTime::Delta::Zero()); |
| 1101 } |
| 1102 |
| 1044 } // namespace | 1103 } // namespace |
| 1045 } // namespace test | 1104 } // namespace test |
| 1046 } // namespace net | 1105 } // namespace net |
| OLD | NEW |