Browse Source

Ping pong benchmark server (#1003)

Motivation:

This is the first part of having a method of benchmarking
which can be compared to other languages.

Modifications:

Add a trivial server side implementation.

Result:

QPSBenchmark will respond to requests to be a ping pong streaming
server.
Peter Adams 5 years ago
parent
commit
a374528d10

+ 13 - 5
Performance/QPSBenchmark/Sources/QPSBenchmark/Runtime/BenchmarkServiceImpl.swift

@@ -38,11 +38,19 @@ final class AsyncQPSServerImpl: Grpc_Testing_BenchmarkServiceProvider {
   func streamingCall(
     context: StreamingResponseCallContext<Grpc_Testing_SimpleResponse>
   ) -> EventLoopFuture<(StreamEvent<Grpc_Testing_SimpleRequest>) -> Void> {
-    context.logger.warning("streamingCall not implemented yet")
-    return context.eventLoop.makeFailedFuture(GRPCStatus(
-      code: GRPCStatus.Code.unimplemented,
-      message: "Not implemented"
-    ))
+    return context.eventLoop.makeSucceededFuture({ event in
+      switch event {
+      case let .message(request):
+        do {
+          let response = try AsyncQPSServerImpl.processSimpleRPC(request: request)
+          _ = context.sendResponse(response)
+        } catch {
+          context.statusPromise.fail(error)
+        }
+      case .end:
+        context.statusPromise.succeed(.ok)
+      }
+    })
   }
 
   /// Single-sided unbounded streaming from client to server