1 /* 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 */ 10 11 #ifndef WEBRTC_BASE_SOCKET_UNITTEST_H_ 12 #define WEBRTC_BASE_SOCKET_UNITTEST_H_ 13 14 #include "webrtc/base/gunit.h" 15 #include "webrtc/base/thread.h" 16 17 namespace rtc { 18 19 // Generic socket tests, to be used when testing individual socketservers. 20 // Derive your specific test class from SocketTest, install your 21 // socketserver, and call the SocketTest test methods. 22 class SocketTest : public testing::Test { 23 protected: 24 SocketTest() : ss_(NULL), kIPv4Loopback(INADDR_LOOPBACK), 25 kIPv6Loopback(in6addr_loopback) {} 26 virtual void SetUp() { ss_ = Thread::Current()->socketserver(); } 27 void TestConnectIPv4(); 28 void TestConnectIPv6(); 29 void TestConnectWithDnsLookupIPv4(); 30 void TestConnectWithDnsLookupIPv6(); 31 void TestConnectFailIPv4(); 32 void TestConnectFailIPv6(); 33 void TestConnectWithDnsLookupFailIPv4(); 34 void TestConnectWithDnsLookupFailIPv6(); 35 void TestConnectWithClosedSocketIPv4(); 36 void TestConnectWithClosedSocketIPv6(); 37 void TestConnectWhileNotClosedIPv4(); 38 void TestConnectWhileNotClosedIPv6(); 39 void TestServerCloseDuringConnectIPv4(); 40 void TestServerCloseDuringConnectIPv6(); 41 void TestClientCloseDuringConnectIPv4(); 42 void TestClientCloseDuringConnectIPv6(); 43 void TestServerCloseIPv4(); 44 void TestServerCloseIPv6(); 45 void TestCloseInClosedCallbackIPv4(); 46 void TestCloseInClosedCallbackIPv6(); 47 void TestSocketServerWaitIPv4(); 48 void TestSocketServerWaitIPv6(); 49 void TestTcpIPv4(); 50 void TestTcpIPv6(); 51 void TestSingleFlowControlCallbackIPv4(); 52 void TestSingleFlowControlCallbackIPv6(); 53 void TestUdpIPv4(); 54 void TestUdpIPv6(); 55 void TestUdpReadyToSendIPv4(); 56 void TestUdpReadyToSendIPv6(); 57 void TestGetSetOptionsIPv4(); 58 void TestGetSetOptionsIPv6(); 59 60 private: 61 void ConnectInternal(const IPAddress& loopback); 62 void ConnectWithDnsLookupInternal(const IPAddress& loopback, 63 const std::string& host); 64 void ConnectFailInternal(const IPAddress& loopback); 65 66 void ConnectWithDnsLookupFailInternal(const IPAddress& loopback); 67 void ConnectWithClosedSocketInternal(const IPAddress& loopback); 68 void ConnectWhileNotClosedInternal(const IPAddress& loopback); 69 void ServerCloseDuringConnectInternal(const IPAddress& loopback); 70 void ClientCloseDuringConnectInternal(const IPAddress& loopback); 71 void ServerCloseInternal(const IPAddress& loopback); 72 void CloseInClosedCallbackInternal(const IPAddress& loopback); 73 void SocketServerWaitInternal(const IPAddress& loopback); 74 void TcpInternal(const IPAddress& loopback); 75 void SingleFlowControlCallbackInternal(const IPAddress& loopback); 76 void UdpInternal(const IPAddress& loopback); 77 void UdpReadyToSend(const IPAddress& loopback); 78 void GetSetOptionsInternal(const IPAddress& loopback); 79 80 static const int kTimeout = 5000; // ms 81 SocketServer* ss_; 82 const IPAddress kIPv4Loopback; 83 const IPAddress kIPv6Loopback; 84 }; 85 86 } // namespace rtc 87 88 #endif // WEBRTC_BASE_SOCKET_UNITTEST_H_ 89