From c2008311f13d954d70b1e4f405d8bd435d4486c9 Mon Sep 17 00:00:00 2001 From: jack-berg <34418638+jack-berg@users.noreply.github.com> Date: Thu, 30 Mar 2023 10:30:53 -0500 Subject: [PATCH] Expand otlp benchmark to include otlp http case (#5327) --- ...chmark.java => OltpExporterBenchmark.java} | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) rename exporters/otlp/all/src/jmh/java/io/opentelemetry/exporter/otlp/trace/{GrpcExporterBenchmark.java => OltpExporterBenchmark.java} (81%) diff --git a/exporters/otlp/all/src/jmh/java/io/opentelemetry/exporter/otlp/trace/GrpcExporterBenchmark.java b/exporters/otlp/all/src/jmh/java/io/opentelemetry/exporter/otlp/trace/OltpExporterBenchmark.java similarity index 81% rename from exporters/otlp/all/src/jmh/java/io/opentelemetry/exporter/otlp/trace/GrpcExporterBenchmark.java rename to exporters/otlp/all/src/jmh/java/io/opentelemetry/exporter/otlp/trace/OltpExporterBenchmark.java index 989e4b4da8..036e35409d 100644 --- a/exporters/otlp/all/src/jmh/java/io/opentelemetry/exporter/otlp/trace/GrpcExporterBenchmark.java +++ b/exporters/otlp/all/src/jmh/java/io/opentelemetry/exporter/otlp/trace/OltpExporterBenchmark.java @@ -5,12 +5,15 @@ package io.opentelemetry.exporter.otlp.trace; +import com.linecorp.armeria.common.HttpResponse; import com.linecorp.armeria.server.Server; import com.linecorp.armeria.server.grpc.GrpcService; import io.grpc.ManagedChannel; import io.grpc.ManagedChannelBuilder; import io.grpc.stub.StreamObserver; import io.opentelemetry.exporter.internal.grpc.GrpcExporter; +import io.opentelemetry.exporter.internal.okhttp.OkHttpExporter; +import io.opentelemetry.exporter.internal.okhttp.OkHttpExporterBuilder; import io.opentelemetry.exporter.internal.otlp.traces.TraceRequestMarshaler; import io.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest; import io.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse; @@ -37,7 +40,7 @@ import org.openjdk.jmh.annotations.Warmup; @Measurement(iterations = 20, time = 1) @Fork(1) @State(Scope.Benchmark) -public class GrpcExporterBenchmark { +public class OltpExporterBenchmark { private static final Server server = Server.builder() .service( @@ -53,6 +56,7 @@ public class GrpcExporterBenchmark { } }) .build()) + .service("/v1/traces", (ctx, req) -> HttpResponse.of(200)) .http(0) .build(); @@ -60,13 +64,16 @@ public class GrpcExporterBenchmark { private static GrpcExporter defaultGrpcExporter; private static GrpcExporter okhttpGrpcExporter; + private static OkHttpExporter httpExporter; @Setup(Level.Trial) public void setUp() { server.start().join(); defaultGrpcChannel = - ManagedChannelBuilder.forAddress("localhost", server.activeLocalPort()).build(); + ManagedChannelBuilder.forAddress("localhost", server.activeLocalPort()) + .usePlaintext() + .build(); defaultGrpcExporter = GrpcExporter.builder( "otlp", @@ -87,12 +94,18 @@ public class GrpcExporterBenchmark { () -> MarshalerTraceServiceGrpc::newFutureStub, OtlpGrpcSpanExporterBuilder.GRPC_ENDPOINT_PATH) .build(); + + httpExporter = + new OkHttpExporterBuilder( + "otlp", "span", "http://localhost:" + server.activeLocalPort() + "/v1/traces") + .build(); } @TearDown(Level.Trial) public void tearDown() { defaultGrpcExporter.shutdown().join(10, TimeUnit.SECONDS); okhttpGrpcExporter.shutdown().join(10, TimeUnit.SECONDS); + httpExporter.shutdown().join(10, TimeUnit.SECONDS); defaultGrpcChannel.shutdownNow(); server.stop().join(); } @@ -120,4 +133,14 @@ public class GrpcExporterBenchmark { } return result; } + + @Benchmark + public CompletableResultCode httpExporter(RequestMarshalState state) { + CompletableResultCode result = + httpExporter.export(state.traceRequestMarshaler, state.numSpans).join(10, TimeUnit.SECONDS); + if (!result.isSuccess()) { + throw new AssertionError(); + } + return result; + } }