Exemple #1
0
 def test_odd_exception_reraised(self):
     socket.socket = BadBindSocket
     exc = None
     try:
         service.get_listening_udp_socket('1.2.3.4', 5678)
     except Exception, err:
         exc = err
Exemple #2
0
 def test_invalid_style(self):
     exc = None
     try:
         service.get_listening_udp_socket('1.2.3.4', 5678, style='invalid')
     except Exception as err:
         exc = err
     self.assertEqual(str(exc), "Socket style 'invalid' not understood.")
Exemple #3
0
 def test_no_family_raises_exception(self):
     self.getaddrinfo_return = ((socket.AF_APPLETALK,),)
     exc = None
     try:
         service.get_listening_udp_socket('1.2.3.4', 5678)
     except Exception, err:
         exc = err
Exemple #4
0
 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_udp_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
Exemple #5
0
 def test_odd_exception_reraised(self):
     socket.socket = BadBindSocket
     exc = None
     try:
         service.get_listening_udp_socket('1.2.3.4', 5678)
     except Exception as err:
         exc = err
     self.assertEqual(str(exc), 'badbind')
Exemple #6
0
 def test_no_family_raises_exception(self):
     self.getaddrinfo_return = ((socket.AF_APPLETALK,),)
     exc = None
     try:
         service.get_listening_udp_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.')
Exemple #7
0
    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_udp_socket(ip, port, style='eventlet')
            self.assertEquals(
                egetaddrinfo_calls,
                [(ip, port, socket.AF_UNSPEC, socket.SOCK_DGRAM)])
            self.assertEquals(sock.init, (socket.AF_INET, socket.SOCK_DGRAM))
            self.assertEquals(set(sock.setsockopt_calls), set([
                (socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)]))
            self.assertEquals(sock.bind_calls, [((ip, port),)])
        finally:
            eventlet.green.socket.socket = orig_esocket
            eventlet.green.socket.getaddrinfo = orig_egetaddrinfo
Exemple #8
0
 def test_uses_passed_retry(self):
     socket.socket = NonBindingSocket
     exc = None
     try:
         sock = service.get_listening_udp_socket('1.2.3.4', 5678, retry=10)
     except Exception, err:
         exc = err
Exemple #9
0
 def test_retries(self):
     socket.socket = NonBindingSocket
     exc = None
     try:
         sock = service.get_listening_udp_socket('1.2.3.4', 5678)
     except Exception, err:
         exc = err
Exemple #10
0
 def test_uses_passed_retry(self):
     socket.socket = NonBindingSocket
     exc = None
     try:
         service.get_listening_udp_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)
Exemple #11
0
 def test_retries(self):
     socket.socket = NonBindingSocket
     exc = None
     try:
         service.get_listening_udp_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)
Exemple #12
0
 def test_happy_path_inet(self):
     ip = '1.2.3.4'
     port = 5678
     sock = service.get_listening_udp_socket(ip, port)
     self.assertEquals(self.getaddrinfo_calls,
                       [(ip, port, socket.AF_UNSPEC, socket.SOCK_DGRAM)])
     self.assertEquals(sock.init, (socket.AF_INET, socket.SOCK_DGRAM))
     self.assertEquals(set(sock.setsockopt_calls), set([
         (socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)]))
     self.assertEquals(sock.bind_calls, [((ip, port),)])
Exemple #13
0
 def test_ip_as_star_is_all(self):
     sock = service.get_listening_udp_socket('*', 5678)
     self.assertEquals(sock.bind_calls[0][0][0], '0.0.0.0')
Exemple #14
0
 def test_invalid_style(self):
     exc = None
     try:
         service.get_listening_udp_socket('1.2.3.4', 5678, style='invalid')
     except Exception, err:
         exc = err
Exemple #15
0
 def test_happy_path_inet6(self):
     self.getaddrinfo_return = ((socket.AF_INET6,),)
     sock = service.get_listening_udp_socket('1.2.3.4', 5678)
     self.assertEquals(sock.init, (socket.AF_INET6, socket.SOCK_DGRAM))
Exemple #16
0
 def test_ip_as_none_is_all(self):
     sock = service.get_listening_udp_socket(None, 5678)
     self.assertEqual(sock.bind_calls[0][0][0], '0.0.0.0')