Skip to content

Commit 8b54c90

Browse files
committed
Generalize serialization and deserialization of proto messages for conformance tests
1 parent 3a56d8c commit 8b54c90

File tree

4 files changed

+38
-34
lines changed

4 files changed

+38
-34
lines changed

conformance/src/main/scala/org/ivovk/connect_rpc_scala/conformance/Http4sServerLauncher.scala

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,14 @@ package org.ivovk.connect_rpc_scala.conformance
22

33
import cats.effect.{IO, IOApp}
44
import com.comcast.ip4s.{host, port, Port}
5-
import connectrpc.conformance.v1.{ConformanceServiceFs2GrpcTrailers, ServerCompatResponse}
5+
import connectrpc.conformance.v1.{
6+
ConformanceServiceFs2GrpcTrailers,
7+
ServerCompatRequest,
8+
ServerCompatResponse,
9+
}
610
import org.http4s.ember.server.EmberServerBuilder
711
import org.http4s.server.middleware.Logger
8-
import org.ivovk.connect_rpc_scala.conformance.util.ServerCompatSerDeser
12+
import org.ivovk.connect_rpc_scala.conformance.util.ProtoSerDeser
913
import org.ivovk.connect_rpc_scala.http4s.Http4sRouteBuilder
1014
import org.slf4j.LoggerFactory
1115

@@ -29,7 +33,7 @@ object Http4sServerLauncher extends IOApp.Simple {
2933

3034
override def run: IO[Unit] = {
3135
val res = for
32-
req <- ServerCompatSerDeser.readRequest[IO](System.in).toResource
36+
req <- ProtoSerDeser.read[IO, ServerCompatRequest](System.in).toResource
3337

3438
service <- ConformanceServiceFs2GrpcTrailers.bindServiceResource(
3539
ConformanceServiceImpl[IO]()
@@ -61,7 +65,7 @@ object Http4sServerLauncher extends IOApp.Simple {
6165
addr = server.address
6266
resp = ServerCompatResponse(addr.getHostString, addr.getPort)
6367

64-
_ <- ServerCompatSerDeser.writeResponse[IO](System.out, resp).toResource
68+
_ <- ProtoSerDeser.write[IO](System.out, resp).toResource
6569

6670
_ = System.err.println(s"Server started on $addr...")
6771
yield ()

conformance/src/main/scala/org/ivovk/connect_rpc_scala/conformance/NettyServerLauncher.scala

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
package org.ivovk.connect_rpc_scala.conformance
22

33
import cats.effect.{IO, IOApp}
4-
import connectrpc.conformance.v1.{ConformanceServiceFs2GrpcTrailers, ServerCompatResponse}
5-
import org.ivovk.connect_rpc_scala.conformance.util.ServerCompatSerDeser
4+
import connectrpc.conformance.v1.{
5+
ConformanceServiceFs2GrpcTrailers,
6+
ServerCompatRequest,
7+
ServerCompatResponse,
8+
}
9+
import org.ivovk.connect_rpc_scala.conformance.util.ProtoSerDeser
610
import org.ivovk.connect_rpc_scala.netty.NettyServerBuilder
711
import org.slf4j.LoggerFactory
812

@@ -26,7 +30,7 @@ object NettyServerLauncher extends IOApp.Simple {
2630

2731
override def run: IO[Unit] = {
2832
val res = for
29-
req <- ServerCompatSerDeser.readRequest[IO](System.in).toResource
33+
req <- ProtoSerDeser.read[IO, ServerCompatRequest](System.in).toResource
3034

3135
service <- ConformanceServiceFs2GrpcTrailers.bindServiceResource(
3236
ConformanceServiceImpl[IO]()
@@ -45,7 +49,7 @@ object NettyServerLauncher extends IOApp.Simple {
4549

4650
resp = ServerCompatResponse(server.host, server.port)
4751

48-
_ <- ServerCompatSerDeser.writeResponse[IO](System.out, resp).toResource
52+
_ <- ProtoSerDeser.write[IO](System.out, resp).toResource
4953

5054
_ = System.err.println(s"Server started on ${server.host}:${server.port}...")
5155
_ = logger.info(s"Netty-server started on ${server.host}:${server.port}...")
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.ivovk.connect_rpc_scala.conformance.util
2+
3+
import cats.effect.Sync
4+
import scalapb.{GeneratedMessage as Message, GeneratedMessageCompanion as Companion}
5+
6+
import java.io.{InputStream, OutputStream}
7+
8+
object ProtoSerDeser {
9+
def read[F[_]: Sync, T <: Message](in: InputStream)(using comp: Companion[T]): F[T] =
10+
Sync[F].delay {
11+
val size = IntSerDeser.read(in)
12+
comp.parseFrom(in.readNBytes(size))
13+
}
14+
15+
def write[F[_]: Sync](out: OutputStream, msg: Message): F[Unit] =
16+
Sync[F].delay {
17+
IntSerDeser.write(out, msg.serializedSize)
18+
out.flush()
19+
out.write(msg.toByteArray)
20+
out.flush()
21+
}
22+
}

conformance/src/main/scala/org/ivovk/connect_rpc_scala/conformance/util/ServerCompatSerDeser.scala

Lines changed: 0 additions & 26 deletions
This file was deleted.

0 commit comments

Comments
 (0)