Skip to content

Commit 977528f

Browse files
otelbot[bot]trask
andauthored
Module cleanup (run 25285732170) (#18537)
Co-authored-by: otelbot <197425009+otelbot@users.noreply.github.com> Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
1 parent b784fc1 commit 977528f

8 files changed

Lines changed: 79 additions & 54 deletions

File tree

.github/agents/knowledge/metadata-yaml-format.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,12 @@ Add `examples` only for module-specific configs with non-obvious format (lists,
8787
### 1. Validate experimental markers match
8888
8989
- `/development` in declarative_name ↔ `experimental` in flat name (MUST match both ways)
90+
- Do not rename an existing, published `declarative_name` solely to make it match the mechanical
91+
conversion rule. Flat property lookup normalizes `-` to `.`, so a legacy YAML key such as
92+
`java.aws_sdk.use_propagator_for_messaging/development` can still resolve to
93+
`otel.instrumentation.aws-sdk.experimental-use-propagator-for-messaging` without a special
94+
mapping. Let the automated validation decide whether a `SPECIAL_MAPPINGS` entry is actually
95+
needed.
9096
- WRONG: `otel.instrumentation.servlet.capture-request-parameters` + `java.servlet.capture_request_parameters/development`
9197
- RIGHT: `otel.instrumentation.servlet.experimental.capture-request-parameters` + `java.servlet.capture_request_parameters/development`
9298

@@ -152,4 +158,6 @@ FAIL in ../instrumentation/liberty/liberty-20.0/metadata.yaml:
152158
## Edge Cases
153159

154160
- Properties without `otel.instrumentation.` prefix → check SPECIAL_MAPPINGS
155-
- Already has declarative_name → skip conversion
161+
- Already has declarative_name → skip conversion unless the automated validation fails; preserve
162+
existing user-facing YAML keys and add a `SPECIAL_MAPPINGS` bridge entry only when normalized flat
163+
property lookup cannot resolve the existing name

instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/Aws2SqsDefaultPropagatorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ void testDuplicateTracingInterceptor() throws URISyntaxException {
4141
client.sendMessage(sendMessageRequest);
4242
ReceiveMessageResponse response = client.receiveMessage(receiveMessageRequest);
4343

44-
assertThat(response.messages().size()).isEqualTo(1);
44+
assertThat(response.messages()).hasSize(1);
4545
response.messages().forEach(message -> getTesting().runWithSpan("process child", () -> {}));
4646
assertSqsTraces(false, false);
4747
}

instrumentation/aws-sdk/aws-sdk-2.2/library/src/test/java/io/opentelemetry/instrumentation/awssdk/v2_2/Aws2SqsSuppressReceiveSpansDefaultPropagatorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ void testDuplicateTracingInterceptor() throws URISyntaxException {
4040
client.sendMessage(sendMessageRequest);
4141
ReceiveMessageResponse response = client.receiveMessage(receiveMessageRequest);
4242

43-
assertThat(response.messages().size()).isEqualTo(1);
43+
assertThat(response.messages()).hasSize(1);
4444
response.messages().forEach(message -> getTesting().runWithSpan("process child", () -> {}));
4545

4646
assertSqsTraces(false, false);

instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractQueryProtocolModelTest.java

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,19 @@
55

66
package io.opentelemetry.instrumentation.awssdk.v2_2;
77

8+
import static io.opentelemetry.api.common.AttributeKey.stringKey;
89
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
10+
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
11+
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies;
12+
import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD;
13+
import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE;
14+
import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS;
15+
import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT;
916
import static io.opentelemetry.semconv.UrlAttributes.URL_FULL;
17+
import static io.opentelemetry.semconv.incubating.AwsIncubatingAttributes.AWS_REQUEST_ID;
18+
import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_METHOD;
19+
import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SERVICE;
20+
import static io.opentelemetry.semconv.incubating.RpcIncubatingAttributes.RPC_SYSTEM;
1021

1122
import io.opentelemetry.api.trace.SpanKind;
1223
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
@@ -32,6 +43,7 @@
3243
import software.amazon.awssdk.services.ses.model.SendEmailRequest;
3344

3445
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
46+
@SuppressWarnings("deprecation") // using deprecated semconv
3547
public abstract class AbstractQueryProtocolModelTest {
3648
private final MockWebServerExtension server = new MockWebServerExtension();
3749

@@ -90,21 +102,29 @@ void testClientWithQueryProtocolModel() {
90102
trace.hasSpansSatisfyingExactly(
91103
span -> {
92104
span.hasKind(SpanKind.CLIENT);
93-
span.hasAttributesSatisfying(
94-
attributes -> {
95-
assertThat(attributes)
96-
.hasEntrySatisfying(
97-
URL_FULL,
98-
entry -> {
99-
assertThat(entry)
100-
.satisfies(
101-
value -> {
102-
URI uri = URI.create(value);
103-
assertThat(uri.getQuery()).isNull();
104-
});
105-
});
106-
});
105+
span.hasAttributesSatisfyingExactly(
106+
equalTo(SERVER_ADDRESS, "127.0.0.1"),
107+
equalTo(SERVER_PORT, server.httpPort()),
108+
equalTo(HTTP_REQUEST_METHOD, "POST"),
109+
equalTo(HTTP_RESPONSE_STATUS_CODE, 200),
110+
equalTo(RPC_SYSTEM, "aws-api"),
111+
equalTo(RPC_SERVICE, "Ses"),
112+
equalTo(RPC_METHOD, "SendEmail"),
113+
equalTo(AWS_REQUEST_ID, "UNKNOWN"),
114+
equalTo(stringKey("aws.agent"), isJavaagentTest() ? "java-aws-sdk" : null),
115+
satisfies(
116+
URL_FULL,
117+
val ->
118+
val.satisfies(
119+
value -> {
120+
URI uri = URI.create(value);
121+
assertThat(uri.getQuery()).isNull();
122+
})));
107123
});
108124
});
109125
}
126+
127+
private boolean isJavaagentTest() {
128+
return getClass().getName().startsWith("io.opentelemetry.javaagent.");
129+
}
110130
}

instrumentation/azure-core/azure-core-1.36/javaagent/src/testAzure/java/io/opentelemetry/javaagent/instrumentation/azurecore/v1_36/AzureSdkTest.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@
88
import static io.opentelemetry.api.common.AttributeKey.stringKey;
99
import static io.opentelemetry.instrumentation.testing.util.TestLatestDeps.testLatestDeps;
1010
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo;
11+
import static io.opentelemetry.semconv.HttpAttributes.HTTP_REQUEST_METHOD;
1112
import static io.opentelemetry.semconv.HttpAttributes.HTTP_RESPONSE_STATUS_CODE;
13+
import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS;
14+
import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT;
15+
import static io.opentelemetry.semconv.UrlAttributes.URL_FULL;
1216
import static org.assertj.core.api.Assertions.assertThat;
1317

1418
import com.azure.core.annotation.ExpectedResponses;
@@ -105,7 +109,12 @@ void testPipelineAndSuppression() {
105109
span.hasKind(SpanKind.CLIENT)
106110
.hasName(testLatestDeps() ? "GET" : "HTTP GET")
107111
.hasStatus(StatusData.unset())
108-
.hasAttribute(HTTP_RESPONSE_STATUS_CODE, 200L)));
112+
.hasAttributesSatisfyingExactly(
113+
equalTo(HTTP_REQUEST_METHOD, "GET"),
114+
equalTo(HTTP_RESPONSE_STATUS_CODE, 200L),
115+
equalTo(SERVER_ADDRESS, testLatestDeps() ? "azure.com" : null),
116+
equalTo(SERVER_PORT, testLatestDeps() ? 443L : null),
117+
equalTo(URL_FULL, "https://azure.com/path"))));
109118
}
110119

