Index: net/quic/reliable_quic_stream_test.cc |
diff --git a/net/quic/reliable_quic_stream_test.cc b/net/quic/reliable_quic_stream_test.cc |
index a879e26d6fd11beb5363e267154d362f7724683b..bfbe9c7c0fe9b951bf16f2113e6963480fbda013 100644 |
--- a/net/quic/reliable_quic_stream_test.cc |
+++ b/net/quic/reliable_quic_stream_test.cc |
@@ -4,6 +4,7 @@ |
#include "net/quic/reliable_quic_stream.h" |
+#include "net/quic/quic_ack_notifier.h" |
#include "net/quic/quic_connection.h" |
#include "net/quic/quic_spdy_compressor.h" |
#include "net/quic/quic_spdy_decompressor.h" |
@@ -37,11 +38,10 @@ const bool kShouldProcessData = true; |
class TestStream : public ReliableQuicStream { |
public: |
TestStream(QuicStreamId id, |
- QuicSession* session, |
- bool should_process_data) |
+ QuicSession* session, |
+ bool should_process_data) |
: ReliableQuicStream(id, session), |
- should_process_data_(should_process_data) { |
- } |
+ should_process_data_(should_process_data) {} |
virtual uint32 ProcessData(const char* data, uint32 data_len) OVERRIDE { |
EXPECT_NE(0u, data_len); |
@@ -126,7 +126,7 @@ TEST_F(ReliableQuicStreamTest, WriteAllData) { |
1 + QuicPacketCreator::StreamFramePacketOverhead( |
connection_->version(), PACKET_8BYTE_GUID, !kIncludeVersion, |
PACKET_6BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP); |
- EXPECT_CALL(*session_, WritevData(kStreamId, _, 1, _, _)).WillOnce( |
+ EXPECT_CALL(*session_, WritevData(kStreamId, _, 1, _, _, _)).WillOnce( |
Return(QuicConsumedData(kDataLen, true))); |
EXPECT_EQ(kDataLen, stream_->WriteData(kData1, false).bytes_consumed); |
EXPECT_FALSE(write_blocked_list_->HasWriteBlockedStreams()); |
@@ -140,7 +140,7 @@ TEST_F(ReliableQuicStreamTest, NoBlockingIfNoDataOrFin) { |
// Write no data and no fin. If we consume nothing we should not be write |
// blocked. |
EXPECT_DEBUG_DEATH({ |
- EXPECT_CALL(*session_, WritevData(kStreamId, _, 1, _, _)).WillOnce( |
+ EXPECT_CALL(*session_, WritevData(kStreamId, _, 1, _, _, _)).WillOnce( |
Return(QuicConsumedData(0, false))); |
stream_->WriteData(StringPiece(), false); |
EXPECT_FALSE(write_blocked_list_->HasWriteBlockedStreams()); |
@@ -153,10 +153,10 @@ TEST_F(ReliableQuicStreamTest, BlockIfOnlySomeDataConsumed) { |
// Write some data and no fin. If we consume some but not all of the data, |
// we should be write blocked a not all the data was consumed. |
- EXPECT_CALL(*session_, WritevData(kStreamId, _, 1, _, _)).WillOnce( |
+ EXPECT_CALL(*session_, WritevData(kStreamId, _, 1, _, _, _)).WillOnce( |
Return(QuicConsumedData(1, false))); |
stream_->WriteData(StringPiece(kData1, 2), false); |
- ASSERT_EQ(1, write_blocked_list_->NumBlockedStreams()); |
+ ASSERT_EQ(1u, write_blocked_list_->NumBlockedStreams()); |
} |
@@ -167,10 +167,10 @@ TEST_F(ReliableQuicStreamTest, BlockIfFinNotConsumedWithData) { |
// we should be write blocked because the fin was not consumed. |
// (This should never actually happen as the fin should be sent out with the |
// last data) |
- EXPECT_CALL(*session_, WritevData(kStreamId, _, 1, _, _)).WillOnce( |
+ EXPECT_CALL(*session_, WritevData(kStreamId, _, 1, _, _, _)).WillOnce( |
Return(QuicConsumedData(2, false))); |
stream_->WriteData(StringPiece(kData1, 2), true); |
- ASSERT_EQ(1, write_blocked_list_->NumBlockedStreams()); |
+ ASSERT_EQ(1u, write_blocked_list_->NumBlockedStreams()); |
} |
TEST_F(ReliableQuicStreamTest, BlockIfSoloFinNotConsumed) { |
@@ -178,10 +178,10 @@ TEST_F(ReliableQuicStreamTest, BlockIfSoloFinNotConsumed) { |
// Write no data and a fin. If we consume nothing we should be write blocked, |
// as the fin was not consumed. |
- EXPECT_CALL(*session_, WritevData(kStreamId, _, 1, _, _)).WillOnce( |
+ EXPECT_CALL(*session_, WritevData(kStreamId, _, 1, _, _, _)).WillOnce( |
Return(QuicConsumedData(0, false))); |
stream_->WriteData(StringPiece(), true); |
- ASSERT_EQ(1, write_blocked_list_->NumBlockedStreams()); |
+ ASSERT_EQ(1u, write_blocked_list_->NumBlockedStreams()); |
} |
TEST_F(ReliableQuicStreamTest, WriteData) { |
@@ -192,7 +192,7 @@ TEST_F(ReliableQuicStreamTest, WriteData) { |
1 + QuicPacketCreator::StreamFramePacketOverhead( |
connection_->version(), PACKET_8BYTE_GUID, !kIncludeVersion, |
PACKET_6BYTE_SEQUENCE_NUMBER, NOT_IN_FEC_GROUP); |
- EXPECT_CALL(*session_, WritevData(_, _, 1, _, _)).WillOnce( |
+ EXPECT_CALL(*session_, WritevData(_, _, 1, _, _, _)).WillOnce( |
Return(QuicConsumedData(kDataLen - 1, false))); |
// The return will be kDataLen, because the last byte gets buffered. |
EXPECT_EQ(kDataLen, stream_->WriteData(kData1, false).bytes_consumed); |
@@ -203,14 +203,14 @@ TEST_F(ReliableQuicStreamTest, WriteData) { |
// Make sure we get the tail of the first write followed by the bytes_consumed |
InSequence s; |
- EXPECT_CALL(*session_, WritevData(_, _, 1, _, _)). |
+ EXPECT_CALL(*session_, WritevData(_, _, 1, _, _, _)). |
WillOnce(Return(QuicConsumedData(1, false))); |
- EXPECT_CALL(*session_, WritevData(_, _, 1, _, _)). |
+ EXPECT_CALL(*session_, WritevData(_, _, 1, _, _, _)). |
WillOnce(Return(QuicConsumedData(kDataLen - 2, false))); |
stream_->OnCanWrite(); |
// And finally the end of the bytes_consumed. |
- EXPECT_CALL(*session_, WritevData(_, _, 1, _, _)). |
+ EXPECT_CALL(*session_, WritevData(_, _, 1, _, _, _)). |
WillOnce(Return(QuicConsumedData(2, true))); |
stream_->OnCanWrite(); |
} |
@@ -245,13 +245,25 @@ TEST_F(ReliableQuicStreamTest, ProcessHeadersWithInvalidHeaderId) { |
string compressed_headers = compressor_->CompressHeadersWithPriority( |
kHighestPriority, headers_); |
- compressed_headers.replace(4, 1, 1, '\xFF'); // Illegal header id. |
+ compressed_headers[4] = '\xFF'; // Illegal header id. |
QuicStreamFrame frame(kStreamId, false, 0, MakeIOVector(compressed_headers)); |
EXPECT_CALL(*connection_, SendConnectionClose(QUIC_INVALID_HEADER_ID)); |
stream_->OnStreamFrame(frame); |
} |
+TEST_F(ReliableQuicStreamTest, ProcessHeadersWithInvalidPriority) { |
+ Initialize(kShouldProcessData); |
+ |
+ string compressed_headers = compressor_->CompressHeadersWithPriority( |
+ kHighestPriority, headers_); |
+ compressed_headers[0] = '\xFF'; // Illegal priority. |
+ QuicStreamFrame frame(kStreamId, false, 0, MakeIOVector(compressed_headers)); |
+ |
+ EXPECT_CALL(*connection_, SendConnectionClose(QUIC_INVALID_PRIORITY)); |
+ stream_->OnStreamFrame(frame); |
+} |
+ |
TEST_F(ReliableQuicStreamTest, ProcessHeadersAndBody) { |
Initialize(kShouldProcessData); |