Skip to content

Commit 4d356c0

Browse files
authored
enhance messaging testapp (#907)
* allow to set destination + async receive msg * fix test + reformat
1 parent 37bf4f4 commit 4d356c0

File tree

4 files changed

+31
-15
lines changed

4 files changed

+31
-15
lines changed

smoke-tests/src/test/java/com/example/javaagent/smoketest/AgentFeaturesSmokeTest.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -96,26 +96,26 @@ void httpHeaderCapture() {
9696
@Test
9797
void messagingHeaderCapture() {
9898
doRequest(
99-
getUrl("/messages/send?headerName=My_Header&headerValue=my-header-value"), okResponse());
100-
doRequest(getUrl("/messages/receive"), okResponse());
99+
getUrl("/messages/send/sync-queue?headerName=My_Header&headerValue=my-header-value"),
100+
okResponse());
101+
doRequest(getUrl("/messages/receive/sync-queue"), okResponse());
101102

102103
List<ExportTraceServiceRequest> traces = waitForTraces();
103104
List<Span> spans = getSpans(traces).toList();
104105
assertThat(spans)
105106
.hasSize(3)
106107
.extracting("name", "kind")
107108
.containsOnly(
108-
tuple("GET /messages/send", Span.SpanKind.SPAN_KIND_SERVER),
109-
tuple("messages-destination publish", Span.SpanKind.SPAN_KIND_PRODUCER),
110-
tuple("GET /messages/receive", Span.SpanKind.SPAN_KIND_SERVER));
109+
tuple("GET /messages/send/{destination}", Span.SpanKind.SPAN_KIND_SERVER),
110+
tuple("sync-queue publish", Span.SpanKind.SPAN_KIND_PRODUCER),
111+
tuple("GET /messages/receive/{destination}", Span.SpanKind.SPAN_KIND_SERVER));
111112

112113
spans.stream()
113114
.filter(span -> span.getKind() == Span.SpanKind.SPAN_KIND_PRODUCER)
114115
.forEach(
115116
span ->
116117
assertThat(getAttributes(span.getAttributesList()))
117-
.containsEntry(
118-
"messaging.destination.name", attributeValue("messages-destination"))
118+
.containsEntry("messaging.destination.name", attributeValue("sync-queue"))
119119
.containsEntry(
120120
"messaging.header.My_Header", attributeArrayValue("my-header-value")));
121121
}

smoke-tests/test-app/build.gradle.kts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ plugins {
55
alias(catalog.plugins.taskinfo)
66
}
77

8+
val mainClass = "co.elastic.otel.test.AppMain"
9+
810
dependencies {
911

1012
// Using a spring boot app is simpler for a general-purpose test app
@@ -40,7 +42,7 @@ jib {
4042
from.image = "gcr.io/distroless/java17-debian11:debug"
4143
to.image = "docker.elastic.co/open-telemetry/elastic-otel-java/smoke-test/test-app:$tag"
4244
container.ports = listOf("8080")
43-
container.mainClass = "co.elastic.otel.test.AppMain"
45+
container.mainClass = mainClass
4446
}
4547

4648
tasks {
@@ -52,6 +54,12 @@ tasks {
5254
isEnabled = false
5355
}
5456

57+
jar {
58+
manifest {
59+
attributes("Main-Class" to mainClass)
60+
}
61+
}
62+
5563
// build docker image with 'assemble'
5664
assemble {
5765
dependsOn(jibDockerBuild)

smoke-tests/test-app/src/main/java/co/elastic/otel/test/AppMain.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@
1919
package co.elastic.otel.test;
2020

2121
import co.elastic.otel.agent.attach.RuntimeAttach;
22+
import javax.jms.Message;
2223
import org.springframework.boot.SpringApplication;
2324
import org.springframework.boot.autoconfigure.SpringBootApplication;
2425
import org.springframework.jms.annotation.EnableJms;
26+
import org.springframework.jms.annotation.JmsListener;
2527

2628
@SpringBootApplication
2729
@EnableJms
@@ -33,4 +35,9 @@ public static void main(String[] args) {
3335
}
3436
SpringApplication.run(AppMain.class, args);
3537
}
38+
39+
@JmsListener(destination = "async-queue")
40+
public static void onMessage(Message message) {
41+
System.out.println("message received");
42+
}
3643
}

smoke-tests/test-app/src/main/java/co/elastic/otel/test/MessagingController.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import javax.jms.TextMessage;
2525
import org.springframework.beans.factory.annotation.Autowired;
2626
import org.springframework.jms.core.JmsTemplate;
27+
import org.springframework.web.bind.annotation.PathVariable;
2728
import org.springframework.web.bind.annotation.RequestMapping;
2829
import org.springframework.web.bind.annotation.RequestParam;
2930
import org.springframework.web.bind.annotation.RestController;
@@ -32,21 +33,20 @@
3233
@RequestMapping("/messages")
3334
public class MessagingController {
3435

35-
private static final String DESTINATION = "messages-destination";
36-
3736
@Autowired
3837
public MessagingController(JmsTemplate jmsTemplate) {
3938
this.jmsTemplate = jmsTemplate;
4039
}
4140

4241
private final JmsTemplate jmsTemplate;
4342

44-
@RequestMapping("/send")
43+
@RequestMapping("/send/{destination}")
4544
public String send(
45+
@PathVariable(name = "destination") String destination,
4646
@RequestParam(name = "headerName", required = false) String headerName,
4747
@RequestParam(name = "headerValue", required = false) String headerValue) {
4848
jmsTemplate.send(
49-
DESTINATION,
49+
destination,
5050
session -> {
5151
TextMessage message = session.createTextMessage("Hello World");
5252
if (headerName != null && headerValue != null) {
@@ -57,9 +57,10 @@ public String send(
5757
return null;
5858
}
5959

60-
@RequestMapping("/receive")
61-
public String receive() throws JMSException {
62-
Message received = jmsTemplate.receive(DESTINATION);
60+
@RequestMapping("/receive/{destination}")
61+
public String receive(@PathVariable(name = "destination") String destination)
62+
throws JMSException {
63+
Message received = jmsTemplate.receive(destination);
6364
if (received instanceof TextMessage) {
6465
TextMessage textMessage = (TextMessage) received;
6566
StringBuilder sb = new StringBuilder();

0 commit comments

Comments
 (0)