Add waiting for prometheus instances to start before running test "test_prometheus_protocols".

This commit is contained in:
Vitaly Baranov 2024-11-11 16:06:17 +01:00
parent 30498c3a0a
commit b7d8072819
2 changed files with 26 additions and 3 deletions

View File

@ -744,11 +744,13 @@ class ClickHouseCluster:
# available when with_prometheus == True # available when with_prometheus == True
self.with_prometheus = False self.with_prometheus = False
self.prometheus_writer_host = "prometheus_writer" self.prometheus_writer_host = "prometheus_writer"
self.prometheus_writer_ip = None
self.prometheus_writer_port = 9090 self.prometheus_writer_port = 9090
self.prometheus_writer_logs_dir = p.abspath( self.prometheus_writer_logs_dir = p.abspath(
p.join(self.instances_dir, "prometheus_writer/logs") p.join(self.instances_dir, "prometheus_writer/logs")
) )
self.prometheus_reader_host = "prometheus_reader" self.prometheus_reader_host = "prometheus_reader"
self.prometheus_reader_ip = None
self.prometheus_reader_port = 9091 self.prometheus_reader_port = 9091
self.prometheus_reader_logs_dir = p.abspath( self.prometheus_reader_logs_dir = p.abspath(
p.join(self.instances_dir, "prometheus_reader/logs") p.join(self.instances_dir, "prometheus_reader/logs")
@ -2728,6 +2730,16 @@ class ClickHouseCluster:
raise Exception("Can't wait LDAP to start") raise Exception("Can't wait LDAP to start")
def wait_prometheus_to_start(self):
self.prometheus_reader_ip = self.get_instance_ip(self.prometheus_reader_host)
self.prometheus_writer_ip = self.get_instance_ip(self.prometheus_writer_host)
self.wait_for_url(
f"http://{self.prometheus_reader_ip}:{self.prometheus_reader_port}/api/v1/query?query=time()"
)
self.wait_for_url(
f"http://{self.prometheus_writer_ip}:{self.prometheus_writer_port}/api/v1/query?query=time()"
)
def start(self): def start(self):
pytest_xdist_logging_to_separate_files.setup() pytest_xdist_logging_to_separate_files.setup()
logging.info("Running tests in {}".format(self.base_path)) logging.info("Running tests in {}".format(self.base_path))
@ -3083,12 +3095,23 @@ class ClickHouseCluster:
f"http://{self.jdbc_bridge_ip}:{self.jdbc_bridge_port}/ping" f"http://{self.jdbc_bridge_ip}:{self.jdbc_bridge_port}/ping"
) )
if self.with_prometheus: if self.with_prometheus and self.base_prometheus_cmd:
os.makedirs(self.prometheus_writer_logs_dir) os.makedirs(self.prometheus_writer_logs_dir)
os.chmod(self.prometheus_writer_logs_dir, stat.S_IRWXU | stat.S_IRWXO) os.chmod(self.prometheus_writer_logs_dir, stat.S_IRWXU | stat.S_IRWXO)
os.makedirs(self.prometheus_reader_logs_dir) os.makedirs(self.prometheus_reader_logs_dir)
os.chmod(self.prometheus_reader_logs_dir, stat.S_IRWXU | stat.S_IRWXO) os.chmod(self.prometheus_reader_logs_dir, stat.S_IRWXU | stat.S_IRWXO)
prometheus_start_cmd = self.base_prometheus_cmd + common_opts
logging.info(
"Trying to create Prometheus instances by command %s",
" ".join(map(str, prometheus_start_cmd)),
)
run_and_check(prometheus_start_cmd)
self.up_called = True
logging.info("Trying to connect to Prometheus...")
self.wait_prometheus_to_start()
clickhouse_start_cmd = self.base_cmd + ["up", "-d", "--no-recreate"] clickhouse_start_cmd = self.base_cmd + ["up", "-d", "--no-recreate"]
logging.debug( logging.debug(
( (

View File

@ -20,7 +20,7 @@ node = cluster.add_instance(
def execute_query_on_prometheus_writer(query, timestamp): def execute_query_on_prometheus_writer(query, timestamp):
return execute_query_impl( return execute_query_impl(
cluster.get_instance_ip(cluster.prometheus_writer_host), cluster.prometheus_writer_ip,
cluster.prometheus_writer_port, cluster.prometheus_writer_port,
"/api/v1/query", "/api/v1/query",
query, query,
@ -30,7 +30,7 @@ def execute_query_on_prometheus_writer(query, timestamp):
def execute_query_on_prometheus_reader(query, timestamp): def execute_query_on_prometheus_reader(query, timestamp):
return execute_query_impl( return execute_query_impl(
cluster.get_instance_ip(cluster.prometheus_reader_host), cluster.prometheus_reader_ip,
cluster.prometheus_reader_port, cluster.prometheus_reader_port,
"/api/v1/query", "/api/v1/query",
query, query,