Use Awaitility in our own tests

Closes gh-18227
This commit is contained in:
Andy Wilkinson
2019-09-12 15:50:53 +01:00
parent 568caa1206
commit 1b237de5f5
28 changed files with 403 additions and 348 deletions

View File

@@ -19,6 +19,7 @@ package org.springframework.boot.autoconfigure.orm.jpa;
import java.io.IOException;
import java.net.URL;
import java.net.URLClassLoader;
import java.time.Duration;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -27,6 +28,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
@@ -37,6 +39,7 @@ import javax.transaction.TransactionManager;
import javax.transaction.UserTransaction;
import com.zaxxer.hikari.HikariDataSource;
import org.awaitility.Awaitility;
import org.hibernate.boot.model.naming.ImplicitNamingStrategy;
import org.hibernate.boot.model.naming.PhysicalNamingStrategy;
import org.hibernate.cfg.AvailableSettings;
@@ -77,6 +80,7 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.entry;
import static org.hamcrest.Matchers.hasSize;
import static org.mockito.Mockito.mock;
/**
@@ -387,12 +391,8 @@ class HibernateJpaAutoConfigurationTests extends AbstractJpaAutoConfigurationTes
assertThat(context).hasNotFailed();
EventCapturingApplicationListener listener = context
.getBean(EventCapturingApplicationListener.class);
long end = System.currentTimeMillis() + 30000;
while ((System.currentTimeMillis() < end) && !dataSourceSchemaCreatedEventReceived(listener)) {
Thread.sleep(100);
}
assertThat(listener.events.stream().filter(DataSourceSchemaCreatedEvent.class::isInstance))
.hasSize(1);
Awaitility.waitAtMost(Duration.ofSeconds(30))
.until(() -> dataSourceSchemaCreatedEventsReceivedBy(listener), hasSize(1));
});
}
@@ -408,13 +408,9 @@ class HibernateJpaAutoConfigurationTests extends AbstractJpaAutoConfigurationTes
});
}
private boolean dataSourceSchemaCreatedEventReceived(EventCapturingApplicationListener listener) {
for (ApplicationEvent event : listener.events) {
if (event instanceof DataSourceSchemaCreatedEvent) {
return true;
}
}
return false;
private List<ApplicationEvent> dataSourceSchemaCreatedEventsReceivedBy(EventCapturingApplicationListener listener) {
return listener.events.stream().filter(DataSourceSchemaCreatedEvent.class::isInstance)
.collect(Collectors.toList());
}
@Configuration(proxyBeanMethods = false)