Skip to content

Commit 0fd6c52

Browse files
committed
Replace postgresql-embedded with Testcontainers
postgresql-embedded is no longer actively maintained. https://github.com/yandex-qatools/postgresql-embedded#note-this-project-is-not-being-actively-maintained-anymore
1 parent bee7ba2 commit 0fd6c52

File tree

8 files changed

+81
-121
lines changed

8 files changed

+81
-121
lines changed

.travis.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ jdk:
44
- oraclejdk11
55
- oraclejdk8
66

7+
services:
8+
- docker
9+
710
cache:
811
directories:
912
- $HOME/.m2

pom.xml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@
132132

133133
<properties>
134134
<clirr.comparisonVersion>3.4.6</clirr.comparisonVersion>
135-
<excludedGroups>EmbeddedPostgresqlTests</excludedGroups>
135+
<excludedGroups>TestcontainersTests</excludedGroups>
136136
<maven.compiler.testCompilerArgument>-parameters</maven.compiler.testCompilerArgument>
137137
<module.name>org.mybatis</module.name>
138138
<osgi.export>org.apache.ibatis.*;version=${project.version};-noimport:=true</osgi.export>
@@ -262,9 +262,15 @@
262262
<scope>test</scope>
263263
</dependency>
264264
<dependency>
265-
<groupId>ru.yandex.qatools.embed</groupId>
266-
<artifactId>postgresql-embedded</artifactId>
267-
<version>2.10</version>
265+
<groupId>org.testcontainers</groupId>
266+
<artifactId>junit-jupiter</artifactId>
267+
<version>1.11.1</version>
268+
<scope>test</scope>
269+
</dependency>
270+
<dependency>
271+
<groupId>org.testcontainers</groupId>
272+
<artifactId>postgresql</artifactId>
273+
<version>1.11.1</version>
268274
<scope>test</scope>
269275
</dependency>
270276
</dependencies>

src/test/java/org/apache/ibatis/submitted/cursor_simple/PostgresCursorTest.java

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@
1818
import static org.junit.jupiter.api.Assertions.*;
1919

2020
import java.io.IOException;
21-
import java.nio.file.Paths;
22-
import java.util.Collections;
2321
import java.util.Iterator;
2422

2523
import org.apache.ibatis.BaseDataTest;
@@ -32,31 +30,29 @@
3230
import org.apache.ibatis.session.SqlSessionFactory;
3331
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
3432
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
35-
import org.junit.jupiter.api.AfterAll;
3633
import org.junit.jupiter.api.BeforeAll;
3734
import org.junit.jupiter.api.Tag;
3835
import org.junit.jupiter.api.Test;
36+
import org.testcontainers.containers.PostgreSQLContainer;
37+
import org.testcontainers.junit.jupiter.Container;
38+
import org.testcontainers.junit.jupiter.Testcontainers;
3939

