Skip to content

Commit 8f41449

Browse files
authored
Suppress more test logs (#8536)
1 parent 0225a99 commit 8f41449

18 files changed

Lines changed: 71 additions & 39 deletions

File tree

all/src/test/java/io/opentelemetry/all/NoSharedInternalCodeTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.tngtech.archunit.core.domain.JavaClasses;
1313
import com.tngtech.archunit.core.importer.ClassFileImporter;
1414
import com.tngtech.archunit.lang.syntax.elements.ClassesShouldConjunction;
15+
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
1516
import java.io.File;
1617
import java.io.IOException;
1718
import java.nio.file.Files;
@@ -27,6 +28,7 @@
2728
import org.junit.jupiter.params.provider.Arguments;
2829
import org.junit.jupiter.params.provider.MethodSource;
2930

31+
@SuppressLogger(NoSharedInternalCodeTest.class)
3032
class NoSharedInternalCodeTest {
3133

3234
private static final Set<String> exemptions =

api/all/src/test/java/io/opentelemetry/api/baggage/BaggageEntryMetadataTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import static org.assertj.core.api.Assertions.assertThat;
99

1010
import com.google.common.testing.EqualsTester;
11+
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
1112
import org.junit.jupiter.api.Test;
1213

1314
class BaggageEntryMetadataTest {
@@ -19,6 +20,7 @@ void getValue() {
1920
}
2021

2122
@Test
23+
@SuppressLogger(loggerName = "io.opentelemetry.usage")
2224
void nullValue() {
2325
assertThat(BaggageEntryMetadata.create(null)).isEqualTo(BaggageEntryMetadata.empty());
2426
}

api/testing-internal/src/main/java/io/opentelemetry/api/testing/internal/AbstractDefaultTracerTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import io.opentelemetry.api.trace.Tracer;
2121
import io.opentelemetry.api.trace.TracerProvider;
2222
import io.opentelemetry.context.Context;
23+
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
2324
import java.time.Instant;
2425
import java.util.concurrent.TimeUnit;
2526
import org.junit.jupiter.api.Test;
@@ -124,6 +125,7 @@ void spanContextPropagation_fromContextThenNoParent() {
124125

125126
@Test
126127
@SuppressWarnings("NullAway")
128+
@SuppressLogger(loggerName = "io.opentelemetry.usage")
127129
void doNotCrash_NoopImplementation() {
128130
assertThatCode(
129131
() -> {

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,8 @@ testing {
332332
all {
333333
testTask.configure {
334334
systemProperty("java.util.logging.config.class", "io.opentelemetry.internal.testing.slf4j.JulBridgeInitializer")
335+
systemProperty("org.slf4j.simpleLogger.log.io.micrometer.core.instrument.MeterRegistry", "error")
336+
systemProperty("org.slf4j.simpleLogger.log.tc", "error")
335337

336338
// Starting in java 21, dynamically attaching agents triggers warnings. Mockito depends on
337339
// agents to redefine classes. Hence, on java 21+ we get warnings of the form:

exporters/otlp/all/src/testDefaultSender/java/io/opentelemetry/exporter/otlp/OkHttpVersionTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import static org.assertj.core.api.Assertions.assertThat;
99
import static org.assertj.core.api.Assumptions.assumeThat;
1010

11+
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
1112
import java.util.logging.Level;
1213
import java.util.logging.Logger;
1314
import okhttp3.OkHttp;
@@ -18,6 +19,7 @@ class OkHttpVersionTest {
1819
private static final Logger LOGGER = Logger.getLogger(OkHttpVersionTest.class.getName());
1920

2021
@Test
22+
@SuppressLogger(OkHttpVersionTest.class)
2123
void expectedOkHttpVersion() {
2224
String expectedVersion = System.getProperty("expected.okhttp.version");
2325
LOGGER.log(Level.WARNING, "Testing okhttp version " + expectedVersion);

exporters/prometheus/src/main/java/io/opentelemetry/exporter/prometheus/Otel2PrometheusConverter.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171
final class Otel2PrometheusConverter {
7272

7373
private static final Logger LOGGER = Logger.getLogger(Otel2PrometheusConverter.class.getName());
74-
private static final ThrottlingLogger THROTTLING_LOGGER = new ThrottlingLogger(LOGGER);
74+
private final ThrottlingLogger throttlingLogger = new ThrottlingLogger(LOGGER);
7575
// Prometheus limits the total UTF-8 character count across all exemplar label names and values
7676
// to 128. See https://github.com/open-telemetry/opentelemetry-java/issues/6770
7777
private static final int EXEMPLAR_MAX_LABEL_SET_LENGTH = 128;
@@ -161,7 +161,7 @@ private MetricSnapshot convert(MetricData metricData) {
161161
try {
162162
return doConvert(metricData);
163163
} catch (IllegalArgumentException e) {
164-
THROTTLING_LOGGER.log(
164+
throttlingLogger.log(
165165
Level.WARNING,
166166
"Failed to convert metric " + metricData.getName() + ". Dropping metric.",
167167
e);
@@ -338,7 +338,7 @@ private HistogramSnapshot convertExponentialHistogram(
338338
for (ExponentialHistogramPointData histogramData : dataPoints) {
339339
int scale = histogramData.getScale();
340340
if (scale < -4) {
341-
THROTTLING_LOGGER.log(
341+
throttlingLogger.log(
342342
Level.WARNING,
343343
"Dropping histogram "
344344
+ metadata.getName()
@@ -461,7 +461,7 @@ private Exemplar convertExemplar(double value, ExemplarData exemplar) {
461461
if (labelSetLength(labels) > EXEMPLAR_MAX_LABEL_SET_LENGTH) {
462462
// Drop filtered attributes to stay within Prometheus 128-char exemplar label limit,
463463
// keeping trace_id and span_id which are the most valuable for correlation.
464-
THROTTLING_LOGGER.log(
464+
throttlingLogger.log(
465465
Level.WARNING,
466466
"Exemplar attributes exceeded Prometheus limit of "
467467
+ EXEMPLAR_MAX_LABEL_SET_LENGTH
@@ -484,7 +484,7 @@ private Exemplar convertExemplar(double value, ExemplarData exemplar) {
484484
null, // scope attributes are only needed for point's attributes
485485
exemplar.getFilteredAttributes());
486486
if (labelSetLength(labels) > EXEMPLAR_MAX_LABEL_SET_LENGTH) {
487-
THROTTLING_LOGGER.log(
487+
throttlingLogger.log(
488488
Level.WARNING,
489489
"Exemplar attributes exceeded Prometheus limit of "
490490
+ EXEMPLAR_MAX_LABEL_SET_LENGTH
@@ -822,7 +822,7 @@ private static void validateNormalizedMetricName(String originalName, String nor
822822
* type. If the type differs, we log a message and drop one of them.
823823
*/
824824
@Nullable
825-
private static MetricSnapshot merge(MetricSnapshot a, MetricSnapshot b) {
825+
private MetricSnapshot merge(MetricSnapshot a, MetricSnapshot b) {
826826
MetricMetadata metadata = mergeMetadata(a.getMetadata(), b.getMetadata());
827827
if (metadata == null) {
828828
return null;
@@ -854,7 +854,7 @@ private static MetricSnapshot merge(MetricSnapshot a, MetricSnapshot b) {
854854
dataPoints.addAll(((InfoSnapshot) b).getDataPoints());
855855
return new InfoSnapshot(metadata, dataPoints);
856856
} else {
857-
THROTTLING_LOGGER.log(
857+
throttlingLogger.log(
858858
Level.WARNING,
859859
"Conflicting metric name "
860860
+ a.getMetadata().getPrometheusName()
@@ -870,7 +870,7 @@ private static MetricSnapshot merge(MetricSnapshot a, MetricSnapshot b) {
870870
}
871871

872872
@Nullable
873-
private static MetricMetadata mergeMetadata(MetricMetadata a, MetricMetadata b) {
873+
private MetricMetadata mergeMetadata(MetricMetadata a, MetricMetadata b) {
874874
String name = a.getPrometheusName();
875875
if (a.getName().equals(b.getName())) {
876876
name = a.getName();
@@ -881,7 +881,7 @@ private static MetricMetadata mergeMetadata(MetricMetadata a, MetricMetadata b)
881881
}
882882
Unit unit = a.getUnit();
883883
if (unit != null && !unit.equals(b.getUnit())) {
884-
THROTTLING_LOGGER.log(
884+
throttlingLogger.log(
885885
Level.WARNING,
886886
"Conflicting metrics: Multiple metrics with name "
887887
+ name

exporters/prometheus/src/test/java/io/opentelemetry/exporter/prometheus/Otel2PrometheusConverterTest.java

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import io.opentelemetry.api.trace.SpanContext;
2525
import io.opentelemetry.api.trace.TraceFlags;
2626
import io.opentelemetry.api.trace.TraceState;
27+
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
2728
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
2829
import io.opentelemetry.sdk.metrics.data.AggregationTemporality;
2930
import io.opentelemetry.sdk.metrics.data.ExponentialHistogramBuckets;
@@ -61,6 +62,7 @@
6162
import java.io.IOException;
6263
import java.lang.reflect.InvocationTargetException;
6364
import java.lang.reflect.Method;
65+
import java.lang.reflect.Modifier;
6466
import java.nio.charset.StandardCharsets;
6567
import java.util.ArrayList;
6668
import java.util.Arrays;
@@ -78,6 +80,7 @@
7880
import org.junit.jupiter.params.provider.Arguments;
7981
import org.junit.jupiter.params.provider.MethodSource;
8082

83+
@SuppressLogger(Otel2PrometheusConverter.class)
8184
class Otel2PrometheusConverterTest {
8285

8386
private static final Pattern PATTERN =
@@ -1062,7 +1065,7 @@ void validateCacheIsBounded() {
10621065
void mergeInfoSnapshotsWithSameName() throws Exception {
10631066
InfoSnapshot merged =
10641067
(InfoSnapshot)
1065-
invokePrivateStatic(
1068+
invokePrivate(
10661069
"merge",
10671070
new Class<?>[] {MetricSnapshot.class, MetricSnapshot.class},
10681071
makeInfoSnapshot("a"),
@@ -1074,7 +1077,7 @@ void mergeInfoSnapshotsWithSameName() throws Exception {
10741077
@Test
10751078
void mergeConflictingTypesReturnsNull() throws Exception {
10761079
Object merged =
1077-
invokePrivateStatic(
1080+
invokePrivate(
10781081
"merge",
10791082
new Class<?>[] {MetricSnapshot.class, MetricSnapshot.class},
10801083
makeInfoSnapshot("a"),
@@ -1088,7 +1091,7 @@ void mergeConflictingTypesReturnsNull() throws Exception {
10881091
@Test
10891092
void mergeMetadataReturnsNullForDifferentUnits() throws Exception {
10901093
Object merged =
1091-
invokePrivateStatic(
1094+
invokePrivate(
10921095
"mergeMetadata",
10931096
new Class<?>[] {MetricMetadata.class, MetricMetadata.class},
10941097
MetricMetadata.builder().name("sample").unit(new Unit("seconds")).build(),
@@ -1100,24 +1103,23 @@ void mergeMetadataReturnsNullForDifferentUnits() throws Exception {
11001103
@Test
11011104
void convertLegacyLabelNameRejectsEmptyName() {
11021105
assertThatThrownBy(
1103-
() -> invokePrivateStatic("convertLegacyLabelName", new Class<?>[] {String.class}, ""))
1106+
() -> invokePrivate("convertLegacyLabelName", new Class<?>[] {String.class}, ""))
11041107
.hasCauseInstanceOf(IllegalArgumentException.class)
11051108
.hasRootCauseMessage("label name is empty");
11061109
}
11071110

11081111
@Test
11091112
void stripReservedMetricSuffixesHandlesReservedNameOnly() throws Exception {
11101113
assertThat(
1111-
invokePrivateStatic(
1112-
"stripReservedMetricSuffixes", new Class<?>[] {String.class}, "_total"))
1114+
invokePrivate("stripReservedMetricSuffixes", new Class<?>[] {String.class}, "_total"))
11131115
.isEqualTo("total");
11141116
}
11151117

11161118
@Test
11171119
void validateNormalizedMetricNameRejectsEmptyName() {
11181120
assertThatThrownBy(
11191121
() ->
1120-
invokePrivateStatic(
1122+
invokePrivate(
11211123
"validateNormalizedMetricName",
11221124
new Class<?>[] {String.class, String.class},
11231125
"orig",
@@ -1130,7 +1132,7 @@ void validateNormalizedMetricNameRejectsEmptyName() {
11301132
void convertExponentialHistogramBucketsReturnsEmptyForNoBuckets() throws Exception {
11311133
NativeHistogramBuckets buckets =
11321134
(NativeHistogramBuckets)
1133-
invokePrivateStatic(
1135+
invokePrivate(
11341136
"convertExponentialHistogramBuckets",
11351137
new Class<?>[] {ExponentialHistogramBuckets.class, int.class},
11361138
ImmutableExponentialHistogramBuckets.create(0, 0, Collections.emptyList()),
@@ -1142,7 +1144,7 @@ void convertExponentialHistogramBucketsReturnsEmptyForNoBuckets() throws Excepti
11421144
@Test
11431145
void typeStringUsesLowerCaseClassName() throws Exception {
11441146
assertThat(
1145-
invokePrivateStatic(
1147+
invokePrivate(
11461148
"typeString", new Class<?>[] {MetricSnapshot.class}, makeInfoSnapshot("a")))
11471149
.isEqualTo("info");
11481150
}
@@ -1233,12 +1235,15 @@ private static InfoSnapshot makeInfoSnapshot(String id) {
12331235
Labels.of(new String[] {"id"}, new String[] {id}))));
12341236
}
12351237

1236-
private static Object invokePrivateStatic(
1237-
String methodName, Class<?>[] parameterTypes, Object... args) throws Exception {
1238+
private Object invokePrivate(String methodName, Class<?>[] parameterTypes, Object... args)
1239+
throws Exception {
12381240
Method method = Otel2PrometheusConverter.class.getDeclaredMethod(methodName, parameterTypes);
12391241
method.setAccessible(true);
1242+
// Support both static and instance methods: static methods receive null, instance methods
1243+
// receive the converter instance so that instance fields (e.g. throttlingLogger) are available.
1244+
Object instance = Modifier.isStatic(method.getModifiers()) ? null : converter;
12401245
try {
1241-
return method.invoke(null, args);
1246+
return method.invoke(instance, args);
12421247
} catch (InvocationTargetException e) {
12431248
throw e;
12441249
}

sdk-extensions/autoconfigure/src/testDeclarativeConfigSpi/java/io/opentelemetry/sdk/autoconfigure/TestDeclarativeConfigurationProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class TestDeclarativeConfigurationProvider implements DeclarativeConfigur
1515
@Override
1616
public OpenTelemetryConfigurationModel getConfigurationModel() {
1717
String yaml =
18-
"file_format: \"1.0\"\n"
18+
"file_format: \"1.1\"\n"
1919
+ "resource:\n"
2020
+ " detection/development:\n"
2121
+ " detectors:\n"

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
// All tests fail due to config errors so never register a global. We can test everything here
2525
// without separating test sets.
26+
@SuppressLogger(loggerName = "io.opentelemetry.sdk.metrics.export.PeriodicMetricReader")
2627
class ConfigErrorTest {
2728

2829
@RegisterExtension

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

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,16 @@
99
import static org.assertj.core.api.Assertions.assertThatThrownBy;
1010

1111
import com.google.common.collect.ImmutableMap;
12+
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
1213
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
1314
import io.opentelemetry.sdk.autoconfigure.provider.TestConfigurableSamplerProvider;
1415
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
1516
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurationException;
1617
import io.opentelemetry.sdk.autoconfigure.spi.internal.DefaultConfigProperties;
1718
import io.opentelemetry.sdk.extension.trace.jaeger.sampler.JaegerRemoteSampler;
1819
import io.opentelemetry.sdk.trace.samplers.Sampler;
20+
import java.io.Closeable;
21+
import java.lang.reflect.Field;
1922
import java.net.URL;
2023
import java.net.URLClassLoader;
2124
import java.util.Collections;
@@ -64,16 +67,18 @@ void samplerNotFound() {
6467
}
6568

6669
@Test
67-
void configureSampler_JaegerRemoteSampler() {
68-
assertThat(
69-
TracerProviderConfiguration.configureSampler(
70-
"parentbased_jaeger_remote",
71-
DefaultConfigProperties.createFromMap(Collections.emptyMap()),
72-
spiHelper))
73-
.satisfies(
74-
sampler -> {
75-
assertThat(sampler.getClass().getSimpleName()).isEqualTo("ParentBasedSampler");
76-
assertThat(sampler).extracting("root").isInstanceOf(JaegerRemoteSampler.class);
77-
});
70+
@SuppressLogger(JaegerRemoteSampler.class)
71+
void configureSampler_JaegerRemoteSampler() throws Exception {
72+
Sampler sampler =
73+
TracerProviderConfiguration.configureSampler(
74+
"parentbased_jaeger_remote",
75+
DefaultConfigProperties.createFromMap(Collections.emptyMap()),
76+
spiHelper);
77+
assertThat(sampler.getClass().getSimpleName()).isEqualTo("ParentBasedSampler");
78+
assertThat(sampler).extracting("root").isInstanceOf(JaegerRemoteSampler.class);
79+
// Close the inner JaegerRemoteSampler to shut down its background thread.
80+
Field rootField = sampler.getClass().getDeclaredField("root");
81+
rootField.setAccessible(true);
82+
((Closeable) rootField.get(sampler)).close();
7883
}
7984
}

0 commit comments

Comments
 (0)