Skip to content

Commit ec58629

Browse files
committed
Harden Micrometer observation test
Fails on CI.
1 parent 7e002c4 commit ec58629

File tree

1 file changed

+49
-11
lines changed

1 file changed

+49
-11
lines changed

src/test/java/com/rabbitmq/model/amqp/MicrometerObservationCollectorTest.java

Lines changed: 49 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,13 @@
2525
import com.rabbitmq.model.Management;
2626
import com.rabbitmq.model.Publisher;
2727
import com.rabbitmq.model.observation.micrometer.MicrometerObservationCollector;
28+
import io.micrometer.tracing.exporter.FinishedSpan;
2829
import io.micrometer.tracing.test.SampleTestRunner;
30+
import io.micrometer.tracing.test.reporter.BuildingBlocks;
2931
import io.micrometer.tracing.test.simple.SpanAssert;
3032
import io.micrometer.tracing.test.simple.SpansAssert;
3133
import java.nio.charset.StandardCharsets;
34+
import java.util.List;
3235
import java.util.UUID;
3336
import java.util.concurrent.CountDownLatch;
3437
import java.util.concurrent.atomic.AtomicReference;
@@ -101,7 +104,7 @@ public SampleTestRunner.SampleTestRunnerConsumer yourCode() {
101104

102105
waitAtMost(() -> buildingBlocks.getFinishedSpans().size() == 2);
103106
SpansAssert.assertThat(buildingBlocks.getFinishedSpans()).haveSameTraceId().hasSize(2);
104-
SpanAssert.assertThat(buildingBlocks.getFinishedSpans().get(0))
107+
SpanAssert.assertThat(lastPublish(buildingBlocks))
105108
.hasNameEqualTo(e + " publish")
106109
.hasTag("messaging.rabbitmq.destination.routing_key", "foo")
107110
.hasTag("messaging.destination.name", e)
@@ -113,7 +116,7 @@ public SampleTestRunner.SampleTestRunnerConsumer yourCode() {
113116
.hasTag("net.protocol.name", "amqp")
114117
.hasTag("net.protocol.version", "1.0");
115118

116-
SpanAssert.assertThat(buildingBlocks.getFinishedSpans().get(1))
119+
SpanAssert.assertThat(lastProcess(buildingBlocks))
117120
.hasNameEqualTo(q + " process")
118121
.hasTag("messaging.rabbitmq.destination.routing_key", "foo")
119122
.hasTag("messaging.destination.name", e)
@@ -142,16 +145,19 @@ public SampleTestRunner.SampleTestRunnerConsumer yourCode() {
142145
publisher = publisherConnection.publisherBuilder().exchange(e).build();
143146

144147
consumeLatch.set(new CountDownLatch(1));
145-
publisher.publish(publisher.message(PAYLOAD), ctx -> {});
148+
messageId = UUID.randomUUID();
149+
publisher.publish(publisher.message(PAYLOAD).messageId(messageId), ctx -> {});
146150
assertThat(consumeLatch).completes();
147151
waitAtMost(() -> buildingBlocks.getFinishedSpans().size() == 4);
148152
SpansAssert.assertThat(buildingBlocks.getFinishedSpans()).haveSameTraceId().hasSize(4);
149-
SpanAssert.assertThat(buildingBlocks.getFinishedSpans().get(2))
153+
SpanAssert.assertThat(lastPublish(buildingBlocks))
150154
.hasNameEqualTo(e + " publish")
155+
.hasTag("messaging.message.id", messageId.toString())
151156
.hasTag("messaging.rabbitmq.destination.routing_key", "")
152157
.hasTag("messaging.destination.name", e);
153-
SpanAssert.assertThat(buildingBlocks.getFinishedSpans().get(3))
158+
SpanAssert.assertThat(lastProcess(buildingBlocks))
154159
.hasNameEqualTo(q + " process")
160+
.hasTag("messaging.message.id", messageId.toString())
155161
.hasTag("messaging.rabbitmq.destination.routing_key", "")
156162
.hasTag("messaging.destination.name", e)
157163
.hasTag("messaging.source.name", q);
@@ -160,16 +166,19 @@ public SampleTestRunner.SampleTestRunnerConsumer yourCode() {
160166
publisher = publisherConnection.publisherBuilder().queue(q).build();
161167

162168
consumeLatch.set(new CountDownLatch(1));
163-
publisher.publish(publisher.message(PAYLOAD), ctx -> {});
169+
messageId = UUID.randomUUID();
170+
publisher.publish(publisher.message(PAYLOAD).messageId(messageId), ctx -> {});
164171
assertThat(consumeLatch).completes();
165172
waitAtMost(() -> buildingBlocks.getFinishedSpans().size() == 6);
166173
SpansAssert.assertThat(buildingBlocks.getFinishedSpans()).haveSameTraceId().hasSize(6);
167-
SpanAssert.assertThat(buildingBlocks.getFinishedSpans().get(4))
174+
SpanAssert.assertThat(lastPublish(buildingBlocks))
168175
.hasNameEqualTo("amq.default publish")
176+
.hasTag("messaging.message.id", messageId.toString())
169177
.hasTag("messaging.rabbitmq.destination.routing_key", q)
170178
.hasTag("messaging.destination.name", "");
171-
SpanAssert.assertThat(buildingBlocks.getFinishedSpans().get(5))
179+
SpanAssert.assertThat(lastProcess(buildingBlocks))
172180
.hasNameEqualTo(q + " process")
181+
.hasTag("messaging.message.id", messageId.toString())
173182
.hasTag("messaging.rabbitmq.destination.routing_key", q)
174183
.hasTag("messaging.destination.name", "")
175184
.hasTag("messaging.source.name", q);
@@ -178,22 +187,51 @@ public SampleTestRunner.SampleTestRunnerConsumer yourCode() {
178187
publisher = publisherConnection.publisherBuilder().build();
179188

180189
consumeLatch.set(new CountDownLatch(1));
190+
messageId = UUID.randomUUID();
181191
publisher.publish(
182-
publisher.message(PAYLOAD).toAddress().exchange(e).key("foo").message(), ctx -> {});
192+
publisher
193+
.message(PAYLOAD)
194+
.messageId(messageId)
195+
.toAddress()
196+
.exchange(e)
197+
.key("foo")
198+
.message(),
199+
ctx -> {});
183200
assertThat(consumeLatch).completes();
184201
waitAtMost(() -> buildingBlocks.getFinishedSpans().size() == 8);
185202
SpansAssert.assertThat(buildingBlocks.getFinishedSpans()).haveSameTraceId().hasSize(8);
186-
SpanAssert.assertThat(buildingBlocks.getFinishedSpans().get(6))
203+
SpanAssert.assertThat(lastPublish(buildingBlocks))
187204
.hasNameEqualTo(e + " publish")
205+
.hasTag("messaging.message.id", messageId.toString())
188206
.hasTag("messaging.rabbitmq.destination.routing_key", "foo")
189207
.hasTag("messaging.destination.name", e);
190-
SpanAssert.assertThat(buildingBlocks.getFinishedSpans().get(7))
208+
SpanAssert.assertThat(lastProcess(buildingBlocks))
191209
.hasNameEqualTo(q + " process")
210+
.hasTag("messaging.message.id", messageId.toString())
192211
.hasTag("messaging.rabbitmq.destination.routing_key", "foo")
193212
.hasTag("messaging.destination.name", e)
194213
.hasTag("messaging.source.name", q);
195214
}
196215
};
197216
}
198217
}
218+
219+
private static FinishedSpan lastPublish(BuildingBlocks blocks) {
220+
return lastWithNameEnding(blocks, "publish");
221+
}
222+
223+
private static FinishedSpan lastProcess(BuildingBlocks blocks) {
224+
return lastWithNameEnding(blocks, "process");
225+
}
226+
227+
private static FinishedSpan lastWithNameEnding(BuildingBlocks blocks, String nameEnding) {
228+
List<FinishedSpan> spans = blocks.getFinishedSpans();
229+
for (int i = spans.size() - 1; i >= 0; i--) {
230+
FinishedSpan span = spans.get(i);
231+
if (span.getName().endsWith(nameEnding)) {
232+
return span;
233+
}
234+
}
235+
throw new IllegalStateException();
236+
}
199237
}

0 commit comments

Comments
 (0)