Skip to content

Commit 5c027b5

Browse files
lauritsteverao
andauthored
Improve dubbo network type assertion (#14717)
Co-authored-by: Steve Rao <[email protected]>
1 parent 56b179f commit 5c027b5

File tree

3 files changed

+55
-145
lines changed

3 files changed

+55
-145
lines changed

instrumentation/apache-dubbo-2.7/javaagent/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ testing {
4040
}
4141

4242
tasks.withType<Test>().configureEach {
43+
systemProperty("testLatestDeps", findProperty("testLatestDeps") as Boolean)
4344
jvmArgs("-XX:+IgnoreUnrecognizedVMOptions")
4445
// to suppress non-fatal errors on jdk17
4546
jvmArgs("--add-opens=java.base/java.math=ALL-UNNAMED")

instrumentation/apache-dubbo-2.7/testing/src/main/java/io/opentelemetry/instrumentation/apachedubbo/v2_7/AbstractDubboTest.java

Lines changed: 38 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.net.InetAddress;
3030
import java.util.concurrent.CompletableFuture;
3131
import java.util.concurrent.ExecutionException;
32+
import java.util.function.Consumer;
3233
import org.apache.dubbo.common.utils.NetUtils;
3334
import org.apache.dubbo.config.ApplicationConfig;
3435
import org.apache.dubbo.config.ProtocolConfig;
@@ -38,6 +39,7 @@
3839
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
3940
import org.apache.dubbo.rpc.service.GenericService;
4041
import org.assertj.core.api.AbstractAssert;
42+
import org.assertj.core.api.AbstractStringAssert;
4143
import org.junit.jupiter.api.AfterAll;
4244
import org.junit.jupiter.api.BeforeAll;
4345
import org.junit.jupiter.api.Test;
@@ -143,23 +145,11 @@ void testApacheDubboBase() throws ReflectiveOperationException {
143145
satisfies(SERVER_PORT, k -> k.isInstanceOf(Long.class)),
144146
satisfies(
145147
NETWORK_PEER_ADDRESS,
146-
k ->
147-
k.satisfiesAnyOf(
148-
val -> assertThat(val).isNull(),
149-
val -> assertThat(val).isInstanceOf(String.class))),
148+
k -> assertLatestDeps(k, a -> a.isInstanceOf(String.class))),
150149
satisfies(
151150
NETWORK_PEER_PORT,
152-
k ->
153-
k.satisfiesAnyOf(
154-
val -> assertThat(val).isNull(),
155-
val -> assertThat(val).isInstanceOf(Long.class))),
156-
satisfies(
157-
NETWORK_TYPE,
158-
k ->
159-
k.satisfiesAnyOf(
160-
val -> assertThat(val).isNull(),
161-
val -> assertThat(val).isEqualTo("ipv4"),
162-
val -> assertThat(val).isEqualTo("ipv6")))),
151+
k -> assertLatestDeps(k, a -> a.isInstanceOf(Long.class))),
152+
satisfies(NETWORK_TYPE, AbstractDubboTest::assertNetworkType)),
163153
span ->
164154
span.hasName(
165155
"io.opentelemetry.instrumentation.apachedubbo.v2_7.api.HelloService/hello")
@@ -174,8 +164,7 @@ void testApacheDubboBase() throws ReflectiveOperationException {
174164
"io.opentelemetry.instrumentation.apachedubbo.v2_7.api.HelloService"),
175165
equalTo(RPC_METHOD, "hello"),
176166
satisfies(NETWORK_PEER_ADDRESS, k -> k.isInstanceOf(String.class)),
177-
satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class)),
178-
satisfies(NETWORK_TYPE, AbstractAssert::isNull))));
167+
satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class)))));
179168

180169
testing()
181170
.waitAndAssertMetrics(
@@ -227,14 +216,7 @@ void testApacheDubboBase() throws ReflectiveOperationException {
227216
SERVER_PORT, k -> k.isInstanceOf(Long.class)),
228217
satisfies(
229218
NETWORK_TYPE,
230-
k ->
231-
k.satisfiesAnyOf(
232-
val -> assertThat(val).isNull(),
233-
val ->
234-
assertThat(val).isEqualTo("ipv4"),
235-
val ->
236-
assertThat(val)
237-
.isEqualTo("ipv6"))))))));
219+
AbstractDubboTest::assertNetworkType))))));
238220
}
239221

