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 @@ -8,7 +8,6 @@
import org.testcontainers.db.AbstractContainerDatabaseTest;
import org.testcontainers.utility.DockerImageName;

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

import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals;
Expand All @@ -34,11 +33,14 @@ public static Object[][] data() {
public void testSimple() throws SQLException {
try (ClickHouseContainer clickhouse = new ClickHouseContainer(this.imageName)) {
clickhouse.start();

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

int resultSetInt = resultSet.getInt(1);
assertEquals("A basic SELECT query succeeds", 1, resultSetInt);
assertQuery(
clickhouse,
"SELECT 1",
rs -> {
int resultSetInt = rs.getInt(1);
assertEquals("A basic SELECT query succeeds", 1, resultSetInt);
}
);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import org.testcontainers.containers.CockroachContainer;
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 @@ -24,11 +23,14 @@ public class SimpleCockroachDBTest extends AbstractContainerDatabaseTest {
public void testSimple() throws SQLException {
try (CockroachContainer cockroach = new CockroachContainer(CockroachDBTestImages.COCKROACHDB_IMAGE)) {
cockroach.start();

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

int resultSetInt = resultSet.getInt(1);
assertEquals("A basic SELECT query succeeds", 1, resultSetInt);
assertQuery(
cockroach,
"SELECT 1",
rs -> {
int resultSetInt = rs.getInt(1);
assertEquals("A basic SELECT query succeeds", 1, resultSetInt);
}
);
}
}

Expand All @@ -40,10 +42,14 @@ public 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);
assertEquals("Value from init script should equal real value", "hello world", firstColumnValue);
assertQuery(
cockroach,
"SELECT foo FROM bar",
rs -> {
String firstColumnValue = rs.getString(1);
assertEquals("Value from init script should equal real value", "hello world", firstColumnValue);
}
);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import org.testcontainers.containers.Db2Container;
import org.testcontainers.db.AbstractContainerDatabaseTest;

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

import static org.hamcrest.Matchers.containsString;
Expand All @@ -18,11 +17,14 @@ public class SimpleDb2Test extends AbstractContainerDatabaseTest {
public void testSimple() throws SQLException {
try (Db2Container db2 = new Db2Container(Db2TestImages.DB2_IMAGE).acceptLicense()) {
db2.start();

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

int resultSetInt = resultSet.getInt(1);
assertEquals("A basic SELECT query succeeds", 1, resultSetInt);
assertQuery(
db2,
"SELECT 1 FROM SYSIBM.SYSDUMMY1",
rs -> {
int resultSetInt = rs.getInt(1);
assertEquals("A basic SELECT query succeeds", 1, resultSetInt);
}
);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,25 @@
import com.zaxxer.hikari.HikariDataSource;
import org.testcontainers.containers.JdbcDatabaseContainer;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.sql.DataSource;

import static org.junit.Assert.assertTrue;

public abstract class AbstractContainerDatabaseTest {

/**
*
* @param container
* @param sql
* @return
* @throws SQLException
* @deprecated use {@link #assertQuery(JdbcDatabaseContainer, String, ResultSetConsumer)} instead.
*/
protected ResultSet performQuery(JdbcDatabaseContainer<?> container, String sql) throws SQLException {
DataSource ds = getDataSource(container);
Statement statement = ds.getConnection().createStatement();
Expand All @@ -22,12 +33,34 @@ protected ResultSet performQuery(JdbcDatabaseContainer<?> container, String sql)
return resultSet;
}

protected void assertQuery(JdbcDatabaseContainer<?> container, String sql, ResultSetConsumer assertion)
throws SQLException {
try (
HikariDataSource ds = getDataSource0(container);
Connection conn = ds.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)
) {
assertTrue(rs.next());
assertion.accept(rs);
}
}

protected DataSource getDataSource(JdbcDatabaseContainer<?> container) {
return getDataSource0(container);
}

private HikariDataSource getDataSource0(JdbcDatabaseContainer<?> container) {
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.setJdbcUrl(container.getJdbcUrl());
hikariConfig.setUsername(container.getUsername());
hikariConfig.setPassword(container.getPassword());
hikariConfig.setDriverClassName(container.getDriverClassName());
return new HikariDataSource(hikariConfig);
}

@FunctionalInterface
public interface ResultSetConsumer {
void accept(ResultSet resultSet) throws SQLException;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import org.testcontainers.containers.MariaDBContainer;
import org.testcontainers.db.AbstractContainerDatabaseTest;

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

import static org.hamcrest.Matchers.containsString;
Expand All @@ -22,10 +21,14 @@ public void testSimple() throws SQLException {
try (MariaDBContainer<?> mariadb = new MariaDBContainer<>(MariaDBTestImages.MARIADB_IMAGE)) {
mariadb.start();

ResultSet resultSet = performQuery(mariadb, "SELECT 1");
int resultSetInt = resultSet.getInt(1);

assertEquals("A basic SELECT query succeeds", 1, resultSetInt);
assertQuery(
mariadb,
"SELECT 1",
rs -> {
int resultSetInt = rs.getInt(1);
assertEquals("A basic SELECT query succeeds", 1, resultSetInt);
}
);
}
}

Expand All @@ -37,13 +40,16 @@ public void testSpecificVersion() throws SQLException {
)
) {
mariadbOldVersion.start();

ResultSet resultSet = performQuery(mariadbOldVersion, "SELECT VERSION()");
String resultSetString = resultSet.getString(1);

assertTrue(
"The database version can be set using a container rule parameter",
resultSetString.startsWith("5.5.51")
assertQuery(
mariadbOldVersion,
"SELECT VERSION()",
rs -> {
String resultSetString = rs.getString(1);
assertTrue(
"The database version can be set using a container rule parameter",
resultSetString.startsWith("5.5.51")
);
}
);
}
}
Expand All @@ -60,10 +66,14 @@ public void testMariaDBWithCustomIniFile() throws SQLException {
) {
mariadbCustomConfig.start();

ResultSet resultSet = performQuery(mariadbCustomConfig, "SELECT @@GLOBAL.innodb_file_format");
String result = resultSet.getString(1);

assertEquals("The InnoDB file format has been set by the ini file content", "Barracuda", result);
assertQuery(
mariadbCustomConfig,
"SELECT @@GLOBAL.innodb_file_format",
rs -> {
String result = rs.getString(1);
assertEquals("The InnoDB file format has been set by the ini file content", "Barracuda", result);
}
);
}
}

Expand All @@ -74,10 +84,14 @@ public void testMariaDBWithCommandOverride() throws SQLException {
.withCommand("mysqld --auto_increment_increment=10")
) {
mariadbCustomConfig.start();
ResultSet resultSet = performQuery(mariadbCustomConfig, "show variables like 'auto_increment_increment'");
String result = resultSet.getString("Value");

assertEquals("Auto increment increment should be overriden by command line", "10", result);
assertQuery(
mariadbCustomConfig,
"show variables like 'auto_increment_increment'",
rs -> {
String result = rs.getString("Value");
assertEquals("Auto increment increment should be overriden by command line", "10", result);
}
);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import org.testcontainers.db.AbstractContainerDatabaseTest;
import org.testcontainers.utility.DockerImageName;

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

import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals;
Expand All @@ -24,9 +23,14 @@ public void testSqlServerConnection() throws SQLException {
) {
mssqlServerContainer.start();

ResultSet resultSet = performQuery(mssqlServerContainer, mssqlServerContainer.getTestQueryString());
int resultSetInt = resultSet.getInt(1);
assertEquals("A basic SELECT query succeeds", 1, resultSetInt);
assertQuery(
mssqlServerContainer,
mssqlServerContainer.getTestQueryString(),
rs -> {
int resultSetInt = rs.getInt(1);
assertEquals("A basic SELECT query succeeds", 1, resultSetInt);
}
);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,14 @@ public void testSimple() throws SQLException {
MSSQLServerContainer<?> mssqlServer = new MSSQLServerContainer<>(MSSQLServerTestImages.MSSQL_SERVER_IMAGE)
) {
mssqlServer.start();
ResultSet resultSet = performQuery(mssqlServer, "SELECT 1");

int resultSetInt = resultSet.getInt(1);
assertEquals("A basic SELECT query succeeds", 1, resultSetInt);
assertQuery(
mssqlServer,
"SELECT 1",
rs -> {
int resultSetInt = rs.getInt(1);
assertEquals("A basic SELECT query succeeds", 1, resultSetInt);
}
);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import org.testcontainers.containers.MySQLContainer;
import org.testcontainers.db.AbstractContainerDatabaseTest;

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

import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals;
Expand All @@ -30,10 +29,14 @@ public void testSimple() throws SQLException {
) {
mysql.start();

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

int resultSetInt = resultSet.getInt(1);
assertEquals("A basic SELECT query succeeds", 1, resultSetInt);
assertQuery(
mysql,
"SELECT 1",
rs -> {
int resultSetInt = rs.getInt(1);
assertEquals("A basic SELECT query succeeds", 1, resultSetInt);
}
);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import org.testcontainers.db.AbstractContainerDatabaseTest;
import org.testcontainers.utility.DockerImageName;

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

import static org.rnorth.visibleassertions.VisibleAssertions.assertEquals;
Expand All @@ -32,13 +31,17 @@ public static DockerImageName[] params() {
public void versionCheckTest() throws SQLException {
try (MySQLContainer<?> mysql = new MySQLContainer<>(dockerImageName)) {
mysql.start();
final ResultSet resultSet = performQuery(mysql, "SELECT VERSION()");
final String resultSetString = resultSet.getString(1);

assertEquals(
"The database version can be set using a container rule parameter",
dockerImageName.getVersionPart(),
resultSetString
assertQuery(
mysql,
"SELECT VERSION()",
rs -> {
final String resultSetString = rs.getString(1);
assertEquals(
"The database version can be set using a container rule parameter",
dockerImageName.getVersionPart(),
resultSetString
);
}
);
}
}
Expand Down
Loading