| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef REMOTING_PROTOCOL_CONNECTION_TESTER_H_ |
| #define REMOTING_PROTOCOL_CONNECTION_TESTER_H_ |
| |
| #include <vector> |
| |
| #include "base/memory/ref_counted.h" |
| |
| namespace base { |
| class MessageLoop; |
| } |
| |
| namespace net { |
| class DrainableIOBuffer; |
| class GrowableIOBuffer; |
| class IOBuffer; |
| class Socket; |
| class StreamSocket; |
| } // namespace net |
| |
| namespace remoting { |
| namespace protocol { |
| |
| // This class is used by unit tests to verify that a connection |
| // between two sockets works properly, i.e. data is delivered from one |
| // end to the other. |
| class StreamConnectionTester { |
| public: |
| StreamConnectionTester(net::StreamSocket* client_socket, |
| net::StreamSocket* host_socket, |
| int message_size, |
| int message_count); |
| ~StreamConnectionTester(); |
| |
| void Start(); |
| bool done() { return done_; } |
| void CheckResults(); |
| |
| protected: |
| void Done(); |
| void InitBuffers(); |
| void DoWrite(); |
| void OnWritten(int result); |
| void HandleWriteResult(int result); |
| void DoRead(); |
| void OnRead(int result); |
| void HandleReadResult(int result); |
| |
| private: |
| base::MessageLoop* message_loop_; |
| net::StreamSocket* host_socket_; |
| net::StreamSocket* client_socket_; |
| int message_size_; |
| int test_data_size_; |
| bool done_; |
| |
| scoped_refptr<net::DrainableIOBuffer> output_buffer_; |
| scoped_refptr<net::GrowableIOBuffer> input_buffer_; |
| |
| int write_errors_; |
| int read_errors_; |
| }; |
| |
| class DatagramConnectionTester { |
| public: |
| DatagramConnectionTester(net::Socket* client_socket, |
| net::Socket* host_socket, |
| int message_size, |
| int message_count, |
| int delay_ms); |
| ~DatagramConnectionTester() ; |
| |
| void Start(); |
| void CheckResults(); |
| |
| private: |
| void Done(); |
| void DoWrite(); |
| void OnWritten(int result); |
| void HandleWriteResult(int result); |
| void DoRead(); |
| void OnRead(int result); |
| void HandleReadResult(int result); |
| |
| base::MessageLoop* message_loop_; |
| net::Socket* host_socket_; |
| net::Socket* client_socket_; |
| int message_size_; |
| int message_count_; |
| int delay_ms_; |
| bool done_; |
| |
| std::vector<scoped_refptr<net::IOBuffer> > sent_packets_; |
| scoped_refptr<net::IOBuffer> read_buffer_; |
| |
| int write_errors_; |
| int read_errors_; |
| int packets_sent_; |
| int packets_received_; |
| int bad_packets_received_; |
| }; |
| |
| } // namespace protocol |
| } // namespace remoting |
| |
| #endif // REMOTING_PROTOCOL_CONNECTION_TESTER_H_ |