Home | History | Annotate | Download | only in base
      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