111120
@Test

instrumentation/c3p0-0.9/testing/src/main/java/io/opentelemetry/instrumentation/c3p0/AbstractC3p0InstrumentationTest.java

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
package io.opentelemetry.instrumentation.c3p0;
77

88
import static io.opentelemetry.instrumentation.api.internal.SemconvStability.emitStableDatabaseSemconv;
9-
import static java.util.Arrays.asList;
10-
import static java.util.concurrent.TimeUnit.MILLISECONDS;
119
import static org.assertj.core.api.Assertions.assertThat;
1210

1311
import com.mchange.v2.c3p0.ComboPooledDataSource;
@@ -17,8 +15,7 @@
1715
import io.opentelemetry.instrumentation.testing.junit.db.MockDriver;
1816
import java.sql.Connection;
1917
import java.sql.SQLException;
20-
import java.util.HashSet;
21-
import java.util.Set;
18+
import org.assertj.core.api.AbstractIterableAssert;
2219
import org.junit.jupiter.api.BeforeAll;
2320
import org.junit.jupiter.api.Test;
2421

@@ -46,7 +43,6 @@ void shouldReportMetrics() throws Exception {
4643
// when
4744
try (Connection connection = c3p0DataSource.getConnection()) {
4845
configure(c3p0DataSource);
49-
MILLISECONDS.sleep(100);
5046
}
5147

5248
// then
@@ -56,25 +52,23 @@ void shouldReportMetrics() throws Exception {
5652
shutdown(c3p0DataSource);
5753
c3p0DataSource.close();
5854

59-
// wait interval of the test metrics exporter
60-
Thread.sleep(100);
6155
testing().clearData();
62-
Thread.sleep(100);
6356

6457
// then
65-
Set<String> metricNames =
66-
new HashSet<>(
67-
asList(
68-
emitStableDatabaseSemconv()
69-
? "db.client.connection.count"
70-
: "db.client.connections.usage",
71-
"db.client.connections.pending_requests"));
72-
assertThat(testing().metrics())
73-
.filteredOn(
74-
metricData ->
75-
metricData.getInstrumentationScopeInfo().getName().equals(INSTRUMENTATION_NAME)
76-
&& metricNames.contains(metricData.getName()))
77-
.isEmpty();
58+
testing()
59+
.waitAndAssertMetrics(
60+
INSTRUMENTATION_NAME,
61+
emitStableDatabaseSemconv()
62+
? "db.client.connection.count"
63+
: "db.client.connections.usage",
64+
AbstractIterableAssert::isEmpty);
65+
testing()
66+
.waitAndAssertMetrics(
67+
INSTRUMENTATION_NAME,
68+
emitStableDatabaseSemconv()
69+
? "db.client.connection.pending_requests"
70+
: "db.client.connections.pending_requests",
71+
AbstractIterableAssert::isEmpty);
7872
}
7973

8074
private void assertDataSourceMetrics(PooledDataSource dataSource) {

instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/camel/v2_20/ExperimentalTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,19 @@
1313
import io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.StringAssertConsumer;
1414

1515
public class ExperimentalTest {
16-
private static final String EXPERIMENTAL_FLAG =
17-
"otel.instrumentation.camel.experimental-span-attributes";
16+
private static final boolean EXPERIMENTAL_ATTRIBUTES =
17+
Boolean.getBoolean("otel.instrumentation.camel.experimental-span-attributes");
1818

1919
public static String experimental(String value) {
20-
if (!Boolean.getBoolean(EXPERIMENTAL_FLAG)) {
20+
if (!EXPERIMENTAL_ATTRIBUTES) {
2121
return null;
2222
}
2323
return value;
2424
}
2525

2626
static AttributeAssertion experimentalSatisfies(
2727
AttributeKey<String> key, StringAssertConsumer assertion) {
28-
if (Boolean.getBoolean(EXPERIMENTAL_FLAG)) {
28+
if (EXPERIMENTAL_ATTRIBUTES) {
2929
return satisfies(key, assertion);
3030
} else {
3131
return equalTo(key, null);

instrumentation/camel-2.20/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/camel/v2_20/JmsCamelTest.java

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import static io.opentelemetry.semconv.incubating.MessagingIncubatingAttributes.MESSAGING_MESSAGE_ID;
1414

1515
import io.opentelemetry.api.trace.SpanKind;
16+
import io.opentelemetry.instrumentation.testing.internal.AutoCleanupExtension;
1617
import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension;
1718
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
1819
import javax.jms.ConnectionFactory;
@@ -23,7 +24,6 @@
2324
import org.apache.camel.builder.RouteBuilder;
2425
import org.apache.camel.component.jms.JmsComponent;
2526
import org.apache.camel.impl.DefaultCamelContext;
26-
import org.junit.jupiter.api.AfterAll;
2727
import org.junit.jupiter.api.BeforeAll;
2828
import org.junit.jupiter.api.Test;
2929
import org.junit.jupiter.api.extension.RegisterExtension;
@@ -33,6 +33,8 @@ class JmsCamelTest {
3333
@RegisterExtension
3434
static final InstrumentationExtension testing = AgentInstrumentationExtension.create();
3535

36+
@RegisterExtension static final AutoCleanupExtension cleanup = AutoCleanupExtension.create();
37+
3638
private static BrokerService broker;
3739
private static CamelContext camelContext;
3840

@@ -43,6 +45,7 @@ static void setUp() throws Exception {
4345
broker.setUseJmx(false);
4446
broker.addConnector("vm://localhost");
4547
broker.start();
48+
cleanup.deferAfterAll(broker::stop);
4649

4750
camelContext = new DefaultCamelContext();
4851
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost");
@@ -58,19 +61,10 @@ public void configure() {
5861
});
5962

6063
camelContext.start();
64+
cleanup.deferAfterAll(camelContext::stop);
6165
testing.clearData();
6266
}
6367

64-
@AfterAll
65-
static void tearDown() throws Exception {
66-
if (camelContext != null) {
67-
camelContext.stop();
68-
}
69-
if (broker != null) {
70-
broker.stop();
71-
}
72-
}
73-
7468
@Test
7569
void testJmsProducerAndConsumer() {
7670
ProducerTemplate template = camelContext.createProducerTemplate();

0 commit comments

Comments
 (0)