Skip to content

Commit a85e947

Browse files
committed
Address PR review: name-based factory condition and stronger asymmetric regression assertions
- Make root EventHubClientBuilderFactory @ConditionalOnMissingBean name-based, consistent with the dedicated factory beans, so a user-provided differently-named factory does not suppress the named one. - Strengthen the four asymmetric regression tests to assert the opposite-side DedicatedXxxConnectionConfiguration is actually activated, and assert multiple EventHubClientBuilder beans coexist in the shared-injection cases, so the tests truly exercise the failure mode the fix targets.
1 parent 3902767 commit a85e947

3 files changed

Lines changed: 19 additions & 1 deletion

File tree

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsClientBuilderConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ EventHubClientBuilder eventHubClientBuilder(@Qualifier(EVENT_HUB_CLIENT_BUILDER_
4848
}
4949

5050
@Bean(EVENT_HUB_CLIENT_BUILDER_FACTORY_BEAN_NAME)
51-
@ConditionalOnMissingBean
51+
@ConditionalOnMissingBean(name = EVENT_HUB_CLIENT_BUILDER_FACTORY_BEAN_NAME)
5252
EventHubClientBuilderFactory eventHubClientBuilderFactory(
5353
ObjectProvider<ServiceConnectionStringProvider<AzureServiceType.EventHubs>> connectionStringProviders,
5454
ObjectProvider<AzureServiceClientBuilderCustomizer<EventHubClientBuilder>> customizers) {

sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsConsumerClientConfigurationTests.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,10 @@ void producerOnlyDedicatedOverrideShouldNotActivateSharedConsumer() {
8989
assertThat(context).doesNotHaveBean(AzureEventHubsConsumerClientConfiguration.class);
9090
assertThat(context).doesNotHaveBean(EventHubConsumerClient.class);
9191
assertThat(context).doesNotHaveBean(EventHubConsumerAsyncClient.class);
92+
// The producer dedicated path must actually be activated for this test to exercise the
93+
// "asymmetric, dedicated builder bean exists" scenario the bug fix targets.
94+
assertThat(context).hasSingleBean(AzureEventHubsProducerClientConfiguration.DedicatedProducerConnectionConfiguration.class);
95+
assertThat(context).hasBean(AzureContextUtils.EVENT_HUB_PRODUCER_CLIENT_BUILDER_BEAN_NAME);
9296
}
9397
);
9498
}
@@ -110,6 +114,11 @@ void sharedConsumerInjectsRootBuilderWhenProducerHasDedicatedOverride() {
110114
context -> {
111115
assertThat(context).hasSingleBean(AzureEventHubsConsumerClientConfiguration.SharedConsumerConnectionConfiguration.class);
112116
assertThat(context).doesNotHaveBean(AzureEventHubsConsumerClientConfiguration.DedicatedConsumerConnectionConfiguration.class);
117+
// Producer dedicated must be active so multiple EventHubClientBuilder beans coexist,
118+
// proving the shared consumer is selecting the root builder by qualifier rather than
119+
// succeeding by accident because only one builder bean exists.
120+
assertThat(context).hasSingleBean(AzureEventHubsProducerClientConfiguration.DedicatedProducerConnectionConfiguration.class);
121+
assertThat(context.getBeansOfType(EventHubClientBuilder.class)).hasSizeGreaterThan(1);
113122
assertThat(context).hasBean(AzureContextUtils.EVENT_HUB_CLIENT_BUILDER_BEAN_NAME);
114123
assertThat(context).hasSingleBean(EventHubConsumerClient.class);
115124
}

sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/AzureEventHubsProducerClientConfigurationTests.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,10 @@ void consumerOnlyDedicatedOverrideShouldNotActivateSharedProducer() {
8787
assertThat(context).doesNotHaveBean(AzureEventHubsProducerClientConfiguration.class);
8888
assertThat(context).doesNotHaveBean(EventHubProducerClient.class);
8989
assertThat(context).doesNotHaveBean(EventHubProducerAsyncClient.class);
90+
// The consumer dedicated path must actually be activated for this test to exercise the
91+
// "asymmetric, dedicated builder bean exists" scenario the bug fix targets.
92+
assertThat(context).hasSingleBean(AzureEventHubsConsumerClientConfiguration.DedicatedConsumerConnectionConfiguration.class);
93+
assertThat(context).hasBean(AzureContextUtils.EVENT_HUB_CONSUMER_CLIENT_BUILDER_BEAN_NAME);
9094
}
9195
);
9296
}
@@ -108,6 +112,11 @@ void sharedProducerInjectsRootBuilderWhenConsumerHasDedicatedOverride() {
108112
context -> {
109113
assertThat(context).hasSingleBean(AzureEventHubsProducerClientConfiguration.SharedProducerConnectionConfiguration.class);
110114
assertThat(context).doesNotHaveBean(AzureEventHubsProducerClientConfiguration.DedicatedProducerConnectionConfiguration.class);
115+
// Consumer dedicated must be active so multiple EventHubClientBuilder beans coexist,
116+
// proving the shared producer is selecting the root builder by qualifier rather than
117+
// succeeding by accident because only one builder bean exists.
118+
assertThat(context).hasSingleBean(AzureEventHubsConsumerClientConfiguration.DedicatedConsumerConnectionConfiguration.class);
119+
assertThat(context.getBeansOfType(EventHubClientBuilder.class)).hasSizeGreaterThan(1);
111120
assertThat(context).hasBean(AzureContextUtils.EVENT_HUB_CLIENT_BUILDER_BEAN_NAME);
112121
assertThat(context).hasSingleBean(EventHubProducerClient.class);
113122
}

0 commit comments

Comments
 (0)