| 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 12b804bfa9299fc494b63698495f5541d3690cc3..88d00cb99cb36be68eab29be3d33d73bc9bf84f4 100644
|
| --- a/net/tools/quic/test_tools/quic_test_client.h
|
| +++ b/net/tools/quic/test_tools/quic_test_client.h
|
| @@ -22,7 +22,6 @@
|
| #include "net/tools/balsa/balsa_frame.h"
|
| #include "net/tools/epoll_server/epoll_server.h"
|
| #include "net/tools/quic/quic_client.h"
|
| -#include "net/tools/quic/test_tools/simple_client.h"
|
| #include "testing/gmock/include/gmock/gmock.h"
|
|
|
| using base::StringPiece;
|
| @@ -93,9 +92,8 @@ class MockableQuicClient : public QuicClient {
|
| DISALLOW_COPY_AND_ASSIGN(MockableQuicClient);
|
| };
|
|
|
| -// A toy QUIC client used for testing, mostly following the SimpleClient APIs.
|
| -class QuicTestClient : public test::SimpleClient,
|
| - public QuicSpdyStream::Visitor,
|
| +// A toy QUIC client used for testing.
|
| +class QuicTestClient : public QuicSpdyStream::Visitor,
|
| public QuicClientPushPromiseIndex::Delegate {
|
| public:
|
| QuicTestClient(IPEndPoint server_address,
|
| @@ -123,48 +121,64 @@ class QuicTestClient : public test::SimpleClient,
|
| bool last_data,
|
| QuicAckListenerInterface* delegate);
|
|
|
| - // 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.
|
| - ssize_t SendRequest(const std::string& uri) override;
|
| + ssize_t SendRequest(const std::string& uri);
|
| // Sends requests for all the urls and waits for the responses. To process
|
| // the individual responses as they are returned, the caller should use the
|
| // set the response_listener on the client().
|
| void SendRequestsAndWaitForResponses(
|
| const std::vector<std::string>& url_list);
|
| - ssize_t SendMessage(const HTTPMessage& message) override;
|
| - std::string SendCustomSynchronousRequest(const HTTPMessage& message) override;
|
| - std::string SendSynchronousRequest(const std::string& uri) override;
|
| - void Connect() override;
|
| - void ResetConnection() override;
|
| - void Disconnect() override;
|
| - IPEndPoint local_address() const override;
|
| - void ClearPerRequestState() override;
|
| - bool WaitUntil(int timeout_ms, std::function<bool()> trigger) override;
|
| - ssize_t Send(const void* buffer, size_t size) override;
|
| - bool response_complete() const override;
|
| - bool response_headers_complete() const override;
|
| - const BalsaHeaders* response_headers() const override;
|
| - int64_t response_size() const override;
|
| - int response_header_size() const override;
|
| - int64_t response_body_size() const override;
|
| - size_t bytes_read() const override;
|
| - size_t bytes_written() const override;
|
| - bool buffer_body() const override;
|
| - void set_buffer_body(bool buffer_body) override;
|
| - bool ServerInLameDuckMode() const override;
|
| - const std::string& response_body() override;
|
| - bool connected() const override;
|
| - // These functions are all unimplemented functions from SimpleClient, and log
|
| - // DFATAL if called by users of SimpleClient.
|
| - ssize_t SendAndWaitForResponse(const void* buffer, size_t size) override;
|
| - void Bind(IPEndPoint* local_address) override;
|
| - void MigrateSocket(const IPAddress& new_host) override;
|
| - std::string SerializeMessage(const HTTPMessage& message) override;
|
| - IPAddress bind_to_address() const override;
|
| - void set_bind_to_address(const IPAddress& address) override;
|
| - const IPEndPoint& address() const override;
|
| - size_t requests_sent() const override;
|
| + ssize_t SendMessage(const HTTPMessage& message);
|
| + std::string SendCustomSynchronousRequest(const HTTPMessage& message);
|
| + std::string SendSynchronousRequest(const std::string& uri);
|
| + void Connect();
|
| + void ResetConnection();
|
| + void Disconnect();
|
| + IPEndPoint local_address() const;
|
| + void ClearPerRequestState();
|
| + bool WaitUntil(int timeout_ms, std::function<bool()> trigger);
|
| + ssize_t Send(const void* buffer, size_t size);
|
| + bool response_complete() const;
|
| + bool response_headers_complete() const;
|
| + const BalsaHeaders* response_headers() const;
|
| + int64_t response_size() const;
|
| + int response_header_size() const;
|
| + int64_t response_body_size() const;
|
| + size_t bytes_read() const;
|
| + size_t bytes_written() const;
|
| + bool buffer_body() const;
|
| + void set_buffer_body(bool buffer_body);
|
| + const std::string& response_body();
|
| + bool connected() const;
|
| +
|
| + // Returns once a complete response or a connection close has been received
|
| + // from the server.
|
| + void WaitForResponse() { WaitForResponseForMs(-1); }
|
| +
|
| + // Waits for some data or response from the server.
|
| + void WaitForInitialResponse() { WaitForInitialResponseForMs(-1); }
|
| +
|
| + // Returns once a complete response or a connection close has been received
|
| + // from the server, or once the timeout expires. -1 for no timeout.
|
| + void WaitForResponseForMs(int timeout_ms) {
|
| + WaitUntil(timeout_ms, [this]() { return response_complete(); });
|
| + if (response_complete()) {
|
| + VLOG(1) << "Client received response:"
|
| + << response_headers()->DebugString() << response_body();
|
| + }
|
| + }
|
| +
|
| + // Waits for some data or response from the server, or once the timeout
|
| + // expires. -1 for no timeout.
|
| + void WaitForInitialResponseForMs(int timeout_ms) {
|
| + WaitUntil(timeout_ms, [this]() { return response_size() != 0; });
|
| + }
|
| +
|
| + void MigrateSocket(const IPAddress& new_host);
|
| + IPAddress bind_to_address() const;
|
| + void set_bind_to_address(IPAddress address);
|
| + const IPEndPoint& address() const;
|
|
|
| // Returns the response trailers as received by the |stream_|.
|
| const SpdyHeaderBlock& response_trailers() const;
|
| @@ -243,13 +257,13 @@ class QuicTestClient : public test::SimpleClient,
|
| override_sni_ = sni;
|
| }
|
|
|
| - protected:
|
| - QuicTestClient();
|
| -
|
| void Initialize();
|
|
|
| void set_client(MockableQuicClient* client) { client_.reset(client); }
|
|
|
| + protected:
|
| + QuicTestClient();
|
| +
|
| private:
|
| class TestClientDataToResend : public QuicClient::QuicDataToResend {
|
| public:
|
|
|