Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(396)

Unified Diff: net/tools/quic/test_tools/quic_test_client.h

Issue 216553008: Sync various changes to QuicTestClient. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: OVERRIDE Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/net.gyp ('k') | net/tools/quic/test_tools/quic_test_client.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_
« no previous file with comments | « net/net.gyp ('k') | net/tools/quic/test_tools/quic_test_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698