Skip to content

Commit 499a972

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

File tree

8 files changed

+159
-16
lines changed

8 files changed

+159
-16
lines changed

dependencyManagement/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ val DEPENDENCY_BOMS = listOf(
1717
"io.grpc:grpc-bom:1.60.1",
1818
"io.netty:netty-bom:4.1.104.Final",
1919
"io.zipkin.brave:brave-bom:5.17.0",
20-
"io.zipkin.reporter2:zipkin-reporter-bom:2.17.1",
20+
"io.zipkin.reporter2:zipkin-reporter-bom:3.0.2",
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: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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> encoder;
18+
19+
BytesEncoderAdapter(zipkin2.codec.BytesEncoder<Span> encoder) {
20+
this.encoder = encoder;
21+
}
22+
23+
@Override
24+
@SuppressWarnings("deprecation") // we have to use the deprecated thrift encoding to return it
25+
public Encoding encoding() {
26+
switch (encoder.encoding()) {
27+
case JSON:
28+
return Encoding.JSON;
29+
case PROTO3:
30+
return Encoding.PROTO3;
31+
case THRIFT:
32+
return Encoding.THRIFT;
33+
}
34+
throw new UnsupportedOperationException("unsupported encoding " + encoder.encoding());
35+
}
36+
37+
@Override
38+
public int sizeInBytes(Span span) {
39+
return encoder.sizeInBytes(span);
40+
}
41+
42+
@Override
43+
public byte[] encode(Span span) {
44+
return encoder.encode(span);
45+
}
46+
47+
@Override
48+
public String toString() {
49+
return encoder.toString();
50+
}
51+
}

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

Lines changed: 4 additions & 4 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
/**
@@ -39,7 +39,7 @@ public final class ZipkinSpanExporter implements SpanExporter {
3939
private final ThrottlingLogger logger = new ThrottlingLogger(baseLogger);
4040
private final AtomicBoolean isShutdown = new AtomicBoolean();
4141
private final ZipkinSpanExporterBuilder builder;
42-
private final BytesEncoder<Span> encoder;
42+
private final BytesEncoder<zipkin2.Span> encoder;
4343
private final Sender sender;
4444
private final ExporterMetrics exporterMetrics;
4545

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: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
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+
}
38+
39+
@Test
40+
void testProtobuf() {
41+
BytesEncoderAdapter adapter = new BytesEncoderAdapter(zipkin2.codec.SpanBytesEncoder.PROTO3);
42+
assertThat(adapter.encoding()).isEqualTo(Encoding.PROTO3);
43+
assertThat(adapter.encode(testSpan)).isEqualTo(SpanBytesEncoder.PROTO3.encode(testSpan));
44+
assertThat(adapter.sizeInBytes(testSpan))
45+
.isEqualTo(SpanBytesEncoder.PROTO3.sizeInBytes(testSpan));
46+
}
47+
48+
@Test
49+
@SuppressWarnings("deprecation") // we have to use the deprecated thrift encoding to test it
50+
void testThrift() {
51+
BytesEncoderAdapter adapter = new BytesEncoderAdapter(zipkin2.codec.SpanBytesEncoder.THRIFT);
52+
assertThat(adapter.encoding()).isEqualTo(Encoding.THRIFT);
53+
assertThat(adapter.encode(testSpan)).isEqualTo(SpanBytesEncoder.THRIFT.encode(testSpan));
54+
assertThat(adapter.sizeInBytes(testSpan))
55+
.isEqualTo(SpanBytesEncoder.THRIFT.sizeInBytes(testSpan));
56+
}
57+
58+
@Test
59+
void testJsonV1() {
60+
BytesEncoderAdapter adapter = new BytesEncoderAdapter(zipkin2.codec.SpanBytesEncoder.JSON_V1);
61+
assertThat(adapter.encoding()).isEqualTo(Encoding.JSON);
62+
assertThat(adapter.encode(testSpan)).isEqualTo(SpanBytesEncoder.JSON_V1.encode(testSpan));
63+
assertThat(adapter.sizeInBytes(testSpan))
64+
.isEqualTo(SpanBytesEncoder.JSON_V1.sizeInBytes(testSpan));
65+
}
66+
}

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: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,12 @@
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;
3636
import zipkin2.reporter.Sender;
37+
import zipkin2.reporter.SpanBytesEncoder;
3738

3839
@ExtendWith(MockitoExtension.class)
3940
class ZipkinSpanExporterTest {
@@ -144,7 +145,8 @@ void testShutdown() throws IOException {
144145
}
145146

146147
@Test
147-
@SuppressWarnings("PreferJavaTimeOverload")
148+
@SuppressWarnings({"PreferJavaTimeOverload", "deprecation"})
149+
// we have to use the deprecated setEncoder overload to test it
148150
void invalidConfig() {
149151
assertThatThrownBy(() -> ZipkinSpanExporter.builder().setReadTimeout(-1, TimeUnit.MILLISECONDS))
150152
.isInstanceOf(IllegalArgumentException.class)
@@ -170,7 +172,12 @@ void invalidConfig() {
170172
.isInstanceOf(NullPointerException.class)
171173
.hasMessage("sender");
172174

173-
assertThatThrownBy(() -> ZipkinSpanExporter.builder().setEncoder(null))
175+
assertThatThrownBy(
176+
() -> ZipkinSpanExporter.builder().setEncoder((zipkin2.codec.BytesEncoder<Span>) null))
177+
.isInstanceOf(NullPointerException.class)
178+
.hasMessage("encoder");
179+
180+
assertThatThrownBy(() -> ZipkinSpanExporter.builder().setEncoder((BytesEncoder<Span>) null))
174181
.isInstanceOf(NullPointerException.class)
175182
.hasMessage("encoder");
176183
}

0 commit comments

Comments
 (0)