Skip to content

Commit 56603ba

Browse files
author
Adrian Cole
committed
Update dependency io.zipkin.reporter2:zipkin-reporter-bom to 3.1.1
Signed-off-by: Adrian Cole <adrian@tetrate.io>
1 parent d9f9812 commit 56603ba

File tree

8 files changed

+189
-15
lines changed

8 files changed

+189
-15
lines changed

dependencyManagement/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ val DEPENDENCY_BOMS = listOf(
1616
"com.squareup.okio:okio-bom:3.7.0", // applies to transitive dependencies of okhttp
1717
"io.grpc:grpc-bom:1.60.1",
1818
"io.netty:netty-bom:4.1.104.Final",
19+
"io.zipkin.reporter2:zipkin-reporter-bom:3.1.1",
1920
"io.zipkin.brave:brave-bom:5.17.0",
20-
"io.zipkin.reporter2:zipkin-reporter-bom:2.17.1",
2121
"org.assertj:assertj-bom:3.25.1",
2222
"org.junit:junit-bom:5.10.1",
2323
"org.testcontainers:testcontainers-bom:1.19.3",
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,6 @@
11
Comparing source compatibility of against
2-
No changes.
2+
*** MODIFIED CLASS: PUBLIC FINAL io.opentelemetry.exporter.zipkin.ZipkinSpanExporterBuilder (not serializable)
3+
=== CLASS FILE FORMAT VERSION: 52.0 <- 52.0
4+
=== UNCHANGED METHOD: PUBLIC io.opentelemetry.exporter.zipkin.ZipkinSpanExporterBuilder setEncoder(zipkin2.codec.BytesEncoder<zipkin2.Span><zipkin2.Span>)
5+
+++ NEW ANNOTATION: java.lang.Deprecated
6+
+++ NEW METHOD: PUBLIC(+) io.opentelemetry.exporter.zipkin.ZipkinSpanExporterBuilder setEncoder(zipkin2.reporter.BytesEncoder<zipkin2.Span>)
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.exporter.zipkin;
7+
8+
import zipkin2.Span;
9+
import zipkin2.reporter.BytesEncoder;
10+
import zipkin2.reporter.Encoding;
11+
12+
/**
13+
* This supports the deprecated method {@link
14+
* ZipkinSpanExporterBuilder#setEncoder(zipkin2.codec.BytesEncoder)}.
15+
*/
16+
final class BytesEncoderAdapter implements BytesEncoder<Span> {
17+
private final zipkin2.codec.BytesEncoder<Span> delegate;
18+
private final Encoding encoding;
19+
20+
@SuppressWarnings("deprecation") // we have to use the deprecated thrift encoding to return it
21+
BytesEncoderAdapter(zipkin2.codec.BytesEncoder<Span> delegate) {
22+
this.delegate = delegate;
23+
switch (delegate.encoding()) {
24+
case JSON:
25+
this.encoding = Encoding.JSON;
26+
break;
27+
case PROTO3:
28+
this.encoding = Encoding.PROTO3;
29+
break;
30+
case THRIFT:
31+
this.encoding = Encoding.THRIFT;
32+
break;
33+
default:
34+
// Only possible if zipkin2 adds an encoding besides above, which is very unlikely.
35+
throw new UnsupportedOperationException("unsupported encoding " + delegate.encoding());
36+
}
37+
}
38+
39+
@Override
40+
public Encoding encoding() {
41+
return encoding;
42+
}
43+
44+
@Override
45+
public int sizeInBytes(Span span) {
46+
return delegate.sizeInBytes(span);
47+
}
48+
49+
@Override
50+
public byte[] encode(Span span) {
51+
return delegate.encode(span);
52+
}
53+
54+
@Override
55+
public String toString() {
56+
return delegate.toString();
57+
}
58+
}

exporters/zipkin/src/main/java/io/opentelemetry/exporter/zipkin/ZipkinSpanExporter.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919
import java.util.function.Supplier;
2020
import java.util.logging.Level;
2121
import java.util.logging.Logger;
22-
import zipkin2.Callback;
2322
import zipkin2.Span;
24-
import zipkin2.codec.BytesEncoder;
25-
import zipkin2.codec.Encoding;
23+
import zipkin2.reporter.BytesEncoder;
24+
import zipkin2.reporter.Callback;
25+
import zipkin2.reporter.Encoding;
2626
import zipkin2.reporter.Sender;
2727

2828
/**

exporters/zipkin/src/main/java/io/opentelemetry/exporter/zipkin/ZipkinSpanExporterBuilder.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@
1717
import java.util.function.Supplier;
1818
import javax.annotation.Nullable;
1919
import zipkin2.Span;
20-
import zipkin2.codec.BytesEncoder;
21-
import zipkin2.codec.SpanBytesEncoder;
20+
import zipkin2.reporter.BytesEncoder;
2221
import zipkin2.reporter.Sender;
22+
import zipkin2.reporter.SpanBytesEncoder;
2323
import zipkin2.reporter.okhttp3.OkHttpSender;
2424

2525
/** Builder class for {@link ZipkinSpanExporter}. */
@@ -49,6 +49,21 @@ public ZipkinSpanExporterBuilder setSender(Sender sender) {
4949
return this;
5050
}
5151

52+
/**
53+
* Sets the {@link zipkin2.codec.BytesEncoder}, which controls the format used by the {@link
54+
* Sender}. Defaults to the {@link zipkin2.codec.SpanBytesEncoder#JSON_V2}.
55+
*
56+
* @param encoder the {@code BytesEncoder} to use.
57+
* @return this.
58+
* @see zipkin2.codec.SpanBytesEncoder
59+
* @deprecated Use {@link #setEncoder(BytesEncoder)} instead.
60+
*/
61+
@Deprecated
62+
public ZipkinSpanExporterBuilder setEncoder(zipkin2.codec.BytesEncoder<Span> encoder) {
63+
requireNonNull(encoder, "encoder");
64+
return setEncoder(new BytesEncoderAdapter(encoder));
65+
}
66+
5267
/**
5368
* Sets the {@link BytesEncoder}, which controls the format used by the {@link Sender}. Defaults
5469
* to the {@link SpanBytesEncoder#JSON_V2}.
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.exporter.zipkin;
7+
8+
import static io.opentelemetry.exporter.zipkin.ZipkinTestUtil.PARENT_SPAN_ID;
9+
import static io.opentelemetry.exporter.zipkin.ZipkinTestUtil.SPAN_ID;
10+
import static io.opentelemetry.exporter.zipkin.ZipkinTestUtil.TRACE_ID;
11+
import static org.assertj.core.api.Assertions.assertThat;
12+
13+
import org.junit.jupiter.api.Test;
14+
import zipkin2.Endpoint;
15+
import zipkin2.Span;
16+
import zipkin2.reporter.Encoding;
17+
import zipkin2.reporter.SpanBytesEncoder;
18+
19+
class BytesEncoderAdapterTest {
20+
21+
/** Contains {@link Span#localEndpoint()} to ensure would be encoded differently. */
22+
private final Span testSpan =
23+
Span.newBuilder()
24+
.traceId(TRACE_ID)
25+
.parentId(PARENT_SPAN_ID)
26+
.id(SPAN_ID)
27+
.localEndpoint(Endpoint.newBuilder().serviceName("test").build())
28+
.build();
29+
30+
@Test
31+
void testJsonV2() {
32+
BytesEncoderAdapter adapter = new BytesEncoderAdapter(zipkin2.codec.SpanBytesEncoder.JSON_V2);
33+
assertThat(adapter.encoding()).isEqualTo(Encoding.JSON);
34+
assertThat(adapter.encode(testSpan)).isEqualTo(SpanBytesEncoder.JSON_V2.encode(testSpan));
35+
assertThat(adapter.sizeInBytes(testSpan))
36+
.isEqualTo(SpanBytesEncoder.JSON_V2.sizeInBytes(testSpan));
37+
assertThat(adapter).hasToString(SpanBytesEncoder.JSON_V2.toString());
38+
}
39+
40+
@Test
41+
void testProtobuf() {
42+
BytesEncoderAdapter adapter = new BytesEncoderAdapter(zipkin2.codec.SpanBytesEncoder.PROTO3);
43+
assertThat(adapter.encoding()).isEqualTo(Encoding.PROTO3);
44+
assertThat(adapter.encode(testSpan)).isEqualTo(SpanBytesEncoder.PROTO3.encode(testSpan));
45+
assertThat(adapter.sizeInBytes(testSpan))
46+
.isEqualTo(SpanBytesEncoder.PROTO3.sizeInBytes(testSpan));
47+
assertThat(adapter).hasToString(SpanBytesEncoder.PROTO3.toString());
48+
}
49+
50+
@Test
51+
@SuppressWarnings("deprecation") // we have to use the deprecated thrift encoding to test it
52+
void testThrift() {
53+
BytesEncoderAdapter adapter = new BytesEncoderAdapter(zipkin2.codec.SpanBytesEncoder.THRIFT);
54+
assertThat(adapter.encoding()).isEqualTo(Encoding.THRIFT);
55+
assertThat(adapter.encode(testSpan)).isEqualTo(SpanBytesEncoder.THRIFT.encode(testSpan));
56+
assertThat(adapter.sizeInBytes(testSpan))
57+
.isEqualTo(SpanBytesEncoder.THRIFT.sizeInBytes(testSpan));
58+
assertThat(adapter).hasToString(SpanBytesEncoder.THRIFT.toString());
59+
}
60+
61+
@Test
62+
void testJsonV1() {
63+
BytesEncoderAdapter adapter = new BytesEncoderAdapter(zipkin2.codec.SpanBytesEncoder.JSON_V1);
64+
assertThat(adapter.encoding()).isEqualTo(Encoding.JSON);
65+
assertThat(adapter.encode(testSpan)).isEqualTo(SpanBytesEncoder.JSON_V1.encode(testSpan));
66+
assertThat(adapter.sizeInBytes(testSpan))
67+
.isEqualTo(SpanBytesEncoder.JSON_V1.sizeInBytes(testSpan));
68+
assertThat(adapter).hasToString(SpanBytesEncoder.JSON_V1.toString());
69+
}
70+
}

