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

Unified Diff: net/tools/quic/end_to_end_test.cc

Issue 2487613002: Landing Recent QUIC changes until 12:43 PM, Nov 5, 2016 UTC+8 (Closed)
Patch Set: Created 4 years, 1 month 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/test_tools/reliable_quic_stream_peer.cc ('k') | net/tools/quic/quic_client_base.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 1c07f8aba3bf6f5087e0e87105447dfa154a21e2..b9031a1d3bdb9a7f35cc9aa2a28c46c3ad97e7fd 100644
--- a/net/tools/quic/end_to_end_test.cc
+++ b/net/tools/quic/end_to_end_test.cc
@@ -37,9 +37,9 @@
#include "net/quic/test_tools/quic_sent_packet_manager_peer.h"
#include "net/quic/test_tools/quic_session_peer.h"
#include "net/quic/test_tools/quic_spdy_session_peer.h"
+#include "net/quic/test_tools/quic_stream_peer.h"
#include "net/quic/test_tools/quic_stream_sequencer_peer.h"
#include "net/quic/test_tools/quic_test_utils.h"
-#include "net/quic/test_tools/reliable_quic_stream_peer.h"
#include "net/test/gtest_util.h"
#include "net/tools/epoll_server/epoll_server.h"
#include "net/tools/quic/quic_epoll_connection_helper.h"
@@ -86,8 +86,7 @@ struct TestParams {
QuicTag congestion_control_tag,
bool disable_hpack_dynamic_table,
bool force_hol_blocking,
- bool use_cheap_stateless_reject,
- bool buffer_packet_till_chlo)
+ bool use_cheap_stateless_reject)
: client_supported_versions(client_supported_versions),
server_supported_versions(server_supported_versions),
negotiated_version(negotiated_version),
@@ -97,8 +96,7 @@ struct TestParams {
congestion_control_tag(congestion_control_tag),
disable_hpack_dynamic_table(disable_hpack_dynamic_table),
force_hol_blocking(force_hol_blocking),
- use_cheap_stateless_reject(use_cheap_stateless_reject),
- buffer_packet_till_chlo(buffer_packet_till_chlo) {}
+ use_cheap_stateless_reject(use_cheap_stateless_reject) {}
friend ostream& operator<<(ostream& os, const TestParams& p) {
os << "{ server_supported_versions: "
@@ -114,8 +112,8 @@ struct TestParams {
<< QuicUtils::TagToString(p.congestion_control_tag);
os << " disable_hpack_dynamic_table: " << p.disable_hpack_dynamic_table;
os << " force_hol_blocking: " << p.force_hol_blocking;
- os << " use_cheap_stateless_reject: " << p.use_cheap_stateless_reject;
- os << " buffer_packet_till_chlo: " << p.buffer_packet_till_chlo << " }";
+ os << " use_cheap_stateless_reject: " << p.use_cheap_stateless_reject
+ << " }";
return os;
}
@@ -128,7 +126,6 @@ struct TestParams {
bool disable_hpack_dynamic_table;
bool force_hol_blocking;
bool use_cheap_stateless_reject;
- bool buffer_packet_till_chlo;
};
// Constructs various test permutations.
@@ -163,7 +160,7 @@ std::vector<TestParams> GetTestParams() {
// This must be kept in sync with the number of nested for-loops below as it
// is used to prune the number of tests that are run.
- const int kMaxEnabledOptions = 6;
+ const int kMaxEnabledOptions = 5;
int max_enabled_options = 0;
std::vector<TestParams> params;
for (bool server_uses_stateless_rejects_if_peer_supported : {true, false}) {
@@ -172,94 +169,79 @@ std::vector<TestParams> GetTestParams() {
for (bool disable_hpack_dynamic_table : {false}) {
for (bool force_hol_blocking : {true, false}) {
for (bool use_cheap_stateless_reject : {true, false}) {
- for (bool buffer_packet_till_chlo : {true, false}) {
- if (!buffer_packet_till_chlo && use_cheap_stateless_reject) {
- // Doing stateless reject while not buffering packet
- // before CHLO is not allowed.
- break;
- }
- int enabled_options = 0;
- if (force_hol_blocking) {
- ++enabled_options;
- }
- if (congestion_control_tag != kQBIC) {
- ++enabled_options;
- }
- if (disable_hpack_dynamic_table) {
- ++enabled_options;
- }
- if (client_supports_stateless_rejects) {
- ++enabled_options;
- }
- if (server_uses_stateless_rejects_if_peer_supported) {
- ++enabled_options;
- }
- if (buffer_packet_till_chlo) {
- ++enabled_options;
- }
- if (use_cheap_stateless_reject) {
- ++enabled_options;
- }
- CHECK_GE(kMaxEnabledOptions, enabled_options);
- if (enabled_options > max_enabled_options) {
- max_enabled_options = enabled_options;
+ int enabled_options = 0;
+ if (force_hol_blocking) {
+ ++enabled_options;
+ }
+ if (congestion_control_tag != kQBIC) {
+ ++enabled_options;
+ }
+ if (disable_hpack_dynamic_table) {
+ ++enabled_options;
+ }
+ if (client_supports_stateless_rejects) {
+ ++enabled_options;
+ }
+ if (server_uses_stateless_rejects_if_peer_supported) {
+ ++enabled_options;
+ }
+ if (use_cheap_stateless_reject) {
+ ++enabled_options;
+ }
+ CHECK_GE(kMaxEnabledOptions, enabled_options);
+ if (enabled_options > max_enabled_options) {
+ max_enabled_options = enabled_options;
+ }
+
+ // Run tests with no options, a single option, or all the
+ // options enabled to avoid a combinatorial explosion.
+ if (enabled_options > 1 && enabled_options < kMaxEnabledOptions) {
+ continue;
+ }
+
+ for (const QuicVersionVector& client_versions : version_buckets) {
+ CHECK(!client_versions.empty());
+ if (FilterSupportedVersions(client_versions).empty()) {
+ continue;
}
-
- // Run tests with no options, a single option, or all the
- // options enabled to avoid a combinatorial explosion.
+ // Add an entry for server and client supporting all
+ // versions.
+ params.push_back(TestParams(
+ client_versions, all_supported_versions,
+ client_versions.front(), client_supports_stateless_rejects,
+ server_uses_stateless_rejects_if_peer_supported,
+ congestion_control_tag, disable_hpack_dynamic_table,
+ force_hol_blocking, use_cheap_stateless_reject));
+
+ // Run version negotiation tests tests with no options, or
+ // all the options enabled to avoid a combinatorial
+ // explosion.
if (enabled_options > 1 &&
enabled_options < kMaxEnabledOptions) {
continue;
}
- for (const QuicVersionVector& client_versions :
- version_buckets) {
- CHECK(!client_versions.empty());
- if (FilterSupportedVersions(client_versions).empty()) {
+ // Test client supporting all versions and server supporting
+ // 1 version. Simulate an old server and exercise version
+ // downgrade in the client. Protocol negotiation should
+ // occur. Skip the i = 0 case because it is essentially the
+ // same as the default case.
+ for (size_t i = 1; i < client_versions.size(); ++i) {
+ QuicVersionVector server_supported_versions;
+ server_supported_versions.push_back(client_versions[i]);
+ if (FilterSupportedVersions(server_supported_versions)
+ .empty()) {
continue;
}
- // Add an entry for server and client supporting all
- // versions.
params.push_back(TestParams(
- client_versions, all_supported_versions,
- client_versions.front(),
+ client_versions, server_supported_versions,
+ server_supported_versions.front(),
client_supports_stateless_rejects,
server_uses_stateless_rejects_if_peer_supported,
congestion_control_tag, disable_hpack_dynamic_table,
- force_hol_blocking, use_cheap_stateless_reject,
- buffer_packet_till_chlo));
-
- // Run version negotiation tests tests with no options, or
- // all the options enabled to avoid a combinatorial
- // explosion.
- if (enabled_options > 1 &&
- enabled_options < kMaxEnabledOptions) {
- continue;
- }
-
- // Test client supporting all versions and server supporting
- // 1 version. Simulate an old server and exercise version
- // downgrade in the client. Protocol negotiation should
- // occur. Skip the i = 0 case because it is essentially the
- // same as the default case.
- for (size_t i = 1; i < client_versions.size(); ++i) {
- QuicVersionVector server_supported_versions;
- server_supported_versions.push_back(client_versions[i]);
- if (FilterSupportedVersions(server_supported_versions)
- .empty()) {
- continue;
- }
- params.push_back(TestParams(
- client_versions, server_supported_versions,
- server_supported_versions.front(),
- client_supports_stateless_rejects,
- server_uses_stateless_rejects_if_peer_supported,
- congestion_control_tag, disable_hpack_dynamic_table,
- force_hol_blocking, use_cheap_stateless_reject,
- buffer_packet_till_chlo));
+ force_hol_blocking, use_cheap_stateless_reject));
} // End of version for loop.
} // End of 2nd version for loop.
- } // End of buffer_packet_till_chlo loop.
} // End of use_cheap_stateless_reject for loop.
} // End of force_hol_blocking loop.
} // End of disable_hpack_dynamic_table for loop.
@@ -453,12 +435,9 @@ class EndToEndTest : public ::testing::TestWithParam<TestParams> {
}
void StartServer() {
- FLAGS_quic_buffer_packet_till_chlo = GetParam().buffer_packet_till_chlo;
FLAGS_quic_use_cheap_stateless_rejects =
GetParam().use_cheap_stateless_reject;
- if (!FLAGS_quic_buffer_packet_till_chlo) {
- FLAGS_quic_limit_num_new_sessions_per_epoll_loop = false;
- }
+
auto test_server =
new QuicTestServer(CryptoTestUtils::ProofSourceForTesting(),
server_config_, server_supported_versions_);
@@ -617,19 +596,16 @@ TEST_P(EndToEndTest, HandshakeSuccessful) {
client_->client()->WaitForCryptoHandshakeConfirmed();
QuicCryptoStream* crypto_stream =
QuicSessionPeer::GetCryptoStream(client_->client()->session());
- QuicStreamSequencer* sequencer =
- ReliableQuicStreamPeer::sequencer(crypto_stream);
- EXPECT_NE(FLAGS_quic_release_crypto_stream_buffer &&
- FLAGS_quic_reduce_sequencer_buffer_memory_life_time,
+ QuicStreamSequencer* sequencer = QuicStreamPeer::sequencer(crypto_stream);
+ EXPECT_NE(FLAGS_quic_release_crypto_stream_buffer,
QuicStreamSequencerPeer::IsUnderlyingBufferAllocated(sequencer));
server_thread_->Pause();
QuicDispatcher* dispatcher =
QuicServerPeer::GetDispatcher(server_thread_->server());
QuicSession* server_session = dispatcher->session_map().begin()->second.get();
crypto_stream = QuicSessionPeer::GetCryptoStream(server_session);
- sequencer = ReliableQuicStreamPeer::sequencer(crypto_stream);
- EXPECT_NE(FLAGS_quic_release_crypto_stream_buffer &&
- FLAGS_quic_reduce_sequencer_buffer_memory_life_time,
+ sequencer = QuicStreamPeer::sequencer(crypto_stream);
+ EXPECT_NE(FLAGS_quic_release_crypto_stream_buffer,
QuicStreamSequencerPeer::IsUnderlyingBufferAllocated(sequencer));
}
@@ -1260,15 +1236,14 @@ TEST_P(EndToEndTest, DISABLED_MultipleTermination) {
// and the second write is picked up as writing on a closed stream.
QuicSpdyClientStream* stream = client_->GetOrCreateStream();
ASSERT_TRUE(stream != nullptr);
- ReliableQuicStreamPeer::SetStreamBytesWritten(3, stream);
+ QuicStreamPeer::SetStreamBytesWritten(3, stream);
client_->SendData("bar", true);
client_->WaitForWriteToFlush();
// By default the stream protects itself from writes after terminte is set.
// Override this to test the server handling buggy clients.
- ReliableQuicStreamPeer::SetWriteSideClosed(false,
- client_->GetOrCreateStream());
+ QuicStreamPeer::SetWriteSideClosed(false, client_->GetOrCreateStream());
EXPECT_QUIC_BUG(client_->SendData("eep", true), "Fin already buffered");
}
@@ -2226,7 +2201,7 @@ class ServerStreamWithErrorResponseBody : public QuicSimpleServerStream {
headers["content-length"] = base::UintToString(response_body_.size());
// This method must call CloseReadSide to cause the test case, StopReading
// is not sufficient.
- ReliableQuicStreamPeer::CloseReadSide(this);
+ QuicStreamPeer::CloseReadSide(this);
SendHeadersAndBody(std::move(headers), response_body_);
}
@@ -2526,7 +2501,7 @@ TEST_P(EndToEndTest, LargePostEarlyResponse) {
EXPECT_EQ("500", client_->response_headers()->find(":status")->second);
// Receive the reset stream from server on early response.
- ReliableQuicStream* stream =
+ QuicStream* stream =
client_->client()->session()->GetOrCreateStream(kClientDataStreamId1);
// The stream is reset by server's reset stream.
EXPECT_EQ(stream, nullptr);
@@ -2643,8 +2618,7 @@ TEST_P(EndToEndTestServerPush, ServerPush) {
"https://example.com/push_example"));
QuicHeadersStream* headers_stream =
QuicSpdySessionPeer::GetHeadersStream(client_->client()->session());
- QuicStreamSequencer* sequencer =
- ReliableQuicStreamPeer::sequencer(headers_stream);
+ QuicStreamSequencer* sequencer = QuicStreamPeer::sequencer(headers_stream);
// Headers stream's sequencer buffer shouldn't be released because server push
// hasn't finished yet.
EXPECT_TRUE(QuicStreamSequencerPeer::IsUnderlyingBufferAllocated(sequencer));
@@ -2656,8 +2630,7 @@ TEST_P(EndToEndTestServerPush, ServerPush) {
DVLOG(1) << "response body " << response_body;
EXPECT_EQ(expected_body, response_body);
}
- EXPECT_NE(FLAGS_quic_headers_stream_release_sequencer_buffer &&
- FLAGS_quic_reduce_sequencer_buffer_memory_life_time,
+ EXPECT_NE(FLAGS_quic_headers_stream_release_sequencer_buffer,
QuicStreamSequencerPeer::IsUnderlyingBufferAllocated(sequencer));
}
@@ -2960,19 +2933,13 @@ TEST_P(EndToEndTest, ReleaseHeadersStreamBufferWhenIdle) {
client_->SendSynchronousRequest("/foo");
QuicHeadersStream* headers_stream =
QuicSpdySessionPeer::GetHeadersStream(client_->client()->session());
- QuicStreamSequencer* sequencer =
- ReliableQuicStreamPeer::sequencer(headers_stream);
- EXPECT_NE(FLAGS_quic_headers_stream_release_sequencer_buffer &&
- FLAGS_quic_reduce_sequencer_buffer_memory_life_time,
+ QuicStreamSequencer* sequencer = QuicStreamPeer::sequencer(headers_stream);
+ EXPECT_NE(FLAGS_quic_headers_stream_release_sequencer_buffer,
QuicStreamSequencerPeer::IsUnderlyingBufferAllocated(sequencer));
}
class EndToEndBufferedPacketsTest : public EndToEndTest {
public:
- EndToEndBufferedPacketsTest() : EndToEndTest() {
- FLAGS_quic_buffer_packet_till_chlo = true;
- }
-
void CreateClientWithWriter() override {
LOG(ERROR) << "create client with reorder_writer_ ";
reorder_writer_ = new PacketReorderingWriter();
« no previous file with comments | « net/quic/test_tools/reliable_quic_stream_peer.cc ('k') | net/tools/quic/quic_client_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698