Skip to content

Commit

Permalink
Add compression for Jaeger and Zipkin to autoconfigure
Browse files Browse the repository at this point in the history
  • Loading branch information
Donnerbart committed Oct 4, 2022
1 parent 15b5078 commit c0c1b1f
Show file tree
Hide file tree
Showing 4 changed files with 361 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,11 @@ private static SpanExporter configureJaeger(
builder.setEndpoint(endpoint);
}

String compression = config.getString("otel.exporter.jaeger.compression");
if (compression != null) {
builder.setCompression(compression);
}

Duration timeout = config.getDuration("otel.exporter.jaeger.timeout");
if (timeout != null) {
builder.setTimeout(timeout);
Expand All @@ -192,6 +197,11 @@ private static SpanExporter configureZipkin(ConfigProperties config) {
builder.setEndpoint(endpoint);
}

String compression = config.getString("otel.exporter.zipkin.compression");
if (compression != null) {
builder.setCompression(compression);
}

Duration timeout = config.getDuration("otel.exporter.zipkin.timeout");
if (timeout != null) {
builder.setReadTimeout(timeout);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.sdk.autoconfigure;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;

import com.google.common.collect.ImmutableMap;
import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogExporter;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
import io.opentelemetry.sdk.logs.export.LogExporter;
import java.util.Collections;
import org.junit.jupiter.api.Test;

public class LogExporterConfigurationTest {

@Test
void configureOtlpLogsUnsupportedProtocol() {
assertThatThrownBy(
() ->
LogExporterConfiguration.configureOtlpLogs(
DefaultConfigProperties.createForTest(
ImmutableMap.of("otel.exporter.otlp.protocol", "foo")),
MeterProvider.noop()))
.isInstanceOf(ConfigurationException.class)
.hasMessageContaining("Unsupported OTLP logs protocol: foo");
}

@Test
void configureOtlpLogsCompressionNone() {
LogExporter exporter =
LogExporterConfiguration.configureOtlpLogs(
DefaultConfigProperties.createForTest(
Collections.singletonMap("otel.exporter.otlp.logs.compression", "none")),
MeterProvider.noop());
try {
assertThat(exporter)
.isInstanceOfSatisfying(
OtlpGrpcLogExporter.class,
otlp -> assertThat(otlp).extracting("delegate.compressionEnabled").isEqualTo(false));
} finally {
exporter.shutdown();
}
}

@Test
void configureOtlpLogsCompressionGzip() {
LogExporter exporter =
LogExporterConfiguration.configureOtlpLogs(
DefaultConfigProperties.createForTest(
Collections.singletonMap("otel.exporter.otlp.logs.compression", "gzip")),
MeterProvider.noop());
try {
assertThat(exporter)
.isInstanceOfSatisfying(
OtlpGrpcLogExporter.class,
otlp -> assertThat(otlp).extracting("delegate.compressionEnabled").isEqualTo(true));
} finally {
exporter.shutdown();
}
}

@Test
void configureOtlpGlobalCompressionNone() {
LogExporter exporter =
LogExporterConfiguration.configureOtlpLogs(
DefaultConfigProperties.createForTest(
Collections.singletonMap("otel.exporter.otlp.compression", "none")),
MeterProvider.noop());
try {
assertThat(exporter)
.isInstanceOfSatisfying(
OtlpGrpcLogExporter.class,
otlp -> assertThat(otlp).extracting("delegate.compressionEnabled").isEqualTo(false));
} finally {
exporter.shutdown();
}
}

@Test
void configureOtlpGlobalCompressionGzip() {
LogExporter exporter =
LogExporterConfiguration.configureOtlpLogs(
DefaultConfigProperties.createForTest(
Collections.singletonMap("otel.exporter.otlp.compression", "gzip")),
MeterProvider.noop());
try {
assertThat(exporter)
.isInstanceOfSatisfying(
OtlpGrpcLogExporter.class,
otlp -> assertThat(otlp).extracting("delegate.compressionEnabled").isEqualTo(true));
} finally {
exporter.shutdown();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,14 @@

package io.opentelemetry.sdk.autoconfigure;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;

import com.google.common.collect.ImmutableMap;
import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
import io.opentelemetry.sdk.metrics.export.MetricExporter;
import java.util.Collections;
import org.junit.jupiter.api.Test;

public class MetricExporterConfigurationTest {
Expand All @@ -23,4 +27,68 @@ void configureOtlpMetricsUnsupportedProtocol() {
.isInstanceOf(ConfigurationException.class)
.hasMessageContaining("Unsupported OTLP metrics protocol: foo");
}

@Test
void configureOtlpMetricsCompressionNone() {
MetricExporter exporter =
MetricExporterConfiguration.configureOtlpMetrics(
DefaultConfigProperties.createForTest(
Collections.singletonMap("otel.exporter.otlp.metrics.compression", "none")));
try {
assertThat(exporter)
.isInstanceOfSatisfying(
OtlpGrpcMetricExporter.class,
otlp -> assertThat(otlp).extracting("delegate.compressionEnabled").isEqualTo(false));
} finally {
exporter.shutdown();
}
}

@Test
void configureOtlpMetricsCompressionGzip() {
MetricExporter exporter =
MetricExporterConfiguration.configureOtlpMetrics(
DefaultConfigProperties.createForTest(
Collections.singletonMap("otel.exporter.otlp.metrics.compression", "gzip")));
try {
assertThat(exporter)
.isInstanceOfSatisfying(
OtlpGrpcMetricExporter.class,
otlp -> assertThat(otlp).extracting("delegate.compressionEnabled").isEqualTo(true));
} finally {
exporter.shutdown();
}
}

@Test
void configureOtlpGlobalCompressionNone() {
MetricExporter exporter =
MetricExporterConfiguration.configureOtlpMetrics(
DefaultConfigProperties.createForTest(
Collections.singletonMap("otel.exporter.otlp.compression", "none")));
try {
assertThat(exporter)
.isInstanceOfSatisfying(
OtlpGrpcMetricExporter.class,
otlp -> assertThat(otlp).extracting("delegate.compressionEnabled").isEqualTo(false));
} finally {
exporter.shutdown();
}
}

@Test
void configureOtlpGlobalCompressionGzip() {
MetricExporter exporter =
MetricExporterConfiguration.configureOtlpMetrics(
DefaultConfigProperties.createForTest(
Collections.singletonMap("otel.exporter.otlp.compression", "gzip")));
try {
assertThat(exporter)
.isInstanceOfSatisfying(
OtlpGrpcMetricExporter.class,
otlp -> assertThat(otlp).extracting("delegate.compressionEnabled").isEqualTo(true));
} finally {
exporter.shutdown();
}
}
}

0 comments on commit c0c1b1f

Please sign in to comment.