コード例 #1
0
ファイル: test_service.py プロジェクト: gholt/python-brim
 def test_invalid_style(self):
     exc = None
     try:
         service.get_listening_tcp_socket('1.2.3.4', 5678, style='invalid')
     except Exception as err:
         exc = err
     self.assertEqual(str(exc), "Socket style 'invalid' not understood.")
コード例 #2
0
ファイル: test_service.py プロジェクト: gholt/python-brim
 def test_uses_eventlet_sleep(self):
     try:
         import eventlet
         import eventlet.green.socket
     except ImportError:
         raise SkipTest()
     orig_sleep = eventlet.sleep
     orig_esocket = eventlet.green.socket.socket
     esleep_calls = []
     try:
         eventlet.sleep = lambda *a: esleep_calls.append(a)
         eventlet.green.socket.socket = NonBindingSocket
         exc = None
         try:
             service.get_listening_tcp_socket(
                 '1.2.3.4', 5678, style='eventlet')
         except Exception as err:
             exc = err
         self.assertEqual(
             str(exc),
             'Could not bind to 1.2.3.4:5678 after trying for 30 seconds.')
         self.assertEqual(len(esleep_calls), 29)
         self.assertEqual(len(self.sleep_calls), 0)
     finally:
         eventlet.sleep = orig_sleep
         eventlet.green.socket.socket = orig_esocket
コード例 #3
0
ファイル: test_service.py プロジェクト: ahale/brim
 def test_no_family_raises_exception(self):
     self.getaddrinfo_return = ((socket.AF_APPLETALK,),)
     exc = None
     try:
         service.get_listening_tcp_socket('1.2.3.4', 5678)
     except Exception, err:
         exc = err
コード例 #4
0
ファイル: test_service.py プロジェクト: ahale/brim
 def test_odd_exception_reraised(self):
     socket.socket = BadBindSocket
     exc = None
     try:
         service.get_listening_tcp_socket('1.2.3.4', 5678)
     except Exception, err:
         exc = err
コード例 #5
0
ファイル: test_service.py プロジェクト: gholt/python-brim
 def test_odd_exception_reraised(self):
     socket.socket = BadBindSocket
     exc = None
     try:
         service.get_listening_tcp_socket('1.2.3.4', 5678)
     except Exception as err:
         exc = err
     self.assertEqual(str(exc), 'badbind')
コード例 #6
0
ファイル: test_service.py プロジェクト: gholt/python-brim
 def test_no_family_raises_exception(self):
     self.getaddrinfo_return = ((socket.AF_APPLETALK,),)
     exc = None
     try:
         service.get_listening_tcp_socket('1.2.3.4', 5678)
     except Exception as err:
         exc = err
     self.assertEqual(
         str(exc),
         'Could not determine address family of 1.2.3.4:5678 for binding.')
コード例 #7
0
ファイル: test_service.py プロジェクト: gholt/python-brim
 def test_retries(self):
     socket.socket = NonBindingSocket
     exc = None
     try:
         service.get_listening_tcp_socket('1.2.3.4', 5678)
     except Exception as err:
         exc = err
     self.assertEqual(
         str(exc),
         'Could not bind to 1.2.3.4:5678 after trying for 30 seconds.')
     # Calls time once before loop to calculate when to stop and once per
     # loop to see if it's time to stop.
     self.assertEqual(self.time_value, 31)
     self.assertEqual(len(self.time_calls), 31)
     # Sleeps 29 times and then sees it's been 30s (the default retry time).
     self.assertEqual(len(self.sleep_calls), 29)
コード例 #8
0
ファイル: test_service.py プロジェクト: ahale/brim
    def test_uses_eventlet_socket(self):
        try:
            import eventlet.green.socket
        except ImportError:
            raise SkipTest()
        orig_esocket = eventlet.green.socket.socket
        orig_egetaddrinfo = eventlet.green.socket.getaddrinfo
        egetaddrinfo_calls = []

        def _getaddrinfo(*args):
            egetaddrinfo_calls.append(args)
            return self.getaddrinfo_return

        try:
            # Won't bind unless it uses eventlet's socket.
            socket.socket = NonBindingSocket
            eventlet.green.socket.socket = FakeSocket
            eventlet.green.socket.getaddrinfo = _getaddrinfo
            ip = '1.2.3.4'
            port = 5678
            sock = service.get_listening_tcp_socket(ip, port, style='eventlet')
            self.assertEquals(
                egetaddrinfo_calls,
                [(ip, port, socket.AF_UNSPEC, socket.SOCK_STREAM)])
            self.assertEquals(sock.init, (socket.AF_INET, socket.SOCK_STREAM))
            self.assertEquals(set(sock.setsockopt_calls), set([
                (socket.SOL_SOCKET, socket.SO_REUSEADDR, 1),
                (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1),
                (socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 600)]))
            self.assertEquals(sock.bind_calls, [((ip, port),)])
            self.assertEquals(sock.listen_calls, [(4096,)])
            self.assertEquals(self.wrap_socket_calls, [])
        finally:
            eventlet.green.socket.socket = orig_esocket
            eventlet.green.socket.getaddrinfo = orig_egetaddrinfo
コード例 #9
0
ファイル: test_service.py プロジェクト: ahale/brim
 def test_uses_passed_retry(self):
     socket.socket = NonBindingSocket
     exc = None
     try:
         sock = service.get_listening_tcp_socket('1.2.3.4', 5678, retry=10)
     except Exception, err:
         exc = err
