| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef NET_SOCKET_SOCKET_TEST_UTIL_H_ | 5 #ifndef NET_SOCKET_SOCKET_TEST_UTIL_H_ |
| 6 #define NET_SOCKET_SOCKET_TEST_UTIL_H_ | 6 #define NET_SOCKET_SOCKET_TEST_UTIL_H_ |
| 7 #pragma once | 7 #pragma once |
| 8 | 8 |
| 9 #include <cstring> | 9 #include <cstring> |
| 10 #include <deque> | 10 #include <deque> |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 size_t read_index() const { return read_index_; } | 191 size_t read_index() const { return read_index_; } |
| 192 size_t write_index() const { return write_index_; } | 192 size_t write_index() const { return write_index_; } |
| 193 size_t read_count() const { return read_count_; } | 193 size_t read_count() const { return read_count_; } |
| 194 size_t write_count() const { return write_count_; } | 194 size_t write_count() const { return write_count_; } |
| 195 | 195 |
| 196 bool at_read_eof() const { return read_index_ >= read_count_; } | 196 bool at_read_eof() const { return read_index_ >= read_count_; } |
| 197 bool at_write_eof() const { return write_index_ >= write_count_; } | 197 bool at_write_eof() const { return write_index_ >= write_count_; } |
| 198 | 198 |
| 199 virtual void CompleteRead() {} | 199 virtual void CompleteRead() {} |
| 200 | 200 |
| 201 // SocketDataProvider methods: | 201 // SocketDataProvider implementation. |
| 202 virtual MockRead GetNextRead() OVERRIDE; | 202 virtual MockRead GetNextRead() OVERRIDE; |
| 203 virtual MockWriteResult OnWrite(const std::string& data) OVERRIDE; | 203 virtual MockWriteResult OnWrite(const std::string& data) OVERRIDE; |
| 204 virtual void Reset() OVERRIDE; | 204 virtual void Reset() OVERRIDE; |
| 205 | 205 |
| 206 private: | 206 private: |
| 207 MockRead* reads_; | 207 MockRead* reads_; |
| 208 size_t read_index_; | 208 size_t read_index_; |
| 209 size_t read_count_; | 209 size_t read_count_; |
| 210 MockWrite* writes_; | 210 MockWrite* writes_; |
| 211 size_t write_index_; | 211 size_t write_index_; |
| 212 size_t write_count_; | 212 size_t write_count_; |
| 213 | 213 |
| 214 DISALLOW_COPY_AND_ASSIGN(StaticSocketDataProvider); | 214 DISALLOW_COPY_AND_ASSIGN(StaticSocketDataProvider); |
| 215 }; | 215 }; |
| 216 | 216 |
| 217 // SocketDataProvider which can make decisions about next mock reads based on | 217 // SocketDataProvider which can make decisions about next mock reads based on |
| 218 // received writes. It can also be used to enforce order of operations, for | 218 // received writes. It can also be used to enforce order of operations, for |
| 219 // example that tested code must send the "Hello!" message before receiving | 219 // example that tested code must send the "Hello!" message before receiving |
| 220 // response. This is useful for testing conversation-like protocols like FTP. | 220 // response. This is useful for testing conversation-like protocols like FTP. |
| 221 class DynamicSocketDataProvider : public SocketDataProvider { | 221 class DynamicSocketDataProvider : public SocketDataProvider { |
| 222 public: | 222 public: |
| 223 DynamicSocketDataProvider(); | 223 DynamicSocketDataProvider(); |
| 224 virtual ~DynamicSocketDataProvider(); | 224 virtual ~DynamicSocketDataProvider(); |
| 225 | 225 |
| 226 int short_read_limit() const { return short_read_limit_; } | 226 int short_read_limit() const { return short_read_limit_; } |
| 227 void set_short_read_limit(int limit) { short_read_limit_ = limit; } | 227 void set_short_read_limit(int limit) { short_read_limit_ = limit; } |
| 228 | 228 |
| 229 void allow_unconsumed_reads(bool allow) { allow_unconsumed_reads_ = allow; } | 229 void allow_unconsumed_reads(bool allow) { allow_unconsumed_reads_ = allow; } |
| 230 | 230 |
| 231 // SocketDataProvider methods: | 231 // SocketDataProvider implementation. |
| 232 virtual MockRead GetNextRead() OVERRIDE; | 232 virtual MockRead GetNextRead() OVERRIDE; |
| 233 virtual MockWriteResult OnWrite(const std::string& data) = 0; | 233 virtual MockWriteResult OnWrite(const std::string& data) = 0; |
| 234 virtual void Reset() OVERRIDE; | 234 virtual void Reset() OVERRIDE; |
| 235 | 235 |
| 236 protected: | 236 protected: |
| 237 // The next time there is a read from this socket, it will return |data|. | 237 // The next time there is a read from this socket, it will return |data|. |
| 238 // Before calling SimulateRead next time, the previous data must be consumed. | 238 // Before calling SimulateRead next time, the previous data must be consumed. |
| 239 void SimulateRead(const char* data, size_t length); | 239 void SimulateRead(const char* data, size_t length); |
| 240 void SimulateRead(const char* data) { | 240 void SimulateRead(const char* data) { |
| 241 SimulateRead(data, std::strlen(data)); | 241 SimulateRead(data, std::strlen(data)); |
| (...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 576 // Store pointers to handed out sockets in case the test wants to get them. | 576 // Store pointers to handed out sockets in case the test wants to get them. |
| 577 std::vector<MockUDPClientSocket*> udp_client_sockets_; | 577 std::vector<MockUDPClientSocket*> udp_client_sockets_; |
| 578 std::vector<MockTCPClientSocket*> tcp_client_sockets_; | 578 std::vector<MockTCPClientSocket*> tcp_client_sockets_; |
| 579 std::vector<MockSSLClientSocket*> ssl_client_sockets_; | 579 std::vector<MockSSLClientSocket*> ssl_client_sockets_; |
| 580 }; | 580 }; |
| 581 | 581 |
| 582 class MockClientSocket : public net::SSLClientSocket { | 582 class MockClientSocket : public net::SSLClientSocket { |
| 583 public: | 583 public: |
| 584 explicit MockClientSocket(net::NetLog* net_log); | 584 explicit MockClientSocket(net::NetLog* net_log); |
| 585 | 585 |
| 586 // Socket methods: | 586 // Socket implementation. |
| 587 virtual int Read(net::IOBuffer* buf, int buf_len, | 587 virtual int Read(net::IOBuffer* buf, int buf_len, |
| 588 net::OldCompletionCallback* callback) = 0; | 588 net::OldCompletionCallback* callback) = 0; |
| 589 virtual int Write(net::IOBuffer* buf, int buf_len, | 589 virtual int Write(net::IOBuffer* buf, int buf_len, |
| 590 net::OldCompletionCallback* callback) = 0; | 590 net::OldCompletionCallback* callback) = 0; |
| 591 virtual bool SetReceiveBufferSize(int32 size) OVERRIDE; | 591 virtual bool SetReceiveBufferSize(int32 size) OVERRIDE; |
| 592 virtual bool SetSendBufferSize(int32 size) OVERRIDE; | 592 virtual bool SetSendBufferSize(int32 size) OVERRIDE; |
| 593 | 593 |
| 594 // StreamSocket methods: | 594 // StreamSocket implementation. |
| 595 virtual int Connect(net::OldCompletionCallback* callback) = 0; | 595 virtual int Connect(net::OldCompletionCallback* callback) = 0; |
| 596 virtual int Connect(const net::CompletionCallback& callback) = 0; |
| 596 virtual void Disconnect() OVERRIDE; | 597 virtual void Disconnect() OVERRIDE; |
| 597 virtual bool IsConnected() const OVERRIDE; | 598 virtual bool IsConnected() const OVERRIDE; |
| 598 virtual bool IsConnectedAndIdle() const OVERRIDE; | 599 virtual bool IsConnectedAndIdle() const OVERRIDE; |
| 599 virtual int GetPeerAddress(AddressList* address) const OVERRIDE; | 600 virtual int GetPeerAddress(AddressList* address) const OVERRIDE; |
| 600 virtual int GetLocalAddress(IPEndPoint* address) const OVERRIDE; | 601 virtual int GetLocalAddress(IPEndPoint* address) const OVERRIDE; |
| 601 virtual const BoundNetLog& NetLog() const OVERRIDE; | 602 virtual const BoundNetLog& NetLog() const OVERRIDE; |
| 602 virtual void SetSubresourceSpeculation() OVERRIDE {} | 603 virtual void SetSubresourceSpeculation() OVERRIDE {} |
| 603 virtual void SetOmniboxSpeculation() OVERRIDE {} | 604 virtual void SetOmniboxSpeculation() OVERRIDE {} |
| 604 | 605 |
| 605 // SSLClientSocket methods: | 606 // SSLClientSocket implementation. |
| 606 virtual void GetSSLInfo(net::SSLInfo* ssl_info) OVERRIDE; | 607 virtual void GetSSLInfo(net::SSLInfo* ssl_info) OVERRIDE; |
| 607 virtual void GetSSLCertRequestInfo( | 608 virtual void GetSSLCertRequestInfo( |
| 608 net::SSLCertRequestInfo* cert_request_info) OVERRIDE; | 609 net::SSLCertRequestInfo* cert_request_info) OVERRIDE; |
| 609 virtual int ExportKeyingMaterial(const base::StringPiece& label, | 610 virtual int ExportKeyingMaterial(const base::StringPiece& label, |
| 610 const base::StringPiece& context, | 611 const base::StringPiece& context, |
| 611 unsigned char *out, | 612 unsigned char *out, |
| 612 unsigned int outlen) OVERRIDE; | 613 unsigned int outlen) OVERRIDE; |
| 613 virtual NextProtoStatus GetNextProto(std::string* proto) OVERRIDE; | 614 virtual NextProtoStatus GetNextProto(std::string* proto) OVERRIDE; |
| 614 | 615 |
| 615 protected: | 616 protected: |
| 616 virtual ~MockClientSocket(); | 617 virtual ~MockClientSocket(); |
| 617 void RunCallbackAsync(net::OldCompletionCallback* callback, int result); | 618 void RunCallbackAsync(net::OldCompletionCallback* callback, int result); |
| 618 void RunCallback(net::OldCompletionCallback*, int result); | 619 void RunCallbackAsync(const net::CompletionCallback& callback, int result); |
| 620 void RunOldCallback(net::OldCompletionCallback*, int result); |
| 621 void RunCallback(const net::CompletionCallback&, int result); |
| 619 | 622 |
| 620 ScopedRunnableMethodFactory<MockClientSocket> method_factory_; | 623 base::WeakPtrFactory<MockClientSocket> weak_factory_; |
| 621 | 624 |
| 622 // True if Connect completed successfully and Disconnect hasn't been called. | 625 // True if Connect completed successfully and Disconnect hasn't been called. |
| 623 bool connected_; | 626 bool connected_; |
| 624 | 627 |
| 625 net::BoundNetLog net_log_; | 628 net::BoundNetLog net_log_; |
| 626 }; | 629 }; |
| 627 | 630 |
| 628 class MockTCPClientSocket : public MockClientSocket, public AsyncSocket { | 631 class MockTCPClientSocket : public MockClientSocket, public AsyncSocket { |
| 629 public: | 632 public: |
| 630 MockTCPClientSocket(const net::AddressList& addresses, net::NetLog* net_log, | 633 MockTCPClientSocket(const net::AddressList& addresses, net::NetLog* net_log, |
| 631 net::SocketDataProvider* socket); | 634 net::SocketDataProvider* socket); |
| 632 | 635 |
| 633 net::AddressList addresses() const { return addresses_; } | 636 net::AddressList addresses() const { return addresses_; } |
| 634 | 637 |
| 635 // Socket methods: | 638 // Socket implementation. |
| 636 virtual int Read(net::IOBuffer* buf, int buf_len, | 639 virtual int Read(net::IOBuffer* buf, int buf_len, |
| 637 net::OldCompletionCallback* callback) OVERRIDE; | 640 net::OldCompletionCallback* callback) OVERRIDE; |
| 638 virtual int Write(net::IOBuffer* buf, int buf_len, | 641 virtual int Write(net::IOBuffer* buf, int buf_len, |
| 639 net::OldCompletionCallback* callback) OVERRIDE; | 642 net::OldCompletionCallback* callback) OVERRIDE; |
| 640 | 643 |
| 641 // StreamSocket methods: | 644 // StreamSocket implementation. |
| 642 virtual int Connect(net::OldCompletionCallback* callback) OVERRIDE; | 645 virtual int Connect(net::OldCompletionCallback* callback) OVERRIDE; |
| 646 virtual int Connect(const net::CompletionCallback& callback) OVERRIDE; |
| 643 virtual void Disconnect() OVERRIDE; | 647 virtual void Disconnect() OVERRIDE; |
| 644 virtual bool IsConnected() const OVERRIDE; | 648 virtual bool IsConnected() const OVERRIDE; |
| 645 virtual bool IsConnectedAndIdle() const OVERRIDE; | 649 virtual bool IsConnectedAndIdle() const OVERRIDE; |
| 646 virtual int GetPeerAddress(AddressList* address) const OVERRIDE; | 650 virtual int GetPeerAddress(AddressList* address) const OVERRIDE; |
| 647 virtual bool WasEverUsed() const OVERRIDE; | 651 virtual bool WasEverUsed() const OVERRIDE; |
| 648 virtual bool UsingTCPFastOpen() const OVERRIDE; | 652 virtual bool UsingTCPFastOpen() const OVERRIDE; |
| 649 virtual int64 NumBytesRead() const OVERRIDE; | 653 virtual int64 NumBytesRead() const OVERRIDE; |
| 650 virtual base::TimeDelta GetConnectTimeMicros() const OVERRIDE; | 654 virtual base::TimeDelta GetConnectTimeMicros() const OVERRIDE; |
| 651 | 655 |
| 652 // AsyncSocket: | 656 // AsyncSocket: |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 688 | 692 |
| 689 void CompleteWrite(); | 693 void CompleteWrite(); |
| 690 int CompleteRead(); | 694 int CompleteRead(); |
| 691 | 695 |
| 692 // Socket: | 696 // Socket: |
| 693 virtual int Write(net::IOBuffer* buf, int buf_len, | 697 virtual int Write(net::IOBuffer* buf, int buf_len, |
| 694 net::OldCompletionCallback* callback) OVERRIDE; | 698 net::OldCompletionCallback* callback) OVERRIDE; |
| 695 virtual int Read(net::IOBuffer* buf, int buf_len, | 699 virtual int Read(net::IOBuffer* buf, int buf_len, |
| 696 net::OldCompletionCallback* callback) OVERRIDE; | 700 net::OldCompletionCallback* callback) OVERRIDE; |
| 697 | 701 |
| 698 // StreamSocket: | 702 // StreamSocket implementation. |
| 699 virtual int Connect(net::OldCompletionCallback* callback) OVERRIDE; | 703 virtual int Connect(net::OldCompletionCallback* callback) OVERRIDE; |
| 704 virtual int Connect(const net::CompletionCallback& callback) OVERRIDE; |
| 700 virtual void Disconnect() OVERRIDE; | 705 virtual void Disconnect() OVERRIDE; |
| 701 virtual bool IsConnected() const OVERRIDE; | 706 virtual bool IsConnected() const OVERRIDE; |
| 702 virtual bool IsConnectedAndIdle() const OVERRIDE; | 707 virtual bool IsConnectedAndIdle() const OVERRIDE; |
| 703 virtual bool WasEverUsed() const OVERRIDE; | 708 virtual bool WasEverUsed() const OVERRIDE; |
| 704 virtual bool UsingTCPFastOpen() const OVERRIDE; | 709 virtual bool UsingTCPFastOpen() const OVERRIDE; |
| 705 virtual int64 NumBytesRead() const OVERRIDE; | 710 virtual int64 NumBytesRead() const OVERRIDE; |
| 706 virtual base::TimeDelta GetConnectTimeMicros() const OVERRIDE; | 711 virtual base::TimeDelta GetConnectTimeMicros() const OVERRIDE; |
| 707 | 712 |
| 708 // AsyncSocket: | 713 // AsyncSocket: |
| 709 virtual void OnReadComplete(const MockRead& data) OVERRIDE; | 714 virtual void OnReadComplete(const MockRead& data) OVERRIDE; |
| (...skipping 16 matching lines...) Expand all Loading... |
| 726 class MockSSLClientSocket : public MockClientSocket, public AsyncSocket { | 731 class MockSSLClientSocket : public MockClientSocket, public AsyncSocket { |
| 727 public: | 732 public: |
| 728 MockSSLClientSocket( | 733 MockSSLClientSocket( |
| 729 net::ClientSocketHandle* transport_socket, | 734 net::ClientSocketHandle* transport_socket, |
| 730 const HostPortPair& host_and_port, | 735 const HostPortPair& host_and_port, |
| 731 const net::SSLConfig& ssl_config, | 736 const net::SSLConfig& ssl_config, |
| 732 SSLHostInfo* ssl_host_info, | 737 SSLHostInfo* ssl_host_info, |
| 733 net::SSLSocketDataProvider* socket); | 738 net::SSLSocketDataProvider* socket); |
| 734 virtual ~MockSSLClientSocket(); | 739 virtual ~MockSSLClientSocket(); |
| 735 | 740 |
| 736 // Socket methods: | 741 // Socket implementation. |
| 737 virtual int Read(net::IOBuffer* buf, int buf_len, | 742 virtual int Read(net::IOBuffer* buf, int buf_len, |
| 738 net::OldCompletionCallback* callback) OVERRIDE; | 743 net::OldCompletionCallback* callback) OVERRIDE; |
| 739 virtual int Write(net::IOBuffer* buf, int buf_len, | 744 virtual int Write(net::IOBuffer* buf, int buf_len, |
| 740 net::OldCompletionCallback* callback) OVERRIDE; | 745 net::OldCompletionCallback* callback) OVERRIDE; |
| 741 | 746 |
| 742 // StreamSocket methods: | 747 // StreamSocket implementation. |
| 743 virtual int Connect(net::OldCompletionCallback* callback) OVERRIDE; | 748 virtual int Connect(net::OldCompletionCallback* callback) OVERRIDE; |
| 749 virtual int Connect(const net::CompletionCallback& callback) OVERRIDE; |
| 744 virtual void Disconnect() OVERRIDE; | 750 virtual void Disconnect() OVERRIDE; |
| 745 virtual bool IsConnected() const OVERRIDE; | 751 virtual bool IsConnected() const OVERRIDE; |
| 746 virtual bool WasEverUsed() const OVERRIDE; | 752 virtual bool WasEverUsed() const OVERRIDE; |
| 747 virtual bool UsingTCPFastOpen() const OVERRIDE; | 753 virtual bool UsingTCPFastOpen() const OVERRIDE; |
| 748 virtual int64 NumBytesRead() const OVERRIDE; | 754 virtual int64 NumBytesRead() const OVERRIDE; |
| 749 virtual base::TimeDelta GetConnectTimeMicros() const OVERRIDE; | 755 virtual base::TimeDelta GetConnectTimeMicros() const OVERRIDE; |
| 750 | 756 |
| 751 // SSLClientSocket methods: | 757 // SSLClientSocket implementation. |
| 752 virtual void GetSSLInfo(net::SSLInfo* ssl_info) OVERRIDE; | 758 virtual void GetSSLInfo(net::SSLInfo* ssl_info) OVERRIDE; |
| 753 virtual void GetSSLCertRequestInfo( | 759 virtual void GetSSLCertRequestInfo( |
| 754 net::SSLCertRequestInfo* cert_request_info) OVERRIDE; | 760 net::SSLCertRequestInfo* cert_request_info) OVERRIDE; |
| 755 virtual NextProtoStatus GetNextProto(std::string* proto) OVERRIDE; | 761 virtual NextProtoStatus GetNextProto(std::string* proto) OVERRIDE; |
| 756 virtual bool was_npn_negotiated() const OVERRIDE; | 762 virtual bool was_npn_negotiated() const OVERRIDE; |
| 757 virtual bool set_was_npn_negotiated(bool negotiated) OVERRIDE; | 763 virtual bool set_was_npn_negotiated(bool negotiated) OVERRIDE; |
| 758 | 764 |
| 759 // This MockSocket does not implement the manual async IO feature. | 765 // This MockSocket does not implement the manual async IO feature. |
| 760 virtual void OnReadComplete(const MockRead& data) OVERRIDE; | 766 virtual void OnReadComplete(const MockRead& data) OVERRIDE; |
| 761 | 767 |
| 762 private: | 768 private: |
| 769 class OldConnectCallback; |
| 763 class ConnectCallback; | 770 class ConnectCallback; |
| 764 | 771 |
| 765 scoped_ptr<ClientSocketHandle> transport_; | 772 scoped_ptr<ClientSocketHandle> transport_; |
| 766 net::SSLSocketDataProvider* data_; | 773 net::SSLSocketDataProvider* data_; |
| 767 bool is_npn_state_set_; | 774 bool is_npn_state_set_; |
| 768 bool new_npn_value_; | 775 bool new_npn_value_; |
| 769 bool was_used_to_convey_data_; | 776 bool was_used_to_convey_data_; |
| 770 }; | 777 }; |
| 771 | 778 |
| 772 class MockUDPClientSocket : public DatagramClientSocket, | 779 class MockUDPClientSocket : public DatagramClientSocket, |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 807 net::MockRead read_data_; | 814 net::MockRead read_data_; |
| 808 bool need_read_data_; | 815 bool need_read_data_; |
| 809 | 816 |
| 810 // While an asynchronous IO is pending, we save our user-buffer state. | 817 // While an asynchronous IO is pending, we save our user-buffer state. |
| 811 net::IOBuffer* pending_buf_; | 818 net::IOBuffer* pending_buf_; |
| 812 int pending_buf_len_; | 819 int pending_buf_len_; |
| 813 net::OldCompletionCallback* pending_callback_; | 820 net::OldCompletionCallback* pending_callback_; |
| 814 | 821 |
| 815 BoundNetLog net_log_; | 822 BoundNetLog net_log_; |
| 816 | 823 |
| 817 ScopedRunnableMethodFactory<MockUDPClientSocket> method_factory_; | 824 base::WeakPtrFactory<MockUDPClientSocket> weak_factory_; |
| 818 | 825 |
| 819 DISALLOW_COPY_AND_ASSIGN(MockUDPClientSocket); | 826 DISALLOW_COPY_AND_ASSIGN(MockUDPClientSocket); |
| 820 }; | 827 }; |
| 821 | 828 |
| 822 class TestSocketRequest : public CallbackRunner< Tuple1<int> > { | 829 class TestSocketRequest : public CallbackRunner< Tuple1<int> > { |
| 823 public: | 830 public: |
| 824 TestSocketRequest( | 831 TestSocketRequest( |
| 825 std::vector<TestSocketRequest*>* request_order, | 832 std::vector<TestSocketRequest*>* request_order, |
| 826 size_t* completion_count); | 833 size_t* completion_count); |
| 827 virtual ~TestSocketRequest(); | 834 virtual ~TestSocketRequest(); |
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1034 | 1041 |
| 1035 extern const char kSOCKS5OkRequest[]; | 1042 extern const char kSOCKS5OkRequest[]; |
| 1036 extern const int kSOCKS5OkRequestLength; | 1043 extern const int kSOCKS5OkRequestLength; |
| 1037 | 1044 |
| 1038 extern const char kSOCKS5OkResponse[]; | 1045 extern const char kSOCKS5OkResponse[]; |
| 1039 extern const int kSOCKS5OkResponseLength; | 1046 extern const int kSOCKS5OkResponseLength; |
| 1040 | 1047 |
| 1041 } // namespace net | 1048 } // namespace net |
| 1042 | 1049 |
| 1043 #endif // NET_SOCKET_SOCKET_TEST_UTIL_H_ | 1050 #endif // NET_SOCKET_SOCKET_TEST_UTIL_H_ |
| OLD | NEW |