Skip to content

Commit

Permalink
Another round of log suppression (open-telemetry#4342)
Browse files Browse the repository at this point in the history
* Another round of log suppression

* Suppress logs from HttpServerPipelineConfigurator
  • Loading branch information
jack-berg authored Apr 7, 2022
1 parent 6692683 commit 0b94400
Show file tree
Hide file tree
Showing 16 changed files with 80 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import io.opentelemetry.exporter.internal.otlp.metrics.ResourceMetricsMarshaler;
import io.opentelemetry.exporter.internal.retry.RetryPolicy;
import io.opentelemetry.exporter.internal.retry.RetryUtil;
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
import io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceRequest;
import io.opentelemetry.proto.collector.metrics.v1.ExportMetricsServiceResponse;
import io.opentelemetry.proto.metrics.v1.ResourceMetrics;
Expand Down Expand Up @@ -274,6 +275,7 @@ private static byte[] gzipDecompress(byte[] bytes) {
}

@Test
@SuppressLogger(OkHttpExporter.class)
void testServerError() {
server.enqueue(
buildResponse(
Expand All @@ -289,6 +291,7 @@ void testServerError() {
}

@Test
@SuppressLogger(OkHttpExporter.class)
void testServerErrorParseError() {
server.enqueue(
HttpResponse.of(HttpStatus.INTERNAL_SERVER_ERROR, APPLICATION_PROTOBUF, "Server error!"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import io.opentelemetry.exporter.internal.otlp.traces.ResourceSpansMarshaler;
import io.opentelemetry.exporter.internal.retry.RetryPolicy;
import io.opentelemetry.exporter.internal.retry.RetryUtil;
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
import io.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest;
import io.opentelemetry.proto.collector.trace.v1.ExportTraceServiceResponse;
import io.opentelemetry.proto.trace.v1.ResourceSpans;
Expand Down Expand Up @@ -264,6 +265,7 @@ private static byte[] gzipDecompress(byte[] bytes) {
}

@Test
@SuppressLogger(OkHttpExporter.class)
void testServerError() {
server.enqueue(
buildResponse(
Expand All @@ -279,6 +281,7 @@ void testServerError() {
}

@Test
@SuppressLogger(OkHttpExporter.class)
void testServerErrorParseError() {
server.enqueue(
HttpResponse.of(HttpStatus.INTERNAL_SERVER_ERROR, APPLICATION_PROTOBUF, "Server error!"));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,8 @@ void deadlineSetPerExport() throws InterruptedException {
}

@Test
@SuppressLogger(OkHttpGrpcExporter.class)
@SuppressLogger(DefaultGrpcExporter.class)
void exportAfterShutdown() {
TelemetryExporter<T> exporter =
exporterBuilder().setEndpoint(server.httpUri().toString()).build();
Expand Down Expand Up @@ -431,6 +433,8 @@ void testExport_Unimplemented() {

@ParameterizedTest
@ValueSource(ints = {1, 4, 8, 10, 11, 14, 15})
@SuppressLogger(OkHttpGrpcExporter.class)
@SuppressLogger(DefaultGrpcExporter.class)
void retryableError(int code) {
addGrpcError(code, null);

Expand All @@ -451,6 +455,8 @@ void retryableError(int code) {
}

@Test
@SuppressLogger(OkHttpGrpcExporter.class)
@SuppressLogger(DefaultGrpcExporter.class)
void retryableError_tooManyAttempts() {
addGrpcError(1, null);
addGrpcError(1, null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,14 @@
import io.opentelemetry.proto.metrics.v1.ResourceMetrics;
import io.opentelemetry.proto.metrics.v1.ScopeMetrics;
import io.opentelemetry.sdk.logs.LogEmitter;
import io.opentelemetry.sdk.logs.SdkLogEmitterProvider;
import io.opentelemetry.sdk.logs.data.Severity;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.TimeUnit;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
Expand Down Expand Up @@ -142,7 +143,7 @@ public void export(
}
};

private SdkLogEmitterProvider logEmitterProvider;
private AutoConfiguredOpenTelemetrySdk autoConfiguredOpenTelemetrySdk;

@BeforeEach
void setUp() {
Expand All @@ -154,11 +155,27 @@ void setUp() {
System.setProperty("otel.exporter.otlp.endpoint", endpoint);
System.setProperty("otel.exporter.otlp.timeout", "10000");

// SdkLogEmitterProvider isn't globally accessible so we initialize here to get a reference
logEmitterProvider =
AutoConfiguredOpenTelemetrySdk.initialize()
.getOpenTelemetrySdk()
.getSdkLogEmitterProvider();
// Initialize here so we get SdkLogEmitterProvider and shutdown when done
autoConfiguredOpenTelemetrySdk = AutoConfiguredOpenTelemetrySdk.initialize();
}

@AfterEach
void afterEach() {
autoConfiguredOpenTelemetrySdk
.getOpenTelemetrySdk()
.getSdkMeterProvider()
.shutdown()
.join(10, TimeUnit.SECONDS);
autoConfiguredOpenTelemetrySdk
.getOpenTelemetrySdk()
.getSdkLogEmitterProvider()
.shutdown()
.join(10, TimeUnit.SECONDS);
autoConfiguredOpenTelemetrySdk
.getOpenTelemetrySdk()
.getSdkTracerProvider()
.shutdown()
.join(10, TimeUnit.SECONDS);
}

@Test
Expand Down Expand Up @@ -194,7 +211,8 @@ void configures() throws Exception {
.add(1, Attributes.builder().put("allowed", "bear").put("not allowed", "dog").build());
meter.counterBuilder("my-other-metric").build().add(1);

LogEmitter logEmitter = logEmitterProvider.get("test");
LogEmitter logEmitter =
autoConfiguredOpenTelemetrySdk.getOpenTelemetrySdk().getSdkLogEmitterProvider().get("test");
logEmitter.logBuilder().setBody("debug log message").setSeverity(Severity.DEBUG).emit();
logEmitter.logBuilder().setBody("info log message").setSeverity(Severity.INFO).emit();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

@SuppressLogger(DefaultGrpcExporter.class)
class OtlpGrpcRetryTest {

private static final List<SpanData> SPAN_DATA = Lists.newArrayList(generateFakeSpan());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import com.linecorp.armeria.common.HttpStatus;
import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.exporter.internal.grpc.OkHttpGrpcExporter;
import io.opentelemetry.exporter.internal.okhttp.OkHttpExporter;
import io.opentelemetry.exporter.internal.retry.RetryPolicy;
import io.opentelemetry.exporter.internal.retry.RetryUtil;
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
Expand All @@ -35,6 +36,7 @@
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;

@SuppressLogger(OkHttpExporter.class)
class OtlpHttpRetryTest {

private static final List<SpanData> SPAN_DATA = Lists.newArrayList(generateFakeSpan());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
import org.slf4j.event.Level;
import org.slf4j.event.LoggingEvent;

@SuppressLogger(OkHttpGrpcService.class)
class JaegerRemoteSamplerTest {

private static final String SERVICE_NAME = "my-service";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import com.linecorp.armeria.testing.junit5.server.SelfSignedCertificateExtension;
import com.linecorp.armeria.testing.junit5.server.ServerExtension;
import io.github.netmikey.logunit.api.LogCapturer;
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
import io.opentelemetry.sdk.extension.trace.jaeger.proto.api_v2.Sampling;
import io.opentelemetry.sdk.extension.trace.jaeger.proto.api_v2.Sampling.RateLimitingSamplingStrategy;
import io.opentelemetry.sdk.extension.trace.jaeger.proto.api_v2.Sampling.SamplingStrategyType;
Expand All @@ -37,6 +38,7 @@
import org.slf4j.event.Level;
import org.slf4j.event.LoggingEvent;

@SuppressLogger(DefaultGrpcService.class)
class JaegerRemoteSamplerGrpcNettyTest {

private static final String SERVICE_NAME = "my-service";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import static org.mockito.Mockito.when;

import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
import io.opentelemetry.sdk.common.Clock;
import io.opentelemetry.sdk.common.CompletableResultCode;
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
Expand Down Expand Up @@ -210,6 +211,7 @@ void forceFlush() {
}

@Test
@SuppressLogger(SdkLogEmitterProvider.class)
void shutdown() {
sdkLogEmitterProvider.shutdown();
sdkLogEmitterProvider.shutdown();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,17 @@
import io.opentelemetry.api.metrics.LongCounter;
import io.opentelemetry.api.metrics.Meter;
import io.opentelemetry.api.metrics.ObservableLongMeasurement;
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
import io.opentelemetry.sdk.testing.exporter.InMemoryMetricReader;
import java.time.Duration;
import java.util.concurrent.atomic.AtomicLong;
import java.util.function.Consumer;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

@SuppressLogger(
loggerName = "io.opentelemetry.sdk.metrics.internal.state.AsynchronousMetricStorage")
@SuppressLogger(loggerName = "io.opentelemetry.sdk.metrics.internal.state.DeltaMetricStorage")
class CardinalityTest {

/** Traces {@code MetricStorageUtils#MAX_ACCUMULATIONS}. */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.metrics.DoubleCounter;
import io.opentelemetry.api.metrics.Meter;
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
import io.opentelemetry.sdk.metrics.StressTestRunner.OperationUpdater;
import io.opentelemetry.sdk.metrics.data.PointData;
Expand Down Expand Up @@ -179,6 +180,7 @@ void collectMetrics_WithMultipleCollects() {
}

@Test
@SuppressLogger(SdkDoubleCounter.class)
void doubleCounterAdd_Monotonicity() {
DoubleCounter doubleCounter = sdkMeter.counterBuilder("testCounter").ofDoubles().build();
doubleCounter.add(-45.77d);
Expand All @@ -188,6 +190,7 @@ void doubleCounterAdd_Monotonicity() {
}

@Test
@SuppressLogger(SdkDoubleCounter.class)
void boundDoubleCounterAdd_Monotonicity() {
DoubleCounter doubleCounter = sdkMeter.counterBuilder("testCounter").ofDoubles().build();
BoundDoubleCounter bound = ((SdkDoubleCounter) doubleCounter).bind(Attributes.empty());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import static org.mockito.Mockito.verify;

import io.github.netmikey.logunit.api.LogCapturer;
import io.opentelemetry.internal.testing.slf4j.SuppressLogger;
import io.opentelemetry.sdk.common.InstrumentationScopeInfo;
import io.opentelemetry.sdk.metrics.internal.descriptor.InstrumentDescriptor;
import io.opentelemetry.sdk.metrics.internal.state.CallbackRegistration;
Expand All @@ -25,6 +26,7 @@ class SdkObservableInstrumentTest {
LogCapturer logs = LogCapturer.create().captureForType(SdkObservableInstrument.class);

@Test
@SuppressLogger(SdkObservableInstrument.class)
void close() {
MeterSharedState meterSharedState =
spy(MeterSharedState.create(InstrumentationScopeInfo.empty()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -450,6 +450,7 @@ void exportNotSampledSpans_recordOnly() {

@Test
@Timeout(10)
@SuppressLogger(SdkTracerProvider.class)
void shutdownFlushes() {
WaitingSpanExporter waitingSpanExporter =
new WaitingSpanExporter(1, CompletableResultCode.ofSuccess());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,10 @@

package io.opentelemetry.internal.testing.slf4j;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.junit.jupiter.api.extension.AfterTestExecutionCallback;
import org.junit.jupiter.api.extension.BeforeTestExecutionCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
Expand All @@ -26,14 +25,22 @@ public final class LoggerExtension

@Override
public void beforeTestExecution(ExtensionContext context) {
List<Logger> loggers =
Stream.concat(
Arrays.stream(
context.getRequiredTestMethod().getAnnotationsByType(SuppressLogger.class)),
Arrays.stream(
context.getRequiredTestClass().getAnnotationsByType(SuppressLogger.class)))
.map(suppression -> Logger.getLogger(suppression.value().getName()))
.collect(Collectors.toList());
List<SuppressLogger> suppressLoggers = new ArrayList<>();
suppressLoggers.addAll(
Arrays.asList(context.getRequiredTestMethod().getAnnotationsByType(SuppressLogger.class)));
suppressLoggers.addAll(
Arrays.asList(context.getRequiredTestClass().getAnnotationsByType(SuppressLogger.class)));

List<Logger> loggers = new ArrayList<>();
for (SuppressLogger suppression : suppressLoggers) {
if (!suppression.value().equals(Void.class)) {
loggers.add(Logger.getLogger(suppression.value().getName()));
}
if (!suppression.loggerName().isEmpty()) {
loggers.add(Logger.getLogger(suppression.loggerName()));
}
}

if (loggers.isEmpty()) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@
@Repeatable(SuppressLogger.SuppressLoggers.class)
public @interface SuppressLogger {
/** The class whose {@link java.util.logging.Logger} will be suppressed. */
Class<?> value();
Class<?> value() default Void.class;

/** The names of {@link java.util.logging.Logger}s to be suppressed. */
String loggerName() default "";

@Retention(RetentionPolicy.RUNTIME)
@interface SuppressLoggers {
Expand Down
5 changes: 3 additions & 2 deletions testing-internal/src/main/resources/simplelogger.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
org.slf4j.simpleLogger.defaultLogLevel = warn

org.slf4j.simpleLogger.log.org.junit.platform.launcher.core.LauncherConfigurationParameters.level = warn
org.slf4j.simpleLogger.log.org.junit.jupiter.engine.config.EnumConfigurationParameterConverter.level = warn
org.slf4j.simpleLogger.log.org.junit.platform.launcher.core.LauncherConfigurationParameters = warn
org.slf4j.simpleLogger.log.org.junit.jupiter.engine.config.EnumConfigurationParameterConverter = warn
org.slf4j.simpleLogger.log.com.linecorp.armeria.server.HttpServerPipelineConfigurator = error

0 comments on commit 0b94400

Please sign in to comment.