blob: e5454605f4c1f09411a894fd7af110c5671b0312 [file] [log] [blame]
henrike@webrtc.orgf0488722014-05-13 18:00:261/*
2 * Copyright 2009 The WebRTC Project Authors. All rights reserved.
3 *
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
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
Steve Anton10542f22019-01-11 17:11:0010#include "rtc_base/win32_socket_server.h"
Jonas Olssona4d87372019-07-05 17:08:3311
Mirko Bonadei92ea95e2017-09-15 04:47:3112#include "rtc_base/gunit.h"
13#include "rtc_base/socket_unittest.h"
14#include "rtc_base/thread.h"
henrike@webrtc.orgf0488722014-05-13 18:00:2615
16namespace rtc {
17
18// Test that Win32SocketServer::Wait works as expected.
19TEST(Win32SocketServerTest, TestWait) {
nisse7eaa4ea2017-05-08 12:25:4120 Win32SocketServer server;
Peter Boström0c4e06b2015-10-07 10:23:2121 uint32_t start = Time();
henrike@webrtc.orgf0488722014-05-13 18:00:2622 server.Wait(1000, true);
23 EXPECT_GE(TimeSince(start), 1000);
24}
25
26// Test that Win32Socket::Pump does not touch general Windows messages.
27TEST(Win32SocketServerTest, TestPump) {
nisse7eaa4ea2017-05-08 12:25:4128 Win32SocketServer server;
29 rtc::AutoSocketServerThread thread(&server);
deadbeef37f5ecf2017-02-27 22:06:4130 EXPECT_EQ(TRUE, PostMessage(nullptr, WM_USER, 999, 0));
henrike@webrtc.orgf0488722014-05-13 18:00:2631 server.Pump();
32 MSG msg;
deadbeef37f5ecf2017-02-27 22:06:4133 EXPECT_EQ(TRUE, PeekMessage(&msg, nullptr, WM_USER, 0, PM_REMOVE));
danilchapb7b9dca2016-08-05 12:55:4334 EXPECT_EQ(static_cast<UINT>(WM_USER), msg.message);
35 EXPECT_EQ(999u, msg.wParam);
henrike@webrtc.orgf0488722014-05-13 18:00:2636}
37
38// Test that Win32Socket passes all the generic Socket tests.
39class Win32SocketTest : public SocketTest {
40 protected:
nisse7eaa4ea2017-05-08 12:25:4141 Win32SocketTest() : thread_(&server_) {}
henrike@webrtc.orgf0488722014-05-13 18:00:2642 Win32SocketServer server_;
nisse7eaa4ea2017-05-08 12:25:4143 rtc::AutoSocketServerThread thread_;
henrike@webrtc.orgf0488722014-05-13 18:00:2644};
45
46TEST_F(Win32SocketTest, TestConnectIPv4) {
47 SocketTest::TestConnectIPv4();
48}
49
50TEST_F(Win32SocketTest, TestConnectIPv6) {
51 SocketTest::TestConnectIPv6();
52}
53
54TEST_F(Win32SocketTest, TestConnectWithDnsLookupIPv4) {
55 SocketTest::TestConnectWithDnsLookupIPv4();
56}
57
58TEST_F(Win32SocketTest, TestConnectWithDnsLookupIPv6) {
59 SocketTest::TestConnectWithDnsLookupIPv6();
60}
61
62TEST_F(Win32SocketTest, TestConnectFailIPv4) {
63 SocketTest::TestConnectFailIPv4();
64}
65
66TEST_F(Win32SocketTest, TestConnectFailIPv6) {
67 SocketTest::TestConnectFailIPv6();
68}
69
70TEST_F(Win32SocketTest, TestConnectWithDnsLookupFailIPv4) {
71 SocketTest::TestConnectWithDnsLookupFailIPv4();
72}
73
74TEST_F(Win32SocketTest, TestConnectWithDnsLookupFailIPv6) {
75 SocketTest::TestConnectWithDnsLookupFailIPv6();
76}
77
78TEST_F(Win32SocketTest, TestConnectWithClosedSocketIPv4) {
79 SocketTest::TestConnectWithClosedSocketIPv4();
80}
81
82TEST_F(Win32SocketTest, TestConnectWithClosedSocketIPv6) {
83 SocketTest::TestConnectWithClosedSocketIPv6();
84}
85
86TEST_F(Win32SocketTest, TestConnectWhileNotClosedIPv4) {
87 SocketTest::TestConnectWhileNotClosedIPv4();
88}
89
90TEST_F(Win32SocketTest, TestConnectWhileNotClosedIPv6) {
91 SocketTest::TestConnectWhileNotClosedIPv6();
92}
93
94TEST_F(Win32SocketTest, TestServerCloseDuringConnectIPv4) {
95 SocketTest::TestServerCloseDuringConnectIPv4();
96}
97
98TEST_F(Win32SocketTest, TestServerCloseDuringConnectIPv6) {
99 SocketTest::TestServerCloseDuringConnectIPv6();
100}
101
102TEST_F(Win32SocketTest, TestClientCloseDuringConnectIPv4) {
103 SocketTest::TestClientCloseDuringConnectIPv4();
104}
105
106TEST_F(Win32SocketTest, TestClientCloseDuringConnectIPv6) {
107 SocketTest::TestClientCloseDuringConnectIPv6();
108}
109
110TEST_F(Win32SocketTest, TestServerCloseIPv4) {
111 SocketTest::TestServerCloseIPv4();
112}
113
114TEST_F(Win32SocketTest, TestServerCloseIPv6) {
115 SocketTest::TestServerCloseIPv6();
116}
117
118TEST_F(Win32SocketTest, TestCloseInClosedCallbackIPv4) {
119 SocketTest::TestCloseInClosedCallbackIPv4();
120}
121
122TEST_F(Win32SocketTest, TestCloseInClosedCallbackIPv6) {
123 SocketTest::TestCloseInClosedCallbackIPv6();
124}
125
126TEST_F(Win32SocketTest, TestSocketServerWaitIPv4) {
127 SocketTest::TestSocketServerWaitIPv4();
128}
129
130TEST_F(Win32SocketTest, TestSocketServerWaitIPv6) {
131 SocketTest::TestSocketServerWaitIPv6();
132}
133
134TEST_F(Win32SocketTest, TestTcpIPv4) {
135 SocketTest::TestTcpIPv4();
136}
137
138TEST_F(Win32SocketTest, TestTcpIPv6) {
139 SocketTest::TestTcpIPv6();
140}
141
142TEST_F(Win32SocketTest, TestUdpIPv4) {
143 SocketTest::TestUdpIPv4();
144}
145
146TEST_F(Win32SocketTest, TestUdpIPv6) {
147 SocketTest::TestUdpIPv6();
148}
149
danilchapb7b9dca2016-08-05 12:55:43150// Breaks win_x64_dbg bot.
151// https://bugs.chromium.org/p/webrtc/issues/detail?id=6178
152TEST_F(Win32SocketTest, DISABLED_TestGetSetOptionsIPv4) {
henrike@webrtc.orgf0488722014-05-13 18:00:26153 SocketTest::TestGetSetOptionsIPv4();
154}
155
danilchapb7b9dca2016-08-05 12:55:43156// Breaks win_x64_dbg bot.
157// https://bugs.chromium.org/p/webrtc/issues/detail?id=6178
158TEST_F(Win32SocketTest, DISABLED_TestGetSetOptionsIPv6) {
henrike@webrtc.orgf0488722014-05-13 18:00:26159 SocketTest::TestGetSetOptionsIPv6();
160}
161
162} // namespace rtc