Skip to content

Commit 283bf05

Browse files
committed
fix flaky integration tests
1 parent 5bdc5f4 commit 283bf05

File tree

7 files changed

+36
-17
lines changed

7 files changed

+36
-17
lines changed

build.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ ext {
2929

3030
[core: '5.0.7', test: '5.0.0'] // default version
3131
]
32-
// embeddedPostgresVersions = ['9.3.25', '9.4.20', '9.5.15', '9.6.11', '10.6.0', '11.1.0']
33-
embeddedPostgresVersions = ['9.3.25', '9.4.20', '9.5.15', '9.6.11', '10.6.0'] // TODO: OpenTable and Yandex providers don't support Postgres11+ on Linux Platform
32+
embeddedPostgresVersions = ['9.3.25', '9.4.20', '9.5.15', '9.6.11', '10.6.0', '11.1.0']
3433

3534
flywayCoreVersion = flywayVersions.last().core
3635
flywayTestVersion = flywayVersions.last().test

embedded-database-spring-test/src/test/java/io/zonky/test/db/provider/OpenTableProviderWithConfigurationIntegrationTest.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.springframework.context.annotation.Configuration;
2727
import org.springframework.test.context.ContextConfiguration;
2828
import org.springframework.test.context.junit4.SpringRunner;
29+
import org.springframework.util.SocketUtils;
2930

