From f88a342c4d2eff58292f158a879fa15a29acaac7 Mon Sep 17 00:00:00 2001 From: lepdou Date: Mon, 27 Jun 2022 19:25:06 +0800 Subject: [PATCH 1/6] fix config file format misspell (#319) --- CHANGELOG.md | 1 + .../tencent/cloud/polaris/config/enums/ConfigFileFormat.java | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 09e09b284..2573c6d38 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,3 +19,4 @@ - [Feature:add restTemplate Report Polaris](https://github.com/Tencent/spring-cloud-tencent/pull/272) - [Use jdk constants instead of magic variables](https://github.com/Tencent/spring-cloud-tencent/pull/313) - [Fix the current limiting effect is that other requests cannot be processed when queuing at a constant speed](https://github.com/Tencent/spring-cloud-tencent/pull/316) +- [Fix config file format misspell](https://github.com/Tencent/spring-cloud-tencent/pull/319) diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/enums/ConfigFileFormat.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/enums/ConfigFileFormat.java index 2b7be5774..024ad67d0 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/enums/ConfigFileFormat.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/enums/ConfigFileFormat.java @@ -28,7 +28,7 @@ public enum ConfigFileFormat { /** * property format. */ - PROPERTY(".property"), + PROPERTY(".properties"), /** * yaml format. */ @@ -48,7 +48,7 @@ public enum ConfigFileFormat { /** * text format. */ - TEXT(".text"), + TEXT(".txt"), /** * html format. */ From ff94e2ed46b0f83ab536c2c6ad2bc3ab63ef6ec8 Mon Sep 17 00:00:00 2001 From: lapple <291608411@qq.com> Date: Tue, 28 Jun 2022 13:16:42 +0800 Subject: [PATCH 2/6] UT: improve test coverage for load balancer unit test (#325) * improve test coverage for load-balancer * modify CHANGELOG.md Co-authored-by: lapplelei --- CHANGELOG.md | 1 + .../pom.xml | 9 +- .../loadbalancer/PolarisLoadBalancerTest.java | 187 ++++++++++++++++++ 3 files changed, 196 insertions(+), 1 deletion(-) create mode 100644 spring-cloud-tencent-polaris-loadbalancer/src/test/java/com/tencent/cloud/polaris/loadbalancer/PolarisLoadBalancerTest.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 2573c6d38..8dcd091de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,3 +20,4 @@ - [Use jdk constants instead of magic variables](https://github.com/Tencent/spring-cloud-tencent/pull/313) - [Fix the current limiting effect is that other requests cannot be processed when queuing at a constant speed](https://github.com/Tencent/spring-cloud-tencent/pull/316) - [Fix config file format misspell](https://github.com/Tencent/spring-cloud-tencent/pull/319) +- [UT: improve test coverage for load balancer unit test](https://github.com/Tencent/spring-cloud-tencent/pull/325) diff --git a/spring-cloud-tencent-polaris-loadbalancer/pom.xml b/spring-cloud-tencent-polaris-loadbalancer/pom.xml index dc64bf192..7475e83fb 100644 --- a/spring-cloud-tencent-polaris-loadbalancer/pom.xml +++ b/spring-cloud-tencent-polaris-loadbalancer/pom.xml @@ -49,6 +49,13 @@ spring-boot-starter-test test + + + org.mockito + mockito-inline + test + + - \ No newline at end of file + diff --git a/spring-cloud-tencent-polaris-loadbalancer/src/test/java/com/tencent/cloud/polaris/loadbalancer/PolarisLoadBalancerTest.java b/spring-cloud-tencent-polaris-loadbalancer/src/test/java/com/tencent/cloud/polaris/loadbalancer/PolarisLoadBalancerTest.java new file mode 100644 index 000000000..b6f16eccf --- /dev/null +++ b/spring-cloud-tencent-polaris-loadbalancer/src/test/java/com/tencent/cloud/polaris/loadbalancer/PolarisLoadBalancerTest.java @@ -0,0 +1,187 @@ +/* + * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * + * Licensed under the BSD 3-Clause License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://opensource.org/licenses/BSD-3-Clause + * + * Unless required by applicable law or agreed to in writing, software distributed + * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + */ +// CHECKSTYLE:OFF + +package com.tencent.cloud.polaris.loadbalancer; + + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import com.netflix.client.config.DefaultClientConfigImpl; +import com.netflix.client.config.IClientConfig; +import com.netflix.loadbalancer.DummyPing; +import com.netflix.loadbalancer.Server; +import com.netflix.loadbalancer.ServerList; +import com.tencent.cloud.common.util.ApplicationContextAwareUtils; +import com.tencent.cloud.polaris.loadbalancer.config.PolarisLoadBalancerProperties; +import com.tencent.polaris.api.core.ConsumerAPI; +import com.tencent.polaris.api.pojo.DefaultInstance; +import com.tencent.polaris.api.pojo.DefaultServiceInstances; +import com.tencent.polaris.api.pojo.Instance; +import com.tencent.polaris.api.pojo.ServiceInstances; +import com.tencent.polaris.api.pojo.ServiceKey; +import com.tencent.polaris.api.rpc.InstancesResponse; +import com.tencent.polaris.router.api.core.RouterAPI; +import com.tencent.polaris.router.api.rpc.ProcessLoadBalanceResponse; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockedStatic; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; + +import org.springframework.cloud.netflix.ribbon.StaticServerList; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + + +/** + * Test for {@link PolarisLoadBalancer}. + * + * @author lapple.lei 2022-06-28 + */ +@RunWith(MockitoJUnitRunner.class) +public class PolarisLoadBalancerTest { + + + private static final String CLIENT_NAME = "polaris-test-server"; + private static final String NS = "testNamespace"; + private static final String[] HOST_LIST = new String[] { + "127.0.0.1", + "127.0.0.2", + "127.0.0.3", + "127.0.0.4", + "127.0.0.5", + }; + + @Mock + private RouterAPI routerAPI; + + @Mock + private ConsumerAPI consumerAPI; + + + @Test + public void testPolarisLoadBalancer() { + + //mock consumerAPI + when(consumerAPI.getHealthyInstancesInstance(any())).thenReturn(this.assembleInstanceResp()); + + //mock routerAPI for rule + when(routerAPI.processLoadBalance(any())).thenReturn(assembleProcessLoadBalanceResp()); + PolarisWeightedRule rule = new PolarisWeightedRule(routerAPI); + + // clientConfig + IClientConfig config = new DefaultClientConfigImpl(); + config.loadProperties(CLIENT_NAME); + + //mock for MetadataContext + try (MockedStatic mockedCtxUtils = Mockito + .mockStatic(ApplicationContextAwareUtils.class)) { + mockedCtxUtils.when(() -> ApplicationContextAwareUtils.getProperties("spring.cloud.polaris.namespace")) + .thenReturn(NS); + mockedCtxUtils.when(() -> ApplicationContextAwareUtils.getProperties("spring.cloud.polaris.service")) + .thenReturn("TestServer"); + + PolarisLoadBalancerProperties properties = new PolarisLoadBalancerProperties(); + ServerList emptyServerList = new StaticServerList<>(); + + PolarisLoadBalancer balancer = new PolarisLoadBalancer(config, rule, new DummyPing(), emptyServerList, + consumerAPI, properties); + + String host = balancer.choose(null); + System.out.println(host); + + Assert.assertNotNull(host); + Assert.assertEquals("127.0.0.1:8080", host); + } + + } + + + @Test + public void testExtendDiscoveryServiceInstance() { + + + //mock routerAPI for rule + when(routerAPI.processLoadBalance(any())).thenReturn(assembleProcessLoadBalanceResp()); + PolarisWeightedRule rule = new PolarisWeightedRule(routerAPI); + + // clientConfig + IClientConfig config = new DefaultClientConfigImpl(); + config.loadProperties(CLIENT_NAME); + + //mock for MetadataContext + try (MockedStatic mockedCtxUtils = Mockito + .mockStatic(ApplicationContextAwareUtils.class)) { + + mockedCtxUtils.when(() -> ApplicationContextAwareUtils.getProperties("spring.cloud.polaris.namespace")) + .thenReturn(NS); + mockedCtxUtils.when(() -> ApplicationContextAwareUtils.getProperties("spring.cloud.polaris.service")) + .thenReturn("TestServer"); + + PolarisLoadBalancerProperties properties = new PolarisLoadBalancerProperties(); + properties.setDiscoveryType("TEST"); + ServerList staticServerList = assembleServerList(); + + PolarisLoadBalancer balancer = new PolarisLoadBalancer(config, rule, new DummyPing(), staticServerList, + consumerAPI, properties); + + String host = balancer.choose(null); + System.out.println(host); + } + + } + + + private ServerList assembleServerList() { + return new StaticServerList<>(Stream.of(HOST_LIST).map(this::convertServer).toArray(Server[]::new)); + } + + + private ProcessLoadBalanceResponse assembleProcessLoadBalanceResp() { + ServiceInstances serviceInstances = assembleServiceInstances(); + return new ProcessLoadBalanceResponse(serviceInstances.getInstances().get(0)); + } + + private InstancesResponse assembleInstanceResp() { + return new InstancesResponse(assembleServiceInstances()); + } + + private ServiceInstances assembleServiceInstances() { + ServiceKey serviceKey = new ServiceKey(NS, CLIENT_NAME); + + List instances = Stream.of(HOST_LIST).map(this::convertInstance).collect(Collectors.toList()); + return new DefaultServiceInstances(serviceKey, instances); + } + + private Instance convertInstance(String host) { + DefaultInstance instance = new DefaultInstance(); + instance.setHost(host); + instance.setPort(8080); + return instance; + } + + private Server convertServer(String host) { + return new Server("http", host, 8080); + } + +} From 5acefc5d9f4c74cc43cab6a55ac1c787bb0b0742 Mon Sep 17 00:00:00 2001 From: Haotian Zhang <928016560@qq.com> Date: Tue, 28 Jun 2022 19:16:35 +0800 Subject: [PATCH 3/6] feat:Add GitHub action of codecov.yml. (#328) --- .github/workflows/codecov.yml | 32 +++++++++++++++++++ .github/workflows/junit_test.yml | 6 ---- CHANGELOG.md | 1 + .../discovery/PolarisDiscoveryHandler.java | 2 +- spring-cloud-tencent-dependencies/pom.xml | 2 +- .../loadbalancer/PolarisLoadBalancer.java | 2 +- .../loadbalancer/PolarisLoadBalancerTest.java | 2 +- 7 files changed, 37 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/codecov.yml diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml new file mode 100644 index 000000000..c0ef90771 --- /dev/null +++ b/.github/workflows/codecov.yml @@ -0,0 +1,32 @@ +# This workflow will build a Java project with Maven +# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven + +name: Codecov + +on: + push: + branches: [ main ] + pull_request: + branches: [ main ] + +permissions: + contents: write + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout codes + uses: actions/checkout@v3 + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + distribution: 'temurin' + java-version: 8 + - name: Test with Maven + run: mvn -B test --file pom.xml + - name: Upload coverage to Codecov + uses: codecov/codecov-action@v3 + with: + file: ${{ github.workspace }}/target/site/jacoco/jacoco.xml diff --git a/.github/workflows/junit_test.yml b/.github/workflows/junit_test.yml index 51e9cce15..57cfae035 100644 --- a/.github/workflows/junit_test.yml +++ b/.github/workflows/junit_test.yml @@ -41,11 +41,5 @@ jobs: key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} restore-keys: | ${{ runner.os }}-maven- -# - name: Build with Maven -# run: mvn -B package --file pom.xml - name: Test with Maven run: mvn -B test --file pom.xml - - name: Upload coverage to Codecov - uses: codecov/codecov-action@v3 - with: - file: '**/target/site/jacoco/jacoco.xml' diff --git a/CHANGELOG.md b/CHANGELOG.md index 8dcd091de..bfc1bde6f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,3 +21,4 @@ - [Fix the current limiting effect is that other requests cannot be processed when queuing at a constant speed](https://github.com/Tencent/spring-cloud-tencent/pull/316) - [Fix config file format misspell](https://github.com/Tencent/spring-cloud-tencent/pull/319) - [UT: improve test coverage for load balancer unit test](https://github.com/Tencent/spring-cloud-tencent/pull/325) +- [feat:Add GitHub action of codecov.yml.](https://github.com/Tencent/spring-cloud-tencent/pull/328) diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryHandler.java b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryHandler.java index e1691ea4e..a55443561 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryHandler.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryHandler.java @@ -61,7 +61,7 @@ public class PolarisDiscoveryHandler { GetHealthyInstancesRequest getHealthyInstancesRequest = new GetHealthyInstancesRequest(); getHealthyInstancesRequest.setNamespace(namespace); getHealthyInstancesRequest.setService(service); - return polarisConsumer.getHealthyInstancesInstance(getHealthyInstancesRequest); + return polarisConsumer.getHealthyInstances(getHealthyInstancesRequest); } /** diff --git a/spring-cloud-tencent-dependencies/pom.xml b/spring-cloud-tencent-dependencies/pom.xml index 528f1ba88..bd1ae87f7 100644 --- a/spring-cloud-tencent-dependencies/pom.xml +++ b/spring-cloud-tencent-dependencies/pom.xml @@ -71,7 +71,7 @@ 1.6.0-Hoxton.SR12-SNAPSHOT - 1.6.1 + 1.7.0-SNAPSHOT 1.2.11 4.5.1 1.12.10 diff --git a/spring-cloud-tencent-polaris-loadbalancer/src/main/java/com/tencent/cloud/polaris/loadbalancer/PolarisLoadBalancer.java b/spring-cloud-tencent-polaris-loadbalancer/src/main/java/com/tencent/cloud/polaris/loadbalancer/PolarisLoadBalancer.java index b73cea887..5f83c5aec 100644 --- a/spring-cloud-tencent-polaris-loadbalancer/src/main/java/com/tencent/cloud/polaris/loadbalancer/PolarisLoadBalancer.java +++ b/spring-cloud-tencent-polaris-loadbalancer/src/main/java/com/tencent/cloud/polaris/loadbalancer/PolarisLoadBalancer.java @@ -134,7 +134,7 @@ public class PolarisLoadBalancer extends DynamicServerListLoadBalancer { GetHealthyInstancesRequest request = new GetHealthyInstancesRequest(); request.setNamespace(namespace); request.setService(serviceName); - return consumerAPI.getHealthyInstancesInstance(request); + return consumerAPI.getHealthyInstances(request); } } diff --git a/spring-cloud-tencent-polaris-loadbalancer/src/test/java/com/tencent/cloud/polaris/loadbalancer/PolarisLoadBalancerTest.java b/spring-cloud-tencent-polaris-loadbalancer/src/test/java/com/tencent/cloud/polaris/loadbalancer/PolarisLoadBalancerTest.java index b6f16eccf..be8456e2d 100644 --- a/spring-cloud-tencent-polaris-loadbalancer/src/test/java/com/tencent/cloud/polaris/loadbalancer/PolarisLoadBalancerTest.java +++ b/spring-cloud-tencent-polaris-loadbalancer/src/test/java/com/tencent/cloud/polaris/loadbalancer/PolarisLoadBalancerTest.java @@ -83,7 +83,7 @@ public class PolarisLoadBalancerTest { public void testPolarisLoadBalancer() { //mock consumerAPI - when(consumerAPI.getHealthyInstancesInstance(any())).thenReturn(this.assembleInstanceResp()); + when(consumerAPI.getHealthyInstances(any())).thenReturn(this.assembleInstanceResp()); //mock routerAPI for rule when(routerAPI.processLoadBalance(any())).thenReturn(assembleProcessLoadBalanceResp()); From b4e780253d5d4b48b168cc66b9e306e869122837 Mon Sep 17 00:00:00 2001 From: lepdou Date: Tue, 28 Jun 2022 19:36:45 +0800 Subject: [PATCH 4/6] add spring cloud tencent logo (#329) --- CHANGELOG.md | 1 + README-zh.md | 2 +- README.md | 3 ++- doc/logo/logo.png | Bin 0 -> 16835 bytes 4 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 doc/logo/logo.png diff --git a/CHANGELOG.md b/CHANGELOG.md index bfc1bde6f..5f98236df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,3 +22,4 @@ - [Fix config file format misspell](https://github.com/Tencent/spring-cloud-tencent/pull/319) - [UT: improve test coverage for load balancer unit test](https://github.com/Tencent/spring-cloud-tencent/pull/325) - [feat:Add GitHub action of codecov.yml.](https://github.com/Tencent/spring-cloud-tencent/pull/328) +- [Feature: add spring cloud tencent logo](https://github.com/Tencent/spring-cloud-tencent/pull/329) diff --git a/README-zh.md b/README-zh.md index 3efd6c741..5724154c0 100644 --- a/README-zh.md +++ b/README-zh.md @@ -1,4 +1,4 @@ -# Spring Cloud Tencent +Spring-Cloud-Tencent-Logo [![Wiki](https://badgen.net/badge/icon/wiki?icon=wiki&label)](https://github.com/Tencent/spring-cloud-tencent/wiki) [![Build Status](https://github.com/Tencent/spring-cloud-tencent/actions/workflows/junit_test.yml/badge.svg)](https://github.com/Tencent/spring-cloud-tencent/actions/workflows/junit_test.yml) diff --git a/README.md b/README.md index d54297d19..adfa43cf9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ -# Spring Cloud Tencent +Spring-Cloud-Tencent-Logo + [![Wiki](https://badgen.net/badge/icon/wiki?icon=wiki&label)](https://github.com/Tencent/spring-cloud-tencent/wiki) [![Build Status](https://github.com/Tencent/spring-cloud-tencent/actions/workflows/junit_test.yml/badge.svg)](https://github.com/Tencent/spring-cloud-tencent/actions/workflows/junit_test.yml) diff --git a/doc/logo/logo.png b/doc/logo/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..56598b4fc6d9d5683ae386e9e706211e9d182fac GIT binary patch literal 16835 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 Date: Tue, 28 Jun 2022 20:25:56 +0800 Subject: [PATCH 5/6] optimize polaris load balancer test code format (#333) --- CHANGELOG.md | 1 + .../loadbalancer/PolarisLoadBalancerTest.java | 16 +--------------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f98236df..812cb131f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,5 +21,6 @@ - [Fix the current limiting effect is that other requests cannot be processed when queuing at a constant speed](https://github.com/Tencent/spring-cloud-tencent/pull/316) - [Fix config file format misspell](https://github.com/Tencent/spring-cloud-tencent/pull/319) - [UT: improve test coverage for load balancer unit test](https://github.com/Tencent/spring-cloud-tencent/pull/325) + & [optimize polaris load balancer test code format](https://github.com/Tencent/spring-cloud-tencent/pull/333) - [feat:Add GitHub action of codecov.yml.](https://github.com/Tencent/spring-cloud-tencent/pull/328) - [Feature: add spring cloud tencent logo](https://github.com/Tencent/spring-cloud-tencent/pull/329) diff --git a/spring-cloud-tencent-polaris-loadbalancer/src/test/java/com/tencent/cloud/polaris/loadbalancer/PolarisLoadBalancerTest.java b/spring-cloud-tencent-polaris-loadbalancer/src/test/java/com/tencent/cloud/polaris/loadbalancer/PolarisLoadBalancerTest.java index be8456e2d..e9d8580d3 100644 --- a/spring-cloud-tencent-polaris-loadbalancer/src/test/java/com/tencent/cloud/polaris/loadbalancer/PolarisLoadBalancerTest.java +++ b/spring-cloud-tencent-polaris-loadbalancer/src/test/java/com/tencent/cloud/polaris/loadbalancer/PolarisLoadBalancerTest.java @@ -60,8 +60,6 @@ import static org.mockito.Mockito.when; */ @RunWith(MockitoJUnitRunner.class) public class PolarisLoadBalancerTest { - - private static final String CLIENT_NAME = "polaris-test-server"; private static final String NS = "testNamespace"; private static final String[] HOST_LIST = new String[] { @@ -74,14 +72,11 @@ public class PolarisLoadBalancerTest { @Mock private RouterAPI routerAPI; - @Mock private ConsumerAPI consumerAPI; - @Test public void testPolarisLoadBalancer() { - //mock consumerAPI when(consumerAPI.getHealthyInstances(any())).thenReturn(this.assembleInstanceResp()); @@ -108,19 +103,14 @@ public class PolarisLoadBalancerTest { consumerAPI, properties); String host = balancer.choose(null); - System.out.println(host); Assert.assertNotNull(host); Assert.assertEquals("127.0.0.1:8080", host); } - } - @Test public void testExtendDiscoveryServiceInstance() { - - //mock routerAPI for rule when(routerAPI.processLoadBalance(any())).thenReturn(assembleProcessLoadBalanceResp()); PolarisWeightedRule rule = new PolarisWeightedRule(routerAPI); @@ -146,17 +136,14 @@ public class PolarisLoadBalancerTest { consumerAPI, properties); String host = balancer.choose(null); - System.out.println(host); + Assert.assertEquals("127.0.0.1:8080", host); } - } - private ServerList assembleServerList() { return new StaticServerList<>(Stream.of(HOST_LIST).map(this::convertServer).toArray(Server[]::new)); } - private ProcessLoadBalanceResponse assembleProcessLoadBalanceResp() { ServiceInstances serviceInstances = assembleServiceInstances(); return new ProcessLoadBalanceResponse(serviceInstances.getInstances().get(0)); @@ -183,5 +170,4 @@ public class PolarisLoadBalancerTest { private Server convertServer(String host) { return new Server("http", host, 8080); } - } From 933d573c6401554a95f137d042b6901d7a59cff2 Mon Sep 17 00:00:00 2001 From: lepdou Date: Wed, 29 Jun 2022 11:14:57 +0800 Subject: [PATCH 6/6] optimize static metadata manager (#327) --- CHANGELOG.md | 3 +- .../PolarisFeignClientAutoConfiguration.java | 2 +- .../PolarisRestTemplateAutoConfiguration.java | 2 +- ...larisFeignClientAutoConfigurationTest.java | 2 +- .../polaris/config/ConfigurationModifier.java | 2 +- ...larisConfigBootstrapAutoConfiguration.java | 4 +- .../adapter/PolarisConfigFileLocator.java | 2 +- .../adapter/PolarisConfigFileLocatorTest.java | 2 +- .../polaris/registry/PolarisRegistration.java | 24 +-- ...larisServiceRegistryAutoConfiguration.java | 6 +- ...coveryPropertiesAutoConfigurationTest.java | 2 +- ...pertiesBootstrapAutoConfigurationTest.java | 2 +- ...PolarisDiscoveryAutoConfigurationTest.java | 2 +- ...larisDiscoveryClientConfigurationTest.java | 2 +- .../PolarisServiceDiscoveryTest.java | 2 +- ...ctiveDiscoveryClientConfigurationTest.java | 2 +- .../registry/PolarisRegistrationTest.java | 2 +- ...sServiceRegistryAutoConfigurationTest.java | 2 +- .../registry/PolarisServiceRegistryTest.java | 2 +- .../polaris/ribbon/PolarisServerListTest.java | 2 +- .../PolarisRateLimitAutoConfiguration.java | 2 +- ...PolarisRateLimitAutoConfigurationTest.java | 2 +- .../router/spi/RouterLabelResolver.java | 13 +- .../metadata/StaticMetadataManager.java | 102 +++++++++- .../config/MetadataAutoConfiguration.java | 7 +- .../common}/spi/InstanceMetadataProvider.java | 27 ++- .../metadata/StaticMetadataManagerTest.java | 186 ++++++++++++++++++ .../service/callee/CustomMetadata.java | 14 +- .../src/main/resources/bootstrap.yml | 4 + .../example/CustomRouterLabelResolver.java | 5 - .../cloud/polaris/context/ModifyAddress.java | 1 + .../context/PostInitPolarisSDKContext.java | 50 +++++ .../PolarisContextAutoConfiguration.java | 35 +--- ...arisContextBootstrapAutoConfiguration.java | 2 +- .../PolarisContextPostConfiguration.java | 39 ++++ .../PolarisContextProperties.java | 3 +- ...itional-spring-configuration-metadata.json | 12 +- .../main/resources/META-INF/spring.factories | 5 +- .../PolarisContextAutoConfigurationTest.java | 1 + .../context/PolarisContextGetHostTest.java | 2 + ...arisLoadBalancerAutoConfigurationTest.java | 2 +- 41 files changed, 461 insertions(+), 122 deletions(-) rename {spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context => spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common}/spi/InstanceMetadataProvider.java (73%) create mode 100644 spring-cloud-tencent-commons/src/test/java/com/tencent/cloud/common/metadata/StaticMetadataManagerTest.java create mode 100644 spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PostInitPolarisSDKContext.java rename spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/{ => config}/PolarisContextAutoConfiguration.java (58%) rename spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/{ => config}/PolarisContextBootstrapAutoConfiguration.java (95%) create mode 100644 spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/PolarisContextPostConfiguration.java rename spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/{ => config}/PolarisContextProperties.java (96%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 812cb131f..5eef473ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ - [Fix the current limiting effect is that other requests cannot be processed when queuing at a constant speed](https://github.com/Tencent/spring-cloud-tencent/pull/316) - [Fix config file format misspell](https://github.com/Tencent/spring-cloud-tencent/pull/319) - [UT: improve test coverage for load balancer unit test](https://github.com/Tencent/spring-cloud-tencent/pull/325) - & [optimize polaris load balancer test code format](https://github.com/Tencent/spring-cloud-tencent/pull/333) +- [Feature: Optimize polaris load balancer test code format](https://github.com/Tencent/spring-cloud-tencent/pull/333) - [feat:Add GitHub action of codecov.yml.](https://github.com/Tencent/spring-cloud-tencent/pull/328) - [Feature: add spring cloud tencent logo](https://github.com/Tencent/spring-cloud-tencent/pull/329) +- [Feature: Optimize static metadata manager](https://github.com/Tencent/spring-cloud-tencent/pull/327) diff --git a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/config/PolarisFeignClientAutoConfiguration.java b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/config/PolarisFeignClientAutoConfiguration.java index ae699dead..a1f50a3df 100644 --- a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/config/PolarisFeignClientAutoConfiguration.java +++ b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/config/PolarisFeignClientAutoConfiguration.java @@ -18,7 +18,7 @@ package com.tencent.cloud.polaris.circuitbreaker.config; import com.tencent.cloud.polaris.circuitbreaker.feign.PolarisFeignBeanPostProcessor; -import com.tencent.cloud.polaris.context.PolarisContextAutoConfiguration; +import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; import com.tencent.polaris.api.core.ConsumerAPI; import com.tencent.polaris.client.api.SDKContext; import com.tencent.polaris.factory.api.DiscoveryAPIFactory; diff --git a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/config/PolarisRestTemplateAutoConfiguration.java b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/config/PolarisRestTemplateAutoConfiguration.java index ea99fce36..d537de32e 100644 --- a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/config/PolarisRestTemplateAutoConfiguration.java +++ b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/main/java/com/tencent/cloud/polaris/circuitbreaker/config/PolarisRestTemplateAutoConfiguration.java @@ -20,7 +20,7 @@ package com.tencent.cloud.polaris.circuitbreaker.config; import com.tencent.cloud.polaris.circuitbreaker.resttemplate.PolarisResponseErrorHandler; import com.tencent.cloud.polaris.circuitbreaker.resttemplate.PolarisRestTemplateModifier; import com.tencent.cloud.polaris.circuitbreaker.resttemplate.PolarisRestTemplateResponseErrorHandler; -import com.tencent.cloud.polaris.context.PolarisContextAutoConfiguration; +import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; import com.tencent.polaris.api.core.ConsumerAPI; import org.springframework.beans.factory.annotation.Autowired; diff --git a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisFeignClientAutoConfigurationTest.java b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisFeignClientAutoConfigurationTest.java index 2443949c9..682b99522 100644 --- a/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisFeignClientAutoConfigurationTest.java +++ b/spring-cloud-starter-tencent-polaris-circuitbreaker/src/test/java/com/tencent/cloud/polaris/circuitbreaker/PolarisFeignClientAutoConfigurationTest.java @@ -19,7 +19,7 @@ package com.tencent.cloud.polaris.circuitbreaker; import com.tencent.cloud.polaris.circuitbreaker.config.PolarisFeignClientAutoConfiguration; import com.tencent.cloud.polaris.circuitbreaker.feign.PolarisFeignBeanPostProcessor; -import com.tencent.cloud.polaris.context.PolarisContextAutoConfiguration; +import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; import com.tencent.polaris.api.core.ConsumerAPI; import org.junit.Test; diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/ConfigurationModifier.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/ConfigurationModifier.java index 495d6ec3a..9953b3c67 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/ConfigurationModifier.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/ConfigurationModifier.java @@ -25,7 +25,7 @@ import com.tencent.cloud.common.constant.ContextConstant; import com.tencent.cloud.common.util.AddressUtils; import com.tencent.cloud.polaris.config.config.PolarisConfigProperties; import com.tencent.cloud.polaris.context.PolarisConfigModifier; -import com.tencent.cloud.polaris.context.PolarisContextProperties; +import com.tencent.cloud.polaris.context.config.PolarisContextProperties; import com.tencent.polaris.factory.config.ConfigurationImpl; import org.apache.commons.lang.StringUtils; diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/PolarisConfigBootstrapAutoConfiguration.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/PolarisConfigBootstrapAutoConfiguration.java index 101ca4a35..e16f1480c 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/PolarisConfigBootstrapAutoConfiguration.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/PolarisConfigBootstrapAutoConfiguration.java @@ -21,8 +21,8 @@ import com.tencent.cloud.polaris.config.adapter.PolarisConfigFileLocator; import com.tencent.cloud.polaris.config.adapter.PolarisPropertySourceManager; import com.tencent.cloud.polaris.config.config.PolarisConfigProperties; import com.tencent.cloud.polaris.context.ConditionalOnPolarisEnabled; -import com.tencent.cloud.polaris.context.PolarisContextAutoConfiguration; -import com.tencent.cloud.polaris.context.PolarisContextProperties; +import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; +import com.tencent.cloud.polaris.context.config.PolarisContextProperties; import com.tencent.polaris.client.api.SDKContext; import com.tencent.polaris.configuration.api.core.ConfigFileService; import com.tencent.polaris.configuration.factory.ConfigFileServiceFactory; diff --git a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocator.java b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocator.java index 240eb4cc0..b3b92ce30 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocator.java +++ b/spring-cloud-starter-tencent-polaris-config/src/main/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocator.java @@ -26,7 +26,7 @@ import java.util.concurrent.ConcurrentHashMap; import com.tencent.cloud.polaris.config.config.ConfigFileGroup; import com.tencent.cloud.polaris.config.config.PolarisConfigProperties; import com.tencent.cloud.polaris.config.enums.ConfigFileFormat; -import com.tencent.cloud.polaris.context.PolarisContextProperties; +import com.tencent.cloud.polaris.context.config.PolarisContextProperties; import com.tencent.polaris.configuration.api.core.ConfigFileMetadata; import com.tencent.polaris.configuration.api.core.ConfigFileService; import com.tencent.polaris.configuration.api.core.ConfigKVFile; diff --git a/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocatorTest.java b/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocatorTest.java index 6fe0bfa2a..8c072ef9d 100644 --- a/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocatorTest.java +++ b/spring-cloud-starter-tencent-polaris-config/src/test/java/com/tencent/cloud/polaris/config/adapter/PolarisConfigFileLocatorTest.java @@ -26,7 +26,7 @@ import java.util.Map; import com.google.common.collect.Lists; import com.tencent.cloud.polaris.config.config.ConfigFileGroup; import com.tencent.cloud.polaris.config.config.PolarisConfigProperties; -import com.tencent.cloud.polaris.context.PolarisContextProperties; +import com.tencent.cloud.polaris.context.config.PolarisContextProperties; import com.tencent.polaris.configuration.api.core.ConfigFileService; import com.tencent.polaris.configuration.api.core.ConfigKVFile; import org.junit.Assert; diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisRegistration.java b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisRegistration.java index 20cfcf6ed..558a6b5bf 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisRegistration.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisRegistration.java @@ -26,7 +26,6 @@ import java.util.Map; import com.tencent.cloud.common.metadata.StaticMetadataManager; import com.tencent.cloud.polaris.DiscoveryPropertiesAutoConfiguration; import com.tencent.cloud.polaris.PolarisDiscoveryProperties; -import com.tencent.cloud.polaris.context.spi.InstanceMetadataProvider; import com.tencent.polaris.client.api.SDKContext; import org.apache.commons.lang.StringUtils; @@ -53,8 +52,6 @@ public class PolarisRegistration implements Registration, ServiceInstance { private final StaticMetadataManager staticMetadataManager; - private final InstanceMetadataProvider instanceMetadataProvider; - private Map metadata; private final String host; @@ -62,13 +59,11 @@ public class PolarisRegistration implements Registration, ServiceInstance { public PolarisRegistration( DiscoveryPropertiesAutoConfiguration discoveryPropertiesAutoConfiguration, PolarisDiscoveryProperties polarisDiscoveryProperties, SDKContext context, - StaticMetadataManager staticMetadataManager, - InstanceMetadataProvider instanceMetadataProvider) { + StaticMetadataManager staticMetadataManager) { this.discoveryPropertiesAutoConfiguration = discoveryPropertiesAutoConfiguration; this.polarisDiscoveryProperties = polarisDiscoveryProperties; this.polarisContext = context; this.staticMetadataManager = staticMetadataManager; - this.instanceMetadataProvider = instanceMetadataProvider; host = polarisContext.getConfig().getGlobal().getAPI().getBindIP(); } @@ -117,23 +112,6 @@ public class PolarisRegistration implements Registration, ServiceInstance { // location info will be putted both in metadata and instance's field instanceMetadata.putAll(staticMetadataManager.getLocationMetadata()); - // custom metadata from spi - if (instanceMetadataProvider != null) { - if (StringUtils.isNotBlank(instanceMetadataProvider.getRegion())) { - instanceMetadata.put(StaticMetadataManager.LOCATION_KEY_ZONE, instanceMetadataProvider.getRegion()); - } - if (StringUtils.isNotBlank(instanceMetadataProvider.getZone())) { - instanceMetadata.put(StaticMetadataManager.LOCATION_KEY_ZONE, instanceMetadataProvider.getZone()); - } - if (StringUtils.isNotBlank(instanceMetadataProvider.getCampus())) { - instanceMetadata.put(StaticMetadataManager.LOCATION_KEY_ZONE, instanceMetadataProvider.getCampus()); - } - - if (!CollectionUtils.isEmpty(instanceMetadataProvider.getMetadata())) { - instanceMetadata.putAll(instanceMetadataProvider.getMetadata()); - } - } - this.metadata = Collections.unmodifiableMap(instanceMetadata); } return metadata; diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryAutoConfiguration.java b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryAutoConfiguration.java index e868996d5..5eadee573 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryAutoConfiguration.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/main/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryAutoConfiguration.java @@ -21,7 +21,6 @@ package com.tencent.cloud.polaris.registry; import com.tencent.cloud.common.metadata.StaticMetadataManager; import com.tencent.cloud.polaris.DiscoveryPropertiesAutoConfiguration; import com.tencent.cloud.polaris.PolarisDiscoveryProperties; -import com.tencent.cloud.polaris.context.spi.InstanceMetadataProvider; import com.tencent.cloud.polaris.discovery.PolarisDiscoveryAutoConfiguration; import com.tencent.cloud.polaris.discovery.PolarisDiscoveryHandler; import com.tencent.polaris.client.api.SDKContext; @@ -35,7 +34,6 @@ import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationC import org.springframework.cloud.client.serviceregistry.AutoServiceRegistrationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.lang.Nullable; /** * Autoconfiguration of service registry of Polaris. @@ -64,9 +62,9 @@ public class PolarisServiceRegistryAutoConfiguration { public PolarisRegistration polarisRegistration( DiscoveryPropertiesAutoConfiguration discoveryPropertiesAutoConfiguration, PolarisDiscoveryProperties polarisDiscoveryProperties, SDKContext context, - StaticMetadataManager staticMetadataManager, @Nullable InstanceMetadataProvider instanceMetadataProvider) { + StaticMetadataManager staticMetadataManager) { return new PolarisRegistration(discoveryPropertiesAutoConfiguration, - polarisDiscoveryProperties, context, staticMetadataManager, instanceMetadataProvider); + polarisDiscoveryProperties, context, staticMetadataManager); } @Bean diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/DiscoveryPropertiesAutoConfigurationTest.java b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/DiscoveryPropertiesAutoConfigurationTest.java index b75d16d93..8f89a8313 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/DiscoveryPropertiesAutoConfigurationTest.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/DiscoveryPropertiesAutoConfigurationTest.java @@ -17,7 +17,7 @@ package com.tencent.cloud.polaris; -import com.tencent.cloud.polaris.context.PolarisContextAutoConfiguration; +import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; import com.tencent.cloud.polaris.discovery.PolarisDiscoveryHandler; import com.tencent.cloud.polaris.extend.consul.ConsulContextProperties; import com.tencent.polaris.api.core.ConsumerAPI; diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/DiscoveryPropertiesBootstrapAutoConfigurationTest.java b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/DiscoveryPropertiesBootstrapAutoConfigurationTest.java index 729c0a30a..3ef145d0e 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/DiscoveryPropertiesBootstrapAutoConfigurationTest.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/DiscoveryPropertiesBootstrapAutoConfigurationTest.java @@ -17,7 +17,7 @@ package com.tencent.cloud.polaris; -import com.tencent.cloud.polaris.context.PolarisContextAutoConfiguration; +import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; import org.junit.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryAutoConfigurationTest.java b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryAutoConfigurationTest.java index cdad58bc0..644cc4b7d 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryAutoConfigurationTest.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryAutoConfigurationTest.java @@ -19,7 +19,7 @@ package com.tencent.cloud.polaris.discovery; import com.tencent.cloud.polaris.PolarisDiscoveryProperties; -import com.tencent.cloud.polaris.context.PolarisContextAutoConfiguration; +import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; import com.tencent.polaris.api.core.ConsumerAPI; import com.tencent.polaris.api.core.ProviderAPI; import com.tencent.polaris.test.mock.discovery.NamingServer; diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryClientConfigurationTest.java b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryClientConfigurationTest.java index 022377238..c98000f81 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryClientConfigurationTest.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/PolarisDiscoveryClientConfigurationTest.java @@ -17,7 +17,7 @@ package com.tencent.cloud.polaris.discovery; -import com.tencent.cloud.polaris.context.PolarisContextAutoConfiguration; +import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; import com.tencent.polaris.test.mock.discovery.NamingServer; import org.junit.AfterClass; import org.junit.BeforeClass; diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/PolarisServiceDiscoveryTest.java b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/PolarisServiceDiscoveryTest.java index 874d577b1..4b03882d1 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/PolarisServiceDiscoveryTest.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/PolarisServiceDiscoveryTest.java @@ -19,7 +19,7 @@ package com.tencent.cloud.polaris.discovery; import java.util.List; -import com.tencent.cloud.polaris.context.PolarisContextAutoConfiguration; +import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; import com.tencent.polaris.api.exception.PolarisException; import com.tencent.polaris.api.pojo.ServiceKey; import com.tencent.polaris.test.mock.discovery.NamingServer; diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/reactive/PolarisReactiveDiscoveryClientConfigurationTest.java b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/reactive/PolarisReactiveDiscoveryClientConfigurationTest.java index 527b07e22..8588c77af 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/reactive/PolarisReactiveDiscoveryClientConfigurationTest.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/discovery/reactive/PolarisReactiveDiscoveryClientConfigurationTest.java @@ -17,7 +17,7 @@ package com.tencent.cloud.polaris.discovery.reactive; -import com.tencent.cloud.polaris.context.PolarisContextAutoConfiguration; +import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; import com.tencent.cloud.polaris.discovery.PolarisDiscoveryClientConfiguration; import com.tencent.polaris.test.mock.discovery.NamingServer; import org.junit.AfterClass; diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/registry/PolarisRegistrationTest.java b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/registry/PolarisRegistrationTest.java index 11d380a75..cd32ec090 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/registry/PolarisRegistrationTest.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/registry/PolarisRegistrationTest.java @@ -78,7 +78,7 @@ public class PolarisRegistrationTest { doReturn(Collections.singletonMap("key2", "value2")).when(staticMetadataManager).getLocationMetadata(); polarisRegistration = new PolarisRegistration( - discoveryPropertiesAutoConfiguration, polarisDiscoveryProperties, polarisContext, staticMetadataManager, null); + discoveryPropertiesAutoConfiguration, polarisDiscoveryProperties, polarisContext, staticMetadataManager); } @Test diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryAutoConfigurationTest.java b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryAutoConfigurationTest.java index ede3f0387..96b6b3fe8 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryAutoConfigurationTest.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryAutoConfigurationTest.java @@ -17,7 +17,7 @@ package com.tencent.cloud.polaris.registry; -import com.tencent.cloud.polaris.context.PolarisContextAutoConfiguration; +import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; import com.tencent.cloud.polaris.discovery.PolarisDiscoveryAutoConfiguration; import com.tencent.cloud.polaris.discovery.PolarisDiscoveryClientConfiguration; import com.tencent.polaris.test.mock.discovery.NamingServer; diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryTest.java b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryTest.java index 77bdde224..d6f751d2f 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryTest.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/registry/PolarisServiceRegistryTest.java @@ -17,7 +17,7 @@ package com.tencent.cloud.polaris.registry; -import com.tencent.cloud.polaris.context.PolarisContextAutoConfiguration; +import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; import com.tencent.cloud.polaris.discovery.PolarisDiscoveryAutoConfiguration; import com.tencent.cloud.polaris.discovery.PolarisDiscoveryClientConfiguration; import com.tencent.polaris.api.pojo.ServiceKey; diff --git a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/ribbon/PolarisServerListTest.java b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/ribbon/PolarisServerListTest.java index db41fb959..e441786e6 100644 --- a/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/ribbon/PolarisServerListTest.java +++ b/spring-cloud-starter-tencent-polaris-discovery/src/test/java/com/tencent/cloud/polaris/ribbon/PolarisServerListTest.java @@ -21,7 +21,7 @@ import java.util.List; import com.netflix.client.config.IClientConfig; import com.netflix.loadbalancer.Server; -import com.tencent.cloud.polaris.context.PolarisContextAutoConfiguration; +import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; import com.tencent.cloud.polaris.discovery.PolarisDiscoveryAutoConfiguration; import com.tencent.cloud.polaris.discovery.PolarisDiscoveryClientConfiguration; import com.tencent.cloud.polaris.discovery.PolarisDiscoveryHandler; diff --git a/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitAutoConfiguration.java b/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitAutoConfiguration.java index 01dd591dc..83cc00c91 100644 --- a/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitAutoConfiguration.java +++ b/spring-cloud-starter-tencent-polaris-ratelimit/src/main/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitAutoConfiguration.java @@ -19,8 +19,8 @@ package com.tencent.cloud.polaris.ratelimit.config; import com.tencent.cloud.polaris.context.ConditionalOnPolarisEnabled; -import com.tencent.cloud.polaris.context.PolarisContextAutoConfiguration; import com.tencent.cloud.polaris.context.ServiceRuleManager; +import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; import com.tencent.cloud.polaris.ratelimit.RateLimitRuleLabelResolver; import com.tencent.cloud.polaris.ratelimit.constant.RateLimitConstant; import com.tencent.cloud.polaris.ratelimit.filter.QuotaCheckReactiveFilter; diff --git a/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitAutoConfigurationTest.java b/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitAutoConfigurationTest.java index a531d81a8..387fe510d 100644 --- a/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitAutoConfigurationTest.java +++ b/spring-cloud-starter-tencent-polaris-ratelimit/src/test/java/com/tencent/cloud/polaris/ratelimit/config/PolarisRateLimitAutoConfigurationTest.java @@ -17,7 +17,7 @@ package com.tencent.cloud.polaris.ratelimit.config; -import com.tencent.cloud.polaris.context.PolarisContextAutoConfiguration; +import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; import com.tencent.cloud.polaris.ratelimit.RateLimitRuleLabelResolver; import com.tencent.cloud.polaris.ratelimit.filter.QuotaCheckReactiveFilter; import com.tencent.cloud.polaris.ratelimit.filter.QuotaCheckServletFilter; diff --git a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/spi/RouterLabelResolver.java b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/spi/RouterLabelResolver.java index 44dbbb471..a87ca81ed 100644 --- a/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/spi/RouterLabelResolver.java +++ b/spring-cloud-starter-tencent-polaris-router/src/main/java/com/tencent/cloud/polaris/router/spi/RouterLabelResolver.java @@ -18,6 +18,7 @@ package com.tencent.cloud.polaris.router.spi; +import java.util.Collections; import java.util.Map; import feign.RequestTemplate; @@ -38,7 +39,9 @@ public interface RouterLabelResolver extends Ordered { * @param requestTemplate the feign request. * @return resolved labels */ - Map resolve(RequestTemplate requestTemplate); + default Map resolve(RequestTemplate requestTemplate) { + return Collections.emptyMap(); + } /** * resolve labels from rest template request. @@ -46,7 +49,9 @@ public interface RouterLabelResolver extends Ordered { * @param body the rest template request body. * @return resolved labels */ - Map resolve(HttpRequest request, byte[] body); + default Map resolve(HttpRequest request, byte[] body) { + return Collections.emptyMap(); + } /** @@ -54,5 +59,7 @@ public interface RouterLabelResolver extends Ordered { * @param exchange the server web exchange. * @return resolved labels */ - Map resolve(ServerWebExchange exchange); + default Map resolve(ServerWebExchange exchange) { + return Collections.emptyMap(); + } } diff --git a/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/StaticMetadataManager.java b/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/StaticMetadataManager.java index 575775bf7..5d4143b73 100644 --- a/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/StaticMetadataManager.java +++ b/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/StaticMetadataManager.java @@ -22,14 +22,18 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Set; import com.tencent.cloud.common.metadata.config.MetadataLocalProperties; +import com.tencent.cloud.common.spi.InstanceMetadataProvider; import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.util.CollectionUtils; + /** - * manage metadata from env/config file. + * manage metadata from env/config file/custom spi. * *@author lepdou 2022-05-20 */ @@ -60,17 +64,26 @@ public class StaticMetadataManager { private Map envTransitiveMetadata; private Map configMetadata; private Map configTransitiveMetadata; + private Map customSPIMetadata; + private Map customSPITransitiveMetadata; + private Map mergedStaticMetadata; private Map mergedStaticTransitiveMetadata; private String zone; private String region; private String campus; - public StaticMetadataManager(MetadataLocalProperties metadataLocalProperties) { + public StaticMetadataManager(MetadataLocalProperties metadataLocalProperties, + InstanceMetadataProvider instanceMetadataProvider) { parseConfigMetadata(metadataLocalProperties); + parseEnvMetadata(); + + parseCustomMetadata(instanceMetadataProvider); + + parseLocationMetadata(metadataLocalProperties, instanceMetadataProvider); + merge(); - parseLocationMetadata(); LOGGER.info("[SCT] Loaded static metadata info. {}", this); } @@ -125,26 +138,89 @@ public class StaticMetadataManager { configMetadata = Collections.unmodifiableMap(allMetadata); } + private void parseCustomMetadata(InstanceMetadataProvider instanceMetadataProvider) { + if (instanceMetadataProvider == null) { + customSPIMetadata = Collections.emptyMap(); + customSPITransitiveMetadata = Collections.emptyMap(); + return; + } + + // resolve all metadata + Map allMetadata = instanceMetadataProvider.getMetadata(); + if (allMetadata == null) { + customSPIMetadata = Collections.emptyMap(); + } + else { + customSPIMetadata = Collections.unmodifiableMap(allMetadata); + } + + // resolve transitive metadata + Set transitiveKeys = instanceMetadataProvider.getTransitiveMetadataKeys(); + Map transitiveMetadata = new HashMap<>(); + if (!CollectionUtils.isEmpty(transitiveKeys)) { + for (String key : transitiveKeys) { + if (customSPIMetadata.containsKey(key)) { + transitiveMetadata.put(key, customSPIMetadata.get(key)); + } + } + } + customSPITransitiveMetadata = Collections.unmodifiableMap(transitiveMetadata); + } + private void merge() { - // env priority is bigger than config + // the priority is : custom > env > config Map mergedMetadataResult = new HashMap<>(); mergedMetadataResult.putAll(configMetadata); mergedMetadataResult.putAll(envMetadata); + mergedMetadataResult.putAll(customSPIMetadata); + // set location info as metadata + mergedMetadataResult.putAll(getLocationMetadata()); this.mergedStaticMetadata = Collections.unmodifiableMap(mergedMetadataResult); Map mergedTransitiveMetadataResult = new HashMap<>(); mergedTransitiveMetadataResult.putAll(configTransitiveMetadata); mergedTransitiveMetadataResult.putAll(envTransitiveMetadata); + mergedTransitiveMetadataResult.putAll(customSPITransitiveMetadata); this.mergedStaticTransitiveMetadata = Collections.unmodifiableMap(mergedTransitiveMetadataResult); } - private void parseLocationMetadata() { - zone = System.getenv(ENV_METADATA_ZONE); - region = System.getenv(ENV_METADATA_REGION); - campus = System.getenv(ENV_METADATA_CAMPUS); + private void parseLocationMetadata(MetadataLocalProperties metadataLocalProperties, + InstanceMetadataProvider instanceMetadataProvider) { + // resolve zone info + if (instanceMetadataProvider != null) { + zone = instanceMetadataProvider.getZone(); + } + if (StringUtils.isBlank(zone)) { + zone = System.getenv(ENV_METADATA_ZONE); + } + if (StringUtils.isBlank(zone)) { + zone = metadataLocalProperties.getContent().get(LOCATION_KEY_ZONE); + } + + // resolve region info + if (instanceMetadataProvider != null) { + region = instanceMetadataProvider.getRegion(); + } + if (StringUtils.isBlank(region)) { + region = System.getenv(ENV_METADATA_REGION); + } + if (StringUtils.isBlank(region)) { + region = metadataLocalProperties.getContent().get(LOCATION_KEY_REGION); + } + + // resolve campus info + if (instanceMetadataProvider != null) { + campus = instanceMetadataProvider.getCampus(); + } + if (StringUtils.isBlank(campus)) { + campus = System.getenv(ENV_METADATA_CAMPUS); + } + if (StringUtils.isBlank(campus)) { + campus = metadataLocalProperties.getContent().get(LOCATION_KEY_CAMPUS); + } } public Map getAllEnvMetadata() { @@ -163,6 +239,14 @@ public class StaticMetadataManager { return configTransitiveMetadata; } + public Map getAllCustomMetadata() { + return customSPIMetadata; + } + + public Map getCustomSPITransitiveMetadata() { + return customSPITransitiveMetadata; + } + public Map getMergedStaticMetadata() { return mergedStaticMetadata; } @@ -204,6 +288,8 @@ public class StaticMetadataManager { ", envTransitiveMetadata=" + envTransitiveMetadata + ", configMetadata=" + configMetadata + ", configTransitiveMetadata=" + configTransitiveMetadata + + ", customSPIMetadata=" + customSPIMetadata + + ", customSPITransitiveMetadata=" + customSPITransitiveMetadata + ", mergedStaticMetadata=" + mergedStaticMetadata + ", mergedStaticTransitiveMetadata=" + mergedStaticTransitiveMetadata + ", zone='" + zone + '\'' + diff --git a/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/config/MetadataAutoConfiguration.java b/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/config/MetadataAutoConfiguration.java index 5bcc0fd34..0271297ea 100644 --- a/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/config/MetadataAutoConfiguration.java +++ b/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/metadata/config/MetadataAutoConfiguration.java @@ -20,11 +20,13 @@ package com.tencent.cloud.common.metadata.config; import com.tencent.cloud.common.metadata.StaticMetadataManager; import com.tencent.cloud.common.metadata.filter.gateway.MetadataFirstScgFilter; +import com.tencent.cloud.common.spi.InstanceMetadataProvider; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.lang.Nullable; /** * Metadata auto configuration. @@ -44,8 +46,9 @@ public class MetadataAutoConfiguration { } @Bean - public StaticMetadataManager metadataManager(MetadataLocalProperties metadataLocalProperties) { - return new StaticMetadataManager(metadataLocalProperties); + public StaticMetadataManager metadataManager(MetadataLocalProperties metadataLocalProperties, + @Nullable InstanceMetadataProvider instanceMetadataProvider) { + return new StaticMetadataManager(metadataLocalProperties, instanceMetadataProvider); } /** diff --git a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/spi/InstanceMetadataProvider.java b/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/spi/InstanceMetadataProvider.java similarity index 73% rename from spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/spi/InstanceMetadataProvider.java rename to spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/spi/InstanceMetadataProvider.java index 6b2b73a6b..dd5f03e16 100644 --- a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/spi/InstanceMetadataProvider.java +++ b/spring-cloud-tencent-commons/src/main/java/com/tencent/cloud/common/spi/InstanceMetadataProvider.java @@ -16,9 +16,11 @@ * */ -package com.tencent.cloud.polaris.context.spi; +package com.tencent.cloud.common.spi; +import java.util.Collections; import java.util.Map; +import java.util.Set; /** * @@ -30,26 +32,41 @@ public interface InstanceMetadataProvider { /** * @return the metadata of instance. */ - Map getMetadata(); + default Map getMetadata() { + return Collections.emptyMap(); + } + + /** + * @return the keys of transitive metadata. + */ + default Set getTransitiveMetadataKeys() { + return Collections.emptySet(); + } /** * The region of current instance. * * @return the region info. */ - String getRegion(); + default String getRegion() { + return ""; + } /** * The zone of current instance. * * @return the zone info. */ - String getZone(); + default String getZone() { + return ""; + } /** * The campus/datacenter of current instance. * * @return the campus or datacenter info. */ - String getCampus(); + default String getCampus() { + return ""; + } } diff --git a/spring-cloud-tencent-commons/src/test/java/com/tencent/cloud/common/metadata/StaticMetadataManagerTest.java b/spring-cloud-tencent-commons/src/test/java/com/tencent/cloud/common/metadata/StaticMetadataManagerTest.java new file mode 100644 index 000000000..3c8ae438d --- /dev/null +++ b/spring-cloud-tencent-commons/src/test/java/com/tencent/cloud/common/metadata/StaticMetadataManagerTest.java @@ -0,0 +1,186 @@ +/* + * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * + * Licensed under the BSD 3-Clause License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://opensource.org/licenses/BSD-3-Clause + * + * Unless required by applicable law or agreed to in writing, software distributed + * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + */ + +package com.tencent.cloud.common.metadata; + +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +import com.tencent.cloud.common.metadata.config.MetadataLocalProperties; +import com.tencent.cloud.common.spi.InstanceMetadataProvider; +import org.junit.Assert; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +import org.springframework.util.CollectionUtils; + +import static org.mockito.Mockito.when; + + +/** + * test for {@link StaticMetadataManager} + *@author lepdou 2022-06-27 + */ +@RunWith(MockitoJUnitRunner.class) +public class StaticMetadataManagerTest { + + @Mock + private MetadataLocalProperties metadataLocalProperties; + + @Test + public void testParseConfigMetadata() { + Map content = new HashMap<>(); + content.put("k1", "v1"); + content.put("k2", "v22"); + content.put("zone", "zone1"); + content.put("region", "region1"); + + when(metadataLocalProperties.getContent()).thenReturn(content); + when(metadataLocalProperties.getTransitive()).thenReturn(Collections.singletonList("k1")); + + StaticMetadataManager metadataManager = new StaticMetadataManager(metadataLocalProperties, null); + + Map metadata = metadataManager.getAllConfigMetadata(); + Assert.assertEquals(4, metadata.size()); + Assert.assertEquals("v1", metadata.get("k1")); + Assert.assertEquals("v22", metadata.get("k2")); + + Map transitiveMetadata = metadataManager.getConfigTransitiveMetadata(); + Assert.assertEquals(1, transitiveMetadata.size()); + Assert.assertEquals("v1", transitiveMetadata.get("k1")); + + Assert.assertEquals("zone1", metadataManager.getZone()); + Assert.assertEquals("region1", metadataManager.getRegion()); + + Map locationInfo = metadataManager.getLocationMetadata(); + Assert.assertEquals("zone1", locationInfo.get("zone")); + Assert.assertEquals("region1", locationInfo.get("region")); + } + + @Test + public void testCustomSPIMetadata() { + Map content = new HashMap<>(); + content.put("k1", "v1"); + content.put("k2", "v2"); + + when(metadataLocalProperties.getContent()).thenReturn(content); + when(metadataLocalProperties.getTransitive()).thenReturn(Collections.singletonList("k1")); + + StaticMetadataManager metadataManager = new StaticMetadataManager(metadataLocalProperties, + new MockedMetadataProvider()); + + Map metadata = metadataManager.getAllCustomMetadata(); + Assert.assertEquals(3, metadata.size()); + Assert.assertEquals("v1", metadata.get("k1")); + Assert.assertEquals("v22", metadata.get("k2")); + Assert.assertEquals("v33", metadata.get("k3")); + + Map transitiveMetadata = metadataManager.getCustomSPITransitiveMetadata(); + Assert.assertEquals(1, transitiveMetadata.size()); + Assert.assertEquals("v22", metadata.get("k2")); + + Assert.assertEquals("zone2", metadataManager.getZone()); + Assert.assertEquals("region1", metadataManager.getRegion()); + + Map locationInfo = metadataManager.getLocationMetadata(); + Assert.assertEquals("zone2", locationInfo.get("zone")); + Assert.assertEquals("region1", locationInfo.get("region")); + } + + @Test + public void testMergedMetadata() { + Map content = new HashMap<>(); + content.put("k1", "v1"); + content.put("k2", "v2"); + content.put("zone", "zone1"); + content.put("region", "region1"); + content.put("campus", "campus1"); + + when(metadataLocalProperties.getContent()).thenReturn(content); + when(metadataLocalProperties.getTransitive()).thenReturn(Collections.singletonList("k1")); + + StaticMetadataManager metadataManager = new StaticMetadataManager(metadataLocalProperties, + new MockedMetadataProvider()); + + Map metadata = metadataManager.getMergedStaticMetadata(); + Assert.assertEquals(6, metadata.size()); + Assert.assertEquals("v1", metadata.get("k1")); + Assert.assertEquals("v22", metadata.get("k2")); + Assert.assertEquals("v33", metadata.get("k3")); + Assert.assertEquals("zone2", metadata.get("zone")); + Assert.assertEquals("region1", metadata.get("region")); + Assert.assertEquals("campus1", metadata.get("campus")); + + Map transitiveMetadata = metadataManager.getMergedStaticTransitiveMetadata(); + Assert.assertEquals(2, transitiveMetadata.size()); + Assert.assertEquals("v1", metadata.get("k1")); + Assert.assertEquals("v22", metadata.get("k2")); + + Assert.assertEquals("zone2", metadataManager.getZone()); + Assert.assertEquals("region1", metadataManager.getRegion()); + + Assert.assertTrue(CollectionUtils.isEmpty(metadataManager.getAllEnvMetadata())); + Assert.assertTrue(CollectionUtils.isEmpty(metadataManager.getEnvTransitiveMetadata())); + + Map locationInfo = metadataManager.getLocationMetadata(); + Assert.assertEquals("zone2", locationInfo.get("zone")); + Assert.assertEquals("region1", locationInfo.get("region")); + Assert.assertEquals("campus1", locationInfo.get("campus")); + + } + + static class MockedMetadataProvider implements InstanceMetadataProvider { + + @Override + public Map getMetadata() { + Map metadata = new HashMap<>(); + metadata.put("k1", "v1"); + metadata.put("k2", "v22"); + metadata.put("k3", "v33"); + return metadata; + } + + @Override + public Set getTransitiveMetadataKeys() { + Set transitiveKeys = new HashSet<>(); + transitiveKeys.add("k2"); + return transitiveKeys; + } + + @Override + public String getRegion() { + return "region1"; + } + + @Override + public String getZone() { + return "zone2"; + } + + @Override + public String getCampus() { + return null; + } + } + +} diff --git a/spring-cloud-tencent-examples/polaris-discovery-example/discovery-callee-service/src/main/java/com/tencent/cloud/polaris/discovery/service/callee/CustomMetadata.java b/spring-cloud-tencent-examples/polaris-discovery-example/discovery-callee-service/src/main/java/com/tencent/cloud/polaris/discovery/service/callee/CustomMetadata.java index efe3f8167..9504e9758 100644 --- a/spring-cloud-tencent-examples/polaris-discovery-example/discovery-callee-service/src/main/java/com/tencent/cloud/polaris/discovery/service/callee/CustomMetadata.java +++ b/spring-cloud-tencent-examples/polaris-discovery-example/discovery-callee-service/src/main/java/com/tencent/cloud/polaris/discovery/service/callee/CustomMetadata.java @@ -21,7 +21,7 @@ package com.tencent.cloud.polaris.discovery.service.callee; import java.util.HashMap; import java.util.Map; -import com.tencent.cloud.polaris.context.spi.InstanceMetadataProvider; +import com.tencent.cloud.common.spi.InstanceMetadataProvider; import org.springframework.stereotype.Component; @@ -39,18 +39,8 @@ public class CustomMetadata implements InstanceMetadataProvider { return metadata; } - @Override - public String getRegion() { - return "shanghai"; - } - @Override public String getZone() { - return null; - } - - @Override - public String getCampus() { - return null; + return "shanghai-zone-1"; } } diff --git a/spring-cloud-tencent-examples/polaris-discovery-example/discovery-callee-service/src/main/resources/bootstrap.yml b/spring-cloud-tencent-examples/polaris-discovery-example/discovery-callee-service/src/main/resources/bootstrap.yml index 5461bcc10..75b4e33d9 100644 --- a/spring-cloud-tencent-examples/polaris-discovery-example/discovery-callee-service/src/main/resources/bootstrap.yml +++ b/spring-cloud-tencent-examples/polaris-discovery-example/discovery-callee-service/src/main/resources/bootstrap.yml @@ -11,6 +11,10 @@ spring: discovery: enabled: true register: true + tencent: + metadata: + content: + region: shanghai # consul: # port: 8500 # host: 127.0.0.1 diff --git a/spring-cloud-tencent-examples/polaris-router-example/router-caller-service/src/main/java/com/tencent/cloud/polaris/router/example/CustomRouterLabelResolver.java b/spring-cloud-tencent-examples/polaris-router-example/router-caller-service/src/main/java/com/tencent/cloud/polaris/router/example/CustomRouterLabelResolver.java index ea8c2ceb0..815b2baff 100644 --- a/spring-cloud-tencent-examples/polaris-router-example/router-caller-service/src/main/java/com/tencent/cloud/polaris/router/example/CustomRouterLabelResolver.java +++ b/spring-cloud-tencent-examples/polaris-router-example/router-caller-service/src/main/java/com/tencent/cloud/polaris/router/example/CustomRouterLabelResolver.java @@ -27,7 +27,6 @@ import feign.RequestTemplate; import org.springframework.http.HttpRequest; import org.springframework.stereotype.Component; -import org.springframework.web.server.ServerWebExchange; /** * @@ -59,10 +58,6 @@ public class CustomRouterLabelResolver implements RouterLabelResolver { return labels; } - @Override - public Map resolve(ServerWebExchange exchange) { - return null; - } @Override public int getOrder() { diff --git a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/ModifyAddress.java b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/ModifyAddress.java index 565849774..b57cbfe91 100644 --- a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/ModifyAddress.java +++ b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/ModifyAddress.java @@ -22,6 +22,7 @@ import java.util.List; import com.tencent.cloud.common.constant.ContextConstant; import com.tencent.cloud.common.util.AddressUtils; +import com.tencent.cloud.polaris.context.config.PolarisContextProperties; import com.tencent.polaris.factory.config.ConfigurationImpl; import org.apache.commons.lang.StringUtils; diff --git a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PostInitPolarisSDKContext.java b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PostInitPolarisSDKContext.java new file mode 100644 index 000000000..014ca5ba2 --- /dev/null +++ b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PostInitPolarisSDKContext.java @@ -0,0 +1,50 @@ +/* + * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * + * Licensed under the BSD 3-Clause License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://opensource.org/licenses/BSD-3-Clause + * + * Unless required by applicable law or agreed to in writing, software distributed + * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + */ + +package com.tencent.cloud.polaris.context; + +import com.tencent.cloud.common.metadata.StaticMetadataManager; +import com.tencent.polaris.api.plugin.common.ValueContext; +import com.tencent.polaris.api.plugin.route.LocationLevel; +import com.tencent.polaris.client.api.SDKContext; +import org.apache.commons.lang.StringUtils; + +/** + * After all configurations are loaded, post-initialize SDKContext. + *@author lepdou 2022-06-28 + */ +public class PostInitPolarisSDKContext { + + public PostInitPolarisSDKContext(SDKContext sdkContext, StaticMetadataManager staticMetadataManager) { + // set instance's location info + String region = staticMetadataManager.getRegion(); + String zone = staticMetadataManager.getZone(); + String campus = staticMetadataManager.getCampus(); + + ValueContext valueContext = sdkContext.getValueContext(); + if (StringUtils.isNotBlank(region)) { + valueContext.setValue(LocationLevel.region.name(), region); + } + if (StringUtils.isNotBlank(zone)) { + valueContext.setValue(LocationLevel.zone.name(), zone); + } + if (StringUtils.isNotBlank(campus)) { + valueContext.setValue(LocationLevel.campus.name(), campus); + } + } +} diff --git a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisContextAutoConfiguration.java b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/PolarisContextAutoConfiguration.java similarity index 58% rename from spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisContextAutoConfiguration.java rename to spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/PolarisContextAutoConfiguration.java index 5ead163dd..eb6238253 100644 --- a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisContextAutoConfiguration.java +++ b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/PolarisContextAutoConfiguration.java @@ -16,17 +16,14 @@ * */ -package com.tencent.cloud.polaris.context; +package com.tencent.cloud.polaris.context.config; -import com.tencent.cloud.common.metadata.StaticMetadataManager; -import com.tencent.cloud.common.metadata.config.MetadataAutoConfiguration; +import com.tencent.cloud.polaris.context.ConditionalOnPolarisEnabled; +import com.tencent.cloud.polaris.context.ModifyAddress; +import com.tencent.cloud.polaris.context.ServiceRuleManager; import com.tencent.polaris.api.exception.PolarisException; -import com.tencent.polaris.api.plugin.common.ValueContext; -import com.tencent.polaris.api.plugin.route.LocationLevel; import com.tencent.polaris.client.api.SDKContext; -import org.apache.commons.lang.StringUtils; -import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; @@ -38,32 +35,13 @@ import org.springframework.context.annotation.Bean; */ @ConditionalOnPolarisEnabled @EnableConfigurationProperties({PolarisContextProperties.class}) -@ImportAutoConfiguration(MetadataAutoConfiguration.class) public class PolarisContextAutoConfiguration { @Bean(name = "polarisContext", initMethod = "init", destroyMethod = "destroy") @ConditionalOnMissingBean - public SDKContext polarisContext(PolarisContextProperties properties, StaticMetadataManager staticMetadataManager) + public SDKContext polarisContext(PolarisContextProperties properties) throws PolarisException { - SDKContext sdkContext = SDKContext.initContextByConfig(properties.configuration()); - - // init current instance location info from environment - ValueContext valueContext = sdkContext.getValueContext(); - String region = staticMetadataManager.getRegion(); - String zone = staticMetadataManager.getZone(); - String campus = staticMetadataManager.getCampus(); - - if (StringUtils.isNotBlank(region)) { - valueContext.setValue(LocationLevel.region.name(), region); - } - if (StringUtils.isNotBlank(zone)) { - valueContext.setValue(LocationLevel.zone.name(), zone); - } - if (StringUtils.isNotBlank(campus)) { - valueContext.setValue(LocationLevel.campus.name(), campus); - } - - return sdkContext; + return SDKContext.initContextByConfig(properties.configuration()); } @Bean @@ -73,6 +51,7 @@ public class PolarisContextAutoConfiguration { } @Bean + @ConditionalOnMissingBean public ServiceRuleManager serviceRuleManager(SDKContext sdkContext) { return new ServiceRuleManager(sdkContext); } diff --git a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisContextBootstrapAutoConfiguration.java b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/PolarisContextBootstrapAutoConfiguration.java similarity index 95% rename from spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisContextBootstrapAutoConfiguration.java rename to spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/PolarisContextBootstrapAutoConfiguration.java index c5b4efbd9..75d11f8b5 100644 --- a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisContextBootstrapAutoConfiguration.java +++ b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/PolarisContextBootstrapAutoConfiguration.java @@ -16,7 +16,7 @@ * */ -package com.tencent.cloud.polaris.context; +package com.tencent.cloud.polaris.context.config; import com.tencent.polaris.client.api.SDKContext; diff --git a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/PolarisContextPostConfiguration.java b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/PolarisContextPostConfiguration.java new file mode 100644 index 000000000..f55397462 --- /dev/null +++ b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/PolarisContextPostConfiguration.java @@ -0,0 +1,39 @@ +/* + * Tencent is pleased to support the open source community by making Spring Cloud Tencent available. + * + * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved. + * + * Licensed under the BSD 3-Clause License (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://opensource.org/licenses/BSD-3-Clause + * + * Unless required by applicable law or agreed to in writing, software distributed + * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the + * specific language governing permissions and limitations under the License. + * + */ + +package com.tencent.cloud.polaris.context.config; + +import com.tencent.cloud.common.metadata.StaticMetadataManager; +import com.tencent.cloud.polaris.context.PostInitPolarisSDKContext; +import com.tencent.polaris.client.api.SDKContext; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * Post-initialization operations after the application initialization phase is completed. + *@author lepdou 2022-06-28 + */ +@Configuration +public class PolarisContextPostConfiguration { + + @Bean + public PostInitPolarisSDKContext postInitPolarisSDKContext(SDKContext sdkContext, StaticMetadataManager staticMetadataManager) { + return new PostInitPolarisSDKContext(sdkContext, staticMetadataManager); + } +} diff --git a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisContextProperties.java b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/PolarisContextProperties.java similarity index 96% rename from spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisContextProperties.java rename to spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/PolarisContextProperties.java index 3df1731b5..87a076e21 100644 --- a/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/PolarisContextProperties.java +++ b/spring-cloud-tencent-polaris-context/src/main/java/com/tencent/cloud/polaris/context/config/PolarisContextProperties.java @@ -16,13 +16,14 @@ * */ -package com.tencent.cloud.polaris.context; +package com.tencent.cloud.polaris.context.config; import java.util.Collection; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; +import com.tencent.cloud.polaris.context.PolarisConfigModifier; import com.tencent.polaris.api.config.ConfigProvider; import com.tencent.polaris.api.config.Configuration; import com.tencent.polaris.factory.ConfigAPIFactory; diff --git a/spring-cloud-tencent-polaris-context/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-cloud-tencent-polaris-context/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 52c48aa8b..7bb1d6596 100644 --- a/spring-cloud-tencent-polaris-context/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-cloud-tencent-polaris-context/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -2,8 +2,8 @@ "groups": [ { "name": "spring.cloud.polaris", - "type": "com.tencent.cloud.polaris.context.PolarisContextProperties", - "sourceType": "com.tencent.cloud.polaris.context.PolarisContextProperties" + "type": "com.tencent.cloud.polaris.context.config.PolarisContextProperties", + "sourceType": "com.tencent.cloud.polaris.context.config.PolarisContextProperties" } ], "properties": [ @@ -11,28 +11,28 @@ "name": "spring.cloud.polaris.address", "type": "java.lang.String", "description": "polaris server address list that can be separated by \",\"", - "sourceType": "com.tencent.cloud.polaris.context.PolarisContextProperties" + "sourceType": "com.tencent.cloud.polaris.context.config.PolarisContextProperties" }, { "name": "spring.cloud.polaris.namespace", "type": "java.lang.String", "description": "polaris namespace", "default": "default", - "sourceType": "com.tencent.cloud.polaris.context.PolarisContextProperties" + "sourceType": "com.tencent.cloud.polaris.context.config.PolarisContextProperties" }, { "name": "spring.cloud.polaris.service", "type": "java.lang.String", "description": "polaris service name", "default": "${spring.application.name}", - "sourceType": "com.tencent.cloud.polaris.context.PolarisContextProperties" + "sourceType": "com.tencent.cloud.polaris.context.config.PolarisContextProperties" }, { "name": "spring.cloud.polaris.enabled", "type": "java.lang.Boolean", "description": "polaris enabled", "default": "true", - "sourceType": "com.tencent.cloud.polaris.context.PolarisContextProperties" + "sourceType": "com.tencent.cloud.polaris.context.config.PolarisContextProperties" }, { "name": "spring.cloud.polaris.local-ip-address", diff --git a/spring-cloud-tencent-polaris-context/src/main/resources/META-INF/spring.factories b/spring-cloud-tencent-polaris-context/src/main/resources/META-INF/spring.factories index b53316b9a..723fc1d78 100644 --- a/spring-cloud-tencent-polaris-context/src/main/resources/META-INF/spring.factories +++ b/spring-cloud-tencent-polaris-context/src/main/resources/META-INF/spring.factories @@ -1,4 +1,5 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ - com.tencent.cloud.polaris.context.PolarisContextAutoConfiguration + com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration,\ + com.tencent.cloud.polaris.context.config.PolarisContextPostConfiguration org.springframework.cloud.bootstrap.BootstrapConfiguration=\ - com.tencent.cloud.polaris.context.PolarisContextBootstrapAutoConfiguration + com.tencent.cloud.polaris.context.config.PolarisContextBootstrapAutoConfiguration diff --git a/spring-cloud-tencent-polaris-context/src/test/java/com/tencent/cloud/polaris/context/PolarisContextAutoConfigurationTest.java b/spring-cloud-tencent-polaris-context/src/test/java/com/tencent/cloud/polaris/context/PolarisContextAutoConfigurationTest.java index 0f8ca746d..2a926cc12 100644 --- a/spring-cloud-tencent-polaris-context/src/test/java/com/tencent/cloud/polaris/context/PolarisContextAutoConfigurationTest.java +++ b/spring-cloud-tencent-polaris-context/src/test/java/com/tencent/cloud/polaris/context/PolarisContextAutoConfigurationTest.java @@ -17,6 +17,7 @@ package com.tencent.cloud.polaris.context; +import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; import com.tencent.polaris.client.api.SDKContext; import org.junit.Assert; import org.junit.Test; diff --git a/spring-cloud-tencent-polaris-context/src/test/java/com/tencent/cloud/polaris/context/PolarisContextGetHostTest.java b/spring-cloud-tencent-polaris-context/src/test/java/com/tencent/cloud/polaris/context/PolarisContextGetHostTest.java index 3069c5aa9..9985113df 100644 --- a/spring-cloud-tencent-polaris-context/src/test/java/com/tencent/cloud/polaris/context/PolarisContextGetHostTest.java +++ b/spring-cloud-tencent-polaris-context/src/test/java/com/tencent/cloud/polaris/context/PolarisContextGetHostTest.java @@ -17,6 +17,8 @@ package com.tencent.cloud.polaris.context; +import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; +import com.tencent.cloud.polaris.context.config.PolarisContextProperties; import com.tencent.polaris.client.api.SDKContext; import org.junit.Assert; import org.junit.Test; diff --git a/spring-cloud-tencent-polaris-loadbalancer/src/test/java/com/tencent/cloud/polaris/loadbalancer/config/PolarisLoadBalancerAutoConfigurationTest.java b/spring-cloud-tencent-polaris-loadbalancer/src/test/java/com/tencent/cloud/polaris/loadbalancer/config/PolarisLoadBalancerAutoConfigurationTest.java index 1c89de2d6..eab96ee76 100644 --- a/spring-cloud-tencent-polaris-loadbalancer/src/test/java/com/tencent/cloud/polaris/loadbalancer/config/PolarisLoadBalancerAutoConfigurationTest.java +++ b/spring-cloud-tencent-polaris-loadbalancer/src/test/java/com/tencent/cloud/polaris/loadbalancer/config/PolarisLoadBalancerAutoConfigurationTest.java @@ -17,7 +17,7 @@ package com.tencent.cloud.polaris.loadbalancer.config; -import com.tencent.cloud.polaris.context.PolarisContextAutoConfiguration; +import com.tencent.cloud.polaris.context.config.PolarisContextAutoConfiguration; import com.tencent.polaris.router.api.core.RouterAPI; import org.junit.Test;