1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
import socket
from tests.config import (
TEST_HOST_NAME_IPV4,
PROXY_HOST_NAME_IPV4,
TEST_HOST_NAME_IPV6,
PROXY_HOST_NAME_IPV6,
)
def getaddrinfo_sync_mock():
_orig_getaddrinfo = socket.getaddrinfo
def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):
if host in (TEST_HOST_NAME_IPV4, PROXY_HOST_NAME_IPV4):
return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', ('127.0.0.1', port))]
if host in (TEST_HOST_NAME_IPV6, PROXY_HOST_NAME_IPV6):
return [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('::1', port, 0, 0))]
return _orig_getaddrinfo(host, port, family, type, proto, flags)
return getaddrinfo
def getaddrinfo_async_mock(origin_getaddrinfo):
async def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0):
if host in (TEST_HOST_NAME_IPV4, PROXY_HOST_NAME_IPV4):
return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', ('127.0.0.1', port))]
if host in (TEST_HOST_NAME_IPV6, PROXY_HOST_NAME_IPV6):
return [(socket.AF_INET6, socket.SOCK_STREAM, 6, '', ('::1', port, 0, 0))]
return await origin_getaddrinfo(
host,
port,
family=family,
type=type,
proto=proto,
flags=flags,
)
return getaddrinfo
def _resolve_local(host):
if host in (TEST_HOST_NAME_IPV4, PROXY_HOST_NAME_IPV4):
return socket.AF_INET, '127.0.0.1'
if host in (TEST_HOST_NAME_IPV6, PROXY_HOST_NAME_IPV6):
return socket.AF_INET6, '::1'
return None
def sync_resolve_factory(cls):
original_resolve = cls.resolve
def new_resolve(self, host, port=0, family=socket.AF_UNSPEC):
res = _resolve_local(host)
if res is not None:
return res
return original_resolve(self, host=host, port=port, family=family)
return new_resolve
def async_resolve_factory(cls):
original_resolve = cls.resolve
async def new_resolve(self, host, port=0, family=socket.AF_UNSPEC):
res = _resolve_local(host)
if res is not None:
return res
return await original_resolve(self, host=host, port=port, family=family)
return new_resolve
|