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

Side by Side Diff: net/socket/unix_domain_client_socket_posix_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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/unix_domain_client_socket_posix.h" 5 #include "net/socket/unix_domain_client_socket_posix.h"
6 6
7 #include <unistd.h> 7 #include <unistd.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
11 11
12 #include "base/bind.h" 12 #include "base/bind.h"
13 #include "base/files/file_path.h" 13 #include "base/files/file_path.h"
14 #include "base/files/scoped_temp_dir.h" 14 #include "base/files/scoped_temp_dir.h"
15 #include "base/posix/eintr_wrapper.h" 15 #include "base/posix/eintr_wrapper.h"
16 #include "net/base/io_buffer.h" 16 #include "net/base/io_buffer.h"
17 #include "net/base/net_errors.h" 17 #include "net/base/net_errors.h"
18 #include "net/base/sockaddr_storage.h" 18 #include "net/base/sockaddr_storage.h"
19 #include "net/base/test_completion_callback.h" 19 #include "net/base/test_completion_callback.h"
20 #include "net/socket/socket_posix.h" 20 #include "net/socket/socket_posix.h"
21 #include "net/socket/unix_domain_server_socket_posix.h" 21 #include "net/socket/unix_domain_server_socket_posix.h"
22 #include "net/test/gtest_util.h"
23 #include "testing/gmock/include/gmock/gmock.h"
22 #include "testing/gtest/include/gtest/gtest.h" 24 #include "testing/gtest/include/gtest/gtest.h"
23 25
26 using net::test::IsError;
27 using net::test::IsOk;
28
24 namespace net { 29 namespace net {
25 namespace { 30 namespace {
26 31
27 const char kSocketFilename[] = "socket_for_testing"; 32 const char kSocketFilename[] = "socket_for_testing";
28 33
29 bool UserCanConnectCallback( 34 bool UserCanConnectCallback(
30 bool allow_user, const UnixDomainServerSocket::Credentials& credentials) { 35 bool allow_user, const UnixDomainServerSocket::Credentials& credentials) {
31 // Here peers are running in same process. 36 // Here peers are running in same process.
32 #if defined(OS_LINUX) || defined(OS_ANDROID) 37 #if defined(OS_LINUX) || defined(OS_ANDROID)
33 EXPECT_EQ(getpid(), credentials.process_id); 38 EXPECT_EQ(getpid(), credentials.process_id);
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 130
126 base::ScopedTempDir temp_dir_; 131 base::ScopedTempDir temp_dir_;
127 std::string socket_path_; 132 std::string socket_path_;
128 }; 133 };
129 134
130 TEST_F(UnixDomainClientSocketTest, Connect) { 135 TEST_F(UnixDomainClientSocketTest, Connect) {
131 const bool kUseAbstractNamespace = false; 136 const bool kUseAbstractNamespace = false;
132 137
133 UnixDomainServerSocket server_socket(CreateAuthCallback(true), 138 UnixDomainServerSocket server_socket(CreateAuthCallback(true),
134 kUseAbstractNamespace); 139 kUseAbstractNamespace);
135 EXPECT_EQ(OK, server_socket.BindAndListen(socket_path_, /*backlog=*/1)); 140 EXPECT_THAT(server_socket.BindAndListen(socket_path_, /*backlog=*/1), IsOk());
136 141
137 std::unique_ptr<StreamSocket> accepted_socket; 142 std::unique_ptr<StreamSocket> accepted_socket;
138 TestCompletionCallback accept_callback; 143 TestCompletionCallback accept_callback;
139 EXPECT_EQ(ERR_IO_PENDING, 144 EXPECT_EQ(ERR_IO_PENDING,
140 server_socket.Accept(&accepted_socket, accept_callback.callback())); 145 server_socket.Accept(&accepted_socket, accept_callback.callback()));
141 EXPECT_FALSE(accepted_socket); 146 EXPECT_FALSE(accepted_socket);
142 147
143 UnixDomainClientSocket client_socket(socket_path_, kUseAbstractNamespace); 148 UnixDomainClientSocket client_socket(socket_path_, kUseAbstractNamespace);
144 EXPECT_FALSE(client_socket.IsConnected()); 149 EXPECT_FALSE(client_socket.IsConnected());
145 150
146 EXPECT_EQ(OK, ConnectSynchronously(&client_socket)); 151 EXPECT_THAT(ConnectSynchronously(&client_socket), IsOk());
147 EXPECT_TRUE(client_socket.IsConnected()); 152 EXPECT_TRUE(client_socket.IsConnected());
148 // Server has not yet been notified of the connection. 153 // Server has not yet been notified of the connection.
149 EXPECT_FALSE(accepted_socket); 154 EXPECT_FALSE(accepted_socket);
150 155
151 EXPECT_EQ(OK, accept_callback.WaitForResult()); 156 EXPECT_THAT(accept_callback.WaitForResult(), IsOk());
152 EXPECT_TRUE(accepted_socket); 157 EXPECT_TRUE(accepted_socket);
153 EXPECT_TRUE(accepted_socket->IsConnected()); 158 EXPECT_TRUE(accepted_socket->IsConnected());
154 } 159 }
155 160
156 TEST_F(UnixDomainClientSocketTest, ConnectWithSocketDescriptor) { 161 TEST_F(UnixDomainClientSocketTest, ConnectWithSocketDescriptor) {
157 const bool kUseAbstractNamespace = false; 162 const bool kUseAbstractNamespace = false;
158 163
159 UnixDomainServerSocket server_socket(CreateAuthCallback(true), 164 UnixDomainServerSocket server_socket(CreateAuthCallback(true),
160 kUseAbstractNamespace); 165 kUseAbstractNamespace);
161 EXPECT_EQ(OK, server_socket.BindAndListen(socket_path_, /*backlog=*/1)); 166 EXPECT_THAT(server_socket.BindAndListen(socket_path_, /*backlog=*/1), IsOk());
162 167
163 SocketDescriptor accepted_socket_fd = kInvalidSocket; 168 SocketDescriptor accepted_socket_fd = kInvalidSocket;
164 TestCompletionCallback accept_callback; 169 TestCompletionCallback accept_callback;
165 EXPECT_EQ(ERR_IO_PENDING, 170 EXPECT_EQ(ERR_IO_PENDING,
166 server_socket.AcceptSocketDescriptor(&accepted_socket_fd, 171 server_socket.AcceptSocketDescriptor(&accepted_socket_fd,
167 accept_callback.callback())); 172 accept_callback.callback()));
168 EXPECT_EQ(kInvalidSocket, accepted_socket_fd); 173 EXPECT_EQ(kInvalidSocket, accepted_socket_fd);
169 174
170 UnixDomainClientSocket client_socket(socket_path_, kUseAbstractNamespace); 175 UnixDomainClientSocket client_socket(socket_path_, kUseAbstractNamespace);
171 EXPECT_FALSE(client_socket.IsConnected()); 176 EXPECT_FALSE(client_socket.IsConnected());
172 177
173 EXPECT_EQ(OK, ConnectSynchronously(&client_socket)); 178 EXPECT_THAT(ConnectSynchronously(&client_socket), IsOk());
174 EXPECT_TRUE(client_socket.IsConnected()); 179 EXPECT_TRUE(client_socket.IsConnected());
175 // Server has not yet been notified of the connection. 180 // Server has not yet been notified of the connection.
176 EXPECT_EQ(kInvalidSocket, accepted_socket_fd); 181 EXPECT_EQ(kInvalidSocket, accepted_socket_fd);
177 182
178 EXPECT_EQ(OK, accept_callback.WaitForResult()); 183 EXPECT_THAT(accept_callback.WaitForResult(), IsOk());
179 EXPECT_NE(kInvalidSocket, accepted_socket_fd); 184 EXPECT_NE(kInvalidSocket, accepted_socket_fd);
180 185
181 SocketDescriptor client_socket_fd = client_socket.ReleaseConnectedSocket(); 186 SocketDescriptor client_socket_fd = client_socket.ReleaseConnectedSocket();
182 EXPECT_NE(kInvalidSocket, client_socket_fd); 187 EXPECT_NE(kInvalidSocket, client_socket_fd);
183 188
184 // Now, re-wrap client_socket_fd in a UnixDomainClientSocket and try a read 189 // Now, re-wrap client_socket_fd in a UnixDomainClientSocket and try a read
185 // to be sure it hasn't gotten accidentally closed. 190 // to be sure it hasn't gotten accidentally closed.
186 SockaddrStorage addr; 191 SockaddrStorage addr;
187 ASSERT_TRUE(UnixDomainClientSocket::FillAddress(socket_path_, false, &addr)); 192 ASSERT_TRUE(UnixDomainClientSocket::FillAddress(socket_path_, false, &addr));
188 std::unique_ptr<SocketPosix> adopter(new SocketPosix); 193 std::unique_ptr<SocketPosix> adopter(new SocketPosix);
(...skipping 14 matching lines...) Expand all
203 208
204 TEST_F(UnixDomainClientSocketTest, ConnectWithAbstractNamespace) { 209 TEST_F(UnixDomainClientSocketTest, ConnectWithAbstractNamespace) {
205 const bool kUseAbstractNamespace = true; 210 const bool kUseAbstractNamespace = true;
206 211
207 UnixDomainClientSocket client_socket(socket_path_, kUseAbstractNamespace); 212 UnixDomainClientSocket client_socket(socket_path_, kUseAbstractNamespace);
208 EXPECT_FALSE(client_socket.IsConnected()); 213 EXPECT_FALSE(client_socket.IsConnected());
209 214
210 #if defined(OS_ANDROID) || defined(OS_LINUX) 215 #if defined(OS_ANDROID) || defined(OS_LINUX)
211 UnixDomainServerSocket server_socket(CreateAuthCallback(true), 216 UnixDomainServerSocket server_socket(CreateAuthCallback(true),
212 kUseAbstractNamespace); 217 kUseAbstractNamespace);
213 EXPECT_EQ(OK, server_socket.BindAndListen(socket_path_, /*backlog=*/1)); 218 EXPECT_THAT(server_socket.BindAndListen(socket_path_, /*backlog=*/1), IsOk());
214 219
215 std::unique_ptr<StreamSocket> accepted_socket; 220 std::unique_ptr<StreamSocket> accepted_socket;
216 TestCompletionCallback accept_callback; 221 TestCompletionCallback accept_callback;
217 EXPECT_EQ(ERR_IO_PENDING, 222 EXPECT_EQ(ERR_IO_PENDING,
218 server_socket.Accept(&accepted_socket, accept_callback.callback())); 223 server_socket.Accept(&accepted_socket, accept_callback.callback()));
219 EXPECT_FALSE(accepted_socket); 224 EXPECT_FALSE(accepted_socket);
220 225
221 EXPECT_EQ(OK, ConnectSynchronously(&client_socket)); 226 EXPECT_THAT(ConnectSynchronously(&client_socket), IsOk());
222 EXPECT_TRUE(client_socket.IsConnected()); 227 EXPECT_TRUE(client_socket.IsConnected());
223 // Server has not yet beend notified of the connection. 228 // Server has not yet beend notified of the connection.
224 EXPECT_FALSE(accepted_socket); 229 EXPECT_FALSE(accepted_socket);
225 230
226 EXPECT_EQ(OK, accept_callback.WaitForResult()); 231 EXPECT_THAT(accept_callback.WaitForResult(), IsOk());
227 EXPECT_TRUE(accepted_socket); 232 EXPECT_TRUE(accepted_socket);
228 EXPECT_TRUE(accepted_socket->IsConnected()); 233 EXPECT_TRUE(accepted_socket->IsConnected());
229 #else 234 #else
230 EXPECT_EQ(ERR_ADDRESS_INVALID, ConnectSynchronously(&client_socket)); 235 EXPECT_THAT(ConnectSynchronously(&client_socket),
236 IsError(ERR_ADDRESS_INVALID));
231 #endif 237 #endif
232 } 238 }
233 239
234 TEST_F(UnixDomainClientSocketTest, ConnectToNonExistentSocket) { 240 TEST_F(UnixDomainClientSocketTest, ConnectToNonExistentSocket) {
235 const bool kUseAbstractNamespace = false; 241 const bool kUseAbstractNamespace = false;
236 242
237 UnixDomainClientSocket client_socket(socket_path_, kUseAbstractNamespace); 243 UnixDomainClientSocket client_socket(socket_path_, kUseAbstractNamespace);
238 EXPECT_FALSE(client_socket.IsConnected()); 244 EXPECT_FALSE(client_socket.IsConnected());
239 EXPECT_EQ(ERR_FILE_NOT_FOUND, ConnectSynchronously(&client_socket)); 245 EXPECT_THAT(ConnectSynchronously(&client_socket),
246 IsError(ERR_FILE_NOT_FOUND));
240 } 247 }
241 248
242 TEST_F(UnixDomainClientSocketTest, 249 TEST_F(UnixDomainClientSocketTest,
243 ConnectToNonExistentSocketWithAbstractNamespace) { 250 ConnectToNonExistentSocketWithAbstractNamespace) {
244 const bool kUseAbstractNamespace = true; 251 const bool kUseAbstractNamespace = true;
245 252
246 UnixDomainClientSocket client_socket(socket_path_, kUseAbstractNamespace); 253 UnixDomainClientSocket client_socket(socket_path_, kUseAbstractNamespace);
247 EXPECT_FALSE(client_socket.IsConnected()); 254 EXPECT_FALSE(client_socket.IsConnected());
248 255
249 TestCompletionCallback connect_callback; 256 TestCompletionCallback connect_callback;
250 #if defined(OS_ANDROID) || defined(OS_LINUX) 257 #if defined(OS_ANDROID) || defined(OS_LINUX)
251 EXPECT_EQ(ERR_CONNECTION_REFUSED, ConnectSynchronously(&client_socket)); 258 EXPECT_THAT(ConnectSynchronously(&client_socket),
259 IsError(ERR_CONNECTION_REFUSED));
252 #else 260 #else
253 EXPECT_EQ(ERR_ADDRESS_INVALID, ConnectSynchronously(&client_socket)); 261 EXPECT_THAT(ConnectSynchronously(&client_socket),
262 IsError(ERR_ADDRESS_INVALID));
254 #endif 263 #endif
255 } 264 }
256 265
257 TEST_F(UnixDomainClientSocketTest, DisconnectFromClient) { 266 TEST_F(UnixDomainClientSocketTest, DisconnectFromClient) {
258 UnixDomainServerSocket server_socket(CreateAuthCallback(true), false); 267 UnixDomainServerSocket server_socket(CreateAuthCallback(true), false);
259 EXPECT_EQ(OK, server_socket.BindAndListen(socket_path_, /*backlog=*/1)); 268 EXPECT_THAT(server_socket.BindAndListen(socket_path_, /*backlog=*/1), IsOk());
260 std::unique_ptr<StreamSocket> accepted_socket; 269 std::unique_ptr<StreamSocket> accepted_socket;
261 TestCompletionCallback accept_callback; 270 TestCompletionCallback accept_callback;
262 EXPECT_EQ(ERR_IO_PENDING, 271 EXPECT_EQ(ERR_IO_PENDING,
263 server_socket.Accept(&accepted_socket, accept_callback.callback())); 272 server_socket.Accept(&accepted_socket, accept_callback.callback()));
264 UnixDomainClientSocket client_socket(socket_path_, false); 273 UnixDomainClientSocket client_socket(socket_path_, false);
265 EXPECT_EQ(OK, ConnectSynchronously(&client_socket)); 274 EXPECT_THAT(ConnectSynchronously(&client_socket), IsOk());
266 275
267 EXPECT_EQ(OK, accept_callback.WaitForResult()); 276 EXPECT_THAT(accept_callback.WaitForResult(), IsOk());
268 EXPECT_TRUE(accepted_socket->IsConnected()); 277 EXPECT_TRUE(accepted_socket->IsConnected());
269 EXPECT_TRUE(client_socket.IsConnected()); 278 EXPECT_TRUE(client_socket.IsConnected());
270 279
271 // Try to read data. 280 // Try to read data.
272 const int kReadDataSize = 10; 281 const int kReadDataSize = 10;
273 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadDataSize)); 282 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadDataSize));
274 TestCompletionCallback read_callback; 283 TestCompletionCallback read_callback;
275 EXPECT_EQ(ERR_IO_PENDING, 284 EXPECT_EQ(ERR_IO_PENDING,
276 accepted_socket->Read( 285 accepted_socket->Read(
277 read_buffer.get(), kReadDataSize, read_callback.callback())); 286 read_buffer.get(), kReadDataSize, read_callback.callback()));
278 287
279 // Disconnect from client side. 288 // Disconnect from client side.
280 client_socket.Disconnect(); 289 client_socket.Disconnect();
281 EXPECT_FALSE(client_socket.IsConnected()); 290 EXPECT_FALSE(client_socket.IsConnected());
282 EXPECT_FALSE(accepted_socket->IsConnected()); 291 EXPECT_FALSE(accepted_socket->IsConnected());
283 292
284 // Connection closed by peer. 293 // Connection closed by peer.
285 EXPECT_EQ(0 /* EOF */, read_callback.WaitForResult()); 294 EXPECT_EQ(0 /* EOF */, read_callback.WaitForResult());
286 // Note that read callback won't be called when the connection is closed 295 // Note that read callback won't be called when the connection is closed
287 // locally before the peer closes it. SocketPosix just clears callbacks. 296 // locally before the peer closes it. SocketPosix just clears callbacks.
288 } 297 }
289 298
290 TEST_F(UnixDomainClientSocketTest, DisconnectFromServer) { 299 TEST_F(UnixDomainClientSocketTest, DisconnectFromServer) {
291 UnixDomainServerSocket server_socket(CreateAuthCallback(true), false); 300 UnixDomainServerSocket server_socket(CreateAuthCallback(true), false);
292 EXPECT_EQ(OK, server_socket.BindAndListen(socket_path_, /*backlog=*/1)); 301 EXPECT_THAT(server_socket.BindAndListen(socket_path_, /*backlog=*/1), IsOk());
293 std::unique_ptr<StreamSocket> accepted_socket; 302 std::unique_ptr<StreamSocket> accepted_socket;
294 TestCompletionCallback accept_callback; 303 TestCompletionCallback accept_callback;
295 EXPECT_EQ(ERR_IO_PENDING, 304 EXPECT_EQ(ERR_IO_PENDING,
296 server_socket.Accept(&accepted_socket, accept_callback.callback())); 305 server_socket.Accept(&accepted_socket, accept_callback.callback()));
297 UnixDomainClientSocket client_socket(socket_path_, false); 306 UnixDomainClientSocket client_socket(socket_path_, false);
298 EXPECT_EQ(OK, ConnectSynchronously(&client_socket)); 307 EXPECT_THAT(ConnectSynchronously(&client_socket), IsOk());
299 308
300 EXPECT_EQ(OK, accept_callback.WaitForResult()); 309 EXPECT_THAT(accept_callback.WaitForResult(), IsOk());
301 EXPECT_TRUE(accepted_socket->IsConnected()); 310 EXPECT_TRUE(accepted_socket->IsConnected());
302 EXPECT_TRUE(client_socket.IsConnected()); 311 EXPECT_TRUE(client_socket.IsConnected());
303 312
304 // Try to read data. 313 // Try to read data.
305 const int kReadDataSize = 10; 314 const int kReadDataSize = 10;
306 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadDataSize)); 315 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadDataSize));
307 TestCompletionCallback read_callback; 316 TestCompletionCallback read_callback;
308 EXPECT_EQ(ERR_IO_PENDING, 317 EXPECT_EQ(ERR_IO_PENDING,
309 client_socket.Read( 318 client_socket.Read(
310 read_buffer.get(), kReadDataSize, read_callback.callback())); 319 read_buffer.get(), kReadDataSize, read_callback.callback()));
311 320
312 // Disconnect from server side. 321 // Disconnect from server side.
313 accepted_socket->Disconnect(); 322 accepted_socket->Disconnect();
314 EXPECT_FALSE(accepted_socket->IsConnected()); 323 EXPECT_FALSE(accepted_socket->IsConnected());
315 EXPECT_FALSE(client_socket.IsConnected()); 324 EXPECT_FALSE(client_socket.IsConnected());
316 325
317 // Connection closed by peer. 326 // Connection closed by peer.
318 EXPECT_EQ(0 /* EOF */, read_callback.WaitForResult()); 327 EXPECT_EQ(0 /* EOF */, read_callback.WaitForResult());
319 // Note that read callback won't be called when the connection is closed 328 // Note that read callback won't be called when the connection is closed
320 // locally before the peer closes it. SocketPosix just clears callbacks. 329 // locally before the peer closes it. SocketPosix just clears callbacks.
321 } 330 }
322 331
323 TEST_F(UnixDomainClientSocketTest, ReadAfterWrite) { 332 TEST_F(UnixDomainClientSocketTest, ReadAfterWrite) {
324 UnixDomainServerSocket server_socket(CreateAuthCallback(true), false); 333 UnixDomainServerSocket server_socket(CreateAuthCallback(true), false);
325 EXPECT_EQ(OK, server_socket.BindAndListen(socket_path_, /*backlog=*/1)); 334 EXPECT_THAT(server_socket.BindAndListen(socket_path_, /*backlog=*/1), IsOk());
326 std::unique_ptr<StreamSocket> accepted_socket; 335 std::unique_ptr<StreamSocket> accepted_socket;
327 TestCompletionCallback accept_callback; 336 TestCompletionCallback accept_callback;
328 EXPECT_EQ(ERR_IO_PENDING, 337 EXPECT_EQ(ERR_IO_PENDING,
329 server_socket.Accept(&accepted_socket, accept_callback.callback())); 338 server_socket.Accept(&accepted_socket, accept_callback.callback()));
330 UnixDomainClientSocket client_socket(socket_path_, false); 339 UnixDomainClientSocket client_socket(socket_path_, false);
331 EXPECT_EQ(OK, ConnectSynchronously(&client_socket)); 340 EXPECT_THAT(ConnectSynchronously(&client_socket), IsOk());
332 341
333 EXPECT_EQ(OK, accept_callback.WaitForResult()); 342 EXPECT_THAT(accept_callback.WaitForResult(), IsOk());
334 EXPECT_TRUE(accepted_socket->IsConnected()); 343 EXPECT_TRUE(accepted_socket->IsConnected());
335 EXPECT_TRUE(client_socket.IsConnected()); 344 EXPECT_TRUE(client_socket.IsConnected());
336 345
337 // Send data from client to server. 346 // Send data from client to server.
338 const int kWriteDataSize = 10; 347 const int kWriteDataSize = 10;
339 scoped_refptr<IOBuffer> write_buffer( 348 scoped_refptr<IOBuffer> write_buffer(
340 new StringIOBuffer(std::string(kWriteDataSize, 'd'))); 349 new StringIOBuffer(std::string(kWriteDataSize, 'd')));
341 EXPECT_EQ( 350 EXPECT_EQ(
342 kWriteDataSize, 351 kWriteDataSize,
343 WriteSynchronously(&client_socket, write_buffer.get(), kWriteDataSize)); 352 WriteSynchronously(&client_socket, write_buffer.get(), kWriteDataSize));
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 ReadSynchronously(&client_socket, read_buffer.get(), kReadBufferSize, 0)); 393 ReadSynchronously(&client_socket, read_buffer.get(), kReadBufferSize, 0));
385 394
386 // Disconnect from server side after read-write. 395 // Disconnect from server side after read-write.
387 accepted_socket->Disconnect(); 396 accepted_socket->Disconnect();
388 EXPECT_FALSE(accepted_socket->IsConnected()); 397 EXPECT_FALSE(accepted_socket->IsConnected());
389 EXPECT_FALSE(client_socket.IsConnected()); 398 EXPECT_FALSE(client_socket.IsConnected());
390 } 399 }
391 400
392 TEST_F(UnixDomainClientSocketTest, ReadBeforeWrite) { 401 TEST_F(UnixDomainClientSocketTest, ReadBeforeWrite) {
393 UnixDomainServerSocket server_socket(CreateAuthCallback(true), false); 402 UnixDomainServerSocket server_socket(CreateAuthCallback(true), false);
394 EXPECT_EQ(OK, server_socket.BindAndListen(socket_path_, /*backlog=*/1)); 403 EXPECT_THAT(server_socket.BindAndListen(socket_path_, /*backlog=*/1), IsOk());
395 std::unique_ptr<StreamSocket> accepted_socket; 404 std::unique_ptr<StreamSocket> accepted_socket;
396 TestCompletionCallback accept_callback; 405 TestCompletionCallback accept_callback;
397 EXPECT_EQ(ERR_IO_PENDING, 406 EXPECT_EQ(ERR_IO_PENDING,
398 server_socket.Accept(&accepted_socket, accept_callback.callback())); 407 server_socket.Accept(&accepted_socket, accept_callback.callback()));
399 UnixDomainClientSocket client_socket(socket_path_, false); 408 UnixDomainClientSocket client_socket(socket_path_, false);
400 EXPECT_EQ(OK, ConnectSynchronously(&client_socket)); 409 EXPECT_THAT(ConnectSynchronously(&client_socket), IsOk());
401 410
402 EXPECT_EQ(OK, accept_callback.WaitForResult()); 411 EXPECT_THAT(accept_callback.WaitForResult(), IsOk());
403 EXPECT_TRUE(accepted_socket->IsConnected()); 412 EXPECT_TRUE(accepted_socket->IsConnected());
404 EXPECT_TRUE(client_socket.IsConnected()); 413 EXPECT_TRUE(client_socket.IsConnected());
405 414
406 // Wait for data from client. 415 // Wait for data from client.
407 const int kWriteDataSize = 10; 416 const int kWriteDataSize = 10;
408 const int kReadBufferSize = kWriteDataSize * 2; 417 const int kReadBufferSize = kWriteDataSize * 2;
409 const int kSmallReadBufferSize = kWriteDataSize / 3; 418 const int kSmallReadBufferSize = kWriteDataSize / 3;
410 // Read smaller than write data size first. 419 // Read smaller than write data size first.
411 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 420 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
412 TestCompletionCallback read_callback; 421 TestCompletionCallback read_callback;
(...skipping 27 matching lines...) Expand all
440 accepted_socket.get(), read_buffer.get(), kReadBufferSize, 0)); 449 accepted_socket.get(), read_buffer.get(), kReadBufferSize, 0));
441 450
442 // Disconnect from server side after read-write. 451 // Disconnect from server side after read-write.
443 accepted_socket->Disconnect(); 452 accepted_socket->Disconnect();
444 EXPECT_FALSE(accepted_socket->IsConnected()); 453 EXPECT_FALSE(accepted_socket->IsConnected());
445 EXPECT_FALSE(client_socket.IsConnected()); 454 EXPECT_FALSE(client_socket.IsConnected());
446 } 455 }
447 456
448 } // namespace 457 } // namespace
449 } // namespace net 458 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/transport_client_socket_unittest.cc ('k') | net/socket/unix_domain_server_socket_posix_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698