exporters/zipkin/src/test/java/io/opentelemetry/exporter/zipkin/ZipkinSpanExporterEndToEndHttpTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@
4444
import org.testcontainers.junit.jupiter.Testcontainers;
4545
import zipkin2.Endpoint;
4646
import zipkin2.Span;
47-
import zipkin2.codec.Encoding;
4847
import zipkin2.codec.SpanBytesDecoder;
49-
import zipkin2.codec.SpanBytesEncoder;
48+
import zipkin2.reporter.Encoding;
49+
import zipkin2.reporter.SpanBytesEncoder;
5050
import zipkin2.reporter.okhttp3.OkHttpSender;
5151

5252
@Testcontainers(disabledWithoutDocker = true)
@@ -82,7 +82,7 @@ class ZipkinSpanExporterEndToEndHttpTest {
8282

8383
@Container
8484
public static final GenericContainer<?> zipkinContainer =
85-
new GenericContainer<>("ghcr.io/openzipkin/zipkin:2.23")
85+
new GenericContainer<>("ghcr.io/openzipkin/zipkin:2.27")
8686
.withExposedPorts(ZIPKIN_API_PORT)
8787
.waitingFor(Wait.forHttp("/health").forPort(ZIPKIN_API_PORT));
8888

exporters/zipkin/src/test/java/io/opentelemetry/exporter/zipkin/ZipkinSpanExporterTest.java

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,13 @@
2929
import org.junit.jupiter.api.extension.RegisterExtension;
3030
import org.mockito.Mock;
3131
import org.mockito.junit.jupiter.MockitoExtension;
32-
import zipkin2.Call;
33-
import zipkin2.Callback;
3432
import zipkin2.Span;
35-
import zipkin2.codec.SpanBytesEncoder;
33+
import zipkin2.reporter.BytesEncoder;
34+
import zipkin2.reporter.Call;
35+
import zipkin2.reporter.Callback;
36+
import zipkin2.reporter.Encoding;
3637
import zipkin2.reporter.Sender;
38+
import zipkin2.reporter.SpanBytesEncoder;
3739

3840
@ExtendWith(MockitoExtension.class)
3941
class ZipkinSpanExporterTest {
@@ -144,7 +146,8 @@ void testShutdown() throws IOException {
144146
}
145147

146148
@Test
147-
@SuppressWarnings("PreferJavaTimeOverload")
149+
@SuppressWarnings({"PreferJavaTimeOverload", "deprecation"})
150+
// we have to use the deprecated setEncoder overload to test it
148151
void invalidConfig() {
149152
assertThatThrownBy(() -> ZipkinSpanExporter.builder().setReadTimeout(-1, TimeUnit.MILLISECONDS))
150153
.isInstanceOf(IllegalArgumentException.class)
@@ -170,9 +173,33 @@ void invalidConfig() {
170173
.isInstanceOf(NullPointerException.class)
171174
.hasMessage("sender");
172175

173-
assertThatThrownBy(() -> ZipkinSpanExporter.builder().setEncoder(null))
176+
assertThatThrownBy(
177+
() -> ZipkinSpanExporter.builder().setEncoder((zipkin2.codec.BytesEncoder<Span>) null))
174178
.isInstanceOf(NullPointerException.class)
175179
.hasMessage("encoder");
180+
181+
assertThatThrownBy(() -> ZipkinSpanExporter.builder().setEncoder((BytesEncoder<Span>) null))
182+
.isInstanceOf(NullPointerException.class)
183+
.hasMessage("encoder");
184+
}
185+
186+
@Test
187+
void encoderProtobuf() {
188+
@SuppressWarnings("deprecation") // we have to use the deprecated setEncoderto test it
189+
ZipkinSpanExporter exporter =
190+
ZipkinSpanExporter.builder().setEncoder(zipkin2.codec.SpanBytesEncoder.PROTO3).build();
191+
try {
192+
assertThat(exporter).extracting("encoder.encoding").isEqualTo(Encoding.PROTO3);
193+
} finally {
194+
exporter.shutdown();
195+
}
196+
197+
exporter = ZipkinSpanExporter.builder().setEncoder(SpanBytesEncoder.PROTO3).build();
198+
try {
199+
assertThat(exporter).extracting("encoder").isEqualTo(SpanBytesEncoder.PROTO3);
200+
} finally {
201+
exporter.shutdown();
202+
}
176203
}
177204

178205
@Test

0 commit comments

Comments
 (0)