def test_ensure_ip(): assert ensure_ip("localhost") in ("127.0.0.1", "::1") assert ensure_ip("123.123.123.123") == "123.123.123.123" assert ensure_ip("8.8.8.8") == "8.8.8.8" if has_ipv6(): assert ensure_ip("2001:4860:4860::8888") == "2001:4860:4860::8888" assert ensure_ip("::1") == "::1"
def test_ensure_ip(): assert ensure_ip('localhost') in ('127.0.0.1', '::1') assert ensure_ip('123.123.123.123') == '123.123.123.123' assert ensure_ip('8.8.8.8') == '8.8.8.8' if has_ipv6(): assert ensure_ip('2001:4860:4860::8888') == '2001:4860:4860::8888' assert ensure_ip('::1') == '::1'
def test_get_local_address_for(): f = get_local_address_for assert f('tcp://127.0.0.1:80') == 'tcp://127.0.0.1' assert f('tcp://8.8.8.8:4444') == 'tcp://' + get_ip() if has_ipv6(): assert f('tcp://[::1]:123') == 'tcp://[::1]' if is_zmq_enabled(): assert f('zmq://127.0.0.1:80') == 'zmq://127.0.0.1' assert f('zmq://8.8.8.8:4444') == 'zmq://' + get_ip() if has_ipv6(): assert f('zmq://[::1]:123') == 'zmq://[::1]' inproc_arg = 'inproc://%s/%d/444' % (get_ip(), os.getpid()) inproc_res = f(inproc_arg) assert inproc_res.startswith('inproc://') assert inproc_res != inproc_arg
def test_get_local_address_for(): f = get_local_address_for assert f('tcp://127.0.0.1:80') == 'tcp://127.0.0.1' assert f('tcp://8.8.8.8:4444') == 'tcp://' + get_ip() if has_ipv6(): assert f('tcp://[::1]:123') == 'tcp://[::1]' inproc_arg = 'inproc://%s/%d/444' % (get_ip(), os.getpid()) inproc_res = f(inproc_arg) assert inproc_res.startswith('inproc://') assert inproc_res != inproc_arg
def test_get_local_address_for(): f = get_local_address_for assert f("tcp://127.0.0.1:80") == "tcp://127.0.0.1" assert f("tcp://8.8.8.8:4444") == "tcp://" + get_ip() if has_ipv6(): assert f("tcp://[::1]:123") == "tcp://[::1]" inproc_arg = "inproc://%s/%d/444" % (get_ip(), os.getpid()) inproc_res = f(inproc_arg) assert inproc_res.startswith("inproc://") assert inproc_res != inproc_arg
def test_resolve_address(): f = resolve_address assert f('tcp://127.0.0.1:123') == 'tcp://127.0.0.1:123' assert f('127.0.0.2:789') == 'tcp://127.0.0.2:789' assert f('tcp://0.0.0.0:456') == 'tcp://0.0.0.0:456' assert f('tcp://0.0.0.0:456') == 'tcp://0.0.0.0:456' if has_ipv6(): assert f('tcp://[::1]:123') == 'tcp://[::1]:123' # OS X returns '::0.0.0.2' as canonical representation assert f('[::2]:789') in ('tcp://[::2]:789', 'tcp://[::0.0.0.2]:789') assert f('tcp://[::]:123') == 'tcp://[::]:123' assert f('localhost:123') == 'tcp://127.0.0.1:123' assert f('tcp://localhost:456') == 'tcp://127.0.0.1:456' if is_zmq_enabled(): assert f('zmq://127.0.0.1:456') == 'zmq://127.0.0.1:456' assert f('zmq://localhost:789') == 'zmq://127.0.0.1:789' if has_ipv6(): assert f('zmq://[::1]:456') == 'zmq://[::1]:456'
def test_resolve_address(): f = resolve_address assert f("tcp://127.0.0.1:123") == "tcp://127.0.0.1:123" assert f("127.0.0.2:789") == "tcp://127.0.0.2:789" assert f("tcp://0.0.0.0:456") == "tcp://0.0.0.0:456" assert f("tcp://0.0.0.0:456") == "tcp://0.0.0.0:456" if has_ipv6(): assert f("tcp://[::1]:123") == "tcp://[::1]:123" assert f("tls://[::1]:123") == "tls://[::1]:123" # OS X returns '::0.0.0.2' as canonical representation assert f("[::2]:789") in ("tcp://[::2]:789", "tcp://[::0.0.0.2]:789") assert f("tcp://[::]:123") == "tcp://[::]:123" assert f("localhost:123") == "tcp://127.0.0.1:123" assert f("tcp://localhost:456") == "tcp://127.0.0.1:456" assert f("tls://localhost:456") == "tls://127.0.0.1:456"
def test_resolve_address(): f = resolve_address assert f('tcp://127.0.0.1:123') == 'tcp://127.0.0.1:123' assert f('zmq://127.0.0.1:456') == 'zmq://127.0.0.1:456' assert f('127.0.0.2:789') == 'tcp://127.0.0.2:789' assert f('tcp://0.0.0.0:456') == 'tcp://0.0.0.0:456' assert f('tcp://0.0.0.0:456') == 'tcp://0.0.0.0:456' if has_ipv6(): assert f('tcp://[::1]:123') == 'tcp://[::1]:123' assert f('zmq://[::1]:456') == 'zmq://[::1]:456' assert f('[::2]:789') == 'tcp://[::2]:789' assert f('tcp://[::]:123') == 'tcp://[::]:123' assert f('localhost:123') == 'tcp://127.0.0.1:123' assert f('tcp://localhost:456') == 'tcp://127.0.0.1:456' assert f('zmq://localhost:789') == 'zmq://127.0.0.1:789'
def test_resolve_address(): f = resolve_address assert f('tcp://127.0.0.1:123') == 'tcp://127.0.0.1:123' assert f('127.0.0.2:789') == 'tcp://127.0.0.2:789' assert f('tcp://0.0.0.0:456') == 'tcp://0.0.0.0:456' assert f('tcp://0.0.0.0:456') == 'tcp://0.0.0.0:456' if has_ipv6(): assert f('tcp://[::1]:123') == 'tcp://[::1]:123' assert f('tls://[::1]:123') == 'tls://[::1]:123' # OS X returns '::0.0.0.2' as canonical representation assert f('[::2]:789') in ('tcp://[::2]:789', 'tcp://[::0.0.0.2]:789') assert f('tcp://[::]:123') == 'tcp://[::]:123' assert f('localhost:123') == 'tcp://127.0.0.1:123' assert f('tcp://localhost:456') == 'tcp://127.0.0.1:456' assert f('tls://localhost:456') == 'tls://127.0.0.1:456'
async def test_server_listen(): """ Test various Server.listen() arguments and their effect. """ from contextlib import asynccontextmanager @asynccontextmanager async def listen_on(cls, *args, **kwargs): server = cls({}) await server.listen(*args, **kwargs) try: yield server finally: server.stop() # Note server.address is the concrete, contactable address async with listen_on(Server, 7800) as server: assert server.port == 7800 assert server.address == "tcp://%s:%d" % (EXTERNAL_IP4, server.port) await assert_can_connect(server.address) await assert_can_connect_from_everywhere_4_6(server.port) async with listen_on(Server) as server: assert server.port > 0 assert server.address == "tcp://%s:%d" % (EXTERNAL_IP4, server.port) await assert_can_connect(server.address) await assert_can_connect_from_everywhere_4_6(server.port) async with listen_on(MyServer) as server: assert server.port == MyServer.default_port assert server.address == "tcp://%s:%d" % (EXTERNAL_IP4, server.port) await assert_can_connect(server.address) await assert_can_connect_from_everywhere_4_6(server.port) async with listen_on(Server, ("", 7801)) as server: assert server.port == 7801 assert server.address == "tcp://%s:%d" % (EXTERNAL_IP4, server.port) await assert_can_connect(server.address) await assert_can_connect_from_everywhere_4_6(server.port) async with listen_on(Server, "tcp://:7802") as server: assert server.port == 7802 assert server.address == "tcp://%s:%d" % (EXTERNAL_IP4, server.port) await assert_can_connect(server.address) await assert_can_connect_from_everywhere_4_6(server.port) # Only IPv4 async with listen_on(Server, ("0.0.0.0", 7810)) as server: assert server.port == 7810 assert server.address == "tcp://%s:%d" % (EXTERNAL_IP4, server.port) await assert_can_connect(server.address) await assert_can_connect_from_everywhere_4(server.port) async with listen_on(Server, ("127.0.0.1", 7811)) as server: assert server.port == 7811 assert server.address == "tcp://127.0.0.1:%d" % server.port await assert_can_connect(server.address) await assert_can_connect_locally_4(server.port) async with listen_on(Server, "tcp://127.0.0.1:7812") as server: assert server.port == 7812 assert server.address == "tcp://127.0.0.1:%d" % server.port await assert_can_connect(server.address) await assert_can_connect_locally_4(server.port) # Only IPv6 if has_ipv6(): async with listen_on(Server, ("::", 7813)) as server: assert server.port == 7813 assert server.address == "tcp://[%s]:%d" % (EXTERNAL_IP6, server.port) await assert_can_connect(server.address) await assert_can_connect_from_everywhere_6(server.port) async with listen_on(Server, ("::1", 7814)) as server: assert server.port == 7814 assert server.address == "tcp://[::1]:%d" % server.port await assert_can_connect(server.address) await assert_can_connect_locally_6(server.port) async with listen_on(Server, "tcp://[::1]:7815") as server: assert server.port == 7815 assert server.address == "tcp://[::1]:%d" % server.port await assert_can_connect(server.address) await assert_can_connect_locally_6(server.port) # TLS sec = tls_security() async with listen_on( Server, "tls://", **sec.get_listen_args("scheduler") ) as server: assert server.address.startswith("tls://") await assert_can_connect(server.address, **sec.get_connection_args("client")) # InProc async with listen_on(Server, "inproc://") as server: inproc_addr1 = server.address assert inproc_addr1.startswith("inproc://%s/%d/" % (get_ip(), os.getpid())) await assert_can_connect(inproc_addr1) async with listen_on(Server, "inproc://") as server2: inproc_addr2 = server2.address assert inproc_addr2.startswith("inproc://%s/%d/" % (get_ip(), os.getpid())) await assert_can_connect(inproc_addr2) await assert_can_connect(inproc_addr1) await assert_cannot_connect(inproc_addr2)
assert_cannot_connect, assert_can_connect_from_everywhere_4, assert_can_connect_from_everywhere_4_6, assert_can_connect_from_everywhere_6, assert_can_connect_locally_4, assert_can_connect_locally_6, tls_security, captured_logger, inc, throws, ) from distributed.utils_test import loop # noqa F401 EXTERNAL_IP4 = get_ip() if has_ipv6(): EXTERNAL_IP6 = get_ipv6() def echo(comm, x): return x class CountedObject: """ A class which counts the number of live instances. """ n_instances = 0 # Use __new__, as __init__ can be bypassed by pickle.
from distributed.utils_test import (gen_test, requires_ipv6, has_ipv6, get_cert, get_server_ssl_context, get_client_ssl_context) from distributed.utils_test import loop # noqa: F401 from distributed.protocol import (to_serialize, Serialized, serialize, deserialize) from distributed.comm import (tcp, inproc, connect, listen, CommClosedError, parse_address, parse_host_port, unparse_host_port, resolve_address, get_address_host, get_local_address_for) EXTERNAL_IP4 = get_ip() if has_ipv6(): with warnings.catch_warnings(record=True): warnings.simplefilter('always') EXTERNAL_IP6 = get_ipv6() ca_file = get_cert('tls-ca-cert.pem') # The Subject field of our test certs cert_subject = ( (('countryName', 'XY'),), (('localityName', 'Dask-distributed'),), (('organizationName', 'Dask'),), (('commonName', 'localhost'),) )
def test_server_listen(): """ Test various Server.listen() arguments and their effect. """ @contextmanager def listen_on(cls, *args, **kwargs): server = cls({}) server.listen(*args, **kwargs) try: yield server finally: server.stop() # Note server.address is the concrete, contactable address with listen_on(Server, 7800) as server: assert server.port == 7800 assert server.address == 'tcp://%s:%d' % (EXTERNAL_IP4, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_4_6(server.port) with listen_on(Server) as server: assert server.port > 0 assert server.address == 'tcp://%s:%d' % (EXTERNAL_IP4, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_4_6(server.port) with listen_on(MyServer) as server: assert server.port == MyServer.default_port assert server.address == 'tcp://%s:%d' % (EXTERNAL_IP4, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_4_6(server.port) with listen_on(Server, ('', 7801)) as server: assert server.port == 7801 assert server.address == 'tcp://%s:%d' % (EXTERNAL_IP4, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_4_6(server.port) with listen_on(Server, 'tcp://:7802') as server: assert server.port == 7802 assert server.address == 'tcp://%s:%d' % (EXTERNAL_IP4, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_4_6(server.port) # Only IPv4 with listen_on(Server, ('0.0.0.0', 7810)) as server: assert server.port == 7810 assert server.address == 'tcp://%s:%d' % (EXTERNAL_IP4, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_4(server.port) with listen_on(Server, ('127.0.0.1', 7811)) as server: assert server.port == 7811 assert server.address == 'tcp://127.0.0.1:%d' % server.port yield assert_can_connect(server.address) yield assert_can_connect_locally_4(server.port) with listen_on(Server, 'tcp://127.0.0.1:7812') as server: assert server.port == 7812 assert server.address == 'tcp://127.0.0.1:%d' % server.port yield assert_can_connect(server.address) yield assert_can_connect_locally_4(server.port) # Only IPv6 if has_ipv6(): with listen_on(Server, ('::', 7813)) as server: assert server.port == 7813 assert server.address == 'tcp://[%s]:%d' % (EXTERNAL_IP6, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_6(server.port) with listen_on(Server, ('::1', 7814)) as server: assert server.port == 7814 assert server.address == 'tcp://[::1]:%d' % server.port yield assert_can_connect(server.address) yield assert_can_connect_locally_6(server.port) with listen_on(Server, 'tcp://[::1]:7815') as server: assert server.port == 7815 assert server.address == 'tcp://[::1]:%d' % server.port yield assert_can_connect(server.address) yield assert_can_connect_locally_6(server.port) # TLS sec = tls_security() with listen_on(Server, 'tls://', listen_args=sec.get_listen_args('scheduler')) as server: assert server.address.startswith('tls://') yield assert_can_connect( server.address, connection_args=sec.get_connection_args('client')) # InProc with listen_on(Server, 'inproc://') as server: inproc_addr1 = server.address assert inproc_addr1.startswith('inproc://%s/%d/' % (get_ip(), os.getpid())) yield assert_can_connect(inproc_addr1) with listen_on(Server, 'inproc://') as server2: inproc_addr2 = server2.address assert inproc_addr2.startswith('inproc://%s/%d/' % (get_ip(), os.getpid())) yield assert_can_connect(inproc_addr2) yield assert_can_connect(inproc_addr1) yield assert_cannot_connect(inproc_addr2)
def test_server_listen(): """ Test various Server.listen() arguments and their effect. """ @contextmanager def listen_on(cls, *args, **kwargs): server = cls({}) server.listen(*args, **kwargs) try: yield server finally: server.stop() # Note server.address is the concrete, contactable address with listen_on(Server, 7800) as server: assert server.port == 7800 assert server.address == 'tcp://%s:%d' % (EXTERNAL_IP4, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_4_6(server.port) with listen_on(Server) as server: assert server.port > 0 assert server.address == 'tcp://%s:%d' % (EXTERNAL_IP4, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_4_6(server.port) with listen_on(MyServer) as server: assert server.port == MyServer.default_port assert server.address == 'tcp://%s:%d' % (EXTERNAL_IP4, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_4_6(server.port) with listen_on(Server, ('', 7801)) as server: assert server.port == 7801 assert server.address == 'tcp://%s:%d' % (EXTERNAL_IP4, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_4_6(server.port) with listen_on(Server, 'tcp://:7802') as server: assert server.port == 7802 assert server.address == 'tcp://%s:%d' % (EXTERNAL_IP4, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_4_6(server.port) # Only IPv4 with listen_on(Server, ('0.0.0.0', 7810)) as server: assert server.port == 7810 assert server.address == 'tcp://%s:%d' % (EXTERNAL_IP4, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_4(server.port) with listen_on(Server, ('127.0.0.1', 7811)) as server: assert server.port == 7811 assert server.address == 'tcp://127.0.0.1:%d' % server.port yield assert_can_connect(server.address) yield assert_can_connect_locally_4(server.port) with listen_on(Server, 'tcp://127.0.0.1:7812') as server: assert server.port == 7812 assert server.address == 'tcp://127.0.0.1:%d' % server.port yield assert_can_connect(server.address) yield assert_can_connect_locally_4(server.port) # Only IPv6 if has_ipv6(): with listen_on(Server, ('::', 7813)) as server: assert server.port == 7813 assert server.address == 'tcp://[%s]:%d' % (EXTERNAL_IP6, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_6(server.port) with listen_on(Server, ('::1', 7814)) as server: assert server.port == 7814 assert server.address == 'tcp://[::1]:%d' % server.port yield assert_can_connect(server.address) yield assert_can_connect_locally_6(server.port) with listen_on(Server, 'tcp://[::1]:7815') as server: assert server.port == 7815 assert server.address == 'tcp://[::1]:%d' % server.port yield assert_can_connect(server.address) yield assert_can_connect_locally_6(server.port) # TLS sec = tls_security() with listen_on(Server, 'tls://', listen_args=sec.get_listen_args('scheduler')) as server: assert server.address.startswith('tls://') yield assert_can_connect(server.address, connection_args=sec.get_connection_args('client')) # InProc with listen_on(Server, 'inproc://') as server: inproc_addr1 = server.address assert inproc_addr1.startswith('inproc://%s/%d/' % (get_ip(), os.getpid())) yield assert_can_connect(inproc_addr1) with listen_on(Server, 'inproc://') as server2: inproc_addr2 = server2.address assert inproc_addr2.startswith('inproc://%s/%d/' % (get_ip(), os.getpid())) yield assert_can_connect(inproc_addr2) yield assert_can_connect(inproc_addr1) yield assert_cannot_connect(inproc_addr2)
def test_server_listen(): """ Test various Server.listen() arguments and their effect. """ @contextmanager def listen_on(cls, *args): server = cls({}) server.listen(*args) try: yield server finally: server.stop() # Note server.address is the concrete, contactable address with listen_on(Server, 8882) as server: assert server.port == 8882 assert server.address == 'tcp://%s:%d' % (EXTERNAL_IP4, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_4_6(server.port) with listen_on(Server) as server: assert server.port > 0 assert server.address == 'tcp://%s:%d' % (EXTERNAL_IP4, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_4_6(server.port) with listen_on(MyServer) as server: assert server.port == MyServer.default_port assert server.address == 'tcp://%s:%d' % (EXTERNAL_IP4, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_4_6(server.port) with listen_on(Server, ('', 2468)) as server: assert server.port == 2468 assert server.address == 'tcp://%s:%d' % (EXTERNAL_IP4, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_4_6(server.port) with listen_on(Server, 'tcp://:2468') as server: assert server.port == 2468 assert server.address == 'tcp://%s:%d' % (EXTERNAL_IP4, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_4_6(server.port) # Only IPv4 with listen_on(Server, ('0.0.0.0', 2468)) as server: assert server.port == 2468 assert server.address == 'tcp://%s:%d' % (EXTERNAL_IP4, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_4(server.port) with listen_on(Server, ('127.0.0.1', 2468)) as server: assert server.port == 2468 assert server.address == 'tcp://127.0.0.1:%d' % server.port yield assert_can_connect(server.address) yield assert_can_connect_locally_4(server.port) with listen_on(Server, 'tcp://127.0.0.1:2468') as server: assert server.port == 2468 assert server.address == 'tcp://127.0.0.1:%d' % server.port yield assert_can_connect(server.address) yield assert_can_connect_locally_4(server.port) # Only IPv6 if has_ipv6(): with listen_on(Server, ('::', 2468)) as server: assert server.port == 2468 assert server.address == 'tcp://[%s]:%d' % (EXTERNAL_IP6, server.port) yield assert_can_connect(server.address) yield assert_can_connect_from_everywhere_6(server.port) with listen_on(Server, ('::1', 2468)) as server: assert server.port == 2468 assert server.address == 'tcp://[::1]:%d' % server.port yield assert_can_connect(server.address) yield assert_can_connect_locally_6(server.port) with listen_on(Server, 'tcp://[::1]:2468') as server: assert server.port == 2468 assert server.address == 'tcp://[::1]:%d' % server.port yield assert_can_connect(server.address) yield assert_can_connect_locally_6(server.port) # InProc with listen_on(Server, 'inproc://') as server: inproc_addr1 = server.address assert inproc_addr1.startswith('inproc://%s/%d/' % (get_ip(), os.getpid())) yield assert_can_connect(inproc_addr1) with listen_on(Server, 'inproc://') as server2: inproc_addr2 = server2.address assert inproc_addr2.startswith('inproc://%s/%d/' % (get_ip(), os.getpid())) yield assert_can_connect(inproc_addr2) yield assert_can_connect(inproc_addr1) yield assert_cannot_connect(inproc_addr2)