This is an automated email from the ASF dual-hosted git repository.
chenzhida pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push:
new e040efe92 refactor(loadbalance): Refactor load balancing filter
enabling logic (#4709)
e040efe92 is described below
commit e040efe9239fa68fe1f2e7e6820ad9617c706d5c
Author: SweetWuXiaoMei <[email protected]>
AuthorDate: Fri Feb 7 16:30:21 2025 +0800
refactor(loadbalance): Refactor load balancing filter enabling logic (#4709)
* refactor(loadbalance): 重构负载均衡过滤器启用逻辑
-优化了
InstancePropertyDiscoveryFilter、PriorityInstancePropertyDiscoveryFilter 和
ZoneAwareDiscoveryFilter 的启用逻辑
- 使用 DynamicProperties 替代 Environment 获取配置属性
- 添加了对配置属性的缓存,避免重复获取
- 调整了配置属性的默认值
* test(foundation-registry): 重构测试用例中环境属性的获取
- 引入 DynamicProperties 类以替代 Environment 类
- 使用动态属性获取替代静态属性获取
- 增加对属性默认值的处理
* refactor(registry): 重构发现过滤器中的属性获取方式
- 将 Environment 和 DynamicProperties 的使用方式统一为 DynamicProperties
-优化了属性获取逻辑,使用动态属性替换静态属性
- 移除了冗余代码,提高了代码的可读性和可维护性
* refactor(loadbalance): 使用 DynamicProperties 替代 Environment
- 在 ZoneAwareDiscoveryFilter 中引入 DynamicProperties以替代 Environment
- 更新相关测试用例,使用 DynamicProperties 进行配置模拟
- 移除 TestDiscoveryTree 中的冗余代码
- 优化测试用例中的断言逻辑
* refactor(loadbalance): 重构优先级实例属性发现过滤器
- 移除了 PriorityInstancePropertyDiscoveryFilter 类中的冗余代码
- 更新了单元测试,使用 DynamicProperties替代 Environment 获取配置属性
- 优化了测试代码,提高了可维护性和可读性
* refactor(loadbalance): 优化负载均衡过滤器配置
- 将字符串键值对配置改为静态常量
- 更新配置获取方式,使用静态常量作为键
- 优化配置类结构,提高可读性和维护性
* fix(config-etcd): 修复 EtcdConfig 默认连接字符串并统一命名风格
- 将 EtcdConfig 类中的属性名称从连字符风格改为驼峰风格
- 修改默认连接字符串从 ZooKeeper 地址改为 Etcd 默认地址
- 在 demo-etcd 的 pom 文件中添加新的配置属性
---
demo/demo-etcd/consumer/pom.xml | 4 +++
.../consumer/src/main/resources/application.yml | 3 ++
demo/demo-etcd/test-client/pom.xml | 1 +
.../apache/servicecomb/config/etcd/EtcdConfig.java | 14 ++++----
.../servicecomb/config/DynamicPropertiesImpl.java | 14 ++++----
.../discovery/AbstractDiscoveryFilter.java | 10 +++---
.../discovery/InstanceStatusDiscoveryFilter.java | 10 +++++-
.../registry/discovery/TestDiscoveryTree.java | 11 +++---
.../servicecomb/loadbalance/Configuration.java | 1 -
.../filter/InstancePropertyDiscoveryFilter.java | 14 ++++++--
.../PriorityInstancePropertyDiscoveryFilter.java | 21 +++++++----
.../filter/ZoneAwareDiscoveryFilter.java | 32 +++++++++++++----
.../loadbalance/TestLoadBalanceFilter2.java | 36 +++++++++++++------
...riorityInstancePropertyDiscoveryFilterTest.java | 9 +++--
.../filter/TestZoneAwareDiscoveryFilter.java | 41 ++++++++++++++--------
15 files changed, 154 insertions(+), 67 deletions(-)
diff --git a/demo/demo-etcd/consumer/pom.xml b/demo/demo-etcd/consumer/pom.xml
index 5f79529d6..0c9ed7794 100644
--- a/demo/demo-etcd/consumer/pom.xml
+++ b/demo/demo-etcd/consumer/pom.xml
@@ -44,6 +44,10 @@
<groupId>org.apache.servicecomb</groupId>
<artifactId>registry-etcd</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.servicecomb</groupId>
+ <artifactId>config-etcd</artifactId>
+ </dependency>
</dependencies>
<build>
diff --git a/demo/demo-etcd/consumer/src/main/resources/application.yml
b/demo/demo-etcd/consumer/src/main/resources/application.yml
index a63a16518..e0db5f143 100644
--- a/demo/demo-etcd/consumer/src/main/resources/application.yml
+++ b/demo/demo-etcd/consumer/src/main/resources/application.yml
@@ -25,6 +25,9 @@ servicecomb:
registry:
etcd:
connectString: http://127.0.0.1:2379
+ config:
+ etcd:
+ connectString: http://127.0.0.1:2379
rest:
address: 0.0.0.0:9092?websocketEnabled=true
diff --git a/demo/demo-etcd/test-client/pom.xml
b/demo/demo-etcd/test-client/pom.xml
index d14d1b1c4..41a0813cf 100644
--- a/demo/demo-etcd/test-client/pom.xml
+++ b/demo/demo-etcd/test-client/pom.xml
@@ -128,6 +128,7 @@
<env>
<JAVA_OPTS>
-Dservicecomb.registry.etcd.connectString=http://etcd:2379
+
-Dservicecomb.config.etcd.connectString=http://etcd:2379
</JAVA_OPTS>
<JAR_PATH>/maven/maven/etcd-consumer-${project.version}.jar</JAR_PATH>
</env>
diff --git
a/dynamic-config/config-etcd/src/main/java/org/apache/servicecomb/config/etcd/EtcdConfig.java
b/dynamic-config/config-etcd/src/main/java/org/apache/servicecomb/config/etcd/EtcdConfig.java
index 57713eed0..ee04204c2 100644
---
a/dynamic-config/config-etcd/src/main/java/org/apache/servicecomb/config/etcd/EtcdConfig.java
+++
b/dynamic-config/config-etcd/src/main/java/org/apache/servicecomb/config/etcd/EtcdConfig.java
@@ -21,17 +21,17 @@ import org.springframework.core.env.Environment;
public class EtcdConfig {
public static final String ZOOKEEPER_DEFAULT_ENVIRONMENT = "production";
- public static final String PROPERTY_CONNECT_STRING =
"servicecomb.config.etcd.connect-string";
+ public static final String PROPERTY_CONNECT_STRING =
"servicecomb.config.etcd.connectString";
- public static final String PROPERTY_SESSION_TIMEOUT =
"servicecomb.config.etcd.session-timeout-millis";
+ public static final String PROPERTY_SESSION_TIMEOUT =
"servicecomb.config.etcd.sessionTimeoutMillis";
- public static final String PROPERTY_CONNECTION_TIMEOUT =
"servicecomb.config.etcd.connection-timeout-mills";
+ public static final String PROPERTY_CONNECTION_TIMEOUT =
"servicecomb.config.etcd.connectionTimeoutMills";
- public static final String PROPERTY_AUTH_SCHEMA =
"servicecomb.config.etcd.authentication-schema";
+ public static final String PROPERTY_AUTH_SCHEMA =
"servicecomb.config.etcd.authenticationSchema";
- public static final String PROPERTY_AUTH_INFO =
"servicecomb.config.etcd.authentication-info";
+ public static final String PROPERTY_AUTH_INFO =
"servicecomb.config.etcd.authenticationInfo";
- public static final String PROPERTY_INSTANCE_TAG =
"servicecomb.config.etcd.instance-tag";
+ public static final String PROPERTY_INSTANCE_TAG =
"servicecomb.config.etcd.instanceTag";
private final Environment environment;
@@ -40,7 +40,7 @@ public class EtcdConfig {
}
public String getConnectString() {
- return environment.getProperty(PROPERTY_CONNECT_STRING, "127.0.0.1:2181");
+ return environment.getProperty(PROPERTY_CONNECT_STRING,
"http://127.0.0.1:2379");
}
public int getSessionTimeoutMillis() {
diff --git
a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/DynamicPropertiesImpl.java
b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/DynamicPropertiesImpl.java
index 84f623d74..323e84d80 100644
---
a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/DynamicPropertiesImpl.java
+++
b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/DynamicPropertiesImpl.java
@@ -17,11 +17,11 @@
package org.apache.servicecomb.config;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Consumer;
import java.util.function.DoubleConsumer;
import java.util.function.IntConsumer;
@@ -44,17 +44,17 @@ public class DynamicPropertiesImpl implements
DynamicProperties {
}
}
- private final Map<String, Set<Holder<Consumer<String>, String>>>
stringCallbacks = new HashMap<>();
+ private final Map<String, Set<Holder<Consumer<String>, String>>>
stringCallbacks = new ConcurrentHashMap<>();
- private final Map<String, Set<Holder<IntConsumer, Integer>>> intCallbacks =
new HashMap<>();
+ private final Map<String, Set<Holder<IntConsumer, Integer>>> intCallbacks =
new ConcurrentHashMap<>();
- private final Map<String, Set<Holder<LongConsumer, Long>>> longCallbacks =
new HashMap<>();
+ private final Map<String, Set<Holder<LongConsumer, Long>>> longCallbacks =
new ConcurrentHashMap<>();
- private final Map<String, Set<Holder<DoubleConsumer, Float>>> floatCallbacks
= new HashMap<>();
+ private final Map<String, Set<Holder<DoubleConsumer, Float>>> floatCallbacks
= new ConcurrentHashMap<>();
- private final Map<String, Set<Holder<DoubleConsumer, Double>>>
doubleCallbacks = new HashMap<>();
+ private final Map<String, Set<Holder<DoubleConsumer, Double>>>
doubleCallbacks = new ConcurrentHashMap<>();
- private final Map<String, Set<Holder<Consumer<Boolean>, Boolean>>>
booleanCallbacks = new HashMap<>();
+ private final Map<String, Set<Holder<Consumer<Boolean>, Boolean>>>
booleanCallbacks = new ConcurrentHashMap<>();
private final Environment environment;
diff --git
a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/discovery/AbstractDiscoveryFilter.java
b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/discovery/AbstractDiscoveryFilter.java
index 5883ec51b..f274799c3 100644
---
a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/discovery/AbstractDiscoveryFilter.java
+++
b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/discovery/AbstractDiscoveryFilter.java
@@ -19,19 +19,21 @@ package org.apache.servicecomb.registry.discovery;
import java.util.ArrayList;
+import org.apache.servicecomb.config.DynamicProperties;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
public abstract class AbstractDiscoveryFilter implements DiscoveryFilter {
private static final Logger LOGGER =
LoggerFactory.getLogger(AbstractDiscoveryFilter.class);
- protected Environment environment;
+ protected Boolean enabled;
+
+ protected DynamicProperties dynamicProperties;
@Autowired
- public void setEnvironment(Environment environment) {
- this.environment = environment;
+ public void setDynamicProperties(DynamicProperties dynamicProperties) {
+ this.dynamicProperties = dynamicProperties;
}
@Override
diff --git
a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/discovery/InstanceStatusDiscoveryFilter.java
b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/discovery/InstanceStatusDiscoveryFilter.java
index dd27dc973..e7a4029bd 100644
---
a/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/discovery/InstanceStatusDiscoveryFilter.java
+++
b/foundations/foundation-registry/src/main/java/org/apache/servicecomb/registry/discovery/InstanceStatusDiscoveryFilter.java
@@ -32,6 +32,8 @@ public class InstanceStatusDiscoveryFilter extends
AbstractGroupDiscoveryFilter
public static final String GROUP_SIZE = "status_group_size";
+ public static final String SERVICECOMB_LOADBALANCE_FILTER_STATUS_ENABLED =
"servicecomb.loadbalance.filter.status.enabled";
+
@Override
public int getOrder() {
return -10000;
@@ -39,7 +41,13 @@ public class InstanceStatusDiscoveryFilter extends
AbstractGroupDiscoveryFilter
@Override
public boolean enabled() {
- return
environment.getProperty("servicecomb.loadbalance.filter.status.enabled",
Boolean.class, true);
+
+ if (enabled == null) {
+ enabled =
dynamicProperties.getBooleanProperty(SERVICECOMB_LOADBALANCE_FILTER_STATUS_ENABLED,
+ value -> enabled = value,
+ true);
+ }
+ return enabled;
}
@Override
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 a30b892f8..d726d1b59 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,6 +24,7 @@ import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.servicecomb.config.DynamicProperties;
import org.apache.servicecomb.foundation.common.cache.VersionedCache;
import
org.apache.servicecomb.foundation.common.exceptions.ServiceCombException;
import org.apache.servicecomb.registry.DiscoveryManager;
@@ -32,7 +33,6 @@ import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
-import org.springframework.core.env.Environment;
public class TestDiscoveryTree {
DiscoveryContext context = new DiscoveryContext();
@@ -238,11 +238,12 @@ public class TestDiscoveryTree {
DiscoveryTree discoveryTree = new DiscoveryTree(discoveryManager);
DiscoveryContext discoveryContext = new DiscoveryContext();
InstanceStatusDiscoveryFilter filter = new InstanceStatusDiscoveryFilter();
- Environment environment = Mockito.mock(Environment.class);
- Mockito.when(environment
- .getProperty("servicecomb.loadbalance.filter.status.enabled",
Boolean.class, true))
+ DynamicProperties dynamicProperties =
Mockito.mock(DynamicProperties.class);
+
Mockito.when(dynamicProperties.getBooleanProperty(Mockito.eq("servicecomb.loadbalance.filter.status.enabled"),
+ Mockito.any(),
+ Mockito.eq(true)))
.thenReturn(true);
- filter.setEnvironment(environment);
+ filter.setDynamicProperties(dynamicProperties);
discoveryTree.setDiscoveryFilters(List.of(filter));
StatefulDiscoveryInstance instance1 =
Mockito.mock(StatefulDiscoveryInstance.class);
diff --git
a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/Configuration.java
b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/Configuration.java
index 5f766e885..87a527c9a 100644
---
a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/Configuration.java
+++
b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/Configuration.java
@@ -25,7 +25,6 @@ import
org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
/**
* configuration items
- *
*/
public final class Configuration {
//// 2.1 configuration items
diff --git
a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/InstancePropertyDiscoveryFilter.java
b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/InstancePropertyDiscoveryFilter.java
index d3811d3a7..2b4c3eb6b 100644
---
a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/InstancePropertyDiscoveryFilter.java
+++
b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/InstancePropertyDiscoveryFilter.java
@@ -30,11 +30,14 @@ import
org.apache.servicecomb.registry.discovery.DiscoveryTreeNode;
import org.apache.servicecomb.registry.discovery.StatefulDiscoveryInstance;
/**
- * Instance property based filter
+ * Instance property based filter
*/
public class InstancePropertyDiscoveryFilter extends AbstractDiscoveryFilter {
+
private static final String MATCHED = "matched";
+ public static final String
SERVICECOMB_LOADBALANCE_FILTER_INSTANCE_PROPERTY_ENABLED =
"servicecomb.loadbalance.filter.instanceProperty.enabled";
+
@Override
public int getOrder() {
return 400;
@@ -42,8 +45,13 @@ public class InstancePropertyDiscoveryFilter extends
AbstractDiscoveryFilter {
@Override
public boolean enabled() {
- return
environment.getProperty("servicecomb.loadbalance.filter.instanceProperty.enabled",
- boolean.class, true);
+
+ if (enabled == null) {
+ enabled =
dynamicProperties.getBooleanProperty(SERVICECOMB_LOADBALANCE_FILTER_INSTANCE_PROPERTY_ENABLED,
+ value -> enabled = value,
+ true);
+ }
+ return enabled;
}
@Override
diff --git
a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/PriorityInstancePropertyDiscoveryFilter.java
b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/PriorityInstancePropertyDiscoveryFilter.java
index 7dbe07023..d890b7ea2 100644
---
a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/PriorityInstancePropertyDiscoveryFilter.java
+++
b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/PriorityInstancePropertyDiscoveryFilter.java
@@ -47,6 +47,8 @@ public class PriorityInstancePropertyDiscoveryFilter extends
AbstractDiscoveryFi
private static final String ALL_INSTANCE = "allInstance";
+ public static final String
SERVICECOMB_LOADBALANCE_FILTER_PRIORITY_INSTANCE_PROPERTY_KEY =
"servicecomb.loadbalance.filter.priorityInstanceProperty.key";
+
private String propertyKey;
private Environment environment;
@@ -58,8 +60,10 @@ public class PriorityInstancePropertyDiscoveryFilter extends
AbstractDiscoveryFi
@Override
protected void init(DiscoveryContext context, DiscoveryTreeNode parent) {
- propertyKey =
environment.getProperty("servicecomb.loadbalance.filter.priorityInstanceProperty.key",
- String.class, "environment");
+
+ propertyKey =
dynamicProperties.getStringProperty(SERVICECOMB_LOADBALANCE_FILTER_PRIORITY_INSTANCE_PROPERTY_KEY,
+ value -> propertyKey = value,
+ "environment");
// group all instance by property
List<StatefulDiscoveryInstance> instances = parent.data();
@@ -115,8 +119,13 @@ public class PriorityInstancePropertyDiscoveryFilter
extends AbstractDiscoveryFi
@Override
public boolean enabled() {
- return
environment.getProperty("servicecomb.loadbalance.filter.priorityInstanceProperty.enabled",
- boolean.class, false);
+
+ if (enabled == null) {
+ enabled =
dynamicProperties.getBooleanProperty("servicecomb.loadbalance.filter.priorityInstanceProperty.enabled",
+ value -> enabled = value,
+ false);
+ }
+ return enabled;
}
@Override
@@ -136,7 +145,7 @@ public class PriorityInstancePropertyDiscoveryFilter
extends AbstractDiscoveryFi
/**
* Constructor
*
- * @param key property key
+ * @param key property key
* @param value property value
*/
public PriorityInstanceProperty(@NotNull String key, String value) {
@@ -153,7 +162,7 @@ public class PriorityInstancePropertyDiscoveryFilter
extends AbstractDiscoveryFi
/**
* Constructor
*
- * @param key property key
+ * @param key property key
* @param microserviceInstance instance
*/
public PriorityInstanceProperty(@NotNull String key, @NotNull
StatefulDiscoveryInstance microserviceInstance) {
diff --git
a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/ZoneAwareDiscoveryFilter.java
b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/ZoneAwareDiscoveryFilter.java
index b39aefe8f..0e521397f 100644
---
a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/ZoneAwareDiscoveryFilter.java
+++
b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/filter/ZoneAwareDiscoveryFilter.java
@@ -42,6 +42,11 @@ public class ZoneAwareDiscoveryFilter extends
AbstractGroupDiscoveryFilter {
private DataCenterProperties dataCenterProperties;
+ private Integer ratio;
+
+ private Integer ratioCeiling;
+
+
@Autowired
@SuppressWarnings("unused")
public void setDataCenterProperties(DataCenterProperties
dataCenterProperties) {
@@ -55,18 +60,33 @@ public class ZoneAwareDiscoveryFilter extends
AbstractGroupDiscoveryFilter {
@Override
public boolean enabled() {
- return environment.getProperty(CONFIG_ENABLED,
- Boolean.class, true);
+
+ if (enabled == null) {
+ enabled = dynamicProperties.getBooleanProperty(CONFIG_ENABLED,
+ value -> enabled = value,
+ true);
+ }
+ return enabled;
}
private int getRatio() {
- return environment.getProperty(CONFIG_RATIO,
- int.class, 30);
+
+ if (ratio == null) {
+ ratio = dynamicProperties.getIntProperty(CONFIG_RATIO,
+ value -> ratio = value,
+ 30);
+ }
+ return ratio;
}
private int getRatioCeiling(int defaultValue) {
- return environment.getProperty(CONFIG_RATIO_CEILING,
- int.class, defaultValue);
+
+ if (ratioCeiling == null) {
+ ratioCeiling = dynamicProperties.getIntProperty(CONFIG_RATIO_CEILING,
+ value -> ratioCeiling = value,
+ defaultValue);
+ }
+ return ratioCeiling;
}
@Override
diff --git
a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceFilter2.java
b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceFilter2.java
index 25858a980..4c2fb5f5b 100644
---
a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceFilter2.java
+++
b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/TestLoadBalanceFilter2.java
@@ -25,6 +25,7 @@ import java.util.HashMap;
import java.util.List;
import org.apache.servicecomb.config.DataCenterProperties;
+import org.apache.servicecomb.config.DynamicProperties;
import org.apache.servicecomb.core.Invocation;
import org.apache.servicecomb.core.NonSwaggerInvocation;
import org.apache.servicecomb.core.SCBEngine;
@@ -35,6 +36,7 @@ import org.apache.servicecomb.core.definition.OperationMeta;
import org.apache.servicecomb.core.definition.SchemaMeta;
import org.apache.servicecomb.core.provider.consumer.ReferenceConfig;
import org.apache.servicecomb.core.transport.TransportManager;
+import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
import org.apache.servicecomb.loadbalance.filter.ServerDiscoveryFilter;
import org.apache.servicecomb.loadbalance.filter.ZoneAwareDiscoveryFilter;
import org.apache.servicecomb.registry.DiscoveryManager;
@@ -54,18 +56,30 @@ import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.Operation;
public class TestLoadBalanceFilter2 {
+ DynamicProperties dynamicProperties = Mockito.mock(DynamicProperties.class);
+
Environment environment = Mockito.mock(Environment.class);
@BeforeEach
public void setUp() {
+
Mockito.when(environment.getProperty("servicecomb.loadbalance.userDefinedEndpoint.enabled",
boolean.class, false)).thenReturn(false);
-
Mockito.when(environment.getProperty("servicecomb.loadbalance.filter.zoneaware.enabled",
- Boolean.class, true)).thenReturn(true);
-
Mockito.when(environment.getProperty("servicecomb.loadbalance.filter.zoneaware.ratio",
- int.class, 30)).thenReturn(0);
-
Mockito.when(environment.getProperty("servicecomb.loadbalance.filter.zoneaware.ratioCeiling",
- int.class, 100)).thenReturn(100);
+
+
Mockito.when(dynamicProperties.getBooleanProperty(Mockito.eq("servicecomb.loadbalance.filter.zoneaware.enabled"),
+ Mockito.any(),
+ Mockito.eq(true)))
+ .thenReturn(true);
+
Mockito.when(dynamicProperties.getIntProperty(Mockito.eq("servicecomb.loadbalance.filter.zoneaware.ratio"),
+ Mockito.any(),
+ Mockito.eq(30)))
+ .thenReturn(0);
+
Mockito.when(dynamicProperties.getIntProperty(Mockito.eq("servicecomb.loadbalance.filter.zoneaware.ratioCeiling"),
+ Mockito.any(),
+ Mockito.eq(100)))
+ .thenReturn(100);
+
+ LegacyPropertyFactory.setEnvironment(environment);
}
@Test
@@ -148,7 +162,7 @@ public class TestLoadBalanceFilter2 {
.thenReturn(parent);
DiscoveryTree discoveryTree = new DiscoveryTree(discoveryManager);
ZoneAwareDiscoveryFilter zoneAwareDiscoveryFilter = new
ZoneAwareDiscoveryFilter();
- zoneAwareDiscoveryFilter.setEnvironment(environment);
+ zoneAwareDiscoveryFilter.setDynamicProperties(dynamicProperties);
zoneAwareDiscoveryFilter.setDataCenterProperties(myself);
ServerDiscoveryFilter serverDiscoveryFilter = new ServerDiscoveryFilter();
serverDiscoveryFilter.setScbEngine(scbEngine);
@@ -239,7 +253,7 @@ public class TestLoadBalanceFilter2 {
.thenReturn(parent);
DiscoveryTree discoveryTree = new DiscoveryTree(discoveryManager);
ZoneAwareDiscoveryFilter zoneAwareDiscoveryFilter = new
ZoneAwareDiscoveryFilter();
- zoneAwareDiscoveryFilter.setEnvironment(environment);
+ zoneAwareDiscoveryFilter.setDynamicProperties(dynamicProperties);
zoneAwareDiscoveryFilter.setDataCenterProperties(myself);
ServerDiscoveryFilter serverDiscoveryFilter = new ServerDiscoveryFilter();
serverDiscoveryFilter.setScbEngine(scbEngine);
@@ -339,7 +353,7 @@ public class TestLoadBalanceFilter2 {
.thenReturn(parent);
DiscoveryTree discoveryTree = new DiscoveryTree(discoveryManager);
ZoneAwareDiscoveryFilter zoneAwareDiscoveryFilter = new
ZoneAwareDiscoveryFilter();
- zoneAwareDiscoveryFilter.setEnvironment(environment);
+ zoneAwareDiscoveryFilter.setDynamicProperties(dynamicProperties);
zoneAwareDiscoveryFilter.setDataCenterProperties(myself);
ServerDiscoveryFilter serverDiscoveryFilter = new ServerDiscoveryFilter();
serverDiscoveryFilter.setScbEngine(scbEngine);
@@ -437,7 +451,7 @@ public class TestLoadBalanceFilter2 {
.thenReturn(parent);
DiscoveryTree discoveryTree = new DiscoveryTree(discoveryManager);
ZoneAwareDiscoveryFilter zoneAwareDiscoveryFilter = new
ZoneAwareDiscoveryFilter();
- zoneAwareDiscoveryFilter.setEnvironment(environment);
+ zoneAwareDiscoveryFilter.setDynamicProperties(dynamicProperties);
zoneAwareDiscoveryFilter.setDataCenterProperties(myself);
ServerDiscoveryFilter serverDiscoveryFilter = new ServerDiscoveryFilter();
serverDiscoveryFilter.setScbEngine(scbEngine);
@@ -534,7 +548,7 @@ public class TestLoadBalanceFilter2 {
.thenReturn(parent);
DiscoveryTree discoveryTree = new DiscoveryTree(discoveryManager);
ZoneAwareDiscoveryFilter zoneAwareDiscoveryFilter = new
ZoneAwareDiscoveryFilter();
- zoneAwareDiscoveryFilter.setEnvironment(environment);
+ zoneAwareDiscoveryFilter.setDynamicProperties(dynamicProperties);
zoneAwareDiscoveryFilter.setDataCenterProperties(myself);
ServerDiscoveryFilter serverDiscoveryFilter = new ServerDiscoveryFilter();
serverDiscoveryFilter.setScbEngine(scbEngine);
diff --git
a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/filter/PriorityInstancePropertyDiscoveryFilterTest.java
b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/filter/PriorityInstancePropertyDiscoveryFilterTest.java
index 23f7c92f6..7c78388dc 100644
---
a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/filter/PriorityInstancePropertyDiscoveryFilterTest.java
+++
b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/filter/PriorityInstancePropertyDiscoveryFilterTest.java
@@ -27,6 +27,7 @@ import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
+import org.apache.servicecomb.config.DynamicProperties;
import org.apache.servicecomb.core.Invocation;
import org.apache.servicecomb.registry.api.DiscoveryInstance;
import org.apache.servicecomb.registry.discovery.DiscoveryContext;
@@ -59,6 +60,8 @@ public class PriorityInstancePropertyDiscoveryFilterTest {
EnumerablePropertySource propertySource;
+ DynamicProperties dynamicProperties = Mockito.mock(DynamicProperties.class);
+
@Before
public void setUp() {
propertySource = Mockito.mock(EnumerablePropertySource.class);
@@ -71,8 +74,10 @@ public class PriorityInstancePropertyDiscoveryFilterTest {
filter = new PriorityInstancePropertyDiscoveryFilter();
filter.setEnvironment(environment);
-
Mockito.when(environment.getProperty("servicecomb.loadbalance.filter.priorityInstanceProperty.key",
- String.class, "environment")).thenReturn("environment");
+ filter.setDynamicProperties(dynamicProperties);
+
Mockito.when(dynamicProperties.getStringProperty(Mockito.eq("servicecomb.loadbalance.filter.priorityInstanceProperty.key"),
+ Mockito.any(),
+ Mockito.eq("environment"))).thenReturn("environment");
instances = new ArrayList<>();
filter.setEnvironment(environment);
DiscoveryInstance discoveryInstance1 =
Mockito.mock(DiscoveryInstance.class);
diff --git
a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/filter/TestZoneAwareDiscoveryFilter.java
b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/filter/TestZoneAwareDiscoveryFilter.java
index 13a5f6da9..05b6d5432 100644
---
a/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/filter/TestZoneAwareDiscoveryFilter.java
+++
b/handlers/handler-loadbalance/src/test/java/org/apache/servicecomb/loadbalance/filter/TestZoneAwareDiscoveryFilter.java
@@ -21,6 +21,7 @@ import java.util.Arrays;
import java.util.List;
import org.apache.servicecomb.config.DataCenterProperties;
+import org.apache.servicecomb.config.DynamicProperties;
import org.apache.servicecomb.registry.api.DataCenterInfo;
import org.apache.servicecomb.registry.api.DiscoveryInstance;
import org.apache.servicecomb.registry.discovery.DiscoveryContext;
@@ -30,26 +31,33 @@ import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
-import org.springframework.core.env.Environment;
public class TestZoneAwareDiscoveryFilter {
- Environment environment = Mockito.mock(Environment.class);
+ DynamicProperties dynamicProperties = Mockito.mock(DynamicProperties.class);
@BeforeEach
public void setUp() {
-
Mockito.when(environment.getProperty("servicecomb.loadbalance.filter.zoneaware.enabled",
- Boolean.class, true)).thenReturn(true);
+
+
Mockito.when(dynamicProperties.getBooleanProperty(Mockito.eq("servicecomb.loadbalance.filter.zoneaware.enabled"),
+ Mockito.any(),
+ Mockito.eq(true)))
+ .thenReturn(true);
}
@Test
public void test_not_enough_instance() {
-
Mockito.when(environment.getProperty("servicecomb.loadbalance.filter.zoneaware.ratio",
- int.class, 30)).thenReturn(50);
-
Mockito.when(environment.getProperty("servicecomb.loadbalance.filter.zoneaware.ratioCeiling",
- int.class, 50)).thenReturn(70);
+
+
Mockito.when(dynamicProperties.getIntProperty(Mockito.eq("servicecomb.loadbalance.filter.zoneaware.ratio"),
+ Mockito.any(),
+ Mockito.eq(30)))
+ .thenReturn(50);
+
Mockito.when(dynamicProperties.getIntProperty(Mockito.eq("servicecomb.loadbalance.filter.zoneaware.ratioCeiling"),
+ Mockito.any(),
+ Mockito.eq(50)))
+ .thenReturn(70);
ZoneAwareDiscoveryFilter filter = new ZoneAwareDiscoveryFilter();
- filter.setEnvironment(environment);
+ filter.setDynamicProperties(dynamicProperties);
// set up data
DataCenterProperties myself = new DataCenterProperties();
@@ -113,13 +121,18 @@ public class TestZoneAwareDiscoveryFilter {
@Test
public void test_not_enough_instance_both_ceiling_floor() {
-
Mockito.when(environment.getProperty("servicecomb.loadbalance.filter.zoneaware.ratio",
- int.class, 30)).thenReturn(40);
-
Mockito.when(environment.getProperty("servicecomb.loadbalance.filter.zoneaware.ratioCeiling",
- int.class, 60)).thenReturn(60);
+
+
Mockito.when(dynamicProperties.getIntProperty(Mockito.eq("servicecomb.loadbalance.filter.zoneaware.ratio"),
+ Mockito.any(),
+ Mockito.eq(30)))
+ .thenReturn(40);
+
Mockito.when(dynamicProperties.getIntProperty(Mockito.eq("servicecomb.loadbalance.filter.zoneaware.ratioCeiling"),
+ Mockito.any(),
+ Mockito.eq(60)))
+ .thenReturn(60);
ZoneAwareDiscoveryFilter filter = new ZoneAwareDiscoveryFilter();
- filter.setEnvironment(environment);
+ filter.setDynamicProperties(dynamicProperties);
// set up data
DataCenterProperties myself = new DataCenterProperties();