diff --git a/modules/clickhouse/build.gradle b/modules/clickhouse/build.gradle index d366825e261..8fabc3a3397 100644 --- a/modules/clickhouse/build.gradle +++ b/modules/clickhouse/build.gradle @@ -13,6 +13,7 @@ dependencies { testImplementation 'org.apache.httpcomponents.client5:httpclient5:5.4.2' testImplementation 'org.assertj:assertj-core:3.27.3' + testImplementation 'com.clickhouse:client-v2:0.9.0' testImplementation testFixtures(project(':r2dbc')) testRuntimeOnly(group: 'com.clickhouse', name: 'clickhouse-r2dbc', version: '0.7.2', classifier: 'http') } 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 d3256124de1..02a02267ec5 100644 --- a/modules/clickhouse/src/main/java/org/testcontainers/clickhouse/ClickHouseContainer.java +++ b/modules/clickhouse/src/main/java/org/testcontainers/clickhouse/ClickHouseContainer.java @@ -101,6 +101,10 @@ public String getJdbcUrl() { ); } + public String getHttpUrl() { + return "http://" + getHost() + ":" + getMappedPort(HTTP_PORT); + } + @Override public String getUsername() { return username; 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 d5389b610c4..0e7a3d1c119 100644 --- a/modules/clickhouse/src/test/java/org/testcontainers/clickhouse/ClickHouseContainerTest.java +++ b/modules/clickhouse/src/test/java/org/testcontainers/clickhouse/ClickHouseContainerTest.java @@ -1,13 +1,20 @@ package org.testcontainers.clickhouse; +import com.clickhouse.client.api.Client; +import com.clickhouse.client.api.data_formats.ClickHouseBinaryFormatReader; +import com.clickhouse.client.api.query.QueryResponse; import org.junit.Test; import org.testcontainers.ClickhouseTestImages; import org.testcontainers.db.AbstractContainerDatabaseTest; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.fail; public class ClickHouseContainerTest extends AbstractContainerDatabaseTest { @@ -56,4 +63,27 @@ public void testNewAuth() throws SQLException { assertThat(resultSetInt).isEqualTo(1); } } + + @Test + public void testGetHttpMethodWithHttpClient() { + ClickHouseContainer clickhouse = new ClickHouseContainer(ClickhouseTestImages.CLICKHOUSE_24_12_IMAGE); + clickhouse.start(); + Client client = new Client.Builder() + .addEndpoint(clickhouse.getHttpUrl()) + .setUsername(clickhouse.getUsername()) + .setPassword(clickhouse.getPassword()) + .build(); + try { + QueryResponse queryResponse = client.query("SELECT 1").get(1, TimeUnit.MINUTES); + ClickHouseBinaryFormatReader reader = client.newBinaryFormatReader(queryResponse); + reader.next(); + int result = reader.getInteger(1); + assertThat(result).isEqualTo(1); + } catch (ExecutionException | InterruptedException | TimeoutException e) { + fail("Cannot get sql result:" + e); + } finally { + clickhouse.close(); + client.close(); + } + } }