Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

enable GrpcInteropIoWithPekkoHttpJavaSpec to work #257

Merged
merged 3 commits into from
Apr 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,22 @@
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;
Expand All @@ -54,30 +60,48 @@
* 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);
}
Expand Down Expand Up @@ -196,7 +220,7 @@ public void serverStreaming() throws Exception {
.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())
Expand Down Expand Up @@ -349,7 +373,7 @@ public void customMetadata() throws Exception {
// 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")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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)
}
}

Expand All @@ -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))
}
Loading