This is an automated email from the ASF dual-hosted git repository.

roiocam pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/pekko-grpc.git


The following commit(s) were added to refs/heads/main by this push:
     new 0ac166c1 enable GrpcInteropIoWithPekkoHttpJavaSpec to work (#257)
0ac166c1 is described below

commit 0ac166c1302d459f06bd85ecd2fcd85f9273697a
Author: Laglangyue <[email protected]>
AuthorDate: Sun Apr 7 12:09:29 2024 +0800

    enable GrpcInteropIoWithPekkoHttpJavaSpec to work (#257)
    
    * enable GrpcInteropIoWithPekkoHttpJavaSpec
    
    * enable GrpcInteropIoWithIoSpec with PekkoHttp to work for javaClientTest
    
    * format
    
    ---------
    
    Co-authored-by: laglangyue <[email protected]>
    Co-authored-by: tangjiafu <[email protected]>
---
 .../grpc/interop/PekkoGrpcJavaClientTester.java    | 36 ++++++++++++++++++----
 .../pekko/grpc/interop/GrpcInteropSpec.scala       | 25 ++++++++++-----
 2 files changed, 47 insertions(+), 14 deletions(-)

diff --git 
a/interop-tests/src/test/java/org/apache/pekko/grpc/interop/PekkoGrpcJavaClientTester.java
 
b/interop-tests/src/test/java/org/apache/pekko/grpc/interop/PekkoGrpcJavaClientTester.java
index 83f773c3..3dc24f36 100644
--- 
a/interop-tests/src/test/java/org/apache/pekko/grpc/interop/PekkoGrpcJavaClientTester.java
+++ 
b/interop-tests/src/test/java/org/apache/pekko/grpc/interop/PekkoGrpcJavaClientTester.java
@@ -21,16 +21,22 @@ import io.grpc.Status;
 import io.grpc.StatusRuntimeException;
 import io.grpc.testing.integration.EmptyProtos;
 import io.grpc.testing.integration.Messages;
+import io.grpc.testing.integration.Messages.SimpleResponse;
+import io.grpc.testing.integration.Messages.StreamingOutputCallResponse;
 import io.grpc.testing.integration.TestServiceClient;
 import io.grpc.testing.integration.UnimplementedServiceClient;
 import io.grpc.testing.integration2.ClientTester;
 import io.grpc.testing.integration2.Settings;
 import java.io.InputStream;
+import java.security.KeyManagementException;
+import java.security.NoSuchAlgorithmException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.CompletionStage;
 import java.util.concurrent.TimeUnit;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
 import org.apache.pekko.actor.ActorSystem;
 import org.apache.pekko.grpc.GrpcClientSettings;
 import org.apache.pekko.grpc.GrpcResponseMetadata;
@@ -54,30 +60,48 @@ import scala.concurrent.ExecutionContext;
  * against our Scala API's
  */
 public class PekkoGrpcJavaClientTester implements ClientTester {
+
   private final Settings settings;
   private final Materializer mat;
   private final ExecutionContext ec;
   private final ActorSystem as;
+  private final String backend;
+  private final Boolean testWithSslContext;
 
   private TestServiceClient client;
   private UnimplementedServiceClient clientUnimplementedService;
 
   private static int AWAIT_TIME_SECONDS = 3;
 
-  public PekkoGrpcJavaClientTester(Settings settings, ActorSystem sys) {
+  public PekkoGrpcJavaClientTester(
+      Settings settings, ActorSystem sys, String backend, Boolean 
testWithSslContext) {
     this.settings = settings;
     this.mat = SystemMaterializer.get(sys).materializer();
     this.as = sys;
+    this.backend = backend;
+    this.testWithSslContext = testWithSslContext;
     this.ec = sys.dispatcher();
   }
 
   @Override
   public void setUp() {
-    final GrpcClientSettings grpcSettings =
+    TrustManager trustManager = 
SSLContextUtils.trustManagerFromResource("/certs/ca.pem");
+    GrpcClientSettings grpcSettings =
         GrpcClientSettings.connectToServiceAt(settings.serverHost(), 
settings.serverPort(), as)
+            .withBackend(backend)
             .withOverrideAuthority(settings.serverHostOverride())
-            .withTls(settings.useTls())
-            
.withTrustManager(SSLContextUtils.trustManagerFromResource("/certs/ca.pem"));
+            .withTls(settings.useTls());
+    try {
+      if (testWithSslContext) {
+        SSLContext sslContext = SSLContext.getInstance("TLS");
+        sslContext.init(null, new TrustManager[] {trustManager}, null);
+        grpcSettings = grpcSettings.withSslContext(sslContext);
+      } else {
+        grpcSettings = grpcSettings.withTrustManager(trustManager);
+      }
+    } catch (NoSuchAlgorithmException | KeyManagementException e) {
+      throw new RuntimeException(e);
+    }
     client = TestServiceClient.create(grpcSettings, as);
     clientUnimplementedService = 
UnimplementedServiceClient.create(grpcSettings, as);
   }
@@ -196,7 +220,7 @@ public class PekkoGrpcJavaClientTester implements 
ClientTester {
             
.setPayload(Messages.Payload.newBuilder().setBody(ByteString.copyFrom(new 
byte[58979])))
             .build());
 
-    final List<Messages.StreamingOutputCallResponse> response =
+    final List<StreamingOutputCallResponse> response =
         client
             .streamingOutputCall(request)
             .toMat(Sink.seq(), Keep.right())
@@ -349,7 +373,7 @@ public class PekkoGrpcJavaClientTester implements 
ClientTester {
     // unary call
     org.apache.pekko.util.ByteString binaryValue =
         org.apache.pekko.util.ByteString.fromInts(0xababab);
-    CompletionStage<GrpcSingleResponse<Messages.SimpleResponse>> 
unaryResponseCs =
+    CompletionStage<GrpcSingleResponse<SimpleResponse>> unaryResponseCs =
         client
             .unaryCall()
             .addHeader("x-grpc-test-echo-initial", 
"test_initial_metadata_value")
diff --git 
a/interop-tests/src/test/scala/org/apache/pekko/grpc/interop/GrpcInteropSpec.scala
 
b/interop-tests/src/test/scala/org/apache/pekko/grpc/interop/GrpcInteropSpec.scala
index 228ca289..577f1252 100644
--- 
a/interop-tests/src/test/scala/org/apache/pekko/grpc/interop/GrpcInteropSpec.scala
+++ 
b/interop-tests/src/test/scala/org/apache/pekko/grpc/interop/GrpcInteropSpec.scala
@@ -16,27 +16,34 @@ package org.apache.pekko.grpc.interop
 import io.grpc.testing.integration.TestServiceHandlerFactory
 
 class GrpcInteropIoWithIoSpec extends GrpcInteropTests(Servers.IoGrpc, 
Clients.IoGrpc)
+
 class GrpcInteropIoWithPekkoNettyScalaSpec extends 
GrpcInteropTests(Servers.IoGrpc, Clients.PekkoNetty.Scala)
 class GrpcInteropIoWithPekkoNettyScalaWithSslContextSpec
     extends GrpcInteropTests(Servers.IoGrpc, 
Clients.PekkoNetty.ScalaWithSslContext)
 class GrpcInteropIoWithPekkoNettyJavaSpec extends 
GrpcInteropTests(Servers.IoGrpc, Clients.PekkoNetty.Java)
+class GrpcInteropIoWithPekkoNettyJavaWithSslContextSpec
+    extends GrpcInteropTests(Servers.IoGrpc, 
Clients.PekkoNetty.JavaWithSslContext)
+
 class GrpcInteropIoWithPekkoHttpScalaSpec extends 
GrpcInteropTests(Servers.IoGrpc, Clients.PekkoHttp.Scala)
 class GrpcInteropIoWithPekkoHttpScalaWithSslContextSpec
     extends GrpcInteropTests(Servers.IoGrpc, 
Clients.PekkoHttp.ScalaWithSslContext)
-//class GrpcInteropIoWithPekkoHttpJavaSpec extends 
GrpcInteropTests(Servers.IoGrpc, Clients.PekkoHttp.Java)
+class GrpcInteropIoWithPekkoHttpJavaSpec extends 
GrpcInteropTests(Servers.IoGrpc, Clients.PekkoHttp.Java)
+class GrpcInteropIoWithPekkoHttpJavaWithSslContextSpec
+    extends GrpcInteropTests(Servers.IoGrpc, 
Clients.PekkoHttp.JavaWithSslContext)
 
 class GrpcInteropPekkoScalaWithIoSpec extends 
GrpcInteropTests(Servers.Pekko.Scala, Clients.IoGrpc)
+
 class GrpcInteropPekkoScalaWithPekkoNettyScalaSpec
     extends GrpcInteropTests(Servers.Pekko.Scala, Clients.PekkoNetty.Scala)
 class GrpcInteropPekkoScalaWithPekkoNettyJavaSpec extends 
GrpcInteropTests(Servers.Pekko.Scala, Clients.PekkoNetty.Java)
 class GrpcInteropPekkoScalaWithPekkoHttpScalaSpec extends 
GrpcInteropTests(Servers.Pekko.Scala, Clients.PekkoHttp.Scala)
-//class GrpcInteropPekkoScalaWithPekkoHttpJavaSpec extends 
GrpcInteropTests(Servers.Pekko.Scala, Clients.PekkoHttp.Java)
+class GrpcInteropPekkoScalaWithPekkoHttpJavaSpec extends 
GrpcInteropTests(Servers.Pekko.Scala, Clients.PekkoHttp.Java)
 
 class GrpcInteropPekkoJavaWithIoSpec extends 
GrpcInteropTests(Servers.Pekko.Java, Clients.IoGrpc)
 class GrpcInteropPekkoJavaWithPekkoNettyScalaSpec extends 
GrpcInteropTests(Servers.Pekko.Java, Clients.PekkoNetty.Scala)
 class GrpcInteropPekkoJavaWithPekkoNettyJavaSpec extends 
GrpcInteropTests(Servers.Pekko.Java, Clients.PekkoNetty.Java)
 class GrpcInteropPekkoJavaWithPekkoHttpScalaSpec extends 
GrpcInteropTests(Servers.Pekko.Java, Clients.PekkoHttp.Scala)
-//class GrpcInteropPekkoJavaWithPekkoHttpJavaSpec extends 
GrpcInteropTests(Servers.Pekko.Java, Clients.PekkoHttp.Java)
+class GrpcInteropPekkoJavaWithPekkoHttpJavaSpec extends 
GrpcInteropTests(Servers.Pekko.Java, Clients.PekkoHttp.Java)
 
 //--- Aliases
 
@@ -51,15 +58,16 @@ object Servers {
 object Clients {
   val IoGrpc = IoGrpcJavaClientProvider
   object PekkoNetty {
-    val Java = PekkoNettyClientProviderJava$
+    val Java = new PekkoClientProviderJava("netty", false)
     val Scala = new PekkoClientProviderScala("netty", false)
     val ScalaWithSslContext = new PekkoClientProviderScala("netty", true)
+    val JavaWithSslContext = new PekkoClientProviderJava("netty", true)
   }
   object PekkoHttp {
-    // FIXME: let's have Scala stable and we'll do Java later.
-//    val Java = PekkoHttpClientProviderJava$
+    val Java = new PekkoClientProviderJava("pekko-http", false)
     val Scala = new PekkoClientProviderScala("pekko-http", false)
     val ScalaWithSslContext = new PekkoClientProviderScala("pekko-http", true)
+    val JavaWithSslContext = new PekkoClientProviderJava("pekko-http", true)
   }
 }
 
@@ -83,8 +91,9 @@ class PekkoClientProviderScala(backend: String, 
testWithSslContext: Boolean) ext
     implicit sys => new PekkoGrpcScalaClientTester(settings, backend, 
testWithSslContext))
 }
 
-object PekkoNettyClientProviderJava$ extends PekkoClientProvider {
+class PekkoClientProviderJava(backend: String, testWithSslContext: Boolean) 
extends PekkoClientProvider {
   val label: String = "pekko-grpc java client tester"
 
-  def client = new PekkoGrpcClientJava((settings, sys) => new 
PekkoGrpcJavaClientTester(settings, sys))
+  def client = new PekkoGrpcClientJava((settings, sys) =>
+    new PekkoGrpcJavaClientTester(settings, sys, backend, testWithSslContext))
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to