Skip to content

Commit 12cf38a

Browse files
ThomasVitaletzolov
authored andcommitted
Make MeterObservationHandler conditional on MeterRegistry bean
Signed-off-by: Thomas Vitale <ThomasVitale@users.noreply.github.com>
1 parent 8348e92 commit 12cf38a

File tree

5 files changed

+26
-12
lines changed

5 files changed

+26
-12
lines changed

models/spring-ai-openai/src/test/java/org/springframework/ai/openai/chat/OpenAiChatModelIT.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ void streamCompletenessTestWithChatResponse() throws InterruptedException {
130130
});
131131
chatResponseFlux.subscribe();
132132
assertThat(latch.await(120, TimeUnit.SECONDS)).isTrue();
133-
assertThat(answer).contains("the 1st ");
133+
assertThat(answer).contains("1st ");
134134
}
135135

136136
@Test
@@ -153,7 +153,7 @@ void ensureChatResponseAsContentDoesNotSwallowBlankSpace() throws InterruptedExc
153153
});
154154
chatResponseFlux.subscribe();
155155
assertThat(latch.await(120, TimeUnit.SECONDS)).isTrue();
156-
assertThat(answer).contains("the 1st ");
156+
assertThat(answer).contains("1st ");
157157
}
158158

159159
@Test

spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/chat/observation/ChatObservationAutoConfiguration.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.springframework.ai.chat.observation.ChatModelPromptContentObservationFilter;
2525
import org.springframework.beans.factory.ObjectProvider;
2626
import org.springframework.boot.autoconfigure.AutoConfiguration;
27+
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
2728
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2829
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2930
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -46,7 +47,7 @@ public class ChatObservationAutoConfiguration {
4647

4748
@Bean
4849
@ConditionalOnMissingBean
49-
@ConditionalOnClass(MeterRegistry.class)
50+
@ConditionalOnBean(MeterRegistry.class)
5051
ChatModelMeterObservationHandler chatModelMeterObservationHandler(ObjectProvider<MeterRegistry> meterRegistry) {
5152
return new ChatModelMeterObservationHandler(meterRegistry.getObject());
5253
}

spring-ai-spring-boot-autoconfigure/src/main/java/org/springframework/ai/autoconfigure/embedding/observation/EmbeddingObservationAutoConfiguration.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.springframework.ai.embedding.observation.EmbeddingModelMeterObservationHandler;
2121
import org.springframework.beans.factory.ObjectProvider;
2222
import org.springframework.boot.autoconfigure.AutoConfiguration;
23+
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
2324
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2425
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2526
import org.springframework.context.annotation.Bean;
@@ -37,7 +38,7 @@ public class EmbeddingObservationAutoConfiguration {
3738

3839
@Bean
3940
@ConditionalOnMissingBean
40-
@ConditionalOnClass(MeterRegistry.class)
41+
@ConditionalOnBean(MeterRegistry.class)
4142
EmbeddingModelMeterObservationHandler embeddingModelMeterObservationHandler(
4243
ObjectProvider<MeterRegistry> meterRegistry) {
4344
return new EmbeddingModelMeterObservationHandler(meterRegistry.getObject());

spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/chat/observation/ChatObservationAutoConfigurationTests.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,22 @@
3333
class ChatObservationAutoConfigurationTests {
3434

3535
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
36-
.withConfiguration(AutoConfigurations.of(ChatObservationAutoConfiguration.class))
37-
.withBean(CompositeMeterRegistry.class);
36+
.withConfiguration(AutoConfigurations.of(ChatObservationAutoConfiguration.class));
3837

3938
@Test
40-
void meterObservationHandler() {
41-
contextRunner.run(context -> {
39+
void meterObservationHandlerEnabled() {
40+
contextRunner.withBean(CompositeMeterRegistry.class).run(context -> {
4241
assertThat(context).hasSingleBean(ChatModelMeterObservationHandler.class);
4342
});
4443
}
4544

45+
@Test
46+
void meterObservationHandlerDisabled() {
47+
contextRunner.run(context -> {
48+
assertThat(context).doesNotHaveBean(ChatModelMeterObservationHandler.class);
49+
});
50+
}
51+
4652
@Test
4753
void promptFilterDefault() {
4854
contextRunner.run(context -> {

spring-ai-spring-boot-autoconfigure/src/test/java/org/springframework/ai/autoconfigure/embedding/observation/EmbeddingObservationAutoConfigurationTests.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,20 @@
3131
class EmbeddingObservationAutoConfigurationTests {
3232

3333
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
34-
.withConfiguration(AutoConfigurations.of(EmbeddingObservationAutoConfiguration.class))
35-
.withBean(CompositeMeterRegistry.class);
34+
.withConfiguration(AutoConfigurations.of(EmbeddingObservationAutoConfiguration.class));
3635

3736
@Test
38-
void meterObservationHandler() {
39-
contextRunner.run(context -> {
37+
void meterObservationHandlerEnabled() {
38+
contextRunner.withBean(CompositeMeterRegistry.class).run(context -> {
4039
assertThat(context).hasSingleBean(EmbeddingModelMeterObservationHandler.class);
4140
});
4241
}
4342

43+
@Test
44+
void meterObservationHandlerDisabled() {
45+
contextRunner.run(context -> {
46+
assertThat(context).doesNotHaveBean(EmbeddingModelMeterObservationHandler.class);
47+
});
48+
}
49+
4450
}

0 commit comments

Comments
 (0)