async def METHOD_NAME(
    mocked_resolver,
    num_of_dns_resp,
    num_clients,
):
    def generate_dns_response(num_of_dns_resp):
        dns_resp = []
        for _ in range(num_of_dns_resp):
            dns_resp.append(
                {
                    "hostname": "rally-dns-test.es.us-east-1.aws.found.io",
                    "host": ".".join([str(random.randint(0, 255)) for _ in range(4)]),
                    "port": 443,
                    "family": "test-family",
                    "proto": 6,
                    "flags": "test-flag",
                },
            )
        return dns_resp
    dns_responses = generate_dns_response(num_of_dns_resp)
    mocked_resolver.return_value = dns_responses
    hostinfo = []
    for i in range(num_clients):
        hostinfo.append(
            # pylint: disable=protected-access
            await RallyTCPConnector(limit_per_host=256, use_dns_cache=True, enable_cleanup_closed=True, client_id=i)._resolve_host(
                "rally-dns-test.es.us-east-1.aws.found.io", 443
            )
        )
    first_host_per_client = []
    for host in hostinfo:
        # for each host extract the first 'host' resolved as that's what will be used to establish a connection
        first_host_per_client.append(host[0]["host"])
    # count the distribution of the allocation
    ip_alloc = {}
    for ip in first_host_per_client:
        if ip in ip_alloc:
            ip_alloc[ip] += 1
        else:
            ip_alloc[ip] = 1
    # maximum and minimum number of clients a single ip should have
    upper_bound = math.ceil(num_clients / num_of_dns_resp)
    lower_bound = math.floor(num_clients / num_of_dns_resp)
    for num_of_clients in ip_alloc.values():
        assert num_of_clients == upper_bound or lower_bound
    assert sum(ip_alloc.values()) == num_clients