Skip to content

Commit f62aa9c

Browse files
authored
Fix kafka clients latest dep tests (#10687)
1 parent 2604724 commit f62aa9c

File tree

5 files changed

+33
-44
lines changed

5 files changed

+33
-44
lines changed

instrumentation/kafka/kafka-clients/kafka-clients-0.11/testing/src/main/java/io/opentelemetry/instrumentation/kafka/internal/AbstractOpenTelemetryMetricsReporterTest.java

+29-8
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
1919
import io.opentelemetry.sdk.metrics.data.MetricData;
2020
import io.opentelemetry.sdk.metrics.data.PointData;
21+
import java.lang.reflect.Field;
22+
import java.lang.reflect.Method;
2123
import java.nio.charset.StandardCharsets;
2224
import java.time.Duration;
2325
import java.time.Instant;
@@ -33,13 +35,12 @@
3335
import org.apache.kafka.clients.CommonClientConfigs;
3436
import org.apache.kafka.clients.consumer.ConsumerConfig;
3537
import org.apache.kafka.clients.consumer.KafkaConsumer;
36-
import org.apache.kafka.clients.consumer.KafkaConsumerAccess;
3738
import org.apache.kafka.clients.producer.KafkaProducer;
38-
import org.apache.kafka.clients.producer.KafkaProducerAccess;
3939
import org.apache.kafka.clients.producer.ProducerConfig;
4040
import org.apache.kafka.clients.producer.ProducerRecord;
4141
import org.apache.kafka.common.MetricName;
4242
import org.apache.kafka.common.metrics.KafkaMetric;
43+
import org.apache.kafka.common.metrics.Metrics;
4344
import org.apache.kafka.common.metrics.MetricsReporter;
4445
import org.apache.kafka.common.serialization.ByteArrayDeserializer;
4546
import org.apache.kafka.common.serialization.ByteArraySerializer;
@@ -139,14 +140,36 @@ protected Map<String, Object> consumerConfig() {
139140

140141
@Test
141142
void noDuplicateMetricsReporter() {
142-
List<MetricsReporter> producerMetricsReporters =
143-
KafkaProducerAccess.getMetricsReporters(producer);
143+
List<MetricsReporter> producerMetricsReporters = getMetricsReporters(producer);
144144
assertThat(countOpenTelemetryMetricsReporters(producerMetricsReporters)).isEqualTo(1);
145-
List<MetricsReporter> consumerMetricsReporters =
146-
KafkaConsumerAccess.getMetricsReporters(consumer);
145+
List<MetricsReporter> consumerMetricsReporters = getMetricsReporters(consumer);
147146
assertThat(countOpenTelemetryMetricsReporters(consumerMetricsReporters)).isEqualTo(1);
148147
}
149148

149+
private static List<MetricsReporter> getMetricsReporters(Object producerOrConsumer) {
150+
return getMetricsRegistry(producerOrConsumer).reporters();
151+
}
152+
153+
private static Metrics getMetricsRegistry(Object producerOrConsumer) {
154+
Class<?> clazz = producerOrConsumer.getClass();
155+
try {
156+
Field field = clazz.getDeclaredField("metrics");
157+
field.setAccessible(true);
158+
return (Metrics) field.get(producerOrConsumer);
159+
} catch (Exception ignored) {
160+
// Ignore
161+
}
162+
try {
163+
Method method = clazz.getDeclaredMethod("metricsRegistry");
164+
method.setAccessible(true);
165+
return (Metrics) method.invoke(producerOrConsumer);
166+
} catch (Exception ignored) {
167+
// Ignore
168+
}
169+
throw new IllegalStateException(
170+
"Failed to get metrics registry from " + producerOrConsumer.getClass().getName());
171+
}
172+
150173
private static long countOpenTelemetryMetricsReporters(List<MetricsReporter> metricsReporters) {
151174
return metricsReporters.stream()
152175
.filter(reporter -> reporter.getClass().getName().endsWith("OpenTelemetryMetricsReporter"))
@@ -176,8 +199,6 @@ void observeMetrics() {
176199
"kafka.consumer.join_total",
177200
"kafka.consumer.last_heartbeat_seconds_ago",
178201
"kafka.consumer.last_rebalance_seconds_ago",
179-
"kafka.consumer.partition_assigned_latency_avg",
180-
"kafka.consumer.partition_assigned_latency_max",
181202
"kafka.consumer.rebalance_latency_avg",
182203
"kafka.consumer.rebalance_latency_max",
183204
"kafka.consumer.rebalance_latency_total",

instrumentation/kafka/kafka-clients/kafka-clients-0.11/testing/src/main/java/org/apache/kafka/clients/consumer/KafkaConsumerAccess.java

-18
This file was deleted.

instrumentation/kafka/kafka-clients/kafka-clients-0.11/testing/src/main/java/org/apache/kafka/clients/producer/KafkaProducerAccess.java

-18
This file was deleted.

instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ dependencies {
1919
tasks {
2020
withType<Test>().configureEach {
2121
usesService(gradle.sharedServices.registrations["testcontainersBuildService"].service)
22+
systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean)
2223
}
2324

2425
val testReceiveSpansDisabled by registering(Test::class) {

instrumentation/kafka/kafka-clients/kafka-clients-2.6/library/src/test/java/io/opentelemetry/instrumentation/kafkaclients/v2_6/internal/OpenTelemetryMetricsReporterTest.java

+3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.util.Map;
2525
import org.apache.kafka.clients.consumer.KafkaConsumer;
2626
import org.apache.kafka.clients.producer.KafkaProducer;
27+
import org.junit.jupiter.api.Assumptions;
2728
import org.junit.jupiter.api.Test;
2829
import org.junit.jupiter.api.extension.RegisterExtension;
2930

@@ -44,6 +45,8 @@ protected InstrumentationExtension testing() {
4445

4546
@Test
4647
void badConfig() {
48+
Assumptions.assumeFalse(Boolean.getBoolean("testLatestDeps"));
49+
4750
// Bad producer config
4851
assertThatThrownBy(
4952
() -> {

0 commit comments

Comments
 (0)