From 7b38198375d58c4002723a116867077b3a44da88 Mon Sep 17 00:00:00 2001 From: livk Date: Fri, 7 Feb 2025 10:19:28 +0800 Subject: [PATCH 1/3] fix: the issue that the authorization of the default user fails is fixed --- .../clickhouse/ClickHouseContainer.java | 4 ++-- .../clickhouse/ClickHouseContainerTest.java | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/modules/clickhouse/src/main/java/org/testcontainers/clickhouse/ClickHouseContainer.java b/modules/clickhouse/src/main/java/org/testcontainers/clickhouse/ClickHouseContainer.java index 65cb2db5738..49325c6079b 100644 --- a/modules/clickhouse/src/main/java/org/testcontainers/clickhouse/ClickHouseContainer.java +++ b/modules/clickhouse/src/main/java/org/testcontainers/clickhouse/ClickHouseContainer.java @@ -37,9 +37,9 @@ public class ClickHouseContainer extends JdbcDatabaseContainer performQuery(clickhouse, "SELECT 1")); + Throwable cause = exception.getCause(); + assertTrue(cause instanceof SQLException); + assertTrue(cause.getMessage().contains("Authentication failed: password is incorrect, or there is no user with such name.")); + } + } } From cd7696539e86b47e3f99b5de1106fa07e24c76f1 Mon Sep 17 00:00:00 2001 From: livk Date: Fri, 7 Feb 2025 14:23:34 +0800 Subject: [PATCH 2/3] test: add clickhouse test --- .../testcontainers/ClickhouseTestImages.java | 2 + .../clickhouse/ClickHouseContainerTest.java | 52 ++++++++++--------- .../ClickHouseR2DBCDatabaseContainerTest.java | 20 ++++++- 3 files changed, 48 insertions(+), 26 deletions(-) diff --git a/modules/clickhouse/src/test/java/org/testcontainers/ClickhouseTestImages.java b/modules/clickhouse/src/test/java/org/testcontainers/ClickhouseTestImages.java index f79fb24c7b4..76a8ac87c94 100644 --- a/modules/clickhouse/src/test/java/org/testcontainers/ClickhouseTestImages.java +++ b/modules/clickhouse/src/test/java/org/testcontainers/ClickhouseTestImages.java @@ -4,4 +4,6 @@ public interface ClickhouseTestImages { DockerImageName CLICKHOUSE_IMAGE = DockerImageName.parse("clickhouse/clickhouse-server:21.9.2-alpine"); + + DockerImageName CLICKHOUSE_24_12_IMAGE = DockerImageName.parse("clickhouse/clickhouse-server:24.12-alpine"); } diff --git a/modules/clickhouse/src/test/java/org/testcontainers/clickhouse/ClickHouseContainerTest.java b/modules/clickhouse/src/test/java/org/testcontainers/clickhouse/ClickHouseContainerTest.java index 1632eb779cd..ceb9a7c2798 100644 --- a/modules/clickhouse/src/test/java/org/testcontainers/clickhouse/ClickHouseContainerTest.java +++ b/modules/clickhouse/src/test/java/org/testcontainers/clickhouse/ClickHouseContainerTest.java @@ -2,15 +2,15 @@ import com.zaxxer.hikari.pool.PoolInitializationException; import org.junit.Test; -import org.junit.function.ThrowingRunnable; +import org.testcontainers.ClickhouseTestImages; import org.testcontainers.db.AbstractContainerDatabaseTest; +import org.testcontainers.utility.DockerImageName; -import javax.sql.DataSource; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.Arrays; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; @@ -18,40 +18,44 @@ public class ClickHouseContainerTest extends AbstractContainerDatabaseTest { @Test public void testSimple() throws SQLException { - try (ClickHouseContainer clickhouse = new ClickHouseContainer("clickhouse/clickhouse-server:21.9.2-alpine")) { - clickhouse.start(); + for (DockerImageName image : Arrays.asList(ClickhouseTestImages.CLICKHOUSE_IMAGE, ClickhouseTestImages.CLICKHOUSE_24_12_IMAGE)) { + try (ClickHouseContainer clickhouse = new ClickHouseContainer(image)) { + clickhouse.start(); - ResultSet resultSet = performQuery(clickhouse, "SELECT 1"); + ResultSet resultSet = performQuery(clickhouse, "SELECT 1"); - int resultSetInt = resultSet.getInt(1); - assertThat(resultSetInt).isEqualTo(1); + int resultSetInt = resultSet.getInt(1); + assertThat(resultSetInt).isEqualTo(1); + } } } @Test public void customCredentialsWithUrlParams() throws SQLException { - try ( - ClickHouseContainer clickhouse = new ClickHouseContainer("clickhouse/clickhouse-server:21.9.2-alpine") - .withUsername("test") - .withPassword("test") - .withDatabaseName("test") - .withUrlParam("max_result_rows", "5") - ) { - clickhouse.start(); + for (DockerImageName image : Arrays.asList(ClickhouseTestImages.CLICKHOUSE_IMAGE, ClickhouseTestImages.CLICKHOUSE_24_12_IMAGE)) { + try ( + ClickHouseContainer clickhouse = new ClickHouseContainer(image) + .withUsername("test") + .withPassword("test") + .withDatabaseName("test") + .withUrlParam("max_result_rows", "5") + ) { + clickhouse.start(); - ResultSet resultSet = performQuery( - clickhouse, - "SELECT value FROM system.settings where name='max_result_rows'" - ); + ResultSet resultSet = performQuery( + clickhouse, + "SELECT value FROM system.settings where name='max_result_rows'" + ); - int resultSetInt = resultSet.getInt(1); - assertThat(resultSetInt).isEqualTo(5); + int resultSetInt = resultSet.getInt(1); + assertThat(resultSetInt).isEqualTo(5); + } } } @Test - public void testNewAuth() throws SQLException { - try (ClickHouseContainer clickhouse = new ClickHouseContainer("clickhouse/clickhouse-server:24.12-alpine") + public void testNewAuth() { + try (ClickHouseContainer clickhouse = new ClickHouseContainer(ClickhouseTestImages.CLICKHOUSE_24_12_IMAGE) .withUsername("default").withPassword("")) { clickhouse.start(); diff --git a/modules/clickhouse/src/test/java/org/testcontainers/clickhouse/ClickHouseR2DBCDatabaseContainerTest.java b/modules/clickhouse/src/test/java/org/testcontainers/clickhouse/ClickHouseR2DBCDatabaseContainerTest.java index a0333e44f5c..704c20ac982 100644 --- a/modules/clickhouse/src/test/java/org/testcontainers/clickhouse/ClickHouseR2DBCDatabaseContainerTest.java +++ b/modules/clickhouse/src/test/java/org/testcontainers/clickhouse/ClickHouseR2DBCDatabaseContainerTest.java @@ -1,10 +1,26 @@ package org.testcontainers.clickhouse; import io.r2dbc.spi.ConnectionFactoryOptions; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.testcontainers.ClickhouseTestImages; import org.testcontainers.r2dbc.AbstractR2DBCDatabaseContainerTest; +import org.testcontainers.utility.DockerImageName; +@RunWith(Parameterized.class) public class ClickHouseR2DBCDatabaseContainerTest extends AbstractR2DBCDatabaseContainerTest { + @Parameterized.Parameters(name = "{0}") + public static DockerImageName[] params() { + return new DockerImageName[]{ + ClickhouseTestImages.CLICKHOUSE_IMAGE, + ClickhouseTestImages.CLICKHOUSE_24_12_IMAGE + }; + } + + @Parameterized.Parameter + public DockerImageName image; + @Override protected ConnectionFactoryOptions getOptions(ClickHouseContainer container) { return ClickHouseR2DBCDatabaseContainer.getOptions(container); @@ -12,11 +28,11 @@ protected ConnectionFactoryOptions getOptions(ClickHouseContainer container) { @Override protected String createR2DBCUrl() { - return "r2dbc:tc:clickhouse:///db?TC_IMAGE_TAG=21.9.2-alpine"; + return "r2dbc:tc:clickhouse:///db?TC_IMAGE_TAG=" + image.getVersionPart(); } @Override protected ClickHouseContainer createContainer() { - return new ClickHouseContainer("clickhouse/clickhouse-server:21.9.2-alpine"); + return new ClickHouseContainer(image); } } From c349b1d2dcc0dd7f4816a4f8146c104da7a5c5ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?= Date: Mon, 10 Feb 2025 10:29:17 -0600 Subject: [PATCH 3/3] Polish --- .../clickhouse/ClickHouseContainer.java | 4 +- .../clickhouse/ClickHouseContainerTest.java | 60 ++++++++----------- .../ClickHouseR2DBCDatabaseContainerTest.java | 20 +------ 3 files changed, 28 insertions(+), 56 deletions(-) diff --git a/modules/clickhouse/src/main/java/org/testcontainers/clickhouse/ClickHouseContainer.java b/modules/clickhouse/src/main/java/org/testcontainers/clickhouse/ClickHouseContainer.java index 49325c6079b..78610454728 100644 --- a/modules/clickhouse/src/main/java/org/testcontainers/clickhouse/ClickHouseContainer.java +++ b/modules/clickhouse/src/main/java/org/testcontainers/clickhouse/ClickHouseContainer.java @@ -21,8 +21,6 @@ */ public class ClickHouseContainer extends JdbcDatabaseContainer { - private static final String NAME = "clickhouse"; - static final String CLICKHOUSE_CLICKHOUSE_SERVER = "clickhouse/clickhouse-server"; private static final DockerImageName CLICKHOUSE_IMAGE_NAME = DockerImageName.parse(CLICKHOUSE_CLICKHOUSE_SERVER); @@ -33,7 +31,7 @@ public class ClickHouseContainer extends JdbcDatabaseContainer performQuery(clickhouse, "SELECT 1")); - Throwable cause = exception.getCause(); - assertTrue(cause instanceof SQLException); - assertTrue(cause.getMessage().contains("Authentication failed: password is incorrect, or there is no user with such name.")); + ResultSet resultSet = performQuery(clickhouse, "SELECT 1"); + + int resultSetInt = resultSet.getInt(1); + assertThat(resultSetInt).isEqualTo(1); } } } diff --git a/modules/clickhouse/src/test/java/org/testcontainers/clickhouse/ClickHouseR2DBCDatabaseContainerTest.java b/modules/clickhouse/src/test/java/org/testcontainers/clickhouse/ClickHouseR2DBCDatabaseContainerTest.java index 704c20ac982..a0333e44f5c 100644 --- a/modules/clickhouse/src/test/java/org/testcontainers/clickhouse/ClickHouseR2DBCDatabaseContainerTest.java +++ b/modules/clickhouse/src/test/java/org/testcontainers/clickhouse/ClickHouseR2DBCDatabaseContainerTest.java @@ -1,26 +1,10 @@ package org.testcontainers.clickhouse; import io.r2dbc.spi.ConnectionFactoryOptions; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.testcontainers.ClickhouseTestImages; import org.testcontainers.r2dbc.AbstractR2DBCDatabaseContainerTest; -import org.testcontainers.utility.DockerImageName; -@RunWith(Parameterized.class) public class ClickHouseR2DBCDatabaseContainerTest extends AbstractR2DBCDatabaseContainerTest { - @Parameterized.Parameters(name = "{0}") - public static DockerImageName[] params() { - return new DockerImageName[]{ - ClickhouseTestImages.CLICKHOUSE_IMAGE, - ClickhouseTestImages.CLICKHOUSE_24_12_IMAGE - }; - } - - @Parameterized.Parameter - public DockerImageName image; - @Override protected ConnectionFactoryOptions getOptions(ClickHouseContainer container) { return ClickHouseR2DBCDatabaseContainer.getOptions(container); @@ -28,11 +12,11 @@ protected ConnectionFactoryOptions getOptions(ClickHouseContainer container) { @Override protected String createR2DBCUrl() { - return "r2dbc:tc:clickhouse:///db?TC_IMAGE_TAG=" + image.getVersionPart(); + return "r2dbc:tc:clickhouse:///db?TC_IMAGE_TAG=21.9.2-alpine"; } @Override protected ClickHouseContainer createContainer() { - return new ClickHouseContainer(image); + return new ClickHouseContainer("clickhouse/clickhouse-server:21.9.2-alpine"); } }