OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. |
3 * | 3 * |
4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
9 */ | 9 */ |
10 | 10 |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
178 | 178 |
179 TEST_F(PhysicalSocketTest, TestConnectWithDnsLookupIPv6) { | 179 TEST_F(PhysicalSocketTest, TestConnectWithDnsLookupIPv6) { |
180 SocketTest::TestConnectWithDnsLookupIPv6(); | 180 SocketTest::TestConnectWithDnsLookupIPv6(); |
181 } | 181 } |
182 | 182 |
183 TEST_F(PhysicalSocketTest, TestConnectFailIPv4) { | 183 TEST_F(PhysicalSocketTest, TestConnectFailIPv4) { |
184 SocketTest::TestConnectFailIPv4(); | 184 SocketTest::TestConnectFailIPv4(); |
185 } | 185 } |
186 | 186 |
187 void PhysicalSocketTest::ConnectInternalAcceptError(const IPAddress& loopback) { | 187 void PhysicalSocketTest::ConnectInternalAcceptError(const IPAddress& loopback) { |
188 testing::StreamSink sink; | 188 webrtc::testing::StreamSink sink; |
189 SocketAddress accept_addr; | 189 SocketAddress accept_addr; |
190 | 190 |
191 // Create two clients. | 191 // Create two clients. |
192 std::unique_ptr<AsyncSocket> client1( | 192 std::unique_ptr<AsyncSocket> client1( |
193 server_->CreateAsyncSocket(loopback.family(), SOCK_STREAM)); | 193 server_->CreateAsyncSocket(loopback.family(), SOCK_STREAM)); |
194 sink.Monitor(client1.get()); | 194 sink.Monitor(client1.get()); |
195 EXPECT_EQ(AsyncSocket::CS_CLOSED, client1->GetState()); | 195 EXPECT_EQ(AsyncSocket::CS_CLOSED, client1->GetState()); |
196 EXPECT_PRED1(IsUnspecOrEmptyIP, client1->GetLocalAddress().ipaddr()); | 196 EXPECT_PRED1(IsUnspecOrEmptyIP, client1->GetLocalAddress().ipaddr()); |
197 | 197 |
198 std::unique_ptr<AsyncSocket> client2( | 198 std::unique_ptr<AsyncSocket> client2( |
199 server_->CreateAsyncSocket(loopback.family(), SOCK_STREAM)); | 199 server_->CreateAsyncSocket(loopback.family(), SOCK_STREAM)); |
200 sink.Monitor(client2.get()); | 200 sink.Monitor(client2.get()); |
201 EXPECT_EQ(AsyncSocket::CS_CLOSED, client2->GetState()); | 201 EXPECT_EQ(AsyncSocket::CS_CLOSED, client2->GetState()); |
202 EXPECT_PRED1(IsUnspecOrEmptyIP, client2->GetLocalAddress().ipaddr()); | 202 EXPECT_PRED1(IsUnspecOrEmptyIP, client2->GetLocalAddress().ipaddr()); |
203 | 203 |
204 // Create server and listen. | 204 // Create server and listen. |
205 std::unique_ptr<AsyncSocket> server( | 205 std::unique_ptr<AsyncSocket> server( |
206 server_->CreateAsyncSocket(loopback.family(), SOCK_STREAM)); | 206 server_->CreateAsyncSocket(loopback.family(), SOCK_STREAM)); |
207 sink.Monitor(server.get()); | 207 sink.Monitor(server.get()); |
208 EXPECT_EQ(0, server->Bind(SocketAddress(loopback, 0))); | 208 EXPECT_EQ(0, server->Bind(SocketAddress(loopback, 0))); |
209 EXPECT_EQ(0, server->Listen(5)); | 209 EXPECT_EQ(0, server->Listen(5)); |
210 EXPECT_EQ(AsyncSocket::CS_CONNECTING, server->GetState()); | 210 EXPECT_EQ(AsyncSocket::CS_CONNECTING, server->GetState()); |
211 | 211 |
212 // Ensure no pending server connections, since we haven't done anything yet. | 212 // Ensure no pending server connections, since we haven't done anything yet. |
213 EXPECT_FALSE(sink.Check(server.get(), testing::SSE_READ)); | 213 EXPECT_FALSE(sink.Check(server.get(), webrtc::testing::SSE_READ)); |
214 EXPECT_TRUE(nullptr == server->Accept(&accept_addr)); | 214 EXPECT_TRUE(nullptr == server->Accept(&accept_addr)); |
215 EXPECT_TRUE(accept_addr.IsNil()); | 215 EXPECT_TRUE(accept_addr.IsNil()); |
216 | 216 |
217 // Attempt first connect to listening socket. | 217 // Attempt first connect to listening socket. |
218 EXPECT_EQ(0, client1->Connect(server->GetLocalAddress())); | 218 EXPECT_EQ(0, client1->Connect(server->GetLocalAddress())); |
219 EXPECT_FALSE(client1->GetLocalAddress().IsNil()); | 219 EXPECT_FALSE(client1->GetLocalAddress().IsNil()); |
220 EXPECT_NE(server->GetLocalAddress(), client1->GetLocalAddress()); | 220 EXPECT_NE(server->GetLocalAddress(), client1->GetLocalAddress()); |
221 | 221 |
222 // Client is connecting, outcome not yet determined. | 222 // Client is connecting, outcome not yet determined. |
223 EXPECT_EQ(AsyncSocket::CS_CONNECTING, client1->GetState()); | 223 EXPECT_EQ(AsyncSocket::CS_CONNECTING, client1->GetState()); |
224 EXPECT_FALSE(sink.Check(client1.get(), testing::SSE_OPEN)); | 224 EXPECT_FALSE(sink.Check(client1.get(), webrtc::testing::SSE_OPEN)); |
225 EXPECT_FALSE(sink.Check(client1.get(), testing::SSE_CLOSE)); | 225 EXPECT_FALSE(sink.Check(client1.get(), webrtc::testing::SSE_CLOSE)); |
226 | 226 |
227 // Server has pending connection, try to accept it (will fail). | 227 // Server has pending connection, try to accept it (will fail). |
228 EXPECT_TRUE_WAIT((sink.Check(server.get(), testing::SSE_READ)), kTimeout); | 228 EXPECT_TRUE_WAIT((sink.Check(server.get(), webrtc::testing::SSE_READ)), |
| 229 kTimeout); |
229 // Simulate "::accept" returning an error. | 230 // Simulate "::accept" returning an error. |
230 SetFailAccept(true); | 231 SetFailAccept(true); |
231 std::unique_ptr<AsyncSocket> accepted(server->Accept(&accept_addr)); | 232 std::unique_ptr<AsyncSocket> accepted(server->Accept(&accept_addr)); |
232 EXPECT_FALSE(accepted); | 233 EXPECT_FALSE(accepted); |
233 ASSERT_TRUE(accept_addr.IsNil()); | 234 ASSERT_TRUE(accept_addr.IsNil()); |
234 | 235 |
235 // Ensure no more pending server connections. | 236 // Ensure no more pending server connections. |
236 EXPECT_FALSE(sink.Check(server.get(), testing::SSE_READ)); | 237 EXPECT_FALSE(sink.Check(server.get(), webrtc::testing::SSE_READ)); |
237 EXPECT_TRUE(nullptr == server->Accept(&accept_addr)); | 238 EXPECT_TRUE(nullptr == server->Accept(&accept_addr)); |
238 EXPECT_TRUE(accept_addr.IsNil()); | 239 EXPECT_TRUE(accept_addr.IsNil()); |
239 | 240 |
240 // Attempt second connect to listening socket. | 241 // Attempt second connect to listening socket. |
241 EXPECT_EQ(0, client2->Connect(server->GetLocalAddress())); | 242 EXPECT_EQ(0, client2->Connect(server->GetLocalAddress())); |
242 EXPECT_FALSE(client2->GetLocalAddress().IsNil()); | 243 EXPECT_FALSE(client2->GetLocalAddress().IsNil()); |
243 EXPECT_NE(server->GetLocalAddress(), client2->GetLocalAddress()); | 244 EXPECT_NE(server->GetLocalAddress(), client2->GetLocalAddress()); |
244 | 245 |
245 // Client is connecting, outcome not yet determined. | 246 // Client is connecting, outcome not yet determined. |
246 EXPECT_EQ(AsyncSocket::CS_CONNECTING, client2->GetState()); | 247 EXPECT_EQ(AsyncSocket::CS_CONNECTING, client2->GetState()); |
247 EXPECT_FALSE(sink.Check(client2.get(), testing::SSE_OPEN)); | 248 EXPECT_FALSE(sink.Check(client2.get(), webrtc::testing::SSE_OPEN)); |
248 EXPECT_FALSE(sink.Check(client2.get(), testing::SSE_CLOSE)); | 249 EXPECT_FALSE(sink.Check(client2.get(), webrtc::testing::SSE_CLOSE)); |
249 | 250 |
250 // Server has pending connection, try to accept it (will succeed). | 251 // Server has pending connection, try to accept it (will succeed). |
251 EXPECT_TRUE_WAIT((sink.Check(server.get(), testing::SSE_READ)), kTimeout); | 252 EXPECT_TRUE_WAIT((sink.Check(server.get(), webrtc::testing::SSE_READ)), |
| 253 kTimeout); |
252 SetFailAccept(false); | 254 SetFailAccept(false); |
253 std::unique_ptr<AsyncSocket> accepted2(server->Accept(&accept_addr)); | 255 std::unique_ptr<AsyncSocket> accepted2(server->Accept(&accept_addr)); |
254 ASSERT_TRUE(accepted2); | 256 ASSERT_TRUE(accepted2); |
255 EXPECT_FALSE(accept_addr.IsNil()); | 257 EXPECT_FALSE(accept_addr.IsNil()); |
256 EXPECT_EQ(accepted2->GetRemoteAddress(), accept_addr); | 258 EXPECT_EQ(accepted2->GetRemoteAddress(), accept_addr); |
257 } | 259 } |
258 | 260 |
259 TEST_F(PhysicalSocketTest, TestConnectAcceptErrorIPv4) { | 261 TEST_F(PhysicalSocketTest, TestConnectAcceptErrorIPv4) { |
260 ConnectInternalAcceptError(kIPv4Loopback); | 262 ConnectInternalAcceptError(kIPv4Loopback); |
261 } | 263 } |
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
587 thread->Start(runnable.get()); | 589 thread->Start(runnable.get()); |
588 EXPECT_TRUE(ss_->Wait(1500, true)); | 590 EXPECT_TRUE(ss_->Wait(1500, true)); |
589 EXPECT_TRUE(ExpectSignal(SIGTERM)); | 591 EXPECT_TRUE(ExpectSignal(SIGTERM)); |
590 EXPECT_EQ(Thread::Current(), signaled_thread_); | 592 EXPECT_EQ(Thread::Current(), signaled_thread_); |
591 EXPECT_TRUE(ExpectNone()); | 593 EXPECT_TRUE(ExpectNone()); |
592 } | 594 } |
593 | 595 |
594 #endif | 596 #endif |
595 | 597 |
596 } // namespace rtc | 598 } // namespace rtc |
OLD | NEW |