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

Side by Side Diff: net/socket/socks5_client_socket_unittest.cc

Issue 2109503009: Refactor net tests to use GMock matchers for checking net::Error results (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert changes to contents.txt files Created 4 years, 5 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
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 #include "net/socket/socks5_client_socket.h" 5 #include "net/socket/socks5_client_socket.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <iterator> 8 #include <iterator>
9 #include <map> 9 #include <map>
10 #include <utility> 10 #include <utility>
11 11
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/sys_byteorder.h" 13 #include "base/sys_byteorder.h"
14 #include "net/base/address_list.h" 14 #include "net/base/address_list.h"
15 #include "net/base/test_completion_callback.h" 15 #include "net/base/test_completion_callback.h"
16 #include "net/base/winsock_init.h" 16 #include "net/base/winsock_init.h"
17 #include "net/dns/mock_host_resolver.h" 17 #include "net/dns/mock_host_resolver.h"
18 #include "net/log/net_log.h" 18 #include "net/log/net_log.h"
19 #include "net/log/test_net_log.h" 19 #include "net/log/test_net_log.h"
20 #include "net/log/test_net_log_entry.h" 20 #include "net/log/test_net_log_entry.h"
21 #include "net/log/test_net_log_util.h" 21 #include "net/log/test_net_log_util.h"
22 #include "net/socket/client_socket_factory.h" 22 #include "net/socket/client_socket_factory.h"
23 #include "net/socket/socket_test_util.h" 23 #include "net/socket/socket_test_util.h"
24 #include "net/socket/tcp_client_socket.h" 24 #include "net/socket/tcp_client_socket.h"
25 #include "net/test/gtest_util.h"
26 #include "testing/gmock/include/gmock/gmock.h"
25 #include "testing/gtest/include/gtest/gtest.h" 27 #include "testing/gtest/include/gtest/gtest.h"
26 #include "testing/platform_test.h" 28 #include "testing/platform_test.h"
27 29
30 using net::test::IsError;
31 using net::test::IsOk;
32
28 //----------------------------------------------------------------------------- 33 //-----------------------------------------------------------------------------
29 34
30 namespace net { 35 namespace net {
31 36
32 namespace { 37 namespace {
33 38
34 // Base class to test SOCKS5ClientSocket 39 // Base class to test SOCKS5ClientSocket
35 class SOCKS5ClientSocketTest : public PlatformTest { 40 class SOCKS5ClientSocketTest : public PlatformTest {
36 public: 41 public:
37 SOCKS5ClientSocketTest(); 42 SOCKS5ClientSocketTest();
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 79
75 // Resolve the "localhost" AddressList used by the TCP connection to connect. 80 // Resolve the "localhost" AddressList used by the TCP connection to connect.
76 HostResolver::RequestInfo info(HostPortPair("www.socks-proxy.com", 1080)); 81 HostResolver::RequestInfo info(HostPortPair("www.socks-proxy.com", 1080));
77 TestCompletionCallback callback; 82 TestCompletionCallback callback;
78 int rv = host_resolver_->Resolve(info, 83 int rv = host_resolver_->Resolve(info,
79 DEFAULT_PRIORITY, 84 DEFAULT_PRIORITY,
80 &address_list_, 85 &address_list_,
81 callback.callback(), 86 callback.callback(),
82 NULL, 87 NULL,
83 BoundNetLog()); 88 BoundNetLog());
84 ASSERT_EQ(ERR_IO_PENDING, rv); 89 ASSERT_THAT(rv, IsError(ERR_IO_PENDING));
85 rv = callback.WaitForResult(); 90 rv = callback.WaitForResult();
86 ASSERT_EQ(OK, rv); 91 ASSERT_THAT(rv, IsOk());
87 } 92 }
88 93
89 std::unique_ptr<SOCKS5ClientSocket> SOCKS5ClientSocketTest::BuildMockSocket( 94 std::unique_ptr<SOCKS5ClientSocket> SOCKS5ClientSocketTest::BuildMockSocket(
90 MockRead reads[], 95 MockRead reads[],
91 size_t reads_count, 96 size_t reads_count,
92 MockWrite writes[], 97 MockWrite writes[],
93 size_t writes_count, 98 size_t writes_count,
94 const std::string& hostname, 99 const std::string& hostname,
95 int port, 100 int port,
96 NetLog* net_log) { 101 NetLog* net_log) {
97 TestCompletionCallback callback; 102 TestCompletionCallback callback;
98 data_.reset(new StaticSocketDataProvider(reads, reads_count, 103 data_.reset(new StaticSocketDataProvider(reads, reads_count,
99 writes, writes_count)); 104 writes, writes_count));
100 tcp_sock_ = new MockTCPClientSocket(address_list_, net_log, data_.get()); 105 tcp_sock_ = new MockTCPClientSocket(address_list_, net_log, data_.get());
101 106
102 int rv = tcp_sock_->Connect(callback.callback()); 107 int rv = tcp_sock_->Connect(callback.callback());
103 EXPECT_EQ(ERR_IO_PENDING, rv); 108 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
104 rv = callback.WaitForResult(); 109 rv = callback.WaitForResult();
105 EXPECT_EQ(OK, rv); 110 EXPECT_THAT(rv, IsOk());
106 EXPECT_TRUE(tcp_sock_->IsConnected()); 111 EXPECT_TRUE(tcp_sock_->IsConnected());
107 112
108 std::unique_ptr<ClientSocketHandle> connection(new ClientSocketHandle); 113 std::unique_ptr<ClientSocketHandle> connection(new ClientSocketHandle);
109 // |connection| takes ownership of |tcp_sock_|, but keep a 114 // |connection| takes ownership of |tcp_sock_|, but keep a
110 // non-owning pointer to it. 115 // non-owning pointer to it.
111 connection->SetSocket(std::unique_ptr<StreamSocket>(tcp_sock_)); 116 connection->SetSocket(std::unique_ptr<StreamSocket>(tcp_sock_));
112 return std::unique_ptr<SOCKS5ClientSocket>(new SOCKS5ClientSocket( 117 return std::unique_ptr<SOCKS5ClientSocket>(new SOCKS5ClientSocket(
113 std::move(connection), 118 std::move(connection),
114 HostResolver::RequestInfo(HostPortPair(hostname, port)))); 119 HostResolver::RequestInfo(HostPortPair(hostname, port))));
115 } 120 }
(...skipping 25 matching lines...) Expand all
141 146
142 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads), 147 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads),
143 data_writes, arraysize(data_writes), 148 data_writes, arraysize(data_writes),
144 "localhost", 80, &net_log_); 149 "localhost", 80, &net_log_);
145 150
146 // At this state the TCP connection is completed but not the SOCKS handshake. 151 // At this state the TCP connection is completed but not the SOCKS handshake.
147 EXPECT_TRUE(tcp_sock_->IsConnected()); 152 EXPECT_TRUE(tcp_sock_->IsConnected());
148 EXPECT_FALSE(user_sock_->IsConnected()); 153 EXPECT_FALSE(user_sock_->IsConnected());
149 154
150 int rv = user_sock_->Connect(callback_.callback()); 155 int rv = user_sock_->Connect(callback_.callback());
151 EXPECT_EQ(ERR_IO_PENDING, rv); 156 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
152 EXPECT_FALSE(user_sock_->IsConnected()); 157 EXPECT_FALSE(user_sock_->IsConnected());
153 158
154 TestNetLogEntry::List net_log_entries; 159 TestNetLogEntry::List net_log_entries;
155 net_log_.GetEntries(&net_log_entries); 160 net_log_.GetEntries(&net_log_entries);
156 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, 161 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0,
157 NetLog::TYPE_SOCKS5_CONNECT)); 162 NetLog::TYPE_SOCKS5_CONNECT));
158 163
159 rv = callback_.WaitForResult(); 164 rv = callback_.WaitForResult();
160 165
161 EXPECT_EQ(OK, rv); 166 EXPECT_THAT(rv, IsOk());
162 EXPECT_TRUE(user_sock_->IsConnected()); 167 EXPECT_TRUE(user_sock_->IsConnected());
163 168
164 net_log_.GetEntries(&net_log_entries); 169 net_log_.GetEntries(&net_log_entries);
165 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1, 170 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1,
166 NetLog::TYPE_SOCKS5_CONNECT)); 171 NetLog::TYPE_SOCKS5_CONNECT));
167 172
168 scoped_refptr<IOBuffer> buffer(new IOBuffer(payload_write.size())); 173 scoped_refptr<IOBuffer> buffer(new IOBuffer(payload_write.size()));
169 memcpy(buffer->data(), payload_write.data(), payload_write.size()); 174 memcpy(buffer->data(), payload_write.data(), payload_write.size());
170 rv = user_sock_->Write( 175 rv = user_sock_->Write(
171 buffer.get(), payload_write.size(), callback_.callback()); 176 buffer.get(), payload_write.size(), callback_.callback());
172 EXPECT_EQ(ERR_IO_PENDING, rv); 177 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
173 rv = callback_.WaitForResult(); 178 rv = callback_.WaitForResult();
174 EXPECT_EQ(static_cast<int>(payload_write.size()), rv); 179 EXPECT_EQ(static_cast<int>(payload_write.size()), rv);
175 180
176 buffer = new IOBuffer(payload_read.size()); 181 buffer = new IOBuffer(payload_read.size());
177 rv = 182 rv =
178 user_sock_->Read(buffer.get(), payload_read.size(), callback_.callback()); 183 user_sock_->Read(buffer.get(), payload_read.size(), callback_.callback());
179 EXPECT_EQ(ERR_IO_PENDING, rv); 184 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
180 rv = callback_.WaitForResult(); 185 rv = callback_.WaitForResult();
181 EXPECT_EQ(static_cast<int>(payload_read.size()), rv); 186 EXPECT_EQ(static_cast<int>(payload_read.size()), rv);
182 EXPECT_EQ(payload_read, std::string(buffer->data(), payload_read.size())); 187 EXPECT_EQ(payload_read, std::string(buffer->data(), payload_read.size()));
183 188
184 user_sock_->Disconnect(); 189 user_sock_->Disconnect();
185 EXPECT_FALSE(tcp_sock_->IsConnected()); 190 EXPECT_FALSE(tcp_sock_->IsConnected());
186 EXPECT_FALSE(user_sock_->IsConnected()); 191 EXPECT_FALSE(user_sock_->IsConnected());
187 } 192 }
188 193
189 // Test that you can call Connect() again after having called Disconnect(). 194 // Test that you can call Connect() again after having called Disconnect().
(...skipping 19 matching lines...) Expand all
209 MockRead data_reads[] = { 214 MockRead data_reads[] = {
210 MockRead(SYNCHRONOUS, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength), 215 MockRead(SYNCHRONOUS, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength),
211 MockRead(SYNCHRONOUS, kSOCKS5OkResponse, kSOCKS5OkResponseLength) 216 MockRead(SYNCHRONOUS, kSOCKS5OkResponse, kSOCKS5OkResponseLength)
212 }; 217 };
213 218
214 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads), 219 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads),
215 data_writes, arraysize(data_writes), 220 data_writes, arraysize(data_writes),
216 hostname, 80, NULL); 221 hostname, 80, NULL);
217 222
218 int rv = user_sock_->Connect(callback_.callback()); 223 int rv = user_sock_->Connect(callback_.callback());
219 EXPECT_EQ(OK, rv); 224 EXPECT_THAT(rv, IsOk());
220 EXPECT_TRUE(user_sock_->IsConnected()); 225 EXPECT_TRUE(user_sock_->IsConnected());
221 226
222 user_sock_->Disconnect(); 227 user_sock_->Disconnect();
223 EXPECT_FALSE(user_sock_->IsConnected()); 228 EXPECT_FALSE(user_sock_->IsConnected());
224 } 229 }
225 } 230 }
226 231
227 // Test that we fail trying to connect to a hosname longer than 255 bytes. 232 // Test that we fail trying to connect to a hosname longer than 255 bytes.
228 TEST_F(SOCKS5ClientSocketTest, LargeHostNameFails) { 233 TEST_F(SOCKS5ClientSocketTest, LargeHostNameFails) {
229 // Create a string of length 256, where each character is 'x'. 234 // Create a string of length 256, where each character is 'x'.
230 std::string large_host_name; 235 std::string large_host_name;
231 std::fill_n(std::back_inserter(large_host_name), 256, 'x'); 236 std::fill_n(std::back_inserter(large_host_name), 256, 'x');
232 237
233 // Create a SOCKS socket, with mock transport socket. 238 // Create a SOCKS socket, with mock transport socket.
234 MockWrite data_writes[] = {MockWrite()}; 239 MockWrite data_writes[] = {MockWrite()};
235 MockRead data_reads[] = {MockRead()}; 240 MockRead data_reads[] = {MockRead()};
236 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads), 241 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads),
237 data_writes, arraysize(data_writes), 242 data_writes, arraysize(data_writes),
238 large_host_name, 80, NULL); 243 large_host_name, 80, NULL);
239 244
240 // Try to connect -- should fail (without having read/written anything to 245 // Try to connect -- should fail (without having read/written anything to
241 // the transport socket first) because the hostname is too long. 246 // the transport socket first) because the hostname is too long.
242 TestCompletionCallback callback; 247 TestCompletionCallback callback;
243 int rv = user_sock_->Connect(callback.callback()); 248 int rv = user_sock_->Connect(callback.callback());
244 EXPECT_EQ(ERR_SOCKS_CONNECTION_FAILED, rv); 249 EXPECT_THAT(rv, IsError(ERR_SOCKS_CONNECTION_FAILED));
245 } 250 }
246 251
247 TEST_F(SOCKS5ClientSocketTest, PartialReadWrites) { 252 TEST_F(SOCKS5ClientSocketTest, PartialReadWrites) {
248 const std::string hostname = "www.google.com"; 253 const std::string hostname = "www.google.com";
249 254
250 const char kOkRequest[] = { 255 const char kOkRequest[] = {
251 0x05, // Version 256 0x05, // Version
252 0x01, // Command (CONNECT) 257 0x01, // Command (CONNECT)
253 0x00, // Reserved. 258 0x00, // Reserved.
254 0x03, // Address type (DOMAINNAME). 259 0x03, // Address type (DOMAINNAME).
(...skipping 11 matching lines...) Expand all
266 MockWrite(ASYNC, partial1, arraysize(partial1)), 271 MockWrite(ASYNC, partial1, arraysize(partial1)),
267 MockWrite(ASYNC, partial2, arraysize(partial2)), 272 MockWrite(ASYNC, partial2, arraysize(partial2)),
268 MockWrite(ASYNC, kOkRequest, arraysize(kOkRequest)) }; 273 MockWrite(ASYNC, kOkRequest, arraysize(kOkRequest)) };
269 MockRead data_reads[] = { 274 MockRead data_reads[] = {
270 MockRead(ASYNC, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength), 275 MockRead(ASYNC, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength),
271 MockRead(ASYNC, kSOCKS5OkResponse, kSOCKS5OkResponseLength) }; 276 MockRead(ASYNC, kSOCKS5OkResponse, kSOCKS5OkResponseLength) };
272 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads), 277 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads),
273 data_writes, arraysize(data_writes), 278 data_writes, arraysize(data_writes),
274 hostname, 80, &net_log_); 279 hostname, 80, &net_log_);
275 int rv = user_sock_->Connect(callback_.callback()); 280 int rv = user_sock_->Connect(callback_.callback());
276 EXPECT_EQ(ERR_IO_PENDING, rv); 281 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
277 282
278 TestNetLogEntry::List net_log_entries; 283 TestNetLogEntry::List net_log_entries;
279 net_log_.GetEntries(&net_log_entries); 284 net_log_.GetEntries(&net_log_entries);
280 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, 285 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0,
281 NetLog::TYPE_SOCKS5_CONNECT)); 286 NetLog::TYPE_SOCKS5_CONNECT));
282 287
283 rv = callback_.WaitForResult(); 288 rv = callback_.WaitForResult();
284 EXPECT_EQ(OK, rv); 289 EXPECT_THAT(rv, IsOk());
285 EXPECT_TRUE(user_sock_->IsConnected()); 290 EXPECT_TRUE(user_sock_->IsConnected());
286 291
287 net_log_.GetEntries(&net_log_entries); 292 net_log_.GetEntries(&net_log_entries);
288 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1, 293 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1,
289 NetLog::TYPE_SOCKS5_CONNECT)); 294 NetLog::TYPE_SOCKS5_CONNECT));
290 } 295 }
291 296
292 // Test for partial greet response read 297 // Test for partial greet response read
293 { 298 {
294 const char partial1[] = { 0x05 }; 299 const char partial1[] = { 0x05 };
295 const char partial2[] = { 0x00 }; 300 const char partial2[] = { 0x00 };
296 MockWrite data_writes[] = { 301 MockWrite data_writes[] = {
297 MockWrite(ASYNC, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength), 302 MockWrite(ASYNC, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength),
298 MockWrite(ASYNC, kOkRequest, arraysize(kOkRequest)) }; 303 MockWrite(ASYNC, kOkRequest, arraysize(kOkRequest)) };
299 MockRead data_reads[] = { 304 MockRead data_reads[] = {
300 MockRead(ASYNC, partial1, arraysize(partial1)), 305 MockRead(ASYNC, partial1, arraysize(partial1)),
301 MockRead(ASYNC, partial2, arraysize(partial2)), 306 MockRead(ASYNC, partial2, arraysize(partial2)),
302 MockRead(ASYNC, kSOCKS5OkResponse, kSOCKS5OkResponseLength) }; 307 MockRead(ASYNC, kSOCKS5OkResponse, kSOCKS5OkResponseLength) };
303 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads), 308 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads),
304 data_writes, arraysize(data_writes), 309 data_writes, arraysize(data_writes),
305 hostname, 80, &net_log_); 310 hostname, 80, &net_log_);
306 int rv = user_sock_->Connect(callback_.callback()); 311 int rv = user_sock_->Connect(callback_.callback());
307 EXPECT_EQ(ERR_IO_PENDING, rv); 312 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
308 313
309 TestNetLogEntry::List net_log_entries; 314 TestNetLogEntry::List net_log_entries;
310 net_log_.GetEntries(&net_log_entries); 315 net_log_.GetEntries(&net_log_entries);
311 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, 316 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0,
312 NetLog::TYPE_SOCKS5_CONNECT)); 317 NetLog::TYPE_SOCKS5_CONNECT));
313 rv = callback_.WaitForResult(); 318 rv = callback_.WaitForResult();
314 EXPECT_EQ(OK, rv); 319 EXPECT_THAT(rv, IsOk());
315 EXPECT_TRUE(user_sock_->IsConnected()); 320 EXPECT_TRUE(user_sock_->IsConnected());
316 net_log_.GetEntries(&net_log_entries); 321 net_log_.GetEntries(&net_log_entries);
317 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1, 322 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1,
318 NetLog::TYPE_SOCKS5_CONNECT)); 323 NetLog::TYPE_SOCKS5_CONNECT));
319 } 324 }
320 325
321 // Test for partial handshake request write. 326 // Test for partial handshake request write.
322 { 327 {
323 const int kSplitPoint = 3; // Break handshake write into two parts. 328 const int kSplitPoint = 3; // Break handshake write into two parts.
324 MockWrite data_writes[] = { 329 MockWrite data_writes[] = {
325 MockWrite(ASYNC, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength), 330 MockWrite(ASYNC, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength),
326 MockWrite(ASYNC, kOkRequest, kSplitPoint), 331 MockWrite(ASYNC, kOkRequest, kSplitPoint),
327 MockWrite(ASYNC, kOkRequest + kSplitPoint, 332 MockWrite(ASYNC, kOkRequest + kSplitPoint,
328 arraysize(kOkRequest) - kSplitPoint) 333 arraysize(kOkRequest) - kSplitPoint)
329 }; 334 };
330 MockRead data_reads[] = { 335 MockRead data_reads[] = {
331 MockRead(ASYNC, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength), 336 MockRead(ASYNC, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength),
332 MockRead(ASYNC, kSOCKS5OkResponse, kSOCKS5OkResponseLength) }; 337 MockRead(ASYNC, kSOCKS5OkResponse, kSOCKS5OkResponseLength) };
333 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads), 338 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads),
334 data_writes, arraysize(data_writes), 339 data_writes, arraysize(data_writes),
335 hostname, 80, &net_log_); 340 hostname, 80, &net_log_);
336 int rv = user_sock_->Connect(callback_.callback()); 341 int rv = user_sock_->Connect(callback_.callback());
337 EXPECT_EQ(ERR_IO_PENDING, rv); 342 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
338 TestNetLogEntry::List net_log_entries; 343 TestNetLogEntry::List net_log_entries;
339 net_log_.GetEntries(&net_log_entries); 344 net_log_.GetEntries(&net_log_entries);
340 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, 345 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0,
341 NetLog::TYPE_SOCKS5_CONNECT)); 346 NetLog::TYPE_SOCKS5_CONNECT));
342 rv = callback_.WaitForResult(); 347 rv = callback_.WaitForResult();
343 EXPECT_EQ(OK, rv); 348 EXPECT_THAT(rv, IsOk());
344 EXPECT_TRUE(user_sock_->IsConnected()); 349 EXPECT_TRUE(user_sock_->IsConnected());
345 net_log_.GetEntries(&net_log_entries); 350 net_log_.GetEntries(&net_log_entries);
346 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1, 351 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1,
347 NetLog::TYPE_SOCKS5_CONNECT)); 352 NetLog::TYPE_SOCKS5_CONNECT));
348 } 353 }
349 354
350 // Test for partial handshake response read 355 // Test for partial handshake response read
351 { 356 {
352 const int kSplitPoint = 6; // Break the handshake read into two parts. 357 const int kSplitPoint = 6; // Break the handshake read into two parts.
353 MockWrite data_writes[] = { 358 MockWrite data_writes[] = {
354 MockWrite(ASYNC, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength), 359 MockWrite(ASYNC, kSOCKS5GreetRequest, kSOCKS5GreetRequestLength),
355 MockWrite(ASYNC, kOkRequest, arraysize(kOkRequest)) 360 MockWrite(ASYNC, kOkRequest, arraysize(kOkRequest))
356 }; 361 };
357 MockRead data_reads[] = { 362 MockRead data_reads[] = {
358 MockRead(ASYNC, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength), 363 MockRead(ASYNC, kSOCKS5GreetResponse, kSOCKS5GreetResponseLength),
359 MockRead(ASYNC, kSOCKS5OkResponse, kSplitPoint), 364 MockRead(ASYNC, kSOCKS5OkResponse, kSplitPoint),
360 MockRead(ASYNC, kSOCKS5OkResponse + kSplitPoint, 365 MockRead(ASYNC, kSOCKS5OkResponse + kSplitPoint,
361 kSOCKS5OkResponseLength - kSplitPoint) 366 kSOCKS5OkResponseLength - kSplitPoint)
362 }; 367 };
363 368
364 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads), 369 user_sock_ = BuildMockSocket(data_reads, arraysize(data_reads),
365 data_writes, arraysize(data_writes), 370 data_writes, arraysize(data_writes),
366 hostname, 80, &net_log_); 371 hostname, 80, &net_log_);
367 int rv = user_sock_->Connect(callback_.callback()); 372 int rv = user_sock_->Connect(callback_.callback());
368 EXPECT_EQ(ERR_IO_PENDING, rv); 373 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
369 TestNetLogEntry::List net_log_entries; 374 TestNetLogEntry::List net_log_entries;
370 net_log_.GetEntries(&net_log_entries); 375 net_log_.GetEntries(&net_log_entries);
371 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0, 376 EXPECT_TRUE(LogContainsBeginEvent(net_log_entries, 0,
372 NetLog::TYPE_SOCKS5_CONNECT)); 377 NetLog::TYPE_SOCKS5_CONNECT));
373 rv = callback_.WaitForResult(); 378 rv = callback_.WaitForResult();
374 EXPECT_EQ(OK, rv); 379 EXPECT_THAT(rv, IsOk());
375 EXPECT_TRUE(user_sock_->IsConnected()); 380 EXPECT_TRUE(user_sock_->IsConnected());
376 net_log_.GetEntries(&net_log_entries); 381 net_log_.GetEntries(&net_log_entries);
377 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1, 382 EXPECT_TRUE(LogContainsEndEvent(net_log_entries, -1,
378 NetLog::TYPE_SOCKS5_CONNECT)); 383 NetLog::TYPE_SOCKS5_CONNECT));
379 } 384 }
380 } 385 }
381 386
382 } // namespace 387 } // namespace
383 388
384 } // namespace net 389 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/sequenced_socket_data_unittest.cc ('k') | net/socket/socks_client_socket_pool_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698