| Index: net/quic/quic_session_test.cc
|
| diff --git a/net/quic/quic_session_test.cc b/net/quic/quic_session_test.cc
|
| index d5468e7f2c0609c1fec6e4818d751133b1c04844..adc4c001b9e90d8e5dd9db33772d80dd456865b0 100644
|
| --- a/net/quic/quic_session_test.cc
|
| +++ b/net/quic/quic_session_test.cc
|
| @@ -15,6 +15,7 @@
|
| #include "net/quic/quic_protocol.h"
|
| #include "net/quic/quic_utils.h"
|
| #include "net/quic/reliable_quic_stream.h"
|
| +#include "net/quic/test_tools/quic_config_peer.h"
|
| #include "net/quic/test_tools/quic_connection_peer.h"
|
| #include "net/quic/test_tools/quic_data_stream_peer.h"
|
| #include "net/quic/test_tools/quic_flow_controller_peer.h"
|
| @@ -116,9 +117,8 @@ class StreamBlocker {
|
|
|
| class TestSession : public QuicSession {
|
| public:
|
| - TestSession(QuicConnection* connection,
|
| - uint32 max_initial_flow_control_window)
|
| - : QuicSession(connection, max_initial_flow_control_window,
|
| + explicit TestSession(QuicConnection* connection)
|
| + : QuicSession(connection,
|
| DefaultQuicConfig()),
|
| crypto_stream_(this),
|
| writev_consumes_all_data_(false) {}
|
| @@ -181,7 +181,9 @@ class QuicSessionTest : public ::testing::TestWithParam<QuicVersion> {
|
| protected:
|
| QuicSessionTest()
|
| : connection_(new MockConnection(true, SupportedVersions(GetParam()))),
|
| - session_(connection_, kInitialFlowControlWindowForTest) {
|
| + session_(connection_) {
|
| + session_.config()->SetInitialFlowControlWindowToSend(
|
| + kInitialFlowControlWindowForTest);
|
| headers_[":host"] = "www.google.com";
|
| headers_[":path"] = "/index.hml";
|
| headers_[":scheme"] = "http";
|
| @@ -515,11 +517,11 @@ TEST_P(QuicSessionTest, OnCanWriteWithClosedStream) {
|
| }
|
|
|
| TEST_P(QuicSessionTest, OnCanWriteLimitsNumWritesIfFlowControlBlocked) {
|
| - ValueRestore<bool> old_flag(&FLAGS_enable_quic_connection_flow_control, true);
|
| if (version() < QUIC_VERSION_19) {
|
| return;
|
| }
|
|
|
| + ValueRestore<bool> old_flag(&FLAGS_enable_quic_connection_flow_control, true);
|
| // Ensure connection level flow control blockage.
|
| QuicFlowControllerPeer::SetSendWindowOffset(session_.flow_controller(), 0);
|
| EXPECT_TRUE(session_.flow_controller()->IsBlocked());
|
| @@ -654,41 +656,21 @@ TEST_P(QuicSessionTest, InvalidFlowControlWindowInHandshake) {
|
| ValueRestore<bool> old_flag(&FLAGS_enable_quic_stream_flow_control_2, true);
|
|
|
| uint32 kInvalidWindow = kDefaultFlowControlSendWindow - 1;
|
| -
|
| - CryptoHandshakeMessage msg;
|
| - string error_details;
|
| - session_.config()->SetInitialFlowControlWindowToSend(kInvalidWindow);
|
| - session_.config()->ToHandshakeMessage(&msg);
|
| - const QuicErrorCode error =
|
| - session_.config()->ProcessPeerHello(msg, CLIENT, &error_details);
|
| - EXPECT_EQ(QUIC_NO_ERROR, error);
|
| + QuicConfigPeer::SetReceivedInitialFlowControlWindow(session_.config(),
|
| + kInvalidWindow);
|
|
|
| EXPECT_CALL(*connection_,
|
| SendConnectionClose(QUIC_FLOW_CONTROL_INVALID_WINDOW));
|
| session_.OnConfigNegotiated();
|
| }
|
|
|
| -
|
| -TEST_P(QuicSessionTest, InvalidFlowControlWindow) {
|
| - // Test that an attempt to create a QuicSession with an invalid (< default)
|
| - // flow control window results in a QuicSession using the default.
|
| - QuicConnection* connection =
|
| - new MockConnection(true, SupportedVersions(GetParam()));
|
| -
|
| - const uint32 kSmallerFlowControlWindow = kDefaultFlowControlSendWindow - 1;
|
| - TestSession session(connection, kSmallerFlowControlWindow);
|
| -
|
| - EXPECT_EQ(kDefaultFlowControlSendWindow,
|
| - session.max_flow_control_receive_window_bytes());
|
| -}
|
| -
|
| TEST_P(QuicSessionTest, ConnectionFlowControlAccountingRstOutOfOrder) {
|
| - FLAGS_enable_quic_stream_flow_control_2 = true;
|
| - FLAGS_enable_quic_connection_flow_control = true;
|
| if (version() < QUIC_VERSION_19) {
|
| return;
|
| }
|
|
|
| + ValueRestore<bool> old_flag2(&FLAGS_enable_quic_stream_flow_control_2, true);
|
| + ValueRestore<bool> old_flag(&FLAGS_enable_quic_connection_flow_control, true);
|
| // 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
|
| @@ -711,12 +693,12 @@ TEST_P(QuicSessionTest, ConnectionFlowControlAccountingRstOutOfOrder) {
|
| }
|
|
|
| TEST_P(QuicSessionTest, ConnectionFlowControlAccountingFinAndLocalReset) {
|
| - FLAGS_enable_quic_stream_flow_control_2 = true;
|
| - FLAGS_enable_quic_connection_flow_control = true;
|
| if (version() < QUIC_VERSION_19) {
|
| return;
|
| }
|
|
|
| + ValueRestore<bool> old_flag2(&FLAGS_enable_quic_stream_flow_control_2, true);
|
| + ValueRestore<bool> old_flag(&FLAGS_enable_quic_connection_flow_control, true);
|
| // 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
|
| @@ -752,11 +734,12 @@ 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.
|
| - FLAGS_enable_quic_connection_flow_control = true;
|
| if (version() < QUIC_VERSION_19) {
|
| return;
|
| }
|
|
|
| + ValueRestore<bool> old_flag2(&FLAGS_enable_quic_stream_flow_control_2, true);
|
| + ValueRestore<bool> old_flag(&FLAGS_enable_quic_connection_flow_control, true);
|
| // Connection starts with some non-zero highest received byte offset,
|
| // due to other active streams.
|
| const uint64 kInitialConnectionBytesConsumed = 567;
|
| @@ -795,11 +778,12 @@ 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.
|
| - FLAGS_enable_quic_connection_flow_control = true;
|
| if (version() < QUIC_VERSION_19) {
|
| return;
|
| }
|
|
|
| + ValueRestore<bool> old_flag2(&FLAGS_enable_quic_stream_flow_control_2, true);
|
| + ValueRestore<bool> old_flag(&FLAGS_enable_quic_connection_flow_control, true);
|
| // Connection starts with some non-zero highest received byte offset,
|
| // due to other active streams.
|
| const uint64 kInitialConnectionBytesConsumed = 567;
|
| @@ -834,8 +818,8 @@ TEST_P(QuicSessionTest, FlowControlWithInvalidFinalOffset) {
|
| if (version() < QUIC_VERSION_17) {
|
| return;
|
| }
|
| - FLAGS_enable_quic_stream_flow_control_2 = true;
|
| - FLAGS_enable_quic_connection_flow_control = true;
|
| + ValueRestore<bool> old_flag2(&FLAGS_enable_quic_stream_flow_control_2, true);
|
| + ValueRestore<bool> old_flag(&FLAGS_enable_quic_connection_flow_control, true);
|
|
|
| const uint64 kLargeOffset = kInitialFlowControlWindowForTest + 1;
|
| EXPECT_CALL(*connection_,
|
| @@ -857,14 +841,12 @@ TEST_P(QuicSessionTest, FlowControlWithInvalidFinalOffset) {
|
| }
|
|
|
| TEST_P(QuicSessionTest, VersionNegotiationDisablesFlowControl) {
|
| - ValueRestore<bool> old_stream_flag(
|
| - &FLAGS_enable_quic_stream_flow_control_2, true);
|
| - ValueRestore<bool> old_connection_flag(
|
| - &FLAGS_enable_quic_connection_flow_control, true);
|
| if (version() < QUIC_VERSION_19) {
|
| return;
|
| }
|
|
|
| + ValueRestore<bool> old_flag2(&FLAGS_enable_quic_stream_flow_control_2, true);
|
| + ValueRestore<bool> old_flag(&FLAGS_enable_quic_connection_flow_control, true);
|
| // Test that after successful version negotiation, flow control is disabled
|
| // appropriately at both the connection and stream level.
|
|
|
|
|