Merge branch '3.4.x'

Closes gh-45038
This commit is contained in:
Phillip Webb 2025-04-08 11:27:24 -07:00
commit 4732958f5c
5 changed files with 22 additions and 32 deletions

View File

@ -20,11 +20,10 @@ import java.util.function.Supplier;
import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporter;
import io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogRecordExporterBuilder;
import io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporter;
import io.opentelemetry.exporter.otlp.logs.OtlpGrpcLogRecordExporterBuilder;
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
import okhttp3.HttpUrl;
import org.assertj.core.api.InstanceOfAssertFactories;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
@ -35,7 +34,6 @@ import org.springframework.boot.test.context.FilteredClassLoader;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.util.ReflectionTestUtils;
import static org.assertj.core.api.Assertions.assertThat;
@ -162,33 +160,29 @@ class OtlpLoggingAutoConfigurationTests {
}
@Test
@SuppressWarnings("unchecked")
void httpShouldUseMeterProviderIfSet() {
this.contextRunner.withUserConfiguration(MeterProviderConfiguration.class)
.withPropertyValues("management.otlp.logging.endpoint=http://localhost:4318/v1/logs")
.run((context) -> {
OtlpHttpLogRecordExporter otlpHttpLogRecordExporter = context.getBean(OtlpHttpLogRecordExporter.class);
OtlpHttpLogRecordExporterBuilder builder = otlpHttpLogRecordExporter.toBuilder();
Supplier<MeterProvider> meterProviderSupplier = (Supplier<MeterProvider>) ReflectionTestUtils
.getField(ReflectionTestUtils.getField(builder, "delegate"), "meterProviderSupplier");
assertThat(meterProviderSupplier).isNotNull();
assertThat(meterProviderSupplier.get()).isSameAs(MeterProviderConfiguration.meterProvider);
assertThat(otlpHttpLogRecordExporter.toBuilder())
.extracting("delegate.meterProviderSupplier", InstanceOfAssertFactories.type(Supplier.class))
.satisfies((meterProviderSupplier) -> assertThat(meterProviderSupplier.get())
.isSameAs(MeterProviderConfiguration.meterProvider));
});
}
@Test
@SuppressWarnings("unchecked")
void grpcShouldUseMeterProviderIfSet() {
this.contextRunner.withUserConfiguration(MeterProviderConfiguration.class)
.withPropertyValues("management.otlp.logging.endpoint=http://localhost:4318/v1/logs",
"management.otlp.logging.transport=grpc")
.run((context) -> {
OtlpGrpcLogRecordExporter otlpGrpcLogRecordExporter = context.getBean(OtlpGrpcLogRecordExporter.class);
OtlpGrpcLogRecordExporterBuilder builder = otlpGrpcLogRecordExporter.toBuilder();
Supplier<MeterProvider> meterProviderSupplier = (Supplier<MeterProvider>) ReflectionTestUtils
.getField(ReflectionTestUtils.getField(builder, "delegate"), "meterProviderSupplier");
assertThat(meterProviderSupplier).isNotNull();
assertThat(meterProviderSupplier.get()).isSameAs(MeterProviderConfiguration.meterProvider);
assertThat(otlpGrpcLogRecordExporter.toBuilder())
.extracting("delegate.meterProviderSupplier", InstanceOfAssertFactories.type(Supplier.class))
.satisfies((meterProviderSupplier) -> assertThat(meterProviderSupplier.get())
.isSameAs(MeterProviderConfiguration.meterProvider));
});
}

View File

