Move autoconfigure exporter tests (#5051)
* Move SPI logging-otlp tests to :exporters:logging-otlp * Move SPI zipkin tests to :exporters:zipkin * Move SPI jaeger tests to :exporters:jaeger * Spotless
This commit is contained in:
parent
2fbdd94a33
commit
7f0889a6a3
|
|
@ -0,0 +1,67 @@
|
||||||
|
/*
|
||||||
|
* Copyright The OpenTelemetry Authors
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.opentelemetry.exporter.jaeger.internal;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
import io.opentelemetry.exporter.jaeger.JaegerGrpcSpanExporter;
|
||||||
|
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
|
||||||
|
import io.opentelemetry.sdk.trace.export.SpanExporter;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import okhttp3.HttpUrl;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
class JaegerGrpcSpanExporterProviderTest {
|
||||||
|
|
||||||
|
private static final JaegerGrpcSpanExporterProvider provider =
|
||||||
|
new JaegerGrpcSpanExporterProvider();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getName() {
|
||||||
|
assertThat(provider.getName()).isEqualTo("jaeger");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void createExporter_Default() {
|
||||||
|
try (SpanExporter spanExporter =
|
||||||
|
provider.createExporter(DefaultConfigProperties.createForTest(Collections.emptyMap()))) {
|
||||||
|
assertThat(spanExporter).isInstanceOf(JaegerGrpcSpanExporter.class);
|
||||||
|
assertThat(spanExporter)
|
||||||
|
.extracting("delegate")
|
||||||
|
.extracting("client")
|
||||||
|
.extracting("callTimeoutMillis")
|
||||||
|
.isEqualTo(10000);
|
||||||
|
assertThat(spanExporter)
|
||||||
|
.extracting("delegate")
|
||||||
|
.extracting("url")
|
||||||
|
.isEqualTo(
|
||||||
|
HttpUrl.get("http://localhost:14250/jaeger.api_v2.CollectorService/PostSpans"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void createExporter_WithConfiguration() {
|
||||||
|
Map<String, String> config = new HashMap<>();
|
||||||
|
config.put("otel.exporter.jaeger.endpoint", "http://endpoint:8080");
|
||||||
|
config.put("otel.exporter.jaeger.timeout", "1s");
|
||||||
|
|
||||||
|
try (SpanExporter spanExporter =
|
||||||
|
provider.createExporter(DefaultConfigProperties.createForTest(config))) {
|
||||||
|
assertThat(spanExporter).isInstanceOf(JaegerGrpcSpanExporter.class);
|
||||||
|
assertThat(spanExporter)
|
||||||
|
.extracting("delegate")
|
||||||
|
.extracting("client")
|
||||||
|
.extracting("callTimeoutMillis")
|
||||||
|
.isEqualTo(1000);
|
||||||
|
assertThat(spanExporter)
|
||||||
|
.extracting("delegate")
|
||||||
|
.extracting("url")
|
||||||
|
.isEqualTo(HttpUrl.get("http://endpoint:8080/jaeger.api_v2.CollectorService/PostSpans"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
/*
|
||||||
|
* Copyright The OpenTelemetry Authors
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.opentelemetry.exporter.logging.otlp.internal;
|
||||||
|
|
||||||
|
import static io.opentelemetry.sdk.testing.assertj.LogAssertions.assertThat;
|
||||||
|
|
||||||
|
import io.opentelemetry.exporter.logging.otlp.OtlpJsonLoggingLogRecordExporter;
|
||||||
|
import io.opentelemetry.exporter.logging.otlp.OtlpJsonLoggingMetricExporter;
|
||||||
|
import io.opentelemetry.exporter.logging.otlp.OtlpJsonLoggingSpanExporter;
|
||||||
|
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
|
||||||
|
import java.util.Collections;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
class LoggingExporterProviderTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void logRecordExporterProvider() {
|
||||||
|
LoggingLogRecordExporterProvider provider = new LoggingLogRecordExporterProvider();
|
||||||
|
assertThat(provider.getName()).isEqualTo("logging-otlp");
|
||||||
|
assertThat(
|
||||||
|
provider.createExporter(DefaultConfigProperties.createForTest(Collections.emptyMap())))
|
||||||
|
.isInstanceOf(OtlpJsonLoggingLogRecordExporter.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void metricExporterProvider() {
|
||||||
|
LoggingMetricExporterProvider provider = new LoggingMetricExporterProvider();
|
||||||
|
assertThat(provider.getName()).isEqualTo("logging-otlp");
|
||||||
|
assertThat(
|
||||||
|
provider.createExporter(DefaultConfigProperties.createForTest(Collections.emptyMap())))
|
||||||
|
.isInstanceOf(OtlpJsonLoggingMetricExporter.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void spanExporterProvider() {
|
||||||
|
LoggingSpanExporterProvider provider = new LoggingSpanExporterProvider();
|
||||||
|
assertThat(provider.getName()).isEqualTo("logging-otlp");
|
||||||
|
assertThat(
|
||||||
|
provider.createExporter(DefaultConfigProperties.createForTest(Collections.emptyMap())))
|
||||||
|
.isInstanceOf(OtlpJsonLoggingSpanExporter.class);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,65 @@
|
||||||
|
/*
|
||||||
|
* Copyright The OpenTelemetry Authors
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.opentelemetry.exporter.zipkin.internal;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
import io.opentelemetry.exporter.zipkin.ZipkinSpanExporter;
|
||||||
|
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
|
||||||
|
import io.opentelemetry.sdk.trace.export.SpanExporter;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import okhttp3.HttpUrl;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
class ZipkinSpanExporterProviderTest {
|
||||||
|
|
||||||
|
private static final ZipkinSpanExporterProvider provider = new ZipkinSpanExporterProvider();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getName() {
|
||||||
|
assertThat(provider.getName()).isEqualTo("zipkin");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void createExporter_Default() {
|
||||||
|
try (SpanExporter spanExporter =
|
||||||
|
provider.createExporter(DefaultConfigProperties.createForTest(Collections.emptyMap()))) {
|
||||||
|
assertThat(spanExporter).isInstanceOf(ZipkinSpanExporter.class);
|
||||||
|
assertThat(spanExporter)
|
||||||
|
.extracting("sender")
|
||||||
|
.extracting("client")
|
||||||
|
.extracting("readTimeoutMillis")
|
||||||
|
.isEqualTo(10_000);
|
||||||
|
assertThat(spanExporter)
|
||||||
|
.extracting("sender")
|
||||||
|
.extracting("endpoint")
|
||||||
|
.isEqualTo(HttpUrl.get("http://localhost:9411/api/v2/spans"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void createExporter_WithConfiguration() {
|
||||||
|
Map<String, String> config = new HashMap<>();
|
||||||
|
config.put("otel.exporter.zipkin.endpoint", "http://localhost:8080/spans");
|
||||||
|
config.put("otel.exporter.zipkin.timeout", "1s");
|
||||||
|
|
||||||
|
try (SpanExporter spanExporter =
|
||||||
|
provider.createExporter(DefaultConfigProperties.createForTest(config))) {
|
||||||
|
assertThat(spanExporter).isInstanceOf(ZipkinSpanExporter.class);
|
||||||
|
assertThat(spanExporter)
|
||||||
|
.extracting("sender")
|
||||||
|
.extracting("client")
|
||||||
|
.extracting("readTimeoutMillis")
|
||||||
|
.isEqualTo(1000);
|
||||||
|
assertThat(spanExporter)
|
||||||
|
.extracting("sender")
|
||||||
|
.extracting("endpoint")
|
||||||
|
.isEqualTo(HttpUrl.get("http://localhost:8080/spans"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package io.opentelemetry.sdk.autoconfigure;
|
package io.opentelemetry.sdk.autoconfigure.spi.internal;
|
||||||
|
|
||||||
import static java.util.Collections.emptyList;
|
import static java.util.Collections.emptyList;
|
||||||
import static java.util.Collections.emptyMap;
|
import static java.util.Collections.emptyMap;
|
||||||
|
|
@ -13,7 +13,6 @@ import static org.assertj.core.api.Assertions.entry;
|
||||||
|
|
||||||
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
|
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
|
||||||
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
|
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
|
||||||
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
@ -69,6 +69,7 @@ testing {
|
||||||
implementation(project(":extensions:trace-propagators"))
|
implementation(project(":extensions:trace-propagators"))
|
||||||
implementation(project(":exporters:jaeger"))
|
implementation(project(":exporters:jaeger"))
|
||||||
implementation(project(":exporters:logging"))
|
implementation(project(":exporters:logging"))
|
||||||
|
implementation(project(":exporters:logging-otlp"))
|
||||||
implementation(project(":exporters:otlp:all"))
|
implementation(project(":exporters:otlp:all"))
|
||||||
implementation(project(":exporters:otlp:logs"))
|
implementation(project(":exporters:otlp:logs"))
|
||||||
implementation(project(":exporters:otlp:common"))
|
implementation(project(":exporters:otlp:common"))
|
||||||
|
|
@ -112,32 +113,6 @@ testing {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val testJaeger by registering(JvmTestSuite::class) {
|
|
||||||
dependencies {
|
|
||||||
implementation(project(":exporters:jaeger"))
|
|
||||||
implementation(project(":exporters:jaeger-proto"))
|
|
||||||
|
|
||||||
implementation("com.linecorp.armeria:armeria-junit5")
|
|
||||||
implementation("com.linecorp.armeria:armeria-grpc")
|
|
||||||
runtimeOnly("io.grpc:grpc-netty-shaded")
|
|
||||||
}
|
|
||||||
|
|
||||||
targets {
|
|
||||||
all {
|
|
||||||
testTask {
|
|
||||||
environment("OTEL_METRICS_EXPORTER", "none")
|
|
||||||
environment("OTEL_TRACES_EXPORTER", "jaeger")
|
|
||||||
environment("OTEL_BSP_SCHEDULE_DELAY", "10")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
val testLoggingOtlp by registering(JvmTestSuite::class) {
|
|
||||||
dependencies {
|
|
||||||
implementation(project(":exporters:logging-otlp"))
|
|
||||||
implementation("com.google.guava:guava")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
val testOtlp by registering(JvmTestSuite::class) {
|
val testOtlp by registering(JvmTestSuite::class) {
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation(project(":exporters:otlp:all"))
|
implementation(project(":exporters:otlp:all"))
|
||||||
|
|
@ -171,23 +146,6 @@ testing {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
val testZipkin by registering(JvmTestSuite::class) {
|
|
||||||
dependencies {
|
|
||||||
implementation(project(":exporters:zipkin"))
|
|
||||||
|
|
||||||
implementation("com.linecorp.armeria:armeria-junit5")
|
|
||||||
}
|
|
||||||
|
|
||||||
targets {
|
|
||||||
all {
|
|
||||||
testTask {
|
|
||||||
environment("OTEL_METRICS_EXPORTER", "none")
|
|
||||||
environment("OTEL_TRACES_EXPORTER", "zipkin")
|
|
||||||
environment("OTEL_BSP_SCHEDULE_DELAY", "10")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ class LogRecordExporterConfiguration {
|
||||||
EXPORTER_ARTIFACT_ID_BY_NAME = new HashMap<>();
|
EXPORTER_ARTIFACT_ID_BY_NAME = new HashMap<>();
|
||||||
EXPORTER_ARTIFACT_ID_BY_NAME.put("logging", "opentelemetry-exporter-logging");
|
EXPORTER_ARTIFACT_ID_BY_NAME.put("logging", "opentelemetry-exporter-logging");
|
||||||
EXPORTER_ARTIFACT_ID_BY_NAME.put("logging-otlp", "opentelemetry-exporter-logging-otlp");
|
EXPORTER_ARTIFACT_ID_BY_NAME.put("logging-otlp", "opentelemetry-exporter-logging-otlp");
|
||||||
EXPORTER_ARTIFACT_ID_BY_NAME.put("otlp", "opentelemetry-exporter-otlp");
|
EXPORTER_ARTIFACT_ID_BY_NAME.put("otlp", "opentelemetry-exporter-otlp-logs");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Visible for test
|
// Visible for test
|
||||||
|
|
|
||||||
|
|
@ -5,16 +5,47 @@
|
||||||
|
|
||||||
package io.opentelemetry.sdk.autoconfigure;
|
package io.opentelemetry.sdk.autoconfigure;
|
||||||
|
|
||||||
|
import static io.opentelemetry.sdk.autoconfigure.LogRecordExporterConfiguration.configureExporter;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
|
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
|
||||||
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
|
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
|
||||||
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
|
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
|
||||||
|
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
|
||||||
|
import java.util.Collections;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
class LogRecordExporterConfigurationTest {
|
class LogRecordExporterConfigurationTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void configureExporter_KnownSpiExportersNotOnClasspath() {
|
||||||
|
NamedSpiManager<LogRecordExporter> spiExportersManager =
|
||||||
|
LogRecordExporterConfiguration.logRecordExporterSpiManager(
|
||||||
|
DefaultConfigProperties.createForTest(Collections.emptyMap()),
|
||||||
|
LogRecordExporterConfigurationTest.class.getClassLoader());
|
||||||
|
|
||||||
|
assertThatThrownBy(() -> configureExporter("logging", spiExportersManager))
|
||||||
|
.isInstanceOf(ConfigurationException.class)
|
||||||
|
.hasMessage(
|
||||||
|
"otel.logs.exporter set to \"logging\" but opentelemetry-exporter-logging"
|
||||||
|
+ " not found on classpath. Make sure to add it as a dependency.");
|
||||||
|
assertThatThrownBy(() -> configureExporter("logging-otlp", spiExportersManager))
|
||||||
|
.isInstanceOf(ConfigurationException.class)
|
||||||
|
.hasMessage(
|
||||||
|
"otel.logs.exporter set to \"logging-otlp\" but opentelemetry-exporter-logging-otlp"
|
||||||
|
+ " not found on classpath. Make sure to add it as a dependency.");
|
||||||
|
assertThatThrownBy(() -> configureExporter("otlp", spiExportersManager))
|
||||||
|
.isInstanceOf(ConfigurationException.class)
|
||||||
|
.hasMessage(
|
||||||
|
"otel.logs.exporter set to \"otlp\" but opentelemetry-exporter-otlp-logs"
|
||||||
|
+ " not found on classpath. Make sure to add it as a dependency.");
|
||||||
|
|
||||||
|
// Unrecognized exporter
|
||||||
|
assertThatThrownBy(() -> configureExporter("foo", spiExportersManager))
|
||||||
|
.hasMessage("Unrecognized value for otel.logs.exporter: foo");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void configureLogRecordExporters_duplicates() {
|
void configureLogRecordExporters_duplicates() {
|
||||||
ConfigProperties config =
|
ConfigProperties config =
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,64 @@
|
||||||
|
/*
|
||||||
|
* Copyright The OpenTelemetry Authors
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.opentelemetry.sdk.autoconfigure;
|
||||||
|
|
||||||
|
import static io.opentelemetry.sdk.autoconfigure.MetricExporterConfiguration.configureExporter;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
|
|
||||||
|
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
|
||||||
|
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
|
||||||
|
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
|
||||||
|
import io.opentelemetry.sdk.metrics.export.MetricExporter;
|
||||||
|
import java.util.Collections;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
class MetricExporterConfigurationTest {
|
||||||
|
|
||||||
|
private static final ConfigProperties EMPTY =
|
||||||
|
DefaultConfigProperties.createForTest(Collections.emptyMap());
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void configureExporter_KnownSpiExportersNotOnClasspath() {
|
||||||
|
NamedSpiManager<MetricExporter> spiExportersManager =
|
||||||
|
MetricExporterConfiguration.metricExporterSpiManager(
|
||||||
|
EMPTY, MetricExporterConfigurationTest.class.getClassLoader());
|
||||||
|
|
||||||
|
assertThatThrownBy(() -> configureExporter("logging", spiExportersManager))
|
||||||
|
.isInstanceOf(ConfigurationException.class)
|
||||||
|
.hasMessage(
|
||||||
|
"otel.metrics.exporter set to \"logging\" but opentelemetry-exporter-logging"
|
||||||
|
+ " not found on classpath. Make sure to add it as a dependency.");
|
||||||
|
assertThatThrownBy(() -> configureExporter("logging-otlp", spiExportersManager))
|
||||||
|
.isInstanceOf(ConfigurationException.class)
|
||||||
|
.hasMessage(
|
||||||
|
"otel.metrics.exporter set to \"logging-otlp\" but opentelemetry-exporter-logging-otlp"
|
||||||
|
+ " not found on classpath. Make sure to add it as a dependency.");
|
||||||
|
assertThatThrownBy(() -> configureExporter("otlp", spiExportersManager))
|
||||||
|
.isInstanceOf(ConfigurationException.class)
|
||||||
|
.hasMessage(
|
||||||
|
"otel.metrics.exporter set to \"otlp\" but opentelemetry-exporter-otlp"
|
||||||
|
+ " not found on classpath. Make sure to add it as a dependency.");
|
||||||
|
|
||||||
|
// Unrecognized exporter
|
||||||
|
assertThatThrownBy(() -> configureExporter("foo", spiExportersManager))
|
||||||
|
.hasMessage("Unrecognized value for otel.metrics.exporter: foo");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void configureReader_Prometheus() {
|
||||||
|
assertThatThrownBy(
|
||||||
|
() ->
|
||||||
|
MetricExporterConfiguration.configureReader(
|
||||||
|
"prometheus",
|
||||||
|
EMPTY,
|
||||||
|
MetricExporterConfigurationTest.class.getClassLoader(),
|
||||||
|
(a, unused) -> a))
|
||||||
|
.isInstanceOf(ConfigurationException.class)
|
||||||
|
.hasMessageContaining(
|
||||||
|
"Prometheus Metrics Server enabled but opentelemetry-exporter-prometheus not found on "
|
||||||
|
+ "classpath");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,184 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright The OpenTelemetry Authors
|
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
|
||||||
*/
|
|
||||||
|
|
||||||
package io.opentelemetry.sdk.autoconfigure;
|
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThatCode;
|
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
|
||||||
|
|
||||||
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
|
|
||||||
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
|
|
||||||
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
|
|
||||||
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
|
|
||||||
import io.opentelemetry.sdk.metrics.export.MetricExporter;
|
|
||||||
import io.opentelemetry.sdk.trace.export.SpanExporter;
|
|
||||||
import java.util.Collections;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
|
|
||||||
class NotOnClasspathTest {
|
|
||||||
|
|
||||||
private static final ConfigProperties EMPTY =
|
|
||||||
DefaultConfigProperties.createForTest(Collections.emptyMap());
|
|
||||||
private static final NamedSpiManager<SpanExporter> SPAN_EXPORTER_SPI_MANAGER =
|
|
||||||
SpanExporterConfiguration.spanExporterSpiManager(
|
|
||||||
EMPTY, NotOnClasspathTest.class.getClassLoader());
|
|
||||||
private static final NamedSpiManager<MetricExporter> METRIC_EXPORTER_SPI_MANAGER =
|
|
||||||
MetricExporterConfiguration.metricExporterSpiManager(
|
|
||||||
EMPTY, NotOnClasspathTest.class.getClassLoader());
|
|
||||||
private static final NamedSpiManager<LogRecordExporter> LOG_RECORD_EXPORTER_SPI_MANAGER =
|
|
||||||
LogRecordExporterConfiguration.logRecordExporterSpiManager(
|
|
||||||
EMPTY, NotOnClasspathTest.class.getClassLoader());
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void otlpSpans() {
|
|
||||||
assertThatThrownBy(
|
|
||||||
() -> SpanExporterConfiguration.configureExporter("otlp", SPAN_EXPORTER_SPI_MANAGER))
|
|
||||||
.isInstanceOf(ConfigurationException.class)
|
|
||||||
.hasMessageContaining(
|
|
||||||
"otel.traces.exporter set to \"otlp\" but opentelemetry-exporter-otlp not found on classpath."
|
|
||||||
+ " Make sure to add it as a dependency.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void jaeger() {
|
|
||||||
assertThatThrownBy(
|
|
||||||
() -> SpanExporterConfiguration.configureExporter("jaeger", SPAN_EXPORTER_SPI_MANAGER))
|
|
||||||
.isInstanceOf(ConfigurationException.class)
|
|
||||||
.hasMessageContaining(
|
|
||||||
"otel.traces.exporter set to \"jaeger\" but opentelemetry-exporter-jaeger not found on classpath."
|
|
||||||
+ " Make sure to add it as a dependency.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void zipkin() {
|
|
||||||
assertThatThrownBy(
|
|
||||||
() -> SpanExporterConfiguration.configureExporter("zipkin", SPAN_EXPORTER_SPI_MANAGER))
|
|
||||||
.isInstanceOf(ConfigurationException.class)
|
|
||||||
.hasMessageContaining(
|
|
||||||
"otel.traces.exporter set to \"zipkin\" but opentelemetry-exporter-zipkin not found on classpath."
|
|
||||||
+ " Make sure to add it as a dependency.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void loggingSpans() {
|
|
||||||
assertThatThrownBy(
|
|
||||||
() -> SpanExporterConfiguration.configureExporter("logging", SPAN_EXPORTER_SPI_MANAGER))
|
|
||||||
.isInstanceOf(ConfigurationException.class)
|
|
||||||
.hasMessageContaining(
|
|
||||||
"otel.traces.exporter set to \"logging\" but opentelemetry-exporter-logging not found on classpath."
|
|
||||||
+ " Make sure to add it as a dependency.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void loggingSpansOtlp() {
|
|
||||||
assertThatThrownBy(
|
|
||||||
() ->
|
|
||||||
SpanExporterConfiguration.configureExporter(
|
|
||||||
"logging-otlp", SPAN_EXPORTER_SPI_MANAGER))
|
|
||||||
.isInstanceOf(ConfigurationException.class)
|
|
||||||
.hasMessageContaining(
|
|
||||||
"otel.traces.exporter set to \"logging-otlp\" but opentelemetry-exporter-logging-otlp not found on classpath."
|
|
||||||
+ " Make sure to add it as a dependency.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void loggingMetrics() {
|
|
||||||
assertThatThrownBy(
|
|
||||||
() ->
|
|
||||||
MetricExporterConfiguration.configureExporter(
|
|
||||||
"logging", METRIC_EXPORTER_SPI_MANAGER))
|
|
||||||
.isInstanceOf(ConfigurationException.class)
|
|
||||||
.hasMessageContaining(
|
|
||||||
"otel.metrics.exporter set to \"logging\" but opentelemetry-exporter-logging not found on classpath."
|
|
||||||
+ " Make sure to add it as a dependency.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void loggingMetricsOtlp() {
|
|
||||||
assertThatThrownBy(
|
|
||||||
() ->
|
|
||||||
MetricExporterConfiguration.configureExporter(
|
|
||||||
"logging-otlp", METRIC_EXPORTER_SPI_MANAGER))
|
|
||||||
.isInstanceOf(ConfigurationException.class)
|
|
||||||
.hasMessageContaining(
|
|
||||||
"otel.metrics.exporter set to \"logging-otlp\" but opentelemetry-exporter-logging-otlp not found on classpath."
|
|
||||||
+ " Make sure to add it as a dependency.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void loggingLogs() {
|
|
||||||
assertThatThrownBy(
|
|
||||||
() ->
|
|
||||||
LogRecordExporterConfiguration.configureExporter(
|
|
||||||
"logging", LOG_RECORD_EXPORTER_SPI_MANAGER))
|
|
||||||
.isInstanceOf(ConfigurationException.class)
|
|
||||||
.hasMessageContaining(
|
|
||||||
"otel.logs.exporter set to \"logging\" but opentelemetry-exporter-logging not found on classpath."
|
|
||||||
+ " Make sure to add it as a dependency.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void loggingLogsOtlp() {
|
|
||||||
assertThatThrownBy(
|
|
||||||
() ->
|
|
||||||
LogRecordExporterConfiguration.configureExporter(
|
|
||||||
"logging-otlp", LOG_RECORD_EXPORTER_SPI_MANAGER))
|
|
||||||
.isInstanceOf(ConfigurationException.class)
|
|
||||||
.hasMessageContaining(
|
|
||||||
"otel.logs.exporter set to \"logging-otlp\" but opentelemetry-exporter-logging-otlp not found on classpath."
|
|
||||||
+ " Make sure to add it as a dependency.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void otlpMetrics() {
|
|
||||||
assertThatCode(
|
|
||||||
() ->
|
|
||||||
MetricExporterConfiguration.configureExporter("otlp", METRIC_EXPORTER_SPI_MANAGER))
|
|
||||||
.isInstanceOf(ConfigurationException.class)
|
|
||||||
.hasMessageContaining(
|
|
||||||
"otel.metrics.exporter set to \"otlp\" but opentelemetry-exporter-otlp not found on classpath."
|
|
||||||
+ " Make sure to add it as a dependency.");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void prometheus() {
|
|
||||||
assertThatThrownBy(
|
|
||||||
() ->
|
|
||||||
MetricExporterConfiguration.configureReader(
|
|
||||||
"prometheus",
|
|
||||||
EMPTY,
|
|
||||||
NotOnClasspathTest.class.getClassLoader(),
|
|
||||||
(a, unused) -> a))
|
|
||||||
.isInstanceOf(ConfigurationException.class)
|
|
||||||
.hasMessageContaining(
|
|
||||||
"Prometheus Metrics Server enabled but opentelemetry-exporter-prometheus not found on "
|
|
||||||
+ "classpath");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void b3propagator() {
|
|
||||||
assertThatThrownBy(
|
|
||||||
() ->
|
|
||||||
PropagatorConfiguration.configurePropagators(
|
|
||||||
DefaultConfigProperties.createForTest(
|
|
||||||
Collections.singletonMap("otel.propagators", "b3")),
|
|
||||||
PropagatorConfiguration.class.getClassLoader(),
|
|
||||||
(a, config) -> a))
|
|
||||||
.isInstanceOf(ConfigurationException.class)
|
|
||||||
.hasMessageContaining("Unrecognized value for otel.propagators: b3");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void otlpGrpcLogs() {
|
|
||||||
assertThatCode(
|
|
||||||
() ->
|
|
||||||
LogRecordExporterConfiguration.configureExporter(
|
|
||||||
"otlp", LOG_RECORD_EXPORTER_SPI_MANAGER))
|
|
||||||
.isInstanceOf(ConfigurationException.class)
|
|
||||||
.hasMessageContaining(
|
|
||||||
"otel.logs.exporter set to \"otlp\" but opentelemetry-exporter-otlp not found on classpath."
|
|
||||||
+ " Make sure to add it as a dependency.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -6,8 +6,10 @@
|
||||||
package io.opentelemetry.sdk.autoconfigure;
|
package io.opentelemetry.sdk.autoconfigure;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
|
|
||||||
import io.opentelemetry.context.propagation.ContextPropagators;
|
import io.opentelemetry.context.propagation.ContextPropagators;
|
||||||
|
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
|
||||||
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
|
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
@ -25,4 +27,17 @@ class PropagatorConfigurationTest {
|
||||||
assertThat(contextPropagators.getTextMapPropagator().fields())
|
assertThat(contextPropagators.getTextMapPropagator().fields())
|
||||||
.containsExactlyInAnyOrder("traceparent", "tracestate", "baggage");
|
.containsExactlyInAnyOrder("traceparent", "tracestate", "baggage");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void configurePropagators_NotOnClasspath() {
|
||||||
|
assertThatThrownBy(
|
||||||
|
() ->
|
||||||
|
PropagatorConfiguration.configurePropagators(
|
||||||
|
DefaultConfigProperties.createForTest(
|
||||||
|
Collections.singletonMap("otel.propagators", "b3")),
|
||||||
|
PropagatorConfiguration.class.getClassLoader(),
|
||||||
|
(a, config) -> a))
|
||||||
|
.isInstanceOf(ConfigurationException.class)
|
||||||
|
.hasMessageContaining("Unrecognized value for otel.propagators: b3");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
/*
|
||||||
|
* Copyright The OpenTelemetry Authors
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
package io.opentelemetry.sdk.autoconfigure;
|
||||||
|
|
||||||
|
import static io.opentelemetry.sdk.autoconfigure.SpanExporterConfiguration.configureExporter;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
|
|
||||||
|
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
|
||||||
|
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
|
||||||
|
import io.opentelemetry.sdk.trace.export.SpanExporter;
|
||||||
|
import java.util.Collections;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
class SpanExporterConfigurationTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void configureExporter_KnownSpiExportersNotOnClasspath() {
|
||||||
|
NamedSpiManager<SpanExporter> spiExportersManager =
|
||||||
|
SpanExporterConfiguration.spanExporterSpiManager(
|
||||||
|
DefaultConfigProperties.createForTest(Collections.emptyMap()),
|
||||||
|
SpanExporterConfigurationTest.class.getClassLoader());
|
||||||
|
|
||||||
|
assertThatThrownBy(() -> configureExporter("jaeger", spiExportersManager))
|
||||||
|
.isInstanceOf(ConfigurationException.class)
|
||||||
|
.hasMessage(
|
||||||
|
"otel.traces.exporter set to \"jaeger\" but opentelemetry-exporter-jaeger"
|
||||||
|
+ " not found on classpath. Make sure to add it as a dependency.");
|
||||||
|
assertThatThrownBy(() -> configureExporter("logging", spiExportersManager))
|
||||||
|
.isInstanceOf(ConfigurationException.class)
|
||||||
|
.hasMessage(
|
||||||
|
"otel.traces.exporter set to \"logging\" but opentelemetry-exporter-logging"
|
||||||
|
+ " not found on classpath. Make sure to add it as a dependency.");
|
||||||
|
assertThatThrownBy(() -> configureExporter("logging-otlp", spiExportersManager))
|
||||||
|
.isInstanceOf(ConfigurationException.class)
|
||||||
|
.hasMessage(
|
||||||
|
"otel.traces.exporter set to \"logging-otlp\" but opentelemetry-exporter-logging-otlp"
|
||||||
|
+ " not found on classpath. Make sure to add it as a dependency.");
|
||||||
|
assertThatThrownBy(() -> configureExporter("otlp", spiExportersManager))
|
||||||
|
.isInstanceOf(ConfigurationException.class)
|
||||||
|
.hasMessage(
|
||||||
|
"otel.traces.exporter set to \"otlp\" but opentelemetry-exporter-otlp"
|
||||||
|
+ " not found on classpath. Make sure to add it as a dependency.");
|
||||||
|
assertThatThrownBy(() -> configureExporter("zipkin", spiExportersManager))
|
||||||
|
.isInstanceOf(ConfigurationException.class)
|
||||||
|
.hasMessage(
|
||||||
|
"otel.traces.exporter set to \"zipkin\" but opentelemetry-exporter-zipkin"
|
||||||
|
+ " not found on classpath. Make sure to add it as a dependency.");
|
||||||
|
|
||||||
|
// Unrecognized exporter
|
||||||
|
assertThatThrownBy(() -> configureExporter("foo", spiExportersManager))
|
||||||
|
.isInstanceOf(ConfigurationException.class)
|
||||||
|
.hasMessage("Unrecognized value for otel.traces.exporter: foo");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -5,14 +5,36 @@
|
||||||
|
|
||||||
package io.opentelemetry.sdk.autoconfigure;
|
package io.opentelemetry.sdk.autoconfigure;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
import io.opentelemetry.exporter.logging.SystemOutLogRecordExporter;
|
||||||
|
import io.opentelemetry.exporter.logging.otlp.OtlpJsonLoggingLogRecordExporter;
|
||||||
|
import io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporter;
|
||||||
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
|
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
|
||||||
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
|
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
|
||||||
|
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
|
||||||
|
import java.util.Collections;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
public class LogRecordExporterConfigurationTest {
|
class LogRecordExporterConfigurationTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void configureExporter_KnownSpiExportersOnClasspath() {
|
||||||
|
NamedSpiManager<LogRecordExporter> spiExportersManager =
|
||||||
|
LogRecordExporterConfiguration.logRecordExporterSpiManager(
|
||||||
|
DefaultConfigProperties.createForTest(Collections.emptyMap()),
|
||||||
|
LogRecordExporterConfigurationTest.class.getClassLoader());
|
||||||
|
|
||||||
|
assertThat(LogRecordExporterConfiguration.configureExporter("logging", spiExportersManager))
|
||||||
|
.isInstanceOf(SystemOutLogRecordExporter.class);
|
||||||
|
assertThat(
|
||||||
|
LogRecordExporterConfiguration.configureExporter("logging-otlp", spiExportersManager))
|
||||||
|
.isInstanceOf(OtlpJsonLoggingLogRecordExporter.class);
|
||||||
|
assertThat(LogRecordExporterConfiguration.configureExporter("otlp", spiExportersManager))
|
||||||
|
.isInstanceOf(OtlpGrpcLogRecordExporter.class);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void configureExporter_UnsupportedOtlpProtocol() {
|
void configureExporter_UnsupportedOtlpProtocol() {
|
||||||
|
|
|
||||||
|
|
@ -5,14 +5,35 @@
|
||||||
|
|
||||||
package io.opentelemetry.sdk.autoconfigure;
|
package io.opentelemetry.sdk.autoconfigure;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
import io.opentelemetry.exporter.logging.LoggingMetricExporter;
|
||||||
|
import io.opentelemetry.exporter.logging.otlp.OtlpJsonLoggingMetricExporter;
|
||||||
|
import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter;
|
||||||
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
|
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
|
||||||
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
|
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
|
||||||
|
import io.opentelemetry.sdk.metrics.export.MetricExporter;
|
||||||
|
import java.util.Collections;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
public class MetricExporterConfigurationTest {
|
class MetricExporterConfigurationTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void configureExporter_KnownSpiExportersOnClasspath() {
|
||||||
|
NamedSpiManager<MetricExporter> spiExportersManager =
|
||||||
|
MetricExporterConfiguration.metricExporterSpiManager(
|
||||||
|
DefaultConfigProperties.createForTest(Collections.emptyMap()),
|
||||||
|
ConfigurableMetricExporterTest.class.getClassLoader());
|
||||||
|
|
||||||
|
assertThat(MetricExporterConfiguration.configureExporter("logging", spiExportersManager))
|
||||||
|
.isInstanceOf(LoggingMetricExporter.class);
|
||||||
|
assertThat(MetricExporterConfiguration.configureExporter("logging-otlp", spiExportersManager))
|
||||||
|
.isInstanceOf(OtlpJsonLoggingMetricExporter.class);
|
||||||
|
assertThat(MetricExporterConfiguration.configureExporter("otlp", spiExportersManager))
|
||||||
|
.isInstanceOf(OtlpGrpcMetricExporter.class);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void configureOtlpMetricsUnsupportedProtocol() {
|
void configureOtlpMetricsUnsupportedProtocol() {
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,10 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
import io.opentelemetry.exporter.jaeger.JaegerGrpcSpanExporter;
|
import io.opentelemetry.exporter.jaeger.JaegerGrpcSpanExporter;
|
||||||
|
import io.opentelemetry.exporter.logging.LoggingSpanExporter;
|
||||||
|
import io.opentelemetry.exporter.logging.otlp.OtlpJsonLoggingSpanExporter;
|
||||||
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter;
|
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter;
|
||||||
|
import io.opentelemetry.exporter.zipkin.ZipkinSpanExporter;
|
||||||
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
|
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
|
||||||
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
|
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
|
||||||
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
|
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
|
||||||
|
|
@ -20,6 +23,25 @@ import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
class SpanExporterConfigurationTest {
|
class SpanExporterConfigurationTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void configureExporter_KnownSpiExportersOnClasspath() {
|
||||||
|
NamedSpiManager<SpanExporter> spiExportersManager =
|
||||||
|
SpanExporterConfiguration.spanExporterSpiManager(
|
||||||
|
DefaultConfigProperties.createForTest(Collections.emptyMap()),
|
||||||
|
SpanExporterConfigurationTest.class.getClassLoader());
|
||||||
|
|
||||||
|
assertThat(SpanExporterConfiguration.configureExporter("jaeger", spiExportersManager))
|
||||||
|
.isInstanceOf(JaegerGrpcSpanExporter.class);
|
||||||
|
assertThat(SpanExporterConfiguration.configureExporter("logging", spiExportersManager))
|
||||||
|
.isInstanceOf(LoggingSpanExporter.class);
|
||||||
|
assertThat(SpanExporterConfiguration.configureExporter("logging-otlp", spiExportersManager))
|
||||||
|
.isInstanceOf(OtlpJsonLoggingSpanExporter.class);
|
||||||
|
assertThat(SpanExporterConfiguration.configureExporter("otlp", spiExportersManager))
|
||||||
|
.isInstanceOf(OtlpGrpcSpanExporter.class);
|
||||||
|
assertThat(SpanExporterConfiguration.configureExporter("zipkin", spiExportersManager))
|
||||||
|
.isInstanceOf(ZipkinSpanExporter.class);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void configureOtlpSpansUnsupportedProtocol() {
|
void configureOtlpSpansUnsupportedProtocol() {
|
||||||
ConfigProperties config =
|
ConfigProperties config =
|
||||||
|
|
@ -56,44 +78,4 @@ class SpanExporterConfigurationTest {
|
||||||
exporter.shutdown();
|
exporter.shutdown();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Timeout difficult to test using real exports so just check implementation detail here.
|
|
||||||
@Test
|
|
||||||
void configureJaegerTimeout() {
|
|
||||||
ConfigProperties config =
|
|
||||||
DefaultConfigProperties.createForTest(
|
|
||||||
Collections.singletonMap("otel.exporter.jaeger.timeout", "10"));
|
|
||||||
SpanExporter exporter =
|
|
||||||
SpanExporterConfiguration.configureExporter(
|
|
||||||
"jaeger",
|
|
||||||
SpanExporterConfiguration.spanExporterSpiManager(
|
|
||||||
config, SpanExporterConfigurationTest.class.getClassLoader()));
|
|
||||||
try {
|
|
||||||
assertThat(exporter)
|
|
||||||
.isInstanceOfSatisfying(
|
|
||||||
JaegerGrpcSpanExporter.class,
|
|
||||||
jaeger ->
|
|
||||||
assertThat(jaeger).extracting("delegate.client.callTimeoutMillis").isEqualTo(10));
|
|
||||||
} finally {
|
|
||||||
exporter.shutdown();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Timeout difficult to test using real exports so just check that things don't blow up.
|
|
||||||
@Test
|
|
||||||
void configureZipkinTimeout() {
|
|
||||||
ConfigProperties config =
|
|
||||||
DefaultConfigProperties.createForTest(
|
|
||||||
Collections.singletonMap("otel.exporter.zipkin.timeout", "5s"));
|
|
||||||
SpanExporter exporter =
|
|
||||||
SpanExporterConfiguration.configureExporter(
|
|
||||||
"zipkin",
|
|
||||||
SpanExporterConfiguration.spanExporterSpiManager(
|
|
||||||
config, SpanExporterConfigurationTest.class.getClassLoader()));
|
|
||||||
try {
|
|
||||||
assertThat(exporter).isNotNull();
|
|
||||||
} finally {
|
|
||||||
exporter.shutdown();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,70 +0,0 @@
|
||||||
/*
|
|
||||||
* 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.awaitility.Awaitility.await;
|
|
||||||
|
|
||||||
import com.linecorp.armeria.server.ServerBuilder;
|
|
||||||
import com.linecorp.armeria.server.grpc.GrpcService;
|
|
||||||
import com.linecorp.armeria.testing.junit5.server.ServerExtension;
|
|
||||||
import io.grpc.stub.StreamObserver;
|
|
||||||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
|
||||||
import io.opentelemetry.exporter.jaeger.proto.api_v2.Collector;
|
|
||||||
import io.opentelemetry.exporter.jaeger.proto.api_v2.CollectorServiceGrpc;
|
|
||||||
import java.util.concurrent.BlockingQueue;
|
|
||||||
import java.util.concurrent.LinkedBlockingDeque;
|
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
|
||||||
|
|
||||||
class JaegerConfigTest {
|
|
||||||
|
|
||||||
private static final BlockingQueue<Collector.PostSpansRequest> jaegerRequests =
|
|
||||||
new LinkedBlockingDeque<>();
|
|
||||||
|
|
||||||
@RegisterExtension
|
|
||||||
public static final ServerExtension server =
|
|
||||||
new ServerExtension() {
|
|
||||||
@Override
|
|
||||||
protected void configure(ServerBuilder sb) {
|
|
||||||
sb.service(
|
|
||||||
GrpcService.builder()
|
|
||||||
// Jaeger
|
|
||||||
.addService(
|
|
||||||
new CollectorServiceGrpc.CollectorServiceImplBase() {
|
|
||||||
@Override
|
|
||||||
public void postSpans(
|
|
||||||
Collector.PostSpansRequest request,
|
|
||||||
StreamObserver<Collector.PostSpansResponse> responseObserver) {
|
|
||||||
jaegerRequests.add(request);
|
|
||||||
responseObserver.onNext(Collector.PostSpansResponse.getDefaultInstance());
|
|
||||||
responseObserver.onCompleted();
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.useBlockingTaskExecutor(true)
|
|
||||||
.build());
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
@BeforeEach
|
|
||||||
void setUp() {
|
|
||||||
jaegerRequests.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void configures() {
|
|
||||||
String endpoint = "http://localhost:" + server.httpPort();
|
|
||||||
|
|
||||||
System.setProperty("otel.exporter.jaeger.endpoint", endpoint);
|
|
||||||
|
|
||||||
AutoConfiguredOpenTelemetrySdk.initialize();
|
|
||||||
|
|
||||||
GlobalOpenTelemetry.get().getTracer("test").spanBuilder("test").startSpan().end();
|
|
||||||
|
|
||||||
await().untilAsserted(() -> assertThat(jaegerRequests).hasSize(1));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,67 +0,0 @@
|
||||||
/*
|
|
||||||
* 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.awaitility.Awaitility.await;
|
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import io.github.netmikey.logunit.api.LogCapturer;
|
|
||||||
import io.opentelemetry.exporter.logging.otlp.OtlpJsonLoggingLogRecordExporter;
|
|
||||||
import io.opentelemetry.exporter.logging.otlp.OtlpJsonLoggingMetricExporter;
|
|
||||||
import io.opentelemetry.exporter.logging.otlp.OtlpJsonLoggingSpanExporter;
|
|
||||||
import io.opentelemetry.sdk.OpenTelemetrySdk;
|
|
||||||
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
|
||||||
|
|
||||||
class LoggingOtlpTest {
|
|
||||||
|
|
||||||
@RegisterExtension
|
|
||||||
LogCapturer spansCapturer =
|
|
||||||
LogCapturer.create().captureForType(OtlpJsonLoggingSpanExporter.class);
|
|
||||||
|
|
||||||
@RegisterExtension
|
|
||||||
LogCapturer metricsCapturer =
|
|
||||||
LogCapturer.create().captureForType(OtlpJsonLoggingMetricExporter.class);
|
|
||||||
|
|
||||||
@RegisterExtension
|
|
||||||
LogCapturer logsCapturer =
|
|
||||||
LogCapturer.create().captureForType(OtlpJsonLoggingLogRecordExporter.class);
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void configures() {
|
|
||||||
OpenTelemetrySdk sdk =
|
|
||||||
AutoConfiguredOpenTelemetrySdk.builder()
|
|
||||||
.setConfig(
|
|
||||||
DefaultConfigProperties.createForTest(
|
|
||||||
ImmutableMap.of(
|
|
||||||
"otel.traces.exporter", "logging-otlp",
|
|
||||||
"otel.metrics.exporter", "logging-otlp",
|
|
||||||
"otel.logs.exporter", "logging-otlp")))
|
|
||||||
.setResultAsGlobal(false)
|
|
||||||
.build()
|
|
||||||
.getOpenTelemetrySdk();
|
|
||||||
|
|
||||||
sdk.getTracerProvider().get("tracer").spanBuilder("test").startSpan().end();
|
|
||||||
sdk.getMeterProvider().get("meter").counterBuilder("counter").build().add(10);
|
|
||||||
sdk.getSdkLoggerProvider().get("logger").logRecordBuilder().setBody("message").emit();
|
|
||||||
|
|
||||||
sdk.getSdkLoggerProvider().forceFlush().join(10, TimeUnit.SECONDS);
|
|
||||||
sdk.getSdkMeterProvider().forceFlush().join(10, TimeUnit.SECONDS);
|
|
||||||
sdk.getSdkLoggerProvider().forceFlush().join(10, TimeUnit.SECONDS);
|
|
||||||
|
|
||||||
await()
|
|
||||||
.untilAsserted(
|
|
||||||
() -> assertThat(spansCapturer.getEvents().size()).isGreaterThanOrEqualTo(1));
|
|
||||||
await()
|
|
||||||
.untilAsserted(
|
|
||||||
() -> assertThat(metricsCapturer.getEvents().size()).isGreaterThanOrEqualTo(1));
|
|
||||||
await()
|
|
||||||
.untilAsserted(() -> assertThat(logsCapturer.getEvents().size()).isGreaterThanOrEqualTo(1));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,63 +0,0 @@
|
||||||
/*
|
|
||||||
* 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.awaitility.Awaitility.await;
|
|
||||||
|
|
||||||
import com.linecorp.armeria.common.HttpResponse;
|
|
||||||
import com.linecorp.armeria.common.HttpStatus;
|
|
||||||
import com.linecorp.armeria.server.ServerBuilder;
|
|
||||||
import com.linecorp.armeria.testing.junit5.server.ServerExtension;
|
|
||||||
import io.opentelemetry.api.GlobalOpenTelemetry;
|
|
||||||
import java.util.concurrent.BlockingQueue;
|
|
||||||
import java.util.concurrent.LinkedBlockingDeque;
|
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import org.junit.jupiter.api.extension.RegisterExtension;
|
|
||||||
|
|
||||||
class ZipkinConfigTest {
|
|
||||||
|
|
||||||
private static final BlockingQueue<String> zipkinJsonRequests = new LinkedBlockingDeque<>();
|
|
||||||
|
|
||||||
@RegisterExtension
|
|
||||||
public static final ServerExtension server =
|
|
||||||
new ServerExtension() {
|
|
||||||
@Override
|
|
||||||
protected void configure(ServerBuilder sb) {
|
|
||||||
// Zipkin
|
|
||||||
sb.service(
|
|
||||||
"/api/v2/spans",
|
|
||||||
(ctx, req) ->
|
|
||||||
HttpResponse.from(
|
|
||||||
req.aggregate()
|
|
||||||
.thenApply(
|
|
||||||
aggRes -> {
|
|
||||||
zipkinJsonRequests.add(aggRes.contentUtf8());
|
|
||||||
return HttpResponse.of(HttpStatus.OK);
|
|
||||||
})));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
@BeforeEach
|
|
||||||
void setUp() {
|
|
||||||
zipkinJsonRequests.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
void configures() {
|
|
||||||
String endpoint = "localhost:" + server.httpPort();
|
|
||||||
|
|
||||||
System.setProperty("otel.exporter.zipkin.endpoint", "http://" + endpoint + "/api/v2/spans");
|
|
||||||
System.setProperty("otel.exporter.zipkin.timeout", "5s");
|
|
||||||
|
|
||||||
AutoConfiguredOpenTelemetrySdk.initialize();
|
|
||||||
|
|
||||||
GlobalOpenTelemetry.get().getTracer("test").spanBuilder("test").startSpan().end();
|
|
||||||
|
|
||||||
await().untilAsserted(() -> assertThat(zipkinJsonRequests).hasSize(1));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue