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

Side by Side Diff: net/socket/tcp_server_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
« no previous file with comments | « net/socket/tcp_client_socket_unittest.cc ('k') | net/socket/tcp_socket_unittest.cc » ('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_server_socket.h" 5 #include "net/socket/tcp_server_socket.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/compiler_specific.h" 11 #include "base/compiler_specific.h"
12 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
13 #include "net/base/address_list.h" 13 #include "net/base/address_list.h"
14 #include "net/base/io_buffer.h" 14 #include "net/base/io_buffer.h"
15 #include "net/base/ip_address.h" 15 #include "net/base/ip_address.h"
16 #include "net/base/ip_endpoint.h" 16 #include "net/base/ip_endpoint.h"
17 #include "net/base/net_errors.h" 17 #include "net/base/net_errors.h"
18 #include "net/base/test_completion_callback.h" 18 #include "net/base/test_completion_callback.h"
19 #include "net/socket/tcp_client_socket.h" 19 #include "net/socket/tcp_client_socket.h"
20 #include "net/test/gtest_util.h"
21 #include "testing/gmock/include/gmock/gmock.h"
20 #include "testing/gtest/include/gtest/gtest.h" 22 #include "testing/gtest/include/gtest/gtest.h"
21 #include "testing/platform_test.h" 23 #include "testing/platform_test.h"
22 24
25 using net::test::IsOk;
26
23 namespace net { 27 namespace net {
24 28
25 namespace { 29 namespace {
26 const int kListenBacklog = 5; 30 const int kListenBacklog = 5;
27 31
28 class TCPServerSocketTest : public PlatformTest { 32 class TCPServerSocketTest : public PlatformTest {
29 protected: 33 protected:
30 TCPServerSocketTest() 34 TCPServerSocketTest()
31 : socket_(NULL, NetLog::Source()) { 35 : socket_(NULL, NetLog::Source()) {
32 } 36 }
33 37
34 void SetUpIPv4() { 38 void SetUpIPv4() {
35 IPEndPoint address(IPAddress::IPv4Localhost(), 0); 39 IPEndPoint address(IPAddress::IPv4Localhost(), 0);
36 ASSERT_EQ(OK, socket_.Listen(address, kListenBacklog)); 40 ASSERT_THAT(socket_.Listen(address, kListenBacklog), IsOk());
37 ASSERT_EQ(OK, socket_.GetLocalAddress(&local_address_)); 41 ASSERT_THAT(socket_.GetLocalAddress(&local_address_), IsOk());
38 } 42 }
39 43
40 void SetUpIPv6(bool* success) { 44 void SetUpIPv6(bool* success) {
41 *success = false; 45 *success = false;
42 IPEndPoint address(IPAddress::IPv6Localhost(), 0); 46 IPEndPoint address(IPAddress::IPv6Localhost(), 0);
43 if (socket_.Listen(address, kListenBacklog) != 0) { 47 if (socket_.Listen(address, kListenBacklog) != 0) {
44 LOG(ERROR) << "Failed to listen on ::1 - probably because IPv6 is " 48 LOG(ERROR) << "Failed to listen on ::1 - probably because IPv6 is "
45 "disabled. Skipping the test"; 49 "disabled. Skipping the test";
46 return; 50 return;
47 } 51 }
48 ASSERT_EQ(OK, socket_.GetLocalAddress(&local_address_)); 52 ASSERT_THAT(socket_.GetLocalAddress(&local_address_), IsOk());
49 *success = true; 53 *success = true;
50 } 54 }
51 55
52 static IPEndPoint GetPeerAddress(StreamSocket* socket) { 56 static IPEndPoint GetPeerAddress(StreamSocket* socket) {
53 IPEndPoint address; 57 IPEndPoint address;
54 EXPECT_EQ(OK, socket->GetPeerAddress(&address)); 58 EXPECT_THAT(socket->GetPeerAddress(&address), IsOk());
55 return address; 59 return address;
56 } 60 }
57 61
58 AddressList local_address_list() const { 62 AddressList local_address_list() const {
59 return AddressList(local_address_); 63 return AddressList(local_address_);
60 } 64 }
61 65
62 TCPServerSocket socket_; 66 TCPServerSocket socket_;
63 IPEndPoint local_address_; 67 IPEndPoint local_address_;
64 }; 68 };
65 69
66 TEST_F(TCPServerSocketTest, Accept) { 70 TEST_F(TCPServerSocketTest, Accept) {
67 ASSERT_NO_FATAL_FAILURE(SetUpIPv4()); 71 ASSERT_NO_FATAL_FAILURE(SetUpIPv4());
68 72
69 TestCompletionCallback connect_callback; 73 TestCompletionCallback connect_callback;
70 TCPClientSocket connecting_socket(local_address_list(), NULL, NULL, 74 TCPClientSocket connecting_socket(local_address_list(), NULL, NULL,
71 NetLog::Source()); 75 NetLog::Source());
72 connecting_socket.Connect(connect_callback.callback()); 76 connecting_socket.Connect(connect_callback.callback());
73 77
74 TestCompletionCallback accept_callback; 78 TestCompletionCallback accept_callback;
75 std::unique_ptr<StreamSocket> accepted_socket; 79 std::unique_ptr<StreamSocket> accepted_socket;
76 int result = socket_.Accept(&accepted_socket, accept_callback.callback()); 80 int result = socket_.Accept(&accepted_socket, accept_callback.callback());
77 if (result == ERR_IO_PENDING) 81 if (result == ERR_IO_PENDING)
78 result = accept_callback.WaitForResult(); 82 result = accept_callback.WaitForResult();
79 ASSERT_EQ(OK, result); 83 ASSERT_THAT(result, IsOk());
80 84
81 ASSERT_TRUE(accepted_socket.get() != NULL); 85 ASSERT_TRUE(accepted_socket.get() != NULL);
82 86
83 // Both sockets should be on the loopback network interface. 87 // Both sockets should be on the loopback network interface.
84 EXPECT_EQ(GetPeerAddress(accepted_socket.get()).address(), 88 EXPECT_EQ(GetPeerAddress(accepted_socket.get()).address(),
85 local_address_.address()); 89 local_address_.address());
86 90
87 EXPECT_EQ(OK, connect_callback.WaitForResult()); 91 EXPECT_THAT(connect_callback.WaitForResult(), IsOk());
88 } 92 }
89 93
90 // Test Accept() callback. 94 // Test Accept() callback.
91 TEST_F(TCPServerSocketTest, AcceptAsync) { 95 TEST_F(TCPServerSocketTest, AcceptAsync) {
92 ASSERT_NO_FATAL_FAILURE(SetUpIPv4()); 96 ASSERT_NO_FATAL_FAILURE(SetUpIPv4());
93 97
94 TestCompletionCallback accept_callback; 98 TestCompletionCallback accept_callback;
95 std::unique_ptr<StreamSocket> accepted_socket; 99 std::unique_ptr<StreamSocket> accepted_socket;
96 100
97 ASSERT_EQ(ERR_IO_PENDING, 101 ASSERT_EQ(ERR_IO_PENDING,
98 socket_.Accept(&accepted_socket, accept_callback.callback())); 102 socket_.Accept(&accepted_socket, accept_callback.callback()));
99 103
100 TestCompletionCallback connect_callback; 104 TestCompletionCallback connect_callback;
101 TCPClientSocket connecting_socket(local_address_list(), NULL, NULL, 105 TCPClientSocket connecting_socket(local_address_list(), NULL, NULL,
102 NetLog::Source()); 106 NetLog::Source());
103 connecting_socket.Connect(connect_callback.callback()); 107 connecting_socket.Connect(connect_callback.callback());
104 108
105 EXPECT_EQ(OK, connect_callback.WaitForResult()); 109 EXPECT_THAT(connect_callback.WaitForResult(), IsOk());
106 EXPECT_EQ(OK, accept_callback.WaitForResult()); 110 EXPECT_THAT(accept_callback.WaitForResult(), IsOk());
107 111
108 EXPECT_TRUE(accepted_socket != NULL); 112 EXPECT_TRUE(accepted_socket != NULL);
109 113
110 // Both sockets should be on the loopback network interface. 114 // Both sockets should be on the loopback network interface.
111 EXPECT_EQ(GetPeerAddress(accepted_socket.get()).address(), 115 EXPECT_EQ(GetPeerAddress(accepted_socket.get()).address(),
112 local_address_.address()); 116 local_address_.address());
113 } 117 }
114 118
115 // Accept two connections simultaneously. 119 // Accept two connections simultaneously.
116 TEST_F(TCPServerSocketTest, Accept2Connections) { 120 TEST_F(TCPServerSocketTest, Accept2Connections) {
117 ASSERT_NO_FATAL_FAILURE(SetUpIPv4()); 121 ASSERT_NO_FATAL_FAILURE(SetUpIPv4());
118 122
119 TestCompletionCallback accept_callback; 123 TestCompletionCallback accept_callback;
120 std::unique_ptr<StreamSocket> accepted_socket; 124 std::unique_ptr<StreamSocket> accepted_socket;
121 125
122 ASSERT_EQ(ERR_IO_PENDING, 126 ASSERT_EQ(ERR_IO_PENDING,
123 socket_.Accept(&accepted_socket, accept_callback.callback())); 127 socket_.Accept(&accepted_socket, accept_callback.callback()));
124 128
125 TestCompletionCallback connect_callback; 129 TestCompletionCallback connect_callback;
126 TCPClientSocket connecting_socket(local_address_list(), NULL, NULL, 130 TCPClientSocket connecting_socket(local_address_list(), NULL, NULL,
127 NetLog::Source()); 131 NetLog::Source());
128 connecting_socket.Connect(connect_callback.callback()); 132 connecting_socket.Connect(connect_callback.callback());
129 133
130 TestCompletionCallback connect_callback2; 134 TestCompletionCallback connect_callback2;
131 TCPClientSocket connecting_socket2(local_address_list(), NULL, NULL, 135 TCPClientSocket connecting_socket2(local_address_list(), NULL, NULL,
132 NetLog::Source()); 136 NetLog::Source());
133 connecting_socket2.Connect(connect_callback2.callback()); 137 connecting_socket2.Connect(connect_callback2.callback());
134 138
135 EXPECT_EQ(OK, accept_callback.WaitForResult()); 139 EXPECT_THAT(accept_callback.WaitForResult(), IsOk());
136 140
137 TestCompletionCallback accept_callback2; 141 TestCompletionCallback accept_callback2;
138 std::unique_ptr<StreamSocket> accepted_socket2; 142 std::unique_ptr<StreamSocket> accepted_socket2;
139 int result = socket_.Accept(&accepted_socket2, accept_callback2.callback()); 143 int result = socket_.Accept(&accepted_socket2, accept_callback2.callback());
140 if (result == ERR_IO_PENDING) 144 if (result == ERR_IO_PENDING)
141 result = accept_callback2.WaitForResult(); 145 result = accept_callback2.WaitForResult();
142 ASSERT_EQ(OK, result); 146 ASSERT_THAT(result, IsOk());
143 147
144 EXPECT_EQ(OK, connect_callback.WaitForResult()); 148 EXPECT_THAT(connect_callback.WaitForResult(), IsOk());
145 149
146 EXPECT_TRUE(accepted_socket != NULL); 150 EXPECT_TRUE(accepted_socket != NULL);
147 EXPECT_TRUE(accepted_socket2 != NULL); 151 EXPECT_TRUE(accepted_socket2 != NULL);
148 EXPECT_NE(accepted_socket.get(), accepted_socket2.get()); 152 EXPECT_NE(accepted_socket.get(), accepted_socket2.get());
149 153
150 EXPECT_EQ(GetPeerAddress(accepted_socket.get()).address(), 154 EXPECT_EQ(GetPeerAddress(accepted_socket.get()).address(),
151 local_address_.address()); 155 local_address_.address());
152 EXPECT_EQ(GetPeerAddress(accepted_socket2.get()).address(), 156 EXPECT_EQ(GetPeerAddress(accepted_socket2.get()).address(),
153 local_address_.address()); 157 local_address_.address());
154 } 158 }
155 159
156 TEST_F(TCPServerSocketTest, AcceptIPv6) { 160 TEST_F(TCPServerSocketTest, AcceptIPv6) {
157 bool initialized = false; 161 bool initialized = false;
158 ASSERT_NO_FATAL_FAILURE(SetUpIPv6(&initialized)); 162 ASSERT_NO_FATAL_FAILURE(SetUpIPv6(&initialized));
159 if (!initialized) 163 if (!initialized)
160 return; 164 return;
161 165
162 TestCompletionCallback connect_callback; 166 TestCompletionCallback connect_callback;
163 TCPClientSocket connecting_socket(local_address_list(), NULL, NULL, 167 TCPClientSocket connecting_socket(local_address_list(), NULL, NULL,
164 NetLog::Source()); 168 NetLog::Source());
165 connecting_socket.Connect(connect_callback.callback()); 169 connecting_socket.Connect(connect_callback.callback());
166 170
167 TestCompletionCallback accept_callback; 171 TestCompletionCallback accept_callback;
168 std::unique_ptr<StreamSocket> accepted_socket; 172 std::unique_ptr<StreamSocket> accepted_socket;
169 int result = socket_.Accept(&accepted_socket, accept_callback.callback()); 173 int result = socket_.Accept(&accepted_socket, accept_callback.callback());
170 if (result == ERR_IO_PENDING) 174 if (result == ERR_IO_PENDING)
171 result = accept_callback.WaitForResult(); 175 result = accept_callback.WaitForResult();
172 ASSERT_EQ(OK, result); 176 ASSERT_THAT(result, IsOk());
173 177
174 ASSERT_TRUE(accepted_socket.get() != NULL); 178 ASSERT_TRUE(accepted_socket.get() != NULL);
175 179
176 // Both sockets should be on the loopback network interface. 180 // Both sockets should be on the loopback network interface.
177 EXPECT_EQ(GetPeerAddress(accepted_socket.get()).address(), 181 EXPECT_EQ(GetPeerAddress(accepted_socket.get()).address(),
178 local_address_.address()); 182 local_address_.address());
179 183
180 EXPECT_EQ(OK, connect_callback.WaitForResult()); 184 EXPECT_THAT(connect_callback.WaitForResult(), IsOk());
181 } 185 }
182 186
183 TEST_F(TCPServerSocketTest, AcceptIO) { 187 TEST_F(TCPServerSocketTest, AcceptIO) {
184 ASSERT_NO_FATAL_FAILURE(SetUpIPv4()); 188 ASSERT_NO_FATAL_FAILURE(SetUpIPv4());
185 189
186 TestCompletionCallback connect_callback; 190 TestCompletionCallback connect_callback;
187 TCPClientSocket connecting_socket(local_address_list(), NULL, NULL, 191 TCPClientSocket connecting_socket(local_address_list(), NULL, NULL,
188 NetLog::Source()); 192 NetLog::Source());
189 connecting_socket.Connect(connect_callback.callback()); 193 connecting_socket.Connect(connect_callback.callback());
190 194
191 TestCompletionCallback accept_callback; 195 TestCompletionCallback accept_callback;
192 std::unique_ptr<StreamSocket> accepted_socket; 196 std::unique_ptr<StreamSocket> accepted_socket;
193 int result = socket_.Accept(&accepted_socket, accept_callback.callback()); 197 int result = socket_.Accept(&accepted_socket, accept_callback.callback());
194 ASSERT_EQ(OK, accept_callback.GetResult(result)); 198 ASSERT_THAT(accept_callback.GetResult(result), IsOk());
195 199
196 ASSERT_TRUE(accepted_socket.get() != NULL); 200 ASSERT_TRUE(accepted_socket.get() != NULL);
197 201
198 // Both sockets should be on the loopback network interface. 202 // Both sockets should be on the loopback network interface.
199 EXPECT_EQ(GetPeerAddress(accepted_socket.get()).address(), 203 EXPECT_EQ(GetPeerAddress(accepted_socket.get()).address(),
200 local_address_.address()); 204 local_address_.address());
201 205
202 EXPECT_EQ(OK, connect_callback.WaitForResult()); 206 EXPECT_THAT(connect_callback.WaitForResult(), IsOk());
203 207
204 const std::string message("test message"); 208 const std::string message("test message");
205 std::vector<char> buffer(message.size()); 209 std::vector<char> buffer(message.size());
206 210
207 size_t bytes_written = 0; 211 size_t bytes_written = 0;
208 while (bytes_written < message.size()) { 212 while (bytes_written < message.size()) {
209 scoped_refptr<IOBufferWithSize> write_buffer( 213 scoped_refptr<IOBufferWithSize> write_buffer(
210 new IOBufferWithSize(message.size() - bytes_written)); 214 new IOBufferWithSize(message.size() - bytes_written));
211 memmove(write_buffer->data(), message.data(), message.size()); 215 memmove(write_buffer->data(), message.data(), message.size());
212 216
(...skipping 20 matching lines...) Expand all
233 bytes_read += read_result; 237 bytes_read += read_result;
234 } 238 }
235 239
236 std::string received_message(buffer.begin(), buffer.end()); 240 std::string received_message(buffer.begin(), buffer.end());
237 ASSERT_EQ(message, received_message); 241 ASSERT_EQ(message, received_message);
238 } 242 }
239 243
240 } // namespace 244 } // namespace
241 245
242 } // namespace net 246 } // namespace net
OLDNEW
« no previous file with comments | « net/socket/tcp_client_socket_unittest.cc ('k') | net/socket/tcp_socket_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698