I have a test that pass on my local machine. Also its pass on GitHub Actions Pipeline. But on my Jenkins its failed.
My QuarkusTestResourceLifecycleManager
public class Initializer implements QuarkusTestResourceLifecycleManager {
private static final String MARIADB_VERSION = "10.5.16";
private MariaDBContainer mariaDBContainer;
private static final Logger LOGGER = Logger.getLogger(Initializer.class);
@Override
public Map<String, String> start() {
LOGGER.info("Starting MariaDB v"+MARIADB_VERSION+" Test container");
this.mariaDBContainer = new MariaDBContainer("mariadb:"+MARIADB_VERSION)
.withDatabaseName("test")
.withUsername("test")
.withPassword("test");
this.mariaDBContainer.start();
return configurationParamters();
}
private Map<String, String> configurationParamters() {
return Map.of(
"quarkus.datasource.url", mariaDBContainer.getJdbcUrl(),
"quarkus.datasource.username", mariaDBContainer.getUsername(),
"quarkus.datasource.password", mariaDBContainer.getPassword()
);
}
@Override
public void stop() {
LOGGER.info("Stopping MariaDB Test container");
if (this.mariaDBContainer != null) {
this.mariaDBContainer.stop();
}
}
}
And my Testclass
@QuarkusTest
@QuarkusTestResource(Initializer.class)
class AuthenticatedUserDtoResourceTest {
@Inject
UserService userService;
@Test
void createUser() {
userService.createDummyUser();
Jenkins Logs
AuthenticatedUserDtoResourceTest > initializationError FAILED
java.lang.RuntimeException at QuarkusTestExtension.java:698
Caused by: java.lang.reflect.InvocationTargetException at DirectMethodHandleAccessor.java:119
Caused by: java.util.concurrent.CompletionException at CompletableFuture.java:315
Caused by: java.lang.RuntimeException at TestResourceManager.java:467
Caused by: java.lang.IllegalStateException at RyukResourceReaper.java:132
My Jenkins runs inside a Docker Container, I think because of that and the fact that my Testcontainer DB is also a Docker Container, some crazy Docker in Docker staff happens.
Any Idea how to solve it?