1f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org/* 2f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * Copyright 2009 The WebRTC Project Authors. All rights reserved. 3f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * 4f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * Use of this source code is governed by a BSD-style license 5f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * that can be found in the LICENSE file in the root of the source 6f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * tree. An additional intellectual property rights grant can be found 7f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * in the file PATENTS. All contributing project authors may 8f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org */ 10f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#include "webrtc/base/gunit.h" 11f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#include "webrtc/base/socket_unittest.h" 12f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#include "webrtc/base/thread.h" 13f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org#include "webrtc/base/win32socketserver.h" 14f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 15f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgnamespace rtc { 16f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 17f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// Test that Win32SocketServer::Wait works as expected. 18f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(Win32SocketServerTest, TestWait) { 19f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org Win32SocketServer server(NULL); 200c4e06b4c6107a1b94f764e279e4fb4161e905b0Peter Boström uint32_t start = Time(); 21f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org server.Wait(1000, true); 22f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_GE(TimeSince(start), 1000); 23f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 24f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 25f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// Test that Win32Socket::Pump does not touch general Windows messages. 26f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST(Win32SocketServerTest, TestPump) { 27f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org Win32SocketServer server(NULL); 28f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketServerScope scope(&server); 29f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(TRUE, PostMessage(NULL, WM_USER, 999, 0)); 30f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org server.Pump(); 31f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org MSG msg; 32f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(TRUE, PeekMessage(&msg, NULL, WM_USER, 0, PM_REMOVE)); 33f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(WM_USER, msg.message); 34f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org EXPECT_EQ(999, msg.wParam); 35f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 36f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 37f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org// Test that Win32Socket passes all the generic Socket tests. 38f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgclass Win32SocketTest : public SocketTest { 39f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org protected: 40f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org Win32SocketTest() : server_(NULL), scope_(&server_) {} 41f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org Win32SocketServer server_; 42f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketServerScope scope_; 43f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org}; 44f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 45f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectIPv4) { 46f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestConnectIPv4(); 47f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 48f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 49f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectIPv6) { 50f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestConnectIPv6(); 51f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 52f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 53f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectWithDnsLookupIPv4) { 54f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestConnectWithDnsLookupIPv4(); 55f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 56f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 57f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectWithDnsLookupIPv6) { 58f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestConnectWithDnsLookupIPv6(); 59f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 60f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 61f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectFailIPv4) { 62f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestConnectFailIPv4(); 63f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 64f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 65f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectFailIPv6) { 66f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestConnectFailIPv6(); 67f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 68f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 69f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectWithDnsLookupFailIPv4) { 70f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestConnectWithDnsLookupFailIPv4(); 71f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 72f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 73f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectWithDnsLookupFailIPv6) { 74f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestConnectWithDnsLookupFailIPv6(); 75f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 76f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 77f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectWithClosedSocketIPv4) { 78f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestConnectWithClosedSocketIPv4(); 79f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 80f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 81f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectWithClosedSocketIPv6) { 82f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestConnectWithClosedSocketIPv6(); 83f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 84f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 85f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectWhileNotClosedIPv4) { 86f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestConnectWhileNotClosedIPv4(); 87f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 88f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 89f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestConnectWhileNotClosedIPv6) { 90f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestConnectWhileNotClosedIPv6(); 91f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 92f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 93f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestServerCloseDuringConnectIPv4) { 94f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestServerCloseDuringConnectIPv4(); 95f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 96f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 97f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestServerCloseDuringConnectIPv6) { 98f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestServerCloseDuringConnectIPv6(); 99f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 100f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 101f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestClientCloseDuringConnectIPv4) { 102f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestClientCloseDuringConnectIPv4(); 103f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 104f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 105f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestClientCloseDuringConnectIPv6) { 106f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestClientCloseDuringConnectIPv6(); 107f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 108f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 109f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestServerCloseIPv4) { 110f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestServerCloseIPv4(); 111f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 112f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 113f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestServerCloseIPv6) { 114f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestServerCloseIPv6(); 115f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 116f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 117f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestCloseInClosedCallbackIPv4) { 118f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestCloseInClosedCallbackIPv4(); 119f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 120f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 121f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestCloseInClosedCallbackIPv6) { 122f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestCloseInClosedCallbackIPv6(); 123f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 124f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 125f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestSocketServerWaitIPv4) { 126f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestSocketServerWaitIPv4(); 127f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 128f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 129f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestSocketServerWaitIPv6) { 130f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestSocketServerWaitIPv6(); 131f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 132f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 133f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestTcpIPv4) { 134f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestTcpIPv4(); 135f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 136f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 137f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestTcpIPv6) { 138f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestTcpIPv6(); 139f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 140f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 141f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestUdpIPv4) { 142f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestUdpIPv4(); 143f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 144f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 145f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestUdpIPv6) { 146f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestUdpIPv6(); 147f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 148f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 149f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestGetSetOptionsIPv4) { 150f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestGetSetOptionsIPv4(); 151f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 152f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 153f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.orgTEST_F(Win32SocketTest, TestGetSetOptionsIPv6) { 154f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org SocketTest::TestGetSetOptionsIPv6(); 155f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} 156f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org 157f048872e915a3ee229044ec4bc541f6cbf9e4de1henrike@webrtc.org} // namespace rtc 158