From 1506df6f2b89af894056d44c91db70e2cf4a1e91 Mon Sep 17 00:00:00 2001 From: Tomas Monkevic Date: Wed, 7 Jun 2023 18:45:06 +0300 Subject: [PATCH 1/3] Wire up redis --- greyhoundsidecar/build.sbt | 4 +++- greyhoundsidecar/docker-compose.yml | 15 ++++++++++++ .../src/main/scala/greyhound/Registry.scala | 13 ++++++---- .../main/scala/greyhound/RegistryRepo.scala | 16 +++++++++++++ .../scala/greyhound/SidecarServerMain.scala | 20 ++++++++++++---- .../main/scala/greyhound/SidecarService.scala | 8 ++----- .../scala/greyhound/MultiTenantTest.scala | 2 +- .../greyhound/RetrySidecarServiceTest.scala | 2 +- .../scala/greyhound/SidecarServiceTest.scala | 2 +- .../support/ConnectionSettings.scala | 24 ++++++++++++++++++- 10 files changed, 87 insertions(+), 19 deletions(-) create mode 100644 greyhoundsidecar/src/main/scala/greyhound/RegistryRepo.scala diff --git a/greyhoundsidecar/build.sbt b/greyhoundsidecar/build.sbt index 09f1f1d6..9ce8eb5f 100644 --- a/greyhoundsidecar/build.sbt +++ b/greyhoundsidecar/build.sbt @@ -21,6 +21,7 @@ lazy val root = (project in file(".")) "org.slf4j" % "slf4j-api" % "1.7.25", "ch.qos.logback" % "logback-classic" % "1.1.3", "dev.zio" %% "zio-logging-slf4j" % "2.1.3", + "dev.zio" %% "zio-redis" % "0.2.0", // -- test -- // "dev.zio" %% "zio-test" % "2.0.3" % Test, @@ -28,7 +29,8 @@ lazy val root = (project in file(".")) "dev.zio" %% "zio-test-sbt" % "2.0.3" % Test, "org.specs2" %% "specs2-core" % "4.14.1" % Test, "org.apache.curator" % "curator-test" % "5.3.0" % Test, - "com.wix" %% "greyhound-testkit" % "0.3.0" % Test + "com.wix" %% "greyhound-testkit" % "0.3.0" % Test, + "dev.zio" %% "zio-redis-embedded" % "0.2.0" % Test, ), packageName := "greyhound-sidecar", version := "1.0", diff --git a/greyhoundsidecar/docker-compose.yml b/greyhoundsidecar/docker-compose.yml index 4c0aebae..022726e3 100644 --- a/greyhoundsidecar/docker-compose.yml +++ b/greyhoundsidecar/docker-compose.yml @@ -52,7 +52,19 @@ services: networks: - greyhound-network + greyhound-sidecar-cache: + image: redis:7.2-rc1-alpine + ports: + - 6379:6379 + volumes: + - redis_data:/data + networks: + - greyhound-network + greyhound-sidecar: + depends_on: + - kafka + - greyhound-sidecar-cache image: greyhound-sidecar:1.0 ports: - 9000:9000 @@ -61,3 +73,6 @@ services: KAFKA_ADDRESS: kafka:29092 networks: - greyhound-network + +volumes: + redis_data: \ No newline at end of file diff --git a/greyhoundsidecar/src/main/scala/greyhound/Registry.scala b/greyhoundsidecar/src/main/scala/greyhound/Registry.scala index b1b72d9f..33b356ef 100644 --- a/greyhoundsidecar/src/main/scala/greyhound/Registry.scala +++ b/greyhoundsidecar/src/main/scala/greyhound/Registry.scala @@ -24,7 +24,10 @@ trait Registry { def isUniqueConsumer(topic: String, consumerGroup: String, tenantId: String): UIO[Boolean] } -case class TenantRegistry(ref: Synchronized[Map[String, TenantInfo]]) extends Registry { +case class TenantRegistry( + ref: Synchronized[Map[String, TenantInfo]], + registryRepo: RegistryRepo +) extends Registry { override def addTenant(tenantId: String, host: String, port: Int): Task[Unit] = { ref.updateZIO(tenants => if (tenants.values.map(_.hostDetails).exists(hostDetails => hostDetails.host == host && hostDetails.port == port)) ZIO.fail(new StatusRuntimeException(Status.ALREADY_EXISTS)) @@ -80,9 +83,11 @@ case class TenantRegistry(ref: Synchronized[Map[String, TenantInfo]]) extends Re } object TenantRegistry { - val layer = ZLayer.fromZIO { - Synchronized.make(Map.empty[String, TenantInfo]) - .map(TenantRegistry(_)) + val layer: ZLayer[RegistryRepo, Nothing, TenantRegistry] = ZLayer.fromZIO { + for { + ref <- Synchronized.make(Map.empty[String, TenantInfo]) + registryRepo <- ZIO.service[RegistryRepo] + } yield TenantRegistry(ref, registryRepo) } } diff --git a/greyhoundsidecar/src/main/scala/greyhound/RegistryRepo.scala b/greyhoundsidecar/src/main/scala/greyhound/RegistryRepo.scala new file mode 100644 index 00000000..21101b51 --- /dev/null +++ b/greyhoundsidecar/src/main/scala/greyhound/RegistryRepo.scala @@ -0,0 +1,16 @@ +package greyhound + +import zio.{Task, ZLayer} +import zio.redis.Redis + +trait RegistryRepo { + def addTenant(tenantId: String, host: String, port: Int): Task[Unit] +} + +case class RedisRegistryRepo(redis: Redis) extends RegistryRepo { + override def addTenant(tenantId: String, host: String, port: Int): Task[Unit] = ??? +} + +object RegistryRepo { + val layer: ZLayer[Redis, Nothing, RedisRegistryRepo] = ZLayer.fromFunction(RedisRegistryRepo(_)) +} \ No newline at end of file diff --git a/greyhoundsidecar/src/main/scala/greyhound/SidecarServerMain.scala b/greyhoundsidecar/src/main/scala/greyhound/SidecarServerMain.scala index e2336e10..8f823ea4 100644 --- a/greyhoundsidecar/src/main/scala/greyhound/SidecarServerMain.scala +++ b/greyhoundsidecar/src/main/scala/greyhound/SidecarServerMain.scala @@ -3,8 +3,9 @@ package greyhound import io.grpc.Status import scalapb.zio_grpc.{RequestContext, ServerMain, ServiceList, ZTransform} import zio.logging.backend.SLF4J +import zio.redis._ import zio.stream.ZStream -import zio.{Cause, Runtime, URIO, ZIO} +import zio.{Cause, Runtime, URIO, ZIO, ZLayer} object SidecarServerMain extends ServerMain { @@ -46,17 +47,28 @@ object SidecarServerMain extends ServerMain { .onError(logCause) } - val sidecarService = for { + private val sidecarService = for { service <- ZIO.service[SidecarService] kafkaAddress <- ZIO.service[KafkaInfo].map(_.address) _ <- zio.Console.printLine(s"~~~ INIT Sidecar Service with kafka address $kafkaAddress").orDie } yield service.transform[RequestContext](new LoggingTransform) - val initSidecarService = sidecarService.provide( + // Currently supports only single node + private val redisLayer: ZLayer[Any, RedisError.IOError, Redis] = ZLayer.make[Redis]( + Redis.layer, + RedisExecutor.layer, + ZLayer.succeed(RedisConfig("greyhound-sidecar-cache", 6379)), //TODO don't use hardcoded values + ZLayer.succeed(CodecSupplier.utf8string), + ) + + private val initSidecarService = sidecarService.provide( SidecarService.layer, TenantRegistry.layer, KafkaInfoLive.layer, - ConsumerCreatorImpl.layer) + ConsumerCreatorImpl.layer, + RegistryRepo.layer, + redisLayer, + ) } diff --git a/greyhoundsidecar/src/main/scala/greyhound/SidecarService.scala b/greyhoundsidecar/src/main/scala/greyhound/SidecarService.scala index 3a9d17d4..1b810e6a 100644 --- a/greyhoundsidecar/src/main/scala/greyhound/SidecarService.scala +++ b/greyhoundsidecar/src/main/scala/greyhound/SidecarService.scala @@ -142,12 +142,8 @@ class SidecarService(tenantRegistry: Registry, } object SidecarService { - val layer: ZLayer[Registry with ConsumerCreator with KafkaInfo, Nothing, SidecarService] = ZLayer.fromZIO { - for { - kafkaAddress <- ZIO.service[KafkaInfo].map(_.address) - tenantRegistry <- ZIO.service[Registry] - consumerCreator <- ZIO.service[ConsumerCreator] - } yield new SidecarService(tenantRegistry = tenantRegistry, consumerCreator = consumerCreator, kafkaAddress = kafkaAddress) + val layer = ZLayer.fromFunction { (registry: Registry, consumerCreator: ConsumerCreator, kafkaInfo: KafkaInfo) => + new SidecarService(registry, consumerCreator, _ => ZIO.unit, kafkaInfo.address) } } diff --git a/greyhoundsidecar/src/test/scala/greyhound/MultiTenantTest.scala b/greyhoundsidecar/src/test/scala/greyhound/MultiTenantTest.scala index 1f7e0ec3..f2426715 100644 --- a/greyhoundsidecar/src/test/scala/greyhound/MultiTenantTest.scala +++ b/greyhoundsidecar/src/test/scala/greyhound/MultiTenantTest.scala @@ -238,7 +238,7 @@ object MultiTenantTest extends JUnitRunnableSpec with KafkaTestSupport with Conn (testSidecarUser1Layer >>> sidecarUserServer1Layer) ++ testSidecarUser2Layer ++ (testSidecarUser2Layer >>> sidecarUserServer2Layer) ++ - ((TenantRegistry.layer ++ TestKafkaInfo.layer ++ (TenantRegistry.layer >>> ConsumerCreatorImpl.layer)) >>> SidecarService.layer)) @@ + ((TestTenantRegistry.layer ++ TestKafkaInfo.layer ++ (TestTenantRegistry.layer >>> ConsumerCreatorImpl.layer)) >>> SidecarService.layer)) @@ TestAspect.withLiveClock @@ runKafka(kafkaPort, zooKeeperPort) @@ sequential diff --git a/greyhoundsidecar/src/test/scala/greyhound/RetrySidecarServiceTest.scala b/greyhoundsidecar/src/test/scala/greyhound/RetrySidecarServiceTest.scala index 67fc466a..dbebec44 100644 --- a/greyhoundsidecar/src/test/scala/greyhound/RetrySidecarServiceTest.scala +++ b/greyhoundsidecar/src/test/scala/greyhound/RetrySidecarServiceTest.scala @@ -118,7 +118,7 @@ object RetrySidecarServiceTest extends JUnitRunnableSpec with KafkaTestSupport w ZLayer.succeed(zio.Scope.global) ++ FailOnceTestSidecarUser.layer ++ (FailOnceTestSidecarUser.layer >>> sidecarUserServerLayer) ++ - ((TenantRegistry.layer ++ TestKafkaInfo.layer ++ (TenantRegistry.layer >>> ConsumerCreatorImpl.layer)) >>> SidecarService.layer)) @@ + ((TestTenantRegistry.layer ++ TestKafkaInfo.layer ++ (TestTenantRegistry.layer >>> ConsumerCreatorImpl.layer)) >>> SidecarService.layer)) @@ TestAspect.withLiveClock @@ runKafka(kafkaPort, zooKeeperPort) @@ sequential diff --git a/greyhoundsidecar/src/test/scala/greyhound/SidecarServiceTest.scala b/greyhoundsidecar/src/test/scala/greyhound/SidecarServiceTest.scala index 86bccce7..3608ebd8 100644 --- a/greyhoundsidecar/src/test/scala/greyhound/SidecarServiceTest.scala +++ b/greyhoundsidecar/src/test/scala/greyhound/SidecarServiceTest.scala @@ -155,7 +155,7 @@ object SidecarServiceTest extends JUnitRunnableSpec with KafkaTestSupport with C ZLayer.succeed(zio.Scope.global) ++ TestSidecarUser.layer ++ (TestSidecarUser.layer >>> sidecarUserServerLayer) ++ - ((TenantRegistry.layer ++ TestKafkaInfo.layer ++ (TenantRegistry.layer >>> ConsumerCreatorImpl.layer)) >>> SidecarService.layer)) @@ + ((TestTenantRegistry.layer ++ TestKafkaInfo.layer ++ (TestTenantRegistry.layer >>> ConsumerCreatorImpl.layer)) >>> SidecarService.layer)) @@ TestAspect.withLiveClock @@ runKafka(kafkaPort, zooKeeperPort) @@ sequential diff --git a/greyhoundsidecar/src/test/scala/greyhound/support/ConnectionSettings.scala b/greyhoundsidecar/src/test/scala/greyhound/support/ConnectionSettings.scala index 70ce0b9b..b7ef474e 100644 --- a/greyhoundsidecar/src/test/scala/greyhound/support/ConnectionSettings.scala +++ b/greyhoundsidecar/src/test/scala/greyhound/support/ConnectionSettings.scala @@ -1,7 +1,9 @@ package greyhound.support -import greyhound.KafkaInfo +import greyhound.{KafkaInfo, RegistryRepo, TenantRegistry} import zio.ZLayer +import zio.redis.{CodecSupplier, Redis, RedisExecutor} +import zio.redis.embedded.EmbeddedRedis trait ConnectionSettings { val kafkaPort: Int @@ -14,7 +16,27 @@ trait ConnectionSettings { override val address: String = s"$localhost:$kafkaPort" } + //TODO move to test context? object TestKafkaInfo { val layer = ZLayer.succeed(TestKafkaInfo()) } + + object TestRegistryRepo { + val layer = ZLayer.make[RegistryRepo]( + RegistryRepo.layer, + Redis.layer, + RedisExecutor.layer, + EmbeddedRedis.layer, + ZLayer.succeed(CodecSupplier.utf8string), + ) + } + + object TestTenantRegistry { + val layer = ZLayer.make[TenantRegistry]( + TenantRegistry.layer, + TestRegistryRepo.layer + ) + } + + //TODO also add sidecar service layer? } From 37b393813e7c5664d9ec874805eb15995a350c50 Mon Sep 17 00:00:00 2001 From: Tomas Monkevic Date: Thu, 8 Jun 2023 17:54:11 +0300 Subject: [PATCH 2/3] Fix tests --- greyhoundsidecar/build.sbt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/greyhoundsidecar/build.sbt b/greyhoundsidecar/build.sbt index 9ce8eb5f..e2f4af04 100644 --- a/greyhoundsidecar/build.sbt +++ b/greyhoundsidecar/build.sbt @@ -8,11 +8,13 @@ Compile / PB.targets := Seq( scalapb.zio_grpc.ZioCodeGenerator -> (Compile / sourceManaged).value / "scalapb" ) +val zioVersion = "2.0.10" + lazy val root = (project in file(".")) .settings( name := "greyhound-sidecar", libraryDependencies ++= Seq( - "dev.zio" %% "zio" % "2.0.3", + "dev.zio" %% "zio" % zioVersion, "io.grpc" % "grpc-netty" % "1.51.0", "com.wix" %% "greyhound-core" % "0.3.0", "com.thesamet.scalapb" %% "scalapb-runtime-grpc" % scalapb.compiler.Version.scalapbVersion, @@ -24,13 +26,14 @@ lazy val root = (project in file(".")) "dev.zio" %% "zio-redis" % "0.2.0", // -- test -- // - "dev.zio" %% "zio-test" % "2.0.3" % Test, - "dev.zio" %% "zio-test-junit" % "2.0.3" % Test, - "dev.zio" %% "zio-test-sbt" % "2.0.3" % Test, + "dev.zio" %% "zio-test" % zioVersion % Test, + "dev.zio" %% "zio-test-junit" % zioVersion % Test, + "dev.zio" %% "zio-test-sbt" % zioVersion % Test, "org.specs2" %% "specs2-core" % "4.14.1" % Test, "org.apache.curator" % "curator-test" % "5.3.0" % Test, "com.wix" %% "greyhound-testkit" % "0.3.0" % Test, "dev.zio" %% "zio-redis-embedded" % "0.2.0" % Test, + "dev.zio" %% "zio-streams" % zioVersion % Test, ), packageName := "greyhound-sidecar", version := "1.0", From b5f7ecdd2553947e4da94743f15396243a09cf98 Mon Sep 17 00:00:00 2001 From: Tomas Monkevic Date: Fri, 9 Jun 2023 18:32:39 +0300 Subject: [PATCH 3/3] Construct registry repo based on enviroment config --- .../main/scala/greyhound/RegistryRepo.scala | 24 +++++++-- .../scala/greyhound/SidecarServerMain.scala | 51 ++++++++++++++----- .../scala/greyhound/MultiTenantTest.scala | 1 + .../greyhound/RetrySidecarServiceTest.scala | 1 + .../scala/greyhound/SidecarServiceTest.scala | 1 + .../support/ConnectionSettings.scala | 11 ++-- 6 files changed, 68 insertions(+), 21 deletions(-) diff --git a/greyhoundsidecar/src/main/scala/greyhound/RegistryRepo.scala b/greyhoundsidecar/src/main/scala/greyhound/RegistryRepo.scala index 21101b51..0499fffa 100644 --- a/greyhoundsidecar/src/main/scala/greyhound/RegistryRepo.scala +++ b/greyhoundsidecar/src/main/scala/greyhound/RegistryRepo.scala @@ -1,7 +1,10 @@ package greyhound -import zio.{Task, ZLayer} -import zio.redis.Redis +import zio.Ref.Synchronized +import zio.{Task, UIO, ZIO, ZLayer} +import zio.redis.{CodecSupplier, Redis, RedisConfig, RedisError, RedisExecutor} + +import scala.util.Try trait RegistryRepo { def addTenant(tenantId: String, host: String, port: Int): Task[Unit] @@ -11,6 +14,19 @@ case class RedisRegistryRepo(redis: Redis) extends RegistryRepo { override def addTenant(tenantId: String, host: String, port: Int): Task[Unit] = ??? } -object RegistryRepo { - val layer: ZLayer[Redis, Nothing, RedisRegistryRepo] = ZLayer.fromFunction(RedisRegistryRepo(_)) +//TODO separate into two files +case class InMemoryRegistryRepo(ref: Synchronized[Map[String, TenantInfo]]) extends RegistryRepo { + override def addTenant(tenantId: String, host: String, port: Int): Task[Unit] = ??? +} + +object InMemoryRegistryRepo { + lazy val layer: ZLayer[Any, Throwable, RegistryRepo] = ZLayer.fromZIO { + for { + ref <- Synchronized.make(Map.empty[String, TenantInfo]) + } yield InMemoryRegistryRepo(ref) + } +} + +object RedisRegistryRepo { + lazy val layer: ZLayer[Redis, RedisError.IOError, RegistryRepo] = ZLayer.fromFunction(RedisRegistryRepo(_)) } \ No newline at end of file diff --git a/greyhoundsidecar/src/main/scala/greyhound/SidecarServerMain.scala b/greyhoundsidecar/src/main/scala/greyhound/SidecarServerMain.scala index 8f823ea4..9d05cacb 100644 --- a/greyhoundsidecar/src/main/scala/greyhound/SidecarServerMain.scala +++ b/greyhoundsidecar/src/main/scala/greyhound/SidecarServerMain.scala @@ -1,11 +1,12 @@ package greyhound +import com.wixpress.dst.greyhound.sidecar.api.v1.greyhoundsidecar.ZioGreyhoundsidecar import io.grpc.Status import scalapb.zio_grpc.{RequestContext, ServerMain, ServiceList, ZTransform} import zio.logging.backend.SLF4J import zio.redis._ import zio.stream.ZStream -import zio.{Cause, Runtime, URIO, ZIO, ZLayer} +import zio.{Cause, Runtime, UIO, URIO, ZIO, ZLayer} object SidecarServerMain extends ServerMain { @@ -47,29 +48,51 @@ object SidecarServerMain extends ServerMain { .onError(logCause) } - private val sidecarService = for { - service <- ZIO.service[SidecarService] - kafkaAddress <- ZIO.service[KafkaInfo].map(_.address) - _ <- zio.Console.printLine(s"~~~ INIT Sidecar Service with kafka address $kafkaAddress").orDie - } yield service.transform[RequestContext](new LoggingTransform) + private def getRedisConfig: UIO[RedisConfig] = { + val maybeConfig = for { + redisHost <- ZIO.fromOption(scala.util.Properties.envOrNone("REDIS_HOST")) + redisPortEnv <- ZIO.fromOption(scala.util.Properties.envOrNone("REDIS_PORT")) + redisPort <- ZIO.attempt(redisPortEnv.toInt) + } yield RedisConfig(redisHost, redisPort) + + maybeConfig.catchAll(_ => ZIO.succeed(RedisConfig.Default)) + } + + private val redisConfigLayer = ZLayer.fromZIO(getRedisConfig) // Currently supports only single node - private val redisLayer: ZLayer[Any, RedisError.IOError, Redis] = ZLayer.make[Redis]( + private lazy val redisLayer: ZLayer[Any, RedisError.IOError, Redis] = ZLayer.make[Redis]( Redis.layer, RedisExecutor.layer, - ZLayer.succeed(RedisConfig("greyhound-sidecar-cache", 6379)), //TODO don't use hardcoded values + redisConfigLayer, ZLayer.succeed(CodecSupplier.utf8string), ) - private val initSidecarService = sidecarService.provide( - SidecarService.layer, - TenantRegistry.layer, - KafkaInfoLive.layer, - ConsumerCreatorImpl.layer, - RegistryRepo.layer, + private lazy val redisRegistryRepo = ZLayer.make[RedisRegistryRepo]( + ZLayer.fromFunction(RedisRegistryRepo(_)), redisLayer, ) + private val sidecarService = for { + service <- ZIO.service[SidecarService] + kafkaAddress <- ZIO.service[KafkaInfo].map(_.address) + _ <- zio.Console.printLine(s"~~~ INIT Sidecar Service with kafka address $kafkaAddress").orDie + } yield service.transform[RequestContext](new LoggingTransform) + + private def getStandaloneMode: UIO[Boolean] = ZIO.attempt( + scala.util.Properties.envOrNone("STANDALONE_MODE").exists(_.toBoolean) + ).catchAll(_ => ZIO.succeed(false)) + + private def initSidecarService: ZIO[Any, Throwable, ZioGreyhoundsidecar.ZGreyhoundSidecar[RequestContext]] = for { + isStandalone <- getStandaloneMode + partialService = sidecarService.provideSome[RegistryRepo]( + SidecarService.layer, + TenantRegistry.layer, + KafkaInfoLive.layer, + ConsumerCreatorImpl.layer, + ) + service <- if(isStandalone) partialService.provide(redisRegistryRepo) else partialService.provide(InMemoryRegistryRepo.layer) + } yield service } class LoggingTransform[R] extends ZTransform[R, Status, R with RequestContext] { diff --git a/greyhoundsidecar/src/test/scala/greyhound/MultiTenantTest.scala b/greyhoundsidecar/src/test/scala/greyhound/MultiTenantTest.scala index f2426715..e51b1a94 100644 --- a/greyhoundsidecar/src/test/scala/greyhound/MultiTenantTest.scala +++ b/greyhoundsidecar/src/test/scala/greyhound/MultiTenantTest.scala @@ -27,6 +27,7 @@ object MultiTenantTest extends JUnitRunnableSpec with KafkaTestSupport with Conn override val kafkaPort: Int = 6667 override val zooKeeperPort: Int = 2187 override val sideCarUserGrpcPort: Int = 9107 + override val isStandaloneMode: Boolean = false val sideCarUser1GrpcPort = 9105 val sideCarUser2GrpcPort = 9106 diff --git a/greyhoundsidecar/src/test/scala/greyhound/RetrySidecarServiceTest.scala b/greyhoundsidecar/src/test/scala/greyhound/RetrySidecarServiceTest.scala index dbebec44..f651092e 100644 --- a/greyhoundsidecar/src/test/scala/greyhound/RetrySidecarServiceTest.scala +++ b/greyhoundsidecar/src/test/scala/greyhound/RetrySidecarServiceTest.scala @@ -16,6 +16,7 @@ object RetrySidecarServiceTest extends JUnitRunnableSpec with KafkaTestSupport w override val kafkaPort: Int = 6669 override val zooKeeperPort: Int = 2189 override val sideCarUserGrpcPort: Int = 9109 + override val isStandaloneMode: Boolean = false val sidecarUserServerLayer = ZLayer.fromZIO(for { user <- ZIO.service[FailOnceTestSidecarUser] diff --git a/greyhoundsidecar/src/test/scala/greyhound/SidecarServiceTest.scala b/greyhoundsidecar/src/test/scala/greyhound/SidecarServiceTest.scala index 3608ebd8..9d8092b6 100644 --- a/greyhoundsidecar/src/test/scala/greyhound/SidecarServiceTest.scala +++ b/greyhoundsidecar/src/test/scala/greyhound/SidecarServiceTest.scala @@ -16,6 +16,7 @@ object SidecarServiceTest extends JUnitRunnableSpec with KafkaTestSupport with C override val kafkaPort: Int = 6668 override val zooKeeperPort: Int = 2188 override val sideCarUserGrpcPort: Int = 9108 + override val isStandaloneMode: Boolean = false val sidecarUserServerLayer = ZLayer.fromZIO(for { user <- ZIO.service[TestSidecarUser] diff --git a/greyhoundsidecar/src/test/scala/greyhound/support/ConnectionSettings.scala b/greyhoundsidecar/src/test/scala/greyhound/support/ConnectionSettings.scala index b7ef474e..58b47ea4 100644 --- a/greyhoundsidecar/src/test/scala/greyhound/support/ConnectionSettings.scala +++ b/greyhoundsidecar/src/test/scala/greyhound/support/ConnectionSettings.scala @@ -1,6 +1,6 @@ package greyhound.support -import greyhound.{KafkaInfo, RegistryRepo, TenantRegistry} +import greyhound.{InMemoryRegistryRepo, KafkaInfo, RedisRegistryRepo, RegistryRepo, TenantRegistry} import zio.ZLayer import zio.redis.{CodecSupplier, Redis, RedisExecutor} import zio.redis.embedded.EmbeddedRedis @@ -9,6 +9,7 @@ trait ConnectionSettings { val kafkaPort: Int val zooKeeperPort: Int val sideCarUserGrpcPort: Int + val isStandaloneMode: Boolean final val localhost: String = "localhost" @@ -22,13 +23,17 @@ trait ConnectionSettings { } object TestRegistryRepo { - val layer = ZLayer.make[RegistryRepo]( - RegistryRepo.layer, + def layer = if (isStandaloneMode) redisTestLayer else inMemoryTestLayer + + val redisTestLayer = ZLayer.make[RegistryRepo]( + RedisRegistryRepo.layer, Redis.layer, RedisExecutor.layer, EmbeddedRedis.layer, ZLayer.succeed(CodecSupplier.utf8string), ) + + val inMemoryTestLayer = InMemoryRegistryRepo.layer } object TestTenantRegistry {