Run Quarkus Integration Test with Testcontainer leads to a RuntimeException in my Jenkins

Viewed 16

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?

0 Answers
Related