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

Unified Diff: net/quic/quic_session_test.cc

Issue 663013003: Removing QUIC_VERSION_18. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@Change_QUIC_pacing_granularity_77587738
Patch Set: Created 6 years, 2 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/quic/quic_session.cc ('k') | net/tools/quic/end_to_end_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/quic/quic_session_test.cc
diff --git a/net/quic/quic_session_test.cc b/net/quic/quic_session_test.cc
index 770a564c424c3118b1409721c856d2f2c8c921bd..7ab6e6efca727b2de4b12741c25283657b452877 100644
--- a/net/quic/quic_session_test.cc
+++ b/net/quic/quic_session_test.cc
@@ -529,10 +529,6 @@ TEST_P(QuicSessionTest, OnCanWriteWithClosedStream) {
}
TEST_P(QuicSessionTest, OnCanWriteLimitsNumWritesIfFlowControlBlocked) {
- if (version() < QUIC_VERSION_19) {
- return;
- }
-
// Ensure connection level flow control blockage.
QuicFlowControllerPeer::SetSendWindowOffset(session_.flow_controller(), 0);
EXPECT_TRUE(session_.flow_controller()->IsBlocked());
@@ -797,7 +793,7 @@ TEST_P(QuicSessionTest, InvalidStreamFlowControlWindowInHandshake) {
TEST_P(QuicSessionTest, InvalidSessionFlowControlWindowInHandshake) {
// Test that receipt of an invalid (< default) session flow control window
// from the peer results in the connection being torn down.
- if (version() <= QUIC_VERSION_19) {
+ if (version() == QUIC_VERSION_19) {
return;
}
@@ -810,155 +806,6 @@ TEST_P(QuicSessionTest, InvalidSessionFlowControlWindowInHandshake) {
session_.OnConfigNegotiated();
}
-TEST_P(QuicSessionTest, ConnectionFlowControlAccountingRstOutOfOrder) {
- if (version() < QUIC_VERSION_19) {
- return;
- }
-
- // Test that when we receive an out of order stream RST we correctly adjust
- // our connection level flow control receive window.
- // On close, the stream should mark as consumed all bytes between the highest
- // byte consumed so far and the final byte offset from the RST frame.
- TestStream* stream = session_.CreateOutgoingDataStream();
-
- const QuicStreamOffset kByteOffset =
- 1 + kInitialSessionFlowControlWindowForTest / 2;
-
- // Expect no stream WINDOW_UPDATE frames, as stream read side closed.
- EXPECT_CALL(*connection_, SendWindowUpdate(stream->id(), _)).Times(0);
- // We do expect a connection level WINDOW_UPDATE when the stream is reset.
- EXPECT_CALL(*connection_,
- SendWindowUpdate(0, kInitialSessionFlowControlWindowForTest +
- kByteOffset)).Times(1);
-
- QuicRstStreamFrame rst_frame(stream->id(), QUIC_STREAM_CANCELLED,
- kByteOffset);
- session_.OnRstStream(rst_frame);
- session_.PostProcessAfterData();
- EXPECT_EQ(kByteOffset, session_.flow_controller()->bytes_consumed());
-}
-
-TEST_P(QuicSessionTest, ConnectionFlowControlAccountingFinAndLocalReset) {
- if (version() < QUIC_VERSION_19) {
- return;
- }
-
- // Test the situation where we receive a FIN on a stream, and before we fully
- // consume all the data from the sequencer buffer we locally RST the stream.
- // The bytes between highest consumed byte, and the final byte offset that we
- // determined when the FIN arrived, should be marked as consumed at the
- // connection level flow controller when the stream is reset.
- TestStream* stream = session_.CreateOutgoingDataStream();
-
- const QuicStreamOffset kByteOffset =
- 1 + kInitialSessionFlowControlWindowForTest / 2;
- QuicStreamFrame frame(stream->id(), true, kByteOffset, IOVector());
- vector<QuicStreamFrame> frames;
- frames.push_back(frame);
- session_.OnStreamFrames(frames);
- session_.PostProcessAfterData();
-
- EXPECT_EQ(0u, stream->flow_controller()->bytes_consumed());
- EXPECT_EQ(kByteOffset,
- stream->flow_controller()->highest_received_byte_offset());
-
- // We only expect to see a connection WINDOW_UPDATE when talking
- // QUIC_VERSION_19, as in this case both stream and session flow control
- // windows are the same size. In later versions we will not see a connection
- // level WINDOW_UPDATE when exhausting a stream, as the stream flow control
- // limit is much lower than the connection flow control limit.
- if (version() == QUIC_VERSION_19) {
- // Expect no stream WINDOW_UPDATE frames, as stream read side closed.
- EXPECT_CALL(*connection_, SendWindowUpdate(stream->id(), _)).Times(0);
- // We do expect a connection level WINDOW_UPDATE when the stream is reset.
- EXPECT_CALL(*connection_,
- SendWindowUpdate(0, kInitialSessionFlowControlWindowForTest +
- kByteOffset)).Times(1);
- }
-
- // Reset stream locally.
- stream->Reset(QUIC_STREAM_CANCELLED);
- EXPECT_EQ(kByteOffset, session_.flow_controller()->bytes_consumed());
-}
-
-TEST_P(QuicSessionTest, ConnectionFlowControlAccountingFinAfterRst) {
- // Test that when we RST the stream (and tear down stream state), and then
- // receive a FIN from the peer, we correctly adjust our connection level flow
- // control receive window.
- if (version() < QUIC_VERSION_19) {
- return;
- }
-
- // Connection starts with some non-zero highest received byte offset,
- // due to other active streams.
- const uint64 kInitialConnectionBytesConsumed = 567;
- const uint64 kInitialConnectionHighestReceivedOffset = 1234;
- EXPECT_LT(kInitialConnectionBytesConsumed,
- kInitialConnectionHighestReceivedOffset);
- session_.flow_controller()->UpdateHighestReceivedOffset(
- kInitialConnectionHighestReceivedOffset);
- session_.flow_controller()->AddBytesConsumed(kInitialConnectionBytesConsumed);
-
- // Reset our stream: this results in the stream being closed locally.
- TestStream* stream = session_.CreateOutgoingDataStream();
- stream->Reset(QUIC_STREAM_CANCELLED);
-
- // Now receive a response from the peer with a FIN. We should handle this by
- // adjusting the connection level flow control receive window to take into
- // account the total number of bytes sent by the peer.
- const QuicStreamOffset kByteOffset = 5678;
- string body = "hello";
- IOVector data = MakeIOVector(body);
- QuicStreamFrame frame(stream->id(), true, kByteOffset, data);
- vector<QuicStreamFrame> frames;
- frames.push_back(frame);
- session_.OnStreamFrames(frames);
-
- QuicStreamOffset total_stream_bytes_sent_by_peer =
- kByteOffset + body.length();
- EXPECT_EQ(kInitialConnectionBytesConsumed + total_stream_bytes_sent_by_peer,
- session_.flow_controller()->bytes_consumed());
- EXPECT_EQ(
- kInitialConnectionHighestReceivedOffset + total_stream_bytes_sent_by_peer,
- session_.flow_controller()->highest_received_byte_offset());
-}
-
-TEST_P(QuicSessionTest, ConnectionFlowControlAccountingRstAfterRst) {
- // Test that when we RST the stream (and tear down stream state), and then
- // receive a RST from the peer, we correctly adjust our connection level flow
- // control receive window.
- if (version() < QUIC_VERSION_19) {
- return;
- }
-
- // Connection starts with some non-zero highest received byte offset,
- // due to other active streams.
- const uint64 kInitialConnectionBytesConsumed = 567;
- const uint64 kInitialConnectionHighestReceivedOffset = 1234;
- EXPECT_LT(kInitialConnectionBytesConsumed,
- kInitialConnectionHighestReceivedOffset);
- session_.flow_controller()->UpdateHighestReceivedOffset(
- kInitialConnectionHighestReceivedOffset);
- session_.flow_controller()->AddBytesConsumed(kInitialConnectionBytesConsumed);
-
- // Reset our stream: this results in the stream being closed locally.
- TestStream* stream = session_.CreateOutgoingDataStream();
- stream->Reset(QUIC_STREAM_CANCELLED);
-
- // Now receive a RST from the peer. We should handle this by adjusting the
- // connection level flow control receive window to take into account the total
- // number of bytes sent by the peer.
- const QuicStreamOffset kByteOffset = 5678;
- QuicRstStreamFrame rst_frame(stream->id(), QUIC_STREAM_CANCELLED,
- kByteOffset);
- session_.OnRstStream(rst_frame);
-
- EXPECT_EQ(kInitialConnectionBytesConsumed + kByteOffset,
- session_.flow_controller()->bytes_consumed());
- EXPECT_EQ(kInitialConnectionHighestReceivedOffset + kByteOffset,
- session_.flow_controller()->highest_received_byte_offset());
-}
-
TEST_P(QuicSessionTest, FlowControlWithInvalidFinalOffset) {
// Test that if we receive a stream RST with a highest byte offset that
// violates flow control, that we close the connection.
@@ -981,26 +828,6 @@ TEST_P(QuicSessionTest, FlowControlWithInvalidFinalOffset) {
session_.OnRstStream(rst_frame);
}
-TEST_P(QuicSessionTest, VersionNegotiationDisablesFlowControl) {
- if (version() < QUIC_VERSION_19) {
- return;
- }
-
- // Test that after successful version negotiation, flow control is disabled
- // appropriately at both the connection and stream level.
-
- // Initially both stream and connection flow control are enabled.
- TestStream* stream = session_.CreateOutgoingDataStream();
- EXPECT_TRUE(stream->flow_controller()->IsEnabled());
- EXPECT_TRUE(session_.flow_controller()->IsEnabled());
-
- // Version 18 implies that stream flow control is enabled, but connection
- // level is disabled.
- session_.OnSuccessfulVersionNegotiation(QUIC_VERSION_18);
- EXPECT_FALSE(session_.flow_controller()->IsEnabled());
- EXPECT_TRUE(stream->flow_controller()->IsEnabled());
-}
-
TEST_P(QuicSessionTest, WindowUpdateUnblocksHeadersStream) {
// Test that a flow control blocked headers stream gets unblocked on recipt of
// a WINDOW_UPDATE frame. Regression test for b/17413860.
@@ -1028,39 +855,6 @@ TEST_P(QuicSessionTest, WindowUpdateUnblocksHeadersStream) {
EXPECT_FALSE(session_.IsStreamFlowControlBlocked());
}
-TEST_P(QuicSessionTest, TooManyUnfinishedStreamsCauseConnectionClose) {
- if (version() < QUIC_VERSION_18) {
- return;
- }
- // If a buggy/malicious peer creates too many streams that are not ended with
- // a FIN or RST then we send a connection close.
- ValueRestore<bool> old_flag(&FLAGS_close_quic_connection_unfinished_streams_2,
- true);
-
- EXPECT_CALL(*connection_,
- SendConnectionClose(QUIC_TOO_MANY_UNFINISHED_STREAMS)).Times(1);
-
- const int kMaxStreams = 5;
- QuicSessionPeer::SetMaxOpenStreams(&session_, kMaxStreams);
-
- // Create kMaxStreams + 1 data streams, and close them all without receiving a
- // FIN or a RST from the client.
- const int kFirstStreamId = kClientDataStreamId1;
- const int kFinalStreamId = kClientDataStreamId1 + 2 * kMaxStreams + 1;
- for (int i = kFirstStreamId; i < kFinalStreamId; i += 2) {
- QuicStreamFrame data1(i, false, 0, MakeIOVector("HT"));
- vector<QuicStreamFrame> frames;
- frames.push_back(data1);
- session_.OnStreamFrames(frames);
- EXPECT_EQ(1u, session_.GetNumOpenStreams());
- session_.CloseStream(i);
- }
-
- // Called after any new data is received by the session, and triggers the call
- // to close the connection.
- session_.PostProcessAfterData();
-}
-
} // namespace
} // namespace test
} // namespace net
« no previous file with comments | « net/quic/quic_session.cc ('k') | net/tools/quic/end_to_end_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698