| Index: net/tools/quic/test_tools/quic_test_client.h
|
| diff --git a/net/tools/quic/test_tools/quic_test_client.h b/net/tools/quic/test_tools/quic_test_client.h
|
| index 311d0a732dedc696d0ed1d1d9228e314000fa29d..d9cc6727c2bb5378db075dbcf81a2ba131af1310 100644
|
| --- a/net/tools/quic/test_tools/quic_test_client.h
|
| +++ b/net/tools/quic/test_tools/quic_test_client.h
|
| @@ -2,17 +2,20 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#ifndef NET_QUIC_TEST_TOOLS_QUIC_TEST_CLIENT_H_
|
| -#define NET_QUIC_TEST_TOOLS_QUIC_TEST_CLIENT_H_
|
| +#ifndef NET_TOOLS_QUIC_TEST_TOOLS_QUIC_TEST_CLIENT_H_
|
| +#define NET_TOOLS_QUIC_TEST_TOOLS_QUIC_TEST_CLIENT_H_
|
|
|
| #include <string>
|
|
|
| #include "base/basictypes.h"
|
| #include "base/memory/scoped_ptr.h"
|
| +#include "net/base/ip_endpoint.h"
|
| #include "net/quic/quic_framer.h"
|
| #include "net/quic/quic_packet_creator.h"
|
| #include "net/quic/quic_protocol.h"
|
| +#include "net/tools/balsa/balsa_frame.h"
|
| #include "net/tools/quic/quic_client.h"
|
| +#include "net/tools/quic/test_tools/simple_client.h"
|
|
|
| namespace net {
|
|
|
| @@ -28,8 +31,34 @@ namespace test {
|
| class HTTPMessage;
|
| class MockableQuicClient;
|
|
|
| -// A toy QUIC client used for testing.
|
| -class QuicTestClient : public QuicDataStream::Visitor {
|
| +// A quic client which allows mocking out writes.
|
| +class MockableQuicClient : public QuicClient {
|
| + public:
|
| + MockableQuicClient(IPEndPoint server_address,
|
| + const QuicServerId& server_id,
|
| + const QuicVersionVector& supported_versions,
|
| + uint32 initial_flow_control_window);
|
| +
|
| + MockableQuicClient(IPEndPoint server_address,
|
| + const QuicServerId& server_id,
|
| + const QuicConfig& config,
|
| + const QuicVersionVector& supported_versions,
|
| + uint32 initial_flow_control_window);
|
| +
|
| + virtual ~MockableQuicClient() OVERRIDE;
|
| + virtual QuicPacketWriter* CreateQuicPacketWriter() OVERRIDE;
|
| + virtual QuicConnectionId GenerateConnectionId() OVERRIDE;
|
| + void UseWriter(QuicPacketWriterWrapper* writer);
|
| + void UseConnectionId(QuicConnectionId connection_id);
|
| +
|
| + private:
|
| + QuicConnectionId override_connection_id_; // ConnectionId to use, if nonzero
|
| + QuicPacketWriterWrapper* test_writer_;
|
| +};
|
| +
|
| +// A toy QUIC client used for testing, mostly following the SimpleClient APIs.
|
| +class QuicTestClient : public SimpleClient,
|
| + public QuicDataStream::Visitor {
|
| public:
|
| QuicTestClient(IPEndPoint server_address,
|
| const string& server_hostname,
|
| @@ -52,39 +81,51 @@ class QuicTestClient : public QuicDataStream::Visitor {
|
| // name is recorded and available with |cert_common_name()|.
|
| void ExpectCertificates(bool on);
|
|
|
| - // Clears any outstanding state and sends a simple GET of 'uri' to the
|
| - // server. Returns 0 if the request failed and no bytes were written.
|
| - ssize_t SendRequest(const string& uri);
|
| - ssize_t SendMessage(const HTTPMessage& message);
|
| -
|
| - string SendCustomSynchronousRequest(const HTTPMessage& message);
|
| - string SendSynchronousRequest(const string& uri);
|
| -
|
| // Wraps data in a quic packet and sends it.
|
| ssize_t SendData(string data, bool last_data);
|
|
|
| QuicPacketCreator::Options* options();
|
|
|
| - void WaitForResponse();
|
| -
|
| - void Connect();
|
| - void ResetConnection();
|
| - void Disconnect();
|
| - IPEndPoint LocalSocketAddress() const;
|
| - void ClearPerRequestState();
|
| - void WaitForResponseForMs(int timeout_ms);
|
| - void WaitForInitialResponseForMs(int timeout_ms);
|
| - ssize_t Send(const void *buffer, size_t size);
|
| - bool response_complete() const { return response_complete_; }
|
| - bool response_headers_complete() const;
|
| - const BalsaHeaders* response_headers() const;
|
| - int response_size() const;
|
| - int response_header_size() const { return response_header_size_; }
|
| - int response_body_size() const { return response_body_size_; }
|
| - size_t bytes_read() const;
|
| - size_t bytes_written() const;
|
| - bool buffer_body() const { return buffer_body_; }
|
| - void set_buffer_body(bool buffer_body) { buffer_body_ = buffer_body; }
|
| + // From SimpleClient
|
| + // Clears any outstanding state and sends a simple GET of 'uri' to the
|
| + // server. Returns 0 if the request failed and no bytes were written.
|
| + virtual ssize_t SendRequest(const string& uri) OVERRIDE;
|
| + virtual ssize_t SendMessage(const HTTPMessage& message) OVERRIDE;
|
| + virtual string SendCustomSynchronousRequest(
|
| + const HTTPMessage& message) OVERRIDE;
|
| + virtual string SendSynchronousRequest(const string& uri) OVERRIDE;
|
| + virtual void Connect() OVERRIDE;
|
| + virtual void ResetConnection() OVERRIDE;
|
| + virtual void Disconnect() OVERRIDE;
|
| + virtual IPEndPoint LocalSocketAddress() const OVERRIDE;
|
| + virtual void ClearPerRequestState() OVERRIDE;
|
| + virtual void WaitForResponseForMs(int timeout_ms) OVERRIDE;
|
| + virtual void WaitForInitialResponseForMs(int timeout_ms) OVERRIDE;
|
| + virtual ssize_t Send(const void *buffer, size_t size) OVERRIDE;
|
| + virtual bool response_complete() const OVERRIDE;
|
| + virtual bool response_headers_complete() const OVERRIDE;
|
| + virtual const BalsaHeaders* response_headers() const OVERRIDE;
|
| + virtual int response_size() const OVERRIDE;
|
| + virtual int response_header_size() const OVERRIDE;
|
| + virtual int response_body_size() const OVERRIDE;
|
| + virtual size_t bytes_read() const OVERRIDE;
|
| + virtual size_t bytes_written() const OVERRIDE;
|
| + virtual bool buffer_body() const OVERRIDE;
|
| + virtual void set_buffer_body(bool buffer_body) OVERRIDE;
|
| + virtual bool ServerInLameDuckMode() const OVERRIDE;
|
| + virtual const string& response_body() OVERRIDE;
|
| + virtual bool connected() const OVERRIDE;
|
| + // These functions are all unimplemented functions from SimpleClient, and log
|
| + // DFATAL if called by users of SimpleClient.
|
| + virtual ssize_t SendAndWaitForResponse(const void *buffer,
|
| + size_t size) OVERRIDE;
|
| + virtual void Bind(IPEndPoint* local_address) OVERRIDE;
|
| + virtual string SerializeMessage(
|
| + const HTTPMessage& message) OVERRIDE;
|
| + virtual IPAddressNumber bind_to_address() const OVERRIDE;
|
| + virtual void set_bind_to_address(IPAddressNumber address) OVERRIDE;
|
| + virtual const IPEndPoint& address() const OVERRIDE;
|
| + virtual size_t requests_sent() const OVERRIDE;
|
|
|
| // From QuicDataStream::Visitor
|
| virtual void OnClose(QuicDataStream* stream) OVERRIDE;
|
| @@ -111,20 +152,20 @@ class QuicTestClient : public QuicDataStream::Visitor {
|
| // Get the server config map.
|
| QuicTagValueMap GetServerConfig() const;
|
|
|
| - const string& response_body() {return response_;}
|
| - bool connected() const;
|
| -
|
| void set_auto_reconnect(bool reconnect) { auto_reconnect_ = reconnect; }
|
|
|
| void set_priority(QuicPriority priority) { priority_ = priority; }
|
|
|
| void WaitForWriteToFlush();
|
|
|
| - private:
|
| - void Initialize(IPEndPoint address, const std::string& hostname, bool secure);
|
| + protected:
|
| + QuicTestClient();
|
| +
|
| + void Initialize(bool secure);
|
|
|
| - IPEndPoint server_address_;
|
| - IPEndPoint client_address_;
|
| + void set_client(MockableQuicClient* client) { client_.reset(client); }
|
| +
|
| + private:
|
| scoped_ptr<MockableQuicClient> client_; // The actual client
|
| QuicSpdyClientStream* stream_;
|
|
|
| @@ -161,4 +202,4 @@ class QuicTestClient : public QuicDataStream::Visitor {
|
| } // namespace tools
|
| } // namespace net
|
|
|
| -#endif // NET_QUIC_TEST_TOOLS_QUIC_TEST_CLIENT_H_
|
| +#endif // NET_TOOLS_QUIC_TEST_TOOLS_QUIC_TEST_CLIENT_H_
|
|
|