Chromium Code Reviews| 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" |
|
Ryan Hamilton
2016/10/19 18:38:29
Can you also remove this file? I believe it's no l
|
| #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: |