40-
import ru.yandex.qatools.embed.postgresql.EmbeddedPostgres;
41-
import ru.yandex.qatools.embed.postgresql.util.SocketUtil;
42-
43-
@Tag("EmbeddedPostgresqlTests")
40+
@Tag("TestcontainersTests")
41+
@Testcontainers
4442
class PostgresCursorTest {
4543

46-
private static final EmbeddedPostgres postgres = new EmbeddedPostgres();
44+
@Container
45+
private static final PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>().withDatabaseName("cursor_simple")
46+
.withUsername("u").withPassword("p");
4747

4848
private static SqlSessionFactory sqlSessionFactory;
4949

5050
@BeforeAll
5151
static void setUp() throws Exception {
52-
// Launch PostgreSQL server. Download / unarchive if necessary.
53-
String url = postgres.start(
54-
EmbeddedPostgres.cachedRuntimeConfig(Paths.get(System.getProperty("java.io.tmpdir"), "pgembed")), "localhost",
55-
SocketUtil.findFreePort(), "cursor_simple", "postgres", "root", Collections.emptyList());
56-
52+
String url = postgres.getJdbcUrl();
5753
Configuration configuration = new Configuration();
58-
Environment environment = new Environment("development", new JdbcTransactionFactory(), new UnpooledDataSource(
59-
"org.postgresql.Driver", url, null));
54+
Environment environment = new Environment("development", new JdbcTransactionFactory(),
55+
new UnpooledDataSource("org.postgresql.Driver", url, "u", "p"));
6056
configuration.setEnvironment(environment);
6157
configuration.addMapper(Mapper.class);
6258
sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
@@ -65,11 +61,6 @@ static void setUp() throws Exception {
6561
"org/apache/ibatis/submitted/cursor_simple/CreateDB.sql");
6662
}
6763

68-
@AfterAll
69-
static void tearDown() {
70-
postgres.stop();
71-
}
72-
7364
@Test
7465
void shouldBeAbleToReuseStatement() throws IOException {
7566
// #1351

src/test/java/org/apache/ibatis/submitted/keycolumn/InsertTest.java

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,8 @@
1515
*/
1616
package org.apache.ibatis.submitted.keycolumn;
1717

18-
import static org.junit.jupiter.api.Assertions.assertEquals;
19-
import static org.junit.jupiter.api.Assertions.assertNotNull;
18+
import static org.junit.jupiter.api.Assertions.*;
2019

21-
import java.nio.file.Paths;
22-
import java.util.Collections;
2320
import java.util.List;
2421

2522
import org.apache.ibatis.BaseDataTest;
@@ -32,32 +29,32 @@
3229
import org.apache.ibatis.session.SqlSessionFactory;
3330
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
3431
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
35-
import org.junit.jupiter.api.AfterAll;
3632
import org.junit.jupiter.api.BeforeAll;
3733
import org.junit.jupiter.api.Tag;
3834
import org.junit.jupiter.api.Test;
39-
40-
import ru.yandex.qatools.embed.postgresql.EmbeddedPostgres;
41-
import ru.yandex.qatools.embed.postgresql.util.SocketUtil;
35+
import org.testcontainers.containers.PostgreSQLContainer;
36+
import org.testcontainers.junit.jupiter.Container;
37+
import org.testcontainers.junit.jupiter.Testcontainers;
4238

4339
/**
4440
* @author Jeff Butler
4541
*/
46-
@Tag("EmbeddedPostgresqlTests")
42+
@Tag("TestcontainersTests")
43+
@Testcontainers
4744
class InsertTest {
4845

49-
private static final EmbeddedPostgres postgres = new EmbeddedPostgres();
46+
@Container
47+
private static final PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>().withDatabaseName("keycolumn")
48+
.withUsername("u").withPassword("p");
5049

5150
private static SqlSessionFactory sqlSessionFactory;
5251

5352
@BeforeAll
5453
static void setUp() throws Exception {
55-
// Launch PostgreSQL server. Download / unarchive if necessary.
56-
String url = postgres.start(EmbeddedPostgres.cachedRuntimeConfig(Paths.get(System.getProperty("java.io.tmpdir"), "pgembed")), "localhost", SocketUtil.findFreePort(), "keycolumn", "postgres", "root", Collections.emptyList());
57-
54+
String url = postgres.getJdbcUrl();
5855
Configuration configuration = new Configuration();
59-
Environment environment = new Environment("development", new JdbcTransactionFactory(), new UnpooledDataSource(
60-
"org.postgresql.Driver", url, null));
56+
Environment environment = new Environment("development", new JdbcTransactionFactory(),
57+
new UnpooledDataSource("org.postgresql.Driver", url, "u", "p"));
6158
configuration.setEnvironment(environment);
6259
configuration.addMapper(InsertMapper.class);
6360
sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
@@ -66,11 +63,6 @@ static void setUp() throws Exception {
6663
"org/apache/ibatis/submitted/keycolumn/CreateDB.sql");
6764
}
6865

69-
@AfterAll
70-
static void tearDown() {
71-
postgres.stop();
72-
}
73-
7466
@Test
7567
void testInsertAnnotated() {
7668
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {

src/test/java/org/apache/ibatis/submitted/multiple_resultsets/MultipleResultTest.java

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616
package org.apache.ibatis.submitted.multiple_resultsets;
1717

1818
import java.io.IOException;
19-
import java.nio.file.Paths;
20-
import java.util.Collections;
2119
import java.util.List;
2220

2321
import org.apache.ibatis.BaseDataTest;
@@ -28,34 +26,34 @@
2826
import org.apache.ibatis.session.SqlSessionFactory;
2927
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
3028
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
31-
import org.junit.jupiter.api.AfterAll;
3229
import org.junit.jupiter.api.Assertions;
3330
import org.junit.jupiter.api.BeforeAll;
3431
import org.junit.jupiter.api.Tag;
3532
import org.junit.jupiter.api.Test;
36-
37-
import ru.yandex.qatools.embed.postgresql.EmbeddedPostgres;
38-
import ru.yandex.qatools.embed.postgresql.util.SocketUtil;
33+
import org.testcontainers.containers.PostgreSQLContainer;
34+
import org.testcontainers.junit.jupiter.Container;
35+
import org.testcontainers.junit.jupiter.Testcontainers;
3936

4037
/*
4138
* This class contains tests for multiple results.
4239
* It is based on Jeff's ref cursor tests.
4340
*/
44-
@Tag("EmbeddedPostgresqlTests")
41+
@Tag("TestcontainersTests")
42+
@Testcontainers
4543
class MultipleResultTest {
4644

47-
private static final EmbeddedPostgres postgres = new EmbeddedPostgres();
45+
@Container
46+
private static final PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>().withDatabaseName("multiple_resultsets")
47+
.withUsername("u").withPassword("p");
4848

4949
private static SqlSessionFactory sqlSessionFactory;
5050

5151
@BeforeAll
5252
static void setUp() throws Exception {
53-
// Launch PostgreSQL server. Download / unarchive if necessary.
54-
String url = postgres.start(EmbeddedPostgres.cachedRuntimeConfig(Paths.get(System.getProperty("java.io.tmpdir"), "pgembed")), "localhost", SocketUtil.findFreePort(), "multiple_resultsets", "postgres", "root", Collections.emptyList());
55-
53+
String url = postgres.getJdbcUrl();
5654
Configuration configuration = new Configuration();
57-
Environment environment = new Environment("development", new JdbcTransactionFactory(), new UnpooledDataSource(
58-
"org.postgresql.Driver", url, null));
55+
Environment environment = new Environment("development", new JdbcTransactionFactory(),
56+
new UnpooledDataSource("org.postgresql.Driver", url, "u", "p"));
5957
configuration.setEnvironment(environment);
6058
configuration.setMapUnderscoreToCamelCase(true);
6159
configuration.addMapper(Mapper.class);
@@ -65,11 +63,6 @@ static void setUp() throws Exception {
6563
"org/apache/ibatis/submitted/multiple_resultsets/CreateDB.sql");
6664
}
6765

68-
@AfterAll
69-
static void tearDown() {
70-
postgres.stop();
71-
}
72-
7366
@Test
7467
void shouldGetMultipleResultSetsWithOneStatement() throws IOException {
7568
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {

src/test/java/org/apache/ibatis/submitted/postgres_genkeys/PostgresGeneratedKeysTest.java

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@
1717

1818
import static org.junit.jupiter.api.Assertions.*;
1919

20-
import java.nio.file.Paths;
21-
import java.util.Collections;
22-
2320
import org.apache.ibatis.BaseDataTest;
2421
import org.apache.ibatis.datasource.unpooled.UnpooledDataSource;
2522
import org.apache.ibatis.mapping.Environment;
@@ -28,29 +25,29 @@
2825
import org.apache.ibatis.session.SqlSessionFactory;
2926
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
3027
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
31-
import org.junit.jupiter.api.AfterAll;
3228
import org.junit.jupiter.api.BeforeAll;
3329
import org.junit.jupiter.api.Tag;
3430
import org.junit.jupiter.api.Test;
31+
import org.testcontainers.containers.PostgreSQLContainer;
32+
import org.testcontainers.junit.jupiter.Container;
33+
import org.testcontainers.junit.jupiter.Testcontainers;
3534

36-
import ru.yandex.qatools.embed.postgresql.EmbeddedPostgres;
37-
import ru.yandex.qatools.embed.postgresql.util.SocketUtil;
38-
39-
@Tag("EmbeddedPostgresqlTests")
35+
@Tag("TestcontainersTests")
36+
@Testcontainers
4037
class PostgresGeneratedKeysTest {
4138

42-
private static final EmbeddedPostgres postgres = new EmbeddedPostgres();
39+
@Container
40+
private static final PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>().withDatabaseName("postgres_genkeys")
41+
.withUsername("u").withPassword("p");
4342

4443
private static SqlSessionFactory sqlSessionFactory;
4544

4645
@BeforeAll
4746
static void setUp() throws Exception {
48-
// Launch PostgreSQL server. Download / unarchive if necessary.
49-
String url = postgres.start(EmbeddedPostgres.cachedRuntimeConfig(Paths.get(System.getProperty("java.io.tmpdir"), "pgembed")), "localhost", SocketUtil.findFreePort(), "postgres_genkeys", "postgres", "root", Collections.emptyList());
50-
47+
String url = postgres.getJdbcUrl();
5148
Configuration configuration = new Configuration();
52-
Environment environment = new Environment("development", new JdbcTransactionFactory(), new UnpooledDataSource(
53-
"org.postgresql.Driver", url, null));
49+
Environment environment = new Environment("development", new JdbcTransactionFactory(),
50+
new UnpooledDataSource("org.postgresql.Driver", url, "u", "p"));
5451
configuration.setEnvironment(environment);
5552
configuration.setUseGeneratedKeys(true);
5653
configuration.addMapper(Mapper.class);
@@ -60,11 +57,6 @@ static void setUp() throws Exception {
6057
"org/apache/ibatis/submitted/postgres_genkeys/CreateDB.sql");
6158
}
6259

63-
@AfterAll
64-
static void tearDown() {
65-
postgres.stop();
66-
}
67-
6860
@Test
6961
void testInsertIntoTableWithNoSerialColumn() {
7062
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {

src/test/java/org/apache/ibatis/submitted/refcursor/RefCursorTest.java

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@
1717

1818
import static org.junit.jupiter.api.Assertions.*;
1919

20-
import java.nio.file.Paths;
2120
import java.util.ArrayList;
22-
import java.util.Collections;
2321
import java.util.HashMap;
2422
import java.util.List;
2523
import java.util.Map;
@@ -34,32 +32,32 @@
3432
import org.apache.ibatis.session.SqlSessionFactory;
3533
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
3634
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
37-
import org.junit.jupiter.api.AfterAll;
3835
import org.junit.jupiter.api.BeforeAll;
3936
import org.junit.jupiter.api.Tag;
4037
import org.junit.jupiter.api.Test;
41-
42-
import ru.yandex.qatools.embed.postgresql.EmbeddedPostgres;
43-
import ru.yandex.qatools.embed.postgresql.util.SocketUtil;
38+
import org.testcontainers.containers.PostgreSQLContainer;
39+
import org.testcontainers.junit.jupiter.Container;
40+
import org.testcontainers.junit.jupiter.Testcontainers;
4441

4542
/**
4643
* @author Jeff Butler
4744
*/
48-
@Tag("EmbeddedPostgresqlTests")
45+
@Tag("TestcontainersTests")
46+
@Testcontainers
4947
class RefCursorTest {
5048

51-
private static final EmbeddedPostgres postgres = new EmbeddedPostgres();
49+
@Container
50+
private static final PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>().withDatabaseName("refcursor")
51+
.withUsername("u").withPassword("p");
5252

5353
private static SqlSessionFactory sqlSessionFactory;
5454

5555
@BeforeAll
5656
static void setUp() throws Exception {
57-
// Launch PostgreSQL server. Download / unarchive if necessary.
58-
String url = postgres.start(EmbeddedPostgres.cachedRuntimeConfig(Paths.get(System.getProperty("java.io.tmpdir"), "pgembed")), "localhost", SocketUtil.findFreePort(), "refcursor", "postgres", "root", Collections.emptyList());
59-
57+
String url = postgres.getJdbcUrl();
6058
Configuration configuration = new Configuration();
61-
Environment environment = new Environment("development", new JdbcTransactionFactory(), new UnpooledDataSource(
62-
"org.postgresql.Driver", url, null));
59+
Environment environment = new Environment("development", new JdbcTransactionFactory(),
60+
new UnpooledDataSource("org.postgresql.Driver", url, "u", "p"));
6361
configuration.setEnvironment(environment);
6462
configuration.addMapper(OrdersMapper.class);
6563
sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
@@ -68,11 +66,6 @@ static void setUp() throws Exception {
6866
"org/apache/ibatis/submitted/refcursor/CreateDB.sql");
6967
}
7068

71-
@AfterAll
72-
static void tearDown() {
73-
postgres.stop();
74-
}
75-
7669
@Test
7770
void testRefCursor1() {
7871
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {

0 commit comments

Comments
 (0)