Polish "Migrate to Brave 6 and Zipkin Reporter 3"

See gh-39049
This commit is contained in:
Moritz Halbritter 2024-02-20 12:12:39 +01:00
parent 4b0bed23b0
commit 7555f6c71e
6 changed files with 37 additions and 16 deletions

View File

@ -1,5 +1,5 @@
/*
* Copyright 2012-2023 the original author or authors.
* Copyright 2012-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -16,8 +16,10 @@
package org.springframework.boot.actuate.autoconfigure.tracing.zipkin;
import zipkin2.reporter.BytesMessageSender;
import zipkin2.Span;
import zipkin2.reporter.BytesEncoder;
import zipkin2.reporter.Encoding;
import zipkin2.reporter.SpanBytesEncoder;
import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.BraveConfiguration;
import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.OpenTelemetryConfiguration;
@ -41,7 +43,7 @@ import org.springframework.context.annotation.Import;
* @since 3.0.0
*/
@AutoConfiguration(after = RestTemplateAutoConfiguration.class)
@ConditionalOnClass(BytesMessageSender.class)
@ConditionalOnClass(Encoding.class)
@Import({ SenderConfiguration.class, BraveConfiguration.class, OpenTelemetryConfiguration.class })
@EnableConfigurationProperties(ZipkinProperties.class)
public class ZipkinAutoConfiguration {
@ -54,8 +56,17 @@ public class ZipkinAutoConfiguration {
@Bean
@ConditionalOnMissingBean
public Encoding encoding(ZipkinProperties properties) {
return properties.getEncoding();
Encoding encoding(ZipkinProperties properties) {
return switch (properties.getEncoding()) {
case JSON -> Encoding.JSON;
case PROTO3 -> Encoding.PROTO3;
};
}
@Bean
@ConditionalOnMissingBean(value = Span.class, parameterizedContainer = BytesEncoder.class)
BytesEncoder<Span> zipkinSpanEncoder(Encoding encoding) {
return SpanBytesEncoder.forEncoding(encoding);
}
}

View File

@ -26,7 +26,6 @@ import zipkin2.reporter.BytesMessageSender;
import zipkin2.reporter.Encoding;
import zipkin2.reporter.HttpEndpointSupplier;
import zipkin2.reporter.HttpEndpointSuppliers;
import zipkin2.reporter.SpanBytesEncoder;
import zipkin2.reporter.brave.AsyncZipkinSpanHandler;
import zipkin2.reporter.brave.MutableSpanBytesEncoder;
import zipkin2.reporter.urlconnection.URLConnectionSender;
@ -170,12 +169,6 @@ class ZipkinConfigurations {
@ConditionalOnClass(ZipkinSpanExporter.class)
static class OpenTelemetryConfiguration {
@Bean
@ConditionalOnMissingBean(value = Span.class, parameterizedContainer = BytesEncoder.class)
BytesEncoder<Span> zipkinSpanEncoder(Encoding encoding) {
return SpanBytesEncoder.forEncoding(encoding);
}
@Bean
@ConditionalOnMissingBean
@ConditionalOnBean(BytesMessageSender.class)

View File

@ -18,8 +18,6 @@ package org.springframework.boot.actuate.autoconfigure.tracing.zipkin;
import java.time.Duration;
import zipkin2.reporter.Encoding;
import org.springframework.boot.context.properties.ConfigurationProperties;
/**
@ -83,4 +81,20 @@ public class ZipkinProperties {
this.readTimeout = readTimeout;
}
/**
* Zipkin message encoding.
*/
public enum Encoding {
/**
* JSON.
*/
JSON,
/**
* Protocol Buffers v3.
*/
PROTO3
}
}

View File

@ -40,7 +40,8 @@ class ZipkinAutoConfigurationTests {
@Test
void shouldSupplyBeans() {
this.contextRunner.run((context) -> assertThat(context).hasSingleBean(Encoding.class)
.hasSingleBean(PropertiesZipkinConnectionDetails.class));
.hasSingleBean(PropertiesZipkinConnectionDetails.class)
.hasBean("zipkinSpanEncoder"));
}
@Test

View File

@ -31,6 +31,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
/**
* Tests for {@link OpenTelemetryConfiguration}.
@ -48,6 +49,7 @@ class ZipkinConfigurationsOpenTelemetryConfigurationTests {
@Test
void shouldSupplyBeans() {
this.contextRunner.withUserConfiguration(SenderConfiguration.class)
.withBean(BytesEncoder.class, () -> mock(BytesEncoder.class))
.run((context) -> assertThat(context).hasSingleBean(ZipkinSpanExporter.class));
}

View File

@ -112,7 +112,7 @@ bom {
library("Zipkin Reporter", "3.3.0") {
group("io.zipkin.reporter2") {
imports = [
"zipkin-reporter-bom"
"zipkin-reporter-bom"
]
}
}