@@ -16,9 +16,9 @@ import kotlinx.coroutines.runBlocking
16
16
import kotlinx.coroutines.withTimeout
17
17
import org.modelix.model.api.ITree
18
18
import org.modelix.model.lazy.RepositoryId
19
- import org.testcontainers.containers.ComposeContainer
20
19
import org.testcontainers.containers.GenericContainer
21
20
import org.testcontainers.containers.Network
21
+ import org.testcontainers.containers.wait.strategy.Wait
22
22
import org.testcontainers.images.builder.ImageFromDockerfile
23
23
import org.testcontainers.utility.MountableFile
24
24
import java.nio.file.Path
@@ -27,6 +27,7 @@ import kotlin.test.Test
27
27
import kotlin.test.assertEquals
28
28
import kotlin.time.Duration.Companion.minutes
29
29
import kotlin.time.ExperimentalTime
30
+ import kotlin.time.toJavaDuration
30
31
31
32
private val modelServerDir = Path .of(" ../model-server" ).absolute().normalize()
32
33
private val modelServerImage = ImageFromDockerfile ()
@@ -80,7 +81,7 @@ class OAuthTest {
80
81
81
82
private fun runWithModelServer (body : suspend (url: String ) -> Unit ) = runBlocking {
82
83
@OptIn(ExperimentalTime ::class )
83
- withTimeout(3 .minutes) {
84
+ withTimeout(5 .minutes) {
84
85
val network = Network .newNetwork()
85
86
86
87
val keycloak: GenericContainer <* > = GenericContainer (" quay.io/keycloak/keycloak:${System .getenv(" KEYCLOAK_VERSION" )} " )
@@ -93,6 +94,7 @@ class OAuthTest {
93
94
.withCopyFileToContainer(MountableFile .forHostPath(" ../model-server-with-auth/realm.json" ), " /opt/keycloak/data/import/realm.json" )
94
95
.withNetwork(network)
95
96
.withNetworkAliases(" keycloak" )
97
+ .waitingFor(Wait .forListeningPort().withStartupTimeout(3 .minutes.toJavaDuration()))
96
98
.withLogConsumer { println (" [KEYCLOAK] " + it.utf8StringWithoutLineEnding) }
97
99
keycloak.start()
98
100
val keycloakPort = keycloak.getMappedPort(8080 )
@@ -106,6 +108,7 @@ class OAuthTest {
106
108
.withEnv(" MODELIX_JWK_URI_KEYCLOAK" , " http://keycloak:8080/realms/modelix/protocol/openid-connect/certs" )
107
109
.withNetwork(network)
108
110
.withNetworkAliases(" model-server" )
111
+ .waitingFor(Wait .forListeningPort().withStartupTimeout(3 .minutes.toJavaDuration()))
109
112
.withLogConsumer { println (" [MODEL] " + it.utf8StringWithoutLineEnding) }
110
113
modelServer.start()
111
114
@@ -118,9 +121,3 @@ class OAuthTest {
118
121
}
119
122
}
120
123
}
121
-
122
- private fun ComposeContainer.getServiceUrl (name : String , port : Int ): String {
123
- val h = getServiceHost(name, port)
124
- val p = getServicePort(name, port)
125
- return " http://$h :$p /"
126
- }
0 commit comments