diff options
Diffstat (limited to 'chromium/net/tools/quic/test_tools')
15 files changed, 78 insertions, 32 deletions
diff --git a/chromium/net/tools/quic/test_tools/mock_epoll_server.h b/chromium/net/tools/quic/test_tools/mock_epoll_server.h index f56f4ab1953..9eac59403bc 100644 --- a/chromium/net/tools/quic/test_tools/mock_epoll_server.h +++ b/chromium/net/tools/quic/test_tools/mock_epoll_server.h @@ -8,6 +8,9 @@ #include <stddef.h> #include <stdint.h> +#include <unordered_map> +#include <unordered_set> + #include "base/logging.h" #include "base/macros.h" #include "net/tools/epoll_server/epoll_server.h" @@ -52,7 +55,7 @@ class FakeTimeEpollServer : public EpollServer { class MockEpollServer : public FakeTimeEpollServer { public: // type definitions - typedef base::hash_multimap<int64_t, struct epoll_event> EventQueue; + using EventQueue = std::unordered_multimap<int64_t, struct epoll_event>; MockEpollServer(); ~MockEpollServer() override; @@ -81,7 +84,7 @@ class MockEpollServer : public FakeTimeEpollServer { WaitForEventsAndExecuteCallbacks(); } - base::hash_set<AlarmCB*>::size_type NumberOfAlarms() const { + std::unordered_set<AlarmCB*>::size_type NumberOfAlarms() const { return all_alarms_.size(); } diff --git a/chromium/net/tools/quic/test_tools/mock_quic_server_session_visitor.h b/chromium/net/tools/quic/test_tools/mock_quic_server_session_visitor.h index 22a1b05bc45..aba8a9c90e0 100644 --- a/chromium/net/tools/quic/test_tools/mock_quic_server_session_visitor.h +++ b/chromium/net/tools/quic/test_tools/mock_quic_server_session_visitor.h @@ -24,8 +24,6 @@ class MockQuicServerSessionVisitor : public QuicServerSessionVisitor { void(QuicBlockedWriterInterface* blocked_writer)); MOCK_METHOD1(OnConnectionAddedToTimeWaitList, void(QuicConnectionId connection_id)); - MOCK_METHOD1(OnConnectionRemovedFromTimeWaitList, - void(QuicConnectionId connection_id)); private: DISALLOW_COPY_AND_ASSIGN(MockQuicServerSessionVisitor); diff --git a/chromium/net/tools/quic/test_tools/mock_quic_time_wait_list_manager.cc b/chromium/net/tools/quic/test_tools/mock_quic_time_wait_list_manager.cc index 468e6efded7..54b780507fa 100644 --- a/chromium/net/tools/quic/test_tools/mock_quic_time_wait_list_manager.cc +++ b/chromium/net/tools/quic/test_tools/mock_quic_time_wait_list_manager.cc @@ -14,8 +14,9 @@ namespace test { MockTimeWaitListManager::MockTimeWaitListManager( QuicPacketWriter* writer, QuicServerSessionVisitor* visitor, - QuicConnectionHelperInterface* helper) - : QuicTimeWaitListManager(writer, visitor, helper) { + QuicConnectionHelperInterface* helper, + QuicAlarmFactory* alarm_factory) + : QuicTimeWaitListManager(writer, visitor, helper, alarm_factory) { // Though AddConnectionIdToTimeWait is mocked, we want to retain its // functionality. EXPECT_CALL(*this, AddConnectionIdToTimeWait(_, _, _, _)) diff --git a/chromium/net/tools/quic/test_tools/mock_quic_time_wait_list_manager.h b/chromium/net/tools/quic/test_tools/mock_quic_time_wait_list_manager.h index 5d5542b14a6..fab8c38cce5 100644 --- a/chromium/net/tools/quic/test_tools/mock_quic_time_wait_list_manager.h +++ b/chromium/net/tools/quic/test_tools/mock_quic_time_wait_list_manager.h @@ -17,20 +17,22 @@ class MockTimeWaitListManager : public QuicTimeWaitListManager { public: MockTimeWaitListManager(QuicPacketWriter* writer, QuicServerSessionVisitor* visitor, - QuicConnectionHelperInterface* helper); + QuicConnectionHelperInterface* helper, + QuicAlarmFactory* alarm_factory); ~MockTimeWaitListManager() override; MOCK_METHOD4(AddConnectionIdToTimeWait, void(QuicConnectionId connection_id, QuicVersion version, bool connection_rejected_statelessly, - std::vector<QuicEncryptedPacket*>* termination_packets)); + std::vector<std::unique_ptr<QuicEncryptedPacket>>* + termination_packets)); void QuicTimeWaitListManager_AddConnectionIdToTimeWait( QuicConnectionId connection_id, QuicVersion version, bool connection_rejected_statelessly, - std::vector<QuicEncryptedPacket*>* termination_packets) { + std::vector<std::unique_ptr<QuicEncryptedPacket>>* termination_packets) { QuicTimeWaitListManager::AddConnectionIdToTimeWait( connection_id, version, connection_rejected_statelessly, termination_packets); diff --git a/chromium/net/tools/quic/test_tools/packet_dropping_test_writer.cc b/chromium/net/tools/quic/test_tools/packet_dropping_test_writer.cc index 3858b7828b8..4d85d5a85f9 100644 --- a/chromium/net/tools/quic/test_tools/packet_dropping_test_writer.cc +++ b/chromium/net/tools/quic/test_tools/packet_dropping_test_writer.cc @@ -66,11 +66,12 @@ PacketDroppingTestWriter::PacketDroppingTestWriter() PacketDroppingTestWriter::~PacketDroppingTestWriter() {} void PacketDroppingTestWriter::Initialize(QuicConnectionHelperInterface* helper, + QuicAlarmFactory* alarm_factory, Delegate* on_can_write) { clock_ = helper->GetClock(); write_unblocked_alarm_.reset( - helper->CreateAlarm(new WriteUnblockedAlarm(this))); - delay_alarm_.reset(helper->CreateAlarm(new DelayAlarm(this))); + alarm_factory->CreateAlarm(new WriteUnblockedAlarm(this))); + delay_alarm_.reset(alarm_factory->CreateAlarm(new DelayAlarm(this))); on_can_write_.reset(on_can_write); } diff --git a/chromium/net/tools/quic/test_tools/packet_dropping_test_writer.h b/chromium/net/tools/quic/test_tools/packet_dropping_test_writer.h index 20d2c278e38..2e3fcbca0ea 100644 --- a/chromium/net/tools/quic/test_tools/packet_dropping_test_writer.h +++ b/chromium/net/tools/quic/test_tools/packet_dropping_test_writer.h @@ -9,11 +9,11 @@ #include <stdint.h> #include <list> +#include <memory> #include <string> #include "base/logging.h" #include "base/macros.h" -#include "base/memory/scoped_ptr.h" #include "base/synchronization/lock.h" #include "net/base/ip_address.h" #include "net/quic/quic_alarm.h" @@ -45,6 +45,7 @@ class PacketDroppingTestWriter : public QuicPacketWriterWrapper { // |on_can_write| will be triggered when fake-unblocking; ownership will be // assumed. void Initialize(QuicConnectionHelperInterface* helper, + QuicAlarmFactory* alarm_factory, Delegate* on_can_write); // QuicPacketWriter methods: @@ -153,9 +154,9 @@ class PacketDroppingTestWriter : public QuicPacketWriterWrapper { typedef std::list<DelayedWrite> DelayedPacketList; const QuicClock* clock_; - scoped_ptr<QuicAlarm> write_unblocked_alarm_; - scoped_ptr<QuicAlarm> delay_alarm_; - scoped_ptr<Delegate> on_can_write_; + std::unique_ptr<QuicAlarm> write_unblocked_alarm_; + std::unique_ptr<QuicAlarm> delay_alarm_; + std::unique_ptr<Delegate> on_can_write_; net::test::SimpleRandom simple_random_; // Stored packets delayed by fake packet delay or bandwidth restrictions. DelayedPacketList delayed_packets_; diff --git a/chromium/net/tools/quic/test_tools/quic_client_peer.cc b/chromium/net/tools/quic/test_tools/quic_client_peer.cc index 71d3520f9d7..961cc823e2d 100644 --- a/chromium/net/tools/quic/test_tools/quic_client_peer.cc +++ b/chromium/net/tools/quic/test_tools/quic_client_peer.cc @@ -10,6 +10,11 @@ namespace net { namespace test { // static +QuicCryptoClientConfig* QuicClientPeer::GetCryptoConfig(QuicClient* client) { + return client->crypto_config(); +} + +// static bool QuicClientPeer::CreateUDPSocketAndBind(QuicClient* client) { return client->CreateUDPSocketAndBind(); } @@ -25,5 +30,10 @@ void QuicClientPeer::SetClientPort(QuicClient* client, int port) { IPEndPoint(client->GetLatestClientAddress().address(), port); } +// static +void QuicClientPeer::SetWriter(QuicClient* client, QuicPacketWriter* writer) { + client->set_writer(writer); +} + } // namespace test } // namespace net diff --git a/chromium/net/tools/quic/test_tools/quic_client_peer.h b/chromium/net/tools/quic/test_tools/quic_client_peer.h index 4d249a3087d..711fb78c5a9 100644 --- a/chromium/net/tools/quic/test_tools/quic_client_peer.h +++ b/chromium/net/tools/quic/test_tools/quic_client_peer.h @@ -19,9 +19,11 @@ namespace test { class QuicClientPeer { public: + static QuicCryptoClientConfig* GetCryptoConfig(QuicClient* client); static bool CreateUDPSocketAndBind(QuicClient* client); static void CleanUpUDPSocket(QuicClient* client, int fd); static void SetClientPort(QuicClient* client, int port); + static void SetWriter(QuicClient* client, QuicPacketWriter* writer); private: DISALLOW_COPY_AND_ASSIGN(QuicClientPeer); diff --git a/chromium/net/tools/quic/test_tools/quic_dispatcher_peer.cc b/chromium/net/tools/quic/test_tools/quic_dispatcher_peer.cc index 232043fbc5c..48a61f71d68 100644 --- a/chromium/net/tools/quic/test_tools/quic_dispatcher_peer.cc +++ b/chromium/net/tools/quic/test_tools/quic_dispatcher_peer.cc @@ -42,6 +42,12 @@ QuicConnectionHelperInterface* QuicDispatcherPeer::GetHelper( } // static +QuicAlarmFactory* QuicDispatcherPeer::GetAlarmFactory( + QuicDispatcher* dispatcher) { + return dispatcher->alarm_factory_.get(); +} + +// static QuicDispatcher::WriteBlockedList* QuicDispatcherPeer::GetWriteBlockedList( QuicDispatcher* dispatcher) { return &dispatcher->write_blocked_list_; diff --git a/chromium/net/tools/quic/test_tools/quic_dispatcher_peer.h b/chromium/net/tools/quic/test_tools/quic_dispatcher_peer.h index cbd60e27b8f..4ff4d2d38b6 100644 --- a/chromium/net/tools/quic/test_tools/quic_dispatcher_peer.h +++ b/chromium/net/tools/quic/test_tools/quic_dispatcher_peer.h @@ -32,6 +32,8 @@ class QuicDispatcherPeer { static QuicConnectionHelperInterface* GetHelper(QuicDispatcher* dispatcher); + static QuicAlarmFactory* GetAlarmFactory(QuicDispatcher* dispatcher); + static QuicDispatcher::WriteBlockedList* GetWriteBlockedList( QuicDispatcher* dispatcher); diff --git a/chromium/net/tools/quic/test_tools/quic_test_client.cc b/chromium/net/tools/quic/test_tools/quic_test_client.cc index db9a9b982e8..760c451af1c 100644 --- a/chromium/net/tools/quic/test_tools/quic_test_client.cc +++ b/chromium/net/tools/quic/test_tools/quic_test_client.cc @@ -4,6 +4,8 @@ #include "net/tools/quic/test_tools/quic_test_client.h" +#include <memory> + #include "base/time/time.h" #include "net/base/completion_callback.h" #include "net/base/net_errors.h" @@ -52,7 +54,7 @@ class RecordingProofVerifier : public ProofVerifier { const string& signature, const ProofVerifyContext* context, string* error_details, - scoped_ptr<ProofVerifyDetails>* details, + std::unique_ptr<ProofVerifyDetails>* details, ProofVerifierCallback* callback) override { common_name_.clear(); if (certs.empty()) { @@ -184,9 +186,7 @@ QuicTestClient::QuicTestClient(IPEndPoint server_address, config, supported_versions, &epoll_server_)), - allow_bidirectional_data_(false), - num_requests_(0), - num_responses_(0) { + allow_bidirectional_data_(false) { Initialize(); } @@ -204,6 +204,8 @@ void QuicTestClient::Initialize() { connect_attempted_ = false; auto_reconnect_ = false; buffer_body_ = true; + num_requests_ = 0; + num_responses_ = 0; ClearPerRequestState(); // As chrome will generally do this, we want it to be the default when it's // not overridden. @@ -311,7 +313,7 @@ ssize_t QuicTestClient::SendMessage(const HTTPMessage& message) { // CHECK(message.body_chunks().empty()) // << "HTTPMessage::body_chunks not supported"; - scoped_ptr<BalsaHeaders> munged_headers(MungeHeaders(message.headers())); + std::unique_ptr<BalsaHeaders> munged_headers(MungeHeaders(message.headers())); ssize_t ret = GetOrCreateStreamAndSendRequest( (munged_headers.get() ? munged_headers.get() : message.headers()), message.body(), message.has_complete_message(), nullptr); @@ -561,6 +563,7 @@ void QuicTestClient::OnClose(QuicSpdyStream* stream) { // Always close the stream, regardless of whether it was the last stream // written. client()->OnClose(stream); + ++num_responses_; } if (stream_ != stream) { return; @@ -581,7 +584,6 @@ void QuicTestClient::OnClose(QuicSpdyStream* stream) { response_header_size_ = response_headers_.GetSizeForWriteBuffer(); response_body_size_ = stream_->data().size(); stream_ = nullptr; - ++num_responses_; } bool QuicTestClient::CheckVary(const SpdyHeaderBlock& client_request, diff --git a/chromium/net/tools/quic/test_tools/quic_test_client.h b/chromium/net/tools/quic/test_tools/quic_test_client.h index b8530f46f46..a25a842d5cb 100644 --- a/chromium/net/tools/quic/test_tools/quic_test_client.h +++ b/chromium/net/tools/quic/test_tools/quic_test_client.h @@ -8,10 +8,11 @@ #include <stddef.h> #include <stdint.h> +#include <cstdint> +#include <memory> #include <string> #include "base/macros.h" -#include "base/memory/scoped_ptr.h" #include "net/base/ip_address.h" #include "net/base/ip_endpoint.h" #include "net/quic/proto/cached_network_parameters.pb.h" @@ -23,6 +24,8 @@ #include "net/tools/quic/quic_client.h" #include "net/tools/quic/test_tools/simple_client.h" +using base::StringPiece; + namespace net { class ProofVerifier; @@ -233,7 +236,7 @@ class QuicTestClient : public test::SimpleClient, bool HaveActiveStream(); EpollServer epoll_server_; - scoped_ptr<MockableQuicClient> client_; // The actual client + std::unique_ptr<MockableQuicClient> client_; // The actual client QuicSpdyClientStream* stream_; QuicRstStreamErrorCode stream_error_; diff --git a/chromium/net/tools/quic/test_tools/quic_test_server.cc b/chromium/net/tools/quic/test_tools/quic_test_server.cc index dc5fc45141d..a872bb02f98 100644 --- a/chromium/net/tools/quic/test_tools/quic_test_server.cc +++ b/chromium/net/tools/quic/test_tools/quic_test_server.cc @@ -7,7 +7,7 @@ #include "base/logging.h" #include "base/run_loop.h" #include "base/synchronization/lock.h" -#include "base/thread_task_runner_handle.h" +#include "base/threading/thread_task_runner_handle.h" #include "net/base/ip_endpoint.h" #include "net/base/net_errors.h" #include "net/quic/crypto/crypto_handshake.h" @@ -19,6 +19,7 @@ #include "net/quic/quic_packet_writer.h" #include "net/quic/quic_protocol.h" #include "net/tools/quic/quic_dispatcher.h" +#include "net/tools/quic/quic_epoll_alarm_factory.h" #include "net/tools/quic/quic_epoll_connection_helper.h" #include "net/tools/quic/quic_simple_server_session.h" #include "net/tools/quic/quic_simple_server_stream.h" @@ -76,8 +77,13 @@ class QuicTestDispatcher : public QuicDispatcher { QuicTestDispatcher(const QuicConfig& config, const QuicCryptoServerConfig* crypto_config, const QuicVersionVector& versions, - QuicConnectionHelperInterface* helper) - : QuicDispatcher(config, crypto_config, versions, helper), + std::unique_ptr<QuicConnectionHelperInterface> helper, + std::unique_ptr<QuicAlarmFactory> alarm_factory) + : QuicDispatcher(config, + crypto_config, + versions, + std::move(helper), + std::move(alarm_factory)), session_factory_(nullptr), stream_factory_(nullptr), crypto_stream_factory_(nullptr) {} @@ -90,7 +96,7 @@ class QuicTestDispatcher : public QuicDispatcher { return QuicDispatcher::CreateQuicSession(id, client); } QuicConnection* connection = new QuicConnection( - id, client, helper(), CreatePerConnectionWriter(), + id, client, helper(), alarm_factory(), CreatePerConnectionWriter(), /* owns_writer= */ true, Perspective::IS_SERVER, supported_versions()); QuicServerSessionBase* session = nullptr; @@ -150,8 +156,10 @@ QuicTestServer::QuicTestServer(ProofSource* proof_source, QuicDispatcher* QuicTestServer::CreateQuicDispatcher() { return new QuicTestDispatcher( config(), &crypto_config(), supported_versions(), - new QuicEpollConnectionHelper(epoll_server(), - QuicAllocator::BUFFER_POOL)); + std::unique_ptr<QuicEpollConnectionHelper>(new QuicEpollConnectionHelper( + epoll_server(), QuicAllocator::BUFFER_POOL)), + std::unique_ptr<QuicEpollAlarmFactory>( + new QuicEpollAlarmFactory(epoll_server()))); } void QuicTestServer::SetSessionFactory(SessionFactory* factory) { @@ -180,8 +188,11 @@ ImmediateGoAwaySession::ImmediateGoAwaySession( connection, visitor, crypto_config, - compressed_certs_cache) { + compressed_certs_cache) {} + +void ImmediateGoAwaySession::OnStreamFrame(const QuicStreamFrame& frame) { SendGoAway(QUIC_PEER_GOING_AWAY, ""); + QuicSimpleServerSession::OnStreamFrame(frame); } } // namespace test diff --git a/chromium/net/tools/quic/test_tools/quic_test_server.h b/chromium/net/tools/quic/test_tools/quic_test_server.h index 7af5f51a97c..0b96be2cb84 100644 --- a/chromium/net/tools/quic/test_tools/quic_test_server.h +++ b/chromium/net/tools/quic/test_tools/quic_test_server.h @@ -5,9 +5,9 @@ #ifndef NET_TOOLS_QUIC_TEST_TOOLS_QUIC_TEST_SERVER_H_ #define NET_TOOLS_QUIC_TEST_TOOLS_QUIC_TEST_SERVER_H_ +#include <memory> #include <string> -#include "base/memory/scoped_ptr.h" #include "net/base/ip_endpoint.h" #include "net/quic/quic_session.h" #include "net/tools/quic/quic_dispatcher.h" @@ -92,6 +92,8 @@ class ImmediateGoAwaySession : public QuicSimpleServerSession { QuicServerSessionVisitor* visitor, const QuicCryptoServerConfig* crypto_config, QuicCompressedCertsCache* compressed_certs_cache); + // Override to send GoAway. + void OnStreamFrame(const QuicStreamFrame& frame) override; }; } // namespace test diff --git a/chromium/net/tools/quic/test_tools/server_thread.h b/chromium/net/tools/quic/test_tools/server_thread.h index 244a87c55e5..b907fd16010 100644 --- a/chromium/net/tools/quic/test_tools/server_thread.h +++ b/chromium/net/tools/quic/test_tools/server_thread.h @@ -5,6 +5,8 @@ #ifndef NET_TOOLS_QUIC_TEST_TOOLS_SERVER_THREAD_H_ #define NET_TOOLS_QUIC_TEST_TOOLS_SERVER_THREAD_H_ +#include <memory> + #include "base/macros.h" #include "base/threading/simple_thread.h" #include "net/base/ip_endpoint.h" @@ -63,7 +65,7 @@ class ServerThread : public base::SimpleThread { base::WaitableEvent resume_; // Notified when the server should resume. base::WaitableEvent quit_; // Notified when the server should quit. - scoped_ptr<QuicServer> server_; + std::unique_ptr<QuicServer> server_; IPEndPoint address_; base::Lock port_lock_; int port_; |