Skip to content

Commit 5958cc8

Browse files
authored
Merge branch 'open-telemetry:main' into main
2 parents b80e1f2 + de22afe commit 5958cc8

File tree

10 files changed

+342
-37
lines changed

10 files changed

+342
-37
lines changed

sdk-extensions/incubator/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ tasks.getByName("compileJava").dependsOn(deleteJs2pTmp)
199199
tasks.getByName("sourcesJar").dependsOn(deleteJs2pTmp, buildGraalVmReflectionJson)
200200
tasks.getByName("jar").dependsOn(deleteJs2pTmp, buildGraalVmReflectionJson)
201201
tasks.getByName("javadoc").dependsOn(buildGraalVmReflectionJson)
202+
tasks.getByName("compileTestJava").dependsOn(buildGraalVmReflectionJson)
202203

203204
// Exclude jsonschema2pojo generated sources from checkstyle
204205
tasks.named<Checkstyle>("checkstyleMain") {

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/ComposableSamplerFactory.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package io.opentelemetry.sdk.extension.incubator.fileconfig;
77

8+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalComposableParentThresholdSamplerModel;
89
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalComposableProbabilitySamplerModel;
910
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalComposableRuleBasedSamplerModel;
1011
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalComposableSamplerModel;
@@ -43,6 +44,13 @@ public ComposableSampler create(
4344
if (ruleBased != null) {
4445
return ComposableRuleBasedSamplerFactory.getInstance().create(ruleBased, context);
4546
}
47+
ExperimentalComposableParentThresholdSamplerModel parentThreshold = model.getParentThreshold();
48+
if (parentThreshold != null) {
49+
ExperimentalComposableSamplerModel rootModel =
50+
FileConfigUtil.requireNonNull(parentThreshold.getRoot(), "parent threshold sampler root");
51+
ComposableSampler rootSampler = INSTANCE.create(rootModel, context);
52+
return ComposableSampler.parentThreshold(rootSampler);
53+
}
4654
Map.Entry<String, ?> keyValue =
4755
FileConfigUtil.getSingletonMapEntry(model.getAdditionalProperties(), "composable sampler");
4856
return context.loadComponent(ComposableSampler.class, keyValue.getKey(), keyValue.getValue());

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/InstrumentSelectorFactory.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,9 @@ public InstrumentSelector create(ViewSelectorModel model, DeclarativeConfigConte
3737
}
3838
builder.setType(instrumentType);
3939
}
40+
if (model.getUnit() != null) {
41+
builder.setUnit(model.getUnit());
42+
}
4043
if (model.getMeterName() != null) {
4144
builder.setMeterName(model.getMeterName());
4245
}

sdk-extensions/incubator/src/main/java/io/opentelemetry/sdk/extension/incubator/fileconfig/LoggerProviderFactory.java

Lines changed: 67 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,20 @@
77

88
import static io.opentelemetry.sdk.extension.incubator.fileconfig.FileConfigUtil.requireNonNull;
99

10+
import io.opentelemetry.api.logs.Severity;
1011
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLoggerConfigModel;
1112
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLoggerConfiguratorModel;
1213
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.ExperimentalLoggerMatcherAndConfigModel;
1314
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordProcessorModel;
1415
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LoggerProviderModel;
16+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel.SeverityNumber;
1517
import io.opentelemetry.sdk.internal.ScopeConfigurator;
1618
import io.opentelemetry.sdk.internal.ScopeConfiguratorBuilder;
1719
import io.opentelemetry.sdk.logs.LogLimits;
1820
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
1921
import io.opentelemetry.sdk.logs.SdkLoggerProviderBuilder;
2022
import io.opentelemetry.sdk.logs.internal.LoggerConfig;
23+
import io.opentelemetry.sdk.logs.internal.LoggerConfigBuilder;
2124
import io.opentelemetry.sdk.logs.internal.SdkLoggerProviderUtil;
2225
import java.util.List;
2326

@@ -97,10 +100,72 @@ private static class LoggerConfigFactory
97100
@Override
98101
public LoggerConfig create(
99102
ExperimentalLoggerConfigModel model, DeclarativeConfigContext context) {
103+
LoggerConfigBuilder configBuilder = LoggerConfig.builder();
100104
if (model.getDisabled() != null && model.getDisabled()) {
101-
return LoggerConfig.disabled();
105+
configBuilder.setEnabled(false);
102106
}
103-
return LoggerConfig.defaultConfig();
107+
if (model.getTraceBased() != null && model.getTraceBased()) {
108+
configBuilder.setTraceBased(true);
109+
}
110+
if (model.getMinimumSeverity() != null) {
111+
configBuilder.setMinimumSeverity(severityNumberToSeverity(model.getMinimumSeverity()));
112+
}
113+
return configBuilder.build();
114+
}
115+
}
116+
117+
// Visible for testing
118+
static Severity severityNumberToSeverity(SeverityNumber model) {
119+
switch (model) {
120+
case TRACE:
121+
return Severity.TRACE;
122+
case TRACE_2:
123+
return Severity.TRACE2;
124+
case TRACE_3:
125+
return Severity.TRACE3;
126+
case TRACE_4:
127+
return Severity.TRACE4;
128+
case DEBUG:
129+
return Severity.DEBUG;
130+
case DEBUG_2:
131+
return Severity.DEBUG2;
132+
case DEBUG_3:
133+
return Severity.DEBUG3;
134+
case DEBUG_4:
135+
return Severity.DEBUG4;
136+
case INFO:
137+
return Severity.INFO;
138+
case INFO_2:
139+
return Severity.INFO2;
140+
case INFO_3:
141+
return Severity.INFO3;
142+
case INFO_4:
143+
return Severity.INFO4;
144+
case WARN:
145+
return Severity.WARN;
146+
case WARN_2:
147+
return Severity.WARN2;
148+
case WARN_3:
149+
return Severity.WARN3;
150+
case WARN_4:
151+
return Severity.WARN4;
152+
case ERROR:
153+
return Severity.ERROR;
154+
case ERROR_2:
155+
return Severity.ERROR2;
156+
case ERROR_3:
157+
return Severity.ERROR3;
158+
case ERROR_4:
159+
return Severity.ERROR4;
160+
case FATAL:
161+
return Severity.FATAL;
162+
case FATAL_2:
163+
return Severity.FATAL2;
164+
case FATAL_3:
165+
return Severity.FATAL3;
166+
case FATAL_4:
167+
return Severity.FATAL4;
104168
}
169+
throw new IllegalArgumentException("Unrecognized severity number: " + model);
105170
}
106171
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ void create() {
3535
new ViewSelectorModel()
3636
.withInstrumentName("instrument-name")
3737
.withInstrumentType(ViewSelectorModel.InstrumentType.COUNTER)
38+
.withUnit("ms")
3839
.withMeterName("meter-name")
3940
.withMeterSchemaUrl("https://opentelemetry.io/schemas/1.16.0")
4041
.withMeterVersion("1.0.0"),
@@ -43,6 +44,7 @@ void create() {
4344
InstrumentSelector.builder()
4445
.setName("instrument-name")
4546
.setType(InstrumentType.COUNTER)
47+
.setUnit("ms")
4648
.setMeterName("meter-name")
4749
.setMeterSchemaUrl("https://opentelemetry.io/schemas/1.16.0")
4850
.setMeterVersion("1.0.0")

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

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import static io.opentelemetry.sdk.logs.internal.SdkLoggerProviderUtil.setLoggerConfigurator;
99
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
1010

11+
import io.opentelemetry.api.logs.Severity;
1112
import io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporter;
1213
import io.opentelemetry.internal.testing.CleanupExtension;
1314
import io.opentelemetry.sdk.autoconfigure.internal.SpiHelper;
@@ -20,6 +21,7 @@
2021
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordLimitsModel;
2122
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LogRecordProcessorModel;
2223
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.LoggerProviderModel;
24+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel.SeverityNumber;
2325
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OtlpHttpExporterModel;
2426
import io.opentelemetry.sdk.internal.ScopeConfigurator;
2527
import io.opentelemetry.sdk.internal.ScopeConfiguratorBuilder;
@@ -92,13 +94,20 @@ private static Stream<Arguments> createArguments() {
9294
.withName("foo")
9395
.withConfig(
9496
new ExperimentalLoggerConfigModel()
95-
.withDisabled(false)))))),
97+
.withDisabled(false)
98+
.withTraceBased(true)
99+
.withMinimumSeverity(SeverityNumber.INFO)))))),
96100
setLoggerConfigurator(
97101
SdkLoggerProvider.builder(),
98102
ScopeConfigurator.<LoggerConfig>builder()
99103
.setDefault(LoggerConfig.disabled())
100104
.addCondition(
101-
ScopeConfiguratorBuilder.nameMatchesGlob("foo"), LoggerConfig.enabled())
105+
ScopeConfiguratorBuilder.nameMatchesGlob("foo"),
106+
LoggerConfig.builder()
107+
.setEnabled(true)
108+
.setTraceBased(true)
109+
.setMinimumSeverity(Severity.INFO)
110+
.build())
102111
.build())
103112
.setLogLimits(
104113
() ->
@@ -112,4 +121,38 @@ private static Stream<Arguments> createArguments() {
112121
.build())
113122
.build()));
114123
}
124+
125+
@ParameterizedTest
126+
@MethodSource("severityNumberArguments")
127+
void severityNumber(SeverityNumber model, Severity expectedSeverity) {
128+
assertThat(LoggerProviderFactory.severityNumberToSeverity(model)).isEqualTo(expectedSeverity);
129+
}
130+
131+
private static Stream<Arguments> severityNumberArguments() {
132+
return Stream.of(
133+
Arguments.of(SeverityNumber.TRACE, Severity.TRACE),
134+
Arguments.of(SeverityNumber.TRACE_2, Severity.TRACE2),
135+
Arguments.of(SeverityNumber.TRACE_3, Severity.TRACE3),
136+
Arguments.of(SeverityNumber.TRACE_4, Severity.TRACE4),
137+
Arguments.of(SeverityNumber.DEBUG, Severity.DEBUG),
138+
Arguments.of(SeverityNumber.DEBUG_2, Severity.DEBUG2),
139+
Arguments.of(SeverityNumber.DEBUG_3, Severity.DEBUG3),
140+
Arguments.of(SeverityNumber.DEBUG_4, Severity.DEBUG4),
141+
Arguments.of(SeverityNumber.INFO, Severity.INFO),
142+
Arguments.of(SeverityNumber.INFO_2, Severity.INFO2),
143+
Arguments.of(SeverityNumber.INFO_3, Severity.INFO3),
144+
Arguments.of(SeverityNumber.INFO_4, Severity.INFO4),
145+
Arguments.of(SeverityNumber.WARN, Severity.WARN),
146+
Arguments.of(SeverityNumber.WARN_2, Severity.WARN2),
147+
Arguments.of(SeverityNumber.WARN_3, Severity.WARN3),
148+
Arguments.of(SeverityNumber.WARN_4, Severity.WARN4),
149+
Arguments.of(SeverityNumber.ERROR, Severity.ERROR),
150+
Arguments.of(SeverityNumber.ERROR_2, Severity.ERROR2),
151+
Arguments.of(SeverityNumber.ERROR_3, Severity.ERROR3),
152+
Arguments.of(SeverityNumber.ERROR_4, Severity.ERROR4),
153+
Arguments.of(SeverityNumber.FATAL, Severity.FATAL),
154+
Arguments.of(SeverityNumber.FATAL_2, Severity.FATAL2),
155+
Arguments.of(SeverityNumber.FATAL_3, Severity.FATAL3),
156+
Arguments.of(SeverityNumber.FATAL_4, Severity.FATAL4));
157+
}
115158
}

0 commit comments

Comments
 (0)