Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
import com.clickhouse.client.api.Client;
import com.clickhouse.client.api.data_formats.ClickHouseBinaryFormatReader;
import com.clickhouse.client.api.query.QueryResponse;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.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;
Expand All @@ -26,10 +26,7 @@ void testSimple() throws SQLException {
) {
clickhouse.start();

ResultSet resultSet = performQuery(clickhouse, "SELECT 1");

int resultSetInt = resultSet.getInt(1);
assertThat(resultSetInt).isEqualTo(1);
executeSelectOneQuery(clickhouse);
}
}

Expand All @@ -45,13 +42,18 @@ void customCredentialsWithUrlParams() throws SQLException {
) {
clickhouse.start();

ResultSet resultSet = performQuery(
executeQuery(
clickhouse,
"SELECT value FROM system.settings where name='max_result_rows'"
"SELECT value FROM system.settings where name='max_result_rows'",
resultSet -> {
Assertions
.assertThatNoException()
.isThrownBy(() -> {
int resultSetInt = resultSet.getInt(1);
assertThat(resultSetInt).isEqualTo(5);
});
}
);

int resultSetInt = resultSet.getInt(1);
assertThat(resultSetInt).isEqualTo(5);
}
}

Expand All @@ -60,10 +62,7 @@ void testNewAuth() throws SQLException {
try (ClickHouseContainer clickhouse = new ClickHouseContainer(ClickhouseTestImages.CLICKHOUSE_24_12_IMAGE)) {
clickhouse.start();

ResultSet resultSet = performQuery(clickhouse, "SELECT 1");

int resultSetInt = resultSet.getInt(1);
assertThat(resultSetInt).isEqualTo(1);
executeSelectOneQuery(clickhouse);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,16 @@
import org.testcontainers.containers.ClickHouseContainer;
import org.testcontainers.db.AbstractContainerDatabaseTest;

import java.sql.ResultSet;
import java.sql.SQLException;

import static org.assertj.core.api.Assertions.assertThat;

class SimpleClickhouseTest extends AbstractContainerDatabaseTest {

@Test
public void testSimple() throws SQLException {
void testSimple() throws SQLException {
try (ClickHouseContainer clickhouse = new ClickHouseContainer(ClickhouseTestImages.CLICKHOUSE_IMAGE)) {
clickhouse.start();

ResultSet resultSet = performQuery(clickhouse, "SELECT 1");

int resultSetInt = resultSet.getInt(1);
assertThat(resultSetInt).as("A basic SELECT query succeeds").isEqualTo(1);
executeSelectOneQuery(clickhouse);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import org.testcontainers.db.AbstractContainerDatabaseTest;
import org.testcontainers.images.builder.Transferable;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.LogManager;
Expand All @@ -26,11 +25,7 @@ void testSimple() throws SQLException {
// }
) {
cockroach.start();

ResultSet resultSet = performQuery(cockroach, "SELECT 1");

int resultSetInt = resultSet.getInt(1);
assertThat(resultSetInt).as("A basic SELECT query succeeds").isEqualTo(1);
executeSelectOneQuery(cockroach);
}
}

Expand All @@ -42,10 +37,7 @@ void testExplicitInitScript() throws SQLException {
) { // CockroachDB is expected to be compatible with Postgres
cockroach.start();

ResultSet resultSet = performQuery(cockroach, "SELECT foo FROM bar");

String firstColumnValue = resultSet.getString(1);
assertThat(firstColumnValue).as("Value from init script should equal real value").isEqualTo("hello world");
executeSelectFooBarQuery(cockroach);
}
}

Expand Down Expand Up @@ -80,10 +72,7 @@ void testWithUsernamePasswordDatabase() throws SQLException {
) {
cockroach.start();

ResultSet resultSet = performQuery(cockroach, "SELECT 1");

int resultSetInt = resultSet.getInt(1);
assertThat(resultSetInt).as("A basic SELECT query succeeds").isEqualTo(1);
executeSelectOneQuery(cockroach);

String jdbcUrl = cockroach.getJdbcUrl();
assertThat(jdbcUrl).contains("/" + "test_database");
Expand Down Expand Up @@ -123,10 +112,7 @@ void testInitializationScript() throws SQLException {
) { // CockroachDB is expected to be compatible with Postgres
cockroach.start();

ResultSet resultSet = performQuery(cockroach, "SELECT foo FROM bar");

String firstColumnValue = resultSet.getString(1);
assertThat(firstColumnValue).as("Value from init script should equal real value").isEqualTo("hello world");
executeSelectFooBarQuery(cockroach);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package org.testcontainers.junit.cratedb;

import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.Test;
import org.testcontainers.CrateDBTestImages;
import org.testcontainers.cratedb.CrateDBContainer;
import org.testcontainers.db.AbstractContainerDatabaseTest;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.LogManager;
Expand All @@ -26,9 +26,7 @@ void testSimple() throws SQLException {
) {
cratedb.start();

ResultSet resultSet = performQuery(cratedb, "SELECT 1");
int resultSetInt = resultSet.getInt(1);
assertThat(resultSetInt).as("A basic SELECT query succeeds").isEqualTo(1);
executeSelectOneQuery(cratedb);
assertHasCorrectExposedAndLivenessCheckPorts(cratedb);
}
}
Expand All @@ -41,9 +39,18 @@ void testCommandOverride() throws SQLException {
) {
cratedb.start();

ResultSet resultSet = performQuery(cratedb, "select name from sys.cluster");
String result = resultSet.getString(1);
assertThat(result).as("cluster name should be overridden").isEqualTo("testcontainers");
executeQuery(
cratedb,
"select name from sys.cluster",
resultSet -> {
Assertions
.assertThatNoException()
.isThrownBy(() -> {
String result = resultSet.getString(1);
assertThat(result).as("cluster name should be overridden").isEqualTo("testcontainers");
});
}
);
}
}

Expand All @@ -55,10 +62,7 @@ void testExplicitInitScript() throws SQLException {
) {
cratedb.start();

ResultSet resultSet = performQuery(cratedb, "SELECT foo FROM bar");

String firstColumnValue = resultSet.getString(1);
assertThat(firstColumnValue).as("Value from init script should equal real value").isEqualTo("hello world");
executeSelectFooBarQuery(cratedb);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,8 @@
import org.junit.jupiter.api.Test;
import org.testcontainers.db.AbstractContainerDatabaseTest;

import java.sql.ResultSet;
import java.sql.SQLException;

import static org.assertj.core.api.Assertions.assertThat;

class DatabendContainerTest extends AbstractContainerDatabaseTest {

@Test
Expand All @@ -18,10 +15,7 @@ void testSimple() throws SQLException {
) {
databend.start();

ResultSet resultSet = performQuery(databend, "SELECT 1");

int resultSetInt = resultSet.getInt(1);
assertThat(resultSetInt).isEqualTo(1);
executeSelectOneQuery(databend);
}
}

Expand All @@ -35,10 +29,7 @@ void customCredentialsWithUrlParams() throws SQLException {
) {
databend.start();

ResultSet resultSet = performQuery(databend, "SELECT 1;");

int resultSetInt = resultSet.getInt(1);
assertThat(resultSetInt).isEqualTo(1);
executeSelectOneQuery(databend);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
import org.testcontainers.Db2TestImages;
import org.testcontainers.db.AbstractContainerDatabaseTest;

import java.sql.ResultSet;
import java.sql.SQLException;

import static org.assertj.core.api.Assertions.assertThat;
Expand All @@ -19,10 +18,8 @@ void testSimple() throws SQLException {
) {
db2.start();

ResultSet resultSet = performQuery(db2, "SELECT 1 FROM SYSIBM.SYSDUMMY1");
executeSelectOneQuery(db2, "SELECT 1 FROM SYSIBM.SYSDUMMY1");

int resultSetInt = resultSet.getInt(1);
assertThat(resultSetInt).as("A basic SELECT query succeeds").isEqualTo(1);
assertHasCorrectExposedAndLivenessCheckPorts(db2);
}
}
Expand All @@ -32,10 +29,8 @@ void testSimpleWithNewImage() throws SQLException {
try (Db2Container db2 = new Db2Container("icr.io/db2_community/db2:11.5.8.0").acceptLicense()) {
db2.start();

ResultSet resultSet = performQuery(db2, "SELECT 1 FROM SYSIBM.SYSDUMMY1");
executeSelectOneQuery(db2, "SELECT 1 FROM SYSIBM.SYSDUMMY1");

int resultSetInt = resultSet.getInt(1);
assertThat(resultSetInt).as("A basic SELECT query succeeds").isEqualTo(1);
assertHasCorrectExposedAndLivenessCheckPorts(db2);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,115 @@

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.assertj.core.api.Assertions;
import org.testcontainers.containers.JdbcDatabaseContainer;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.function.Consumer;

import javax.sql.DataSource;

public abstract class AbstractContainerDatabaseTest {

protected ResultSet performQuery(JdbcDatabaseContainer<?> container, String sql) throws SQLException {
DataSource ds = getDataSource(container);
Statement statement = ds.getConnection().createStatement();
statement.execute(sql);
ResultSet resultSet = statement.getResultSet();
protected void executeQuery(
final JdbcDatabaseContainer<?> container,
final String sql,
final Consumer<ResultSet> consumer
) throws SQLException {
final DataSource ds = getDataSource(container);

resultSet.next();
return resultSet;
try (
Connection connection = ds.getConnection();
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql)
) {
resultSet.next();
consumer.accept(resultSet);
}
}

protected DataSource getDataSource(JdbcDatabaseContainer<?> container) {
protected void executeSelectOneQuery(final JdbcDatabaseContainer<?> container) throws SQLException {
executeSelectOneQuery(container, "SELECT 1");
}

protected void executeSelectOneQuery(final JdbcDatabaseContainer<?> container, final String sql)
throws SQLException {
executeQuery(
container,
sql,
resultSet -> {
Assertions
.assertThatNoException()
.isThrownBy(() -> {
int resultSetInt = resultSet.getInt(1);
Assertions.assertThat(resultSetInt).as("A basic SELECT query succeeds").isEqualTo(1);
});
}
);
}

protected void executeSelectFooBarQuery(final JdbcDatabaseContainer<?> container) throws SQLException {
executeQuery(
container,
"SELECT foo FROM bar",
resultSet -> {
Assertions
.assertThatNoException()
.isThrownBy(() -> {
String firstColumnValue = resultSet.getString(1);
Assertions
.assertThat(firstColumnValue)
.as("Value from init script should equal real value")
.isEqualTo("hello world");
});
}
);
}

protected void executeSelectMaxConnectionsQuery(
final JdbcDatabaseContainer<?> container,
final String expectedMaxConnections
) throws SQLException {
executeQuery(
container,
"SELECT current_setting('max_connections')",
resultSet -> {
Assertions
.assertThatNoException()
.isThrownBy(() -> {
String result = resultSet.getString(1);
Assertions
.assertThat(result)
.as("max_connections should be overridden")
.isEqualTo(expectedMaxConnections);
});
}
);
}

protected void executeSelectVersionQuery(final JdbcDatabaseContainer<?> container, final String expectedVersion)
throws SQLException {
executeQuery(
container,
"SELECT VERSION()",
resultSet -> {
Assertions
.assertThatNoException()
.isThrownBy(() -> {
String resultSetString = resultSet.getString(1);
Assertions
.assertThat(resultSetString)
.as("The database version can be set using a container rule parameter")
.startsWith(expectedVersion);
});
}
);
}

protected DataSource getDataSource(final JdbcDatabaseContainer<?> container) {
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setJdbcUrl(container.getJdbcUrl());
hikariConfig.setUsername(container.getUsername());
Expand Down
Loading
Loading