Polish messaging; fixes gh-893, fixes gh-894

This commit is contained in:
Marcin Grzejszczak
2018-03-09 08:48:28 +01:00
parent 9f6801aa05
commit 219d349bc3
2 changed files with 3 additions and 241 deletions

View File

@@ -19,6 +19,7 @@ package org.springframework.cloud.sleuth.instrument.messaging;
import brave.Tracing;
import brave.spring.rabbit.SpringRabbitTracing;
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
import org.springframework.amqp.rabbit.connection.Connection;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.BeansException;
@@ -56,12 +57,9 @@ public class TraceMessagingAutoConfiguration {
@Bean
@ConditionalOnMissingBean
SpringRabbitTracing springRabbitTracing(Tracing tracing,
SleuthMessagingProperties properties, ConnectionFactory connectionFactory) {
String remoteServiceName = properties.getMessaging().getRemoteServiceName() +
(StringUtils.hasText(connectionFactory.getVirtualHost()) ?
"-" + connectionFactory.getVirtualHost() : "");
SleuthMessagingProperties properties) {
return SpringRabbitTracing.newBuilder(tracing)
.remoteServiceName(remoteServiceName)
.remoteServiceName(properties.getMessaging().getRemoteServiceName())
.build();
}

View File

@@ -111,242 +111,6 @@ public class ITTracingChannelInterceptor implements MessageHandler {
.isNotNull();
}
//@Test
//public void parentSpanIncluded() {
// this.directChannel.send(MessageBuilder.withPayload("hi")
// .setHeader(TraceMessageHeaders.TRACE_ID_NAME, Span.idToHex(10L))
// .setHeader(TraceMessageHeaders.SPAN_ID_NAME, Span.idToHex(20L)).build());
// then(this.message).isNotNull();
//
// String spanId = this.message.getHeaders().get(TraceMessageHeaders.SPAN_ID_NAME, String.class);
// then(spanId).isNotNull();
// long traceId = Span
// .hexToId(this.message.getHeaders().get(TraceMessageHeaders.TRACE_ID_NAME, String.class));
// then(traceId).isEqualTo(10L);
// then(spanId).isNotEqualTo(20L);
// then(this.accumulator.getSpans()).hasSize(1);
//}
//
//@Test
//public void spanCreation() {
// this.directChannel.send(MessageBuilder.withPayload("hi").build());
// then(this.message).isNotNull();
//
// String spanId = this.message.getHeaders().get(TraceMessageHeaders.SPAN_ID_NAME, String.class);
// then(spanId).isNotNull();
//
// String traceId = this.message.getHeaders().get(TraceMessageHeaders.TRACE_ID_NAME, String.class);
// then(traceId).isNotNull();
// then(TestSpanContextHolder.getCurrentSpan()).isNull();
//}
//
//@Test
//public void shouldLogClientReceivedClientSentEventWhenTheMessageIsSentAndReceived() {
// this.directChannel.send(MessageBuilder.withPayload("hi").build());
//
// then(this.accumulator.getSpans()).hasSize(1);
// then(this.accumulator.getSpans().get(0).logs()).extracting("event").contains(Span.CLIENT_SEND,
// Span.CLIENT_RECV);
//}
//
//@Test
//public void shouldLogServerReceivedServerSentEventWhenTheMessageIsPropagatedToTheNextListener() {
// this.directChannel.send(MessageBuilder.withPayload("hi")
// .setHeader(TraceMessageHeaders.MESSAGE_SENT_FROM_CLIENT, true).build());
//
// then(this.accumulator.getSpans()).hasSize(1);
// then(this.accumulator.getSpans().get(0).logs()).extracting("event").contains(Span.SERVER_RECV,
// Span.SERVER_SEND);
//}
//
//@Test
//public void headerCreation() {
// Span currentSpan = this.tracer.createSpan("http:testSendMessage", new AlwaysSampler());
// this.directChannel.send(MessageBuilder.withPayload("hi").build());
// this.tracer.close(currentSpan);
// then(this.message).isNotNull();
//
// String spanId = this.message.getHeaders().get(TraceMessageHeaders.SPAN_ID_NAME, String.class);
// then(spanId).isNotNull();
//
// String traceId = this.message.getHeaders().get(TraceMessageHeaders.TRACE_ID_NAME, String.class);
// then(traceId).isNotNull();
// then(TestSpanContextHolder.getCurrentSpan()).isNull();
//}
//
//// TODO: Refactor to parametrized test together with sending messages via channel
//@Test
//public void headerCreationViaMessagingTemplate() {
// Span currentSpan = this.tracer.createSpan("http:testSendMessage", new AlwaysSampler());
// this.messagingTemplate.send(MessageBuilder.withPayload("hi").build());
//
// this.tracer.close(currentSpan);
// then(this.message).isNotNull();
//
// String spanId = this.message.getHeaders().get(TraceMessageHeaders.SPAN_ID_NAME, String.class);
// then(spanId).isNotNull();
//
// String traceId = this.message.getHeaders().get(TraceMessageHeaders.TRACE_ID_NAME, String.class);
// then(traceId).isNotNull();
// then(TestSpanContextHolder.getCurrentSpan()).isNull();
//}
//
//@Test
//public void shouldCloseASpanWhenExceptionOccurred() {
// Span currentSpan = this.tracer.createSpan("http:testSendMessage", new AlwaysSampler());
// Map<String, String> errorHeaders = new HashMap<>();
// errorHeaders.put("THROW_EXCEPTION", "TRUE");
//
// try {
// this.messagingTemplate.send(
// MessageBuilder.withPayload("hi").copyHeaders(errorHeaders).build());
// SleuthAssertions.fail("Exception should occur");
// }
// catch (RuntimeException e) {
// }
//
// then(this.message).isNotNull();
// this.tracer.close(currentSpan);
// then(TestSpanContextHolder.getCurrentSpan()).isNull();
// then(new ListOfSpans(this.accumulator.getSpans()))
// .hasASpanWithTagEqualTo(Span.SPAN_ERROR_TAG_NAME,
// "A terrible exception has occurred");
//}
//
//@Test
//public void shouldNotTraceIgnoredChannel() {
// this.ignoredChannel.send(MessageBuilder.withPayload("hi").build());
// then(this.message).isNotNull();
//
// String spanId = this.message.getHeaders().get(TraceMessageHeaders.SPAN_ID_NAME, String.class);
// then(spanId).isNull();
//
// String traceId = this.message.getHeaders().get(TraceMessageHeaders.TRACE_ID_NAME, String.class);
// then(traceId).isNull();
//
// then(this.accumulator.getSpans()).isEmpty();
// then(TestSpanContextHolder.getCurrentSpan()).isNull();
//}
//
//@Test
//public void downgrades128bitIdsByDroppingHighBits() {
// String hex128Bits = "463ac35c9f6413ad48485a3953bb6124";
// String lower64Bits = "48485a3953bb6124";
// this.directChannel.send(MessageBuilder.withPayload("hi")
// .setHeader(TraceMessageHeaders.TRACE_ID_NAME, hex128Bits)
// .setHeader(TraceMessageHeaders.SPAN_ID_NAME, Span.idToHex(20L)).build());
// then(this.message).isNotNull();
//
// long traceId = Span.hexToId(this.message.getHeaders()
// .get(TraceMessageHeaders.TRACE_ID_NAME, String.class));
// then(traceId).isEqualTo(Span.hexToId(lower64Bits));
//}
//
//@Test
//public void shouldNotBreakWhenInvalidHeadersAreSent() {
// this.directChannel.send(MessageBuilder.withPayload("hi")
// .setHeader(TraceMessageHeaders.PARENT_ID_NAME, "-")
// .setHeader(TraceMessageHeaders.TRACE_ID_NAME, Span.idToHex(10L))
// .setHeader(TraceMessageHeaders.SPAN_ID_NAME, Span.idToHex(20L)).build());
//
// then(this.message).isNotNull();
// then(this.accumulator.getSpans()).isNotEmpty();
// then(TestSpanContextHolder.getCurrentSpan()).isNull();
//}
//
//@Test
//public void shouldShortenTheNameWhenItsTooLarge() {
// this.directChannel.send(MessageBuilder.withPayload("hi")
// .setHeader(TraceMessageHeaders.SPAN_NAME_NAME, bigName())
// .setHeader(TraceMessageHeaders.TRACE_ID_NAME, Span.idToHex(10L))
// .setHeader(TraceMessageHeaders.SPAN_ID_NAME, Span.idToHex(20L)).build());
//
// then(this.message).isNotNull();
//
// then(this.accumulator.getSpans()).isNotEmpty();
// this.accumulator.getSpans().forEach(span1 -> then(span1.getName().length()).isLessThanOrEqualTo(50));
// then(TestSpanContextHolder.getCurrentSpan()).isNull();
//}
//
//private String bigName() {
// StringBuilder sb = new StringBuilder();
// for (int i = 0; i < 60; i++) {
// sb.append("a");
// }
// return sb.toString();
//}
//
//@Test
//public void serializeMutableHeaders() throws Exception {
// Map<String, Object> headers = new HashMap<>();
// headers.put("foo", "bar");
// Message<?> message = new GenericMessage<>("test", headers);
// ChannelInterceptor immutableMessageInterceptor = new ChannelInterceptorAdapter() {
// @Override
// public Message<?> preSend(Message<?> message, MessageChannel channel) {
// MessageHeaderAccessor headers = MessageHeaderAccessor.getMutableAccessor(message);
// return new GenericMessage<Object>(message.getPayload(), headers.toMessageHeaders());
// }
// };
// this.directChannel.addInterceptor(immutableMessageInterceptor);
//
// this.directChannel.send(message);
//
// Message<?> output = (Message<?>) SerializationUtils.deserialize(SerializationUtils.serialize(this.message));
// then(output.getPayload()).isEqualTo("test");
// then(output.getHeaders().get("foo")).isEqualTo("bar");
// this.directChannel.removeInterceptor(immutableMessageInterceptor);
//}
//
//@Test
//public void workWithMessagingException() throws Exception {
// Message<?> message = new GenericMessage<>(new MessagingException(
// MessageBuilder.withPayload("hi")
// .setHeader(TraceMessageHeaders.TRACE_ID_NAME, Span.idToHex(10L))
// .setHeader(TraceMessageHeaders.SPAN_ID_NAME, Span.idToHex(20L)).build()
// ));
//
// this.directChannel.send(message);
//
// String spanId = this.message.getHeaders().get(TraceMessageHeaders.SPAN_ID_NAME, String.class);
// then(message.getPayload()).isEqualTo(this.message.getPayload());
// then(spanId).isNotNull();
// long traceId = Span
// .hexToId(this.message.getHeaders().get(TraceMessageHeaders.TRACE_ID_NAME, String.class));
// then(traceId).isEqualTo(10L);
// then(spanId).isNotEqualTo(20L);
// then(this.accumulator.getSpans()).hasSize(1);
//}
//
//@Test
//public void errorMessageHeadersRetained() {
// QueueChannel deadReplyChannel = new QueueChannel();
// QueueChannel errorsReplyChannel = new QueueChannel();
// Map<String, Object> errorChannelHeaders = new HashMap<>();
// errorChannelHeaders.put(MessageHeaders.REPLY_CHANNEL, errorsReplyChannel);
// errorChannelHeaders.put(MessageHeaders.ERROR_CHANNEL, errorsReplyChannel);
//
// this.directChannel.send(new ErrorMessage(
// new MessagingException(MessageBuilder.withPayload("hi")
// .setHeader(TraceMessageHeaders.TRACE_ID_NAME, Span.idToHex(10L))
// .setHeader(TraceMessageHeaders.SPAN_ID_NAME, Span.idToHex(20L))
// .setReplyChannel(deadReplyChannel)
// .setErrorChannel(deadReplyChannel)
// .build() ),
// errorChannelHeaders));
// then(this.message).isNotNull();
//
// String spanId = this.message.getHeaders().get(TraceMessageHeaders.SPAN_ID_NAME, String.class);
// then(spanId).isNotNull();
// long traceId = Span
// .hexToId(this.message.getHeaders().get(TraceMessageHeaders.TRACE_ID_NAME, String.class));
// then(traceId).isEqualTo(10L);
// then(spanId).isNotEqualTo(20L);
// then(this.accumulator.getSpans()).hasSize(1);
// then(this.message.getHeaders().getReplyChannel()).isSameAs(errorsReplyChannel);
// then(this.message.getHeaders().getErrorChannel()).isSameAs(errorsReplyChannel);
//}
@Configuration @EnableAutoConfiguration static class App {
@Bean List<zipkin2.Span> spans() {