Index: net/quic/quic_config_test.cc |
diff --git a/net/quic/quic_config_test.cc b/net/quic/quic_config_test.cc |
index 63299e5b0f7f28eb3e1a474df00181dc362b61aa..f77c3825c31ea421ce5075588100dbd2eac946d4 100644 |
--- a/net/quic/quic_config_test.cc |
+++ b/net/quic/quic_config_test.cc |
@@ -12,6 +12,7 @@ |
#include "net/quic/quic_time.h" |
#include "net/quic/quic_utils.h" |
#include "net/quic/test_tools/quic_test_utils.h" |
+#include "net/test/gtest_util.h" |
#include "testing/gtest/include/gtest/gtest.h" |
using std::string; |
@@ -32,6 +33,7 @@ class QuicConfigTest : public ::testing::Test { |
TEST_F(QuicConfigTest, ToHandshakeMessage) { |
ValueRestore<bool> old_flag(&FLAGS_enable_quic_pacing, false); |
config_.SetDefaults(); |
+ config_.SetInitialFlowControlWindowToSend(kInitialFlowControlWindowForTest); |
config_.set_idle_connection_state_lifetime(QuicTime::Delta::FromSeconds(5), |
QuicTime::Delta::FromSeconds(2)); |
config_.set_max_streams_per_connection(4, 2); |
@@ -47,6 +49,10 @@ TEST_F(QuicConfigTest, ToHandshakeMessage) { |
EXPECT_EQ(QUIC_NO_ERROR, error); |
EXPECT_EQ(4u, value); |
+ error = msg.GetUint32(kIFCW, &value); |
+ EXPECT_EQ(QUIC_NO_ERROR, error); |
+ EXPECT_EQ(kInitialFlowControlWindowForTest, value); |
+ |
const QuicTag* out; |
size_t out_len; |
error = msg.GetTaglist(kCGST, &out, &out_len); |
@@ -82,6 +88,8 @@ TEST_F(QuicConfigTest, ProcessClientHello) { |
2 * kDefaultMaxStreamsPerConnection, kDefaultMaxStreamsPerConnection); |
client_config.SetInitialRoundTripTimeUsToSend( |
10 * base::Time::kMicrosecondsPerMillisecond); |
+ client_config.SetInitialFlowControlWindowToSend( |
+ 2 * kInitialFlowControlWindowForTest); |
QuicTagVector copt; |
copt.push_back(kTBBR); |
client_config.SetCongestionOptionsToSend(copt); |
@@ -104,6 +112,8 @@ TEST_F(QuicConfigTest, ProcessClientHello) { |
EXPECT_TRUE(config_.HasReceivedCongestionOptions()); |
EXPECT_EQ(1u, config_.ReceivedCongestionOptions().size()); |
EXPECT_EQ(config_.ReceivedCongestionOptions()[0], kTBBR); |
+ EXPECT_EQ(config_.ReceivedInitialFlowControlWindowBytes(), |
+ 2 * kInitialFlowControlWindowForTest); |
} |
TEST_F(QuicConfigTest, ProcessServerHello) { |
@@ -120,6 +130,8 @@ TEST_F(QuicConfigTest, ProcessServerHello) { |
server_config.SetInitialCongestionWindowToSend(kDefaultInitialWindow / 2); |
server_config.SetInitialRoundTripTimeUsToSend( |
10 * base::Time::kMicrosecondsPerMillisecond); |
+ server_config.SetInitialFlowControlWindowToSend( |
+ 2 * kInitialFlowControlWindowForTest); |
CryptoHandshakeMessage msg; |
server_config.ToHandshakeMessage(&msg); |
string error_details; |
@@ -138,6 +150,8 @@ TEST_F(QuicConfigTest, ProcessServerHello) { |
EXPECT_EQ(10 * base::Time::kMicrosecondsPerMillisecond, |
config_.ReceivedInitialRoundTripTimeUs()); |
EXPECT_FALSE(config_.HasReceivedLossDetection()); |
+ EXPECT_EQ(config_.ReceivedInitialFlowControlWindowBytes(), |
+ 2 * kInitialFlowControlWindowForTest); |
} |
TEST_F(QuicConfigTest, MissingOptionalValuesInCHLO) { |
@@ -243,6 +257,18 @@ TEST_F(QuicConfigTest, NoOverLapInCGST) { |
EXPECT_EQ(QUIC_CRYPTO_MESSAGE_PARAMETER_NO_OVERLAP, error); |
} |
+TEST_F(QuicConfigTest, InvalidFlowControlWindow) { |
+ // QuicConfig should not accept an invalid flow control window to send to the |
+ // peer: the receive window must be at least the default of 16 Kb. |
+ QuicConfig config; |
+ const uint64 kInvalidWindow = kDefaultFlowControlSendWindow - 1; |
+ EXPECT_DFATAL(config.SetInitialFlowControlWindowToSend(kInvalidWindow), |
+ "Initial flow control receive window"); |
+ |
+ EXPECT_EQ(kDefaultFlowControlSendWindow, |
+ config.GetInitialFlowControlWindowToSend()); |
+} |
+ |
} // namespace |
} // namespace test |
} // namespace net |