blob: d368afb3f53e2d8516ed58708f17b02e51201aa6 [file] [log] [blame]
henrike@webrtc.orgf7795df2014-05-13 18:00:26 +00001/*
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
17namespace 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.
22class 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_