Index: net/quic/test_tools/quic_test_utils.cc |
diff --git a/net/quic/test_tools/quic_test_utils.cc b/net/quic/test_tools/quic_test_utils.cc |
index 2b426e8b2ce74700010943d624bbdde06e22c73f..676a37dcac8a64212c2044e7c02c2a4a3cde46c7 100644 |
--- a/net/quic/test_tools/quic_test_utils.cc |
+++ b/net/quic/test_tools/quic_test_utils.cc |
@@ -381,6 +381,14 @@ QuicCryptoStream* TestClientSession::GetCryptoStream() { |
return crypto_stream_; |
} |
+TestServerSession::TestServerSession(const QuicConfig& config, |
+ QuicConnection* connection) |
+ : QuicServerSession(config, connection, nullptr) { |
+} |
+ |
+TestServerSession::~TestServerSession() { |
+} |
+ |
MockPacketWriter::MockPacketWriter() { |
} |
@@ -711,6 +719,14 @@ QuicConfig DefaultQuicConfig() { |
return config; |
} |
+QuicConfig DefaultQuicConfigStatelessRejects() { |
+ QuicConfig config = DefaultQuicConfig(); |
+ QuicTagVector copt; |
+ copt.push_back(kSREJ); |
+ config.SetConnectionOptionsToSend(copt); |
+ return config; |
+} |
+ |
QuicVersionVector SupportedVersions(QuicVersion version) { |
QuicVersionVector versions; |
versions.push_back(version); |
@@ -760,10 +776,8 @@ WriteResult TestWriterFactory::PerConnectionPacketWriter::WritePacket( |
// in a different way, so TestWriterFactory::OnPacketSent might never be |
// called. |
factory_->current_writer_ = this; |
- return tools::QuicPerConnectionPacketWriter::WritePacket(buffer, |
- buf_len, |
- self_address, |
- peer_address); |
+ return tools::QuicPerConnectionPacketWriter::WritePacket( |
+ buffer, buf_len, self_address, peer_address); |
} |
MockQuicConnectionDebugVisitor::MockQuicConnectionDebugVisitor() { |
@@ -772,5 +786,60 @@ MockQuicConnectionDebugVisitor::MockQuicConnectionDebugVisitor() { |
MockQuicConnectionDebugVisitor::~MockQuicConnectionDebugVisitor() { |
} |
+void SetupCryptoClientStreamForTest( |
+ QuicServerId server_id, |
+ bool supports_stateless_rejects, |
+ QuicTime::Delta connection_start_time, |
+ QuicCryptoClientConfig* crypto_client_config, |
+ PacketSavingConnection** client_connection, |
+ TestClientSession** client_session, |
+ QuicCryptoClientStream** client_stream) { |
+ CHECK(crypto_client_config); |
+ CHECK(client_connection); |
+ CHECK(client_session); |
+ CHECK(client_stream); |
+ CHECK(!connection_start_time.IsZero()) |
+ << "Connections must start at non-zero times, otherwise the " |
+ << "strike-register will be unhappy."; |
+ |
+ QuicConfig config = supports_stateless_rejects |
+ ? DefaultQuicConfigStatelessRejects() |
+ : DefaultQuicConfig(); |
+ *client_connection = new PacketSavingConnection(Perspective::IS_CLIENT); |
+ *client_session = new TestClientSession(*client_connection, config); |
+ *client_stream = new QuicCryptoClientStream(server_id, *client_session, |
+ nullptr, crypto_client_config); |
+ (*client_session)->SetCryptoStream(*client_stream); |
+ (*client_connection)->AdvanceTime(connection_start_time); |
+} |
+ |
+// Setup or create? |
+void SetupCryptoServerStreamForTest( |
+ QuicServerId server_id, |
+ QuicTime::Delta connection_start_time, |
+ QuicCryptoServerConfig* server_crypto_config, |
+ PacketSavingConnection** server_connection, |
+ TestServerSession** server_session, |
+ QuicCryptoServerStream** server_stream) { |
+ CHECK(server_crypto_config); |
+ CHECK(server_connection); |
+ CHECK(server_session); |
+ CHECK(server_stream); |
+ CHECK(!connection_start_time.IsZero()) |
+ << "Connections must start at non-zero times, otherwise the " |
+ << "strike-register will be unhappy."; |
+ |
+ *server_connection = new PacketSavingConnection(Perspective::IS_SERVER); |
+ *server_session = |
+ new TestServerSession(DefaultQuicConfig(), *server_connection); |
+ *server_stream = |
+ new QuicCryptoServerStream(server_crypto_config, *server_session); |
+ (*server_session)->InitializeSession(server_crypto_config); |
+ |
+ // We advance the clock initially because the default time is zero and the |
+ // strike register worries that we've just overflowed a uint32 time. |
+ (*server_connection)->AdvanceTime(connection_start_time); |
+} |
+ |
} // namespace test |
} // namespace net |