From 0c23f59670d051653e4323a18544bb3351a438fa Mon Sep 17 00:00:00 2001 From: kyri-petrou <67301607+kyri-petrou@users.noreply.github.com> Date: Thu, 2 May 2024 19:01:14 +1000 Subject: [PATCH] Add tests to check if the ZIO Runtime is propagated to req execution (#2809) * Add tests to check if the ZIO Runtime is propagated to req execution * Empty commit * Execute flaky form test sequentially * empty --- .../src/test/scala/zio/http/FormSpec.scala | 2 +- .../scala/zio/http/ServerRuntimeSpec.scala | 70 +++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 zio-http/jvm/src/test/scala/zio/http/ServerRuntimeSpec.scala diff --git a/zio-http/jvm/src/test/scala/zio/http/FormSpec.scala b/zio-http/jvm/src/test/scala/zio/http/FormSpec.scala index 5c9c05fa1e..9e1b0117fc 100644 --- a/zio-http/jvm/src/test/scala/zio/http/FormSpec.scala +++ b/zio-http/jvm/src/test/scala/zio/http/FormSpec.scala @@ -311,7 +311,7 @@ object FormSpec extends ZIOHttpSpec { ) } } @@ samples(10), - ) + ) @@ sequential def spec = suite("FormSpec")(urlEncodedSuite, multiFormSuite, multiFormStreamingSuite) diff --git a/zio-http/jvm/src/test/scala/zio/http/ServerRuntimeSpec.scala b/zio-http/jvm/src/test/scala/zio/http/ServerRuntimeSpec.scala new file mode 100644 index 0000000000..ec5240e8e2 --- /dev/null +++ b/zio-http/jvm/src/test/scala/zio/http/ServerRuntimeSpec.scala @@ -0,0 +1,70 @@ +/* + * Copyright 2021 - 2023 Sporta Technologies PVT LTD & the ZIO HTTP contributors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package zio.http + +import zio._ +import zio.test.TestAspect._ +import zio.test._ + +import zio.http.internal.{DynamicServer, HttpRunnableSpec} +import zio.http.netty.NettyConfig + +object ServerRuntimeSpec extends HttpRunnableSpec { + + override val bootstrap: ZLayer[Any, Any, TestEnvironment] = + ZLayer.make[TestEnvironment]( + testEnvironment, + Runtime.enableWorkStealing, + Runtime.setUnhandledErrorLogLevel(LogLevel.Warning), + ) + + override def spec = + suite("ServerRuntimeSpec") { + test("runtime flags are propagated") { + val server = Routes( + Method.GET / "test" -> handler(ZIO.runtimeFlags.map(f => Response.text(f.toString))), + ) + ZIO.runtimeFlags.flatMap { outer => + ZIO + .scoped(serve) + .zipRight(server.deploy.body.run(path = Path.root / "test", method = Method.GET)) + .flatMap(_.asString(Charsets.Utf8)) + .map(b => assertTrue(b == outer.toString)) + } + } + + test("fiber refs are propagated") { + val server = Routes( + Method.GET / "test" -> handler( + ZIO.getFiberRefs.map(f => Response.text(f.get(FiberRef.unhandledErrorLogLevel).get.toString)), + ), + ) + ZIO + .scoped(serve) + .zipRight(server.deploy.body.run(path = Path.root / "test", method = Method.GET)) + .flatMap(_.asString(Charsets.Utf8)) + .map(b => assertTrue(b == "Some(LogLevel(30000,WARN,4))")) + } + } + .provideSomeLayer[DynamicServer & Server.Config & Server & Client](Scope.default) + .provideShared( + DynamicServer.live, + Server.customized, + ZLayer.succeed(Server.Config.default), + ZLayer.succeed(NettyConfig.defaultWithFastShutdown), + Client.default, + ) @@ sequential @@ withLiveClock +}