This is an automated email from the ASF dual-hosted git repository. liubao pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
commit d9a431d0859a00e60d22351e2d05874074326db8 Author: liubao <bi...@qq.com> AuthorDate: Sun Oct 8 17:48:46 2023 +0800 [SCB-2008]remove ConfigUtil methods --- .../rest/definition/TestRestOperationMeta.java | 2 - .../filter/inner/RestServerCodecFilterTest.java | 3 - .../rest/locator/TestServicePathManager.java | 3 +- .../org/apache/servicecomb/core/SCBEngine.java | 4 +- .../core/TestConfigurationSpringInitializer.java | 5 +- .../core/TestSCBApplicationListener.java | 2 - .../producer/TestProducerBootListener.java | 68 +----- .../servicecomb/config/apollo/ApolloClient.java | 38 +-- .../servicecomb/config/apollo/ApolloConfig.java | 33 +-- .../config/apollo/ApolloConfiguration.java | 6 + .../apollo/ApolloDynamicPropertiesSource.java | 10 +- .../config/apollo/ApolloClientTest.java | 8 +- .../config/apollo/ApolloConfigTest.java | 44 ---- .../config/nacos/NacosDynamicPropertiesSource.java | 3 +- .../org/apache/servicecomb/config/ConfigUtil.java | 255 --------------------- .../spi/ConfigCenterConfigurationSource.java | 35 --- .../spi/ConfigCenterConfigurationSourceLoader.java | 42 ---- .../config/MapBasedConfigurationSource.java | 103 --------- .../priority/TestPriorityPropertyManager.java | 7 - ...comb.config.spi.ConfigCenterConfigurationSource | 18 -- .../registry/discovery/TestDiscoveryTree.java | 3 +- .../servicecomb/loadbalance/TestConfiguration.java | 23 -- .../loadbalance/TestLoadBalanceFilter.java | 2 - .../monitor/DefaultMonitorDataPublisher.java | 9 +- .../dashboard/monitor/TransportUtils.java | 51 +++-- 25 files changed, 87 insertions(+), 690 deletions(-) diff --git a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/definition/TestRestOperationMeta.java b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/definition/TestRestOperationMeta.java index 86662b3a2..b9fc9372a 100644 --- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/definition/TestRestOperationMeta.java +++ b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/definition/TestRestOperationMeta.java @@ -27,7 +27,6 @@ import java.util.Arrays; import java.util.List; import org.apache.servicecomb.common.rest.RestEngineSchemaListener; -import org.apache.servicecomb.config.ConfigUtil; import org.apache.servicecomb.core.BootListener; import org.apache.servicecomb.core.SCBEngine; import org.apache.servicecomb.core.bootstrap.SCBBootstrap; @@ -167,7 +166,6 @@ public class TestRestOperationMeta { @BeforeAll public static void classSetup() { - ConfigUtil.installDynamicConfig(); scbEngine = SCBBootstrap.createSCBEngineForTest(); ExecutorManager executorManager = Mockito.mock(ExecutorManager.class); TransportManager transportManager = Mockito.mock(TransportManager.class); diff --git a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilterTest.java b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilterTest.java index 8ac941cd8..8da1fa350 100644 --- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilterTest.java +++ b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilterTest.java @@ -29,7 +29,6 @@ import java.util.concurrent.ExecutionException; import org.apache.servicecomb.common.rest.HttpTransportContext; import org.apache.servicecomb.common.rest.RestConst; import org.apache.servicecomb.common.rest.definition.RestOperationMeta; -import org.apache.servicecomb.config.ConfigUtil; import org.apache.servicecomb.core.Endpoint; import org.apache.servicecomb.core.Invocation; import org.apache.servicecomb.core.SCBEngine; @@ -98,8 +97,6 @@ public class RestServerCodecFilterTest { @BeforeAll public static void beforeClass() { - ConfigUtil.installDynamicConfig(); - engine = SCBBootstrap.createSCBEngineForTest(); Environment environment = Mockito.mock(Environment.class); engine.setEnvironment(environment); diff --git a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/locator/TestServicePathManager.java b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/locator/TestServicePathManager.java index f7843353e..47b3ecb53 100644 --- a/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/locator/TestServicePathManager.java +++ b/common/common-rest/src/test/java/org/apache/servicecomb/common/rest/locator/TestServicePathManager.java @@ -24,7 +24,6 @@ import java.util.ArrayList; import java.util.List; import org.apache.servicecomb.common.rest.RestEngineSchemaListener; -import org.apache.servicecomb.config.ConfigUtil; import org.apache.servicecomb.core.BootListener; import org.apache.servicecomb.core.SCBEngine; import org.apache.servicecomb.core.bootstrap.SCBBootstrap; @@ -55,7 +54,7 @@ public class TestServicePathManager { @BeforeEach public void setUp() { - ConfigUtil.installDynamicConfig(); + } @AfterEach diff --git a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java index 4b04addf2..d74399002 100644 --- a/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java +++ b/core/src/main/java/org/apache/servicecomb/core/SCBEngine.java @@ -25,7 +25,6 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; import org.apache.commons.lang3.StringUtils; -import org.apache.servicecomb.config.ConfigUtil; import org.apache.servicecomb.config.MicroserviceProperties; import org.apache.servicecomb.config.priority.PriorityPropertyManager; import org.apache.servicecomb.core.BootListener.BootEvent; @@ -463,8 +462,7 @@ public class SCBEngine { LOGGER.error("wait all invocation finished interrupted", e); } - //Step 5: destroy config center source - ConfigUtil.destroyConfigCenterConfigurationSource(); + //Step 5: destroy config source // only be null for some test cases if (priorityPropertyManager != null) { priorityPropertyManager.close(); diff --git a/core/src/test/java/org/apache/servicecomb/core/TestConfigurationSpringInitializer.java b/core/src/test/java/org/apache/servicecomb/core/TestConfigurationSpringInitializer.java index a5fbd6f2c..27b38f601 100644 --- a/core/src/test/java/org/apache/servicecomb/core/TestConfigurationSpringInitializer.java +++ b/core/src/test/java/org/apache/servicecomb/core/TestConfigurationSpringInitializer.java @@ -21,7 +21,6 @@ import java.util.Map; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.core.config.Configurator; -import org.apache.servicecomb.config.ConfigUtil; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; @@ -40,14 +39,12 @@ public class TestConfigurationSpringInitializer { public void beforeTest() { Configurator.setRootLevel(Level.OFF); - ConfigUtil.clearExtraConfig(); - Configurator.setRootLevel(Level.INFO); } @AfterEach public void afterTest() { - ConfigUtil.clearExtraConfig(); + } @Test diff --git a/core/src/test/java/org/apache/servicecomb/core/TestSCBApplicationListener.java b/core/src/test/java/org/apache/servicecomb/core/TestSCBApplicationListener.java index 37eebd201..c6aad1f9d 100644 --- a/core/src/test/java/org/apache/servicecomb/core/TestSCBApplicationListener.java +++ b/core/src/test/java/org/apache/servicecomb/core/TestSCBApplicationListener.java @@ -19,7 +19,6 @@ package org.apache.servicecomb.core; import static org.apache.servicecomb.core.SCBEngine.CFG_KEY_TURN_DOWN_STATUS_WAIT_SEC; import static org.apache.servicecomb.core.SCBEngine.DEFAULT_TURN_DOWN_STATUS_WAIT_SEC; -import org.apache.servicecomb.config.ConfigUtil; import org.apache.servicecomb.core.bootstrap.SCBBootstrap; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.Assertions; @@ -32,7 +31,6 @@ import org.springframework.core.env.Environment; public class TestSCBApplicationListener { @BeforeEach public void before() { - ConfigUtil.installDynamicConfig(); } @AfterAll diff --git a/core/src/test/java/org/apache/servicecomb/core/provider/producer/TestProducerBootListener.java b/core/src/test/java/org/apache/servicecomb/core/provider/producer/TestProducerBootListener.java index edecc74ef..e327759ef 100644 --- a/core/src/test/java/org/apache/servicecomb/core/provider/producer/TestProducerBootListener.java +++ b/core/src/test/java/org/apache/servicecomb/core/provider/producer/TestProducerBootListener.java @@ -17,26 +17,18 @@ package org.apache.servicecomb.core.provider.producer; -import java.io.Closeable; import java.util.Arrays; import java.util.concurrent.Executor; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.atomic.AtomicInteger; import org.apache.servicecomb.core.BootListener.BootEvent; import org.apache.servicecomb.core.BootListener.EventType; import org.apache.servicecomb.core.SCBEngine; import org.apache.servicecomb.core.definition.MicroserviceMeta; import org.apache.servicecomb.core.definition.OperationMeta; -import org.apache.servicecomb.core.executor.GroupExecutor; import org.apache.servicecomb.foundation.test.scaffolding.log.LogCollector; -import org.junit.Test; - -import mockit.Expectations; -import mockit.Mock; -import mockit.MockUp; -import mockit.Mocked; import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; public class TestProducerBootListener { ProducerBootListener producerBootListener = new ProducerBootListener(); @@ -51,57 +43,15 @@ public class TestProducerBootListener { } @Test - public void onBootEvent_close(@Mocked SCBEngine scbEngine, @Mocked MicroserviceMeta microserviceMeta, - @Mocked OperationMeta op1, - @Mocked OperationMeta op2, @Mocked GroupExecutor closeable) { - AtomicInteger count = new AtomicInteger(); - ExecutorService executorService = new MockUp<ExecutorService>() { - @Mock - void shutdown() { - count.incrementAndGet(); - } - }.getMockInstance(); - new MockUp<Closeable>(closeable) { - @Mock - void close() { - count.incrementAndGet(); - } - }; - new Expectations() { - { - scbEngine.getProducerMicroserviceMeta(); - result = microserviceMeta; - microserviceMeta.getOperations(); - result = Arrays.asList(op1, op2); - op1.getExecutor(); - result = executorService; - op2.getExecutor(); - result = closeable; - } - }; - BootEvent event = new BootEvent(); - event.setScbEngine(scbEngine); - event.setEventType(EventType.AFTER_CLOSE); - - producerBootListener.onBootEvent(event); + public void onBootEvent_close_unknown() { + SCBEngine scbEngine = Mockito.mock(SCBEngine.class); + MicroserviceMeta microserviceMeta = Mockito.mock(MicroserviceMeta.class); + OperationMeta op = Mockito.mock(OperationMeta.class); - Assertions.assertEquals(2, count.get()); - } - - @Test - public void onBootEvent_close_unknown(@Mocked SCBEngine scbEngine, @Mocked MicroserviceMeta microserviceMeta, - @Mocked OperationMeta op1) { Executor executor = new UnCloseableExecutor(); - new Expectations() { - { - scbEngine.getProducerMicroserviceMeta(); - result = microserviceMeta; - microserviceMeta.getOperations(); - result = Arrays.asList(op1); - op1.getExecutor(); - result = executor; - } - }; + Mockito.when(scbEngine.getProducerMicroserviceMeta()).thenReturn(microserviceMeta); + Mockito.when(microserviceMeta.getOperations()).thenReturn(Arrays.asList(op)); + Mockito.when(op.getExecutor()).thenReturn(executor); try (LogCollector logCollector = new LogCollector()) { BootEvent event = new BootEvent(); diff --git a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloClient.java b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloClient.java index acd4a4dff..4fe0cc92b 100644 --- a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloClient.java +++ b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloClient.java @@ -29,7 +29,6 @@ import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; -import com.google.common.annotations.VisibleForTesting; import org.apache.servicecomb.config.apollo.ApolloDynamicPropertiesSource.UpdateHandler; import org.apache.servicecomb.foundation.common.utils.JsonUtils; import org.slf4j.Logger; @@ -41,6 +40,7 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.client.RestTemplate; import com.fasterxml.jackson.core.type.TypeReference; +import com.google.common.annotations.VisibleForTesting; import io.netty.handler.codec.http.HttpResponseStatus; @@ -48,34 +48,19 @@ public class ApolloClient { private static final Logger LOGGER = LoggerFactory.getLogger(ApolloClient.class); - private static final ApolloConfig APOLLO_CONFIG = ApolloConfig.INSTANCE; - private static final Map<String, Object> originalConfigMap = new ConcurrentHashMap<>(); private static final ScheduledExecutorService EXECUTOR = Executors.newScheduledThreadPool(1); - private final int refreshInterval = APOLLO_CONFIG.getRefreshInterval(); - - private final int firstRefreshInterval = APOLLO_CONFIG.getFirstRefreshInterval(); - - private final String serviceUri = APOLLO_CONFIG.getServerUri(); - - private final String serviceName = APOLLO_CONFIG.getServiceName(); - - private final String token = APOLLO_CONFIG.getToken(); - - private final String env = APOLLO_CONFIG.getEnv(); - - private final String clusters = APOLLO_CONFIG.getServerClusters(); - - private final String namespace = APOLLO_CONFIG.getNamespace(); + private final ApolloConfig apolloConfig; private final UpdateHandler updateHandler; private static RestTemplate rest = new RestTemplate(); - public ApolloClient(UpdateHandler updateHandler) { + public ApolloClient(UpdateHandler updateHandler, ApolloConfig apolloConfig) { this.updateHandler = updateHandler; + this.apolloConfig = apolloConfig; } @VisibleForTesting @@ -89,8 +74,9 @@ public class ApolloClient { } public void refreshApolloConfig() { - EXECUTOR - .scheduleWithFixedDelay(new ConfigRefresh(serviceUri), firstRefreshInterval, refreshInterval, TimeUnit.SECONDS); + EXECUTOR.scheduleWithFixedDelay(new ConfigRefresh(apolloConfig.getServerUri()), + apolloConfig.getFirstRefreshInterval(), + apolloConfig.getRefreshInterval(), TimeUnit.SECONDS); } class ConfigRefresh implements Runnable { @@ -113,7 +99,7 @@ public class ApolloClient { void refreshConfig() { HttpHeaders headers = new HttpHeaders(); headers.add("Content-Type", "application/json;charset=UTF-8"); - headers.add("Authorization", token); + headers.add("Authorization", apolloConfig.getToken()); HttpEntity<String> entity = new HttpEntity<>(headers); ResponseEntity<String> exchange = rest.exchange(composeAPI(), HttpMethod.GET, entity, String.class); if (HttpResponseStatus.OK.code() == exchange.getStatusCode().value()) { @@ -133,10 +119,10 @@ public class ApolloClient { } private String composeAPI() { - String api = serviceUri + "/openapi/v1/envs/" + env + - "/apps/" + serviceName + - "/clusters/" + clusters + - "/namespaces/" + namespace + + String api = serviceUri + "/openapi/v1/envs/" + apolloConfig.getEnv() + + "/apps/" + apolloConfig.getServiceName() + + "/clusters/" + apolloConfig.getServerClusters() + + "/namespaces/" + apolloConfig.getNamespace() + "/releases/latest"; return api; } diff --git a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfig.java b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfig.java index 605912e36..97509b9ee 100644 --- a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfig.java +++ b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfig.java @@ -17,13 +17,9 @@ package org.apache.servicecomb.config.apollo; -import org.apache.commons.configuration.Configuration; +import org.springframework.core.env.Environment; public class ApolloConfig { - public static final ApolloConfig INSTANCE = new ApolloConfig(); - - private static Configuration finalConfig; - private static final String SERVER_URL_KEY = "apollo.config.serverUri"; private static final String SERVER_NAMESPACE = "apollo.config.namespace"; @@ -44,46 +40,41 @@ public class ApolloConfig { private static final int DEFAULT_FIRST_REFRESH_INTERVAL = 0; - private ApolloConfig() { - } - - public static void setConcurrentCompositeConfiguration(Configuration config) { - finalConfig = config; - } + private final Environment environment; - public Configuration getConcurrentCompositeConfiguration() { - return finalConfig; + public ApolloConfig(Environment environment) { + this.environment = environment; } public String getServiceName() { - return finalConfig.getString(APOLLO_SERVICE_NAME); + return environment.getProperty(APOLLO_SERVICE_NAME); } public String getServerUri() { - return finalConfig.getString(SERVER_URL_KEY); + return environment.getProperty(SERVER_URL_KEY); } public String getToken() { - return finalConfig.getString(TOKEN); + return environment.getProperty(TOKEN); } public String getEnv() { - return finalConfig.getString(SERVER_ENV); + return environment.getProperty(SERVER_ENV); } public String getNamespace() { - return finalConfig.getString(SERVER_NAMESPACE); + return environment.getProperty(SERVER_NAMESPACE); } public String getServerClusters() { - return finalConfig.getString(SERVER_CLUSTERS); + return environment.getProperty(SERVER_CLUSTERS); } public int getRefreshInterval() { - return finalConfig.getInt(REFRESH_INTERVAL, DEFAULT_REFRESH_INTERVAL); + return environment.getProperty(REFRESH_INTERVAL, int.class, DEFAULT_REFRESH_INTERVAL); } public int getFirstRefreshInterval() { - return finalConfig.getInt(FIRST_REFRESH_INTERVAL, DEFAULT_FIRST_REFRESH_INTERVAL); + return environment.getProperty(FIRST_REFRESH_INTERVAL, int.class, DEFAULT_FIRST_REFRESH_INTERVAL); } } diff --git a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfiguration.java b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfiguration.java index 26dd7a2ee..ac500eafc 100644 --- a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfiguration.java +++ b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloConfiguration.java @@ -18,6 +18,7 @@ package org.apache.servicecomb.config.apollo; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.core.env.Environment; @Configuration public class ApolloConfiguration { @@ -25,4 +26,9 @@ public class ApolloConfiguration { public ApolloDynamicPropertiesSource apolloDynamicPropertiesSource() { return new ApolloDynamicPropertiesSource(); } + + @Bean + public ApolloConfig apolloConfig(Environment environment) { + return new ApolloConfig(environment); + } } diff --git a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloDynamicPropertiesSource.java b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloDynamicPropertiesSource.java index 01dc1a434..56dd7ed39 100644 --- a/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloDynamicPropertiesSource.java +++ b/dynamic-config/config-apollo/src/main/java/org/apache/servicecomb/config/apollo/ApolloDynamicPropertiesSource.java @@ -27,6 +27,7 @@ import org.apache.servicecomb.config.ConfigMapping; import org.apache.servicecomb.config.DynamicPropertiesSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.EnumerablePropertySource; import org.springframework.core.env.Environment; import org.springframework.core.env.MapPropertySource; @@ -41,13 +42,20 @@ public class ApolloDynamicPropertiesSource implements DynamicPropertiesSource<Ma private final ApolloDynamicPropertiesSource.UpdateHandler updateHandler = new ApolloDynamicPropertiesSource.UpdateHandler(); + private ApolloConfig apolloConfig; + + @Autowired + public void setApolloConfig(ApolloConfig apolloConfig) { + this.apolloConfig = apolloConfig; + } + @Override public int getOrder() { return 300; } private void init() { - ApolloClient apolloClient = new ApolloClient(updateHandler); + ApolloClient apolloClient = new ApolloClient(updateHandler, apolloConfig); apolloClient.refreshApolloConfig(); } diff --git a/dynamic-config/config-apollo/src/test/java/org/apache/servicecomb/config/apollo/ApolloClientTest.java b/dynamic-config/config-apollo/src/test/java/org/apache/servicecomb/config/apollo/ApolloClientTest.java index c284a1fbf..77a074e4f 100644 --- a/dynamic-config/config-apollo/src/test/java/org/apache/servicecomb/config/apollo/ApolloClientTest.java +++ b/dynamic-config/config-apollo/src/test/java/org/apache/servicecomb/config/apollo/ApolloClientTest.java @@ -38,12 +38,11 @@ public class ApolloClientTest { @BeforeAll public static void setUpClass() { - ApolloConfig.setConcurrentCompositeConfiguration(ConfigUtil.createLocalConfig()); } @Test public void refreshApolloConfig() { - ApolloConfig apolloConfig = ApolloConfig.INSTANCE; + ApolloConfig apolloConfig = Mockito.mock(ApolloConfig.class); RestTemplate rest = Mockito.mock(RestTemplate.class); ApolloClient.setRest(rest); @@ -56,7 +55,7 @@ public class ApolloClientTest { ArgumentMatchers.<Class<String>>any())).thenReturn(responseEntity); ApolloDynamicPropertiesSource impl = new ApolloDynamicPropertiesSource(); UpdateHandler updateHandler = impl.new UpdateHandler(); - ApolloClient apolloClient = new ApolloClient(updateHandler); + ApolloClient apolloClient = new ApolloClient(updateHandler, apolloConfig); ConfigRefresh cr = apolloClient.new ConfigRefresh(apolloConfig.getServerUri()); cr.run(); @@ -65,13 +64,14 @@ public class ApolloClientTest { @Test public void testCompareChangedConfig() { + ApolloConfig apolloConfig = Mockito.mock(ApolloConfig.class); boolean status = true; Map<String, Object> before = new HashMap<>(); Map<String, Object> after = new HashMap<>(); ApolloDynamicPropertiesSource impl = new ApolloDynamicPropertiesSource(); UpdateHandler updateHandler = impl.new UpdateHandler(); - ApolloClient apolloClient = new ApolloClient(updateHandler); + ApolloClient apolloClient = new ApolloClient(updateHandler, apolloConfig); ConfigRefresh cr = apolloClient.new ConfigRefresh(""); diff --git a/dynamic-config/config-apollo/src/test/java/org/apache/servicecomb/config/apollo/ApolloConfigTest.java b/dynamic-config/config-apollo/src/test/java/org/apache/servicecomb/config/apollo/ApolloConfigTest.java deleted file mode 100644 index 01a550609..000000000 --- a/dynamic-config/config-apollo/src/test/java/org/apache/servicecomb/config/apollo/ApolloConfigTest.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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.apache.servicecomb.config.apollo; - -import org.apache.servicecomb.config.ConfigUtil; -import org.apache.servicecomb.config.apollo.ApolloConfig; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.Test; - -public class ApolloConfigTest { - @BeforeAll - public static void setUpClass() { - ApolloConfig.setConcurrentCompositeConfiguration(ConfigUtil.createLocalConfig()); - } - - @Test - public void getServiceName() { - ApolloConfig instance = ApolloConfig.INSTANCE; - Assertions.assertEquals("apollo-test", instance.getServiceName()); - Assertions.assertEquals("http://127.0.0.1:8070", instance.getServerUri()); - Assertions.assertEquals("DEV", instance.getEnv()); - Assertions.assertEquals("test-cluster", instance.getServerClusters()); - Assertions.assertEquals("application", instance.getNamespace()); - Assertions.assertEquals("xxx", instance.getToken()); - Assertions.assertEquals(30, instance.getRefreshInterval()); - Assertions.assertEquals(0, instance.getFirstRefreshInterval()); - } -} diff --git a/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosDynamicPropertiesSource.java b/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosDynamicPropertiesSource.java index 134a4e035..4b39760a9 100644 --- a/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosDynamicPropertiesSource.java +++ b/dynamic-config/config-nacos/src/main/java/org/apache/servicecomb/config/nacos/NacosDynamicPropertiesSource.java @@ -27,7 +27,6 @@ import java.util.concurrent.CopyOnWriteArrayList; import org.apache.servicecomb.config.ConfigMapping; import org.apache.servicecomb.config.DynamicPropertiesSource; -import org.apache.servicecomb.config.spi.ConfigCenterConfigurationSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.env.EnumerablePropertySource; @@ -40,7 +39,7 @@ import com.netflix.config.WatchedUpdateListener; public class NacosDynamicPropertiesSource implements DynamicPropertiesSource<Map<String, Object>> { public static final String SOURCE_NAME = "kie"; - private static final Logger LOGGER = LoggerFactory.getLogger(ConfigCenterConfigurationSource.class); + private static final Logger LOGGER = LoggerFactory.getLogger(NacosDynamicPropertiesSource.class); private final Map<String, Object> valueCache = new ConcurrentHashMap<>(); diff --git a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/ConfigUtil.java b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/ConfigUtil.java index 11c002c3e..4259badfc 100644 --- a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/ConfigUtil.java +++ b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/ConfigUtil.java @@ -17,279 +17,24 @@ package org.apache.servicecomb.config; -import static org.apache.servicecomb.foundation.common.base.ServiceCombConstants.CONFIG_KEY_SPLITER; - -import java.util.HashMap; import java.util.HashSet; -import java.util.Iterator; -import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; -import java.util.Objects; import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.CopyOnWriteArraySet; -import java.util.stream.Collectors; - -import javax.annotation.Nonnull; -import org.apache.commons.configuration.AbstractConfiguration; -import org.apache.commons.configuration.Configuration; -import org.apache.commons.configuration.EnvironmentConfiguration; import org.apache.commons.configuration.PropertyConverter; -import org.apache.commons.configuration.SystemConfiguration; -import org.apache.commons.lang.reflect.FieldUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.servicecomb.config.archaius.scheduler.NeverStartPollingScheduler; -import org.apache.servicecomb.config.archaius.sources.ConfigModel; -import org.apache.servicecomb.config.archaius.sources.MicroserviceConfigLoader; -import org.apache.servicecomb.config.archaius.sources.MicroserviceConfigurationSource; -import org.apache.servicecomb.config.event.DynamicConfigurationChangedEvent; -import org.apache.servicecomb.config.spi.ConfigCenterConfigurationSource; -import org.apache.servicecomb.config.spi.ConfigCenterConfigurationSourceLoader; -import org.apache.servicecomb.foundation.common.event.EventManager; -import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.core.env.ConfigurableEnvironment; import org.springframework.core.env.EnumerablePropertySource; import org.springframework.core.env.Environment; import org.springframework.core.env.PropertySource; -import com.netflix.config.ConcurrentCompositeConfiguration; -import com.netflix.config.ConcurrentMapConfiguration; -import com.netflix.config.ConfigurationManager; -import com.netflix.config.DynamicProperty; -import com.netflix.config.DynamicPropertyFactory; -import com.netflix.config.WatchedUpdateListener; -import com.netflix.config.WatchedUpdateResult; - public final class ConfigUtil { - private static final Logger LOGGER = LoggerFactory.getLogger(ConfigUtil.class); - - private static final String IS_PRINT_URL = "servicecomb.config.log.verbose"; - - private static Map<String, Object> localConfig = new HashMap<>(); - - /** - * <p>The configurations not read by ServiceComb.</p> - * <p> - * For example, this map can store the configurations read by SpringBoot from application.properties, - * If users write the configurations of ServiceComb into application.yml instead of microservice.yaml, - * this can help {@link ConfigUtil} load config correctly. - * </p> - */ - private static final Map<String, Map<String, Object>> EXTRA_CONFIG_MAP = new LinkedHashMap<>(); - private ConfigUtil() { } - public static void setConfigs(Map<String, Object> config) { - localConfig = config; - } - - public static void addConfig(String key, Object value) { - localConfig.put(key, value); - } - - public static Object getProperty(String key) { - AbstractConfiguration config = ConfigurationManager.getConfigInstance(); - return getProperty(config, key); - } - - public static Object getProperty(Object config, String key) { - if (config instanceof Configuration) { - Configuration configuration = (Configuration) config; - return configuration.getProperty(key); - } - return null; - } - - /** - * get comma separated list values from yaml string - */ - public static List<String> getStringList(@Nonnull Configuration config, @Nonnull String key) { - return parseArrayValue(config.getString(key)).stream() - .map(v -> Objects.toString(v, null)) - .collect(Collectors.toList()); - } - public static List<String> parseArrayValue(String value) { return PropertyConverter.split(value, ',', true); } - public static ConcurrentCompositeConfiguration createLocalConfig() { - MicroserviceConfigLoader loader = new MicroserviceConfigLoader(); - loader.loadAndSort(); - if (localConfig.size() > 0) { - ConfigModel model = new ConfigModel(); - model.setConfig(localConfig); - loader.getConfigModels().add(model); - } - - boolean isPrintUrl = DynamicPropertyFactory.getInstance() - .getBooleanProperty(IS_PRINT_URL, true).get(); - if (isPrintUrl) { - LOGGER.info("create local config from paths=[{}]", StringUtils.join(loader.getConfigModels(), ",")); - } - - ConcurrentCompositeConfiguration config = ConfigUtil.createLocalConfig(loader.getConfigModels()); - return config; - } - - private static ConcurrentCompositeConfiguration createLocalConfig(List<ConfigModel> configModelList) { - ConcurrentCompositeConfiguration config = new ConcurrentCompositeConfiguration(); - - duplicateCseConfigToServicecomb(config, - new ConcurrentMapConfigurationExt(new SystemConfiguration()), - "configFromSystem"); - duplicateCseConfigToServicecomb(config, - convertEnvVariable(new ConcurrentMapConfigurationExt(new EnvironmentConfiguration())), - "configFromEnvironment"); - // If there is extra configurations, add it into config. - EXTRA_CONFIG_MAP.entrySet() - .stream() - .filter(mapEntry -> !mapEntry.getValue().isEmpty()) - .forEachOrdered(configMapEntry -> duplicateCseConfigToServicecomb(config, - new ConcurrentMapConfigurationExt(configMapEntry.getValue()), - configMapEntry.getKey())); - // we have already copy the cse config to the serviceComb config when we load the config from local yaml files - // hence, we do not need duplicate copy it. - config.addConfiguration(new DynamicConfigurationExt( - new MicroserviceConfigurationSource(configModelList), new NeverStartPollingScheduler()), - "configFromYamlFile"); - duplicateCseConfigToServicecombAtFront(config, - new ConcurrentMapConfigurationExt(ConfigMapping.getConvertedMap(config)), - "configFromMapping"); - return config; - } - - public static AbstractConfiguration convertEnvVariable(AbstractConfiguration source) { - Iterator<String> keys = source.getKeys(); - while (keys.hasNext()) { - String key = keys.next(); - String[] separatedKey = key.split(CONFIG_KEY_SPLITER); - if (separatedKey.length == 1) { - continue; - } - String newKey = String.join(".", separatedKey); - source.addProperty(newKey, source.getProperty(key)); - } - return source; - } - - private static void duplicateCseConfigToServicecomb(ConcurrentCompositeConfiguration compositeConfiguration, - AbstractConfiguration source, - String sourceName) { - - compositeConfiguration.addConfiguration(source, sourceName); - } - - private static void duplicateCseConfigToServicecombAtFront(ConcurrentCompositeConfiguration compositeConfiguration, - AbstractConfiguration source, - String sourceName) { - - compositeConfiguration.addConfigurationAtFront(source, sourceName); - } - - private static ConfigCenterConfigurationSource createConfigCenterConfigurationSource( - Configuration localConfiguration) { - ConfigCenterConfigurationSource configCenterConfigurationSource = ConfigCenterConfigurationSourceLoader - .getConfigCenterConfigurationSource(localConfiguration); - - if (null == configCenterConfigurationSource) { - LOGGER.info("none of config center source enabled."); - return null; - } - - LOGGER.info("use config center source {}", configCenterConfigurationSource.getClass().getName()); - return configCenterConfigurationSource; - } - - private static void createDynamicWatchedConfiguration( - ConcurrentCompositeConfiguration localConfiguration, - ConfigCenterConfigurationSource configCenterConfigurationSource) { - ConcurrentMapConfiguration injectConfig = new ConcurrentMapConfigurationExt(); - localConfiguration.addConfigurationAtFront(injectConfig, "extraInjectConfig"); - configCenterConfigurationSource.addUpdateListener(new ServiceCombPropertyUpdateListener(injectConfig)); - - DynamicWatchedConfigurationExt configFromConfigCenter = - new DynamicWatchedConfigurationExt(configCenterConfigurationSource); - localConfiguration.addConfigurationAtFront(configFromConfigCenter, "configCenterConfig"); - } - - public static ConfigCenterConfigurationSource installDynamicConfig() { - if (ConfigurationManager.isConfigurationInstalled()) { - LOGGER.warn("Configuration installed by others, will ignore this configuration."); - return null; - } - - ConcurrentCompositeConfiguration compositeConfig = ConfigUtil.createLocalConfig(); - ConfigCenterConfigurationSource configCenterConfigurationSource = - createConfigCenterConfigurationSource(compositeConfig); - if (configCenterConfigurationSource != null) { - // add listeners - createDynamicWatchedConfiguration(compositeConfig, configCenterConfigurationSource); - // then init data - configCenterConfigurationSource.init(compositeConfig); - } - - ConfigurationManager.install(compositeConfig); - - return configCenterConfigurationSource; - } - - public static void destroyConfigCenterConfigurationSource() { - SPIServiceUtils.getAllService(ConfigCenterConfigurationSource.class).forEach(source -> { - try { - source.destroy(); - } catch (Throwable e) { - LOGGER.error("Failed to destroy {}", source.getClass().getName()); - } - }); - } - - public static void addExtraConfig(String extraConfigName, Map<String, Object> extraConfig) { - EXTRA_CONFIG_MAP.put(extraConfigName, extraConfig); - } - - public static void clearExtraConfig() { - EXTRA_CONFIG_MAP.clear(); - } - - private static class ServiceCombPropertyUpdateListener implements WatchedUpdateListener { - - private final ConcurrentMapConfiguration injectConfig; - - ServiceCombPropertyUpdateListener(ConcurrentMapConfiguration injectConfig) { - this.injectConfig = injectConfig; - } - - @Override - public void updateConfiguration(WatchedUpdateResult watchedUpdateResult) { - EventManager.post(new DynamicConfigurationChangedEvent(watchedUpdateResult)); - } - } - - @SuppressWarnings("unchecked") - public static ConcurrentHashMap<String, DynamicProperty> getAllDynamicProperties() { - try { - return (ConcurrentHashMap<String, DynamicProperty>) FieldUtils - .readDeclaredStaticField(DynamicProperty.class, "ALL_PROPS", true); - } catch (IllegalAccessException e) { - throw new IllegalStateException(e); - } - } - - @SuppressWarnings("unchecked") - public static CopyOnWriteArraySet<Runnable> getCallbacks(DynamicProperty property) { - try { - return (CopyOnWriteArraySet<Runnable>) FieldUtils.readDeclaredField(property, "callbacks", true); - } catch (IllegalAccessException e) { - throw new IllegalStateException(e); - } - } - public static Set<String> propertiesWithPrefix(Environment environment, String prefix) { Set<String> result = new HashSet<>(); for (PropertySource<?> propertySource : ((ConfigurableEnvironment) environment).getPropertySources()) { diff --git a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/spi/ConfigCenterConfigurationSource.java b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/spi/ConfigCenterConfigurationSource.java deleted file mode 100644 index 604e7f8b3..000000000 --- a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/spi/ConfigCenterConfigurationSource.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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.apache.servicecomb.config.spi; - -import org.apache.commons.configuration.Configuration; -import org.apache.servicecomb.foundation.common.utils.SPIOrder; - -import com.netflix.config.WatchedConfigurationSource; - -public interface ConfigCenterConfigurationSource extends WatchedConfigurationSource, SPIOrder { - int ORDER_BASE = 100; - - boolean isValidSource(Configuration localConfiguration); - - void init(Configuration localConfiguration); - - default void destroy() { - - } -} diff --git a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/spi/ConfigCenterConfigurationSourceLoader.java b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/spi/ConfigCenterConfigurationSourceLoader.java deleted file mode 100644 index 2e5760e36..000000000 --- a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/spi/ConfigCenterConfigurationSourceLoader.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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.apache.servicecomb.config.spi; - -import java.util.List; - -import org.apache.commons.configuration.Configuration; -import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils; - -public class ConfigCenterConfigurationSourceLoader { - private static final List<ConfigCenterConfigurationSource> configCenterConfigurationSources = - SPIServiceUtils.getSortedService(ConfigCenterConfigurationSource.class); - - public static ConfigCenterConfigurationSource getConfigCenterConfigurationSource(Configuration localConfiguration) { - - ConfigCenterConfigurationSource configCenterConfigurationSource = null; - - for (ConfigCenterConfigurationSource item : configCenterConfigurationSources) { - if (item.isValidSource(localConfiguration)) { - configCenterConfigurationSource = item; - break; - } - } - - return configCenterConfigurationSource; - } -} diff --git a/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/MapBasedConfigurationSource.java b/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/MapBasedConfigurationSource.java deleted file mode 100644 index 5f08c8a89..000000000 --- a/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/MapBasedConfigurationSource.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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.apache.servicecomb.config; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - -import org.apache.commons.configuration.Configuration; -import org.apache.servicecomb.config.spi.ConfigCenterConfigurationSource; - -import com.netflix.config.WatchedUpdateListener; -import com.netflix.config.WatchedUpdateResult; - -public class MapBasedConfigurationSource implements ConfigCenterConfigurationSource { - - private static final Map<String, Object> properties = new ConcurrentHashMap<>(); - - private static final Set<WatchedUpdateListener> listeners = new HashSet<>(); - - static { - properties.put("servicecomb.abc.key", "xyz"); - } - - @Override - public boolean isValidSource(Configuration localConfiguration) { - if (localConfiguration.getProperty("cse.config.client.serverUri") == null) { - return false; - } - return true; - } - - @Override - public void init(Configuration localConfiguration) { - - } - - @Override - public void addUpdateListener(WatchedUpdateListener listener) { - listeners.add(listener); - } - - @Override - public void removeUpdateListener(WatchedUpdateListener listener) { - listeners.remove(listener); - } - - @Override - public Map<String, Object> getCurrentData() throws Exception { - return properties; - } - - void addProperty(String property, Object value) { - properties.put(property, value); - - Map<String, Object> adds = new HashMap<>(); - adds.put(property, value); - - listeners.forEach( - listener -> listener.updateConfiguration(WatchedUpdateResult.createIncremental(adds, null, null))); - } - - void setProperty(String property, Object value) { - properties.replace(property, value); - - Map<String, Object> changeds = new HashMap<>(); - changeds.put(property, value); - - listeners.forEach(listener -> listener - .updateConfiguration(WatchedUpdateResult.createIncremental(null, changeds, null))); - } - - void deleteProperty(String property) { - properties.remove(property); - - Map<String, Object> deletes = new HashMap<>(); - deletes.put(property, null); - - listeners.forEach( - listener -> listener.updateConfiguration(WatchedUpdateResult.createIncremental(null, null, deletes))); - } - - public Map<String, Object> getProperties() { - return properties; - } -} diff --git a/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/priority/TestPriorityPropertyManager.java b/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/priority/TestPriorityPropertyManager.java index 15e223b3e..291d86145 100644 --- a/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/priority/TestPriorityPropertyManager.java +++ b/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/priority/TestPriorityPropertyManager.java @@ -17,14 +17,11 @@ package org.apache.servicecomb.config.priority; -import org.apache.servicecomb.config.ConfigUtil; import org.apache.servicecomb.config.inject.InjectProperties; import org.apache.servicecomb.config.inject.InjectProperty; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -import com.netflix.config.DynamicProperty; - public class TestPriorityPropertyManager extends TestPriorityPropertyBase { String high = "ms.schema.op"; @@ -75,10 +72,6 @@ public class TestPriorityPropertyManager extends TestPriorityPropertyBase { waitKeyForGC(priorityPropertyManager); Assertions.assertTrue(priorityPropertyManager.getConfigObjectMap().isEmpty()); - for (DynamicProperty property : ConfigUtil.getAllDynamicProperties().values()) { - Assertions.assertTrue(ConfigUtil.getCallbacks(property).isEmpty()); - } - System.out.println("Token : " + (System.currentTimeMillis() - timeBegin)); } } diff --git a/foundations/foundation-config/src/test/resources/META-INF/services/org.apache.servicecomb.config.spi.ConfigCenterConfigurationSource b/foundations/foundation-config/src/test/resources/META-INF/services/org.apache.servicecomb.config.spi.ConfigCenterConfigurationSource deleted file mode 100644 index 54abbb2ca..000000000 --- a/foundations/foundation-config/src/test/resources/META-INF/services/org.apache.servicecomb.config.spi.ConfigCenterConfigurationSource +++ /dev/null @@ -1,18 +0,0 @@ -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed with -# this work for additional information regarding copyright ownership. -# The ASF licenses this file to You 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. -# - -org.apache.servicecomb.config.MapBasedConfigurationSource \ No newline at end of file diff --git a/foundations/foundation-registry/src/test/java/org/apache/servicecomb/registry/discovery/TestDiscoveryTree.java b/foundations/foundation-registry/src/test/java/org/apache/servicecomb/registry/discovery/TestDiscoveryTree.java index 1d161792c..a30b892f8 100644 --- a/foundations/foundation-registry/src/test/java/org/apache/servicecomb/registry/discovery/TestDiscoveryTree.java +++ b/foundations/foundation-registry/src/test/java/org/apache/servicecomb/registry/discovery/TestDiscoveryTree.java @@ -24,7 +24,6 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; -import org.apache.servicecomb.config.ConfigUtil; import org.apache.servicecomb.foundation.common.cache.VersionedCache; import org.apache.servicecomb.foundation.common.exceptions.ServiceCombException; import org.apache.servicecomb.registry.DiscoveryManager; @@ -44,7 +43,7 @@ public class TestDiscoveryTree { @BeforeEach public void before() { - ConfigUtil.installDynamicConfig(); + } @AfterEach diff --git a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestConfiguration.java b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestConfiguration.java index ff505fc99..81f24cd8b 100644 --- a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestConfiguration.java +++ b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestConfiguration.java @@ -17,7 +17,6 @@ package org.apache.servicecomb.loadbalance; -import org.apache.servicecomb.config.ConfigUtil; import org.apache.servicecomb.foundation.common.LegacyPropertyFactory; import org.junit.After; import org.junit.Before; @@ -26,8 +25,6 @@ import org.junit.jupiter.api.Assertions; import org.mockito.Mockito; import org.springframework.core.env.Environment; -import com.netflix.config.ConcurrentCompositeConfiguration; - /** * */ @@ -70,26 +67,6 @@ public class TestConfiguration { Assertions.assertNotNull(Configuration.INSTANCE.getSessionTimeoutInSeconds("test")); } - - /** - * The property key of timerIntervalInMilis changed from <code>servicecomb.loadbalance.stats.timerIntervalInMilis</code> - * to <code>servicecomb.loadbalance.stats.timerIntervalInMillis</code>, check the compatibility - */ - @Test - public void testGetTimerIntervalInMillis() { - System.setProperty(Configuration.TIMER_INTERVAL_IN_MILLIS, "100"); - ConcurrentCompositeConfiguration localConfiguration = ConfigUtil.createLocalConfig(); - Assertions.assertEquals("100", localConfiguration.getProperty(Configuration.TIMER_INTERVAL_IN_MILLIS)); - - System.clearProperty(Configuration.TIMER_INTERVAL_IN_MILLIS); - localConfiguration = ConfigUtil.createLocalConfig(); - Assertions.assertNull(localConfiguration.getProperty(Configuration.TIMER_INTERVAL_IN_MILLIS)); - - System.setProperty("servicecomb.loadbalance.stats.timerIntervalInMilis", "100"); - localConfiguration = ConfigUtil.createLocalConfig(); - Assertions.assertEquals("100", localConfiguration.getProperty(Configuration.TIMER_INTERVAL_IN_MILLIS)); - } - @Test public void testGetMaxSingleTestWindow() { Assertions.assertEquals(60000, Configuration.INSTANCE.getMaxSingleTestWindow()); diff --git a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceFilter.java b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceFilter.java index bdc657b81..a03c0e4dd 100644 --- a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceFilter.java +++ b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceFilter.java @@ -25,7 +25,6 @@ import java.util.Collections; import java.util.List; import java.util.Map; -import org.apache.servicecomb.config.ConfigUtil; import org.apache.servicecomb.core.Invocation; import org.apache.servicecomb.core.SCBEngine; import org.apache.servicecomb.core.Transport; @@ -74,7 +73,6 @@ public class TestLoadBalanceFilter { @Before public void setUp() { - ConfigUtil.installDynamicConfig(); scbEngine = SCBBootstrap.createSCBEngineForTest(); Environment environment = Mockito.mock(Environment.class); scbEngine.setEnvironment(environment); diff --git a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DefaultMonitorDataPublisher.java b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DefaultMonitorDataPublisher.java index 330bd0d09..cd7d2fc10 100644 --- a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DefaultMonitorDataPublisher.java +++ b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/DefaultMonitorDataPublisher.java @@ -21,7 +21,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.commons.configuration.Configuration; import org.apache.http.HttpHost; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; @@ -72,7 +71,7 @@ public class DefaultMonitorDataPublisher implements MonitorDataPublisher { requestBuilder.setSocketTimeout(10000); HttpTransport httpTransport = createHttpTransport(addressManager, requestBuilder.build(), - ConfigUtil.createLocalConfig()); + environment); dashboardClient = new DashboardClient(addressManager, httpTransport); } @@ -90,7 +89,7 @@ public class DefaultMonitorDataPublisher implements MonitorDataPublisher { } private HttpTransport createHttpTransport(DashboardAddressManager addressManager, RequestConfig requestConfig, - Configuration localConfiguration) { + Environment environment) { List<AuthHeaderProvider> authHeaderProviders = SPIServiceUtils.getOrLoadSortedService(AuthHeaderProvider.class); if (monitorConstant.isProxyEnable()) { @@ -108,14 +107,14 @@ public class DefaultMonitorDataPublisher implements MonitorDataPublisher { return HttpTransportFactory .createHttpTransport( TransportUtils - .createSSLProperties(addressManager.sslEnabled(), localConfiguration, SSL_KEY), + .createSSLProperties(addressManager.sslEnabled(), environment, SSL_KEY), getRequestAuthHeaderProvider(authHeaderProviders), httpClientBuilder); } return HttpTransportFactory .createHttpTransport( TransportUtils - .createSSLProperties(monitorConstant.sslEnabled(), localConfiguration, SSL_KEY), + .createSSLProperties(monitorConstant.sslEnabled(), environment, SSL_KEY), getRequestAuthHeaderProvider(authHeaderProviders), requestConfig); } diff --git a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/TransportUtils.java b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/TransportUtils.java index 0f49400fe..ed2aaec26 100644 --- a/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/TransportUtils.java +++ b/huawei-cloud/dashboard/src/main/java/org/apache/servicecomb/huaweicloud/dashboard/monitor/TransportUtils.java @@ -23,9 +23,10 @@ import org.apache.commons.configuration.Configuration; import org.apache.servicecomb.foundation.ssl.SSLCustom; import org.apache.servicecomb.foundation.ssl.SSLOption; import org.apache.servicecomb.http.client.common.HttpConfiguration.SSLProperties; +import org.springframework.core.env.Environment; public class TransportUtils { - public static SSLProperties createSSLProperties(boolean sslEnabled, Configuration configuration, String tag) { + public static SSLProperties createSSLProperties(boolean sslEnabled, Environment environment, String tag) { SSLProperties sslProperties = new SSLProperties(); sslProperties.setEnabled(sslEnabled); @@ -34,93 +35,93 @@ public class TransportUtils { } SSLOption option = new SSLOption(); - option.setEngine(getStringProperty(configuration, + option.setEngine(getStringProperty(environment, DEFAULT_OPTION.getEngine(), "ssl." + tag + ".engine", "ssl.engine")); option.setProtocols( - getStringProperty(configuration, + getStringProperty(environment, DEFAULT_OPTION.getProtocols(), "ssl." + tag + ".protocols", "ssl.protocols")); option.setCiphers( - getStringProperty(configuration, DEFAULT_OPTION.getCiphers(), "ssl." + tag + ".ciphers", "ssl.ciphers")); + getStringProperty(environment, DEFAULT_OPTION.getCiphers(), "ssl." + tag + ".ciphers", "ssl.ciphers")); option.setAuthPeer( - getBooleanProperty(configuration, DEFAULT_OPTION.isAuthPeer(), "ssl." + tag + ".authPeer", "ssl.authPeer")); + getBooleanProperty(environment, DEFAULT_OPTION.isAuthPeer(), "ssl." + tag + ".authPeer", "ssl.authPeer")); option.setCheckCNHost( - getBooleanProperty(configuration, + getBooleanProperty(environment, DEFAULT_OPTION.isCheckCNHost(), "ssl." + tag + ".checkCN.host", "ssl.checkCN.host")); option.setCheckCNWhite( - getBooleanProperty(configuration, + getBooleanProperty(environment, DEFAULT_OPTION.isCheckCNWhite(), "ssl." + tag + ".checkCN.white", "ssl.checkCN.white")); - option.setCheckCNWhiteFile(getStringProperty(configuration, + option.setCheckCNWhiteFile(getStringProperty(environment, DEFAULT_OPTION.getCiphers(), "ssl." + tag + ".checkCN.white.file", "ssl.checkCN.white.file")); - option.setAllowRenegociate(getBooleanProperty(configuration, + option.setAllowRenegociate(getBooleanProperty(environment, DEFAULT_OPTION.isAllowRenegociate(), "ssl." + tag + ".allowRenegociate", "ssl.allowRenegociate")); option.setStorePath( - getStringProperty(configuration, + getStringProperty(environment, DEFAULT_OPTION.getStorePath(), "ssl." + tag + ".storePath", "ssl.storePath")); option.setClientAuth( - getStringProperty(configuration, + getStringProperty(environment, DEFAULT_OPTION.getClientAuth(), "ssl." + tag + ".clientAuth", "ssl.clientAuth")); option.setTrustStore( - getStringProperty(configuration, + getStringProperty(environment, DEFAULT_OPTION.getTrustStore(), "ssl." + tag + ".trustStore", "ssl.trustStore")); - option.setTrustStoreType(getStringProperty(configuration, + option.setTrustStoreType(getStringProperty(environment, DEFAULT_OPTION.getTrustStoreType(), "ssl." + tag + ".trustStoreType", "ssl.trustStoreType")); - option.setTrustStoreValue(getStringProperty(configuration, + option.setTrustStoreValue(getStringProperty(environment, DEFAULT_OPTION.getTrustStoreValue(), "ssl." + tag + ".trustStoreValue", "ssl.trustStoreValue")); option.setKeyStore( - getStringProperty(configuration, DEFAULT_OPTION.getKeyStore(), "ssl." + tag + ".keyStore", "ssl.keyStore")); + getStringProperty(environment, DEFAULT_OPTION.getKeyStore(), "ssl." + tag + ".keyStore", "ssl.keyStore")); option.setKeyStoreType( - getStringProperty(configuration, + getStringProperty(environment, DEFAULT_OPTION.getKeyStoreType(), "ssl." + tag + ".keyStoreType", "ssl.keyStoreType")); - option.setKeyStoreValue(getStringProperty(configuration, + option.setKeyStoreValue(getStringProperty(environment, DEFAULT_OPTION.getKeyStoreValue(), "ssl." + tag + ".keyStoreValue", "ssl.keyStoreValue")); - option.setCrl(getStringProperty(configuration, DEFAULT_OPTION.getCrl(), "ssl." + tag + ".crl", "ssl.crl")); + option.setCrl(getStringProperty(environment, DEFAULT_OPTION.getCrl(), "ssl." + tag + ".crl", "ssl.crl")); option.setSslCustomClass( - getStringProperty(configuration, null, "ssl." + tag + ".sslCustomClass", "ssl.sslCustomClass")); + getStringProperty(environment, null, "ssl." + tag + ".sslCustomClass", "ssl.sslCustomClass")); sslProperties.setSslOption(option); sslProperties.setSslCustom(SSLCustom.createSSLCustom(option.getSslCustomClass())); return sslProperties; } - private static String getStringProperty(Configuration configuration, String defaultValue, String... keys) { + private static String getStringProperty(Environment environment, String defaultValue, String... keys) { for (String key : keys) { - if (configuration.containsKey(key)) { - return configuration.getString(key); + if (environment.getProperty(key) != null) { + return environment.getProperty(key); } } return defaultValue; } - private static boolean getBooleanProperty(Configuration configuration, boolean defaultValue, String... keys) { + private static boolean getBooleanProperty(Environment environment, boolean defaultValue, String... keys) { for (String key : keys) { - if (configuration.containsKey(key)) { - return configuration.getBoolean(key); + if (environment.getProperty(key) != null) { + return environment.getProperty(key, boolean.class, false); } } return defaultValue;