diff --git a/spring-cloud-alicloud-context/pom.xml b/spring-cloud-alicloud-context/pom.xml index 1d488b46..cc3628a5 100644 --- a/spring-cloud-alicloud-context/pom.xml +++ b/spring-cloud-alicloud-context/pom.xml @@ -107,6 +107,20 @@ test + + org.powermock + powermock-module-junit4 + 2.0.0 + test + + + + org.powermock + powermock-api-mockito2 + 2.0.0 + test + + diff --git a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/nacos/NacosParameterInitListener.java b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/nacos/NacosParameterInitListener.java index 496dd5a5..91e9dd20 100644 --- a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/nacos/NacosParameterInitListener.java +++ b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/nacos/NacosParameterInitListener.java @@ -8,6 +8,9 @@ import org.springframework.cloud.alicloud.context.listener.AbstractOnceApplicati import com.alibaba.cloud.context.edas.EdasChangeOrderConfiguration; import com.alibaba.cloud.context.edas.EdasChangeOrderConfigurationFactory; +/** + * @author pbting + */ public class NacosParameterInitListener extends AbstractOnceApplicationListener { private static final Logger log = LoggerFactory @@ -33,7 +36,8 @@ public class NacosParameterInitListener log.info("Initialize Nacos Parameter from edas change order,is edas managed {}.", edasChangeOrderConfiguration.isEdasManaged()); - + System.getProperties().setProperty("spring.cloud.nacos.config.server-mode", + "EDAS"); // initialize nacos configuration System.getProperties().setProperty("spring.cloud.nacos.config.server-addr", ""); System.getProperties().setProperty("spring.cloud.nacos.config.endpoint", diff --git a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/oss/OssContextAutoConfiguration.java b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/oss/OssContextAutoConfiguration.java index e1993a37..67ebfb2c 100644 --- a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/oss/OssContextAutoConfiguration.java +++ b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/oss/OssContextAutoConfiguration.java @@ -19,6 +19,7 @@ package org.springframework.cloud.alicloud.context.oss; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.alicloud.context.AliCloudContextAutoConfiguration; import org.springframework.cloud.alicloud.context.AliCloudProperties; @@ -39,6 +40,7 @@ import com.aliyun.oss.OSSClientBuilder; */ @Configuration @ConditionalOnClass(name = "org.springframework.cloud.alicloud.oss.OssAutoConfiguration") +@ConditionalOnProperty(name = "spring.cloud.alicloud.oss.enabled", matchIfMissing = true) @EnableConfigurationProperties(OssProperties.class) @ImportAutoConfiguration(AliCloudContextAutoConfiguration.class) public class OssContextAutoConfiguration { diff --git a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/scx/ScxContextAutoConfiguration.java b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/scx/ScxContextAutoConfiguration.java index a2b738fd..2953858c 100644 --- a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/scx/ScxContextAutoConfiguration.java +++ b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/scx/ScxContextAutoConfiguration.java @@ -19,6 +19,7 @@ package org.springframework.cloud.alicloud.context.scx; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.alicloud.context.AliCloudProperties; import org.springframework.cloud.alicloud.context.edas.EdasContextAutoConfiguration; @@ -35,6 +36,7 @@ import com.alibaba.edas.schedulerx.SchedulerXClient; */ @Configuration @ConditionalOnClass(name = "org.springframework.cloud.alicloud.scx.ScxAutoConfiguration") +@ConditionalOnProperty(name = "spring.cloud.alicloud.scx.enabled", matchIfMissing = true) @EnableConfigurationProperties(ScxProperties.class) @ImportAutoConfiguration(EdasContextAutoConfiguration.class) public class ScxContextAutoConfiguration { @@ -42,10 +44,10 @@ public class ScxContextAutoConfiguration { @Bean(initMethod = "init") @ConditionalOnMissingBean public SchedulerXClient schedulerXClient(AliCloudProperties aliCloudProperties, - EdasProperties edasProperties, ScxProperties scxProperties, - AliCloudEdasSdk aliCloudEdasSdk) { + EdasProperties edasProperties, ScxProperties scxProperties, + AliCloudEdasSdk aliCloudEdasSdk) { return AliCloudScxInitializer.initialize(aliCloudProperties, edasProperties, - scxProperties, aliCloudEdasSdk); + scxProperties, aliCloudEdasSdk); } } diff --git a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/sms/SmsConfigProperties.java b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/sms/SmsConfigProperties.java deleted file mode 100644 index d6489a25..00000000 --- a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/sms/SmsConfigProperties.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Copyright (C) 2019 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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 org.springframework.cloud.alicloud.context.sms; - -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.cloud.alicloud.context.AliCloudProperties; -import org.springframework.core.env.Environment; -import org.springframework.util.StringUtils; - -import java.io.Serializable; - -/** - * @author pbting - */ -@ConfigurationProperties(prefix = "spring.cloud.alicloud.sms") -public class SmsConfigProperties implements Serializable { - - // 产品名称:云通信短信API产品,开发者无需替换 - public static final String smsProduct = "Dysmsapi"; - // 产品域名,开发者无需替换 - public static final String smsDomain = "dysmsapi.aliyuncs.com"; - - private AliCloudProperties aliCloudProperties; - - /** - * - */ - private String reportQueueName; - /** - * - */ - private String upQueueName; - - /** - * - */ - protected String connnectTimeout = "10000"; - - /** - * - */ - protected String readTimeout = "10000"; - - public SmsConfigProperties(AliCloudProperties aliCloudProperties) { - this.aliCloudProperties = aliCloudProperties; - } - - public String getConnnectTimeout() { - return connnectTimeout; - } - - public void setConnnectTimeout(String connnectTimeout) { - this.connnectTimeout = connnectTimeout; - } - - public String getReadTimeout() { - return readTimeout; - } - - public void setReadTimeout(String readTimeout) { - this.readTimeout = readTimeout; - } - - public void overiideFromEnv(Environment environment) { - overiideCustomFromEnv(environment); - if (StringUtils.isEmpty(connnectTimeout)) { - String resolveResult = environment.resolveRequiredPlaceholders( - "${spring.cloud.alibaba.sms.connect-timeout:}"); - this.setConnnectTimeout( - StringUtils.isEmpty(resolveResult) ? "10000" : resolveResult); - } - - if (StringUtils.isEmpty(readTimeout)) { - String resolveResult = environment.resolveRequiredPlaceholders( - "${spring.cloud.alibaba.sms.read-timeout:}"); - this.setReadTimeout( - StringUtils.isEmpty(resolveResult) ? "10000" : resolveResult); - } - } - - public void overiideCustomFromEnv(Environment environment) { - // nothing to do - } - - public String getReportQueueName() { - return reportQueueName; - } - - public void setReportQueueName(String reportQueueName) { - this.reportQueueName = reportQueueName; - } - - public String getUpQueueName() { - return upQueueName; - } - - public String getAccessKeyId() { - return aliCloudProperties.getAccessKey(); - } - - public String getAccessKeySecret() { - return aliCloudProperties.getSecretKey(); - } - - public void setUpQueueName(String upQueueName) { - this.upQueueName = upQueueName; - } - -} \ No newline at end of file diff --git a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/sms/SmsContextAutoConfiguration.java b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/sms/SmsContextAutoConfiguration.java index 82c304a8..6274b6a4 100644 --- a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/sms/SmsContextAutoConfiguration.java +++ b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/sms/SmsContextAutoConfiguration.java @@ -18,28 +18,16 @@ package org.springframework.cloud.alicloud.context.sms; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.cloud.alicloud.context.AliCloudProperties; -import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.core.env.Environment; +/** + * @author pbting + * @author xiaolongzuo + */ @Configuration -@EnableConfigurationProperties +@EnableConfigurationProperties(SmsProperties.class) @ConditionalOnClass(name = "com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest") @ConditionalOnProperty(value = "spring.cloud.alibaba.deshao.enable.sms", matchIfMissing = true) public class SmsContextAutoConfiguration { - @Bean - public SmsConfigProperties smsConfigProperties( - AliCloudProperties aliCloudProperties) { - - return new SmsConfigProperties(aliCloudProperties); - } - - @Bean - public SmsConfigRegistration smsConfigRegistration(Environment environment, - SmsConfigProperties smsConfigProperties) { - - return new SmsConfigRegistration(environment, smsConfigProperties); - } } \ No newline at end of file diff --git a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/sms/SmsProperties.java b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/sms/SmsProperties.java new file mode 100644 index 00000000..33577863 --- /dev/null +++ b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/sms/SmsProperties.java @@ -0,0 +1,74 @@ +package org.springframework.cloud.alicloud.context.sms; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * @author pbting + * @author xiaolongzuo + */ +@ConfigurationProperties(prefix = "spring.cloud.alicloud.sms") +public class SmsProperties { + + /** + * Product name. + */ + public static final String smsProduct = "Dysmsapi"; + + /** + * Product domain. + */ + public static final String smsDomain = "dysmsapi.aliyuncs.com"; + + /** + * Report queue name. + */ + private String reportQueueName; + + /** + * Up queue name. + */ + private String upQueueName; + + /** + * Connect timeout. + */ + private String connectTimeout = "10000"; + + /** + * Read timeout. + */ + private String readTimeout = "10000"; + + public String getConnectTimeout() { + return connectTimeout; + } + + public void setConnectTimeout(String connectTimeout) { + this.connectTimeout = connectTimeout; + } + + public String getReadTimeout() { + return readTimeout; + } + + public void setReadTimeout(String readTimeout) { + this.readTimeout = readTimeout; + } + + public String getReportQueueName() { + return reportQueueName; + } + + public void setReportQueueName(String reportQueueName) { + this.reportQueueName = reportQueueName; + } + + public String getUpQueueName() { + return upQueueName; + } + + public void setUpQueueName(String upQueueName) { + this.upQueueName = upQueueName; + } + +} \ No newline at end of file diff --git a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/statistics/StatisticsTaskStarter.java b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/statistics/StatisticsTaskStarter.java index 41c3591b..709315d8 100644 --- a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/statistics/StatisticsTaskStarter.java +++ b/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/statistics/StatisticsTaskStarter.java @@ -46,6 +46,10 @@ import com.alibaba.cloud.context.statistics.StatisticsTask; AcmContextBootstrapConfiguration.class }) public class StatisticsTaskStarter implements InitializingBean { + private static final String NACOS_CONFIG_SERVER_MODE_KEY = "spring.cloud.nacos.config.server-mode"; + + private static final String NACOS_CONFIG_SERVER_MODE_VALUE = "EDAS"; + @Autowired(required = false) private AliCloudEdasSdk aliCloudEdasSdk; @@ -102,6 +106,10 @@ public class StatisticsTaskStarter implements InitializingBean { if (acmContextBootstrapConfiguration != null && acmEnableEdas) { components.add("SC-ACM"); } + if (NACOS_CONFIG_SERVER_MODE_VALUE + .equals(System.getProperty(NACOS_CONFIG_SERVER_MODE_KEY))) { + components.add("SC-NACOS-CONFIG"); + } return components; } diff --git a/spring-cloud-alicloud-context/src/test/java/com/alibaba/csp/sentinel/datasource/nacos/NacosDataSource.java b/spring-cloud-alicloud-context/src/test/java/com/alibaba/csp/sentinel/datasource/nacos/NacosDataSource.java new file mode 100644 index 00000000..7159a2f4 --- /dev/null +++ b/spring-cloud-alicloud-context/src/test/java/com/alibaba/csp/sentinel/datasource/nacos/NacosDataSource.java @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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.alibaba.csp.sentinel.datasource.nacos; + +/** + * @author xiaolongzuo + */ +public class NacosDataSource { +} diff --git a/spring-cloud-alicloud-context/src/test/java/com/aliyuncs/dysmsapi/model/v20170525/SendSmsRequest.java b/spring-cloud-alicloud-context/src/test/java/com/aliyuncs/dysmsapi/model/v20170525/SendSmsRequest.java new file mode 100644 index 00000000..ef660e84 --- /dev/null +++ b/spring-cloud-alicloud-context/src/test/java/com/aliyuncs/dysmsapi/model/v20170525/SendSmsRequest.java @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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.aliyuncs.dysmsapi.model.v20170525; + +/** + * @author xiaolongzuo + */ +public class SendSmsRequest { +} diff --git a/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alibaba/nacos/NacosConfigAutoConfiguration.java b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alibaba/nacos/NacosConfigAutoConfiguration.java new file mode 100644 index 00000000..3ae897f4 --- /dev/null +++ b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alibaba/nacos/NacosConfigAutoConfiguration.java @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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 org.springframework.cloud.alibaba.nacos; + +/** + * @author xiaolongzuo + */ +public class NacosConfigAutoConfiguration { +} diff --git a/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/AliCloudSpringApplicationTests.java b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/BaseAliCloudSpringApplication.java similarity index 62% rename from spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/AliCloudSpringApplicationTests.java rename to spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/BaseAliCloudSpringApplication.java index 471ffbb9..6cc999ff 100644 --- a/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/AliCloudSpringApplicationTests.java +++ b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/BaseAliCloudSpringApplication.java @@ -16,36 +16,35 @@ package org.springframework.cloud.alicloud.context; -import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; - -import org.junit.Test; import org.junit.runner.RunWith; +import org.powermock.core.classloader.annotations.PowerMockIgnore; +import org.powermock.modules.junit4.PowerMockRunner; +import org.powermock.modules.junit4.PowerMockRunnerDelegate; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.junit4.SpringRunner; /** * @author xiaolongzuo */ -@RunWith(SpringRunner.class) -@SpringBootTest(classes = AliCloudSpringApplicationTests.AliCloudDisabledApp.class, properties = { +@RunWith(PowerMockRunner.class) +@PowerMockRunnerDelegate(SpringRunner.class) +@PowerMockIgnore("javax.management.*") +@SpringBootTest(classes = BaseAliCloudSpringApplication.AliCloudApplication.class, properties = { "spring.application.name=myapp", "spring.cloud.alicloud.edas.application.name=myapp", "spring.cloud.alicloud.access-key=ak", "spring.cloud.alicloud.secret-key=sk", "spring.cloud.alicloud.oss.endpoint=test", "spring.cloud.alicloud.scx.group-id=1-2-3-4", - "spring.cloud.alicloud.edas.namespace=cn-test" }, webEnvironment = RANDOM_PORT) -@DirtiesContext -public class AliCloudSpringApplicationTests { - - @Test - public void contextLoads() { - System.out.println("Context load..."); - } + "spring.cloud.alicloud.edas.namespace=cn-test", + "spring.cloud.alicloud.ans.server-list=192.168.1.100", + "spring.cloud.alicloud.ans.server-port=8888", + "spring.cloud.alicloud.oss.enabled=false", + "spring.cloud.alicloud.scx.enabled=false" }) +public abstract class BaseAliCloudSpringApplication { @SpringBootApplication - public static class AliCloudDisabledApp { + public static class AliCloudApplication { } diff --git a/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/ans/AnsContextApplicationListenerTests.java b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/ans/AnsContextApplicationListenerTests.java new file mode 100644 index 00000000..153e234d --- /dev/null +++ b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/ans/AnsContextApplicationListenerTests.java @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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 org.springframework.cloud.alicloud.context.ans; + +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; + +import org.junit.Test; +import org.springframework.cloud.alicloud.context.BaseAliCloudSpringApplication; + +/** + * @author xiaolongzuo + */ +public class AnsContextApplicationListenerTests extends BaseAliCloudSpringApplication { + + @Test + public void testAnsContextApplicationListenerDefault() { + assertThat(System + .getProperty("com.alibaba.ans.shaded.com.taobao.vipserver.serverlist")) + .isEqualTo("192.168.1.100"); + assertThat(System.getProperty("vipserver.server.port")).isEqualTo("8888"); + } + +} diff --git a/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/nacos/NacosParameterInitListenerTests.java b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/nacos/NacosParameterInitListenerTests.java new file mode 100644 index 00000000..fe0451fd --- /dev/null +++ b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/nacos/NacosParameterInitListenerTests.java @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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 org.springframework.cloud.alicloud.context.nacos; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +import org.junit.BeforeClass; +import org.junit.Test; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.springframework.cloud.alicloud.context.BaseAliCloudSpringApplication; +import org.springframework.cloud.alicloud.utils.ChangeOrderUtils; + +import com.alibaba.cloud.context.ans.AliCloudAnsInitializer; +import com.alibaba.cloud.context.edas.EdasChangeOrderConfigurationFactory; + +/** + * @author xiaolongzuo + */ +@PrepareForTest({ EdasChangeOrderConfigurationFactory.class, + NacosParameterInitListener.class, AliCloudAnsInitializer.class }) +public class NacosParameterInitListenerTests extends BaseAliCloudSpringApplication { + + @BeforeClass + public static void setUp() { + ChangeOrderUtils.mockChangeOrder(); + } + + @Test + public void testNacosParameterInitListener() { + assertThat(System.getProperty("spring.cloud.nacos.config.server-mode")) + .isEqualTo("EDAS"); + assertThat(System.getProperty("spring.cloud.nacos.config.server-addr")) + .isEqualTo(""); + assertThat(System.getProperty("spring.cloud.nacos.config.endpoint")) + .isEqualTo("testDomain"); + assertThat(System.getProperty("spring.cloud.nacos.config.namespace")) + .isEqualTo("testTenantId"); + assertThat(System.getProperty("spring.cloud.nacos.config.access-key")) + .isEqualTo("testAK"); + assertThat(System.getProperty("spring.cloud.nacos.config.secret-key")) + .isEqualTo("testSK"); + + } +} diff --git a/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/sentinel/SentinelAliCloudListenerTests.java b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/sentinel/SentinelAliCloudListenerTests.java new file mode 100644 index 00000000..6a812daf --- /dev/null +++ b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/sentinel/SentinelAliCloudListenerTests.java @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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 org.springframework.cloud.alicloud.context.sentinel; + +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; + +import org.junit.BeforeClass; +import org.junit.Test; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.springframework.cloud.alicloud.context.BaseAliCloudSpringApplication; +import org.springframework.cloud.alicloud.context.Constants; +import org.springframework.cloud.alicloud.utils.ChangeOrderUtils; + +import com.alibaba.cloud.context.edas.EdasChangeOrderConfigurationFactory; + +/** + * @author xiaolongzuo + */ +@PrepareForTest({ EdasChangeOrderConfigurationFactory.class, + SentinelAliCloudListener.class }) +public class SentinelAliCloudListenerTests extends BaseAliCloudSpringApplication { + + @BeforeClass + public static void setUp() { + ChangeOrderUtils.mockChangeOrder(); + } + + @Test + public void testNacosParameterInitListener() { + assertThat(System.getProperty(Constants.Sentinel.NACOS_DATASOURCE_ENDPOINT)) + .isEqualTo("testDomain"); + assertThat(System.getProperty(Constants.Sentinel.PROJECT_NAME)) + .isEqualTo("testProjectName"); + assertThat(System.getProperty(Constants.Sentinel.NACOS_DATASOURCE_NAMESPACE)) + .isEqualTo("testTenantId"); + assertThat(System.getProperty(Constants.Sentinel.NACOS_DATASOURCE_AK)) + .isEqualTo("testAK"); + assertThat(System.getProperty(Constants.Sentinel.NACOS_DATASOURCE_SK)) + .isEqualTo("testSK"); + + } +} diff --git a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/sms/SmsConfigRegistration.java b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/sms/SmsPropertiesDefaultTests.java similarity index 51% rename from spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/sms/SmsConfigRegistration.java rename to spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/sms/SmsPropertiesDefaultTests.java index af59b8ff..f339c8a4 100644 --- a/spring-cloud-alicloud-context/src/main/java/org/springframework/cloud/alicloud/context/sms/SmsConfigRegistration.java +++ b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/sms/SmsPropertiesDefaultTests.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019 the original author or authors. + * Copyright (C) 2018 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,29 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.springframework.cloud.alicloud.context.sms; -import org.springframework.core.env.Environment; - -import javax.annotation.PostConstruct; - /** - * @author pbting + * @author xiaolongzuo */ -public class SmsConfigRegistration { - - private Environment environment; - - private SmsConfigProperties smsConfigProperties; - - public SmsConfigRegistration(Environment environment, - SmsConfigProperties smsConfigProperties) { - this.environment = environment; - this.smsConfigProperties = smsConfigProperties; - } - - @PostConstruct - public void initSmsConfigRegistration() { - smsConfigProperties.overiideFromEnv(environment); - } -} \ No newline at end of file +public class SmsPropertiesDefaultTests { +} diff --git a/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/sms/SmsPropertiesLoadTests.java b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/sms/SmsPropertiesLoadTests.java new file mode 100644 index 00000000..1833654c --- /dev/null +++ b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/context/sms/SmsPropertiesLoadTests.java @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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 org.springframework.cloud.alicloud.context.sms; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.cloud.alicloud.context.AliCloudContextAutoConfiguration; +import org.springframework.cloud.alicloud.context.ans.AnsContextAutoConfiguration; +import org.springframework.cloud.alicloud.context.edas.EdasContextAutoConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +/** + * @author xiaolongzuo + */ +@RunWith(SpringRunner.class) +@SpringBootTest(classes = { AliCloudContextAutoConfiguration.class, + EdasContextAutoConfiguration.class, AnsContextAutoConfiguration.class, + SmsContextAutoConfiguration.class }) +public class SmsPropertiesLoadTests { + + @Autowired + private SmsProperties smsProperties; + + @Test + public void test() { + assertThat(smsProperties.getReportQueueName()).isNull(); + assertThat(smsProperties.getUpQueueName()).isNull(); + assertThat(smsProperties.getConnectTimeout()).isEqualTo("10000"); + assertThat(smsProperties.getReadTimeout()).isEqualTo("10000"); + } +} diff --git a/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/utils/ChangeOrderUtils.java b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/utils/ChangeOrderUtils.java new file mode 100644 index 00000000..adfd750f --- /dev/null +++ b/spring-cloud-alicloud-context/src/test/java/org/springframework/cloud/alicloud/utils/ChangeOrderUtils.java @@ -0,0 +1,54 @@ +/* + * Copyright (C) 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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 org.springframework.cloud.alicloud.utils; + +import org.powermock.api.mockito.PowerMockito; + +import com.alibaba.cloud.context.edas.EdasChangeOrderConfiguration; +import com.alibaba.cloud.context.edas.EdasChangeOrderConfigurationFactory; + +/** + * @author xiaolongzuo + */ +public class ChangeOrderUtils { + + private ChangeOrderUtils() { + } + + public static void mockChangeOrder() { + EdasChangeOrderConfiguration edasChangeOrderConfiguration = PowerMockito + .mock(EdasChangeOrderConfiguration.class); + PowerMockito.when(edasChangeOrderConfiguration.isEdasManaged()).thenReturn(true); + PowerMockito.when(edasChangeOrderConfiguration.getAddressServerDomain()) + .thenReturn("testDomain"); + PowerMockito.when(edasChangeOrderConfiguration.getTenantId()) + .thenReturn("testTenantId"); + PowerMockito.when(edasChangeOrderConfiguration.getDauthAccessKey()) + .thenReturn("testAK"); + PowerMockito.when(edasChangeOrderConfiguration.getDauthSecretKey()) + .thenReturn("testSK"); + PowerMockito.when(edasChangeOrderConfiguration.getProjectName()) + .thenReturn("testProjectName"); + PowerMockito.when(edasChangeOrderConfiguration.getAddressServerPort()) + .thenReturn("8080"); + PowerMockito.mockStatic(EdasChangeOrderConfigurationFactory.class); + PowerMockito + .when(EdasChangeOrderConfigurationFactory + .getEdasChangeOrderConfiguration()) + .thenReturn(edasChangeOrderConfiguration); + } +} diff --git a/spring-cloud-alicloud-sms/src/main/java/org/springframework/cloud/alicloud/sms/AbstractSmsService.java b/spring-cloud-alicloud-sms/src/main/java/org/springframework/cloud/alicloud/sms/AbstractSmsService.java index 8010e9fc..dc2963ef 100644 --- a/spring-cloud-alicloud-sms/src/main/java/org/springframework/cloud/alicloud/sms/AbstractSmsService.java +++ b/spring-cloud-alicloud-sms/src/main/java/org/springframework/cloud/alicloud/sms/AbstractSmsService.java @@ -15,12 +15,12 @@ */ package org.springframework.cloud.alicloud.sms; +import java.util.concurrent.ConcurrentHashMap; + import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.profile.DefaultProfile; -import java.util.concurrent.ConcurrentHashMap; - /** * * @author pbting @@ -30,11 +30,12 @@ public abstract class AbstractSmsService implements ISmsService { private ConcurrentHashMap acsClientConcurrentHashMap = new ConcurrentHashMap<>(); /** - * + * * @param accessKeyId * @param accessKeySecret * @return */ + @Override public IAcsClient getHangZhouRegionClientProfile(String accessKeyId, String accessKeySecret) { diff --git a/spring-cloud-alicloud-sms/src/main/java/org/springframework/cloud/alicloud/sms/SmsServiceImpl.java b/spring-cloud-alicloud-sms/src/main/java/org/springframework/cloud/alicloud/sms/SmsServiceImpl.java index d32c8c64..3b83cfb6 100644 --- a/spring-cloud-alicloud-sms/src/main/java/org/springframework/cloud/alicloud/sms/SmsServiceImpl.java +++ b/spring-cloud-alicloud-sms/src/main/java/org/springframework/cloud/alicloud/sms/SmsServiceImpl.java @@ -15,17 +15,19 @@ */ package org.springframework.cloud.alicloud.sms; -import com.aliyuncs.dysmsapi.model.v20170525.*; -import com.aliyuncs.exceptions.ClientException; -import com.aliyuncs.exceptions.ServerException; +import java.text.ParseException; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.springframework.cloud.alicloud.context.sms.SmsConfigProperties; +import org.springframework.cloud.alicloud.context.AliCloudProperties; +import org.springframework.cloud.alicloud.context.sms.SmsProperties; import org.springframework.cloud.alicloud.sms.base.DefaultAlicomMessagePuller; import org.springframework.cloud.alicloud.sms.endpoint.EndpointManager; import org.springframework.cloud.alicloud.sms.endpoint.ReceiveMessageEntity; -import java.text.ParseException; +import com.aliyuncs.dysmsapi.model.v20170525.*; +import com.aliyuncs.exceptions.ClientException; +import com.aliyuncs.exceptions.ServerException; /** * @author pbting @@ -38,17 +40,22 @@ public final class SmsServiceImpl extends AbstractSmsService { * @param sendSmsRequest * @return */ - private SmsConfigProperties smsConfigProperties; + private SmsProperties smsProperties; - public SmsServiceImpl(SmsConfigProperties smsConfigProperties) { - this.smsConfigProperties = smsConfigProperties; + private AliCloudProperties aliCloudProperties; + + public SmsServiceImpl(AliCloudProperties aliCloudProperties, + SmsProperties smsProperties) { + this.aliCloudProperties = aliCloudProperties; + this.smsProperties = smsProperties; } + @Override public SendSmsResponse sendSmsRequest(SendSmsRequest sendSmsRequest) throws ClientException { - return sendSmsRequest(sendSmsRequest, smsConfigProperties.getAccessKeyId(), - smsConfigProperties.getAccessKeySecret()); + return sendSmsRequest(sendSmsRequest, aliCloudProperties.getAccessKey(), + aliCloudProperties.getSecretKey()); } /** @@ -62,6 +69,7 @@ public final class SmsServiceImpl extends AbstractSmsService { * @throws ClientException * @return SendSmsResponse */ + @Override public SendSmsResponse sendSmsRequest(SendSmsRequest sendSmsRequest, String accessKeyId, String accessKeySecret) throws ServerException, ClientException { @@ -76,10 +84,12 @@ public final class SmsServiceImpl extends AbstractSmsService { * @param smsReportMessageListener * @return boolean */ + @Override public boolean startSmsReportMessageListener( SmsReportMessageListener smsReportMessageListener) { - String messageType = "SmsReport";// 短信回执:SmsReport,短信上行:SmsUp - String queueName = smsConfigProperties.getReportQueueName(); + // 短信回执:SmsReport,短信上行:SmsUp + String messageType = "SmsReport"; + String queueName = smsProperties.getReportQueueName(); return startReceiveMsg(messageType, queueName, smsReportMessageListener); } @@ -88,9 +98,11 @@ public final class SmsServiceImpl extends AbstractSmsService { * @param smsUpMessageListener * @return boolean */ + @Override public boolean startSmsUpMessageListener(SmsUpMessageListener smsUpMessageListener) { - String messageType = "SmsUp";// 短信回执:SmsReport,短信上行:SmsUp - String queueName = smsConfigProperties.getUpQueueName(); + // 短信回执:SmsReport,短信上行:SmsUp + String messageType = "SmsUp"; + String queueName = smsProperties.getUpQueueName(); return startReceiveMsg(messageType, queueName, smsUpMessageListener); } @@ -103,8 +115,8 @@ public final class SmsServiceImpl extends AbstractSmsService { */ private boolean startReceiveMsg(String messageType, String queueName, SmsMessageListener messageListener) { - String accessKeyId = smsConfigProperties.getAccessKeyId(); - String accessKeySecret = smsConfigProperties.getAccessKeySecret(); + String accessKeyId = aliCloudProperties.getAccessKey(); + String accessKeySecret = aliCloudProperties.getSecretKey(); boolean result = true; try { new DefaultAlicomMessagePuller().startReceiveMsg(accessKeyId, accessKeySecret, @@ -135,9 +147,8 @@ public final class SmsServiceImpl extends AbstractSmsService { SendBatchSmsRequest sendBatchSmsRequest) throws ServerException, ClientException { - return sendSmsBatchRequest(sendBatchSmsRequest, - smsConfigProperties.getAccessKeyId(), - smsConfigProperties.getAccessKeySecret()); + return sendSmsBatchRequest(sendBatchSmsRequest, aliCloudProperties.getAccessKey(), + aliCloudProperties.getSecretKey()); } /** @@ -181,7 +192,7 @@ public final class SmsServiceImpl extends AbstractSmsService { @Override public QuerySendDetailsResponse querySendDetails(QuerySendDetailsRequest request) throws ClientException { - return querySendDetails(request, smsConfigProperties.getAccessKeyId(), - smsConfigProperties.getAccessKeySecret()); + return querySendDetails(request, aliCloudProperties.getAccessKey(), + aliCloudProperties.getSecretKey()); } } \ No newline at end of file diff --git a/spring-cloud-alicloud-sms/src/main/java/org/springframework/cloud/alicloud/sms/config/SmsAutoConfiguration.java b/spring-cloud-alicloud-sms/src/main/java/org/springframework/cloud/alicloud/sms/config/SmsAutoConfiguration.java index 6fb88ea9..6d7af6f0 100644 --- a/spring-cloud-alicloud-sms/src/main/java/org/springframework/cloud/alicloud/sms/config/SmsAutoConfiguration.java +++ b/spring-cloud-alicloud-sms/src/main/java/org/springframework/cloud/alicloud/sms/config/SmsAutoConfiguration.java @@ -18,7 +18,8 @@ package org.springframework.cloud.alicloud.sms.config; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.cloud.alicloud.context.sms.SmsConfigProperties; +import org.springframework.cloud.alicloud.context.AliCloudProperties; +import org.springframework.cloud.alicloud.context.sms.SmsProperties; import org.springframework.cloud.alicloud.sms.ISmsService; import org.springframework.cloud.alicloud.sms.SmsInitializer; import org.springframework.cloud.alicloud.sms.SmsServiceImpl; @@ -37,13 +38,14 @@ import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest; public class SmsAutoConfiguration { @Bean - public SmsServiceImpl smsService(SmsConfigProperties smsConfigProperties) { - return new SmsServiceImpl(smsConfigProperties); + public SmsServiceImpl smsService(AliCloudProperties aliCloudProperties, + SmsProperties smsProperties) { + return new SmsServiceImpl(aliCloudProperties, smsProperties); } @Bean public SmsInitializer smsInitializePostListener( - SmsConfigProperties msConfigProperties, ISmsService smsService) { - return new SmsInitializer(msConfigProperties, smsService); + SmsProperties smsProperties, ISmsService smsService) { + return new SmsInitializer(smsProperties, smsService); } } \ No newline at end of file