-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Closed
Labels
Description
Hi there, I've spent the last few days trying to solve the issue below but I couldn't, can you help me?
My .gitlab-ci.yml file:
stages:
- test
# DinD service is required for Testcontainers
services:
- docker:dind
- postgres:11.4
variables:
PROFILE: "dev"
# Instruct Testcontainers to use the daemon of DinD.
DOCKER_HOST: "tcp://docker:2375"
# Improve performance with overlayfs.
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
DATABASE_URL: postgresql://user:pass@postgres:5432/db
POSTGRES_USER: user
POSTGRES_DB: db
POSTGRES_PASSWORD: pass
test:
image: openjdk:8u212-jdk-stretch
stage: test
script:
- apt-get update
- apt-get install -y postgresql postgresql-contrib
- psql -d $DATABASE_URL < ./docker/services/config/postgres/init.sql
- ./gradlew test
My test superclass:
@Testcontainers
open class RepositoryTest {
private val POSTGRES_IMAGE = "postgres:11.4"
private val DB_NAME = "db"
private val DB_USER = "user"
private val DB_PASS = "pass"
// Note: These files are symlink inside of the `test/resources` dir
private val INIT_SCRIPT = "init.sql"
private val PROPERTIES_FILE = "application.properties"
private var ctx : DSLContext? = null
private fun startPostgresSQL(): PostgreSQLContainer<Nothing> {
val postgres = PostgreSQLContainer<Nothing>(POSTGRES_IMAGE).apply {
withDatabaseName(DB_NAME)
withUsername(DB_USER)
withPassword(DB_PASS)
withInitScript(INIT_SCRIPT)
}
postgres.start()
return postgres
}
private fun runMigrations(jdbcUrl : String) {
Flyway.configure().dataSource(jdbcUrl, DB_USER, DB_PASS).load().migrate()
}
fun getDSLContext(): DSLContext {
return ctx!!
}
@Suppress("UNCHECKED_CAST")
fun <T> getProp(key: String): T {
val props = javaClass.classLoader.getResourceAsStream(PROPERTIES_FILE).use {
Properties().apply { load(it) }
}
return (props.getProperty(key) as T) ?: throw RuntimeException("could not find property $key")
}
@BeforeEach
fun setUp() {
val postgres = startPostgresSQL()
runMigrations(postgres.jdbcUrl)
ctx = DSL.using(postgres.jdbcUrl, DB_USER, DB_PASS)
}
}
Exception received:
06:23:50.632 [DEBUG] [TestEventLogger]
06:23:50.632 [DEBUG] [TestEventLogger] com.project.modules.user.queries.UserQueryRepositoryTest > should get a user and his roles by email and mid() FAILED
06:23:50.633 [DEBUG] [TestEventLogger] org.testcontainers.containers.ContainerLaunchException: Container startup failed
06:23:50.633 [DEBUG] [TestEventLogger] at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:333)
06:23:50.633 [DEBUG] [TestEventLogger] at org.testcontainers.containers.GenericContainer.start(GenericContainer.java:314)
06:23:50.633 [DEBUG] [TestEventLogger] at com.project.RepositoryTest.startPostgresSQL(RepositoryTest.kt:34)
06:23:50.633 [DEBUG] [TestEventLogger] at com.project.RepositoryTest.setUp(RepositoryTest.kt:57)
06:23:50.633 [DEBUG] [TestEventLogger] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
06:23:50.633 [DEBUG] [TestEventLogger] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
06:23:50.633 [DEBUG] [TestEventLogger] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
06:23:50.633 [DEBUG] [TestEventLogger] at java.lang.reflect.Method.invoke(Method.java:498)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:436)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:115)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.invokeMethodInExtensionContext(ClassTestDescriptor.java:302)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$synthesizeBeforeEachMethodAdapter$12(ClassTestDescriptor.java:290)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeBeforeEachMethods$2(TestMethodTestDescriptor.java:135)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeMethodsOrCallbacksUntilExceptionOccurs(TestMethodTestDescriptor.java:155)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeBeforeEachMethods(TestMethodTestDescriptor.java:134)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:109)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:58)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:112)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(HierarchicalTestExecutor.java:120)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.Iterator.forEachRemaining(Iterator.java:116)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:120)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(HierarchicalTestExecutor.java:120)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.Iterator.forEachRemaining(Iterator.java:116)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:120)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:55)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:43)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:154)
06:23:50.633 [DEBUG] [TestEventLogger] at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
06:23:50.633 [DEBUG] [TestEventLogger] at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:92)
06:23:50.633 [DEBUG] [TestEventLogger] at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$100(JUnitPlatformTestClassProcessor.java:77)
06:23:50.633 [DEBUG] [TestEventLogger] at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:73)
06:23:50.633 [DEBUG] [TestEventLogger] at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
06:23:50.633 [DEBUG] [TestEventLogger] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
06:23:50.633 [DEBUG] [TestEventLogger] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
06:23:50.633 [DEBUG] [TestEventLogger] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
06:23:50.633 [DEBUG] [TestEventLogger] at java.lang.reflect.Method.invoke(Method.java:498)
06:23:50.633 [DEBUG] [TestEventLogger] at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
06:23:50.633 [DEBUG] [TestEventLogger] at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
06:23:50.633 [DEBUG] [TestEventLogger] at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
06:23:50.633 [DEBUG] [TestEventLogger] at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
06:23:50.633 [DEBUG] [TestEventLogger] at com.sun.proxy.$Proxy2.stop(Unknown Source)
06:23:50.633 [DEBUG] [TestEventLogger] at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:123)
06:23:50.633 [DEBUG] [TestEventLogger] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
06:23:50.633 [DEBUG] [TestEventLogger] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
06:23:50.633 [DEBUG] [TestEventLogger] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
06:23:50.633 [DEBUG] [TestEventLogger] at java.lang.reflect.Method.invoke(Method.java:498)
06:23:50.633 [DEBUG] [TestEventLogger] at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
06:23:50.633 [DEBUG] [TestEventLogger] at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
06:23:50.633 [DEBUG] [TestEventLogger] at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:155)
06:23:50.633 [DEBUG] [TestEventLogger] at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:137)
06:23:50.633 [DEBUG] [TestEventLogger] at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
06:23:50.633 [DEBUG] [TestEventLogger] at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
06:23:50.633 [DEBUG] [TestEventLogger] at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
06:23:50.633 [DEBUG] [TestEventLogger] at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
06:23:50.633 [DEBUG] [TestEventLogger] at java.lang.Thread.run(Thread.java:748)
06:23:50.633 [DEBUG] [TestEventLogger]
06:23:50.633 [DEBUG] [TestEventLogger] Caused by:
06:23:50.633 [DEBUG] [TestEventLogger] org.testcontainers.containers.ContainerFetchException: Can't get Docker image: RemoteDockerImage(imageName=postgres:11.4, imagePullPolicy=DefaultPullPolicy())
06:23:50.633 [DEBUG] [TestEventLogger] at org.testcontainers.containers.GenericContainer.getDockerImageName(GenericContainer.java:1284)
06:23:50.633 [DEBUG] [TestEventLogger] at org.testcontainers.containers.GenericContainer.logger(GenericContainer.java:618)
06:23:50.633 [DEBUG] [TestEventLogger] at org.testcontainers.containers.GenericContainer.doStart(GenericContainer.java:323)
06:23:50.633 [DEBUG] [TestEventLogger] ... 85 more
06:23:50.633 [DEBUG] [TestEventLogger]
06:23:50.633 [DEBUG] [TestEventLogger] Caused by:
06:23:50.633 [DEBUG] [TestEventLogger] java.lang.IllegalStateException: Could not find a valid Docker environment. Please see logs and check configuration
06:23:50.633 [DEBUG] [TestEventLogger] at org.testcontainers.dockerclient.DockerClientProviderStrategy.lambda$getFirstValidStrategy$7(DockerClientProviderStrategy.java:214)
06:23:50.633 [DEBUG] [TestEventLogger] at java.util.Optional.orElseThrow(Optional.java:290)
06:23:50.633 [DEBUG] [TestEventLogger] at org.testcontainers.dockerclient.DockerClientProviderStrategy.getFirstValidStrategy(DockerClientProviderStrategy.java:206)
06:23:50.633 [DEBUG] [TestEventLogger] at org.testcontainers.DockerClientFactory.getOrInitializeStrategy(DockerClientFactory.java:131)
06:23:50.633 [DEBUG] [TestEventLogger] at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:170)
06:23:50.633 [DEBUG] [TestEventLogger] at org.testcontainers.LazyDockerClient.getDockerClient(LazyDockerClient.java:14)
06:23:50.633 [DEBUG] [TestEventLogger] at org.testcontainers.LazyDockerClient.listImagesCmd(LazyDockerClient.java:12)
06:23:50.633 [DEBUG] [TestEventLogger] at org.testcontainers.images.LocalImagesCache.maybeInitCache(LocalImagesCache.java:68)
06:23:50.633 [DEBUG] [TestEventLogger] at org.testcontainers.images.LocalImagesCache.get(LocalImagesCache.java:32)
06:23:50.633 [DEBUG] [TestEventLogger] at org.testcontainers.images.AbstractImagePullPolicy.shouldPull(AbstractImagePullPolicy.java:18)
06:23:50.633 [DEBUG] [TestEventLogger] at org.testcontainers.images.RemoteDockerImage.resolve(RemoteDockerImage.java:65)
06:23:50.633 [DEBUG] [TestEventLogger] at org.testcontainers.images.RemoteDockerImage.resolve(RemoteDockerImage.java:26)
06:23:50.633 [DEBUG] [TestEventLogger] at org.testcontainers.utility.LazyFuture.getResolvedValue(LazyFuture.java:17)
06:23:50.633 [DEBUG] [TestEventLogger] at org.testcontainers.utility.LazyFuture.get(LazyFuture.java:39)
06:23:50.633 [DEBUG] [TestEventLogger] at org.testcontainers.containers.GenericContainer.getDockerImageName(GenericContainer.java:1282)
06:23:50.633 [DEBUG] [TestEventLogger] ... 87 more
Note: I'm using postgres as Gitlab service because it's used by jOOQ to build the table classes.
Thanks
Reactions are currently unavailable