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

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

Issue 20142003: Remove ref-counting from StreamListenSocket (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed comments Created 7 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 | Annotate | Revision Log
« no previous file with comments | « net/socket/tcp_listen_socket_unittest.cc ('k') | net/socket/unix_domain_socket_posix.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/tcp_client_socket.h" 5 #include "net/socket/tcp_client_socket.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/memory/ref_counted.h" 8 #include "base/memory/ref_counted.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "net/base/address_list.h" 10 #include "net/base/address_list.h"
(...skipping 30 matching lines...) Expand all
41 : listen_port_(0), 41 : listen_port_(0),
42 socket_factory_(ClientSocketFactory::GetDefaultFactory()), 42 socket_factory_(ClientSocketFactory::GetDefaultFactory()),
43 close_server_socket_on_next_send_(false) { 43 close_server_socket_on_next_send_(false) {
44 } 44 }
45 45
46 virtual ~TransportClientSocketTest() { 46 virtual ~TransportClientSocketTest() {
47 } 47 }
48 48
49 // Implement StreamListenSocket::Delegate methods 49 // Implement StreamListenSocket::Delegate methods
50 virtual void DidAccept(StreamListenSocket* server, 50 virtual void DidAccept(StreamListenSocket* server,
51 StreamListenSocket* connection) OVERRIDE { 51 scoped_ptr<StreamListenSocket> connection) OVERRIDE {
52 connected_sock_ = reinterpret_cast<TCPListenSocket*>(connection); 52 connected_sock_.reset(
53 static_cast<TCPListenSocket*>(connection.release()));
53 } 54 }
54 virtual void DidRead(StreamListenSocket*, const char* str, int len) OVERRIDE { 55 virtual void DidRead(StreamListenSocket*, const char* str, int len) OVERRIDE {
55 // TODO(dkegel): this might not be long enough to tickle some bugs. 56 // TODO(dkegel): this might not be long enough to tickle some bugs.
56 connected_sock_->Send(kServerReply, arraysize(kServerReply) - 1, 57 connected_sock_->Send(kServerReply, arraysize(kServerReply) - 1,
57 false /* Don't append line feed */); 58 false /* Don't append line feed */);
58 if (close_server_socket_on_next_send_) 59 if (close_server_socket_on_next_send_)
59 CloseServerSocket(); 60 CloseServerSocket();
60 } 61 }
61 virtual void DidClose(StreamListenSocket* sock) OVERRIDE {} 62 virtual void DidClose(StreamListenSocket* sock) OVERRIDE {}
62 63
63 // Testcase hooks 64 // Testcase hooks
64 virtual void SetUp(); 65 virtual void SetUp();
65 66
66 void CloseServerSocket() { 67 void CloseServerSocket() {
67 // delete the connected_sock_, which will close it. 68 // delete the connected_sock_, which will close it.
68 connected_sock_ = NULL; 69 connected_sock_.reset();
69 } 70 }
70 71
71 void PauseServerReads() { 72 void PauseServerReads() {
72 connected_sock_->PauseReads(); 73 connected_sock_->PauseReads();
73 } 74 }
74 75
75 void ResumeServerReads() { 76 void ResumeServerReads() {
76 connected_sock_->ResumeReads(); 77 connected_sock_->ResumeReads();
77 } 78 }
78 79
79 int DrainClientSocket(IOBuffer* buf, 80 int DrainClientSocket(IOBuffer* buf,
80 uint32 buf_len, 81 uint32 buf_len,
81 uint32 bytes_to_read, 82 uint32 bytes_to_read,
82 TestCompletionCallback* callback); 83 TestCompletionCallback* callback);
83 84
84 void SendClientRequest(); 85 void SendClientRequest();
85 86
86 void set_close_server_socket_on_next_send(bool close) { 87 void set_close_server_socket_on_next_send(bool close) {
87 close_server_socket_on_next_send_ = close; 88 close_server_socket_on_next_send_ = close;
88 } 89 }
89 90
90 protected: 91 protected:
91 int listen_port_; 92 int listen_port_;
92 CapturingNetLog net_log_; 93 CapturingNetLog net_log_;
93 ClientSocketFactory* const socket_factory_; 94 ClientSocketFactory* const socket_factory_;
94 scoped_ptr<StreamSocket> sock_; 95 scoped_ptr<StreamSocket> sock_;
95 96
96 private: 97 private:
97 scoped_refptr<TCPListenSocket> listen_sock_; 98 scoped_ptr<TCPListenSocket> listen_sock_;
98 scoped_refptr<TCPListenSocket> connected_sock_; 99 scoped_ptr<TCPListenSocket> connected_sock_;
99 bool close_server_socket_on_next_send_; 100 bool close_server_socket_on_next_send_;
100 }; 101 };
101 102
102 void TransportClientSocketTest::SetUp() { 103 void TransportClientSocketTest::SetUp() {
103 ::testing::TestWithParam<ClientSocketTestTypes>::SetUp(); 104 ::testing::TestWithParam<ClientSocketTestTypes>::SetUp();
104 105
105 // Find a free port to listen on 106 // Find a free port to listen on
106 scoped_refptr<TCPListenSocket> sock; 107 scoped_ptr<TCPListenSocket> sock;
107 int port; 108 int port;
108 // Range of ports to listen on. Shouldn't need to try many. 109 // Range of ports to listen on. Shouldn't need to try many.
109 const int kMinPort = 10100; 110 const int kMinPort = 10100;
110 const int kMaxPort = 10200; 111 const int kMaxPort = 10200;
111 #if defined(OS_WIN) 112 #if defined(OS_WIN)
112 EnsureWinsockInit(); 113 EnsureWinsockInit();
113 #endif 114 #endif
114 for (port = kMinPort; port < kMaxPort; port++) { 115 for (port = kMinPort; port < kMaxPort; port++) {
115 sock = TCPListenSocket::CreateAndListen("127.0.0.1", port, this); 116 sock = TCPListenSocket::CreateAndListen("127.0.0.1", port, this);
116 if (sock.get()) 117 if (sock.get())
117 break; 118 break;
118 } 119 }
119 ASSERT_TRUE(sock.get() != NULL); 120 ASSERT_TRUE(sock.get() != NULL);
120 listen_sock_ = sock; 121 listen_sock_ = sock.Pass();
121 listen_port_ = port; 122 listen_port_ = port;
122 123
123 AddressList addr; 124 AddressList addr;
124 // MockHostResolver resolves everything to 127.0.0.1. 125 // MockHostResolver resolves everything to 127.0.0.1.
125 scoped_ptr<HostResolver> resolver(new MockHostResolver()); 126 scoped_ptr<HostResolver> resolver(new MockHostResolver());
126 HostResolver::RequestInfo info(HostPortPair("localhost", listen_port_)); 127 HostResolver::RequestInfo info(HostPortPair("localhost", listen_port_));
127 TestCompletionCallback callback; 128 TestCompletionCallback callback;
128 int rv = resolver->Resolve( 129 int rv = resolver->Resolve(
129 info, DEFAULT_PRIORITY, &addr, callback.callback(), NULL, BoundNetLog()); 130 info, DEFAULT_PRIORITY, &addr, callback.callback(), NULL, BoundNetLog());
130 CHECK_EQ(ERR_IO_PENDING, rv); 131 CHECK_EQ(ERR_IO_PENDING, rv);
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
440 441
441 // It's possible the read is blocked because it's already read all the data. 442 // It's possible the read is blocked because it's already read all the data.
442 // Close the server socket, so there will at least be a 0-byte read. 443 // Close the server socket, so there will at least be a 0-byte read.
443 CloseServerSocket(); 444 CloseServerSocket();
444 445
445 rv = callback.WaitForResult(); 446 rv = callback.WaitForResult();
446 EXPECT_GE(rv, 0); 447 EXPECT_GE(rv, 0);
447 } 448 }
448 449
449 } // namespace net 450 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/tcp_listen_socket_unittest.cc ('k') | net/socket/unix_domain_socket_posix.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698