| Index: net/tools/quic/end_to_end_test.cc
|
| diff --git a/net/tools/quic/end_to_end_test.cc b/net/tools/quic/end_to_end_test.cc
|
| index 6576f9201c99b9dd05fa4a5cd8baf4893e72a3b3..2c314e04e3a5300fb66382326b3e6159df725833 100644
|
| --- a/net/tools/quic/end_to_end_test.cc
|
| +++ b/net/tools/quic/end_to_end_test.cc
|
| @@ -158,7 +158,6 @@ class EndToEndTest : public ::testing::TestWithParam<TestParams> {
|
| client_supported_versions_ = GetParam().client_supported_versions;
|
| server_supported_versions_ = GetParam().server_supported_versions;
|
| negotiated_version_ = GetParam().negotiated_version;
|
| - FLAGS_limit_rto_increase_for_tests = true;
|
| FLAGS_enable_quic_pacing = GetParam().use_pacing;
|
| LOG(INFO) << "Using Configuration: " << GetParam();
|
|
|
| @@ -253,8 +252,10 @@ class EndToEndTest : public ::testing::TestWithParam<TestParams> {
|
| void SetPacketLossPercentage(int32 loss) {
|
| // TODO(rtenneti): enable when we can do random packet loss tests in
|
| // chrome's tree.
|
| - // client_writer_->set_fake_packet_loss_percentage(loss);
|
| - // server_writer_->set_fake_packet_loss_percentage(loss);
|
| + if (loss != 0 && loss != 100)
|
| + return;
|
| + client_writer_->set_fake_packet_loss_percentage(loss);
|
| + server_writer_->set_fake_packet_loss_percentage(loss);
|
| }
|
|
|
| void SetPacketSendDelay(QuicTime::Delta delay) {
|
| @@ -780,6 +781,41 @@ TEST_P(EndToEndTest, MaxStreamsUberTest) {
|
| }
|
| }
|
|
|
| +TEST_P(EndToEndTest, StreamCancelErrorTest) {
|
| + ASSERT_TRUE(Initialize());
|
| + string small_body;
|
| + GenerateBody(&small_body, 256);
|
| +
|
| + AddToCache("GET", "/small_response", "HTTP/1.1", "200", "OK", small_body);
|
| +
|
| + client_->client()->WaitForCryptoHandshakeConfirmed();
|
| +
|
| + QuicSession* session = client_->client()->session();
|
| + // Lose the request.
|
| + SetPacketLossPercentage(100);
|
| + EXPECT_LT(0, client_->SendRequest("/small_response"));
|
| + client_->client()->WaitForEvents();
|
| + // Transmit the cancel, and ensure the connection is torn down properly.
|
| + SetPacketLossPercentage(0);
|
| + QuicStreamId stream_id = negotiated_version_ > QUIC_VERSION_12 ? 5 : 3;
|
| + session->SendRstStream(stream_id, QUIC_STREAM_CANCELLED);
|
| +
|
| + // WaitForEvents waits 50ms and returns true if there are outstanding
|
| + // requests.
|
| + while (client_->client()->WaitForEvents() == true) {
|
| + }
|
| + if (negotiated_version_ > QUIC_VERSION_12) {
|
| + // It should be completely fine to RST a stream before any data has bee
|
| + // received for that stream.
|
| + EXPECT_EQ(QUIC_NO_ERROR, client_->connection_error());
|
| + } else {
|
| + // Check that the connection is always properly closed
|
| + // from a stream being RST before headers are decompressed.
|
| + EXPECT_EQ(QUIC_STREAM_RST_BEFORE_HEADERS_DECOMPRESSED,
|
| + client_->connection_error());
|
| + }
|
| +}
|
| +
|
| class WrongAddressWriter : public QuicTestWriter {
|
| public:
|
| WrongAddressWriter() {
|
|
|