mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-27 10:02:01 +00:00
Merge pull request #52984 from ClickHouse/remove-test_host_regexp_multiple_ptr_records_concurrent
Remove `test_host_regexp_multiple_ptr_records_concurrent`, CC @arthurpassos
This commit is contained in:
commit
109b0197d6
@ -1,4 +0,0 @@
|
|||||||
<clickhouse>
|
|
||||||
<disable_internal_dns_cache>1</disable_internal_dns_cache>
|
|
||||||
<max_concurrent_queries>250</max_concurrent_queries>
|
|
||||||
</clickhouse>
|
|
@ -1,11 +0,0 @@
|
|||||||
<yandex>
|
|
||||||
<users>
|
|
||||||
<test_dns>
|
|
||||||
<password/>
|
|
||||||
<networks>
|
|
||||||
<host_regexp>test1\.example\.com$</host_regexp>
|
|
||||||
</networks>
|
|
||||||
<profile>default</profile>
|
|
||||||
</test_dns>
|
|
||||||
</users>
|
|
||||||
</yandex>
|
|
@ -1,5 +0,0 @@
|
|||||||
<yandex>
|
|
||||||
<listen_host>::</listen_host>
|
|
||||||
<listen_host>0.0.0.0</listen_host>
|
|
||||||
<listen_try>1</listen_try>
|
|
||||||
</yandex>
|
|
@ -1,8 +0,0 @@
|
|||||||
. {
|
|
||||||
hosts /example.com {
|
|
||||||
reload "20ms"
|
|
||||||
fallthrough
|
|
||||||
}
|
|
||||||
forward . 127.0.0.11
|
|
||||||
log
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
filled in runtime, but needs to exist in order to be volume mapped in docker
|
|
@ -1,62 +0,0 @@
|
|||||||
import pycurl
|
|
||||||
import threading
|
|
||||||
from io import BytesIO
|
|
||||||
import sys
|
|
||||||
|
|
||||||
client_ip = sys.argv[1]
|
|
||||||
server_ip = sys.argv[2]
|
|
||||||
|
|
||||||
mutex = threading.Lock()
|
|
||||||
success_counter = 0
|
|
||||||
number_of_threads = 100
|
|
||||||
number_of_iterations = 100
|
|
||||||
|
|
||||||
|
|
||||||
def perform_request():
|
|
||||||
buffer = BytesIO()
|
|
||||||
crl = pycurl.Curl()
|
|
||||||
crl.setopt(pycurl.INTERFACE, client_ip)
|
|
||||||
crl.setopt(crl.WRITEDATA, buffer)
|
|
||||||
crl.setopt(crl.URL, f"http://{server_ip}:8123/?query=select+1&user=test_dns")
|
|
||||||
|
|
||||||
crl.perform()
|
|
||||||
|
|
||||||
# End curl session
|
|
||||||
crl.close()
|
|
||||||
|
|
||||||
str_response = buffer.getvalue().decode("iso-8859-1")
|
|
||||||
expected_response = "1\n"
|
|
||||||
|
|
||||||
mutex.acquire()
|
|
||||||
|
|
||||||
global success_counter
|
|
||||||
|
|
||||||
if str_response == expected_response:
|
|
||||||
success_counter += 1
|
|
||||||
|
|
||||||
mutex.release()
|
|
||||||
|
|
||||||
|
|
||||||
def perform_multiple_requests(n):
|
|
||||||
for request_number in range(n):
|
|
||||||
perform_request()
|
|
||||||
|
|
||||||
|
|
||||||
threads = []
|
|
||||||
|
|
||||||
|
|
||||||
for i in range(number_of_threads):
|
|
||||||
thread = threading.Thread(
|
|
||||||
target=perform_multiple_requests, args=(number_of_iterations,)
|
|
||||||
)
|
|
||||||
thread.start()
|
|
||||||
threads.append(thread)
|
|
||||||
|
|
||||||
for thread in threads:
|
|
||||||
thread.join()
|
|
||||||
|
|
||||||
|
|
||||||
if success_counter == number_of_threads * number_of_iterations:
|
|
||||||
exit(0)
|
|
||||||
|
|
||||||
exit(1)
|
|
@ -1,88 +0,0 @@
|
|||||||
import pytest
|
|
||||||
import socket
|
|
||||||
from helpers.cluster import ClickHouseCluster, get_docker_compose_path, run_and_check
|
|
||||||
from time import sleep
|
|
||||||
import os
|
|
||||||
|
|
||||||
DOCKER_COMPOSE_PATH = get_docker_compose_path()
|
|
||||||
SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
|
|
||||||
|
|
||||||
cluster = ClickHouseCluster(__file__)
|
|
||||||
|
|
||||||
ch_server = cluster.add_instance(
|
|
||||||
"clickhouse-server",
|
|
||||||
with_coredns=True,
|
|
||||||
main_configs=["configs/config.xml", "configs/listen_host.xml"],
|
|
||||||
user_configs=["configs/host_regexp.xml"],
|
|
||||||
)
|
|
||||||
|
|
||||||
client = cluster.add_instance(
|
|
||||||
"clickhouse-client",
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="module")
|
|
||||||
def started_cluster():
|
|
||||||
global cluster
|
|
||||||
try:
|
|
||||||
cluster.start()
|
|
||||||
yield cluster
|
|
||||||
|
|
||||||
finally:
|
|
||||||
cluster.shutdown()
|
|
||||||
|
|
||||||
|
|
||||||
def check_ptr_record(ip, hostname):
|
|
||||||
try:
|
|
||||||
host, aliaslist, ipaddrlist = socket.gethostbyaddr(ip)
|
|
||||||
if hostname.lower() == host.lower():
|
|
||||||
return True
|
|
||||||
except socket.herror:
|
|
||||||
pass
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
def setup_dns_server(ip):
|
|
||||||
domains_string = "test3.example.com test2.example.com test1.example.com"
|
|
||||||
example_file_path = f'{ch_server.env_variables["COREDNS_CONFIG_DIR"]}/example.com'
|
|
||||||
run_and_check(f"echo '{ip} {domains_string}' > {example_file_path}", shell=True)
|
|
||||||
|
|
||||||
# DNS server takes time to reload the configuration.
|
|
||||||
for try_num in range(10):
|
|
||||||
if all(check_ptr_record(ip, host) for host in domains_string.split()):
|
|
||||||
break
|
|
||||||
sleep(1)
|
|
||||||
|
|
||||||
|
|
||||||
def setup_ch_server(dns_server_ip):
|
|
||||||
ch_server.exec_in_container(
|
|
||||||
(["bash", "-c", f"echo 'nameserver {dns_server_ip}' > /etc/resolv.conf"])
|
|
||||||
)
|
|
||||||
ch_server.exec_in_container(
|
|
||||||
(["bash", "-c", "echo 'options ndots:0' >> /etc/resolv.conf"])
|
|
||||||
)
|
|
||||||
ch_server.query("SYSTEM DROP DNS CACHE")
|
|
||||||
|
|
||||||
|
|
||||||
def build_endpoint_v4(ip):
|
|
||||||
return f"'http://{ip}:8123/?query=SELECT+1&user=test_dns'"
|
|
||||||
|
|
||||||
|
|
||||||
def build_endpoint_v6(ip):
|
|
||||||
return build_endpoint_v4(f"[{ip}]")
|
|
||||||
|
|
||||||
|
|
||||||
def test_host_regexp_multiple_ptr_v4(started_cluster):
|
|
||||||
server_ip = cluster.get_instance_ip("clickhouse-server")
|
|
||||||
client_ip = cluster.get_instance_ip("clickhouse-client")
|
|
||||||
dns_server_ip = cluster.get_instance_ip(cluster.coredns_host)
|
|
||||||
|
|
||||||
setup_dns_server(client_ip)
|
|
||||||
setup_ch_server(dns_server_ip)
|
|
||||||
|
|
||||||
current_dir = os.path.dirname(__file__)
|
|
||||||
client.copy_file_to_container(
|
|
||||||
os.path.join(current_dir, "scripts", "stress_test.py"), "stress_test.py"
|
|
||||||
)
|
|
||||||
|
|
||||||
client.exec_in_container(["python3", f"stress_test.py", client_ip, server_ip])
|
|
Loading…
Reference in New Issue
Block a user