Skip to content

Commit 2e6f15b

Browse files
committed
Fix intermittent failure of inMemoryDerbyIsShutdown
1 parent 1b237de commit 2e6f15b

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

spring-boot-project/spring-boot-devtools/src/test/java/org/springframework/boot/devtools/autoconfigure/DevToolsPooledDataSourceAutoConfigurationTests.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,18 @@
2020
import java.io.IOException;
2121
import java.sql.SQLException;
2222
import java.sql.Statement;
23+
import java.time.Duration;
2324
import java.util.Properties;
2425

2526
import javax.sql.DataSource;
2627

28+
import com.zaxxer.hikari.HikariDataSource;
29+
import com.zaxxer.hikari.HikariPoolMXBean;
2730
import org.apache.derby.jdbc.EmbeddedDriver;
31+
import org.awaitility.Awaitility;
2832
import org.junit.jupiter.api.AfterEach;
2933
import org.junit.jupiter.api.BeforeEach;
3034
import org.junit.jupiter.api.Test;
31-
import org.junit.jupiter.api.condition.DisabledOnOs;
32-
import org.junit.jupiter.api.condition.OS;
3335
import org.junit.jupiter.api.io.TempDir;
3436

3537
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
@@ -123,13 +125,17 @@ void derbyClientIsNotShutdown() throws Exception {
123125
}
124126

125127
@Test
126-
@DisabledOnOs(OS.WINDOWS)
127128
void inMemoryDerbyIsShutdown() throws Exception {
128129
ConfigurableApplicationContext context = getContext(
129130
() -> createContext("org.apache.derby.jdbc.EmbeddedDriver", "jdbc:derby:memory:test;create=true",
130131
DataSourceAutoConfiguration.class, DataSourceSpyConfiguration.class));
131-
JdbcTemplate jdbc = new JdbcTemplate(context.getBean(DataSource.class));
132+
HikariDataSource dataSource = context.getBean(HikariDataSource.class);
133+
JdbcTemplate jdbc = new JdbcTemplate(dataSource);
132134
jdbc.execute("SELECT 1 FROM SYSIBM.SYSDUMMY1");
135+
HikariPoolMXBean pool = dataSource.getHikariPoolMXBean();
136+
// Prevent a race between Hikari's initialization and Derby shutdown
137+
Awaitility.await().atMost(Duration.ofSeconds(30)).until(pool::getIdleConnections,
138+
(idle) -> idle == dataSource.getMinimumIdle());
133139
context.close();
134140
// Connect should fail as DB no longer exists
135141
assertThatExceptionOfType(SQLException.class)

0 commit comments

Comments
 (0)