Unify compression configuration for exporters (#4775)
* Fix handling of compressionMethod `none` in GrpcExporterBuilder * Fix handling of compressionMethod `none` in OkHttpExporterBuilder * Add compression configuration assertions to AbstractGrpcTelemetryExporterTest * Add compression configuration to JaegerGrpcSpanExporterBuilder * Add compression configuration to ZipkinSpanExporterBuilder * Specify that zipkin default compression is gzip Co-authored-by: Jack Berg <jberg@newrelic.com>
This commit is contained in:
parent
b6c58c5d90
commit
fa46f19d39
|
|
@ -1,2 +1,4 @@
|
|||
Comparing source compatibility of against
|
||||
No changes.
|
||||
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.jaeger.JaegerGrpcSpanExporterBuilder (not serializable)
|
||||
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
|
||||
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.jaeger.JaegerGrpcSpanExporterBuilder setCompression(java.lang.String)
|
||||
|
|
|
|||
|
|
@ -1,2 +1,4 @@
|
|||
Comparing source compatibility of against
|
||||
No changes.
|
||||
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.zipkin.ZipkinSpanExporterBuilder (not serializable)
|
||||
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
|
||||
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.zipkin.ZipkinSpanExporterBuilder setCompression(java.lang.String)
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ public class GrpcExporterBuilder<T extends Marshaler> {
|
|||
}
|
||||
|
||||
public GrpcExporterBuilder<T> setCompression(String compressionMethod) {
|
||||
this.compressionEnabled = true;
|
||||
this.compressionEnabled = compressionMethod.equals("gzip");
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -72,9 +72,7 @@ public final class OkHttpExporterBuilder<T extends Marshaler> {
|
|||
}
|
||||
|
||||
public OkHttpExporterBuilder<T> setCompression(String compressionMethod) {
|
||||
if (compressionMethod.equals("gzip")) {
|
||||
this.compressionEnabled = true;
|
||||
}
|
||||
this.compressionEnabled = compressionMethod.equals("gzip");
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,183 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.exporter.internal.grpc;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import com.google.common.util.concurrent.Futures;
|
||||
import com.google.common.util.concurrent.ListenableFuture;
|
||||
import io.grpc.CallOptions;
|
||||
import io.grpc.Channel;
|
||||
import io.grpc.Codec;
|
||||
import io.grpc.ManagedChannel;
|
||||
import io.opentelemetry.exporter.internal.marshal.Marshaler;
|
||||
import java.net.URI;
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.function.Supplier;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class GrpcExporterBuilderTest {
|
||||
|
||||
private final ManagedChannel channel = mock(ManagedChannel.class);
|
||||
|
||||
private GrpcExporterBuilder<Marshaler> builder;
|
||||
|
||||
@BeforeEach
|
||||
@SuppressWarnings("unchecked")
|
||||
void setUp() {
|
||||
Supplier<BiFunction<Channel, String, MarshalerServiceStub<Marshaler, ?, ?>>> grpcStubFactory =
|
||||
mock(Supplier.class);
|
||||
when(grpcStubFactory.get())
|
||||
.thenReturn((c, s) -> new TestMarshalerServiceStub(c, CallOptions.DEFAULT));
|
||||
|
||||
builder =
|
||||
GrpcExporter.builder(
|
||||
"otlp", "span", 0, URI.create("http://localhost:4317"), grpcStubFactory, "/test");
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionDefault() {
|
||||
GrpcExporter<Marshaler> exporter = builder.build();
|
||||
try {
|
||||
assertThat(exporter)
|
||||
.isInstanceOfSatisfying(
|
||||
OkHttpGrpcExporter.class,
|
||||
otlp -> assertThat(otlp).extracting("compressionEnabled").isEqualTo(false));
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionNone() {
|
||||
GrpcExporter<Marshaler> exporter = builder.setCompression("none").build();
|
||||
try {
|
||||
assertThat(exporter)
|
||||
.isInstanceOfSatisfying(
|
||||
OkHttpGrpcExporter.class,
|
||||
otlp -> assertThat(otlp).extracting("compressionEnabled").isEqualTo(false));
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionGzip() {
|
||||
GrpcExporter<Marshaler> exporter = builder.setCompression("gzip").build();
|
||||
try {
|
||||
assertThat(exporter)
|
||||
.isInstanceOfSatisfying(
|
||||
OkHttpGrpcExporter.class,
|
||||
otlp -> assertThat(otlp).extracting("compressionEnabled").isEqualTo(true));
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionEnabledAndDisabled() {
|
||||
GrpcExporter<Marshaler> exporter =
|
||||
builder.setCompression("gzip").setCompression("none").build();
|
||||
try {
|
||||
assertThat(exporter)
|
||||
.isInstanceOfSatisfying(
|
||||
OkHttpGrpcExporter.class,
|
||||
otlp -> assertThat(otlp).extracting("compressionEnabled").isEqualTo(false));
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionDefaultWithChannel() {
|
||||
GrpcExporter<Marshaler> exporter = builder.setChannel(channel).build();
|
||||
try {
|
||||
assertThat(exporter)
|
||||
.isInstanceOfSatisfying(
|
||||
UpstreamGrpcExporter.class,
|
||||
otlp ->
|
||||
assertThat(otlp)
|
||||
.extracting("stub")
|
||||
.extracting("callOptions.compressorName")
|
||||
.isEqualTo(Codec.Identity.NONE.getMessageEncoding()));
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionNoneWithChannel() {
|
||||
GrpcExporter<Marshaler> exporter = builder.setChannel(channel).setCompression("none").build();
|
||||
try {
|
||||
assertThat(exporter)
|
||||
.isInstanceOfSatisfying(
|
||||
UpstreamGrpcExporter.class,
|
||||
otlp ->
|
||||
assertThat(otlp)
|
||||
.extracting("stub")
|
||||
.extracting("callOptions.compressorName")
|
||||
.isEqualTo(Codec.Identity.NONE.getMessageEncoding()));
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionGzipWithChannel() {
|
||||
GrpcExporter<Marshaler> exporter = builder.setChannel(channel).setCompression("gzip").build();
|
||||
try {
|
||||
assertThat(exporter)
|
||||
.isInstanceOfSatisfying(
|
||||
UpstreamGrpcExporter.class,
|
||||
otlp ->
|
||||
assertThat(otlp)
|
||||
.extracting("stub")
|
||||
.extracting("callOptions.compressorName")
|
||||
.isEqualTo(new Codec.Gzip().getMessageEncoding()));
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionEnabledAndDisabledWithChannel() {
|
||||
GrpcExporter<Marshaler> exporter =
|
||||
builder.setChannel(channel).setCompression("gzip").setCompression("none").build();
|
||||
try {
|
||||
assertThat(exporter)
|
||||
.isInstanceOfSatisfying(
|
||||
UpstreamGrpcExporter.class,
|
||||
otlp ->
|
||||
assertThat(otlp)
|
||||
.extracting("stub")
|
||||
.extracting("callOptions.compressorName")
|
||||
.isEqualTo(Codec.Identity.NONE.getMessageEncoding()));
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
private final class TestMarshalerServiceStub
|
||||
extends MarshalerServiceStub<Marshaler, Void, TestMarshalerServiceStub> {
|
||||
|
||||
private TestMarshalerServiceStub(Channel channel, CallOptions callOptions) {
|
||||
super(channel, callOptions);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected TestMarshalerServiceStub build(Channel channel, CallOptions callOptions) {
|
||||
return new TestMarshalerServiceStub(channel, callOptions);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ListenableFuture<Void> export(Marshaler request) {
|
||||
return Futures.immediateVoidFuture();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
/*
|
||||
* Copyright The OpenTelemetry Authors
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
package io.opentelemetry.exporter.internal.okhttp;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import io.opentelemetry.exporter.internal.marshal.Marshaler;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
class OkHttpExporterBuilderTest {
|
||||
|
||||
private final OkHttpExporterBuilder<Marshaler> builder =
|
||||
new OkHttpExporterBuilder<>("otlp", "span", "http://localhost:4318/v1/traces");
|
||||
|
||||
@Test
|
||||
void compressionDefault() {
|
||||
OkHttpExporter<Marshaler> exporter = builder.build();
|
||||
try {
|
||||
assertThat(exporter)
|
||||
.isInstanceOfSatisfying(
|
||||
OkHttpExporter.class,
|
||||
otlp -> assertThat(otlp).extracting("compressionEnabled").isEqualTo(false));
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionNone() {
|
||||
OkHttpExporter<Marshaler> exporter = builder.setCompression("none").build();
|
||||
try {
|
||||
assertThat(exporter)
|
||||
.isInstanceOfSatisfying(
|
||||
OkHttpExporter.class,
|
||||
otlp -> assertThat(otlp).extracting("compressionEnabled").isEqualTo(false));
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionGzip() {
|
||||
OkHttpExporter<Marshaler> exporter = builder.setCompression("gzip").build();
|
||||
try {
|
||||
assertThat(exporter)
|
||||
.isInstanceOfSatisfying(
|
||||
OkHttpExporter.class,
|
||||
otlp -> assertThat(otlp).extracting("compressionEnabled").isEqualTo(true));
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionEnabledAndDisabled() {
|
||||
OkHttpExporter<Marshaler> exporter =
|
||||
builder.setCompression("gzip").setCompression("none").build();
|
||||
try {
|
||||
assertThat(exporter)
|
||||
.isInstanceOfSatisfying(
|
||||
OkHttpExporter.class,
|
||||
otlp -> assertThat(otlp).extracting("compressionEnabled").isEqualTo(false));
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -66,6 +66,19 @@ public final class JaegerGrpcSpanExporterBuilder {
|
|||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the method used to compress payloads. If unset, compression is disabled. Currently
|
||||
* supported compression methods include "gzip" and "none".
|
||||
*/
|
||||
public JaegerGrpcSpanExporterBuilder setCompression(String compressionMethod) {
|
||||
requireNonNull(compressionMethod, "compressionMethod");
|
||||
checkArgument(
|
||||
compressionMethod.equals("gzip") || compressionMethod.equals("none"),
|
||||
"Unsupported compression method. Supported compression methods include: gzip, none.");
|
||||
delegate.setCompression(compressionMethod);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the maximum time to wait for the collector to process an exported batch of spans. If
|
||||
* unset, defaults to {@value DEFAULT_TIMEOUT_SECS}s.
|
||||
|
|
|
|||
|
|
@ -357,6 +357,57 @@ class JaegerGrpcSpanExporterTest {
|
|||
assertThatThrownBy(() -> JaegerGrpcSpanExporter.builder().setEndpoint("gopher://localhost"))
|
||||
.isInstanceOf(IllegalArgumentException.class)
|
||||
.hasMessage("Invalid endpoint, must start with http:// or https://: gopher://localhost");
|
||||
|
||||
assertThatThrownBy(() -> JaegerGrpcSpanExporter.builder().setCompression(null))
|
||||
.isInstanceOf(NullPointerException.class)
|
||||
.hasMessage("compressionMethod");
|
||||
assertThatThrownBy(() -> JaegerGrpcSpanExporter.builder().setCompression("foo"))
|
||||
.isInstanceOf(IllegalArgumentException.class)
|
||||
.hasMessage(
|
||||
"Unsupported compression method. Supported compression methods include: gzip, none.");
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionDefault() {
|
||||
JaegerGrpcSpanExporter exporter = JaegerGrpcSpanExporter.builder().build();
|
||||
try {
|
||||
assertThat(exporter).extracting("delegate.compressionEnabled").isEqualTo(false);
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionNone() {
|
||||
JaegerGrpcSpanExporter exporter =
|
||||
JaegerGrpcSpanExporter.builder().setCompression("none").build();
|
||||
try {
|
||||
assertThat(exporter).extracting("delegate.compressionEnabled").isEqualTo(false);
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionGzip() {
|
||||
JaegerGrpcSpanExporter exporter =
|
||||
JaegerGrpcSpanExporter.builder().setCompression("gzip").build();
|
||||
try {
|
||||
assertThat(exporter).extracting("delegate.compressionEnabled").isEqualTo(true);
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionEnabledAndDisabled() {
|
||||
JaegerGrpcSpanExporter exporter =
|
||||
JaegerGrpcSpanExporter.builder().setCompression("gzip").setCompression("none").build();
|
||||
try {
|
||||
assertThat(exporter).extracting("delegate.compressionEnabled").isEqualTo(false);
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ package io.opentelemetry.exporter.otlp.testing.internal;
|
|||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatCode;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.assertj.core.api.Assumptions.assumeThat;
|
||||
import static org.junit.jupiter.api.Named.named;
|
||||
import static org.junit.jupiter.params.provider.Arguments.arguments;
|
||||
|
||||
|
|
@ -237,6 +238,28 @@ public abstract class AbstractGrpcTelemetryExporterTest<T, U extends Message> {
|
|||
assertThat(exportedResourceTelemetry).containsExactlyElementsOf(expectedResourceTelemetry);
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionWithNone() {
|
||||
TelemetryExporter<T> exporter =
|
||||
exporterBuilder().setEndpoint(server.httpUri().toString()).setCompression("none").build();
|
||||
// UpstreamGrpcExporter doesn't support compression, so we skip the assertion
|
||||
assumeThat(exporter.unwrap())
|
||||
.extracting("delegate")
|
||||
.isNotInstanceOf(UpstreamGrpcExporter.class);
|
||||
assertThat(exporter.unwrap()).extracting("delegate.compressionEnabled").isEqualTo(false);
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionWithGzip() {
|
||||
TelemetryExporter<T> exporter =
|
||||
exporterBuilder().setEndpoint(server.httpUri().toString()).setCompression("gzip").build();
|
||||
// UpstreamGrpcExporter doesn't support compression, so we skip the assertion
|
||||
assumeThat(exporter.unwrap())
|
||||
.extracting("delegate")
|
||||
.isNotInstanceOf(UpstreamGrpcExporter.class);
|
||||
assertThat(exporter.unwrap()).extracting("delegate.compressionEnabled").isEqualTo(true);
|
||||
}
|
||||
|
||||
@Test
|
||||
void authorityWithAuth() {
|
||||
TelemetryExporter<T> exporter =
|
||||
|
|
|
|||
|
|
@ -139,6 +139,11 @@ public final class ManagedChannelTelemetryExporterBuilder<T>
|
|||
delegate.setChannel(channel);
|
||||
TelemetryExporter<T> delegateExporter = delegate.build();
|
||||
return new TelemetryExporter<T>() {
|
||||
@Override
|
||||
public Object unwrap() {
|
||||
return delegateExporter.unwrap();
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableResultCode export(Collection<T> items) {
|
||||
return delegateExporter.export(items);
|
||||
|
|
|
|||
|
|
@ -19,6 +19,11 @@ public interface TelemetryExporter<T> {
|
|||
/** Wraps a SpanExporter. */
|
||||
static TelemetryExporter<SpanData> wrap(SpanExporter exporter) {
|
||||
return new TelemetryExporter<SpanData>() {
|
||||
@Override
|
||||
public Object unwrap() {
|
||||
return exporter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableResultCode export(Collection<SpanData> items) {
|
||||
return exporter.export(items);
|
||||
|
|
@ -34,6 +39,11 @@ public interface TelemetryExporter<T> {
|
|||
/** Wraps a MetricExporter. */
|
||||
static TelemetryExporter<MetricData> wrap(MetricExporter exporter) {
|
||||
return new TelemetryExporter<MetricData>() {
|
||||
@Override
|
||||
public Object unwrap() {
|
||||
return exporter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableResultCode export(Collection<MetricData> items) {
|
||||
return exporter.export(items);
|
||||
|
|
@ -49,6 +59,11 @@ public interface TelemetryExporter<T> {
|
|||
/** Wraps a LogRecordExporter. */
|
||||
static TelemetryExporter<LogRecordData> wrap(LogRecordExporter exporter) {
|
||||
return new TelemetryExporter<LogRecordData>() {
|
||||
@Override
|
||||
public Object unwrap() {
|
||||
return exporter;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableResultCode export(Collection<LogRecordData> items) {
|
||||
return exporter.export(items);
|
||||
|
|
@ -61,6 +76,8 @@ public interface TelemetryExporter<T> {
|
|||
};
|
||||
}
|
||||
|
||||
Object unwrap();
|
||||
|
||||
CompletableResultCode export(Collection<T> items);
|
||||
|
||||
CompletableResultCode shutdown();
|
||||
|
|
|
|||
|
|
@ -26,11 +26,14 @@ public final class ZipkinSpanExporterBuilder {
|
|||
private Supplier<InetAddress> localIpAddressSupplier = LocalInetAddressSupplier.getInstance();
|
||||
@Nullable private Sender sender;
|
||||
private String endpoint = ZipkinSpanExporter.DEFAULT_ENDPOINT;
|
||||
// compression is enabled by default, because this is the default of OkHttpSender,
|
||||
// which is created when no custom sender is set (see OkHttpSender.Builder)
|
||||
private boolean compressionEnabled = true;
|
||||
private long readTimeoutMillis = TimeUnit.SECONDS.toMillis(10);
|
||||
private MeterProvider meterProvider = MeterProvider.noop();
|
||||
|
||||
/**
|
||||
* Sets the Zipkin sender. Implements the client side of the span transport. A {@link
|
||||
* Sets the Zipkin sender. Implements the client side of the span transport. An {@link
|
||||
* OkHttpSender} is a good default.
|
||||
*
|
||||
* <p>The {@link Sender#close()} method will be called when the exporter is shut down.
|
||||
|
|
@ -75,7 +78,7 @@ public final class ZipkinSpanExporterBuilder {
|
|||
}
|
||||
|
||||
/**
|
||||
* Sets the zipkin endpoint. This will use the endpoint to assign a {@link OkHttpSender} instance
|
||||
* Sets the zipkin endpoint. This will use the endpoint to assign an {@link OkHttpSender} instance
|
||||
* to this builder.
|
||||
*
|
||||
* @param endpoint The Zipkin endpoint URL, ex. "http://zipkinhost:9411/api/v2/spans".
|
||||
|
|
@ -88,6 +91,26 @@ public final class ZipkinSpanExporterBuilder {
|
|||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the method used to compress payloads. If unset, gzip compression is enabled. Currently
|
||||
* supported compression methods include "gzip" and "none".
|
||||
*
|
||||
* <p>The compression method is ignored when a custom Zipkin sender is set via {@link
|
||||
* #setSender(Sender)}.
|
||||
*
|
||||
* @param compressionMethod The compression method, ex. "gzip".
|
||||
* @return this.
|
||||
* @see OkHttpSender
|
||||
*/
|
||||
public ZipkinSpanExporterBuilder setCompression(String compressionMethod) {
|
||||
requireNonNull(compressionMethod, "compressionMethod");
|
||||
checkArgument(
|
||||
compressionMethod.equals("gzip") || compressionMethod.equals("none"),
|
||||
"Unsupported compression method. Supported compression methods include: gzip, none.");
|
||||
this.compressionEnabled = compressionMethod.equals("gzip");
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the maximum time to wait for the export of a batch of spans. If unset, defaults to 10s.
|
||||
*
|
||||
|
|
@ -135,7 +158,11 @@ public final class ZipkinSpanExporterBuilder {
|
|||
Sender sender = this.sender;
|
||||
if (sender == null) {
|
||||
sender =
|
||||
OkHttpSender.newBuilder().endpoint(endpoint).readTimeout((int) readTimeoutMillis).build();
|
||||
OkHttpSender.newBuilder()
|
||||
.endpoint(endpoint)
|
||||
.compressionEnabled(compressionEnabled)
|
||||
.readTimeout((int) readTimeoutMillis)
|
||||
.build();
|
||||
}
|
||||
OtelToZipkinSpanTransformer transformer =
|
||||
OtelToZipkinSpanTransformer.create(localIpAddressSupplier);
|
||||
|
|
|
|||
|
|
@ -136,6 +136,10 @@ class ZipkinSpanExporterTest {
|
|||
.isInstanceOf(NullPointerException.class)
|
||||
.hasMessage("endpoint");
|
||||
|
||||
assertThatThrownBy(() -> ZipkinSpanExporter.builder().setCompression(null))
|
||||
.isInstanceOf(NullPointerException.class)
|
||||
.hasMessage("compressionMethod");
|
||||
|
||||
assertThatThrownBy(() -> ZipkinSpanExporter.builder().setSender(null))
|
||||
.isInstanceOf(NullPointerException.class)
|
||||
.hasMessage("sender");
|
||||
|
|
@ -144,4 +148,45 @@ class ZipkinSpanExporterTest {
|
|||
.isInstanceOf(NullPointerException.class)
|
||||
.hasMessage("encoder");
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionDefault() {
|
||||
ZipkinSpanExporter exporter = ZipkinSpanExporter.builder().build();
|
||||
try {
|
||||
assertThat(exporter).extracting("sender.compressionEnabled").isEqualTo(true);
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionNone() {
|
||||
ZipkinSpanExporter exporter = ZipkinSpanExporter.builder().setCompression("none").build();
|
||||
try {
|
||||
assertThat(exporter).extracting("sender.compressionEnabled").isEqualTo(false);
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionGzip() {
|
||||
ZipkinSpanExporter exporter = ZipkinSpanExporter.builder().setCompression("gzip").build();
|
||||
try {
|
||||
assertThat(exporter).extracting("sender.compressionEnabled").isEqualTo(true);
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void compressionEnabledAndDisabled() {
|
||||
ZipkinSpanExporter exporter =
|
||||
ZipkinSpanExporter.builder().setCompression("gzip").setCompression("none").build();
|
||||
try {
|
||||
assertThat(exporter).extracting("sender.compressionEnabled").isEqualTo(false);
|
||||
} finally {
|
||||
exporter.shutdown();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue