Skip to content

Commit 8480887

Browse files
committed
Revert "Removed unnecessary customizer"
This reverts commit 2564119.
1 parent 2564119 commit 8480887

File tree

2 files changed

+188
-0
lines changed

2 files changed

+188
-0
lines changed
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
/*
2+
* Copyright Splunk Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.splunk.opentelemetry.appd;
18+
19+
import static io.opentelemetry.sdk.autoconfigure.AdditionalPropertiesUtil.getAdditionalPropertyOrDefault;
20+
21+
import com.google.auto.service.AutoService;
22+
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfigurationCustomizer;
23+
import io.opentelemetry.sdk.extension.incubator.fileconfig.DeclarativeConfigurationCustomizerProvider;
24+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
25+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.PropagatorModel;
26+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.SpanProcessorModel;
27+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.TracerProviderModel;
28+
import java.util.Map;
29+
30+
@AutoService(DeclarativeConfigurationCustomizerProvider.class)
31+
public final class AppdBonusConfigurationCustomizerProvider
32+
implements DeclarativeConfigurationCustomizerProvider {
33+
34+
private static final String CONFIG_CISCO_CTX_ENABLED = "cisco.ctx.enabled";
35+
36+
@Override
37+
public void customize(DeclarativeConfigurationCustomizer autoConfiguration) {
38+
autoConfiguration.addModelCustomizer(
39+
model -> {
40+
if (model.getInstrumentationDevelopment() == null
41+
|| model.getInstrumentationDevelopment().getJava() == null) {
42+
return model;
43+
}
44+
Map<String, Object> properties =
45+
model.getInstrumentationDevelopment().getJava().getAdditionalProperties();
46+
47+
if (isFeatureEnabled(model, properties)) {
48+
if (maybeAddAppdBonusPropagator(model)) {
49+
// Appd propagator has been added so add also a corresponding Appd span processor
50+
SpanProcessorModel appdSpanProcessorModel =
51+
new SpanProcessorModel()
52+
.withAdditionalProperty(
53+
AppdBonusSpanProcessorComponentProvider.NAME, null);
54+
if (model.getTracerProvider() == null) {
55+
model.withTracerProvider(new TracerProviderModel());
56+
}
57+
model.getTracerProvider().getProcessors().add(appdSpanProcessorModel);
58+
}
59+
}
60+
61+
return model;
62+
});
63+
}
64+
65+
private static boolean isFeatureEnabled(
66+
OpenTelemetryConfigurationModel model, Map<String, Object> properties) {
67+
return (getAdditionalPropertyOrDefault(properties, CONFIG_CISCO_CTX_ENABLED, false));
68+
}
69+
70+
private static boolean canAddPropagator(String compositeList) {
71+
for (String propagatorNames : compositeList.split(",")) {
72+
if (propagatorNames.trim().equals("none")) {
73+
return false;
74+
}
75+
}
76+
return true;
77+
}
78+
79+
private static boolean maybeAddAppdBonusPropagator(OpenTelemetryConfigurationModel model) {
80+
if (model.getPropagator() == null) {
81+
model.withPropagator(new PropagatorModel());
82+
}
83+
84+
String compositeList = model.getPropagator().getCompositeList();
85+
if (compositeList == null) {
86+
compositeList = "";
87+
} else if (!canAddPropagator(compositeList)) {
88+
return false;
89+
}
90+
91+
// Possible duplicates are handled by the upstream
92+
compositeList =
93+
compositeList.isEmpty()
94+
? AppdBonusPropagator.NAME
95+
: AppdBonusPropagator.NAME + "," + compositeList;
96+
97+
model.getPropagator().withCompositeList(compositeList);
98+
99+
return true;
100+
}
101+
}
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
/*
2+
* Copyright Splunk Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package com.splunk.opentelemetry.appd;
18+
19+
import static com.splunk.opentelemetry.testing.declarativeconfig.DeclarativeConfigTestUtil.parseAndCustomizeModel;
20+
import static org.assertj.core.api.Assertions.assertThat;
21+
22+
import io.opentelemetry.sdk.extension.incubator.fileconfig.internal.model.OpenTelemetryConfigurationModel;
23+
import org.junit.jupiter.api.Test;
24+
25+
class AppdBonusConfigurationCustomizerProviderTest {
26+
27+
@Test
28+
void shouldAddPropagatorAndSpanProcessorWhenFeatureIsEnabled() {
29+
var yaml =
30+
"""
31+
file_format: "1.0-rc.1"
32+
instrumentation/development:
33+
java:
34+
cisco:
35+
ctx:
36+
enabled: true
37+
""";
38+
39+
AppdBonusConfigurationCustomizerProvider customizer =
40+
new AppdBonusConfigurationCustomizerProvider();
41+
OpenTelemetryConfigurationModel model = parseAndCustomizeModel(yaml, customizer);
42+
43+
assertThat(model.getPropagator().getCompositeList()).isEqualTo("appd-bonus");
44+
assertThat(model.getTracerProvider().getProcessors()).hasSize(1);
45+
assertThat(model.getTracerProvider().getProcessors().get(0).getAdditionalProperties())
46+
.hasSize(1);
47+
assertThat(model.getTracerProvider().getProcessors().get(0).getAdditionalProperties())
48+
.containsKey("appd-bonus");
49+
}
50+
51+
@Test
52+
void shouldNotAddPropagatorAndSpanProcessorWhenFeatureIsDisabled() {
53+
var yaml =
54+
"""
55+
file_format: "1.0-rc.1"
56+
instrumentation/development:
57+
java:
58+
cisco:
59+
ctx:
60+
enabled: false
61+
""";
62+
63+
AppdBonusConfigurationCustomizerProvider customizer =
64+
new AppdBonusConfigurationCustomizerProvider();
65+
OpenTelemetryConfigurationModel model = parseAndCustomizeModel(yaml, customizer);
66+
67+
assertThat(model.getPropagator()).isNull();
68+
assertThat(model.getTracerProvider()).isNull();
69+
}
70+
71+
@Test
72+
void shouldNotAddPropagatorAndSpanProcessorWhenFeaturePropertyIsMissing() {
73+
var yaml =
74+
"""
75+
file_format: "1.0-rc.1"
76+
instrumentation/development:
77+
java:
78+
""";
79+
80+
AppdBonusConfigurationCustomizerProvider customizer =
81+
new AppdBonusConfigurationCustomizerProvider();
82+
OpenTelemetryConfigurationModel model = parseAndCustomizeModel(yaml, customizer);
83+
84+
assertThat(model.getPropagator()).isNull();
85+
assertThat(model.getTracerProvider()).isNull();
86+
}
87+
}

0 commit comments

Comments
 (0)