Ejemplo n.º 1
0
def as_literal_address(address):
    """Returns address in form suitable for embedding in URL or similar.

    In practice, this just puts square brackets round IPv6 addresses which
    avoids conflict with port seperators and other uses of colons.
    """
    if is_ipv6_address(address):
        return address.join("[]")
    return address
Ejemplo n.º 2
0
 def test_ipv6_missing_support(self):
     socket_error = jujupy.utility.socket.error
     with patch('jujupy.utility.socket', wraps=socket) as wrapped_socket:
         # Must not convert socket.error into a Mock, because Mocks don't
         # descend from BaseException
         wrapped_socket.error = socket_error
         del wrapped_socket.inet_pton
         result = is_ipv6_address("2001:db8::4")
     # Would use expectedFailure here, but instead just assert wrong result.
     self.assertIs(False, result)
Ejemplo n.º 3
0
 def test_ipv6_missing_support(self):
     socket_error = jujupy.utility.socket.error
     with patch('jujupy.utility.socket', wraps=socket) as wrapped_socket:
         # Must not convert socket.error into a Mock, because Mocks don't
         # descend from BaseException
         wrapped_socket.error = socket_error
         del wrapped_socket.inet_pton
         result = is_ipv6_address("2001:db8::4")
     # Would use expectedFailure here, but instead just assert wrong result.
     self.assertIs(False, result)
Ejemplo n.º 4
0
def wait_for_port(host, port, closed=False, timeout=30):
    family = socket.AF_INET6 if is_ipv6_address(host) else socket.AF_INET
    for remaining in until_timeout(timeout):
        try:
            addrinfo = socket.getaddrinfo(host, port, family,
                                          socket.SOCK_STREAM)
        except socket.error as e:
            if e.errno not in (socket.EAI_NODATA, WSANO_DATA):
                raise
            if closed:
                return
            else:
                continue
        sockaddr = addrinfo[0][4]
        # Treat Azure messed-up address lookup as a closed port.
        if sockaddr[0] == '0.0.0.0':
            if closed:
                return
            else:
                continue
        conn = socket.socket(*addrinfo[0][:3])
        conn.settimeout(max(remaining or 0, 5))
        try:
            conn.connect(sockaddr)
        except socket.timeout:
            if closed:
                return
        except socket.error as e:
            if e.errno not in (errno.ECONNREFUSED, errno.ENETUNREACH,
                               errno.ETIMEDOUT, errno.EHOSTUNREACH):
                raise
            if closed:
                return
        except socket.gaierror as e:
            print_now(str(e))
        except Exception as e:
            print_now('Unexpected {!r}: {}'.format((type(e), e)))
            raise
        else:
            conn.close()
            if not closed:
                return
            sleep(1)
    raise PortTimeoutError('Timed out waiting for port.')
Ejemplo n.º 5
0
 def test_ipv6(self):
     self.assertIs(True, is_ipv6_address("2001:db8::4"))
Ejemplo n.º 6
0
 def test_ipv4(self):
     self.assertIs(False, is_ipv6_address("127.0.0.2"))
Ejemplo n.º 7
0
 def test_hostname(self):
     self.assertIs(False, is_ipv6_address("name.testing"))
Ejemplo n.º 8
0
 def test_ipv6(self):
     self.assertIs(True, is_ipv6_address("2001:db8::4"))
Ejemplo n.º 9
0
 def test_ipv4(self):
     self.assertIs(False, is_ipv6_address("127.0.0.2"))
Ejemplo n.º 10
0
 def test_hostname(self):
     self.assertIs(False, is_ipv6_address("name.testing"))