From f0e12eea762e77e92f208cef715f53b1e5728734 Mon Sep 17 00:00:00 2001 From: Ondra Pelech Date: Tue, 15 Oct 2024 01:51:51 +0200 Subject: [PATCH] ComposeContainer (#372) --- project/plugins.sbt | 2 +- .../scala/zio/testcontainers/ZIOTestcontainers.scala | 9 ++++++++- src/main/scala/zio/testcontainers/package.scala | 9 ++++++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index 6f44eef..838fa9a 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,2 +1,2 @@ addSbtPlugin("com.github.sbt" % "sbt-ci-release" % "1.8.0") -addSbtPlugin("com.github.sideeffffect" % "sbt-decent-scala" % "1.0.27-1-d4333dfd") +addSbtPlugin("com.github.sideeffffect" % "sbt-decent-scala" % "1.0.57-2-c02df126") diff --git a/src/main/scala/zio/testcontainers/ZIOTestcontainers.scala b/src/main/scala/zio/testcontainers/ZIOTestcontainers.scala index fd8b51d..a30e19f 100644 --- a/src/main/scala/zio/testcontainers/ZIOTestcontainers.scala +++ b/src/main/scala/zio/testcontainers/ZIOTestcontainers.scala @@ -1,12 +1,19 @@ package zio.testcontainers import com.dimafeng.testcontainers.{DockerComposeContainer, SingleContainer} -import org.testcontainers.containers.{GenericContainer => JavaGenericContainer} +import org.testcontainers.containers.{ComposeContainer, GenericContainer => JavaGenericContainer} import org.testcontainers.lifecycle.Startable import zio.{Scope, Tag, UIO, ULayer, URIO, ZIO, ZLayer} object ZIOTestcontainers { + def getHostAndPort( + container: ComposeContainer + )(serviceName: String)(servicePort: Int): UIO[(String, Int)] = for { + host <- ZIO.succeed(container.getServiceHost(serviceName, servicePort)) + port <- ZIO.succeed(container.getServicePort(serviceName, servicePort)) + } yield (host, port) + def getHostAndPort( container: DockerComposeContainer )(serviceName: String)(servicePort: Int): UIO[(String, Int)] = for { diff --git a/src/main/scala/zio/testcontainers/package.scala b/src/main/scala/zio/testcontainers/package.scala index 1c02682..deefaad 100644 --- a/src/main/scala/zio/testcontainers/package.scala +++ b/src/main/scala/zio/testcontainers/package.scala @@ -1,11 +1,18 @@ package zio import com.dimafeng.testcontainers.{DockerComposeContainer, SingleContainer} -import org.testcontainers.containers.{GenericContainer => JavaGenericContainer} +import org.testcontainers.containers.{ComposeContainer, GenericContainer => JavaGenericContainer} import org.testcontainers.lifecycle.Startable package object testcontainers { + implicit final class ComposeContainerOps(private val container: ComposeContainer) extends AnyVal { + + def getHostAndPort(serviceName: String)(servicePort: Int): UIO[(String, Int)] = + ZIOTestcontainers.getHostAndPort(container)(serviceName)(servicePort) + + } + implicit final class DockerComposeContainerOps(private val container: DockerComposeContainer) extends AnyVal { def getHostAndPort(serviceName: String)(servicePort: Int): UIO[(String, Int)] =