@@ -15,9 +15,6 @@
|
||||
*/
|
||||
package org.springframework.cloud.sleuth.zipkin.stream;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.springframework.cloud.sleuth.Span;
|
||||
import org.springframework.cloud.sleuth.stream.Host;
|
||||
@@ -29,6 +26,10 @@ import zipkin.Constants;
|
||||
import zipkin.Endpoint;
|
||||
import zipkin.Span.Builder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This converts sleuth spans to zipkin ones, skipping invalid or unsampled.
|
||||
*
|
||||
@@ -88,7 +89,7 @@ final class ConvertToZipkinSpanList {
|
||||
ZipkinMessageListener.addZipkinAnnotations(zipkinSpan, span, ep);
|
||||
ZipkinMessageListener.addZipkinBinaryAnnotations(zipkinSpan, span, ep);
|
||||
if (hasClientSend(span)) {
|
||||
ensureServerAddr(span, zipkinSpan, ep);
|
||||
ensureServerAddr(span, zipkinSpan);
|
||||
}
|
||||
// In the RPC span model, the client owns the timestamp and duration of the span. If we
|
||||
// were propagated an id, we can assume that we shouldn't report timestamp or duration,
|
||||
@@ -129,10 +130,9 @@ final class ConvertToZipkinSpanList {
|
||||
BinaryAnnotation.create(Constants.LOCAL_COMPONENT, processId, ep));
|
||||
}
|
||||
|
||||
private static void ensureServerAddr(Span span, Builder zipkinSpan,
|
||||
Endpoint ep) {
|
||||
private static void ensureServerAddr(Span span, Builder zipkinSpan) {
|
||||
if (span.tags().containsKey(Span.SPAN_PEER_SERVICE_TAG_NAME)) {
|
||||
Endpoint endpoint = ep.toBuilder().serviceName(span.tags().get(
|
||||
Endpoint endpoint = Endpoint.builder().serviceName(span.tags().get(
|
||||
Span.SPAN_PEER_SERVICE_TAG_NAME)).build();
|
||||
zipkinSpan.addBinaryAnnotation(
|
||||
BinaryAnnotation.address(Constants.SERVER_ADDR, endpoint));
|
||||
|
||||
@@ -15,15 +15,18 @@
|
||||
*/
|
||||
package org.springframework.cloud.sleuth.zipkin.stream;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import org.assertj.core.api.Condition;
|
||||
import org.junit.Test;
|
||||
import org.springframework.cloud.sleuth.Span;
|
||||
import org.springframework.cloud.sleuth.stream.Host;
|
||||
import org.springframework.cloud.sleuth.stream.Spans;
|
||||
import zipkin.Constants;
|
||||
import zipkin.Endpoint;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@@ -86,8 +89,14 @@ public class ConvertToZipkinSpanListTests {
|
||||
.hasSize(1)
|
||||
.flatExtracting(input1 -> input1.binaryAnnotations)
|
||||
.filteredOn("key", Constants.SERVER_ADDR)
|
||||
.extracting(input -> input.endpoint.serviceName)
|
||||
.contains("myservice");
|
||||
.extracting(input -> input.endpoint)
|
||||
.hasSize(1)
|
||||
.has(new Condition<List<? extends Endpoint>>() {
|
||||
@Override public boolean matches(List<? extends Endpoint> value) {
|
||||
Endpoint endpoint = value.get(0);
|
||||
return endpoint.serviceName.equals("myservice") && endpoint.ipv4 == 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -16,6 +16,14 @@
|
||||
|
||||
package org.springframework.cloud.sleuth.zipkin;
|
||||
|
||||
import org.springframework.cloud.commons.util.IdUtils;
|
||||
import org.springframework.cloud.sleuth.Log;
|
||||
import org.springframework.cloud.sleuth.NoOpSpanAdjuster;
|
||||
import org.springframework.cloud.sleuth.Span;
|
||||
import org.springframework.cloud.sleuth.SpanAdjuster;
|
||||
import org.springframework.cloud.sleuth.SpanReporter;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.util.StringUtils;
|
||||
import zipkin.Annotation;
|
||||
import zipkin.BinaryAnnotation;
|
||||
import zipkin.Constants;
|
||||
@@ -27,15 +35,6 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.springframework.cloud.commons.util.IdUtils;
|
||||
import org.springframework.cloud.sleuth.Log;
|
||||
import org.springframework.cloud.sleuth.NoOpSpanAdjuster;
|
||||
import org.springframework.cloud.sleuth.Span;
|
||||
import org.springframework.cloud.sleuth.SpanAdjuster;
|
||||
import org.springframework.cloud.sleuth.SpanReporter;
|
||||
import org.springframework.core.env.Environment;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
/**
|
||||
* Listener of Sleuth events. Reports to Zipkin via {@link ZipkinSpanReporter}.
|
||||
*
|
||||
@@ -149,10 +148,10 @@ public class ZipkinSpanListener implements SpanReporter {
|
||||
zipkinSpan.addBinaryAnnotation(component);
|
||||
}
|
||||
|
||||
private void ensureServerAddr(Span span, zipkin.Span.Builder zipkinSpan, Endpoint localEndpoint) {
|
||||
private void ensureServerAddr(Span span, zipkin.Span.Builder zipkinSpan) {
|
||||
if (span.tags().containsKey(Span.SPAN_PEER_SERVICE_TAG_NAME)) {
|
||||
zipkinSpan.addBinaryAnnotation(BinaryAnnotation.address(Constants.SERVER_ADDR,
|
||||
localEndpoint.toBuilder().serviceName(
|
||||
Endpoint.builder().serviceName(
|
||||
span.tags().get(Span.SPAN_PEER_SERVICE_TAG_NAME)).build()));
|
||||
}
|
||||
}
|
||||
@@ -178,7 +177,7 @@ public class ZipkinSpanListener implements SpanReporter {
|
||||
ensureLocalComponent(span, zipkinSpan, endpoint);
|
||||
}
|
||||
if (hasClientSend) {
|
||||
ensureServerAddr(span, zipkinSpan, endpoint);
|
||||
ensureServerAddr(span, zipkinSpan);
|
||||
}
|
||||
if (instanceIdToTag && this.environment != null) {
|
||||
setInstanceIdIfPresent(zipkinSpan, endpoint, Span.INSTANCEID);
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.springframework.cloud.sleuth.zipkin;
|
||||
|
||||
import org.assertj.core.api.Condition;
|
||||
import zipkin.Constants;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -41,6 +42,7 @@ import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.Primary;
|
||||
import org.springframework.mock.env.MockEnvironment;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
import zipkin.Endpoint;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.junit.Assert.assertEquals;
|
||||
@@ -219,7 +221,14 @@ public class ZipkinSpanListenerTests {
|
||||
|
||||
assertThat(result.binaryAnnotations)
|
||||
.filteredOn("key", Constants.SERVER_ADDR)
|
||||
.isNotEmpty();
|
||||
.extracting(input -> input.endpoint)
|
||||
.hasSize(1)
|
||||
.has(new Condition<List<? extends Endpoint>>() {
|
||||
@Override public boolean matches(List<? extends Endpoint> value) {
|
||||
Endpoint endpoint = value.get(0);
|
||||
return endpoint.serviceName.equals("fooservice") && endpoint.ipv4 == 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user