From 16c6f4d11d6ae64e3ffde33fdb30625b871cf5ea Mon Sep 17 00:00:00 2001 From: Dave Ankin Date: Tue, 20 Feb 2024 17:00:12 -0500 Subject: [PATCH 1/3] make clickhouse waiting look more like java-tc --- .../testcontainers/clickhouse/__init__.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/modules/clickhouse/testcontainers/clickhouse/__init__.py b/modules/clickhouse/testcontainers/clickhouse/__init__.py index b78c509c..b6286237 100644 --- a/modules/clickhouse/testcontainers/clickhouse/__init__.py +++ b/modules/clickhouse/testcontainers/clickhouse/__init__.py @@ -12,9 +12,8 @@ # under the License. import os from typing import Optional - -import clickhouse_driver -from clickhouse_driver.errors import Error +from urllib.request import urlopen +from urllib.error import HTTPError, URLError from testcontainers.core.generic import DbContainer from testcontainers.core.utils import raise_for_deprecated_parameter @@ -51,10 +50,12 @@ def __init__(self, image: str = "clickhouse/clickhouse-server:latest", port: int self.port = port self.with_exposed_ports(self.port) - @wait_container_is_ready(Error, EOFError) + @wait_container_is_ready(HTTPError, URLError) def _connect(self) -> None: - with clickhouse_driver.Client.from_url(self.get_connection_url()) as client: - client.execute("SELECT version()") + # noinspection HttpUrlsUsage + url = f'http://{self.get_container_host_ip()}:{self.get_exposed_port(self.port)}' + with urlopen(url) as r: + assert 'Ok' in r.read() def _configure(self) -> None: self.with_env("CLICKHOUSE_USER", self.username) From dd050bbc360d776d0f7afeef019d871dc89f29e6 Mon Sep 17 00:00:00 2001 From: Dave Ankin Date: Tue, 20 Feb 2024 17:07:25 -0500 Subject: [PATCH 2/3] more missed details --- modules/clickhouse/testcontainers/clickhouse/__init__.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/clickhouse/testcontainers/clickhouse/__init__.py b/modules/clickhouse/testcontainers/clickhouse/__init__.py index b6286237..00f94fd6 100644 --- a/modules/clickhouse/testcontainers/clickhouse/__init__.py +++ b/modules/clickhouse/testcontainers/clickhouse/__init__.py @@ -49,13 +49,14 @@ def __init__(self, image: str = "clickhouse/clickhouse-server:latest", port: int self.dbname = dbname or os.environ.get("CLICKHOUSE_DB", "test") self.port = port 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(self.port)}' + url = f'http://{self.get_container_host_ip()}:{self.get_exposed_port(8123)}' with urlopen(url) as r: - assert 'Ok' in r.read() + assert b'Ok' in r.read() def _configure(self) -> None: self.with_env("CLICKHOUSE_USER", self.username) From a7b4f9ed1b1edcba4488ba738b1d19bb17c27bce Mon Sep 17 00:00:00 2001 From: Dave Ankin Date: Fri, 8 Mar 2024 02:50:17 -0500 Subject: [PATCH 3/3] l*nter again --- modules/clickhouse/testcontainers/clickhouse/__init__.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/clickhouse/testcontainers/clickhouse/__init__.py b/modules/clickhouse/testcontainers/clickhouse/__init__.py index 9d72cb3e..fbc8fab6 100644 --- a/modules/clickhouse/testcontainers/clickhouse/__init__.py +++ b/modules/clickhouse/testcontainers/clickhouse/__init__.py @@ -12,8 +12,8 @@ # under the License. import os from typing import Optional -from urllib.request import urlopen 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 @@ -47,7 +47,7 @@ def __init__( username: Optional[str] = None, password: Optional[str] = None, dbname: Optional[str] = None, - **kwargs + **kwargs, ) -> None: raise_for_deprecated_parameter(kwargs, "user", "username") super().__init__(image=image, **kwargs) @@ -61,9 +61,9 @@ def __init__( @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)}' + url = f"http://{self.get_container_host_ip()}:{self.get_exposed_port(8123)}" with urlopen(url) as r: - assert b'Ok' in r.read() + assert b"Ok" in r.read() def _configure(self) -> None: self.with_env("CLICKHOUSE_USER", self.username)