Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

package io.opentelemetry.instrumentation.docs.parsers;

import static io.opentelemetry.instrumentation.docs.parsers.TelemetryParser.normalizeWhenCondition;

import com.fasterxml.jackson.core.JsonProcessingException;
import io.opentelemetry.instrumentation.docs.internal.EmittedMetrics;
import io.opentelemetry.instrumentation.docs.utils.FileManager;
Expand Down Expand Up @@ -62,8 +64,7 @@ private static Map<String, List<EmittedMetrics.MetricsByScope>> parseAllMetricFi
path -> {
String content = FileManager.readFileToString(path.toString());
if (content != null) {
String when = content.substring(0, content.indexOf('\n'));
String whenKey = when.replace("when: ", "");
String whenKey = normalizeWhenCondition(content);

int metricsIndex = content.indexOf("metrics_by_scope:");
if (metricsIndex != -1) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

package io.opentelemetry.instrumentation.docs.parsers;

import static io.opentelemetry.instrumentation.docs.parsers.TelemetryParser.normalizeWhenCondition;

import com.fasterxml.jackson.core.JsonProcessingException;
import io.opentelemetry.instrumentation.docs.internal.EmittedSpans;
import io.opentelemetry.instrumentation.docs.internal.TelemetryAttribute;
Expand Down Expand Up @@ -49,8 +51,7 @@ public static Map<String, EmittedSpans> getSpansByScopeFromFiles(
path -> {
String content = FileManager.readFileToString(path.toString());
if (content != null) {
String when = content.substring(0, content.indexOf('\n'));
String whenKey = when.replace("when: ", "");
String whenKey = normalizeWhenCondition(content);

spansByScope.putIfAbsent(whenKey, new StringBuilder("spans_by_scope:\n"));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,5 +73,25 @@ static boolean scopeIsValid(String telemetryScope, String moduleScope) {
|| scopeAllowList.getOrDefault(moduleScope, emptySet()).contains(telemetryScope);
}

/**
* Normalizes the 'when' condition from the given content by stripping quotes and whitespace.
*
* @param content the content containing the 'when' condition
* @return normalized when condition
*/
static String normalizeWhenCondition(String content) {
if (content == null) {
return "";
}

String when = content.substring(0, content.indexOf('\n'));
String whenCondition = when.replace("when: ", "").strip();
// Remove surrounding quotes if present (to avoid double-quoting in output)
if (whenCondition.startsWith("\"") && whenCondition.endsWith("\"")) {
whenCondition = whenCondition.substring(1, whenCondition.length() - 1);
}
return whenCondition;
}

private TelemetryParser() {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
import org.junit.jupiter.api.io.TempDir;
import org.mockito.MockedStatic;

@SuppressWarnings("NullAway")
class EmittedMetricsParserTest {

@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/*
* Copyright The OpenTelemetry Authors
* SPDX-License-Identifier: Apache-2.0
*/

package io.opentelemetry.instrumentation.docs.parsers;

import static org.assertj.core.api.Assertions.assertThat;

import org.junit.jupiter.api.Test;

class TelemetryParserTest {

@Test
void normalizeWhenConditionStripsQuotes() {
String content =
"""
when: "otel.instrumentation.common.experimental.view-telemetry.enabled=true,otel.instrumentation.jsp.experimental-span-attributes=true"
metrics_by_scope:
- scope: io.opentelemetry.jsp-2.3
""";

String result = TelemetryParser.normalizeWhenCondition(content);

assertThat(result)
.isEqualTo(
"otel.instrumentation.common.experimental.view-telemetry.enabled=true,otel.instrumentation.jsp.experimental-span-attributes=true");
}

@Test
void normalizeWhenConditionHandlesUnquotedValue() {
String content =
"""
when: default
metrics_by_scope:
- scope: io.opentelemetry.test
""";

String result = TelemetryParser.normalizeWhenCondition(content);

assertThat(result).isEqualTo("default");
}

@Test
void normalizeWhenConditionReturnsEmptyForNull() {
String result = TelemetryParser.normalizeWhenCondition(null);

assertThat(result).isEmpty();
}

@Test
void normalizeWhenConditionHandlesComplexConditions() {
String content =
"""
when: "config1=value1,config2=value2,config3=value3"
spans_by_scope:
- scope: io.opentelemetry.test
""";

String result = TelemetryParser.normalizeWhenCondition(content);

assertThat(result).isEqualTo("config1=value1,config2=value2,config3=value3");
}
}
Loading