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