diff options
Diffstat (limited to 'chromium/net/socket/socket_test_util.h')
-rw-r--r-- | chromium/net/socket/socket_test_util.h | 288 |
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(); |