3031
import javax.sql.DataSource;
3132
import java.sql.SQLException;
@@ -43,16 +44,24 @@ public class OpenTableProviderWithConfigurationIntegrationTest {
4344
static class Config {
4445

4546
@Bean
46-
public Consumer<EmbeddedPostgres.Builder> embeddedPostgresCustomizer() {
47-
return builder -> builder.setPort(44444);
47+
public Integer randomPort() {
48+
return SocketUtils.findAvailableTcpPort();
49+
}
50+
51+
@Bean
52+
public Consumer<EmbeddedPostgres.Builder> embeddedPostgresCustomizer(Integer randomPort) {
53+
return builder -> builder.setPort(randomPort);
4854
}
4955
}
5056

57+
@Autowired
58+
private Integer randomPort;
59+
5160
@Autowired
5261
private DataSource dataSource;
5362

5463
@Test
5564
public void testDataSource() throws SQLException {
56-
assertThat(dataSource.unwrap(PGSimpleDataSource.class).getPortNumber()).isEqualTo(44444);
65+
assertThat(dataSource.unwrap(PGSimpleDataSource.class).getPortNumber()).isEqualTo(randomPort);
5766
}
5867
}

embedded-database-spring-test/src/test/java/io/zonky/test/db/provider/ZonkyProviderWithConfigurationIntegrationTest.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.springframework.context.annotation.Configuration;
2727
import org.springframework.test.context.ContextConfiguration;
2828
import org.springframework.test.context.junit4.SpringRunner;
29+
import org.springframework.util.SocketUtils;
2930

3031
import javax.sql.DataSource;
3132
import java.sql.SQLException;
@@ -43,16 +44,24 @@ public class ZonkyProviderWithConfigurationIntegrationTest {
4344
static class Config {
4445

4546
@Bean
46-
public Consumer<EmbeddedPostgres.Builder> embeddedPostgresCustomizer() {
47-
return builder -> builder.setPort(33333);
47+
public Integer randomPort() {
48+
return SocketUtils.findAvailableTcpPort();
49+
}
50+
51+
@Bean
52+
public Consumer<EmbeddedPostgres.Builder> embeddedPostgresCustomizer(Integer randomPort) {
53+
return builder -> builder.setPort(randomPort);
4854
}
4955
}
5056

57+
@Autowired
58+
private Integer randomPort;
59+
5160
@Autowired
5261
private DataSource dataSource;
5362

5463
@Test
5564
public void testDataSource() throws SQLException {
56-
assertThat(dataSource.unwrap(PGSimpleDataSource.class).getPortNumber()).isEqualTo(33333);
65+
assertThat(dataSource.unwrap(PGSimpleDataSource.class).getPortNumber()).isEqualTo(randomPort);
5766
}
5867
}

embedded-database-spring-test/src/test/java/io/zonky/test/db/provider/impl/OpenTablePostgresDatabaseProviderTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.springframework.beans.factory.ObjectProvider;
3131
import org.springframework.jdbc.core.JdbcTemplate;
3232
import org.springframework.mock.env.MockEnvironment;
33+
import org.springframework.util.SocketUtils;
3334

3435
import javax.sql.DataSource;
3536
import java.sql.SQLException;
@@ -105,13 +106,14 @@ public void testGetDatabase() throws SQLException {
105106

106107
@Test
107108
public void testDatabaseCustomizers() throws SQLException {
108-
when(databaseCustomizers.getIfAvailable()).thenReturn(Collections.singletonList(builder -> builder.setPort(44445)));
109+
int randomPort = SocketUtils.findAvailableTcpPort();
110+
when(databaseCustomizers.getIfAvailable()).thenReturn(Collections.singletonList(builder -> builder.setPort(randomPort)));
109111

110112
DatabasePreparer preparer = dataSource -> {};
111113
OpenTablePostgresDatabaseProvider provider = new OpenTablePostgresDatabaseProvider(new MockEnvironment(), databaseCustomizers);
112114
DataSource dataSource = provider.getDatabase(preparer);
113115

114-
assertThat(dataSource.unwrap(PGSimpleDataSource.class).getPortNumber()).isEqualTo(44445);
116+
assertThat(dataSource.unwrap(PGSimpleDataSource.class).getPortNumber()).isEqualTo(randomPort);
115117
}
116118

117119
@Test

embedded-database-spring-test/src/test/java/io/zonky/test/db/provider/impl/PrefetchingDatabaseProviderTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@
3232

3333
import javax.sql.DataSource;
3434
import java.util.HashSet;
35-
import java.util.LinkedList;
3635
import java.util.List;
37-
import java.util.Queue;
3836
import java.util.Set;
37+
import java.util.concurrent.BlockingQueue;
38+
import java.util.concurrent.LinkedBlockingQueue;
3939
import java.util.stream.Collectors;
4040
import java.util.stream.Stream;
4141

@@ -80,7 +80,7 @@ public void testPrefetching() throws Exception {
8080
List<DataSource> dataSources = Stream.generate(() -> mock(DataSource.class))
8181
.limit(6).collect(Collectors.toList());
8282

83-
Queue<DataSource> providerReturns = new LinkedList<>(dataSources);
83+
BlockingQueue<DataSource> providerReturns = new LinkedBlockingQueue<>(dataSources);
8484
doAnswer(i -> providerReturns.poll()).when(databaseProvider2).getDatabase(same(preparer));
8585

8686
Set<DataSource> results = new HashSet<>();

embedded-database-spring-test/src/test/java/io/zonky/test/db/provider/impl/YandexPostgresDatabaseProviderTest.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ public void providerTypeShouldBeYandex() {
4747
assertThat(provider.getProviderType()).isEqualTo(ProviderType.YANDEX);
4848
}
4949

50-
@Ignore
5150
@Test
5251
public void testGetDatabase() throws SQLException {
5352
YandexPostgresDatabaseProvider provider = new YandexPostgresDatabaseProvider(new MockEnvironment());
@@ -86,7 +85,6 @@ public void testGetDatabase() throws SQLException {
8685
assertThat(jdbcTemplate3.queryForObject("select count(*) from prime_number", Integer.class)).isEqualTo(1);
8786
}
8887

89-
@Ignore
9088
@Test
9189
public void testConfigurationProperties() throws SQLException {
9290
MockEnvironment environment = new MockEnvironment();

embedded-database-spring-test/src/test/java/io/zonky/test/db/provider/impl/ZonkyPostgresDatabaseProviderTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.springframework.beans.factory.ObjectProvider;
3131
import org.springframework.jdbc.core.JdbcTemplate;
3232
import org.springframework.mock.env.MockEnvironment;
33+
import org.springframework.util.SocketUtils;
3334

3435
import javax.sql.DataSource;
3536
import java.sql.SQLException;
@@ -131,13 +132,14 @@ public void testClusterPreparerIsolation() throws SQLException {
131132

132133
@Test
133134
public void testDatabaseCustomizers() throws SQLException {
134-
when(databaseCustomizers.getIfAvailable()).thenReturn(Collections.singletonList(builder -> builder.setPort(33334)));
135+
int randomPort = SocketUtils.findAvailableTcpPort();
136+
when(databaseCustomizers.getIfAvailable()).thenReturn(Collections.singletonList(builder -> builder.setPort(randomPort)));
135137

136138
DatabasePreparer preparer = dataSource -> {};
137139
ZonkyPostgresDatabaseProvider provider = new ZonkyPostgresDatabaseProvider(new MockEnvironment(), databaseCustomizers);
138140
DataSource dataSource = provider.getDatabase(preparer);
139141

140-
assertThat(dataSource.unwrap(PGSimpleDataSource.class).getPortNumber()).isEqualTo(33334);
142+
assertThat(dataSource.unwrap(PGSimpleDataSource.class).getPortNumber()).isEqualTo(randomPort);
141143
}
142144

143145
@Test

0 commit comments

Comments
 (0)