ConfigurationReader handles null values as empty (#5829)
This commit is contained in:
parent
96c895893c
commit
5d5093636b
|
|
@ -55,7 +55,7 @@ dependencies {
|
|||
// ... proceed with normal sourcesJar, compileJava, etc
|
||||
|
||||
// TODO(jack-berg): update ref to be released version when available
|
||||
val configurationRef = "0eb96de17c6533f668163873d95bd026bce1d8fb"
|
||||
val configurationRef = "0508846f82ed54b230fa638e1e7556c52efee25e"
|
||||
val configurationRepoZip = "https://github.com/open-telemetry/opentelemetry-configuration/archive/$configurationRef.zip"
|
||||
val buildDirectory = layout.buildDirectory.asFile.get()
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@
|
|||
|
||||
package io.opentelemetry.sdk.extension.incubator.fileconfig;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonSetter;
|
||||
import com.fasterxml.jackson.annotation.Nulls;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfiguration;
|
||||
import java.io.InputStream;
|
||||
|
|
@ -13,7 +15,10 @@ import org.snakeyaml.engine.v2.api.LoadSettings;
|
|||
|
||||
final class ConfigurationReader {
|
||||
|
||||
private static final ObjectMapper MAPPER = new ObjectMapper();
|
||||
private static final ObjectMapper MAPPER =
|
||||
new ObjectMapper()
|
||||
// Create empty object instances for keys which are present but have null values
|
||||
.setDefaultSetterInfo(JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY));
|
||||
|
||||
private ConfigurationReader() {}
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,10 @@ import static org.mockito.Mockito.mock;
|
|||
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
|
||||
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.Aggregation;
|
||||
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.Base2ExponentialBucketHistogram;
|
||||
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.Drop;
|
||||
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExplicitBucketHistogram;
|
||||
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LastValue;
|
||||
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.Sum;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
|
@ -45,13 +48,12 @@ class AggregationFactoryTest {
|
|||
Arguments.of(
|
||||
new Aggregation(), io.opentelemetry.sdk.metrics.Aggregation.defaultAggregation()),
|
||||
Arguments.of(
|
||||
new Aggregation().withDrop(new Object()),
|
||||
new Aggregation().withDrop(new Drop()),
|
||||
io.opentelemetry.sdk.metrics.Aggregation.drop()),
|
||||
Arguments.of(
|
||||
new Aggregation().withSum(new Object()),
|
||||
io.opentelemetry.sdk.metrics.Aggregation.sum()),
|
||||
new Aggregation().withSum(new Sum()), io.opentelemetry.sdk.metrics.Aggregation.sum()),
|
||||
Arguments.of(
|
||||
new Aggregation().withLastValue(new Object()),
|
||||
new Aggregation().withLastValue(new LastValue()),
|
||||
io.opentelemetry.sdk.metrics.Aggregation.lastValue()),
|
||||
Arguments.of(
|
||||
new Aggregation()
|
||||
|
|
|
|||
|
|
@ -44,8 +44,10 @@ import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.TraceI
|
|||
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.TracerProvider;
|
||||
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.View;
|
||||
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.Zipkin;
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
|
@ -276,4 +278,60 @@ class ConfigurationReaderTest {
|
|||
assertThat(config).isEqualTo(expected);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void nullValuesParsedToEmptyObjects() {
|
||||
String objectPlaceholderString =
|
||||
"file_format: \"0.1\"\n"
|
||||
+ "tracer_provider:\n"
|
||||
+ " processors:\n"
|
||||
+ " - batch:\n"
|
||||
+ " exporter:\n"
|
||||
+ " console: {}\n"
|
||||
+ "meter_provider:\n"
|
||||
+ " views:\n"
|
||||
+ " - selector:\n"
|
||||
+ " instrument_type: histogram\n"
|
||||
+ " stream:\n"
|
||||
+ " aggregation:\n"
|
||||
+ " drop: {}\n";
|
||||
OpenTelemetryConfiguration objectPlaceholderModel =
|
||||
ConfigurationReader.parse(
|
||||
new ByteArrayInputStream(objectPlaceholderString.getBytes(StandardCharsets.UTF_8)));
|
||||
|
||||
String noOjbectPlaceholderString =
|
||||
"file_format: \"0.1\"\n"
|
||||
+ "tracer_provider:\n"
|
||||
+ " processors:\n"
|
||||
+ " - batch:\n"
|
||||
+ " exporter:\n"
|
||||
+ " console:\n"
|
||||
+ "meter_provider:\n"
|
||||
+ " views:\n"
|
||||
+ " - selector:\n"
|
||||
+ " instrument_type: histogram\n"
|
||||
+ " stream:\n"
|
||||
+ " aggregation:\n"
|
||||
+ " drop:\n";
|
||||
OpenTelemetryConfiguration noObjectPlaceholderModel =
|
||||
ConfigurationReader.parse(
|
||||
new ByteArrayInputStream(noOjbectPlaceholderString.getBytes(StandardCharsets.UTF_8)));
|
||||
|
||||
SpanExporter exporter =
|
||||
noObjectPlaceholderModel
|
||||
.getTracerProvider()
|
||||
.getProcessors()
|
||||
.get(0)
|
||||
.getBatch()
|
||||
.getExporter();
|
||||
assertThat(exporter.getConsole()).isNotNull();
|
||||
assertThat(exporter.getOtlp()).isNull();
|
||||
|
||||
Aggregation aggregation =
|
||||
noObjectPlaceholderModel.getMeterProvider().getViews().get(0).getStream().getAggregation();
|
||||
assertThat(aggregation.getDrop()).isNotNull();
|
||||
assertThat(aggregation.getSum()).isNull();
|
||||
|
||||
assertThat(objectPlaceholderModel).isEqualTo(noObjectPlaceholderModel);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue