summaryrefslogtreecommitdiff
path: root/chromium/net/socket/socket_test_util.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net/socket/socket_test_util.h')
-rw-r--r--chromium/net/socket/socket_test_util.h288
1 files changed, 179 insertions, 109 deletions
diff --git a/chromium/net/socket/socket_test_util.h b/chromium/net/socket/socket_test_util.h
index e4e56522c92..8df1d69538a 100644
--- a/chromium/net/socket/socket_test_util.h
+++ b/chromium/net/socket/socket_test_util.h
@@ -97,43 +97,76 @@ struct MockReadWrite {
};
// Default
- MockReadWrite() : mode(SYNCHRONOUS), result(0), data(NULL), data_len(0),
- sequence_number(0), time_stamp(base::Time::Now()) {}
+ MockReadWrite()
+ : mode(SYNCHRONOUS),
+ result(0),
+ data(NULL),
+ data_len(0),
+ sequence_number(0),
+ time_stamp(base::Time::Now()) {}
// Read/write failure (no data).
- MockReadWrite(IoMode io_mode, int result) : mode(io_mode), result(result),
- data(NULL), data_len(0), sequence_number(0),
- time_stamp(base::Time::Now()) { }
+ MockReadWrite(IoMode io_mode, int result)
+ : mode(io_mode),
+ result(result),
+ data(NULL),
+ data_len(0),
+ sequence_number(0),
+ time_stamp(base::Time::Now()) {}
// Read/write failure (no data), with sequence information.
- MockReadWrite(IoMode io_mode, int result, int seq) : mode(io_mode),
- result(result), data(NULL), data_len(0), sequence_number(seq),
- time_stamp(base::Time::Now()) { }
+ MockReadWrite(IoMode io_mode, int result, int seq)
+ : mode(io_mode),
+ result(result),
+ data(NULL),
+ data_len(0),
+ sequence_number(seq),
+ time_stamp(base::Time::Now()) {}
// Asynchronous read/write success (inferred data length).
- explicit MockReadWrite(const char* data) : mode(ASYNC), result(0),
- data(data), data_len(strlen(data)), sequence_number(0),
- time_stamp(base::Time::Now()) { }
+ explicit MockReadWrite(const char* data)
+ : mode(ASYNC),
+ result(0),
+ data(data),
+ data_len(strlen(data)),
+ sequence_number(0),
+ time_stamp(base::Time::Now()) {}
// Read/write success (inferred data length).
- MockReadWrite(IoMode io_mode, const char* data) : mode(io_mode), result(0),
- data(data), data_len(strlen(data)), sequence_number(0),
- time_stamp(base::Time::Now()) { }
+ MockReadWrite(IoMode io_mode, const char* data)
+ : mode(io_mode),
+ result(0),
+ data(data),
+ data_len(strlen(data)),
+ sequence_number(0),
+ time_stamp(base::Time::Now()) {}
// Read/write success.
- MockReadWrite(IoMode io_mode, const char* data, int data_len) : mode(io_mode),
- result(0), data(data), data_len(data_len), sequence_number(0),
- time_stamp(base::Time::Now()) { }
+ MockReadWrite(IoMode io_mode, const char* data, int data_len)
+ : mode(io_mode),
+ result(0),
+ data(data),
+ data_len(data_len),
+ sequence_number(0),
+ time_stamp(base::Time::Now()) {}
// Read/write success (inferred data length) with sequence information.
- MockReadWrite(IoMode io_mode, int seq, const char* data) : mode(io_mode),
- result(0), data(data), data_len(strlen(data)), sequence_number(seq),
- time_stamp(base::Time::Now()) { }
+ MockReadWrite(IoMode io_mode, int seq, const char* data)
+ : mode(io_mode),
+ result(0),
+ data(data),
+ data_len(strlen(data)),
+ sequence_number(seq),
+ time_stamp(base::Time::Now()) {}
// Read/write success with sequence information.
- MockReadWrite(IoMode io_mode, const char* data, int data_len, int seq) :
- mode(io_mode), result(0), data(data), data_len(data_len),
- sequence_number(seq), time_stamp(base::Time::Now()) { }
+ MockReadWrite(IoMode io_mode, const char* data, int data_len, int seq)
+ : mode(io_mode),
+ result(0),
+ data(data),
+ data_len(data_len),
+ sequence_number(seq),
+ time_stamp(base::Time::Now()) {}
IoMode mode;
int result;
@@ -143,18 +176,16 @@ struct MockReadWrite {
// For OrderedSocketData, which only allows reads to occur in a particular
// sequence. If a read occurs before the given |sequence_number| is reached,
// an ERR_IO_PENDING is returned.
- int sequence_number; // The sequence number at which a read is allowed
- // to occur.
- base::Time time_stamp; // The time stamp at which the operation occurred.
+ int sequence_number; // The sequence number at which a read is allowed
+ // to occur.
+ base::Time time_stamp; // The time stamp at which the operation occurred.
};
typedef MockReadWrite<MOCK_READ> MockRead;
typedef MockReadWrite<MOCK_WRITE> MockWrite;
struct MockWriteResult {
- MockWriteResult(IoMode io_mode, int result)
- : mode(io_mode),
- result(result) {}
+ MockWriteResult(IoMode io_mode, int result) : mode(io_mode), result(result) {}
IoMode mode;
int result;
@@ -208,8 +239,10 @@ class AsyncSocket {
class StaticSocketDataProvider : public SocketDataProvider {
public:
StaticSocketDataProvider();
- StaticSocketDataProvider(MockRead* reads, size_t reads_count,
- MockWrite* writes, size_t writes_count);
+ StaticSocketDataProvider(MockRead* reads,
+ size_t reads_count,
+ MockWrite* writes,
+ size_t writes_count);
virtual ~StaticSocketDataProvider();
// These functions get access to the next available read and write data.
@@ -231,7 +264,7 @@ class StaticSocketDataProvider : public SocketDataProvider {
// SocketDataProvider implementation.
virtual MockRead GetNextRead() OVERRIDE;
virtual MockWriteResult OnWrite(const std::string& data) OVERRIDE;
- ; virtual void Reset() OVERRIDE;
+ virtual void Reset() OVERRIDE;
private:
MockRead* reads_;
@@ -267,9 +300,7 @@ class DynamicSocketDataProvider : public SocketDataProvider {
// The next time there is a read from this socket, it will return |data|.
// Before calling SimulateRead next time, the previous data must be consumed.
void SimulateRead(const char* data, size_t length);
- void SimulateRead(const char* data) {
- SimulateRead(data, std::strlen(data));
- }
+ void SimulateRead(const char* data) { SimulateRead(data, std::strlen(data)); }
private:
std::deque<MockRead> reads_;
@@ -316,8 +347,10 @@ class DelayedSocketData : public StaticSocketDataProvider {
// Note: For stream sockets, the MockRead list must end with a EOF, e.g., a
// MockRead(true, 0, 0);
DelayedSocketData(int write_delay,
- MockRead* reads, size_t reads_count,
- MockWrite* writes, size_t writes_count);
+ MockRead* reads,
+ size_t reads_count,
+ MockWrite* writes,
+ size_t writes_count);
// |connect| the result for the connect phase.
// |reads| the list of MockRead completions.
@@ -326,9 +359,12 @@ class DelayedSocketData : public StaticSocketDataProvider {
// |writes| the list of MockWrite completions.
// Note: For stream sockets, the MockRead list must end with a EOF, e.g., a
// MockRead(true, 0, 0);
- DelayedSocketData(const MockConnect& connect, int write_delay,
- MockRead* reads, size_t reads_count,
- MockWrite* writes, size_t writes_count);
+ DelayedSocketData(const MockConnect& connect,
+ int write_delay,
+ MockRead* reads,
+ size_t reads_count,
+ MockWrite* writes,
+ size_t writes_count);
virtual ~DelayedSocketData();
void ForceNextRead();
@@ -342,7 +378,10 @@ class DelayedSocketData : public StaticSocketDataProvider {
private:
int write_delay_;
bool read_in_progress_;
+
base::WeakPtrFactory<DelayedSocketData> weak_factory_;
+
+ DISALLOW_COPY_AND_ASSIGN(DelayedSocketData);
};
// A DataProvider where the reads are ordered.
@@ -363,8 +402,10 @@ class OrderedSocketData : public StaticSocketDataProvider {
// Note: All MockReads and MockWrites must be async.
// Note: For stream sockets, the MockRead list must end with a EOF, e.g., a
// MockRead(true, 0, 0);
- OrderedSocketData(MockRead* reads, size_t reads_count,
- MockWrite* writes, size_t writes_count);
+ OrderedSocketData(MockRead* reads,
+ size_t reads_count,
+ MockWrite* writes,
+ size_t writes_count);
virtual ~OrderedSocketData();
// |connect| the result for the connect phase.
@@ -374,8 +415,10 @@ class OrderedSocketData : public StaticSocketDataProvider {
// Note: For stream sockets, the MockRead list must end with a EOF, e.g., a
// MockRead(true, 0, 0);
OrderedSocketData(const MockConnect& connect,
- MockRead* reads, size_t reads_count,
- MockWrite* writes, size_t writes_count);
+ MockRead* reads,
+ size_t reads_count,
+ MockWrite* writes,
+ size_t writes_count);
// Posts a quit message to the current message loop, if one is running.
void EndLoop();
@@ -390,7 +433,10 @@ class OrderedSocketData : public StaticSocketDataProvider {
int sequence_number_;
int loop_stop_stage_;
bool blocked_;
+
base::WeakPtrFactory<OrderedSocketData> weak_factory_;
+
+ DISALLOW_COPY_AND_ASSIGN(OrderedSocketData);
};
class DeterministicMockTCPClientSocket;
@@ -452,8 +498,7 @@ class DeterministicMockTCPClientSocket;
//
// For examples of how to use this class, see:
// deterministic_socket_data_unittests.cc
-class DeterministicSocketData
- : public StaticSocketDataProvider {
+class DeterministicSocketData : public StaticSocketDataProvider {
public:
// The Delegate is an abstract interface which handles the communication from
// the DeterministicSocketData to the Deterministic MockSocket. The
@@ -481,8 +526,10 @@ class DeterministicSocketData
// |reads| the list of MockRead completions.
// |writes| the list of MockWrite completions.
- DeterministicSocketData(MockRead* reads, size_t reads_count,
- MockWrite* writes, size_t writes_count);
+ DeterministicSocketData(MockRead* reads,
+ size_t reads_count,
+ MockWrite* writes,
+ size_t writes_count);
virtual ~DeterministicSocketData();
// Consume all the data up to the give stop point (via SetStop()).
@@ -501,9 +548,7 @@ class DeterministicSocketData
MockRead& current_read() { return current_read_; }
MockWrite& current_write() { return current_write_; }
int sequence_number() const { return sequence_number_; }
- void set_delegate(base::WeakPtr<Delegate> delegate) {
- delegate_ = delegate;
- }
+ void set_delegate(base::WeakPtr<Delegate> delegate) { delegate_ = delegate; }
// StaticSocketDataProvider:
@@ -524,8 +569,10 @@ class DeterministicSocketData
void NextStep();
- void VerifyCorrectSequenceNumbers(MockRead* reads, size_t reads_count,
- MockWrite* writes, size_t writes_count);
+ void VerifyCorrectSequenceNumbers(MockRead* reads,
+ size_t reads_count,
+ MockWrite* writes,
+ size_t writes_count);
int sequence_number_;
MockRead current_read_;
@@ -540,7 +587,7 @@ class DeterministicSocketData
// Holds an array of SocketDataProvider elements. As Mock{TCP,SSL}StreamSocket
// objects get instantiated, they take their data from the i'th element of this
// array.
-template<typename T>
+template <typename T>
class SocketDataProviderArray {
public:
SocketDataProviderArray() : next_index_(0) {}
@@ -557,9 +604,7 @@ class SocketDataProviderArray {
size_t next_index() { return next_index_; }
- void ResetNextIndex() {
- next_index_ = 0;
- }
+ void ResetNextIndex() { next_index_ = 0; }
private:
// Index of the next |data_providers_| element to use. Not an iterator
@@ -624,9 +669,11 @@ class MockClientSocket : public SSLClientSocket {
explicit MockClientSocket(const BoundNetLog& net_log);
// Socket implementation.
- virtual int Read(IOBuffer* buf, int buf_len,
+ virtual int Read(IOBuffer* buf,
+ int buf_len,
const CompletionCallback& callback) = 0;
- virtual int Write(IOBuffer* buf, int buf_len,
+ virtual int Write(IOBuffer* buf,
+ int buf_len,
const CompletionCallback& callback) = 0;
virtual bool SetReceiveBufferSize(int32 size) OVERRIDE;
virtual bool SetSendBufferSize(int32 size) OVERRIDE;
@@ -643,8 +690,8 @@ class MockClientSocket : public SSLClientSocket {
virtual void SetOmniboxSpeculation() OVERRIDE {}
// SSLClientSocket implementation.
- virtual void GetSSLCertRequestInfo(
- SSLCertRequestInfo* cert_request_info) OVERRIDE;
+ virtual void GetSSLCertRequestInfo(SSLCertRequestInfo* cert_request_info)
+ OVERRIDE;
virtual int ExportKeyingMaterial(const base::StringPiece& label,
bool has_context,
const base::StringPiece& context,
@@ -660,8 +707,6 @@ class MockClientSocket : public SSLClientSocket {
void RunCallbackAsync(const CompletionCallback& callback, int result);
void RunCallback(const CompletionCallback& callback, int result);
- base::WeakPtrFactory<MockClientSocket> weak_factory_;
-
// True if Connect completed successfully and Disconnect hasn't been called.
bool connected_;
@@ -669,20 +714,27 @@ class MockClientSocket : public SSLClientSocket {
IPEndPoint peer_addr_;
BoundNetLog net_log_;
+
+ base::WeakPtrFactory<MockClientSocket> weak_factory_;
+
+ DISALLOW_COPY_AND_ASSIGN(MockClientSocket);
};
class MockTCPClientSocket : public MockClientSocket, public AsyncSocket {
public:
- MockTCPClientSocket(const AddressList& addresses, net::NetLog* net_log,
+ MockTCPClientSocket(const AddressList& addresses,
+ net::NetLog* net_log,
SocketDataProvider* socket);
virtual ~MockTCPClientSocket();
const AddressList& addresses() const { return addresses_; }
// Socket implementation.
- virtual int Read(IOBuffer* buf, int buf_len,
+ virtual int Read(IOBuffer* buf,
+ int buf_len,
const CompletionCallback& callback) OVERRIDE;
- virtual int Write(IOBuffer* buf, int buf_len,
+ virtual int Write(IOBuffer* buf,
+ int buf_len,
const CompletionCallback& callback) OVERRIDE;
// StreamSocket implementation.
@@ -716,10 +768,12 @@ class MockTCPClientSocket : public MockClientSocket, public AsyncSocket {
bool peer_closed_connection_;
// While an asynchronous IO is pending, we save our user-buffer state.
- IOBuffer* pending_buf_;
+ scoped_refptr<IOBuffer> pending_buf_;
int pending_buf_len_;
CompletionCallback pending_callback_;
bool was_used_to_convey_data_;
+
+ DISALLOW_COPY_AND_ASSIGN(MockTCPClientSocket);
};
// DeterministicSocketHelper is a helper class that can be used
@@ -740,10 +794,8 @@ class DeterministicSocketHelper {
void CompleteWrite();
int CompleteRead();
- int Write(IOBuffer* buf, int buf_len,
- const CompletionCallback& callback);
- int Read(IOBuffer* buf, int buf_len,
- const CompletionCallback& callback);
+ int Write(IOBuffer* buf, int buf_len, const CompletionCallback& callback);
+ int Read(IOBuffer* buf, int buf_len, const CompletionCallback& callback);
const BoundNetLog& net_log() const { return net_log_; }
@@ -788,9 +840,11 @@ class DeterministicMockUDPClientSocket
virtual int CompleteRead() OVERRIDE;
// Socket implementation.
- virtual int Read(IOBuffer* buf, int buf_len,
+ virtual int Read(IOBuffer* buf,
+ int buf_len,
const CompletionCallback& callback) OVERRIDE;
- virtual int Write(IOBuffer* buf, int buf_len,
+ virtual int Write(IOBuffer* buf,
+ int buf_len,
const CompletionCallback& callback) OVERRIDE;
virtual bool SetReceiveBufferSize(int32 size) OVERRIDE;
virtual bool SetSendBufferSize(int32 size) OVERRIDE;
@@ -812,6 +866,8 @@ class DeterministicMockUDPClientSocket
bool connected_;
IPEndPoint peer_address_;
DeterministicSocketHelper helper_;
+
+ DISALLOW_COPY_AND_ASSIGN(DeterministicMockUDPClientSocket);
};
// Mock TCP socket to be used in conjunction with DeterministicSocketData.
@@ -832,9 +888,11 @@ class DeterministicMockTCPClientSocket
virtual int CompleteRead() OVERRIDE;
// Socket:
- virtual int Write(IOBuffer* buf, int buf_len,
+ virtual int Write(IOBuffer* buf,
+ int buf_len,
const CompletionCallback& callback) OVERRIDE;
- virtual int Read(IOBuffer* buf, int buf_len,
+ virtual int Read(IOBuffer* buf,
+ int buf_len,
const CompletionCallback& callback) OVERRIDE;
// StreamSocket:
@@ -853,21 +911,24 @@ class DeterministicMockTCPClientSocket
private:
DeterministicSocketHelper helper_;
+
+ DISALLOW_COPY_AND_ASSIGN(DeterministicMockTCPClientSocket);
};
class MockSSLClientSocket : public MockClientSocket, public AsyncSocket {
public:
- MockSSLClientSocket(
- scoped_ptr<ClientSocketHandle> transport_socket,
- const HostPortPair& host_and_port,
- const SSLConfig& ssl_config,
- SSLSocketDataProvider* socket);
+ MockSSLClientSocket(scoped_ptr<ClientSocketHandle> transport_socket,
+ const HostPortPair& host_and_port,
+ const SSLConfig& ssl_config,
+ SSLSocketDataProvider* socket);
virtual ~MockSSLClientSocket();
// Socket implementation.
- virtual int Read(IOBuffer* buf, int buf_len,
+ virtual int Read(IOBuffer* buf,
+ int buf_len,
const CompletionCallback& callback) OVERRIDE;
- virtual int Write(IOBuffer* buf, int buf_len,
+ virtual int Write(IOBuffer* buf,
+ int buf_len,
const CompletionCallback& callback) OVERRIDE;
// StreamSocket implementation.
@@ -881,13 +942,12 @@ class MockSSLClientSocket : public MockClientSocket, public AsyncSocket {
virtual bool GetSSLInfo(SSLInfo* ssl_info) OVERRIDE;
// SSLClientSocket implementation.
- virtual void GetSSLCertRequestInfo(
- SSLCertRequestInfo* cert_request_info) OVERRIDE;
+ virtual void GetSSLCertRequestInfo(SSLCertRequestInfo* cert_request_info)
+ OVERRIDE;
virtual NextProtoStatus GetNextProto(std::string* proto,
std::string* server_protos) OVERRIDE;
virtual bool set_was_npn_negotiated(bool negotiated) OVERRIDE;
- virtual void set_protocol_negotiated(
- NextProto protocol_negotiated) OVERRIDE;
+ virtual void set_protocol_negotiated(NextProto protocol_negotiated) OVERRIDE;
virtual NextProto GetNegotiatedProtocol() const OVERRIDE;
// This MockSocket does not implement the manual async IO feature.
@@ -899,7 +959,7 @@ class MockSSLClientSocket : public MockClientSocket, public AsyncSocket {
virtual ServerBoundCertService* GetServerBoundCertService() const OVERRIDE;
private:
- static void ConnectCallback(MockSSLClientSocket *ssl_client_socket,
+ static void ConnectCallback(MockSSLClientSocket* ssl_client_socket,
const CompletionCallback& callback,
int rv);
@@ -909,19 +969,21 @@ class MockSSLClientSocket : public MockClientSocket, public AsyncSocket {
bool new_npn_value_;
bool is_protocol_negotiated_set_;
NextProto protocol_negotiated_;
+
+ DISALLOW_COPY_AND_ASSIGN(MockSSLClientSocket);
};
-class MockUDPClientSocket
- : public DatagramClientSocket,
- public AsyncSocket {
+class MockUDPClientSocket : public DatagramClientSocket, public AsyncSocket {
public:
MockUDPClientSocket(SocketDataProvider* data, net::NetLog* net_log);
virtual ~MockUDPClientSocket();
// Socket implementation.
- virtual int Read(IOBuffer* buf, int buf_len,
+ virtual int Read(IOBuffer* buf,
+ int buf_len,
const CompletionCallback& callback) OVERRIDE;
- virtual int Write(IOBuffer* buf, int buf_len,
+ virtual int Write(IOBuffer* buf,
+ int buf_len,
const CompletionCallback& callback) OVERRIDE;
virtual bool SetReceiveBufferSize(int32 size) OVERRIDE;
virtual bool SetSendBufferSize(int32 size) OVERRIDE;
@@ -955,7 +1017,7 @@ class MockUDPClientSocket
IPEndPoint peer_addr_;
// While an asynchronous IO is pending, we save our user-buffer state.
- IOBuffer* pending_buf_;
+ scoped_refptr<IOBuffer> pending_buf_;
int pending_buf_len_;
CompletionCallback pending_callback_;
@@ -1009,12 +1071,15 @@ class ClientSocketPoolTest {
RequestPriority priority,
const scoped_refptr<typename PoolType::SocketParams>& socket_params) {
DCHECK(socket_pool);
- TestSocketRequest* request = new TestSocketRequest(&request_order_,
- &completion_count_);
+ TestSocketRequest* request =
+ new TestSocketRequest(&request_order_, &completion_count_);
requests_.push_back(request);
- int rv = request->handle()->Init(
- group_name, socket_params, priority, request->callback(),
- socket_pool, BoundNetLog());
+ int rv = request->handle()->Init(group_name,
+ socket_params,
+ priority,
+ request->callback(),
+ socket_pool,
+ BoundNetLog());
if (rv != ERR_IO_PENDING)
request_order_.push_back(request);
return rv;
@@ -1045,6 +1110,8 @@ class ClientSocketPoolTest {
ScopedVector<TestSocketRequest> requests_;
std::vector<TestSocketRequest*> request_order_;
size_t completion_count_;
+
+ DISALLOW_COPY_AND_ASSIGN(ClientSocketPoolTest);
};
class MockTransportSocketParams
@@ -1052,6 +1119,8 @@ class MockTransportSocketParams
private:
friend class base::RefCounted<MockTransportSocketParams>;
~MockTransportSocketParams() {}
+
+ DISALLOW_COPY_AND_ASSIGN(MockTransportSocketParams);
};
class MockTransportClientSocketPool : public TransportClientSocketPool {
@@ -1060,7 +1129,8 @@ class MockTransportClientSocketPool : public TransportClientSocketPool {
class MockConnectJob {
public:
- MockConnectJob(scoped_ptr<StreamSocket> socket, ClientSocketHandle* handle,
+ MockConnectJob(scoped_ptr<StreamSocket> socket,
+ ClientSocketHandle* handle,
const CompletionCallback& callback);
~MockConnectJob();
@@ -1077,11 +1147,10 @@ class MockTransportClientSocketPool : public TransportClientSocketPool {
DISALLOW_COPY_AND_ASSIGN(MockConnectJob);
};
- MockTransportClientSocketPool(
- int max_sockets,
- int max_sockets_per_group,
- ClientSocketPoolHistograms* histograms,
- ClientSocketFactory* socket_factory);
+ MockTransportClientSocketPool(int max_sockets,
+ int max_sockets_per_group,
+ ClientSocketPoolHistograms* histograms,
+ ClientSocketFactory* socket_factory);
virtual ~MockTransportClientSocketPool();
@@ -1163,15 +1232,16 @@ class DeterministicMockClientSocketFactory : public ClientSocketFactory {
std::vector<DeterministicMockTCPClientSocket*> tcp_client_sockets_;
std::vector<DeterministicMockUDPClientSocket*> udp_client_sockets_;
std::vector<MockSSLClientSocket*> ssl_client_sockets_;
+
+ DISALLOW_COPY_AND_ASSIGN(DeterministicMockClientSocketFactory);
};
class MockSOCKSClientSocketPool : public SOCKSClientSocketPool {
public:
- MockSOCKSClientSocketPool(
- int max_sockets,
- int max_sockets_per_group,
- ClientSocketPoolHistograms* histograms,
- TransportClientSocketPool* transport_pool);
+ MockSOCKSClientSocketPool(int max_sockets,
+ int max_sockets_per_group,
+ ClientSocketPoolHistograms* histograms,
+ TransportClientSocketPool* transport_pool);
virtual ~MockSOCKSClientSocketPool();