OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 #include "net/socket/socket_test_util.h" | 5 #include "net/socket/socket_test_util.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 &MockClientSocket::RunCallback, callback, result)); | 55 &MockClientSocket::RunCallback, callback, result)); |
56 } | 56 } |
57 | 57 |
58 void MockClientSocket::RunCallback(net::CompletionCallback* callback, | 58 void MockClientSocket::RunCallback(net::CompletionCallback* callback, |
59 int result) { | 59 int result) { |
60 if (callback) | 60 if (callback) |
61 callback->Run(result); | 61 callback->Run(result); |
62 } | 62 } |
63 | 63 |
64 MockTCPClientSocket::MockTCPClientSocket(const net::AddressList& addresses, | 64 MockTCPClientSocket::MockTCPClientSocket(const net::AddressList& addresses, |
65 net::MockSocket* socket) | 65 net::SocketDataProvider* data) |
66 : addresses_(addresses), | 66 : addresses_(addresses), |
67 data_(socket), | 67 data_(data), |
68 read_offset_(0), | 68 read_offset_(0), |
69 read_data_(true, net::ERR_UNEXPECTED), | 69 read_data_(true, net::ERR_UNEXPECTED), |
70 need_read_data_(true) { | 70 need_read_data_(true) { |
71 DCHECK(data_); | 71 DCHECK(data_); |
72 data_->Reset(); | 72 data_->Reset(); |
73 } | 73 } |
74 | 74 |
75 int MockTCPClientSocket::Connect(net::CompletionCallback* callback, | 75 int MockTCPClientSocket::Connect(net::CompletionCallback* callback, |
76 LoadLog* load_log) { | 76 LoadLog* load_log) { |
77 if (connected_) | 77 if (connected_) |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 | 156 |
157 MockSSLClientSocket* ssl_client_socket_; | 157 MockSSLClientSocket* ssl_client_socket_; |
158 net::CompletionCallback* user_callback_; | 158 net::CompletionCallback* user_callback_; |
159 int rv_; | 159 int rv_; |
160 }; | 160 }; |
161 | 161 |
162 MockSSLClientSocket::MockSSLClientSocket( | 162 MockSSLClientSocket::MockSSLClientSocket( |
163 net::ClientSocket* transport_socket, | 163 net::ClientSocket* transport_socket, |
164 const std::string& hostname, | 164 const std::string& hostname, |
165 const net::SSLConfig& ssl_config, | 165 const net::SSLConfig& ssl_config, |
166 net::MockSSLSocket* socket) | 166 net::SSLSocketDataProvider* data) |
167 : transport_(transport_socket), | 167 : transport_(transport_socket), |
168 data_(socket) { | 168 data_(data) { |
169 DCHECK(data_); | 169 DCHECK(data_); |
170 } | 170 } |
171 | 171 |
172 MockSSLClientSocket::~MockSSLClientSocket() { | 172 MockSSLClientSocket::~MockSSLClientSocket() { |
173 Disconnect(); | 173 Disconnect(); |
174 } | 174 } |
175 | 175 |
176 void MockSSLClientSocket::GetSSLInfo(net::SSLInfo* ssl_info) { | 176 void MockSSLClientSocket::GetSSLInfo(net::SSLInfo* ssl_info) { |
177 ssl_info->Reset(); | 177 ssl_info->Reset(); |
178 } | 178 } |
(...skipping 25 matching lines...) Expand all Loading... |
204 int MockSSLClientSocket::Read(net::IOBuffer* buf, int buf_len, | 204 int MockSSLClientSocket::Read(net::IOBuffer* buf, int buf_len, |
205 net::CompletionCallback* callback) { | 205 net::CompletionCallback* callback) { |
206 return transport_->Read(buf, buf_len, callback); | 206 return transport_->Read(buf, buf_len, callback); |
207 } | 207 } |
208 | 208 |
209 int MockSSLClientSocket::Write(net::IOBuffer* buf, int buf_len, | 209 int MockSSLClientSocket::Write(net::IOBuffer* buf, int buf_len, |
210 net::CompletionCallback* callback) { | 210 net::CompletionCallback* callback) { |
211 return transport_->Write(buf, buf_len, callback); | 211 return transport_->Write(buf, buf_len, callback); |
212 } | 212 } |
213 | 213 |
214 MockRead StaticMockSocket::GetNextRead() { | 214 MockRead StaticSocketDataProvider::GetNextRead() { |
215 return reads_[read_index_++]; | 215 return reads_[read_index_++]; |
216 } | 216 } |
217 | 217 |
218 MockWriteResult StaticMockSocket::OnWrite(const std::string& data) { | 218 MockWriteResult StaticSocketDataProvider::OnWrite(const std::string& data) { |
219 if (!writes_) { | 219 if (!writes_) { |
220 // Not using mock writes; succeed synchronously. | 220 // Not using mock writes; succeed synchronously. |
221 return MockWriteResult(false, data.length()); | 221 return MockWriteResult(false, data.length()); |
222 } | 222 } |
223 | 223 |
224 // Check that what we are writing matches the expectation. | 224 // Check that what we are writing matches the expectation. |
225 // Then give the mocked return value. | 225 // Then give the mocked return value. |
226 net::MockWrite* w = &writes_[write_index_++]; | 226 net::MockWrite* w = &writes_[write_index_++]; |
227 int result = w->result; | 227 int result = w->result; |
228 if (w->data) { | 228 if (w->data) { |
229 std::string expected_data(w->data, w->data_len); | 229 std::string expected_data(w->data, w->data_len); |
230 EXPECT_EQ(expected_data, data); | 230 EXPECT_EQ(expected_data, data); |
231 if (expected_data != data) | 231 if (expected_data != data) |
232 return MockWriteResult(false, net::ERR_UNEXPECTED); | 232 return MockWriteResult(false, net::ERR_UNEXPECTED); |
233 if (result == net::OK) | 233 if (result == net::OK) |
234 result = w->data_len; | 234 result = w->data_len; |
235 } | 235 } |
236 return MockWriteResult(w->async, result); | 236 return MockWriteResult(w->async, result); |
237 } | 237 } |
238 | 238 |
239 void StaticMockSocket::Reset() { | 239 void StaticSocketDataProvider::Reset() { |
240 read_index_ = 0; | 240 read_index_ = 0; |
241 write_index_ = 0; | 241 write_index_ = 0; |
242 } | 242 } |
243 | 243 |
244 DynamicMockSocket::DynamicMockSocket() | 244 DynamicSocketDataProvider::DynamicSocketDataProvider() |
245 : short_read_limit_(0), | 245 : short_read_limit_(0), |
246 allow_unconsumed_reads_(false) { | 246 allow_unconsumed_reads_(false) { |
247 } | 247 } |
248 | 248 |
249 MockRead DynamicMockSocket::GetNextRead() { | 249 MockRead DynamicSocketDataProvider::GetNextRead() { |
250 if (reads_.empty()) | 250 if (reads_.empty()) |
251 return MockRead(true, ERR_UNEXPECTED); | 251 return MockRead(true, ERR_UNEXPECTED); |
252 MockRead result = reads_.front(); | 252 MockRead result = reads_.front(); |
253 if (short_read_limit_ == 0 || result.data_len <= short_read_limit_) { | 253 if (short_read_limit_ == 0 || result.data_len <= short_read_limit_) { |
254 reads_.pop_front(); | 254 reads_.pop_front(); |
255 } else { | 255 } else { |
256 result.data_len = short_read_limit_; | 256 result.data_len = short_read_limit_; |
257 reads_.front().data += result.data_len; | 257 reads_.front().data += result.data_len; |
258 reads_.front().data_len -= result.data_len; | 258 reads_.front().data_len -= result.data_len; |
259 } | 259 } |
260 return result; | 260 return result; |
261 } | 261 } |
262 | 262 |
263 void DynamicMockSocket::Reset() { | 263 void DynamicSocketDataProvider::Reset() { |
264 reads_.clear(); | 264 reads_.clear(); |
265 } | 265 } |
266 | 266 |
267 void DynamicMockSocket::SimulateRead(const char* data) { | 267 void DynamicSocketDataProvider::SimulateRead(const char* data) { |
268 if (!allow_unconsumed_reads_) { | 268 if (!allow_unconsumed_reads_) { |
269 EXPECT_TRUE(reads_.empty()) << "Unconsumed read: " << reads_.front().data; | 269 EXPECT_TRUE(reads_.empty()) << "Unconsumed read: " << reads_.front().data; |
270 } | 270 } |
271 reads_.push_back(MockRead(data)); | 271 reads_.push_back(MockRead(data)); |
272 } | 272 } |
273 | 273 |
274 void MockClientSocketFactory::AddMockSocket(MockSocket* socket) { | 274 void MockClientSocketFactory::AddSocketDataProvider( |
275 mock_sockets_.Add(socket); | 275 SocketDataProvider* data) { |
| 276 mock_data_.Add(data); |
276 } | 277 } |
277 | 278 |
278 void MockClientSocketFactory::AddMockSSLSocket(MockSSLSocket* socket) { | 279 void MockClientSocketFactory::AddSSLSocketDataProvider( |
279 mock_ssl_sockets_.Add(socket); | 280 SSLSocketDataProvider* data) { |
| 281 mock_ssl_data_.Add(data); |
280 } | 282 } |
281 | 283 |
282 void MockClientSocketFactory::ResetNextMockIndexes() { | 284 void MockClientSocketFactory::ResetNextMockIndexes() { |
283 mock_sockets_.ResetNextIndex(); | 285 mock_data_.ResetNextIndex(); |
284 mock_ssl_sockets_.ResetNextIndex(); | 286 mock_ssl_data_.ResetNextIndex(); |
285 } | 287 } |
286 | 288 |
287 MockTCPClientSocket* MockClientSocketFactory::GetMockTCPClientSocket( | 289 MockTCPClientSocket* MockClientSocketFactory::GetMockTCPClientSocket( |
288 int index) const { | 290 int index) const { |
289 return tcp_client_sockets_[index]; | 291 return tcp_client_sockets_[index]; |
290 } | 292 } |
291 | 293 |
292 MockSSLClientSocket* MockClientSocketFactory::GetMockSSLClientSocket( | 294 MockSSLClientSocket* MockClientSocketFactory::GetMockSSLClientSocket( |
293 int index) const { | 295 int index) const { |
294 return ssl_client_sockets_[index]; | 296 return ssl_client_sockets_[index]; |
295 } | 297 } |
296 | 298 |
297 ClientSocket* MockClientSocketFactory::CreateTCPClientSocket( | 299 ClientSocket* MockClientSocketFactory::CreateTCPClientSocket( |
298 const AddressList& addresses) { | 300 const AddressList& addresses) { |
299 MockTCPClientSocket* socket = | 301 MockTCPClientSocket* socket = |
300 new MockTCPClientSocket(addresses, mock_sockets_.GetNext()); | 302 new MockTCPClientSocket(addresses, mock_data_.GetNext()); |
301 tcp_client_sockets_.push_back(socket); | 303 tcp_client_sockets_.push_back(socket); |
302 return socket; | 304 return socket; |
303 } | 305 } |
304 | 306 |
305 SSLClientSocket* MockClientSocketFactory::CreateSSLClientSocket( | 307 SSLClientSocket* MockClientSocketFactory::CreateSSLClientSocket( |
306 ClientSocket* transport_socket, | 308 ClientSocket* transport_socket, |
307 const std::string& hostname, | 309 const std::string& hostname, |
308 const SSLConfig& ssl_config) { | 310 const SSLConfig& ssl_config) { |
309 MockSSLClientSocket* socket = | 311 MockSSLClientSocket* socket = |
310 new MockSSLClientSocket(transport_socket, hostname, ssl_config, | 312 new MockSSLClientSocket(transport_socket, hostname, ssl_config, |
311 mock_ssl_sockets_.GetNext()); | 313 mock_ssl_data_.GetNext()); |
312 ssl_client_sockets_.push_back(socket); | 314 ssl_client_sockets_.push_back(socket); |
313 return socket; | 315 return socket; |
314 } | 316 } |
315 | 317 |
316 int TestSocketRequest::WaitForResult() { | 318 int TestSocketRequest::WaitForResult() { |
317 return callback_.WaitForResult(); | 319 return callback_.WaitForResult(); |
318 } | 320 } |
319 | 321 |
320 void TestSocketRequest::RunWithParams(const Tuple1<int>& params) { | 322 void TestSocketRequest::RunWithParams(const Tuple1<int>& params) { |
321 callback_.RunWithParams(params); | 323 callback_.RunWithParams(params); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
375 } | 377 } |
376 | 378 |
377 void ClientSocketPoolTest::ReleaseAllConnections(KeepAlive keep_alive) { | 379 void ClientSocketPoolTest::ReleaseAllConnections(KeepAlive keep_alive) { |
378 bool released_one; | 380 bool released_one; |
379 do { | 381 do { |
380 released_one = ReleaseOneConnection(keep_alive); | 382 released_one = ReleaseOneConnection(keep_alive); |
381 } while (released_one); | 383 } while (released_one); |
382 } | 384 } |
383 | 385 |
384 } // namespace net | 386 } // namespace net |
OLD | NEW |