From 49a03f8355c8a53f538414265c0ce609b1497261 Mon Sep 17 00:00:00 2001 From: Haotian Zhang <928016560@qq.com> Date: Mon, 20 Jun 2022 16:27:49 +0800 Subject: [PATCH] feat:support reading configuration from application.yml or application.properties. (#259) --- CHANGELOG.md | 15 +++--- ...=> PolarisRateLimitAutoConfiguration.java} | 2 +- ...RateLimitPropertiesAutoConfiguration.java} | 45 +++-------------- ...LimitPropertiesBootstrapConfiguration.java | 34 +++++++++++++ .../config/RateLimitConfigModifier.java | 49 +++++++++++++++++++ .../main/resources/META-INF/spring.factories | 5 +- ...olarisRateLimitAutoConfigurationTest.java} | 22 ++++----- ...LimitPropertiesAutoConfigurationTest.java} | 9 ++-- ...tPropertiesBootstrapConfigurationTest.java | 46 +++++++++++++++++ .../PolarisRateLimitPropertiesTest.java | 38 +++++++------- .../resources/application-test.properties | 4 ++ 11 files changed, 185 insertions(+), 84 deletions(-) rename spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/{PolarisRateLimitConfiguration.java => PolarisRateLimitAutoConfiguration.java} (98%) rename spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/{PolarisRateLimitBootstrapConfiguration.java => PolarisRateLimitPropertiesAutoConfiguration.java} (51%) create mode 100644 spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitPropertiesBootstrapConfiguration.java create mode 100644 spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/RateLimitConfigModifier.java rename spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/{PolarisRateLimitConfigurationTest.java => PolarisRateLimitAutoConfigurationTest.java} (80%) rename spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/{PolarisRateLimitBootstrapConfigurationTest.java => PolarisRateLimitPropertiesAutoConfigurationTest.java} (78%) create mode 100644 spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitPropertiesBootstrapConfigurationTest.java create mode 100644 spring-cloud-starter-tencent-polaris-ratelimit/src/test/resources/application-test.properties diff --git a/CHANGELOG.md b/CHANGELOG.md index f7c2c15c..8494b1e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,11 @@ # Change Log --- -[UT: Add config module unit test](https://github.com/Tencent/spring-cloud-tencent/pull/229) -[Feature: Add config change listener feature support](https://github.com/Tencent/spring-cloud-tencent/pull/220) -[Feature: Support spring cloud gateway routers](https://github.com/Tencent/spring-cloud-tencent/pull/230) -[Feature: Add instance metadata spi for registration](https://github.com/Tencent/spring-cloud-tencent/pull/244) -[Bugfix: fix guava version conflict bug & fix router strong dependency on LoadBalancerClientFilter](https://github.com/Tencent/spring-cloud-tencent/pull/236) -[Upgrade: fix third-party lib CVEs & upgrade core spring libs version](https://github.com/Tencent/spring-cloud-tencent/pull/237) + +- [UT: Add config module unit test](https://github.com/Tencent/spring-cloud-tencent/pull/229) +- [Feature: Add config change listener feature support](https://github.com/Tencent/spring-cloud-tencent/pull/220) +- [Feature: Support spring cloud gateway routers](https://github.com/Tencent/spring-cloud-tencent/pull/230) +- [Feature: Add instance metadata spi for registration](https://github.com/Tencent/spring-cloud-tencent/pull/244) +- [Bugfix: fix guava version conflict bug & fix router strong dependency on LoadBalancerClientFilter](https://github.com/Tencent/spring-cloud-tencent/pull/236) +- [Upgrade: fix third-party lib CVEs & upgrade core spring libs version](https://github.com/Tencent/spring-cloud-tencent/pull/237) +- [change escape way into encode](https://github.com/Tencent/spring-cloud-tencent/pull/251) +- [feat:support reading configuration from application.yml or application.properties.](https://github.com/Tencent/spring-cloud-tencent/pull/259) diff --git a/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitConfiguration.java b/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitAutoConfiguration.java similarity index 98% rename from spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitConfiguration.java rename to spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitAutoConfiguration.java index e0d9933b..01dd591d 100644 --- a/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitConfiguration.java +++ b/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitAutoConfiguration.java @@ -55,7 +55,7 @@ import static javax.servlet.DispatcherType.REQUEST; @ConditionalOnPolarisEnabled @AutoConfigureAfter(PolarisContextAutoConfiguration.class) @ConditionalOnProperty(name = "spring.cloud.polaris.ratelimit.enabled", matchIfMissing = true) -public class PolarisRateLimitConfiguration { +public class PolarisRateLimitAutoConfiguration { @Bean @ConditionalOnMissingBean diff --git a/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitBootstrapConfiguration.java b/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitPropertiesAutoConfiguration.java similarity index 51% rename from spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitBootstrapConfiguration.java rename to spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitPropertiesAutoConfiguration.java index 28389a46..e00d6f63 100644 --- a/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitBootstrapConfiguration.java +++ b/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitPropertiesAutoConfiguration.java @@ -17,59 +17,26 @@ package com.tencent.cloud.polaris.ratelimit.config; -import com.tencent.cloud.common.constant.ContextConstant; import com.tencent.cloud.polaris.context.ConditionalOnPolarisEnabled; -import com.tencent.cloud.polaris.context.PolarisConfigModifier; -import com.tencent.polaris.factory.config.ConfigurationImpl; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; /** - * Autoconfiguration of rate limit at bootstrap phase. + * Properties auto configuration of rate limit. * * @author Haotian Zhang */ @Configuration(proxyBeanMethods = false) @ConditionalOnPolarisEnabled -@ConditionalOnProperty(name = "spring.cloud.polaris.ratelimit.enabled", matchIfMissing = true) -public class PolarisRateLimitBootstrapConfiguration { - - @Bean - public PolarisRateLimitProperties polarisRateLimitProperties() { - return new PolarisRateLimitProperties(); - } +@Import({PolarisRateLimitProperties.class}) +public class PolarisRateLimitPropertiesAutoConfiguration { @Bean + @ConditionalOnMissingBean public RateLimitConfigModifier rateLimitConfigModifier(PolarisRateLimitProperties polarisRateLimitProperties) { return new RateLimitConfigModifier(polarisRateLimitProperties); } - - /** - * Config modifier for rate limit. - * - * @author Haotian Zhang - */ - public static class RateLimitConfigModifier implements PolarisConfigModifier { - - private PolarisRateLimitProperties polarisRateLimitProperties; - - public RateLimitConfigModifier(PolarisRateLimitProperties polarisRateLimitProperties) { - this.polarisRateLimitProperties = polarisRateLimitProperties; - } - - @Override - public void modify(ConfigurationImpl configuration) { - // Update MaxQueuingTime. - configuration.getProvider().getRateLimit() - .setMaxQueuingTime(polarisRateLimitProperties.getMaxQueuingTime()); - } - - @Override - public int getOrder() { - return ContextConstant.ModifierOrder.CIRCUIT_BREAKER_ORDER; - } - - } } diff --git a/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitPropertiesBootstrapConfiguration.java b/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitPropertiesBootstrapConfiguration.java new file mode 100644 index 00000000..bd11dbe5 --- /dev/null +++ b/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitPropertiesBootstrapConfiguration.java @@ -0,0 +1,34 @@ +/* + * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * + * Licensed under the BSD 3-Clause License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://opensource.org/licenses/BSD-3-Clause + * + * Unless required by applicable law or agreed to in writing, software distributed + * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ + +package com.tencent.cloud.polaris.ratelimit.config; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +/** + * Autoconfiguration of rate limit at bootstrap phase. + * + * @author Haotian Zhang + */ +@Configuration(proxyBeanMethods = false) +@ConditionalOnProperty("spring.cloud.polaris.enabled") +@Import(PolarisRateLimitPropertiesAutoConfiguration.class) +public class PolarisRateLimitPropertiesBootstrapConfiguration { + +} diff --git a/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/RateLimitConfigModifier.java b/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/RateLimitConfigModifier.java new file mode 100644 index 00000000..b0c097a6 --- /dev/null +++ b/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/RateLimitConfigModifier.java @@ -0,0 +1,49 @@ +/* + * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * + * Licensed under the BSD 3-Clause License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://opensource.org/licenses/BSD-3-Clause + * + * Unless required by applicable law or agreed to in writing, software distributed + * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ + +package com.tencent.cloud.polaris.ratelimit.config; + +import com.tencent.cloud.common.constant.ContextConstant; +import com.tencent.cloud.polaris.context.PolarisConfigModifier; +import com.tencent.polaris.factory.config.ConfigurationImpl; + +/** + * Config modifier for rate limit. + * + * @author Haotian Zhang + */ +public class RateLimitConfigModifier implements PolarisConfigModifier { + + private PolarisRateLimitProperties polarisRateLimitProperties; + + public RateLimitConfigModifier(PolarisRateLimitProperties polarisRateLimitProperties) { + this.polarisRateLimitProperties = polarisRateLimitProperties; + } + + @Override + public void modify(ConfigurationImpl configuration) { + // Update MaxQueuingTime. + configuration.getProvider().getRateLimit() + .setMaxQueuingTime(polarisRateLimitProperties.getMaxQueuingTime()); + } + + @Override + public int getOrder() { + return ContextConstant.ModifierOrder.CIRCUIT_BREAKER_ORDER; + } + +} diff --git a/spring-cloud-starter-tencent-polaris-ratelimit/src/main/resources/META-INF/spring.factories b/spring-cloud-starter-tencent-polaris-ratelimit/src/main/resources/META-INF/spring.factories index 4a140ac9..4abd3476 100644 --- a/spring-cloud-starter-tencent-polaris-ratelimit/src/main/resources/META-INF/spring.factories +++ b/spring-cloud-starter-tencent-polaris-ratelimit/src/main/resources/META-INF/spring.factories @@ -1,4 +1,5 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - com.tencent.cloud.polaris.ratelimit.config.PolarisRateLimitConfiguration + com.tencent.cloud.polaris.ratelimit.config.PolarisRateLimitAutoConfiguration,\ + com.tencent.cloud.polaris.ratelimit.config.PolarisRateLimitPropertiesAutoConfiguration org.springframework.cloud.bootstrap.BootstrapConfiguration=\ - com.tencent.cloud.polaris.ratelimit.config.PolarisRateLimitBootstrapConfiguration + com.tencent.cloud.polaris.ratelimit.config.PolarisRateLimitPropertiesBootstrapConfiguration diff --git a/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitConfigurationTest.java b/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitAutoConfigurationTest.java similarity index 80% rename from spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitConfigurationTest.java rename to spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitAutoConfigurationTest.java index 5a03159f..a531d81a 100644 --- a/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitConfigurationTest.java +++ b/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitAutoConfigurationTest.java @@ -33,11 +33,11 @@ import org.springframework.boot.web.servlet.FilterRegistrationBean; import static org.assertj.core.api.Assertions.assertThat; /** - * Test for {@link PolarisRateLimitConfiguration}. + * Test for {@link PolarisRateLimitAutoConfiguration}. * * @author Haotian Zhang */ -public class PolarisRateLimitConfigurationTest { +public class PolarisRateLimitAutoConfigurationTest { private ApplicationContextRunner applicationContextRunner = new ApplicationContextRunner(); @@ -51,14 +51,14 @@ public class PolarisRateLimitConfigurationTest { .withConfiguration(AutoConfigurations.of( PolarisContextAutoConfiguration.class, PolarisRateLimitProperties.class, - PolarisRateLimitConfiguration.class)) + PolarisRateLimitAutoConfiguration.class)) .run(context -> { assertThat(context).hasSingleBean(LimitAPI.class); assertThat(context).hasSingleBean(RateLimitRuleLabelResolver.class); - assertThat(context).doesNotHaveBean(PolarisRateLimitConfiguration.QuotaCheckFilterConfig.class); + assertThat(context).doesNotHaveBean(PolarisRateLimitAutoConfiguration.QuotaCheckFilterConfig.class); assertThat(context).doesNotHaveBean(QuotaCheckServletFilter.class); assertThat(context).doesNotHaveBean(FilterRegistrationBean.class); - assertThat(context).doesNotHaveBean(PolarisRateLimitConfiguration.MetadataReactiveFilterConfig.class); + assertThat(context).doesNotHaveBean(PolarisRateLimitAutoConfiguration.MetadataReactiveFilterConfig.class); assertThat(context).doesNotHaveBean(QuotaCheckReactiveFilter.class); }); } @@ -68,14 +68,14 @@ public class PolarisRateLimitConfigurationTest { this.webApplicationContextRunner .withConfiguration(AutoConfigurations.of(PolarisContextAutoConfiguration.class, PolarisRateLimitProperties.class, - PolarisRateLimitConfiguration.class)) + PolarisRateLimitAutoConfiguration.class)) .run(context -> { assertThat(context).hasSingleBean(LimitAPI.class); assertThat(context).hasSingleBean(RateLimitRuleLabelResolver.class); - assertThat(context).hasSingleBean(PolarisRateLimitConfiguration.QuotaCheckFilterConfig.class); + assertThat(context).hasSingleBean(PolarisRateLimitAutoConfiguration.QuotaCheckFilterConfig.class); assertThat(context).hasSingleBean(QuotaCheckServletFilter.class); assertThat(context).hasSingleBean(FilterRegistrationBean.class); - assertThat(context).doesNotHaveBean(PolarisRateLimitConfiguration.MetadataReactiveFilterConfig.class); + assertThat(context).doesNotHaveBean(PolarisRateLimitAutoConfiguration.MetadataReactiveFilterConfig.class); assertThat(context).doesNotHaveBean(QuotaCheckReactiveFilter.class); }); } @@ -85,14 +85,14 @@ public class PolarisRateLimitConfigurationTest { this.reactiveWebApplicationContextRunner .withConfiguration(AutoConfigurations.of(PolarisContextAutoConfiguration.class, PolarisRateLimitProperties.class, - PolarisRateLimitConfiguration.class)) + PolarisRateLimitAutoConfiguration.class)) .run(context -> { assertThat(context).hasSingleBean(LimitAPI.class); assertThat(context).hasSingleBean(RateLimitRuleLabelResolver.class); - assertThat(context).doesNotHaveBean(PolarisRateLimitConfiguration.QuotaCheckFilterConfig.class); + assertThat(context).doesNotHaveBean(PolarisRateLimitAutoConfiguration.QuotaCheckFilterConfig.class); assertThat(context).doesNotHaveBean(QuotaCheckServletFilter.class); assertThat(context).doesNotHaveBean(FilterRegistrationBean.class); - assertThat(context).hasSingleBean(PolarisRateLimitConfiguration.MetadataReactiveFilterConfig.class); + assertThat(context).hasSingleBean(PolarisRateLimitAutoConfiguration.MetadataReactiveFilterConfig.class); assertThat(context).hasSingleBean(QuotaCheckReactiveFilter.class); }); } diff --git a/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitBootstrapConfigurationTest.java b/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitPropertiesAutoConfigurationTest.java similarity index 78% rename from spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitBootstrapConfigurationTest.java rename to spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitPropertiesAutoConfigurationTest.java index 9b085a63..258dd557 100644 --- a/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitBootstrapConfigurationTest.java +++ b/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitPropertiesAutoConfigurationTest.java @@ -25,22 +25,21 @@ import org.springframework.boot.test.context.runner.ApplicationContextRunner; import static org.assertj.core.api.Assertions.assertThat; /** - * Test for {@link PolarisRateLimitBootstrapConfiguration}. + * Test for {@link PolarisRateLimitPropertiesAutoConfiguration}. * * @author Haotian Zhang */ -public class PolarisRateLimitBootstrapConfigurationTest { +public class PolarisRateLimitPropertiesAutoConfigurationTest { private ApplicationContextRunner contextRunner = new ApplicationContextRunner() .withConfiguration( - AutoConfigurations.of(PolarisRateLimitBootstrapConfiguration.class)) - .withPropertyValues("spring.cloud.polaris.ratelimit.enabled=true"); + AutoConfigurations.of(PolarisRateLimitPropertiesAutoConfiguration.class)); @Test public void testDefaultInitialization() { this.contextRunner.run(context -> { assertThat(context).hasSingleBean(PolarisRateLimitProperties.class); - assertThat(context).hasSingleBean(PolarisRateLimitBootstrapConfiguration.RateLimitConfigModifier.class); + assertThat(context).hasSingleBean(RateLimitConfigModifier.class); }); } } diff --git a/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitPropertiesBootstrapConfigurationTest.java b/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitPropertiesBootstrapConfigurationTest.java new file mode 100644 index 00000000..71e7334c --- /dev/null +++ b/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitPropertiesBootstrapConfigurationTest.java @@ -0,0 +1,46 @@ +/* + * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * + * Licensed under the BSD 3-Clause License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://opensource.org/licenses/BSD-3-Clause + * + * Unless required by applicable law or agreed to in writing, software distributed + * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ + +package com.tencent.cloud.polaris.ratelimit.config; + +import org.junit.Test; + +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Test for {@link PolarisRateLimitPropertiesBootstrapConfiguration}. + * + * @author Haotian Zhang + */ +public class PolarisRateLimitPropertiesBootstrapConfigurationTest { + + private ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withConfiguration( + AutoConfigurations.of(PolarisRateLimitPropertiesBootstrapConfiguration.class)) + .withPropertyValues("spring.cloud.polaris.enabled=true"); + + @Test + public void testDefaultInitialization() { + this.contextRunner.run(context -> { + assertThat(context).hasSingleBean(PolarisRateLimitProperties.class); + assertThat(context).hasSingleBean(RateLimitConfigModifier.class); + }); + } +} diff --git a/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitPropertiesTest.java b/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitPropertiesTest.java index 70a3333e..8279ab0e 100644 --- a/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitPropertiesTest.java +++ b/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitPropertiesTest.java @@ -18,11 +18,13 @@ package com.tencent.cloud.polaris.ratelimit.config; import org.junit.Test; +import org.junit.runner.RunWith; -import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.context.annotation.Configuration; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @@ -31,29 +33,25 @@ import static org.assertj.core.api.Assertions.assertThat; * * @author Haotian Zhang */ +@RunWith(SpringRunner.class) +@SpringBootTest(classes = PolarisRateLimitPropertiesTest.TestApplication.class) +@ActiveProfiles("test") public class PolarisRateLimitPropertiesTest { - private ApplicationContextRunner contextRunner = new ApplicationContextRunner() - .withConfiguration(AutoConfigurations.of(PolarisRateLimitPropertiesAutoConfiguration.class, PolarisRateLimitProperties.class)) - .withPropertyValues("spring.cloud.polaris.ratelimit.rejectRequestTips=xxx") - .withPropertyValues("spring.cloud.polaris.ratelimit.rejectRequestTipsFilePath=/index.html") - .withPropertyValues("spring.cloud.polaris.ratelimit.rejectHttpCode=419") - .withPropertyValues("spring.cloud.polaris.ratelimit.maxQueuingTime=500"); + @Autowired + private PolarisRateLimitProperties polarisRateLimitProperties; @Test public void testDefaultInitialization() { - this.contextRunner.run(context -> { - PolarisRateLimitProperties polarisRateLimitProperties = context.getBean(PolarisRateLimitProperties.class); - assertThat(polarisRateLimitProperties.getRejectRequestTips()).isEqualTo("xxx"); - assertThat(polarisRateLimitProperties.getRejectRequestTipsFilePath()).isEqualTo("/index.html"); - assertThat(polarisRateLimitProperties.getRejectHttpCode()).isEqualTo(419); - assertThat(polarisRateLimitProperties.getMaxQueuingTime()).isEqualTo(500L); - }); + assertThat(polarisRateLimitProperties).isNotNull(); + assertThat(polarisRateLimitProperties.getRejectRequestTips()).isEqualTo("xxx"); + assertThat(polarisRateLimitProperties.getRejectRequestTipsFilePath()).isEqualTo("/index.html"); + assertThat(polarisRateLimitProperties.getRejectHttpCode()).isEqualTo(419); + assertThat(polarisRateLimitProperties.getMaxQueuingTime()).isEqualTo(500L); } - @Configuration - @EnableAutoConfiguration - static class PolarisRateLimitPropertiesAutoConfiguration { + @SpringBootApplication + protected static class TestApplication { } } diff --git a/spring-cloud-starter-tencent-polaris-ratelimit/src/test/resources/application-test.properties b/spring-cloud-starter-tencent-polaris-ratelimit/src/test/resources/application-test.properties new file mode 100644 index 00000000..236bb29c --- /dev/null +++ b/spring-cloud-starter-tencent-polaris-ratelimit/src/test/resources/application-test.properties @@ -0,0 +1,4 @@ +spring.cloud.polaris.ratelimit.rejectRequestTips=xxx +spring.cloud.polaris.ratelimit.rejectRequestTipsFilePath=/index.html +spring.cloud.polaris.ratelimit.rejectHttpCode=419 +spring.cloud.polaris.ratelimit.maxQueuingTime=500