Skip to content

Commit 914e359

Browse files
authored
Suppress noisy test logs (#7948)
1 parent eed5dbc commit 914e359

File tree

12 files changed

+85
-91
lines changed

12 files changed

+85
-91
lines changed

buildSrc/src/main/kotlin/otel.java-conventions.gradle.kts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,10 @@ val dependencyManagement by configurations.creating {
216216
isCanBeResolved = false
217217
}
218218

219+
val mockitoAgent by configurations.creating {
220+
extendsFrom(dependencyManagement)
221+
}
222+
219223
dependencies {
220224
dependencyManagement(platform(project(":dependencyManagement")))
221225
afterEvaluate {
@@ -226,6 +230,8 @@ dependencies {
226230
}
227231
}
228232

233+
mockitoAgent("org.mockito:mockito-core")
234+
229235
compileOnly("com.google.auto.value:auto-value-annotations")
230236
compileOnly("com.google.code.findbugs:jsr305")
231237

@@ -272,6 +278,19 @@ testing {
272278
all {
273279
testTask.configure {
274280
systemProperty("java.util.logging.config.class", "io.opentelemetry.internal.testing.slf4j.JulBridgeInitializer")
281+
282+
// Starting in java 21, dynamically attaching agents triggers warnings. Mockito depends on
283+
// agents to redefine classes. Hence, on java 21+ we get warnings of the form:
284+
// WARNING: A Java agent has been loaded dynamically (/Users/jberg/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.12.19/450917cf3b358b691a824acf4c67aa89c826f67e/byte-buddy-agent-1.12.19.jar)
285+
// WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warning
286+
// WARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more information
287+
// WARNING: Dynamic loading of agents will be disallowed by default in a future release
288+
// To remove these warnings, we attach the byte-buddy-agent used by mockito directly.
289+
val mockitoAgent: FileCollection = mockitoAgent
290+
doFirst {
291+
val mockitoAgentJar = mockitoAgent.files.single { it.name.contains("byte-buddy-agent")}
292+
jvmArgs("-javaagent:${mockitoAgentJar}")
293+
}
275294
}
276295
}
277296
}

opentracing-shim/src/test/java/io/opentelemetry/opentracingshim/TracerShimTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import io.opentelemetry.api.trace.TracerProvider;
1717
import io.opentelemetry.context.Context;
1818
import io.opentelemetry.context.propagation.TextMapPropagator;
19+
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
1920
import io.opentelemetry.sdk.OpenTelemetrySdk;
2021
import io.opentelemetry.sdk.testing.junit5.OpenTelemetryExtension;
2122
import io.opentelemetry.sdk.trace.SdkTracerProvider;
@@ -276,13 +277,15 @@ void extract_nullContext() {
276277
}
277278

278279
@Test
280+
@SuppressLogger(TracerShim.class)
279281
void inject_nullContext() {
280282
Map<String, String> map = new HashMap<>();
281283
tracerShim.inject(null, Format.Builtin.TEXT_MAP, new TextMapAdapter(map));
282284
assertThat(map).isEmpty();
283285
}
284286

285287
@Test
288+
@SuppressLogger(TracerShim.class)
286289
void inject_invalid() {
287290
Map<String, String> map = new HashMap<>();
288291
tracerShim.inject(mock(SpanContext.class), Format.Builtin.TEXT_MAP, new TextMapAdapter(map));
@@ -358,6 +361,7 @@ void extract_onlyBaggage() {
358361
}
359362

360363
@Test
364+
@SuppressLogger(TracerShim.class)
361365
void close_OpenTelemetrySdk() {
362366
SdkTracerProvider sdkProvider = mock(SdkTracerProvider.class);
363367
doThrow(new RuntimeException("testing error")).when(sdkProvider).close();
@@ -375,6 +379,7 @@ void close_OpenTelemetrySdk() {
375379
}
376380

377381
@Test
382+
@SuppressLogger(TracerShim.class)
378383
void close_GlobalOpenTelemetry() {
379384
GlobalOpenTelemetry.resetForTest();
380385
SdkTracerProvider sdkProvider = mock(SdkTracerProvider.class);

sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/DeclarativeConfigurationCreateTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@
1717
import io.opentelemetry.api.incubator.config.DeclarativeConfigException;
1818
import io.opentelemetry.common.ComponentLoader;
1919
import io.opentelemetry.internal.testing.CleanupExtension;
20+
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
2021
import io.opentelemetry.sdk.OpenTelemetrySdk;
2122
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
2223
import io.opentelemetry.sdk.extension.incubator.ExtendedOpenTelemetrySdk;
2324
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
2425
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SpanProcessorModel;
2526
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.TracerProviderModel;
27+
import io.opentelemetry.sdk.trace.samplers.ParentBasedSamplerBuilder;
2628
import java.io.ByteArrayInputStream;
2729
import java.io.File;
2830
import java.io.IOException;
@@ -58,6 +60,7 @@ class DeclarativeConfigurationCreateTest {
5860
* can pass {@link DeclarativeConfiguration#parseAndCreate(InputStream)}.
5961
*/
6062
@Test
63+
@SuppressLogger(ParentBasedSamplerBuilder.class)
6164
void parseAndCreate_Examples(@TempDir Path tempDir)
6265
throws IOException, CertificateEncodingException {
6366
// Write certificates to temp files
@@ -175,6 +178,7 @@ void create_ModelCustomizer() {
175178
}
176179

177180
@Test
181+
@SuppressLogger(DeclarativeConfiguration.class)
178182
void callAutoConfigureListeners_exceptionIsCaught() {
179183
SpiHelper spiHelper = mock(SpiHelper.class);
180184
when(spiHelper.getListeners())

sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/SamplerFactoryTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import io.opentelemetry.sdk.extension.incubator.trace.samplers.ComposableSampler;
3030
import io.opentelemetry.sdk.extension.incubator.trace.samplers.CompositeSampler;
3131
import io.opentelemetry.sdk.extension.trace.jaeger.sampler.JaegerRemoteSampler;
32+
import io.opentelemetry.sdk.trace.samplers.ParentBasedSamplerBuilder;
3233
import io.opentelemetry.sdk.trace.samplers.Sampler;
3334
import java.io.Closeable;
3435
import java.time.Duration;
@@ -45,6 +46,7 @@
4546
// Suppress logs from JaegerRemoteSampler
4647
@SuppressLogger(
4748
loggerName = "io.opentelemetry.sdk.extension.trace.jaeger.sampler.OkHttpGrpcService")
49+
@SuppressLogger(ParentBasedSamplerBuilder.class)
4850
class SamplerFactoryTest {
4951

5052
@RegisterExtension CleanupExtension cleanup = new CleanupExtension();

sdk-extensions/incubator/src/test/java/io/opentelemetry/sdk/extension/incubator/fileconfig/YamlDeclarativeConfigPropertiesTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.google.common.collect.ImmutableSet;
1212
import io.github.netmikey.logunit.api.LogCapturer;
1313
import io.opentelemetry.api.incubator.config.DeclarativeConfigProperties;
14+
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
1415
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
1516
import java.io.ByteArrayInputStream;
1617
import java.nio.charset.StandardCharsets;
@@ -21,6 +22,7 @@
2122
import org.junit.jupiter.api.Test;
2223
import org.junit.jupiter.api.extension.RegisterExtension;
2324

25+
@SuppressLogger(YamlDeclarativeConfigProperties.class)
2426
class YamlDeclarativeConfigPropertiesTest {
2527

2628
@RegisterExtension

sdk/logs/src/test/java/io/opentelemetry/sdk/logs/export/BatchLogRecordProcessorTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ void builderInvalidConfig() {
122122
}
123123

124124
@Test
125+
@SuppressLogger(BatchLogRecordProcessorBuilder.class)
125126
void builderAdjustMaxBatchSize() {
126127
LogRecordExporter dummyExporter = new CompletableLogRecordExporter();
127128

@@ -136,6 +137,7 @@ void builderAdjustMaxBatchSize() {
136137
}
137138

138139
@Test
140+
@SuppressLogger(BatchLogRecordProcessorBuilder.class)
139141
void maxExportBatchSizeExceedsQueueSize() throws InterruptedException {
140142
// Given a processor configured with a maxExportBatchSize > maxQueueSize, ensure that after n =
141143
// maxQueueSize logs are emitted, export is triggered and that the queue is fully drained and

sdk/metrics/src/test/java/io/opentelemetry/sdk/metrics/export/PeriodicMetricReaderTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ void flush() throws Exception {
155155
}
156156

157157
@Test
158+
@SuppressLogger(PeriodicMetricReader.class)
158159
void forceflush_callsFlush() {
159160
MetricExporter metricExporter = mock(MetricExporter.class);
160161
when(metricExporter.export(any()))

sdk/trace/src/main/java/io/opentelemetry/sdk/trace/samplers/ParentBasedSamplerBuilder.java

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public final class ParentBasedSamplerBuilder {
2020
@Nullable private Sampler localParentNotSampled;
2121

2222
ParentBasedSamplerBuilder(Sampler root) {
23+
maybeLogTraceIdSamplerWarning(root, "root");
2324
this.root = root;
2425
}
2526

@@ -30,12 +31,7 @@ public final class ParentBasedSamplerBuilder {
3031
* @return this Builder
3132
*/
3233
public ParentBasedSamplerBuilder setRemoteParentSampled(Sampler remoteParentSampled) {
33-
if (remoteParentSampled instanceof TraceIdRatioBasedSampler) {
34-
logger.warning(
35-
"TraceIdRatioBasedSampler is being used as a child sampler (remoteParentSampled). "
36-
+ "This configuration is discouraged per the OpenTelemetry specification "
37-
+ "and may lead to unexpected sampling behavior.");
38-
}
34+
maybeLogTraceIdSamplerWarning(remoteParentSampled, "remoteParentSampled");
3935
this.remoteParentSampled = remoteParentSampled;
4036
return this;
4137
}
@@ -47,12 +43,7 @@ public ParentBasedSamplerBuilder setRemoteParentSampled(Sampler remoteParentSamp
4743
* @return this Builder
4844
*/
4945
public ParentBasedSamplerBuilder setRemoteParentNotSampled(Sampler remoteParentNotSampled) {
50-
if (remoteParentNotSampled instanceof TraceIdRatioBasedSampler) {
51-
logger.warning(
52-
"TraceIdRatioBasedSampler is being used as a child sampler (remoteParentNotSampled). "
53-
+ "This configuration is discouraged per the OpenTelemetry specification "
54-
+ "and may lead to unexpected sampling behavior.");
55-
}
46+
maybeLogTraceIdSamplerWarning(remoteParentNotSampled, "remoteParentNotSampled");
5647
this.remoteParentNotSampled = remoteParentNotSampled;
5748
return this;
5849
}
@@ -64,12 +55,7 @@ public ParentBasedSamplerBuilder setRemoteParentNotSampled(Sampler remoteParentN
6455
* @return this Builder
6556
*/
6657
public ParentBasedSamplerBuilder setLocalParentSampled(Sampler localParentSampled) {
67-
if (localParentSampled instanceof TraceIdRatioBasedSampler) {
68-
logger.warning(
69-
"TraceIdRatioBasedSampler is being used as a child sampler (localParentSampled). "
70-
+ "This configuration is discouraged per the OpenTelemetry specification "
71-
+ "and may lead to unexpected sampling behavior.");
72-
}
58+
maybeLogTraceIdSamplerWarning(localParentSampled, "localParentSampled");
7359
this.localParentSampled = localParentSampled;
7460
return this;
7561
}
@@ -81,14 +67,20 @@ public ParentBasedSamplerBuilder setLocalParentSampled(Sampler localParentSample
8167
* @return this Builder
8268
*/
8369
public ParentBasedSamplerBuilder setLocalParentNotSampled(Sampler localParentNotSampled) {
84-
if (localParentNotSampled instanceof TraceIdRatioBasedSampler) {
70+
maybeLogTraceIdSamplerWarning(localParentNotSampled, "localParentNotSampled");
71+
this.localParentNotSampled = localParentNotSampled;
72+
return this;
73+
}
74+
75+
private static void maybeLogTraceIdSamplerWarning(Sampler sampler, String field) {
76+
if (sampler instanceof TraceIdRatioBasedSampler) {
8577
logger.warning(
86-
"TraceIdRatioBasedSampler is being used as a child sampler (localParentNotSampled). "
78+
"TraceIdRatioBasedSampler is being used as a child sampler ("
79+
+ field
80+
+ "). "
8781
+ "This configuration is discouraged per the OpenTelemetry specification "
8882
+ "and may lead to unexpected sampling behavior.");
8983
}
90-
this.localParentNotSampled = localParentNotSampled;
91-
return this;
9284
}
9385

9486
/**

sdk/trace/src/test/java/io/opentelemetry/sdk/trace/SdkTracerProviderMetricsTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -716,6 +716,7 @@ void batch() throws Exception {
716716
BatchSpanProcessor processor =
717717
BatchSpanProcessor.builder(mockExporter)
718718
.setMaxQueueSize(1)
719+
.setMaxExportBatchSize(1)
719720
// Manually flush
720721
.setScheduleDelay(Duration.ofDays(1))
721722
.setInternalTelemetryVersion(InternalTelemetryVersion.LATEST)

sdk/trace/src/test/java/io/opentelemetry/sdk/trace/export/BatchSpanProcessorTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ void builderInvalidConfig() {
130130
}
131131

132132
@Test
133+
@SuppressLogger(BatchSpanProcessorBuilder.class)
133134
void builderAdjustMaxBatchSize() {
134135
SpanExporter dummyExporter = new CompletableSpanExporter();
135136

@@ -142,6 +143,7 @@ void builderAdjustMaxBatchSize() {
142143
}
143144

144145
@Test
146+
@SuppressLogger(BatchSpanProcessorBuilder.class)
145147
void maxExportBatchSizeExceedsQueueSize() throws InterruptedException {
146148
// Given a processor configured with a maxExportBatchSize > maxQueueSize, ensure that after n =
147149
// maxQueueSize spans are ended, export is triggered and that the queue is fully drained and

0 commit comments

Comments
 (0)