Skip to content

Commit d56bdf5

Browse files
authored
Remove -alpha artifacts from runtime classpath of stable components (#6944)
1 parent 492b94f commit d56bdf5

File tree

46 files changed

+1210
-298
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1210
-298
lines changed

integration-tests/graal-incubating/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ sourceSets {
1818
dependencies {
1919
implementation(project(":sdk:all"))
2020
implementation(project(":sdk:trace-shaded-deps"))
21+
implementation(project(":sdk:testing"))
2122
implementation(project(":exporters:otlp:all"))
2223
implementation(project(":api:incubator"))
2324
}

integration-tests/graal-incubating/src/test/java/io/opentelemetry/integrationtests/graal/IncubatingApiTests.java

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,31 @@
77

88
import static org.assertj.core.api.Assertions.assertThat;
99

10+
import io.opentelemetry.api.incubator.logs.ExtendedLogRecordBuilder;
1011
import io.opentelemetry.api.incubator.logs.ExtendedLogger;
12+
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleCounter;
13+
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleGauge;
14+
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleHistogram;
15+
import io.opentelemetry.api.incubator.metrics.ExtendedDoubleUpDownCounter;
16+
import io.opentelemetry.api.incubator.metrics.ExtendedLongCounter;
1117
import io.opentelemetry.api.incubator.metrics.ExtendedLongCounterBuilder;
18+
import io.opentelemetry.api.incubator.metrics.ExtendedLongGauge;
19+
import io.opentelemetry.api.incubator.metrics.ExtendedLongHistogram;
20+
import io.opentelemetry.api.incubator.metrics.ExtendedLongUpDownCounter;
21+
import io.opentelemetry.api.incubator.trace.ExtendedSpanBuilder;
1222
import io.opentelemetry.api.incubator.trace.ExtendedTracer;
1323
import io.opentelemetry.api.logs.LoggerProvider;
24+
import io.opentelemetry.api.metrics.Meter;
1425
import io.opentelemetry.api.metrics.MeterProvider;
1526
import io.opentelemetry.api.trace.TracerProvider;
27+
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
28+
import io.opentelemetry.sdk.logs.export.SimpleLogRecordProcessor;
29+
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
30+
import io.opentelemetry.sdk.testing.exporter.InMemoryLogRecordExporter;
31+
import io.opentelemetry.sdk.testing.exporter.InMemoryMetricReader;
32+
import io.opentelemetry.sdk.testing.exporter.InMemorySpanExporter;
33+
import io.opentelemetry.sdk.trace.SdkTracerProvider;
34+
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
1635
import org.junit.jupiter.api.Test;
1736

1837
class IncubatingApiTests {
@@ -23,4 +42,63 @@ void incubatingApiIsLoadedViaReflection() {
2342
assertThat(MeterProvider.noop().get("test").counterBuilder("test"))
2443
.isInstanceOf(ExtendedLongCounterBuilder.class);
2544
}
45+
46+
@Test
47+
void incubatingLogSdk() {
48+
InMemoryLogRecordExporter exporter = InMemoryLogRecordExporter.create();
49+
SdkLoggerProvider loggerProvider =
50+
SdkLoggerProvider.builder()
51+
.addLogRecordProcessor(SimpleLogRecordProcessor.create(exporter))
52+
.build();
53+
54+
ExtendedLogger logger = (ExtendedLogger) loggerProvider.get("logger");
55+
logger.isEnabled();
56+
((ExtendedLogRecordBuilder) logger.logRecordBuilder()).setBody("message").emit();
57+
}
58+
59+
@Test
60+
void incubatingTraceSdk() {
61+
InMemorySpanExporter exporter = InMemorySpanExporter.create();
62+
SdkTracerProvider tracerProvider =
63+
SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(exporter)).build();
64+
65+
ExtendedTracer tracer = (ExtendedTracer) tracerProvider.get("tracer");
66+
tracer.isEnabled();
67+
((ExtendedSpanBuilder) tracer.spanBuilder("span")).startAndRun(() -> {});
68+
}
69+
70+
@Test
71+
void incubatingMetricSdk() {
72+
InMemoryMetricReader reader = InMemoryMetricReader.create();
73+
SdkMeterProvider meterProvider =
74+
SdkMeterProvider.builder().registerMetricReader(reader).build();
75+
76+
Meter meter = meterProvider.get("meter");
77+
78+
ExtendedLongCounter longCounter =
79+
(ExtendedLongCounter) meter.counterBuilder("longCounter").build();
80+
longCounter.isEnabled();
81+
ExtendedDoubleCounter doubleCounter =
82+
(ExtendedDoubleCounter) meter.counterBuilder("doubleCounter").ofDoubles().build();
83+
doubleCounter.isEnabled();
84+
ExtendedLongUpDownCounter longUpDownCounter =
85+
(ExtendedLongUpDownCounter) meter.upDownCounterBuilder("longUpDownCounter").build();
86+
longUpDownCounter.isEnabled();
87+
ExtendedDoubleUpDownCounter doubleUpDownCounter =
88+
(ExtendedDoubleUpDownCounter)
89+
meter.upDownCounterBuilder("doubleUpDownCounter").ofDoubles().build();
90+
doubleUpDownCounter.isEnabled();
91+
ExtendedDoubleHistogram doubleHistogram =
92+
(ExtendedDoubleHistogram) meter.histogramBuilder("doubleHistogram").build();
93+
doubleHistogram.isEnabled();
94+
ExtendedLongHistogram longHistogram =
95+
(ExtendedLongHistogram) meter.histogramBuilder("longHistogram").ofLongs().build();
96+
longHistogram.isEnabled();
97+
ExtendedDoubleGauge doubleGauge =
98+
(ExtendedDoubleGauge) meter.gaugeBuilder("doubleGauge").build();
99+
doubleGauge.isEnabled();
100+
ExtendedLongGauge longGauge =
101+
(ExtendedLongGauge) meter.gaugeBuilder("longGauge").ofLongs().build();
102+
longGauge.isEnabled();
103+
}
26104
}

sdk-extensions/autoconfigure/build.gradle.kts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ dependencies {
1010
api(project(":sdk:all"))
1111
api(project(":sdk-extensions:autoconfigure-spi"))
1212

13-
implementation(project(":api:incubator"))
13+
compileOnly(project(":api:incubator"))
1414

1515
annotationProcessor("com.google.auto.value:auto-value")
1616

@@ -23,6 +23,11 @@ dependencies {
2323

2424
testing {
2525
suites {
26+
register<JvmTestSuite>("testIncubating") {
27+
dependencies {
28+
implementation(project(":api:incubator"))
29+
}
30+
}
2631
register<JvmTestSuite>("testAutoConfigureOrder") {
2732
targets {
2833
all {

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

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import static java.util.Objects.requireNonNull;
99

1010
import io.opentelemetry.api.GlobalOpenTelemetry;
11-
import io.opentelemetry.api.incubator.events.GlobalEventLoggerProvider;
1211
import io.opentelemetry.context.propagation.ContextPropagators;
1312
import io.opentelemetry.context.propagation.TextMapPropagator;
1413
import io.opentelemetry.sdk.OpenTelemetrySdk;
@@ -26,7 +25,6 @@
2625
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
2726
import io.opentelemetry.sdk.logs.SdkLoggerProviderBuilder;
2827
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
29-
import io.opentelemetry.sdk.logs.internal.SdkEventLoggerProvider;
3028
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
3129
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
3230
import io.opentelemetry.sdk.metrics.export.MetricExporter;
@@ -65,6 +63,19 @@
6563
*/
6664
public final class AutoConfiguredOpenTelemetrySdkBuilder implements AutoConfigurationCustomizer {
6765

66+
private static final boolean INCUBATOR_AVAILABLE;
67+
68+
static {
69+
boolean incubatorAvailable = false;
70+
try {
71+
Class.forName("io.opentelemetry.api.incubator.events.GlobalEventLoggerProvider");
72+
incubatorAvailable = true;
73+
} catch (ClassNotFoundException e) {
74+
// Not available
75+
}
76+
INCUBATOR_AVAILABLE = incubatorAvailable;
77+
}
78+
6879
private static final Logger logger =
6980
Logger.getLogger(AutoConfiguredOpenTelemetrySdkBuilder.class.getName());
7081

@@ -592,8 +603,9 @@ private void maybeSetAsGlobal(OpenTelemetrySdk openTelemetrySdk) {
592603
return;
593604
}
594605
GlobalOpenTelemetry.set(openTelemetrySdk);
595-
GlobalEventLoggerProvider.set(
596-
SdkEventLoggerProvider.create(openTelemetrySdk.getSdkLoggerProvider()));
606+
if (INCUBATOR_AVAILABLE) {
607+
IncubatingUtil.setGlobalEventLoggerProvider(openTelemetrySdk.getSdkLoggerProvider());
608+
}
597609
logger.log(
598610
Level.FINE, "Global OpenTelemetry set to {0} by autoconfiguration", openTelemetrySdk);
599611
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.sdk.autoconfigure;
7+
8+
import io.opentelemetry.api.incubator.events.GlobalEventLoggerProvider;
9+
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
10+
import io.opentelemetry.sdk.logs.internal.SdkEventLoggerProvider;
11+
12+
/**
13+
* Utilities for interacting with {@code io.opentelemetry:opentelemetry-api-incubator}, which is not
14+
* guaranteed to be present on the classpath. For all methods, callers MUST first separately
15+
* reflectively confirm that the incubator is available on the classpath.
16+
*/
17+
final class IncubatingUtil {
18+
19+
private IncubatingUtil() {}
20+
21+
static void setGlobalEventLoggerProvider(SdkLoggerProvider sdkLoggerProvider) {
22+
GlobalEventLoggerProvider.set(SdkEventLoggerProvider.create(sdkLoggerProvider));
23+
}
24+
}

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

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
import io.github.netmikey.logunit.api.LogCapturer;
2727
import io.opentelemetry.api.GlobalOpenTelemetry;
2828
import io.opentelemetry.api.OpenTelemetry;
29-
import io.opentelemetry.api.incubator.events.GlobalEventLoggerProvider;
3029
import io.opentelemetry.api.trace.Span;
3130
import io.opentelemetry.api.trace.SpanId;
3231
import io.opentelemetry.api.trace.TraceId;
@@ -49,7 +48,6 @@
4948
import io.opentelemetry.sdk.logs.LogRecordProcessor;
5049
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
5150
import io.opentelemetry.sdk.logs.SdkLoggerProviderBuilder;
52-
import io.opentelemetry.sdk.logs.internal.SdkEventLoggerProvider;
5351
import io.opentelemetry.sdk.metrics.SdkMeterProvider;
5452
import io.opentelemetry.sdk.metrics.SdkMeterProviderBuilder;
5553
import io.opentelemetry.sdk.metrics.export.MetricReader;
@@ -156,7 +154,6 @@ public SdkLoggerProviderBuilder apply(
156154
@BeforeEach
157155
void resetGlobal() {
158156
GlobalOpenTelemetry.resetForTest();
159-
GlobalEventLoggerProvider.resetForTest();
160157
builder =
161158
AutoConfiguredOpenTelemetrySdk.builder()
162159
.addPropertiesSupplier(disableExportPropertySupplier());
@@ -456,18 +453,13 @@ void builder_setResultAsGlobalFalse() {
456453
OpenTelemetrySdk openTelemetry = builder.build().getOpenTelemetrySdk();
457454

458455
assertThat(GlobalOpenTelemetry.get()).extracting("delegate").isNotSameAs(openTelemetry);
459-
assertThat(GlobalEventLoggerProvider.get()).isNotSameAs(openTelemetry.getSdkLoggerProvider());
460456
}
461457

462458
@Test
463459
void builder_setResultAsGlobalTrue() {
464460
OpenTelemetrySdk openTelemetry = builder.setResultAsGlobal().build().getOpenTelemetrySdk();
465461

466462
assertThat(GlobalOpenTelemetry.get()).extracting("delegate").isSameAs(openTelemetry);
467-
assertThat(GlobalEventLoggerProvider.get())
468-
.isInstanceOf(SdkEventLoggerProvider.class)
469-
.extracting("delegateLoggerProvider")
470-
.isSameAs(openTelemetry.getSdkLoggerProvider());
471463
}
472464

473465
@Test
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.sdk.autoconfigure;
7+
8+
import static org.assertj.core.api.Assertions.assertThat;
9+
10+
import io.opentelemetry.api.GlobalOpenTelemetry;
11+
import io.opentelemetry.api.OpenTelemetry;
12+
import io.opentelemetry.api.incubator.events.GlobalEventLoggerProvider;
13+
import io.opentelemetry.sdk.OpenTelemetrySdk;
14+
import io.opentelemetry.sdk.logs.internal.SdkEventLoggerProvider;
15+
import java.util.HashMap;
16+
import java.util.Map;
17+
import java.util.function.Supplier;
18+
import org.junit.jupiter.api.BeforeEach;
19+
import org.junit.jupiter.api.Test;
20+
21+
class AutoconfigureGlobalEventLoggerProviderTest {
22+
23+
private AutoConfiguredOpenTelemetrySdkBuilder builder;
24+
25+
@BeforeEach
26+
void resetGlobal() {
27+
GlobalOpenTelemetry.resetForTest();
28+
GlobalEventLoggerProvider.resetForTest();
29+
builder =
30+
AutoConfiguredOpenTelemetrySdk.builder()
31+
.addPropertiesSupplier(disableExportPropertySupplier());
32+
}
33+
34+
@Test
35+
void builder_setResultAsGlobalFalse() {
36+
GlobalOpenTelemetry.set(OpenTelemetry.noop());
37+
38+
OpenTelemetrySdk openTelemetry = builder.build().getOpenTelemetrySdk();
39+
40+
assertThat(GlobalOpenTelemetry.get()).extracting("delegate").isNotSameAs(openTelemetry);
41+
assertThat(GlobalEventLoggerProvider.get()).isNotSameAs(openTelemetry.getSdkLoggerProvider());
42+
}
43+
44+
@Test
45+
void builder_setResultAsGlobalTrue() {
46+
OpenTelemetrySdk openTelemetry = builder.setResultAsGlobal().build().getOpenTelemetrySdk();
47+
48+
assertThat(GlobalOpenTelemetry.get()).extracting("delegate").isSameAs(openTelemetry);
49+
assertThat(GlobalEventLoggerProvider.get())
50+
.isInstanceOf(SdkEventLoggerProvider.class)
51+
.extracting("delegateLoggerProvider")
52+
.isSameAs(openTelemetry.getSdkLoggerProvider());
53+
}
54+
55+
private static Supplier<Map<String, String>> disableExportPropertySupplier() {
56+
Map<String, String> props = new HashMap<>();
57+
props.put("otel.metrics.exporter", "none");
58+
props.put("otel.traces.exporter", "none");
59+
props.put("otel.logs.exporter", "none");
60+
return () -> props;
61+
}
62+
}

sdk/logs/build.gradle.kts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ otelJava.moduleName.set("io.opentelemetry.sdk.logs")
1212
dependencies {
1313
api(project(":api:all"))
1414
api(project(":sdk:common"))
15-
implementation(project(":api:incubator"))
15+
compileOnly(project(":api:incubator"))
1616

1717
annotationProcessor("com.google.auto.value:auto-value")
1818

@@ -21,3 +21,21 @@ dependencies {
2121
testImplementation("org.awaitility:awaitility")
2222
testImplementation("com.google.guava:guava")
2323
}
24+
25+
testing {
26+
suites {
27+
register<JvmTestSuite>("testIncubating") {
28+
dependencies {
29+
implementation(project(":sdk:testing"))
30+
implementation(project(":api:incubator"))
31+
implementation("com.google.guava:guava")
32+
}
33+
}
34+
}
35+
}
36+
37+
tasks {
38+
check {
39+
dependsOn(testing.suites)
40+
}
41+
}

0 commit comments

Comments
 (0)