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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with 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; 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.Encoding;
import zipkin2.reporter.SpanBytesEncoder;
import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.BraveConfiguration; import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.BraveConfiguration;
import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.OpenTelemetryConfiguration; import org.springframework.boot.actuate.autoconfigure.tracing.zipkin.ZipkinConfigurations.OpenTelemetryConfiguration;
@ -41,7 +43,7 @@ import org.springframework.context.annotation.Import;
* @since 3.0.0 * @since 3.0.0
*/ */
@AutoConfiguration(after = RestTemplateAutoConfiguration.class) @AutoConfiguration(after = RestTemplateAutoConfiguration.class)
@ConditionalOnClass(BytesMessageSender.class) @ConditionalOnClass(Encoding.class)
@Import({ SenderConfiguration.class, BraveConfiguration.class, OpenTelemetryConfiguration.class }) @Import({ SenderConfiguration.class, BraveConfiguration.class, OpenTelemetryConfiguration.class })
@EnableConfigurationProperties(ZipkinProperties.class) @EnableConfigurationProperties(ZipkinProperties.class)
public class ZipkinAutoConfiguration { public class ZipkinAutoConfiguration {
@ -54,8 +56,17 @@ public class ZipkinAutoConfiguration {
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
public Encoding encoding(ZipkinProperties properties) { Encoding encoding(ZipkinProperties properties) {
return properties.getEncoding(); 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.Encoding;
import zipkin2.reporter.HttpEndpointSupplier; import zipkin2.reporter.HttpEndpointSupplier;
import zipkin2.reporter.HttpEndpointSuppliers; import zipkin2.reporter.HttpEndpointSuppliers;
import zipkin2.reporter.SpanBytesEncoder;
import zipkin2.reporter.brave.AsyncZipkinSpanHandler; import zipkin2.reporter.brave.AsyncZipkinSpanHandler;
import zipkin2.reporter.brave.MutableSpanBytesEncoder; import zipkin2.reporter.brave.MutableSpanBytesEncoder;
import zipkin2.reporter.urlconnection.URLConnectionSender; import zipkin2.reporter.urlconnection.URLConnectionSender;
@ -170,12 +169,6 @@ class ZipkinConfigurations {
@ConditionalOnClass(ZipkinSpanExporter.class) @ConditionalOnClass(ZipkinSpanExporter.class)
static class OpenTelemetryConfiguration { static class OpenTelemetryConfiguration {
@Bean
@ConditionalOnMissingBean(value = Span.class, parameterizedContainer = BytesEncoder.class)
BytesEncoder<Span> zipkinSpanEncoder(Encoding encoding) {
return SpanBytesEncoder.forEncoding(encoding);
}
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
@ConditionalOnBean(BytesMessageSender.class) @ConditionalOnBean(BytesMessageSender.class)

View File

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

View File

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

View File

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