@ -23,9 +23,7 @@ import java.util.function.Supplier;
import io.opentelemetry.api.metrics.MeterProvider;
import io.opentelemetry.exporter.internal.compression.GzipCompressor;
import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporter;
import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporterBuilder;
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporter;
import io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporterBuilder;
import io.opentelemetry.sdk.trace.export.SpanExporter;
import okhttp3.HttpUrl;
import org.assertj.core.api.InstanceOfAssertFactories;
@ -37,7 +35,6 @@ import org.springframework.boot.test.context.FilteredClassLoader;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.util.ReflectionTestUtils;
import static org.assertj.core.api.Assertions.assertThat;
@ -201,33 +198,29 @@ class OtlpTracingAutoConfigurationTests {
}
@Test
@SuppressWarnings("unchecked")
void httpShouldUseMeterProviderIfSet() {
this.contextRunner.withUserConfiguration(MeterProviderConfiguration.class)
.withPropertyValues("management.otlp.tracing.endpoint=http://localhost:4318/v1/traces")
.run((context) -> {
OtlpHttpSpanExporter otlpHttpSpanExporter = context.getBean(OtlpHttpSpanExporter.class);
OtlpHttpSpanExporterBuilder builder = otlpHttpSpanExporter.toBuilder();
Supplier<MeterProvider> meterProviderSupplier = (Supplier<MeterProvider>) ReflectionTestUtils
.getField(ReflectionTestUtils.getField(builder, "delegate"), "meterProviderSupplier");
assertThat(meterProviderSupplier).isNotNull();
assertThat(meterProviderSupplier.get()).isSameAs(MeterProviderConfiguration.meterProvider);
assertThat(otlpHttpSpanExporter.toBuilder())
.extracting("delegate.meterProviderSupplier", InstanceOfAssertFactories.type(Supplier.class))
.satisfies((meterProviderSupplier) -> assertThat(meterProviderSupplier.get())
.isSameAs(MeterProviderConfiguration.meterProvider));
});
}
@Test
@SuppressWarnings("unchecked")
void grpcShouldUseMeterProviderIfSet() {
this.contextRunner.withUserConfiguration(MeterProviderConfiguration.class)
.withPropertyValues("management.otlp.tracing.endpoint=http://localhost:4318/v1/traces",
"management.otlp.tracing.transport=grpc")
.run((context) -> {
OtlpGrpcSpanExporter otlpGrpcSpanExporter = context.getBean(OtlpGrpcSpanExporter.class);
OtlpGrpcSpanExporterBuilder builder = otlpGrpcSpanExporter.toBuilder();
Supplier<MeterProvider> meterProviderSupplier = (Supplier<MeterProvider>) ReflectionTestUtils
.getField(ReflectionTestUtils.getField(builder, "delegate"), "meterProviderSupplier");
assertThat(meterProviderSupplier).isNotNull();
assertThat(meterProviderSupplier.get()).isSameAs(MeterProviderConfiguration.meterProvider);
assertThat(otlpGrpcSpanExporter.toBuilder())
.extracting("delegate.meterProviderSupplier", InstanceOfAssertFactories.type(Supplier.class))
.satisfies((meterProviderSupplier) -> assertThat(meterProviderSupplier.get())
.isSameAs(MeterProviderConfiguration.meterProvider));
});
}

View File

@ -199,6 +199,8 @@ public class LdapProperties {
/**
* Define the methods to handle referrals.
*
* @since 3.5.0
*/
public enum Referral {

View File

@ -36,7 +36,7 @@ import org.springframework.core.type.AnnotatedTypeMetadata;
* @author Madhura Bhave
* @since 2.1.0
* @deprecated since 3.5.0 for removal in 4.0.0 in favor of
* {@link ConditionalOnOAuth2ClientRegistrationProperties @ConditionalOnOAuth2ClientRegistrationConfigured}
* {@link ConditionalOnOAuth2ClientRegistrationProperties @ConditionalOnOAuth2ClientRegistrationProperties}
*/
@Deprecated(since = "3.5.0", forRemoval = true)
public class ClientsConfiguredCondition extends SpringBootCondition {

View File

@ -130,7 +130,8 @@ class EmbeddedServerContainerInvocationContextProvider
return launcher;
}
catch (NoSuchMethodException ex) {
throw new IllegalStateException("Launcher class %s does not have an (Application, File) constructor");
throw new IllegalStateException(String
.format("Launcher class %s does not have an (Application, File) constructor", launcherClass.getName()));
}
}