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

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

Issue 503113004: Remove implicit conversions from scoped_refptr to T* in net/socket/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 "base/bind.h" 9 #include "base/bind.h"
10 #include "base/files/file_path.h" 10 #include "base/files/file_path.h"
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 scoped_refptr<DrainableIOBuffer> read_buf( 55 scoped_refptr<DrainableIOBuffer> read_buf(
56 new DrainableIOBuffer(buf, buf_len)); 56 new DrainableIOBuffer(buf, buf_len));
57 TestCompletionCallback read_callback; 57 TestCompletionCallback read_callback;
58 // Iterate reading several times (but not infinite) until it reads at least 58 // Iterate reading several times (but not infinite) until it reads at least
59 // |min_data_len| bytes into |buf|. 59 // |min_data_len| bytes into |buf|.
60 for (int retry_count = 10; 60 for (int retry_count = 10;
61 retry_count > 0 && (read_buf->BytesConsumed() < min_data_len || 61 retry_count > 0 && (read_buf->BytesConsumed() < min_data_len ||
62 // Try at least once when min_data_len == 0. 62 // Try at least once when min_data_len == 0.
63 min_data_len == 0); 63 min_data_len == 0);
64 --retry_count) { 64 --retry_count) {
65 int rv = socket->Read(read_buf, read_buf->BytesRemaining(), 65 int rv = socket->Read(
66 read_callback.callback()); 66 read_buf.get(), read_buf->BytesRemaining(), read_callback.callback());
67 EXPECT_GE(read_buf->BytesRemaining(), rv); 67 EXPECT_GE(read_buf->BytesRemaining(), rv);
68 if (rv == ERR_IO_PENDING) { 68 if (rv == ERR_IO_PENDING) {
69 // If |min_data_len| is 0, returns ERR_IO_PENDING to distinguish the case 69 // If |min_data_len| is 0, returns ERR_IO_PENDING to distinguish the case
70 // when some data has been read. 70 // when some data has been read.
71 if (min_data_len == 0) { 71 if (min_data_len == 0) {
72 // No data has been read because of for-loop condition. 72 // No data has been read because of for-loop condition.
73 DCHECK_EQ(0, read_buf->BytesConsumed()); 73 DCHECK_EQ(0, read_buf->BytesConsumed());
74 return ERR_IO_PENDING; 74 return ERR_IO_PENDING;
75 } 75 }
76 rv = read_callback.WaitForResult(); 76 rv = read_callback.WaitForResult();
(...skipping 12 matching lines...) Expand all
89 int WriteSynchronously(StreamSocket* socket, 89 int WriteSynchronously(StreamSocket* socket,
90 IOBuffer* buf, 90 IOBuffer* buf,
91 int buf_len) { 91 int buf_len) {
92 scoped_refptr<DrainableIOBuffer> write_buf( 92 scoped_refptr<DrainableIOBuffer> write_buf(
93 new DrainableIOBuffer(buf, buf_len)); 93 new DrainableIOBuffer(buf, buf_len));
94 TestCompletionCallback write_callback; 94 TestCompletionCallback write_callback;
95 // Iterate writing several times (but not infinite) until it writes buf fully. 95 // Iterate writing several times (but not infinite) until it writes buf fully.
96 for (int retry_count = 10; 96 for (int retry_count = 10;
97 retry_count > 0 && write_buf->BytesRemaining() > 0; 97 retry_count > 0 && write_buf->BytesRemaining() > 0;
98 --retry_count) { 98 --retry_count) {
99 int rv = socket->Write(write_buf, write_buf->BytesRemaining(), 99 int rv = socket->Write(write_buf.get(),
100 write_buf->BytesRemaining(),
100 write_callback.callback()); 101 write_callback.callback());
101 EXPECT_GE(write_buf->BytesRemaining(), rv); 102 EXPECT_GE(write_buf->BytesRemaining(), rv);
102 if (rv == ERR_IO_PENDING) 103 if (rv == ERR_IO_PENDING)
103 rv = write_callback.WaitForResult(); 104 rv = write_callback.WaitForResult();
104 EXPECT_NE(ERR_IO_PENDING, rv); 105 EXPECT_NE(ERR_IO_PENDING, rv);
105 if (rv < 0) 106 if (rv < 0)
106 return rv; 107 return rv;
107 write_buf->DidConsume(rv); 108 write_buf->DidConsume(rv);
108 } 109 }
109 EXPECT_LE(0, write_buf->BytesRemaining()); 110 EXPECT_LE(0, write_buf->BytesRemaining());
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 213
213 EXPECT_EQ(OK, accept_callback.WaitForResult()); 214 EXPECT_EQ(OK, accept_callback.WaitForResult());
214 EXPECT_TRUE(accepted_socket->IsConnected()); 215 EXPECT_TRUE(accepted_socket->IsConnected());
215 EXPECT_TRUE(client_socket.IsConnected()); 216 EXPECT_TRUE(client_socket.IsConnected());
216 217
217 // Try to read data. 218 // Try to read data.
218 const int kReadDataSize = 10; 219 const int kReadDataSize = 10;
219 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadDataSize)); 220 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadDataSize));
220 TestCompletionCallback read_callback; 221 TestCompletionCallback read_callback;
221 EXPECT_EQ(ERR_IO_PENDING, 222 EXPECT_EQ(ERR_IO_PENDING,
222 accepted_socket->Read(read_buffer, kReadDataSize, 223 accepted_socket->Read(
223 read_callback.callback())); 224 read_buffer.get(), kReadDataSize, read_callback.callback()));
224 225
225 // Disconnect from client side. 226 // Disconnect from client side.
226 client_socket.Disconnect(); 227 client_socket.Disconnect();
227 EXPECT_FALSE(client_socket.IsConnected()); 228 EXPECT_FALSE(client_socket.IsConnected());
228 EXPECT_FALSE(accepted_socket->IsConnected()); 229 EXPECT_FALSE(accepted_socket->IsConnected());
229 230
230 // Connection closed by peer. 231 // Connection closed by peer.
231 EXPECT_EQ(0 /* EOF */, read_callback.WaitForResult()); 232 EXPECT_EQ(0 /* EOF */, read_callback.WaitForResult());
232 // Note that read callback won't be called when the connection is closed 233 // Note that read callback won't be called when the connection is closed
233 // locally before the peer closes it. SocketLibevent just clears callbacks. 234 // locally before the peer closes it. SocketLibevent just clears callbacks.
(...skipping 11 matching lines...) Expand all
245 246
246 EXPECT_EQ(OK, accept_callback.WaitForResult()); 247 EXPECT_EQ(OK, accept_callback.WaitForResult());
247 EXPECT_TRUE(accepted_socket->IsConnected()); 248 EXPECT_TRUE(accepted_socket->IsConnected());
248 EXPECT_TRUE(client_socket.IsConnected()); 249 EXPECT_TRUE(client_socket.IsConnected());
249 250
250 // Try to read data. 251 // Try to read data.
251 const int kReadDataSize = 10; 252 const int kReadDataSize = 10;
252 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadDataSize)); 253 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadDataSize));
253 TestCompletionCallback read_callback; 254 TestCompletionCallback read_callback;
254 EXPECT_EQ(ERR_IO_PENDING, 255 EXPECT_EQ(ERR_IO_PENDING,
255 client_socket.Read(read_buffer, kReadDataSize, 256 client_socket.Read(
256 read_callback.callback())); 257 read_buffer.get(), kReadDataSize, read_callback.callback()));
257 258
258 // Disconnect from server side. 259 // Disconnect from server side.
259 accepted_socket->Disconnect(); 260 accepted_socket->Disconnect();
260 EXPECT_FALSE(accepted_socket->IsConnected()); 261 EXPECT_FALSE(accepted_socket->IsConnected());
261 EXPECT_FALSE(client_socket.IsConnected()); 262 EXPECT_FALSE(client_socket.IsConnected());
262 263
263 // Connection closed by peer. 264 // Connection closed by peer.
264 EXPECT_EQ(0 /* EOF */, read_callback.WaitForResult()); 265 EXPECT_EQ(0 /* EOF */, read_callback.WaitForResult());
265 // Note that read callback won't be called when the connection is closed 266 // Note that read callback won't be called when the connection is closed
266 // locally before the peer closes it. SocketLibevent just clears callbacks. 267 // locally before the peer closes it. SocketLibevent just clears callbacks.
(...skipping 10 matching lines...) Expand all
277 EXPECT_EQ(OK, ConnectSynchronously(&client_socket)); 278 EXPECT_EQ(OK, ConnectSynchronously(&client_socket));
278 279
279 EXPECT_EQ(OK, accept_callback.WaitForResult()); 280 EXPECT_EQ(OK, accept_callback.WaitForResult());
280 EXPECT_TRUE(accepted_socket->IsConnected()); 281 EXPECT_TRUE(accepted_socket->IsConnected());
281 EXPECT_TRUE(client_socket.IsConnected()); 282 EXPECT_TRUE(client_socket.IsConnected());
282 283
283 // Send data from client to server. 284 // Send data from client to server.
284 const int kWriteDataSize = 10; 285 const int kWriteDataSize = 10;
285 scoped_refptr<IOBuffer> write_buffer( 286 scoped_refptr<IOBuffer> write_buffer(
286 new StringIOBuffer(std::string(kWriteDataSize, 'd'))); 287 new StringIOBuffer(std::string(kWriteDataSize, 'd')));
287 EXPECT_EQ(kWriteDataSize, 288 EXPECT_EQ(
288 WriteSynchronously(&client_socket, 289 kWriteDataSize,
289 write_buffer, 290 WriteSynchronously(&client_socket, write_buffer.get(), kWriteDataSize));
290 kWriteDataSize));
291 291
292 // The buffer is bigger than write data size. 292 // The buffer is bigger than write data size.
293 const int kReadBufferSize = kWriteDataSize * 2; 293 const int kReadBufferSize = kWriteDataSize * 2;
294 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 294 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
295 EXPECT_EQ(kWriteDataSize, 295 EXPECT_EQ(kWriteDataSize,
296 ReadSynchronously(accepted_socket.get(), 296 ReadSynchronously(accepted_socket.get(),
297 read_buffer, 297 read_buffer.get(),
298 kReadBufferSize, 298 kReadBufferSize,
299 kWriteDataSize)); 299 kWriteDataSize));
300 EXPECT_EQ(std::string(write_buffer->data(), kWriteDataSize), 300 EXPECT_EQ(std::string(write_buffer->data(), kWriteDataSize),
301 std::string(read_buffer->data(), kWriteDataSize)); 301 std::string(read_buffer->data(), kWriteDataSize));
302 302
303 // Send data from server and client. 303 // Send data from server and client.
304 EXPECT_EQ(kWriteDataSize, 304 EXPECT_EQ(kWriteDataSize,
305 WriteSynchronously(accepted_socket.get(), 305 WriteSynchronously(
306 write_buffer, 306 accepted_socket.get(), write_buffer.get(), kWriteDataSize));
307 kWriteDataSize));
308 307
309 // Read multiple times. 308 // Read multiple times.
310 const int kSmallReadBufferSize = kWriteDataSize / 3; 309 const int kSmallReadBufferSize = kWriteDataSize / 3;
311 EXPECT_EQ(kSmallReadBufferSize, 310 EXPECT_EQ(kSmallReadBufferSize,
312 ReadSynchronously(&client_socket, 311 ReadSynchronously(&client_socket,
313 read_buffer, 312 read_buffer.get(),
314 kSmallReadBufferSize, 313 kSmallReadBufferSize,
315 kSmallReadBufferSize)); 314 kSmallReadBufferSize));
316 EXPECT_EQ(std::string(write_buffer->data(), kSmallReadBufferSize), 315 EXPECT_EQ(std::string(write_buffer->data(), kSmallReadBufferSize),
317 std::string(read_buffer->data(), kSmallReadBufferSize)); 316 std::string(read_buffer->data(), kSmallReadBufferSize));
318 317
319 EXPECT_EQ(kWriteDataSize - kSmallReadBufferSize, 318 EXPECT_EQ(kWriteDataSize - kSmallReadBufferSize,
320 ReadSynchronously(&client_socket, 319 ReadSynchronously(&client_socket,
321 read_buffer, 320 read_buffer.get(),
322 kReadBufferSize, 321 kReadBufferSize,
323 kWriteDataSize - kSmallReadBufferSize)); 322 kWriteDataSize - kSmallReadBufferSize));
324 EXPECT_EQ(std::string(write_buffer->data() + kSmallReadBufferSize, 323 EXPECT_EQ(std::string(write_buffer->data() + kSmallReadBufferSize,
325 kWriteDataSize - kSmallReadBufferSize), 324 kWriteDataSize - kSmallReadBufferSize),
326 std::string(read_buffer->data(), 325 std::string(read_buffer->data(),
327 kWriteDataSize - kSmallReadBufferSize)); 326 kWriteDataSize - kSmallReadBufferSize));
328 327
329 // No more data. 328 // No more data.
330 EXPECT_EQ(ERR_IO_PENDING, 329 EXPECT_EQ(
331 ReadSynchronously(&client_socket, 330 ERR_IO_PENDING,
332 read_buffer, 331 ReadSynchronously(&client_socket, read_buffer.get(), kReadBufferSize, 0));
333 kReadBufferSize,
334 0));
335 332
336 // Disconnect from server side after read-write. 333 // Disconnect from server side after read-write.
337 accepted_socket->Disconnect(); 334 accepted_socket->Disconnect();
338 EXPECT_FALSE(accepted_socket->IsConnected()); 335 EXPECT_FALSE(accepted_socket->IsConnected());
339 EXPECT_FALSE(client_socket.IsConnected()); 336 EXPECT_FALSE(client_socket.IsConnected());
340 } 337 }
341 338
342 TEST_F(UnixDomainClientSocketTest, ReadBeforeWrite) { 339 TEST_F(UnixDomainClientSocketTest, ReadBeforeWrite) {
343 UnixDomainServerSocket server_socket(CreateAuthCallback(true), false); 340 UnixDomainServerSocket server_socket(CreateAuthCallback(true), false);
344 EXPECT_EQ(OK, server_socket.ListenWithAddressAndPort(socket_path_, 0, 1)); 341 EXPECT_EQ(OK, server_socket.ListenWithAddressAndPort(socket_path_, 0, 1));
345 scoped_ptr<StreamSocket> accepted_socket; 342 scoped_ptr<StreamSocket> accepted_socket;
346 TestCompletionCallback accept_callback; 343 TestCompletionCallback accept_callback;
347 EXPECT_EQ(ERR_IO_PENDING, 344 EXPECT_EQ(ERR_IO_PENDING,
348 server_socket.Accept(&accepted_socket, accept_callback.callback())); 345 server_socket.Accept(&accepted_socket, accept_callback.callback()));
349 UnixDomainClientSocket client_socket(socket_path_, false); 346 UnixDomainClientSocket client_socket(socket_path_, false);
350 EXPECT_EQ(OK, ConnectSynchronously(&client_socket)); 347 EXPECT_EQ(OK, ConnectSynchronously(&client_socket));
351 348
352 EXPECT_EQ(OK, accept_callback.WaitForResult()); 349 EXPECT_EQ(OK, accept_callback.WaitForResult());
353 EXPECT_TRUE(accepted_socket->IsConnected()); 350 EXPECT_TRUE(accepted_socket->IsConnected());
354 EXPECT_TRUE(client_socket.IsConnected()); 351 EXPECT_TRUE(client_socket.IsConnected());
355 352
356 // Wait for data from client. 353 // Wait for data from client.
357 const int kWriteDataSize = 10; 354 const int kWriteDataSize = 10;
358 const int kReadBufferSize = kWriteDataSize * 2; 355 const int kReadBufferSize = kWriteDataSize * 2;
359 const int kSmallReadBufferSize = kWriteDataSize / 3; 356 const int kSmallReadBufferSize = kWriteDataSize / 3;
360 // Read smaller than write data size first. 357 // Read smaller than write data size first.
361 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize)); 358 scoped_refptr<IOBuffer> read_buffer(new IOBuffer(kReadBufferSize));
362 TestCompletionCallback read_callback; 359 TestCompletionCallback read_callback;
363 EXPECT_EQ(ERR_IO_PENDING, 360 EXPECT_EQ(
364 accepted_socket->Read(read_buffer, kSmallReadBufferSize, 361 ERR_IO_PENDING,
365 read_callback.callback())); 362 accepted_socket->Read(
363 read_buffer.get(), kSmallReadBufferSize, read_callback.callback()));
366 364
367 scoped_refptr<IOBuffer> write_buffer( 365 scoped_refptr<IOBuffer> write_buffer(
368 new StringIOBuffer(std::string(kWriteDataSize, 'd'))); 366 new StringIOBuffer(std::string(kWriteDataSize, 'd')));
369 EXPECT_EQ(kWriteDataSize, 367 EXPECT_EQ(
370 WriteSynchronously(&client_socket, 368 kWriteDataSize,
371 write_buffer, 369 WriteSynchronously(&client_socket, write_buffer.get(), kWriteDataSize));
372 kWriteDataSize));
373 370
374 // First read completed. 371 // First read completed.
375 int rv = read_callback.WaitForResult(); 372 int rv = read_callback.WaitForResult();
376 EXPECT_LT(0, rv); 373 EXPECT_LT(0, rv);
377 EXPECT_LE(rv, kSmallReadBufferSize); 374 EXPECT_LE(rv, kSmallReadBufferSize);
378 375
379 // Read remaining data. 376 // Read remaining data.
380 const int kExpectedRemainingDataSize = kWriteDataSize - rv; 377 const int kExpectedRemainingDataSize = kWriteDataSize - rv;
381 EXPECT_LE(0, kExpectedRemainingDataSize); 378 EXPECT_LE(0, kExpectedRemainingDataSize);
382 EXPECT_EQ(kExpectedRemainingDataSize, 379 EXPECT_EQ(kExpectedRemainingDataSize,
383 ReadSynchronously(accepted_socket.get(), 380 ReadSynchronously(accepted_socket.get(),
384 read_buffer, 381 read_buffer.get(),
385 kReadBufferSize, 382 kReadBufferSize,
386 kExpectedRemainingDataSize)); 383 kExpectedRemainingDataSize));
387 // No more data. 384 // No more data.
388 EXPECT_EQ(ERR_IO_PENDING, 385 EXPECT_EQ(ERR_IO_PENDING,
389 ReadSynchronously(accepted_socket.get(), 386 ReadSynchronously(
390 read_buffer, 387 accepted_socket.get(), read_buffer.get(), kReadBufferSize, 0));
391 kReadBufferSize,
392 0));
393 388
394 // Disconnect from server side after read-write. 389 // Disconnect from server side after read-write.
395 accepted_socket->Disconnect(); 390 accepted_socket->Disconnect();
396 EXPECT_FALSE(accepted_socket->IsConnected()); 391 EXPECT_FALSE(accepted_socket->IsConnected());
397 EXPECT_FALSE(client_socket.IsConnected()); 392 EXPECT_FALSE(client_socket.IsConnected());
398 } 393 }
399 394
400 } // namespace 395 } // namespace
401 } // namespace net 396 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/tcp_socket_libevent.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