Skip to content

Commit efd559f

Browse files
author
Anuraag Agrawal
authored
Update exporter environment variable to latest spec's singular forms. (#2499)
* Update exporter environment variable to latest spec's singular forms. * Fix! * Use check per test-sets recommendation * Missed one more
1 parent 9b85dfa commit efd559f

File tree

13 files changed

+189
-164
lines changed

13 files changed

+189
-164
lines changed

sdk-extensions/autoconfigure/build.gradle

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ ext.moduleName = "io.opentelemetry.sdk.autoconfigure"
1212
testSets {
1313
testConfigError
1414
testFullConfig
15+
testJaeger
1516
testPrometheus
17+
testZipkin
1618
}
1719

1820
dependencies {
@@ -43,6 +45,10 @@ dependencies {
4345
testFullConfigImplementation libraries.prometheus_client_httpserver
4446
testFullConfigImplementation project(':exporters:zipkin')
4547

48+
testJaegerImplementation project(':exporters:jaeger')
49+
50+
testZipkinImplementation project(':exporters:zipkin')
51+
4652
testConfigErrorImplementation project(':extensions:trace-propagators')
4753
testConfigErrorImplementation project(':exporters:jaeger')
4854
testConfigErrorImplementation project(':exporters:logging')
@@ -59,7 +65,8 @@ dependencies {
5965

6066
testFullConfig {
6167
environment("OTEL_RESOURCE_ATTRIBUTES", "service.name=test,cat=meow")
62-
environment("OTEL_EXPORTER", "otlp,jaeger,zipkin")
68+
environment("OTEL_TRACE_EXPORTER", "otlp")
69+
environment("OTEL_METRICS_EXPORTER", "otlp")
6370
environment("OTEL_PROPAGATORS", "tracecontext,baggage,b3,b3multi,jaeger,ottracer,xray,test")
6471
environment("OTEL_BSP_SCHEDULE_DELAY_MILLIS", "10")
6572
environment("OTEL_IMR_EXPORT_INTERVAL", "10")
@@ -68,7 +75,19 @@ testFullConfig {
6875
environment("OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT", "2")
6976
}
7077

78+
testJaeger {
79+
environment("OTEL_TRACE_EXPORTER", "jaeger")
80+
environment("OTEL_BSP_SCHEDULE_DELAY_MILLIS", "10")
81+
}
82+
83+
testZipkin {
84+
environment("OTEL_TRACE_EXPORTER", "zipkin")
85+
environment("OTEL_BSP_SCHEDULE_DELAY_MILLIS", "10")
86+
}
87+
7188
testPrometheus {
72-
environment("OTEL_EXPORTER", "prometheus")
89+
environment("OTEL_METRICS_EXPORTER", "prometheus")
7390
environment("OTEL_IMR_EXPORT_INTERVAL", "10")
74-
}
91+
}
92+
93+
check.dependsOn(testConfigError, testFullConfig, testJaeger, testPrometheus, testZipkin)

sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/MetricExporterConfiguration.java

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,39 +14,22 @@
1414
import io.prometheus.client.exporter.HTTPServer;
1515
import java.io.IOException;
1616
import java.time.Duration;
17-
import java.util.Arrays;
1817
import java.util.Collections;
19-
import java.util.List;
2018

2119
final class MetricExporterConfiguration {
2220

23-
static final List<String> RECOGNIZED_NAMES = Arrays.asList("otlp", "otlp_metrics", "prometheus");
24-
25-
static boolean configureExporter(
26-
String name,
27-
ConfigProperties config,
28-
boolean metricsAlreadyRegistered,
29-
SdkMeterProvider meterProvider) {
21+
static void configureExporter(
22+
String name, ConfigProperties config, SdkMeterProvider meterProvider) {
3023
switch (name) {
3124
case "otlp":
3225
case "otlp_metrics":
33-
if (metricsAlreadyRegistered) {
34-
throw new ConfigurationException(
35-
"Multiple metrics exporters configured. Only one metrics exporter can be "
36-
+ "configured at a time.");
37-
}
3826
configureOtlpMetrics(config, meterProvider);
39-
return true;
27+
return;
4028
case "prometheus":
41-
if (metricsAlreadyRegistered) {
42-
throw new ConfigurationException(
43-
"Multiple metrics exporters configured. Only one metrics exporter can be "
44-
+ "configured at a time.");
45-
}
4629
configurePrometheusMetrics(config, meterProvider);
47-
return true;
30+
return;
4831
default:
49-
return false;
32+
return;
5033
}
5134
}
5235

sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/OpenTelemetrySdkAutoConfiguration.java

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,6 @@
1212
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
1313
import io.opentelemetry.sdk.resources.Resource;
1414
import io.opentelemetry.sdk.trace.SdkTracerProvider;
15-
import java.util.ArrayList;
16-
import java.util.LinkedHashSet;
17-
import java.util.Set;
1815

1916
/**
2017
* Auto-configuration for the OpenTelemetry SDK. As an alternative to programmatically configuring
@@ -33,38 +30,24 @@ public static OpenTelemetrySdk initialize() {
3330

3431
Resource resource = configureResource(config);
3532

36-
Set<String> exporterNames =
37-
new LinkedHashSet<>(config.getCommaSeparatedValues("otel.exporter"));
38-
39-
Set<String> unrecognizedExporters = new LinkedHashSet<>(exporterNames);
40-
unrecognizedExporters.removeAll(SpanExporterConfiguration.RECOGNIZED_NAMES);
41-
unrecognizedExporters.removeAll(MetricExporterConfiguration.RECOGNIZED_NAMES);
42-
if (!unrecognizedExporters.isEmpty()) {
43-
throw new ConfigurationException(
44-
"Unrecognized value for otel.exporter: " + String.join(",", exporterNames));
45-
}
46-
47-
configureMeterProvider(resource, exporterNames, config);
33+
configureMeterProvider(resource, config);
4834

4935
SdkTracerProvider tracerProvider =
50-
TracerProviderConfiguration.configureTracerProvider(resource, exporterNames, config);
36+
TracerProviderConfiguration.configureTracerProvider(resource, config);
5137

5238
return OpenTelemetrySdk.builder()
5339
.setTracerProvider(tracerProvider)
5440
.setPropagators(propagators)
5541
.build();
5642
}
5743

58-
private static void configureMeterProvider(
59-
Resource resource, Set<String> exporterNames, ConfigProperties config) {
44+
private static void configureMeterProvider(Resource resource, ConfigProperties config) {
6045
SdkMeterProvider meterProvider =
6146
SdkMeterProvider.builder().setResource(resource).buildAndRegisterGlobal();
6247

63-
boolean metricsConfigured = false;
64-
for (String exporterName : new ArrayList<>(exporterNames)) {
65-
metricsConfigured =
66-
MetricExporterConfiguration.configureExporter(
67-
exporterName, config, metricsConfigured, meterProvider);
48+
String exporterName = config.getString("otel.metrics.exporter");
49+
if (exporterName != null) {
50+
MetricExporterConfiguration.configureExporter(exporterName, config, meterProvider);
6851
}
6952
}
7053

sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/SpanExporterConfiguration.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,10 @@
1414
import io.opentelemetry.exporter.zipkin.ZipkinSpanExporterBuilder;
1515
import io.opentelemetry.sdk.trace.export.SpanExporter;
1616
import java.time.Duration;
17-
import java.util.Arrays;
18-
import java.util.List;
1917
import javax.annotation.Nullable;
2018

2119
final class SpanExporterConfiguration {
2220

23-
static final List<String> RECOGNIZED_NAMES =
24-
Arrays.asList("otlp", "otlp_span", "jaeger", "zipkin", "logging");
25-
2621
@Nullable
2722
static SpanExporter configureExporter(String name, ConfigProperties config) {
2823
switch (name) {

sdk-extensions/autoconfigure/src/main/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfiguration.java

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,11 @@
1616
import io.opentelemetry.sdk.trace.export.SpanExporter;
1717
import io.opentelemetry.sdk.trace.samplers.Sampler;
1818
import java.time.Duration;
19-
import java.util.ArrayList;
20-
import java.util.List;
2119
import java.util.ServiceLoader;
22-
import java.util.Set;
2320

2421
final class TracerProviderConfiguration {
2522

26-
static SdkTracerProvider configureTracerProvider(
27-
Resource resource, Set<String> exporterNames, ConfigProperties config) {
23+
static SdkTracerProvider configureTracerProvider(Resource resource, ConfigProperties config) {
2824
SdkTracerProviderBuilder tracerProviderBuilder =
2925
SdkTracerProvider.builder()
3026
.setResource(resource)
@@ -37,27 +33,21 @@ static SdkTracerProvider configureTracerProvider(
3733
configurer.configure(tracerProviderBuilder);
3834
}
3935

40-
List<SpanExporter> spanExporters = new ArrayList<>();
41-
for (String name : new ArrayList<>(exporterNames)) {
42-
SpanExporter exporter = SpanExporterConfiguration.configureExporter(name, config);
36+
String exporterName = config.getString("otel.trace.exporter");
37+
if (exporterName != null) {
38+
SpanExporter exporter = SpanExporterConfiguration.configureExporter(exporterName, config);
4339
if (exporter != null) {
44-
spanExporters.add(exporter);
40+
tracerProviderBuilder.addSpanProcessor(configureSpanProcessor(config, exporter));
4541
}
4642
}
4743

48-
if (!spanExporters.isEmpty()) {
49-
tracerProviderBuilder.addSpanProcessor(configureSpanProcessor(config, spanExporters));
50-
}
51-
5244
SdkTracerProvider tracerProvider = tracerProviderBuilder.build();
5345
Runtime.getRuntime().addShutdownHook(new Thread(tracerProvider::shutdown));
5446
return tracerProvider;
5547
}
5648

5749
// VisibleForTesting
58-
static BatchSpanProcessor configureSpanProcessor(
59-
ConfigProperties config, List<SpanExporter> exporters) {
60-
SpanExporter exporter = SpanExporter.composite(exporters);
50+
static BatchSpanProcessor configureSpanProcessor(ConfigProperties config, SpanExporter exporter) {
6151
BatchSpanProcessorBuilder builder = BatchSpanProcessor.builder(exporter);
6252

6353
Long scheduleDelayMillis = config.getLong("otel.bsp.schedule.delay.millis");

sdk-extensions/autoconfigure/src/test/java/io/opentelemetry/sdk/autoconfigure/NotOnClasspathTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ void otlpMetrics() {
5656
assertThatThrownBy(
5757
() ->
5858
MetricExporterConfiguration.configureExporter(
59-
"otlp", EMPTY, false, SdkMeterProvider.builder().build()))
59+
"otlp", EMPTY, SdkMeterProvider.builder().build()))
6060
.isInstanceOf(ConfigurationException.class)
6161
.hasMessageContaining(
6262
"OTLP Metrics Exporter enabled but opentelemetry-exporter-otlp-metrics not found on "
@@ -68,7 +68,7 @@ void prometheus() {
6868
assertThatThrownBy(
6969
() ->
7070
MetricExporterConfiguration.configureExporter(
71-
"prometheus", EMPTY, false, SdkMeterProvider.builder().build()))
71+
"prometheus", EMPTY, SdkMeterProvider.builder().build()))
7272
.isInstanceOf(ConfigurationException.class)
7373
.hasMessageContaining(
7474
"Prometheus Metrics Server enabled but opentelemetry-exporter-prometheus not found on "

sdk-extensions/autoconfigure/src/test/java/io/opentelemetry/sdk/autoconfigure/TracerProviderConfigurationTest.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ void configureTracerProvider() {
4747
// are verified in other test sets like testFullConfig.
4848
SdkTracerProvider tracerProvider =
4949
TracerProviderConfiguration.configureTracerProvider(
50-
resource, Collections.emptySet(), ConfigProperties.createForTest(properties));
50+
resource, ConfigProperties.createForTest(properties));
5151
try {
5252
assertThat(tracerProvider.getActiveTraceConfig().getSampler()).isEqualTo(Sampler.alwaysOff());
5353

@@ -68,8 +68,7 @@ void configureTracerProvider() {
6868
@Test
6969
void configureSpanProcessor_empty() {
7070
BatchSpanProcessor processor =
71-
TracerProviderConfiguration.configureSpanProcessor(
72-
EMPTY, Collections.singletonList(exporter));
71+
TracerProviderConfiguration.configureSpanProcessor(EMPTY, exporter);
7372

7473
try {
7574
assertThat(processor)
@@ -105,7 +104,7 @@ void configureSpanProcessor_configured() {
105104

106105
BatchSpanProcessor processor =
107106
TracerProviderConfiguration.configureSpanProcessor(
108-
ConfigProperties.createForTest(properties), Collections.singletonList(exporter));
107+
ConfigProperties.createForTest(properties), exporter);
109108

110109
try {
111110
assertThat(processor)

sdk-extensions/autoconfigure/src/testConfigError/java/io/opentelemetry/sdk/autoconfigure/ConfigErrorTest.java

Lines changed: 3 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -25,26 +25,6 @@ class ConfigErrorTest {
2525
@RegisterExtension
2626
LogCapturer logs = LogCapturer.create().captureForType(GlobalOpenTelemetry.class);
2727

28-
@Test
29-
@SetSystemProperty(key = "otel.exporter", value = "otlp_metrics,prometheus")
30-
void multipleMetricExportersPrometheusThrows() {
31-
assertThatThrownBy(OpenTelemetrySdkAutoConfiguration::initialize)
32-
.isInstanceOf(ConfigurationException.class)
33-
.hasMessage(
34-
"Multiple metrics exporters configured. "
35-
+ "Only one metrics exporter can be configured at a time.");
36-
}
37-
38-
@Test
39-
@SetSystemProperty(key = "otel.exporter", value = "prometheus,otlp_metrics")
40-
void multipleMetricExportersOtlpThrows() {
41-
assertThatThrownBy(OpenTelemetrySdkAutoConfiguration::initialize)
42-
.isInstanceOf(ConfigurationException.class)
43-
.hasMessage(
44-
"Multiple metrics exporters configured. "
45-
+ "Only one metrics exporter can be configured at a time.");
46-
}
47-
4828
@Test
4929
@SetSystemProperty(key = "otel.propagators", value = "cat")
5030
void invalidPropagator() {
@@ -53,16 +33,6 @@ void invalidPropagator() {
5333
.hasMessage("Unrecognized value for otel.propagators: cat");
5434
}
5535

56-
@Test
57-
@SetSystemProperty(key = "otel.trace.sampler", value = "traceidratio")
58-
void missingTraceIdRatio() {
59-
assertThatThrownBy(OpenTelemetrySdkAutoConfiguration::initialize)
60-
.isInstanceOf(ConfigurationException.class)
61-
.hasMessage(
62-
"otel.trace.sampler=traceidratio but otel.trace.sampler.arg is not provided. "
63-
+ "Set otel.trace.sampler.arg to a value in the range [0.0, 1.0].");
64-
}
65-
6636
@Test
6737
@SetSystemProperty(key = "otel.trace.sampler", value = "traceidratio")
6838
@SetSystemProperty(key = "otel.trace.sampler.arg", value = "bar")
@@ -72,16 +42,6 @@ void invalidTraceIdRatio() {
7242
.hasMessage("Invalid value for property otel.trace.sampler.arg=bar. Must be a double.");
7343
}
7444

75-
@Test
76-
@SetSystemProperty(key = "otel.trace.sampler", value = "parentbased_traceidratio")
77-
void missingTraceIdRatioWithParent() {
78-
assertThatThrownBy(OpenTelemetrySdkAutoConfiguration::initialize)
79-
.isInstanceOf(ConfigurationException.class)
80-
.hasMessage(
81-
"otel.trace.sampler=parentbased_traceidratio but otel.trace.sampler.arg is "
82-
+ "not provided. Set otel.trace.sampler.arg to a value in the range [0.0, 1.0].");
83-
}
84-
8545
@Test
8646
@SetSystemProperty(key = "otel.trace.sampler", value = "parentbased_traceidratio")
8747
@SetSystemProperty(key = "otel.trace.sampler.arg", value = "bar")
@@ -100,15 +60,8 @@ void invalidSampler() {
10060
}
10161

10262
@Test
103-
@SetSystemProperty(key = "otel.exporter", value = "otlp,cat,dog")
104-
void invalidExporter() {
105-
assertThatThrownBy(OpenTelemetrySdkAutoConfiguration::initialize)
106-
.isInstanceOf(ConfigurationException.class)
107-
.hasMessage("Unrecognized value for otel.exporter: cat,dog");
108-
}
109-
110-
@Test
111-
@SetSystemProperty(key = "otel.exporter", value = "bar")
63+
@SetSystemProperty(key = "otel.trace.sampler", value = "traceidratio")
64+
@SetSystemProperty(key = "otel.trace.sampler.arg", value = "bar")
11265
void globalOpenTelemetryWhenError() {
11366
assertThat(GlobalOpenTelemetry.get())
11467
.isInstanceOf(OpenTelemetrySdk.class)
@@ -121,8 +74,6 @@ void globalOpenTelemetryWhenError() {
12174
"Error automatically configuring OpenTelemetry SDK. "
12275
+ "OpenTelemetry will not be enabled.");
12376
assertThat(log.getLevel()).isEqualTo(Level.ERROR);
124-
assertThat(log.getThrowable())
125-
.isInstanceOf(ConfigurationException.class)
126-
.hasMessage("Unrecognized value for otel.exporter: bar");
77+
assertThat(log.getThrowable()).isInstanceOf(ConfigurationException.class);
12778
}
12879
}

0 commit comments

Comments
 (0)