From b6c41f2eef9ea4b8f2f42bdc5beeabee8d3fd86d Mon Sep 17 00:00:00 2001 From: dromanov Date: Wed, 28 Jan 2026 15:54:56 +0300 Subject: [PATCH] feat(clickhouse): add HttpWaitStrategy and migrate ClickHouseContainer from deprecated decorator --- .../clickhouse/testcontainers/clickhouse/__init__.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/modules/clickhouse/testcontainers/clickhouse/__init__.py b/modules/clickhouse/testcontainers/clickhouse/__init__.py index fbc8fab65..00ebde809 100644 --- a/modules/clickhouse/testcontainers/clickhouse/__init__.py +++ b/modules/clickhouse/testcontainers/clickhouse/__init__.py @@ -12,12 +12,10 @@ # under the License. import os from typing import Optional -from urllib.error import HTTPError, URLError -from urllib.request import urlopen from testcontainers.core.generic import DbContainer from testcontainers.core.utils import raise_for_deprecated_parameter -from testcontainers.core.waiting_utils import wait_container_is_ready +from testcontainers.core.wait_strategies import HttpWaitStrategy class ClickHouseContainer(DbContainer): @@ -58,12 +56,9 @@ def __init__( self.with_exposed_ports(self.port) self.with_exposed_ports(8123) - @wait_container_is_ready(HTTPError, URLError) def _connect(self) -> None: - # noinspection HttpUrlsUsage - url = f"http://{self.get_container_host_ip()}:{self.get_exposed_port(8123)}" - with urlopen(url) as r: - assert b"Ok" in r.read() + strategy = HttpWaitStrategy(8123).for_response_predicate(lambda response: "Ok" in response) + strategy.wait_until_ready(self) def _configure(self) -> None: self.with_env("CLICKHOUSE_USER", self.username)