コード例 #10
0
ファイル: test_service.py プロジェクト: ahale/brim
 def test_retries(self):
     socket.socket = NonBindingSocket
     exc = None
     try:
         sock = service.get_listening_tcp_socket('1.2.3.4', 5678)
     except Exception, err:
         exc = err
コード例 #11
0
ファイル: test_service.py プロジェクト: gholt/python-brim
 def test_uses_passed_retry(self):
     socket.socket = NonBindingSocket
     exc = None
     try:
         service.get_listening_tcp_socket('1.2.3.4', 5678, retry=10)
     except Exception as err:
         exc = err
     self.assertEqual(
         str(exc),
         'Could not bind to 1.2.3.4:5678 after trying for 10 seconds.')
     # Calls time once before loop to calculate when to stop and once per
     # loop to see if it's time to stop.
     self.assertEqual(self.time_value, 11)
     self.assertEqual(len(self.time_calls), 11)
     # Sleeps 9 times and then sees it's been 10s.
     self.assertEqual(len(self.sleep_calls), 9)
コード例 #12
0
ファイル: test_service.py プロジェクト: ahale/brim
 def test_wraps_socket(self):
     certfile = 'certfile'
     keyfile = 'keyfile'
     sock = service.get_listening_tcp_socket('1.2.3.4', 5678,
                                             certfile=certfile,
                                             keyfile=keyfile)
     self.assertEquals(sock, 'wrappedsock')
     self.assertEquals(len(self.wrap_socket_calls), 1)
     self.assertEquals(self.wrap_socket_calls[0][1],
                       {'certfile': 'certfile', 'keyfile': 'keyfile'})
コード例 #13
0
ファイル: test_service.py プロジェクト: ahale/brim
 def test_happy_path_inet(self):
     ip = '1.2.3.4'
     port = 5678
     sock = service.get_listening_tcp_socket(ip, port)
     self.assertEquals(self.getaddrinfo_calls,
                       [(ip, port, socket.AF_UNSPEC, socket.SOCK_STREAM)])
     self.assertEquals(sock.init, (socket.AF_INET, socket.SOCK_STREAM))
     self.assertEquals(set(sock.setsockopt_calls), set([
         (socket.SOL_SOCKET, socket.SO_REUSEADDR, 1),
         (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1),
         (socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 600)]))
     self.assertEquals(sock.bind_calls, [((ip, port),)])
     self.assertEquals(sock.listen_calls, [(4096,)])
     self.assertEquals(self.wrap_socket_calls, [])
コード例 #14
0
ファイル: test_service.py プロジェクト: gholt/python-brim
    def test_uses_eventlet_wrap_socket(self):
        try:
            import eventlet.green.socket
            import eventlet.green.ssl
        except ImportError:
            raise SkipTest()
        orig_esocket = eventlet.green.socket.socket
        orig_egetaddrinfo = eventlet.green.socket.getaddrinfo
        orig_ewrap_socket = eventlet.green.ssl.wrap_socket
        egetaddrinfo_calls = []
        ewrap_socket_calls = []

        def _getaddrinfo(*args):
            egetaddrinfo_calls.append(args)
            return self.getaddrinfo_return

        def _ewrap_socket(*args, **kwargs):
            ewrap_socket_calls.append((args, kwargs))
            return 'ewrappedsock'

        try:
            eventlet.green.socket.socket = FakeSocket
            eventlet.green.socket.getaddrinfo = _getaddrinfo
            eventlet.green.ssl.wrap_socket = _ewrap_socket
            certfile = 'certfile'
            keyfile = 'keyfile'
            sock = service.get_listening_tcp_socket(
                '1.2.3.4', 5678, style='eventlet', certfile=certfile,
                keyfile=keyfile)
            self.assertEqual(sock, 'ewrappedsock')
            self.assertEqual(len(ewrap_socket_calls), 1)
            self.assertEqual(
                ewrap_socket_calls[0][1],
                {'certfile': 'certfile', 'keyfile': 'keyfile'})
        finally:
            eventlet.green.socket.socket = orig_esocket
            eventlet.green.socket.getaddrinfo = orig_egetaddrinfo
            eventlet.green.ssl.wrap_socket = orig_ewrap_socket
コード例 #15
0
ファイル: test_service.py プロジェクト: ahale/brim
 def test_happy_path_inet6(self):
     self.getaddrinfo_return = ((socket.AF_INET6,),)
     sock = service.get_listening_tcp_socket('1.2.3.4', 5678)
     self.assertEquals(sock.init, (socket.AF_INET6, socket.SOCK_STREAM))
コード例 #16
0
ファイル: test_service.py プロジェクト: ahale/brim
 def test_ip_as_star_is_all(self):
     sock = service.get_listening_tcp_socket('*', 5678)
     self.assertEquals(sock.bind_calls[0][0][0], '0.0.0.0')
コード例 #17
0
ファイル: test_service.py プロジェクト: ahale/brim
 def test_invalid_style(self):
     exc = None
     try:
         service.get_listening_tcp_socket('1.2.3.4', 5678, style='invalid')
     except Exception, err:
         exc = err
コード例 #18
0
ファイル: test_service.py プロジェクト: ahale/brim
 def test_uses_passed_backlog(self):
     backlog = 1000
     sock = service.get_listening_tcp_socket('1.2.3.4', 5678, backlog)
     self.assertEquals(sock.listen_calls, [(backlog,)])
コード例 #19
0
ファイル: test_service.py プロジェクト: gholt/python-brim
 def test_ip_as_none_is_all(self):
     sock = service.get_listening_tcp_socket(None, 5678)
     self.assertEqual(sock.bind_calls[0][0][0], '0.0.0.0')