summaryrefslogtreecommitdiff
path: root/chromium/net/third_party/quiche/src/quic/test_tools
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-01-20 13:40:20 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-01-22 12:41:23 +0000
commit7961cea6d1041e3e454dae6a1da660b453efd238 (patch)
treec0eeb4a9ff9ba32986289c1653d9608e53ccb444 /chromium/net/third_party/quiche/src/quic/test_tools
parentb7034d0803538058e5c9d904ef03cf5eab34f6ef (diff)
downloadqtwebengine-chromium-7961cea6d1041e3e454dae6a1da660b453efd238.tar.gz
BASELINE: Update Chromium to 78.0.3904.130
Change-Id: If185e0c0061b3437531c97c9c8c78f239352a68b Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/net/third_party/quiche/src/quic/test_tools')
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/crypto_test_utils.cc15
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/mock_quic_session_visitor.h3
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/mock_quic_time_wait_list_manager.h3
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/packet_dropping_test_writer.h16
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/qpack_encoder_peer.cc30
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/qpack_encoder_peer.h30
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/qpack_header_table_peer.cc25
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/qpack_header_table_peer.h29
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/quic_connection_peer.cc13
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/quic_connection_peer.h2
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/quic_crypto_server_config_peer.h2
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/quic_framer_peer.h6
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/quic_session_peer.cc10
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/quic_session_peer.h2
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/quic_spdy_session_peer.cc31
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/quic_spdy_session_peer.h10
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/quic_test_client.cc45
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/quic_test_client.h10
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/quic_test_server.cc2
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/quic_test_utils.cc15
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/quic_test_utils.h26
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/server_thread.h4
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/simple_quic_framer.cc4
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/simple_session_notifier.cc8
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/simple_session_notifier.h3
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/simple_session_notifier_test.cc9
-rw-r--r--chromium/net/third_party/quiche/src/quic/test_tools/simulator/quic_endpoint.h6
27 files changed, 312 insertions, 47 deletions
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/crypto_test_utils.cc b/chromium/net/third_party/quiche/src/quic/test_tools/crypto_test_utils.cc
index 095472a7b99..27e47b2172f 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/crypto_test_utils.cc
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/crypto_test_utils.cc
@@ -232,9 +232,6 @@ int HandshakeWithFakeServer(QuicConfig* server_quic_config,
CanAcceptClientHello(testing::_, testing::_, testing::_,
testing::_, testing::_))
.Times(testing::AnyNumber());
- EXPECT_CALL(*server_session.helper(),
- GenerateConnectionIdForReject(testing::_, testing::_))
- .Times(testing::AnyNumber());
EXPECT_CALL(*server_conn, OnCanWrite()).Times(testing::AnyNumber());
EXPECT_CALL(*client_conn, OnCanWrite()).Times(testing::AnyNumber());
@@ -679,9 +676,13 @@ void MovePackets(PacketSavingConnection* source_conn,
PacketSavingConnection* dest_conn,
Perspective dest_perspective) {
SimpleQuicFramer framer(source_conn->supported_versions(), dest_perspective);
+ QuicFramerPeer::SetLastSerializedServerConnectionId(framer.framer(),
+ TestConnectionId());
SimpleQuicFramer null_encryption_framer(source_conn->supported_versions(),
dest_perspective);
+ QuicFramerPeer::SetLastSerializedServerConnectionId(
+ null_encryption_framer.framer(), TestConnectionId());
size_t index = *inout_packet_index;
for (; index < source_conn->encrypted_packets_.size(); index++) {
@@ -691,6 +692,8 @@ void MovePackets(PacketSavingConnection* source_conn,
// them into |framer|, perform the decryption with them, and then swap ther
// back.
QuicConnectionPeer::SwapCrypters(dest_conn, framer.framer());
+ QuicConnectionPeer::AddBytesReceived(
+ dest_conn, source_conn->encrypted_packets_[index]->length());
if (!framer.ProcessPacket(*source_conn->encrypted_packets_[index])) {
// The framer will be unable to decrypt forward-secure packets sent after
// the handshake is complete. Don't treat them as handshake packets.
@@ -721,7 +724,11 @@ void MovePackets(PacketSavingConnection* source_conn,
QuicConnectionPeer::SetCurrentPacket(
dest_conn, source_conn->encrypted_packets_[index]->AsStringPiece());
for (const auto& stream_frame : framer.stream_frames()) {
- dest_stream->OnStreamFrame(*stream_frame);
+ // Ignore stream frames that are sent on other streams in the crypto
+ // event.
+ if (stream_frame->stream_id == dest_stream->id()) {
+ dest_stream->OnStreamFrame(*stream_frame);
+ }
}
for (const auto& crypto_frame : framer.crypto_frames()) {
dest_stream->OnCryptoFrame(*crypto_frame);
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/mock_quic_session_visitor.h b/chromium/net/third_party/quiche/src/quic/test_tools/mock_quic_session_visitor.h
index 11dc24a724c..0954bb71390 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/mock_quic_session_visitor.h
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/mock_quic_session_visitor.h
@@ -39,9 +39,6 @@ class MockQuicCryptoServerStreamHelper : public QuicCryptoServerStream::Helper {
MockQuicCryptoServerStreamHelper& operator=(
const MockQuicCryptoServerStreamHelper&) = delete;
~MockQuicCryptoServerStreamHelper() override;
- MOCK_CONST_METHOD2(GenerateConnectionIdForReject,
- QuicConnectionId(QuicTransportVersion version,
- QuicConnectionId connection_id));
MOCK_CONST_METHOD5(CanAcceptClientHello,
bool(const CryptoHandshakeMessage& message,
const QuicSocketAddress& client_address,
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/mock_quic_time_wait_list_manager.h b/chromium/net/third_party/quiche/src/quic/test_tools/mock_quic_time_wait_list_manager.h
index b46e68b1d49..6b2b6d0968f 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/mock_quic_time_wait_list_manager.h
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/mock_quic_time_wait_list_manager.h
@@ -45,10 +45,11 @@ class MockTimeWaitListManager : public QuicTimeWaitListManager {
PacketHeaderFormat header_format,
std::unique_ptr<QuicPerPacketContext> packet_context));
- MOCK_METHOD7(SendVersionNegotiationPacket,
+ MOCK_METHOD8(SendVersionNegotiationPacket,
void(QuicConnectionId server_connection_id,
QuicConnectionId client_connection_id,
bool ietf_quic,
+ bool has_length_prefix,
const ParsedQuicVersionVector& supported_versions,
const QuicSocketAddress& server_address,
const QuicSocketAddress& client_address,
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/packet_dropping_test_writer.h b/chromium/net/third_party/quiche/src/quic/test_tools/packet_dropping_test_writer.h
index 92c895627ff..4b3e8af28ea 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/packet_dropping_test_writer.h
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/packet_dropping_test_writer.h
@@ -161,14 +161,14 @@ class PacketDroppingTestWriter : public QuicPacketWriterWrapper {
uint64_t num_calls_to_write_;
QuicMutex config_mutex_;
- int32_t fake_packet_loss_percentage_ GUARDED_BY(config_mutex_);
- int32_t fake_drop_first_n_packets_ GUARDED_BY(config_mutex_);
- int32_t fake_blocked_socket_percentage_ GUARDED_BY(config_mutex_);
- int32_t fake_packet_reorder_percentage_ GUARDED_BY(config_mutex_);
- QuicTime::Delta fake_packet_delay_ GUARDED_BY(config_mutex_);
- QuicBandwidth fake_bandwidth_ GUARDED_BY(config_mutex_);
- QuicByteCount buffer_size_ GUARDED_BY(config_mutex_);
- int32_t num_consecutive_packet_lost_ GUARDED_BY(config_mutex_);
+ int32_t fake_packet_loss_percentage_ QUIC_GUARDED_BY(config_mutex_);
+ int32_t fake_drop_first_n_packets_ QUIC_GUARDED_BY(config_mutex_);
+ int32_t fake_blocked_socket_percentage_ QUIC_GUARDED_BY(config_mutex_);
+ int32_t fake_packet_reorder_percentage_ QUIC_GUARDED_BY(config_mutex_);
+ QuicTime::Delta fake_packet_delay_ QUIC_GUARDED_BY(config_mutex_);
+ QuicBandwidth fake_bandwidth_ QUIC_GUARDED_BY(config_mutex_);
+ QuicByteCount buffer_size_ QUIC_GUARDED_BY(config_mutex_);
+ int32_t num_consecutive_packet_lost_ QUIC_GUARDED_BY(config_mutex_);
};
} // namespace test
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/qpack_encoder_peer.cc b/chromium/net/third_party/quiche/src/quic/test_tools/qpack_encoder_peer.cc
new file mode 100644
index 00000000000..9719bdb9b7a
--- /dev/null
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/qpack_encoder_peer.cc
@@ -0,0 +1,30 @@
+// Copyright (c) 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "net/third_party/quiche/src/quic/test_tools/qpack_encoder_peer.h"
+
+#include "net/third_party/quiche/src/quic/core/qpack/qpack_encoder.h"
+
+namespace quic {
+namespace test {
+
+// static
+QpackHeaderTable* QpackEncoderPeer::header_table(QpackEncoder* encoder) {
+ return &encoder->header_table_;
+}
+
+// static
+uint64_t QpackEncoderPeer::maximum_blocked_streams(
+ const QpackEncoder* encoder) {
+ return encoder->maximum_blocked_streams_;
+}
+
+// static
+uint64_t QpackEncoderPeer::smallest_blocking_index(
+ const QpackEncoder* encoder) {
+ return encoder->blocking_manager_.smallest_blocking_index();
+}
+
+} // namespace test
+} // namespace quic
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/qpack_encoder_peer.h b/chromium/net/third_party/quiche/src/quic/test_tools/qpack_encoder_peer.h
new file mode 100644
index 00000000000..2edf4274611
--- /dev/null
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/qpack_encoder_peer.h
@@ -0,0 +1,30 @@
+// Copyright (c) 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef QUICHE_QUIC_TEST_TOOLS_QPACK_ENCODER_PEER_H_
+#define QUICHE_QUIC_TEST_TOOLS_QPACK_ENCODER_PEER_H_
+
+#include <cstdint>
+
+namespace quic {
+
+class QpackEncoder;
+class QpackHeaderTable;
+
+namespace test {
+
+class QpackEncoderPeer {
+ public:
+ QpackEncoderPeer() = delete;
+
+ static QpackHeaderTable* header_table(QpackEncoder* encoder);
+ static uint64_t maximum_blocked_streams(const QpackEncoder* encoder);
+ static uint64_t smallest_blocking_index(const QpackEncoder* encoder);
+};
+
+} // namespace test
+
+} // namespace quic
+
+#endif // QUICHE_QUIC_TEST_TOOLS_QPACK_ENCODER_PEER_H_
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/qpack_header_table_peer.cc b/chromium/net/third_party/quiche/src/quic/test_tools/qpack_header_table_peer.cc
new file mode 100644
index 00000000000..bb18731dae7
--- /dev/null
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/qpack_header_table_peer.cc
@@ -0,0 +1,25 @@
+// Copyright (c) 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "net/third_party/quiche/src/quic/test_tools/qpack_header_table_peer.h"
+
+#include "net/third_party/quiche/src/quic/core/qpack/qpack_header_table.h"
+
+namespace quic {
+namespace test {
+
+// static
+uint64_t QpackHeaderTablePeer::dynamic_table_capacity(
+ const QpackHeaderTable* header_table) {
+ return header_table->dynamic_table_capacity_;
+}
+
+// static
+uint64_t QpackHeaderTablePeer::maximum_dynamic_table_capacity(
+ const QpackHeaderTable* header_table) {
+ return header_table->maximum_dynamic_table_capacity_;
+}
+
+} // namespace test
+} // namespace quic
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/qpack_header_table_peer.h b/chromium/net/third_party/quiche/src/quic/test_tools/qpack_header_table_peer.h
new file mode 100644
index 00000000000..cbf3f448a28
--- /dev/null
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/qpack_header_table_peer.h
@@ -0,0 +1,29 @@
+// Copyright (c) 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef QUICHE_QUIC_TEST_TOOLS_QPACK_HEADER_TABLE_PEER_H_
+#define QUICHE_QUIC_TEST_TOOLS_QPACK_HEADER_TABLE_PEER_H_
+
+#include <cstdint>
+
+namespace quic {
+
+class QpackHeaderTable;
+
+namespace test {
+
+class QpackHeaderTablePeer {
+ public:
+ QpackHeaderTablePeer() = delete;
+
+ static uint64_t dynamic_table_capacity(const QpackHeaderTable* header_table);
+ static uint64_t maximum_dynamic_table_capacity(
+ const QpackHeaderTable* header_table);
+};
+
+} // namespace test
+
+} // namespace quic
+
+#endif // QUICHE_QUIC_TEST_TOOLS_QPACK_HEADER_TABLE_PEER_H_
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_connection_peer.cc b/chromium/net/third_party/quiche/src/quic/test_tools/quic_connection_peer.cc
index 66d1a51434e..ef2ffb39c02 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_connection_peer.cc
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_connection_peer.cc
@@ -332,5 +332,18 @@ void QuicConnectionPeer::SetLastHeaderFormat(QuicConnection* connection,
connection->last_header_.form = format;
}
+// static
+void QuicConnectionPeer::AddBytesReceived(QuicConnection* connection,
+ size_t length) {
+ if (connection->EnforceAntiAmplificationLimit()) {
+ connection->bytes_received_before_address_validation_ += length;
+ }
+}
+
+// static
+void QuicConnectionPeer::SetAddressValidated(QuicConnection* connection) {
+ connection->address_validated_ = true;
+}
+
} // namespace test
} // namespace quic
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_connection_peer.h b/chromium/net/third_party/quiche/src/quic/test_tools/quic_connection_peer.h
index d0797f52adf..f329a1cb833 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_connection_peer.h
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_connection_peer.h
@@ -133,6 +133,8 @@ class QuicConnectionPeer {
QuicConnection* connection);
static void SetLastHeaderFormat(QuicConnection* connection,
PacketHeaderFormat format);
+ static void AddBytesReceived(QuicConnection* connection, size_t length);
+ static void SetAddressValidated(QuicConnection* connection);
};
} // namespace test
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_crypto_server_config_peer.h b/chromium/net/third_party/quiche/src/quic/test_tools/quic_crypto_server_config_peer.h
index 3f5a9840a33..baaa9b8bffb 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_crypto_server_config_peer.h
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_crypto_server_config_peer.h
@@ -73,7 +73,7 @@ class QuicCryptoServerConfigPeer {
// ConfigsDebug returns a std::string that contains debugging information
// about the set of Configs loaded in |server_config_| and their status.
std::string ConfigsDebug()
- SHARED_LOCKS_REQUIRED(server_config_->configs_lock_);
+ QUIC_SHARED_LOCKS_REQUIRED(server_config_->configs_lock_);
void SelectNewPrimaryConfig(int seconds);
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_framer_peer.h b/chromium/net/third_party/quiche/src/quic/test_tools/quic_framer_peer.h
index 8496718fc29..24b8818a804 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_framer_peer.h
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_framer_peer.h
@@ -179,6 +179,12 @@ class QuicFramerPeer {
uint8_t* destination_connection_id_length,
uint8_t* source_connection_id_length,
std::string* detailed_error);
+
+ static void set_current_received_frame_type(
+ QuicFramer* framer,
+ uint64_t current_received_frame_type) {
+ framer->current_received_frame_type_ = current_received_frame_type;
+ }
};
} // namespace test
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_session_peer.cc b/chromium/net/third_party/quiche/src/quic/test_tools/quic_session_peer.cc
index e78b0597284..ab4e5af1ebc 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_session_peer.cc
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_session_peer.cc
@@ -161,8 +161,7 @@ void QuicSessionPeer::ActivateStream(QuicSession* session,
// static
void QuicSessionPeer::RegisterStaticStream(QuicSession* session,
std::unique_ptr<QuicStream> stream) {
- return session->RegisterStaticStream(std::move(stream),
- /*stream_already_counted = */ false);
+ return session->RegisterStaticStream(std::move(stream));
}
// static
@@ -243,5 +242,12 @@ void QuicSessionPeer::SendRstStreamInner(QuicSession* session,
session->SendRstStreamInner(id, error, bytes_written, close_write_side_only);
}
+// static
+PendingStream* QuicSessionPeer::GetPendingStream(QuicSession* session,
+ QuicStreamId stream_id) {
+ auto it = session->pending_stream_map_.find(stream_id);
+ return it == session->pending_stream_map_.end() ? nullptr : it->second.get();
+}
+
} // namespace test
} // namespace quic
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_session_peer.h b/chromium/net/third_party/quiche/src/quic/test_tools/quic_session_peer.h
index f027eb564a6..decc4b93f45 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_session_peer.h
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_session_peer.h
@@ -86,6 +86,8 @@ class QuicSessionPeer {
QuicRstStreamErrorCode error,
QuicStreamOffset bytes_written,
bool close_write_side_only);
+ static PendingStream* GetPendingStream(QuicSession* session,
+ QuicStreamId stream_id);
};
} // namespace test
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_spdy_session_peer.cc b/chromium/net/third_party/quiche/src/quic/test_tools/quic_spdy_session_peer.cc
index 68552a83a0f..85237c454e1 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_spdy_session_peer.cc
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_spdy_session_peer.cc
@@ -5,6 +5,7 @@
#include "net/third_party/quiche/src/quic/test_tools/quic_spdy_session_peer.h"
#include "net/third_party/quiche/src/quic/core/http/quic_spdy_session.h"
+#include "net/third_party/quiche/src/quic/core/qpack/qpack_receive_stream.h"
#include "net/third_party/quiche/src/quic/core/quic_utils.h"
namespace quic {
@@ -13,11 +14,13 @@ namespace test {
// static
QuicHeadersStream* QuicSpdySessionPeer::GetHeadersStream(
QuicSpdySession* session) {
+ DCHECK(!VersionUsesQpack(session->connection()->transport_version()));
return session->headers_stream();
}
void QuicSpdySessionPeer::SetHeadersStream(QuicSpdySession* session,
QuicHeadersStream* headers_stream) {
+ DCHECK(!VersionUsesQpack(session->connection()->transport_version()));
for (auto& it : session->stream_map()) {
if (it.first == QuicUtils::GetHeadersStreamId(
session->connection()->transport_version())) {
@@ -58,10 +61,10 @@ size_t QuicSpdySessionPeer::WriteHeadersOnHeadersStream(
QuicStreamId id,
spdy::SpdyHeaderBlock headers,
bool fin,
- spdy::SpdyPriority priority,
+ const spdy::SpdyStreamPrecedence& precedence,
QuicReferenceCountedPointer<QuicAckListenerInterface> ack_listener) {
return session->WriteHeadersOnHeadersStream(
- id, std::move(headers), fin, priority, std::move(ack_listener));
+ id, std::move(headers), fin, precedence, std::move(ack_listener));
}
// static
@@ -82,5 +85,29 @@ QuicSendControlStream* QuicSpdySessionPeer::GetSendControlStream(
return session->send_control_stream_;
}
+// static
+QpackSendStream* QuicSpdySessionPeer::GetQpackDecoderSendStream(
+ QuicSpdySession* session) {
+ return session->qpack_decoder_send_stream_;
+}
+
+// static
+QpackSendStream* QuicSpdySessionPeer::GetQpackEncoderSendStream(
+ QuicSpdySession* session) {
+ return session->qpack_encoder_send_stream_;
+}
+
+// static
+QpackReceiveStream* QuicSpdySessionPeer::GetQpackDecoderReceiveStream(
+ QuicSpdySession* session) {
+ return session->qpack_decoder_receive_stream_;
+}
+
+// static
+QpackReceiveStream* QuicSpdySessionPeer::GetQpackEncoderReceiveStream(
+ QuicSpdySession* session) {
+ return session->qpack_encoder_receive_stream_;
+}
+
} // namespace test
} // namespace quic
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_spdy_session_peer.h b/chromium/net/third_party/quiche/src/quic/test_tools/quic_spdy_session_peer.h
index aacf712ae2f..1cfd45f252c 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_spdy_session_peer.h
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_spdy_session_peer.h
@@ -7,6 +7,8 @@
#include "net/third_party/quiche/src/quic/core/http/quic_receive_control_stream.h"
#include "net/third_party/quiche/src/quic/core/http/quic_send_control_stream.h"
+#include "net/third_party/quiche/src/quic/core/qpack/qpack_receive_stream.h"
+#include "net/third_party/quiche/src/quic/core/qpack/qpack_send_stream.h"
#include "net/third_party/quiche/src/quic/core/quic_packets.h"
#include "net/third_party/quiche/src/quic/core/quic_write_blocked_list.h"
#include "net/third_party/quiche/src/spdy/core/spdy_framer.h"
@@ -41,7 +43,7 @@ class QuicSpdySessionPeer {
QuicStreamId id,
spdy::SpdyHeaderBlock headers,
bool fin,
- spdy::SpdyPriority priority,
+ const spdy::SpdyStreamPrecedence& precedence,
QuicReferenceCountedPointer<QuicAckListenerInterface> ack_listener);
// |session| can't be nullptr.
static QuicStreamId GetNextOutgoingUnidirectionalStreamId(
@@ -49,6 +51,12 @@ class QuicSpdySessionPeer {
static QuicReceiveControlStream* GetReceiveControlStream(
QuicSpdySession* session);
static QuicSendControlStream* GetSendControlStream(QuicSpdySession* session);
+ static QpackSendStream* GetQpackDecoderSendStream(QuicSpdySession* session);
+ static QpackSendStream* GetQpackEncoderSendStream(QuicSpdySession* session);
+ static QpackReceiveStream* GetQpackDecoderReceiveStream(
+ QuicSpdySession* session);
+ static QpackReceiveStream* GetQpackEncoderReceiveStream(
+ QuicSpdySession* session);
};
} // namespace test
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_client.cc b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_client.cc
index e2e33c7a3bf..402a2311882 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_client.cc
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_client.cc
@@ -233,9 +233,14 @@ MockableQuicClient::mockable_network_helper() const {
}
QuicConnectionId MockableQuicClient::GenerateNewConnectionId() {
- return server_connection_id_overridden_
- ? override_server_connection_id_
- : QuicClient::GenerateNewConnectionId();
+ if (server_connection_id_overridden_) {
+ return override_server_connection_id_;
+ }
+ if (override_server_connection_id_length_ >= 0) {
+ return QuicUtils::CreateRandomConnectionId(
+ override_server_connection_id_length_);
+ }
+ return QuicClient::GenerateNewConnectionId();
}
void MockableQuicClient::UseConnectionId(
@@ -244,9 +249,20 @@ void MockableQuicClient::UseConnectionId(
override_server_connection_id_ = server_connection_id;
}
+void MockableQuicClient::UseConnectionIdLength(
+ int server_connection_id_length) {
+ override_server_connection_id_length_ = server_connection_id_length;
+}
+
QuicConnectionId MockableQuicClient::GetClientConnectionId() {
- return client_connection_id_overridden_ ? override_client_connection_id_
- : QuicClient::GetClientConnectionId();
+ if (client_connection_id_overridden_) {
+ return override_client_connection_id_;
+ }
+ if (override_client_connection_id_length_ >= 0) {
+ return QuicUtils::CreateRandomConnectionId(
+ override_client_connection_id_length_);
+ }
+ return QuicClient::GetClientConnectionId();
}
void MockableQuicClient::UseClientConnectionId(
@@ -255,6 +271,11 @@ void MockableQuicClient::UseClientConnectionId(
override_client_connection_id_ = client_connection_id;
}
+void MockableQuicClient::UseClientConnectionIdLength(
+ int client_connection_id_length) {
+ override_client_connection_id_length_ = client_connection_id_length;
+}
+
void MockableQuicClient::UseWriter(QuicPacketWriterWrapper* writer) {
mockable_network_helper()->UseWriter(writer);
}
@@ -526,7 +547,8 @@ QuicSpdyClientStream* QuicTestClient::GetOrCreateStream() {
if (!latest_created_stream_) {
SetLatestCreatedStream(client_->CreateClientStream());
if (latest_created_stream_) {
- latest_created_stream_->SetPriority(priority_);
+ latest_created_stream_->SetPriority(
+ spdy::SpdyStreamPrecedence(priority_));
}
}
@@ -769,12 +791,23 @@ void QuicTestClient::UseConnectionId(QuicConnectionId server_connection_id) {
client_->UseConnectionId(server_connection_id);
}
+void QuicTestClient::UseConnectionIdLength(int server_connection_id_length) {
+ DCHECK(!connected());
+ client_->UseConnectionIdLength(server_connection_id_length);
+}
+
void QuicTestClient::UseClientConnectionId(
QuicConnectionId client_connection_id) {
DCHECK(!connected());
client_->UseClientConnectionId(client_connection_id);
}
+void QuicTestClient::UseClientConnectionIdLength(
+ int client_connection_id_length) {
+ DCHECK(!connected());
+ client_->UseClientConnectionIdLength(client_connection_id_length);
+}
+
bool QuicTestClient::MigrateSocket(const QuicIpAddress& new_host) {
return client_->MigrateSocket(new_host);
}
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_client.h b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_client.h
index 7b835620557..cd5b09f7d77 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_client.h
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_client.h
@@ -56,8 +56,10 @@ class MockableQuicClient : public QuicClient {
QuicConnectionId GenerateNewConnectionId() override;
void UseConnectionId(QuicConnectionId server_connection_id);
+ void UseConnectionIdLength(int server_connection_id_length);
QuicConnectionId GetClientConnectionId() override;
void UseClientConnectionId(QuicConnectionId client_connection_id);
+ void UseClientConnectionIdLength(int client_connection_id_length);
void UseWriter(QuicPacketWriterWrapper* writer);
void set_peer_address(const QuicSocketAddress& address);
@@ -74,9 +76,11 @@ class MockableQuicClient : public QuicClient {
// Server connection ID to use, if server_connection_id_overridden_
QuicConnectionId override_server_connection_id_;
bool server_connection_id_overridden_;
+ int override_server_connection_id_length_ = -1;
// Client connection ID to use, if client_connection_id_overridden_
QuicConnectionId override_client_connection_id_;
bool client_connection_id_overridden_;
+ int override_client_connection_id_length_ = -1;
CachedNetworkParameters cached_network_paramaters_;
};
@@ -227,9 +231,15 @@ class QuicTestClient : public QuicSpdyStream::Visitor,
// Configures client_ to use a specific server connection ID instead of a
// random one.
void UseConnectionId(QuicConnectionId server_connection_id);
+ // Configures client_ to use a specific server connection ID length instead
+ // of the default of kQuicDefaultConnectionIdLength.
+ void UseConnectionIdLength(int server_connection_id_length);
// Configures client_ to use a specific client connection ID instead of an
// empty one.
void UseClientConnectionId(QuicConnectionId client_connection_id);
+ // Configures client_ to use a specific client connection ID length instead
+ // of the default of zero.
+ void UseClientConnectionIdLength(int client_connection_id_length);
// Returns nullptr if the maximum number of streams have already been created.
QuicSpdyClientStream* GetOrCreateStream();
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_server.cc b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_server.cc
index 68c500e67b7..19b986e8dba 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_server.cc
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_server.cc
@@ -184,7 +184,7 @@ QuicDispatcher* QuicTestServer::CreateQuicDispatcher() {
QuicMakeUnique<QuicEpollConnectionHelper>(epoll_server(),
QuicAllocator::BUFFER_POOL),
std::unique_ptr<QuicCryptoServerStream::Helper>(
- new QuicSimpleCryptoServerStreamHelper(QuicRandom::GetInstance())),
+ new QuicSimpleCryptoServerStreamHelper()),
QuicMakeUnique<QuicEpollAlarmFactory>(epoll_server()), server_backend(),
expected_server_connection_id_length());
}
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_utils.cc b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_utils.cc
index 99c7511daee..5ff5e05a9b0 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_utils.cc
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_utils.cc
@@ -259,6 +259,11 @@ bool NoOpFramerVisitor::OnPacketHeader(const QuicPacketHeader& /*header*/) {
void NoOpFramerVisitor::OnCoalescedPacket(
const QuicEncryptedPacket& /*packet*/) {}
+void NoOpFramerVisitor::OnUndecryptablePacket(
+ const QuicEncryptedPacket& /*packet*/,
+ EncryptionLevel /*decryption_level*/,
+ bool /*has_decryption_key*/) {}
+
bool NoOpFramerVisitor::OnStreamFrame(const QuicStreamFrame& /*frame*/) {
return true;
}
@@ -524,7 +529,8 @@ MockQuicSession::MockQuicSession(QuicConnection* connection,
: QuicSession(connection,
nullptr,
DefaultQuicConfig(),
- connection->supported_versions()) {
+ connection->supported_versions(),
+ /*num_expected_unidirectional_static_streams = */ 0) {
if (create_mock_crypto_stream) {
crypto_stream_ = QuicMakeUnique<MockQuicCryptoStream>(this);
}
@@ -633,9 +639,6 @@ TestQuicSpdyServerSession::TestQuicSpdyServerSession(
crypto_config,
compressed_certs_cache) {
Initialize();
- ON_CALL(helper_, GenerateConnectionIdForReject(_, _))
- .WillByDefault(testing::Return(
- QuicUtils::CreateRandomConnectionId(connection->random_generator())));
ON_CALL(helper_, CanAcceptClientHello(_, _, _, _, _))
.WillByDefault(testing::Return(true));
}
@@ -1158,8 +1161,8 @@ QuicStreamId GetNthClientInitiatedBidirectionalStreamId(
QuicTransportVersion version,
int n) {
int num = n;
- if (!VersionLacksHeadersStream(version)) {
- num++; // + 1 because spdy_session contains headers stream.
+ if (!VersionUsesQpack(version)) {
+ num++;
}
return QuicUtils::GetFirstBidirectionalStreamId(version,
Perspective::IS_CLIENT) +
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_utils.h b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_utils.h
index 20494d7f3f0..5750b9bc61d 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_utils.h
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/quic_test_utils.h
@@ -261,6 +261,10 @@ class MockFramerVisitor : public QuicFramerVisitorInterface {
MOCK_METHOD1(OnDecryptedPacket, void(EncryptionLevel level));
MOCK_METHOD1(OnPacketHeader, bool(const QuicPacketHeader& header));
MOCK_METHOD1(OnCoalescedPacket, void(const QuicEncryptedPacket& packet));
+ MOCK_METHOD3(OnUndecryptablePacket,
+ void(const QuicEncryptedPacket& packet,
+ EncryptionLevel decryption_level,
+ bool has_decryption_key));
MOCK_METHOD1(OnStreamFrame, bool(const QuicStreamFrame& frame));
MOCK_METHOD1(OnCryptoFrame, bool(const QuicCryptoFrame& frame));
MOCK_METHOD2(OnAckFrameStart, bool(QuicPacketNumber, QuicTime::Delta));
@@ -314,6 +318,9 @@ class NoOpFramerVisitor : public QuicFramerVisitorInterface {
void OnDecryptedPacket(EncryptionLevel /*level*/) override {}
bool OnPacketHeader(const QuicPacketHeader& header) override;
void OnCoalescedPacket(const QuicEncryptedPacket& packet) override;
+ void OnUndecryptablePacket(const QuicEncryptedPacket& packet,
+ EncryptionLevel decryption_level,
+ bool has_decryption_key) override;
bool OnStreamFrame(const QuicStreamFrame& frame) override;
bool OnCryptoFrame(const QuicCryptoFrame& frame) override;
bool OnAckFrameStart(QuicPacketNumber largest_acked,
@@ -375,9 +382,10 @@ class MockQuicConnectionVisitor : public QuicConnectionVisitorInterface {
MOCK_CONST_METHOD0(ShouldKeepConnectionAlive, bool());
MOCK_METHOD1(OnSuccessfulVersionNegotiation,
void(const ParsedQuicVersion& version));
- MOCK_METHOD2(OnConnectivityProbeReceived,
+ MOCK_METHOD3(OnPacketReceived,
void(const QuicSocketAddress& self_address,
- const QuicSocketAddress& peer_address));
+ const QuicSocketAddress& peer_address,
+ bool is_connectivity_probe));
MOCK_METHOD0(OnConfigNegotiated, void());
MOCK_METHOD0(OnAckNeedsRetransmittableFrame, void());
MOCK_METHOD0(SendPing, void());
@@ -624,6 +632,12 @@ class MockQuicSession : public QuicSession {
MOCK_CONST_METHOD0(IsCryptoHandshakeConfirmed, bool());
MOCK_CONST_METHOD0(ShouldKeepConnectionAlive, bool());
MOCK_METHOD2(SendStopSending, void(uint16_t code, QuicStreamId stream_id));
+ MOCK_METHOD1(OnCryptoHandshakeEvent, void(QuicSession::CryptoHandshakeEvent));
+ MOCK_CONST_METHOD0(GetAlpnsToOffer, std::vector<std::string>());
+ MOCK_CONST_METHOD1(SelectAlpn,
+ std::vector<QuicStringPiece>::const_iterator(
+ const std::vector<QuicStringPiece>&));
+ MOCK_METHOD1(OnAlpnSelected, void(QuicStringPiece));
using QuicSession::ActivateStream;
@@ -676,6 +690,8 @@ class MockQuicSpdySession : public QuicSpdySession {
QuicSession::OnConnectionClosed(frame, source);
}
+ using QuicSession::RegisterStaticStream;
+
// From QuicSession.
MOCK_METHOD2(OnConnectionClosed,
void(const QuicConnectionCloseFrame& frame,
@@ -702,7 +718,8 @@ class MockQuicSpdySession : public QuicSpdySession {
MOCK_METHOD2(OnStreamHeaders,
void(QuicStreamId stream_id, QuicStringPiece headers_data));
MOCK_METHOD2(OnStreamHeadersPriority,
- void(QuicStreamId stream_id, spdy::SpdyPriority priority));
+ void(QuicStreamId stream_id,
+ const spdy::SpdyStreamPrecedence& precedence));
MOCK_METHOD3(OnStreamHeadersComplete,
void(QuicStreamId stream_id, bool fin, size_t frame_len));
MOCK_METHOD4(OnStreamHeaderList,
@@ -723,7 +740,8 @@ class MockQuicSpdySession : public QuicSpdySession {
size_t frame_len,
const QuicHeaderList& header_list));
MOCK_METHOD2(OnPriorityFrame,
- void(QuicStreamId id, spdy::SpdyPriority priority));
+ void(QuicStreamId id,
+ const spdy::SpdyStreamPrecedence& precedence));
MOCK_METHOD1(OnHeadersHeadOfLineBlocking, void(QuicTime::Delta delta));
MOCK_METHOD4(
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/server_thread.h b/chromium/net/third_party/quiche/src/quic/test_tools/server_thread.h
index ffbce7f15a9..d430297f30b 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/server_thread.h
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/server_thread.h
@@ -73,13 +73,13 @@ class ServerThread : public QuicThread {
std::unique_ptr<QuicServer> server_;
QuicSocketAddress address_;
mutable QuicMutex port_lock_;
- int port_ GUARDED_BY(port_lock_);
+ int port_ QUIC_GUARDED_BY(port_lock_);
bool initialized_;
QuicMutex scheduled_actions_lock_;
QuicDeque<std::function<void()>> scheduled_actions_
- GUARDED_BY(scheduled_actions_lock_);
+ QUIC_GUARDED_BY(scheduled_actions_lock_);
};
} // namespace test
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/simple_quic_framer.cc b/chromium/net/third_party/quiche/src/quic/test_tools/simple_quic_framer.cc
index 547f6d26c8d..ad7e7bb32a1 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/simple_quic_framer.cc
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/simple_quic_framer.cc
@@ -60,6 +60,10 @@ class SimpleFramerVisitor : public QuicFramerVisitorInterface {
void OnCoalescedPacket(const QuicEncryptedPacket& /*packet*/) override {}
+ void OnUndecryptablePacket(const QuicEncryptedPacket& /*packet*/,
+ EncryptionLevel /*decryption_level*/,
+ bool /*has_decryption_key*/) override {}
+
bool OnStreamFrame(const QuicStreamFrame& frame) override {
// Save a copy of the data so it is valid after the packet is processed.
std::string* string_data =
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/simple_session_notifier.cc b/chromium/net/third_party/quiche/src/quic/test_tools/simple_session_notifier.cc
index 16c441c8c32..72a23d73178 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/simple_session_notifier.cc
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/simple_session_notifier.cc
@@ -175,6 +175,14 @@ void SimpleSessionNotifier::OnCanWrite() {
}
}
+void SimpleSessionNotifier::OnStreamReset(QuicStreamId id,
+ QuicRstStreamErrorCode error) {
+ if (error != QUIC_STREAM_NO_ERROR) {
+ // Delete stream to avoid retransmissions.
+ stream_map_.erase(id);
+ }
+}
+
bool SimpleSessionNotifier::WillingToWrite() const {
QUIC_DVLOG(1) << "has_buffered_control_frames: " << HasBufferedControlFrames()
<< " as_lost_control_frames: " << !lost_control_frames_.empty()
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/simple_session_notifier.h b/chromium/net/third_party/quiche/src/quic/test_tools/simple_session_notifier.h
index 74240539ae7..b3d5d729e82 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/simple_session_notifier.h
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/simple_session_notifier.h
@@ -45,6 +45,9 @@ class SimpleSessionNotifier : public SessionNotifierInterface {
// Called when connection_ becomes writable.
void OnCanWrite();
+ // Called to reset stream.
+ void OnStreamReset(QuicStreamId id, QuicRstStreamErrorCode error);
+
// Returns true if there are 1) unsent control frames and stream data, or 2)
// lost control frames and stream data.
bool WillingToWrite() const;
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/simple_session_notifier_test.cc b/chromium/net/third_party/quiche/src/quic/test_tools/simple_session_notifier_test.cc
index 8b931fed34d..63da6397209 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/simple_session_notifier_test.cc
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/simple_session_notifier_test.cc
@@ -251,8 +251,10 @@ TEST_F(SimpleSessionNotifierTest, OnCanWriteCryptoFrames) {
.WillOnce(Invoke(&connection_,
&MockQuicConnection::QuicConnection_SendCryptoData));
EXPECT_CALL(connection_, CloseConnection(QUIC_PACKET_WRITE_ERROR, _, _));
- producer.SaveCryptoData(ENCRYPTION_INITIAL, 0, std::string(1024, 'a'));
- producer.SaveCryptoData(ENCRYPTION_INITIAL, 500, std::string(524, 'a'));
+ std::string crypto_data1(1024, 'a');
+ producer.SaveCryptoData(ENCRYPTION_INITIAL, 0, crypto_data1);
+ std::string crypto_data2(524, 'a');
+ producer.SaveCryptoData(ENCRYPTION_INITIAL, 500, crypto_data2);
notifier_.WriteCryptoData(ENCRYPTION_INITIAL, 1024, 0);
// Send crypto data [1024, 2048) in ENCRYPTION_ZERO_RTT.
connection_.SetDefaultEncryptionLevel(ENCRYPTION_ZERO_RTT);
@@ -261,7 +263,8 @@ TEST_F(SimpleSessionNotifierTest, OnCanWriteCryptoFrames) {
EXPECT_CALL(connection_, SendCryptoData(ENCRYPTION_ZERO_RTT, 1024, 0))
.WillOnce(Invoke(&connection_,
&MockQuicConnection::QuicConnection_SendCryptoData));
- producer.SaveCryptoData(ENCRYPTION_ZERO_RTT, 0, std::string(1024, 'a'));
+ std::string crypto_data3(1024, 'a');
+ producer.SaveCryptoData(ENCRYPTION_ZERO_RTT, 0, crypto_data3);
notifier_.WriteCryptoData(ENCRYPTION_ZERO_RTT, 1024, 0);
// Send stream 3 [0, 1024) and connection is blocked.
EXPECT_CALL(connection_, SendStreamData(3, 1024, 0, FIN))
diff --git a/chromium/net/third_party/quiche/src/quic/test_tools/simulator/quic_endpoint.h b/chromium/net/third_party/quiche/src/quic/test_tools/simulator/quic_endpoint.h
index 7481ddc6b1f..43fce53bb4c 100644
--- a/chromium/net/third_party/quiche/src/quic/test_tools/simulator/quic_endpoint.h
+++ b/chromium/net/third_party/quiche/src/quic/test_tools/simulator/quic_endpoint.h
@@ -97,9 +97,9 @@ class QuicEndpoint : public Endpoint,
void OnWriteBlocked() override {}
void OnSuccessfulVersionNegotiation(
const ParsedQuicVersion& /*version*/) override {}
- void OnConnectivityProbeReceived(
- const QuicSocketAddress& /*self_address*/,
- const QuicSocketAddress& /*peer_address*/) override {}
+ void OnPacketReceived(const QuicSocketAddress& /*self_address*/,
+ const QuicSocketAddress& /*peer_address*/,
+ bool /*is_connectivity_probe*/) override {}
void OnCongestionWindowChange(QuicTime /*now*/) override {}
void OnConnectionMigration(AddressChangeType /*type*/) override {}
void OnPathDegrading() override {}