240222
@Test
@@ -294,23 +276,11 @@ void testApacheDubboTest()
294276
satisfies(SERVER_PORT, k -> k.isInstanceOf(Long.class)),
295277
satisfies(
296278
NETWORK_PEER_ADDRESS,
297-
k ->
298-
k.satisfiesAnyOf(
299-
val -> assertThat(val).isNull(),
300-
val -> assertThat(val).isInstanceOf(String.class))),
279+
k -> assertLatestDeps(k, a -> a.isInstanceOf(String.class))),
301280
satisfies(
302281
NETWORK_PEER_PORT,
303-
k ->
304-
k.satisfiesAnyOf(
305-
val -> assertThat(val).isNull(),
306-
val -> assertThat(val).isInstanceOf(Long.class))),
307-
satisfies(
308-
NETWORK_TYPE,
309-
k ->
310-
k.satisfiesAnyOf(
311-
val -> assertThat(val).isNull(),
312-
val -> assertThat(val).isEqualTo("ipv4"),
313-
val -> assertThat(val).isEqualTo("ipv6")))),
282+
k -> assertLatestDeps(k, a -> a.isInstanceOf(Long.class))),
283+
satisfies(NETWORK_TYPE, AbstractDubboTest::assertNetworkType)),
314284
span ->
315285
span.hasName(
316286
"io.opentelemetry.instrumentation.apachedubbo.v2_7.api.HelloService/hello")
@@ -326,13 +296,18 @@ void testApacheDubboTest()
326296
equalTo(RPC_METHOD, "hello"),
327297
satisfies(NETWORK_PEER_ADDRESS, k -> k.isInstanceOf(String.class)),
328298
satisfies(NETWORK_PEER_PORT, k -> k.isInstanceOf(Long.class)),
299+
// this attribute is not filled reliably, it is either null or
300+
// "ipv4"/"ipv6"
329301
satisfies(
330302
NETWORK_TYPE,
331303
k ->
332-
k.satisfiesAnyOf(
333-
val -> assertThat(val).isNull(),
334-
val -> assertThat(val).isEqualTo("ipv4"),
335-
val -> assertThat(val).isEqualTo("ipv6"))))));
304+
assertLatestDeps(
305+
k,
306+
a ->
307+
a.satisfiesAnyOf(
308+
val -> assertThat(val).isNull(),
309+
val -> assertThat(val).isEqualTo("ipv4"),
310+
val -> assertThat(val).isEqualTo("ipv6")))))));
336311

337312
testing()
338313
.waitAndAssertMetrics(
@@ -384,13 +359,24 @@ void testApacheDubboTest()
384359
SERVER_PORT, k -> k.isInstanceOf(Long.class)),
385360
satisfies(
386361
NETWORK_TYPE,
387-
k ->
388-
k.satisfiesAnyOf(
389-
val -> assertThat(val).isNull(),
390-
val ->
391-
assertThat(val).isEqualTo("ipv4"),
392-
val ->
393-
assertThat(val)
394-
.isEqualTo("ipv6"))))))));
362+
AbstractDubboTest::assertNetworkType))))));
363+
}
364+
365+
static void assertNetworkType(AbstractStringAssert<?> stringAssert) {
366+
assertLatestDeps(
367+
stringAssert,
368+
a ->
369+
a.satisfiesAnyOf(
370+
val -> assertThat(val).isEqualTo("ipv4"),
371+
val -> assertThat(val).isEqualTo("ipv6")));
372+
}
373+
374+
static void assertLatestDeps(
375+
AbstractAssert<?, ?> assertion, Consumer<AbstractAssert<?, ?>> action) {
376+
if (Boolean.getBoolean("testLatestDeps")) {
377+
action.accept(assertion);
378+
} else {
379+
assertion.isNull();
380+
}
395381
}
396382
}

0 commit comments

Comments
 (0)