From 558c7e242392b415a7da5745de5c7763a549925c Mon Sep 17 00:00:00 2001 From: Marcin Grzejszczak Date: Tue, 17 Oct 2017 08:29:03 +0200 Subject: [PATCH] Trying to fix the flickering build --- .../MessagingApplicationTests.java | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/src/test/java/integration/MessagingApplicationTests.java b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/src/test/java/integration/MessagingApplicationTests.java index 611492637..79a99ed32 100644 --- a/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/src/test/java/integration/MessagingApplicationTests.java +++ b/spring-cloud-sleuth-samples/spring-cloud-sleuth-sample-messaging/src/test/java/integration/MessagingApplicationTests.java @@ -15,6 +15,10 @@ */ package integration; +import static java.util.concurrent.TimeUnit.SECONDS; +import static org.assertj.core.api.BDDAssertions.then; + +import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; @@ -40,9 +44,6 @@ import tools.AbstractIntegrationTest; import zipkin.Constants; import zipkin.Span; -import static java.util.concurrent.TimeUnit.SECONDS; -import static org.assertj.core.api.BDDAssertions.then; - @RunWith(SpringJUnit4ClassRunner.class) @SpringBootTest(classes = { IntegrationSpanCollectorConfig.class, SampleMessagingApplication.class }, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) @@ -102,14 +103,14 @@ public class MessagingApplicationTests extends AbstractIntegrationTest { } private void thenThereIsAtLeastOneBinaryAnnotationWithKey(String binaryAnnotationKey) { - then(this.integrationTestSpanCollector.hashedSpans.stream() + then(new ArrayList<>(this.integrationTestSpanCollector.hashedSpans).stream() .map(s -> s.binaryAnnotations) .flatMap(Collection::stream) .anyMatch(b -> b.key.equals(binaryAnnotationKey))).isTrue(); } private void thenAllSpansHaveTraceIdEqualTo(long traceId) { - then(this.integrationTestSpanCollector.hashedSpans.stream() + then(new ArrayList<>(this.integrationTestSpanCollector.hashedSpans).stream() .allMatch(span -> span.traceId == traceId)).describedAs("All spans have same trace id").isTrue(); } @@ -120,53 +121,56 @@ public class MessagingApplicationTests extends AbstractIntegrationTest { Optional eventReceivedSpan = findSpanWithAnnotation(Constants.CLIENT_RECV); Optional lastHttpSpansParent = findLastHttpSpansParent(); // "http:/parent/" -> "message:messages" -> "http:/foo" (CS + CR) -> "http:/foo" (SS) - Collections.sort(this.integrationTestSpanCollector.hashedSpans); - thenAllSpansArePresent(firstHttpSpan, eventSpans, lastHttpSpansParent, eventSentSpan, eventReceivedSpan); - then(this.integrationTestSpanCollector.hashedSpans).as("There were 4 spans").hasSize(4); + ArrayList spans = new ArrayList<>( + this.integrationTestSpanCollector.hashedSpans); + Collections.sort(spans); + thenAllSpansArePresent(spans, firstHttpSpan, eventSpans, lastHttpSpansParent, eventSentSpan, eventReceivedSpan); + then(spans).as("There were 4 spans").hasSize(4); log.info("Checking the parent child structure"); - List> parentChild = this.integrationTestSpanCollector.hashedSpans.stream() + List> parentChild = spans.stream() .filter(span -> span.parentId != null) - .map(span -> this.integrationTestSpanCollector.hashedSpans.stream().filter(span1 -> span1.id == span.parentId).findAny() + .map(span -> spans.stream().filter(span1 -> span1.id == span.parentId).findAny() ).collect(Collectors.toList()); log.info("List of parents and children " + parentChild); then(parentChild.stream().allMatch(Optional::isPresent)).isTrue(); } private Optional findLastHttpSpansParent() { - return this.integrationTestSpanCollector.hashedSpans.stream() + return new ArrayList<>(this.integrationTestSpanCollector.hashedSpans).stream() .filter(span -> "http:/foo".equals(span.name) && !span.annotations.isEmpty()).findFirst(); } private Optional findSpanWithAnnotation(String annotationName) { - return this.integrationTestSpanCollector.hashedSpans.stream() - .filter(span -> span.annotations.stream().filter(annotation -> annotationName + return new ArrayList<>(this.integrationTestSpanCollector.hashedSpans).stream() + .filter(span -> span.annotations.stream() + .filter(annotation -> annotationName .equals(annotation.value)).findFirst().isPresent()) .findFirst(); } private List findAllEventRelatedSpans() { - return this.integrationTestSpanCollector.hashedSpans.stream() + return new ArrayList<>(this.integrationTestSpanCollector.hashedSpans).stream() .filter(span -> "message:messages".equals(span.name) && span.parentId != null).collect( Collectors.toList()); } private Optional findFirstHttpRequestSpan() { - return this.integrationTestSpanCollector.hashedSpans.stream() + return new ArrayList<>(this.integrationTestSpanCollector.hashedSpans).stream() // home is the name of the method .filter(span -> span.binaryAnnotations.stream() .anyMatch(binaryAnnotation -> new String(binaryAnnotation.value).equals("home"))).findFirst(); } - private void thenAllSpansArePresent(Optional firstHttpSpan, - List eventSpans, Optional lastHttpSpan, - Optional eventSentSpan, Optional eventReceivedSpan) { + private void thenAllSpansArePresent(ArrayList spans, Optional firstHttpSpan, + List eventSpans, Optional lastHttpSpan, Optional eventSentSpan, + Optional eventReceivedSpan) { log.info("Found following spans"); log.info("First http span " + firstHttpSpan); log.info("Event spans " + eventSpans); log.info("Event sent span " + eventSentSpan); log.info("Event received span " + eventReceivedSpan); log.info("Last http span " + lastHttpSpan); - log.info("All found spans \n" + this.integrationTestSpanCollector.hashedSpans + log.info("All found spans \n" + spans .stream().map(Span::toString).collect(Collectors.joining("\n"))); then(firstHttpSpan.isPresent()).isTrue(); then(eventSpans).isNotEmpty();