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

Side by Side Diff: net/socket/socket_test_util.h

Issue 10796085: Give MockRead and MockWrite distinct types. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase and fix compile. Created 8 years, 4 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 7
8 #include <cstring> 8 #include <cstring>
9 #include <deque> 9 #include <deque>
10 #include <string> 10 #include <string>
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 // |peer_addr| 192.0.2.33. 65 // |peer_addr| 192.0.2.33.
66 MockConnect(IoMode io_mode, int r); 66 MockConnect(IoMode io_mode, int r);
67 MockConnect(IoMode io_mode, int r, IPEndPoint addr); 67 MockConnect(IoMode io_mode, int r, IPEndPoint addr);
68 ~MockConnect(); 68 ~MockConnect();
69 69
70 IoMode mode; 70 IoMode mode;
71 int result; 71 int result;
72 IPEndPoint peer_addr; 72 IPEndPoint peer_addr;
73 }; 73 };
74 74
75 struct MockRead { 75 // MockRead and MockWrite shares the same interface and members, but we'd like
76 // to have distinct types because we don't want to have them used
77 // interchangably. To do this, a struct template is defined, and MockRead and
78 // MockWrite are instantiated by using this template. Template parameter |type|
79 // is not used in the struct definition (it purely exists for creating a new
80 // type).
81 //
82 // |data| in MockRead and MockWrite has different meanings: |data| in MockRead
83 // is the data returned from the socket when MockTCPClientSocket::Read() is
84 // attempted, while |data| in MockWrite is the expected data that should be
85 // given in MockTCPClientSocket::Write().
86 enum MockReadWriteType {
87 MOCK_READ,
88 MOCK_WRITE
89 };
90
91 template <MockReadWriteType type>
92 struct MockReadWrite {
76 // Flag to indicate that the message loop should be terminated. 93 // Flag to indicate that the message loop should be terminated.
77 enum { 94 enum {
78 STOPLOOP = 1 << 31 95 STOPLOOP = 1 << 31
79 }; 96 };
80 97
81 // Default 98 // Default
82 MockRead() : mode(SYNCHRONOUS), result(0), data(NULL), data_len(0), 99 MockReadWrite() : mode(SYNCHRONOUS), result(0), data(NULL), data_len(0),
83 sequence_number(0), time_stamp(base::Time::Now()) {} 100 sequence_number(0), time_stamp(base::Time::Now()) {}
84 101
85 // Read failure (no data). 102 // Read/write failure (no data).
86 MockRead(IoMode io_mode, int result) : mode(io_mode), result(result), 103 MockReadWrite(IoMode io_mode, int result) : mode(io_mode), result(result),
87 data(NULL), data_len(0), sequence_number(0), 104 data(NULL), data_len(0), sequence_number(0),
88 time_stamp(base::Time::Now()) { } 105 time_stamp(base::Time::Now()) { }
89 106
90 // Read failure (no data), with sequence information. 107 // Read/write failure (no data), with sequence information.
91 MockRead(IoMode io_mode, int result, int seq) : mode(io_mode), 108 MockReadWrite(IoMode io_mode, int result, int seq) : mode(io_mode),
92 result(result), data(NULL), data_len(0), sequence_number(seq), 109 result(result), data(NULL), data_len(0), sequence_number(seq),
93 time_stamp(base::Time::Now()) { } 110 time_stamp(base::Time::Now()) { }
94 111
95 // Asynchronous read success (inferred data length). 112 // Asynchronous read/write success (inferred data length).
96 explicit MockRead(const char* data) : mode(ASYNC), result(0), data(data), 113 explicit MockReadWrite(const char* data) : mode(ASYNC), result(0),
97 data_len(strlen(data)), sequence_number(0),
98 time_stamp(base::Time::Now()) { }
99
100 // Read success (inferred data length).
101 MockRead(IoMode io_mode, const char* data) : mode(io_mode), result(0),
102 data(data), data_len(strlen(data)), sequence_number(0), 114 data(data), data_len(strlen(data)), sequence_number(0),
103 time_stamp(base::Time::Now()) { } 115 time_stamp(base::Time::Now()) { }
104 116
105 // Read success. 117 // Read/write success (inferred data length).
106 MockRead(IoMode io_mode, const char* data, int data_len) : mode(io_mode), 118 MockReadWrite(IoMode io_mode, const char* data) : mode(io_mode), result(0),
119 data(data), data_len(strlen(data)), sequence_number(0),
120 time_stamp(base::Time::Now()) { }
121
122 // Read/write success.
123 MockReadWrite(IoMode io_mode, const char* data, int data_len) : mode(io_mode),
107 result(0), data(data), data_len(data_len), sequence_number(0), 124 result(0), data(data), data_len(data_len), sequence_number(0),
108 time_stamp(base::Time::Now()) { } 125 time_stamp(base::Time::Now()) { }
109 126
110 // Read success (inferred data length) with sequence information. 127 // Read/write success (inferred data length) with sequence information.
111 MockRead(IoMode io_mode, int seq, const char* data) : mode(io_mode), 128 MockReadWrite(IoMode io_mode, int seq, const char* data) : mode(io_mode),
112 result(0), data(data), data_len(strlen(data)), sequence_number(seq), 129 result(0), data(data), data_len(strlen(data)), sequence_number(seq),
113 time_stamp(base::Time::Now()) { } 130 time_stamp(base::Time::Now()) { }
114 131
115 // Read success with sequence information. 132 // Read/write success with sequence information.
116 MockRead(IoMode io_mode, const char* data, int data_len, int seq) : 133 MockReadWrite(IoMode io_mode, const char* data, int data_len, int seq) :
117 mode(io_mode), result(0), data(data), data_len(data_len), 134 mode(io_mode), result(0), data(data), data_len(data_len),
118 sequence_number(seq), time_stamp(base::Time::Now()) { } 135 sequence_number(seq), time_stamp(base::Time::Now()) { }
119 136
120 IoMode mode; 137 IoMode mode;
121 int result; 138 int result;
122 const char* data; 139 const char* data;
123 int data_len; 140 int data_len;
124 141
125 // For OrderedSocketData, which only allows reads to occur in a particular 142 // For OrderedSocketData, which only allows reads to occur in a particular
126 // sequence. If a read occurs before the given |sequence_number| is reached, 143 // sequence. If a read occurs before the given |sequence_number| is reached,
127 // an ERR_IO_PENDING is returned. 144 // an ERR_IO_PENDING is returned.
128 int sequence_number; // The sequence number at which a read is allowed 145 int sequence_number; // The sequence number at which a read is allowed
129 // to occur. 146 // to occur.
130 base::Time time_stamp; // The time stamp at which the operation occurred. 147 base::Time time_stamp; // The time stamp at which the operation occurred.
131 }; 148 };
132 149
133 // MockWrite uses the same member fields as MockRead, but with different 150 typedef MockReadWrite<MOCK_READ> MockRead;
134 // meanings. The expected input to MockTCPClientSocket::Write() is given 151 typedef MockReadWrite<MOCK_WRITE> MockWrite;
135 // by {data, data_len}, and the return value of Write() is controlled by
136 // {async, result}.
137 typedef MockRead MockWrite;
138 152
139 struct MockWriteResult { 153 struct MockWriteResult {
140 MockWriteResult(IoMode io_mode, int result) 154 MockWriteResult(IoMode io_mode, int result)
141 : mode(io_mode), 155 : mode(io_mode),
142 result(result) {} 156 result(result) {}
143 157
144 IoMode mode; 158 IoMode mode;
145 int result; 159 int result;
146 }; 160 };
147 161
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 void RunFor(int steps); 468 void RunFor(int steps);
455 469
456 // Stop at step |seq|, which must be in the future. 470 // Stop at step |seq|, which must be in the future.
457 virtual void SetStop(int seq); 471 virtual void SetStop(int seq);
458 472
459 // Stop |seq| steps after the current step. 473 // Stop |seq| steps after the current step.
460 virtual void StopAfter(int seq); 474 virtual void StopAfter(int seq);
461 bool stopped() const { return stopped_; } 475 bool stopped() const { return stopped_; }
462 void SetStopped(bool val) { stopped_ = val; } 476 void SetStopped(bool val) { stopped_ = val; }
463 MockRead& current_read() { return current_read_; } 477 MockRead& current_read() { return current_read_; }
464 MockRead& current_write() { return current_write_; } 478 MockWrite& current_write() { return current_write_; }
465 int sequence_number() const { return sequence_number_; } 479 int sequence_number() const { return sequence_number_; }
466 void set_socket(base::WeakPtr<DeterministicMockTCPClientSocket> socket) { 480 void set_socket(base::WeakPtr<DeterministicMockTCPClientSocket> socket) {
467 socket_ = socket; 481 socket_ = socket;
468 } 482 }
469 483
470 // StaticSocketDataProvider: 484 // StaticSocketDataProvider:
471 485
472 // When the socket calls Read(), that calls GetNextRead(), and expects either 486 // When the socket calls Read(), that calls GetNextRead(), and expects either
473 // ERR_IO_PENDING or data. 487 // ERR_IO_PENDING or data.
474 virtual MockRead GetNextRead() OVERRIDE; 488 virtual MockRead GetNextRead() OVERRIDE;
(...skipping 578 matching lines...) Expand 10 before | Expand all | Expand 10 after
1053 1067
1054 extern const char kSOCKS5OkRequest[]; 1068 extern const char kSOCKS5OkRequest[];
1055 extern const int kSOCKS5OkRequestLength; 1069 extern const int kSOCKS5OkRequestLength;
1056 1070
1057 extern const char kSOCKS5OkResponse[]; 1071 extern const char kSOCKS5OkResponse[];
1058 extern const int kSOCKS5OkResponseLength; 1072 extern const int kSOCKS5OkResponseLength;
1059 1073
1060 } // namespace net 1074 } // namespace net
1061 1075
1062 #endif // NET_SOCKET_SOCKET_TEST_UTIL_H_ 1076 #endif // NET_SOCKET_SOCKET_TEST_UTIL_H_
OLDNEW
« no previous file with comments | « net/http/http_proxy_client_socket_pool_spdy3_unittest.cc ('k') | net/socket/socket_test_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698