This is an automated email from the ASF dual-hosted git repository.

liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git

commit 4120fa790ccc3956b3bf6aa242f4993c009a439d
Author: liubao <bi...@qq.com>
AuthorDate: Sun Oct 8 11:11:56 2023 +0800

    [SCB-2008]remove archaius dependency: remove ArchaiusUtils usage and 
DynamicProperty
---
 .../config/inject/PlaceholderResolver.java         |   4 +-
 .../config/priority/TestPriorityPropertyBase.java  |  11 ++-
 .../java/org/apache/servicecomb/qps/Config.java    |   2 +
 .../servicecomb/qps/ConsumerFlowControlFilter.java |   7 +-
 .../qps/FlowControlQpsConfiguration.java           |   9 +-
 .../servicecomb/qps/ProviderFlowControlFilter.java |   7 +-
 .../servicecomb/qps/QpsControllerManager.java      | 101 +++++++--------------
 .../servicecomb/qps/QpsControllerManagerTest.java  |  64 +++++++++----
 .../generator/core/TestSwaggerGenerator.java       |  21 ++---
 9 files changed, 120 insertions(+), 106 deletions(-)

diff --git 
a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/inject/PlaceholderResolver.java
 
b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/inject/PlaceholderResolver.java
index 050bcf50e..b05ab11a7 100644
--- 
a/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/inject/PlaceholderResolver.java
+++ 
b/foundations/foundation-config/src/main/java/org/apache/servicecomb/config/inject/PlaceholderResolver.java
@@ -25,7 +25,7 @@ import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.apache.servicecomb.config.ConfigUtil;
+import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
 
 /**
  * <pre>
@@ -203,7 +203,7 @@ public class PlaceholderResolver {
   private Object findValue(Map<String, Object> parameters, String key) {
     Object value = parameters.get(key);
     if (value == null) {
-      value = ConfigUtil.getProperty(key);
+      value = LegacyPropertyFactory.getStringProperty(key);
     }
     return value;
   }
diff --git 
a/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/priority/TestPriorityPropertyBase.java
 
b/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/priority/TestPriorityPropertyBase.java
index 4f76abbae..1b2d5f450 100644
--- 
a/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/priority/TestPriorityPropertyBase.java
+++ 
b/foundations/foundation-config/src/test/java/org/apache/servicecomb/config/priority/TestPriorityPropertyBase.java
@@ -16,24 +16,31 @@
  */
 package org.apache.servicecomb.config.priority;
 
-import com.netflix.config.DynamicPropertyFactory;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.core.config.Configurator;
+import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
 import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
+import org.mockito.Mockito;
+import org.springframework.core.env.Environment;
+
+import com.netflix.config.DynamicPropertyFactory;
 
 public class TestPriorityPropertyBase {
   protected PriorityPropertyManager priorityPropertyManager;
 
   protected PriorityPropertyFactory propertyFactory;
 
+  protected Environment environment;
+
   @BeforeEach
   public void setup() {
     // avoid write too many logs
     Configurator.setRootLevel(Level.OFF);
 
-    ArchaiusUtils.resetConfig();
+    environment = Mockito.mock(Environment.class);
+    LegacyPropertyFactory.setEnvironment(environment);
 
     // make sure create a DynamicPropertyFactory instance
     // otherwise will cause wrong order of configurationListeners
diff --git 
a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/Config.java
 
b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/Config.java
index c7f286c2d..8325352d7 100644
--- 
a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/Config.java
+++ 
b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/Config.java
@@ -20,6 +20,8 @@ package org.apache.servicecomb.qps;
 import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
 
 public final class Config {
+  public static final String CONFIG_PREFIX = "servicecomb.flowcontrol.";
+
   public static final String STRATEGY_KEY = "servicecomb.flowcontrol.strategy";
 
   public static final String ANY_SERVICE = "ANY";
diff --git 
a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ConsumerFlowControlFilter.java
 
b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ConsumerFlowControlFilter.java
index ac848c56a..749514aae 100644
--- 
a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ConsumerFlowControlFilter.java
+++ 
b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ConsumerFlowControlFilter.java
@@ -29,11 +29,16 @@ import 
org.apache.servicecomb.swagger.invocation.InvocationType;
 import org.apache.servicecomb.swagger.invocation.Response;
 import org.apache.servicecomb.swagger.invocation.exception.CommonExceptionData;
 import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
+import org.springframework.core.env.Environment;
 
 import com.google.common.annotations.VisibleForTesting;
 
 public class ConsumerFlowControlFilter implements ConsumerFilter {
-  private final QpsControllerManager qpsControllerMgr = new 
QpsControllerManager(false);
+  private final QpsControllerManager qpsControllerMgr;
+
+  public ConsumerFlowControlFilter(Environment environment) {
+    qpsControllerMgr = new QpsControllerManager(false, environment);
+  }
 
   @VisibleForTesting
   public QpsControllerManager getQpsControllerMgr() {
diff --git 
a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/FlowControlQpsConfiguration.java
 
b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/FlowControlQpsConfiguration.java
index de13eae57..27bef6dcb 100644
--- 
a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/FlowControlQpsConfiguration.java
+++ 
b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/FlowControlQpsConfiguration.java
@@ -19,6 +19,7 @@ package org.apache.servicecomb.qps;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.core.env.Environment;
 
 @Configuration
 @ConditionalOnProperty(value = 
FlowControlQpsConfiguration.FLOW_CONTROL_ENABLED,
@@ -29,12 +30,12 @@ public class FlowControlQpsConfiguration {
   public static final String FLOW_CONTROL_ENABLED = FLOW_CONTROL_PREFIX + 
".enabled";
 
   @Bean
-  public ProviderFlowControlFilter providerFlowControlFilter() {
-    return new ProviderFlowControlFilter();
+  public ProviderFlowControlFilter providerFlowControlFilter(Environment 
environment) {
+    return new ProviderFlowControlFilter(environment);
   }
 
   @Bean
-  public ConsumerFlowControlFilter consumerFlowControlFilter() {
-    return new ConsumerFlowControlFilter();
+  public ConsumerFlowControlFilter consumerFlowControlFilter(Environment 
environment) {
+    return new ConsumerFlowControlFilter(environment);
   }
 }
diff --git 
a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ProviderFlowControlFilter.java
 
b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ProviderFlowControlFilter.java
index 9f5dcbbc3..c941f2900 100644
--- 
a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ProviderFlowControlFilter.java
+++ 
b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/ProviderFlowControlFilter.java
@@ -30,11 +30,16 @@ import 
org.apache.servicecomb.swagger.invocation.InvocationType;
 import org.apache.servicecomb.swagger.invocation.Response;
 import org.apache.servicecomb.swagger.invocation.exception.CommonExceptionData;
 import org.apache.servicecomb.swagger.invocation.exception.InvocationException;
+import org.springframework.core.env.Environment;
 
 import com.google.common.annotations.VisibleForTesting;
 
 public class ProviderFlowControlFilter implements ProviderFilter {
-  private final QpsControllerManager qpsControllerMgr = new 
QpsControllerManager(true);
+  private final QpsControllerManager qpsControllerMgr;
+
+  public ProviderFlowControlFilter(Environment environment) {
+    qpsControllerMgr = new QpsControllerManager(true, environment);
+  }
 
   @Override
   public int getOrder(InvocationType invocationType, String application, 
String serviceName) {
diff --git 
a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/QpsControllerManager.java
 
b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/QpsControllerManager.java
index 436d6db13..8e33088e3 100644
--- 
a/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/QpsControllerManager.java
+++ 
b/handlers/handler-flowcontrol-qps/src/main/java/org/apache/servicecomb/qps/QpsControllerManager.java
@@ -17,23 +17,26 @@
 
 package org.apache.servicecomb.qps;
 
-import java.util.Iterator;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.servicecomb.config.ConfigurationChangedEvent;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx;
+import org.apache.servicecomb.foundation.common.event.EventManager;
 import 
org.apache.servicecomb.foundation.common.exceptions.ServiceCombException;
 import org.apache.servicecomb.foundation.common.utils.SPIServiceUtils;
 import org.apache.servicecomb.qps.strategy.AbstractQpsStrategy;
 import org.apache.servicecomb.qps.strategy.IStrategyFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.core.env.Environment;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.netflix.config.DynamicProperty;
+import com.google.common.eventbus.Subscribe;
 
 public class QpsControllerManager {
   private static final Logger LOGGER = 
LoggerFactory.getLogger(QpsControllerManager.class);
@@ -60,7 +63,10 @@ public class QpsControllerManager {
 
   private final String globalBucketKey;
 
-  public QpsControllerManager(boolean isProvider) {
+  private final Environment environment;
+
+  public QpsControllerManager(boolean isProvider, Environment environment) {
+    this.environment = environment;
     if (isProvider) {
       limitKeyPrefix = Config.PROVIDER_LIMIT_KEY_PREFIX;
       bucketKeyPrefix = Config.PROVIDER_BUCKET_KEY_PREFIX;
@@ -74,6 +80,24 @@ public class QpsControllerManager {
     }
 
     initGlobalQpsController();
+    EventManager.register(this);
+  }
+
+  @Subscribe
+  public void onConfigurationChangedEvent(ConfigurationChangedEvent event) {
+    Map<String, Object> changed = new HashMap<>();
+    changed.putAll(event.getDeleted());
+    changed.putAll(event.getAdded());
+    changed.putAll(event.getUpdated());
+
+    for (Entry<String, Object> entry : changed.entrySet()) {
+      if (entry.getKey().startsWith(Config.CONFIG_PREFIX)) {
+        configQpsControllerMap.clear();
+        qualifiedNameControllerMap.clear();
+        initGlobalQpsController();
+        break;
+      }
+    }
   }
 
   @VisibleForTesting
@@ -172,74 +196,19 @@ public class QpsControllerManager {
     }
 
     LOGGER.info("Create qpsController, configKey = [{}]", configKey);
-    DynamicProperty limitProperty = DynamicProperty.getInstance(limitKeyPrefix 
+ configKey);
-    DynamicProperty bucketProperty = 
DynamicProperty.getInstance(bucketKeyPrefix + configKey);
-    DynamicProperty strategyProperty = 
DynamicProperty.getInstance(Config.STRATEGY_KEY);
-    AbstractQpsStrategy qpsStrategy = chooseStrategy(configKey, 
limitProperty.getLong(),
-        bucketProperty.getLong(), strategyProperty.getString());
-
-    strategyProperty.addCallback(() -> {
-      AbstractQpsStrategy innerQpsStrategy = chooseStrategy(configKey, 
limitProperty.getLong(),
-          bucketProperty.getLong(), strategyProperty.getString());
-      configQpsControllerMap.put(configKey, innerQpsStrategy);
-      LOGGER.info("Global flow control strategy update, value = [{}]",
-          strategyProperty.getString());
-      updateObjMap();
-    });
-    limitProperty.addCallback(() -> {
-      qpsStrategy.setQpsLimit(limitProperty.getLong());
-      LOGGER.info("Qps limit updated, configKey = [{}], value = [{}]", 
configKey,
-          limitProperty.getString());
-      updateObjMap();
-    });
-    bucketProperty.addCallback(() -> {
-      qpsStrategy.setBucketLimit(bucketProperty.getLong());
-      LOGGER.info("bucket limit updated, configKey = [{}], value = [{}]", 
configKey,
-          bucketProperty.getString());
-      updateObjMap();
-    });
+    AbstractQpsStrategy qpsStrategy = chooseStrategy(configKey,
+        environment.getProperty(limitKeyPrefix + configKey, Long.class),
+        environment.getProperty(bucketKeyPrefix + configKey, Long.class),
+        environment.getProperty(Config.STRATEGY_KEY));
 
     configQpsControllerMap.put(configKey, qpsStrategy);
   }
 
-  protected void updateObjMap() {
-    Iterator<Entry<String, AbstractQpsStrategy>> it = 
qualifiedNameControllerMap.entrySet().iterator();
-    while (it.hasNext()) {
-      Map.Entry<String, AbstractQpsStrategy> entry = it.next();
-      AbstractQpsStrategy qpsStrategy = searchQpsController(entry.getKey());
-      if (qpsStrategy == null) {
-        it.remove();
-        continue;
-      }
-      if (qpsStrategy != entry.getValue()) {
-        entry.setValue(qpsStrategy);
-        LOGGER.info("QpsController updated, operationId = [{}], configKey = 
[{}], qpsLimit = [{}]",
-            entry.getKey(), qpsStrategy.getKey(), qpsStrategy.getQpsLimit());
-      }
-    }
-  }
-
   private void initGlobalQpsController() {
-    DynamicProperty globalLimitProperty = 
DynamicProperty.getInstance(globalLimitKey);
-    DynamicProperty globalBucketProperty = 
DynamicProperty.getInstance(globalBucketKey);
-    DynamicProperty globalStrategyProperty = DynamicProperty
-        .getInstance(Config.STRATEGY_KEY);
-    globalQpsStrategy = chooseStrategy(globalLimitKey, 
globalLimitProperty.getLong((long) Integer.MAX_VALUE),
-        globalBucketProperty.getLong(), globalStrategyProperty.getString());
-    globalStrategyProperty.addCallback(() -> {
-      globalQpsStrategy = chooseStrategy(globalLimitKey, 
globalLimitProperty.getLong((long) Integer.MAX_VALUE),
-          globalBucketProperty.getLong(), globalStrategyProperty.getString());
-      LOGGER.info("Global flow control strategy update, value = [{}]",
-          globalStrategyProperty.getString());
-    });
-    globalLimitProperty.addCallback(() -> {
-      globalQpsStrategy.setQpsLimit(globalLimitProperty.getLong((long) 
Integer.MAX_VALUE));
-      LOGGER.info("Global qps limit update, value = [{}]", 
globalLimitProperty.getLong());
-    });
-    globalBucketProperty.addCallback(() -> {
-      globalQpsStrategy.setBucketLimit(globalBucketProperty.getLong());
-      LOGGER.info("Global bucket limit update, value = [{}]", 
globalBucketProperty.getLong());
-    });
+    globalQpsStrategy = chooseStrategy(globalLimitKey,
+        environment.getProperty(globalLimitKey, Long.class, (long) 
Integer.MAX_VALUE),
+        environment.getProperty(globalBucketKey, Long.class),
+        environment.getProperty(Config.STRATEGY_KEY));
   }
 
   private AbstractQpsStrategy chooseStrategy(String configKey, Long limit, 
Long bucket,
diff --git 
a/handlers/handler-flowcontrol-qps/src/test/java/org/apache/servicecomb/qps/QpsControllerManagerTest.java
 
b/handlers/handler-flowcontrol-qps/src/test/java/org/apache/servicecomb/qps/QpsControllerManagerTest.java
index 8f4aaf135..e2b5f79fa 100644
--- 
a/handlers/handler-flowcontrol-qps/src/test/java/org/apache/servicecomb/qps/QpsControllerManagerTest.java
+++ 
b/handlers/handler-flowcontrol-qps/src/test/java/org/apache/servicecomb/qps/QpsControllerManagerTest.java
@@ -17,28 +17,36 @@
 
 package org.apache.servicecomb.qps;
 
+import java.util.HashMap;
+
+import org.apache.servicecomb.config.ConfigurationChangedEvent;
+import org.apache.servicecomb.config.InMemoryDynamicPropertiesSource;
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.definition.OperationMeta;
 import org.apache.servicecomb.core.definition.SchemaMeta;
-import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
+import org.apache.servicecomb.foundation.common.event.EventManager;
 import org.apache.servicecomb.qps.strategy.AbstractQpsStrategy;
 import org.junit.jupiter.api.AfterEach;
 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 QpsControllerManagerTest {
+  static Environment environment = Mockito.mock(Environment.class);
 
   @BeforeEach
   public void beforeTest() {
-    // TODO: fix DynamicProperty
-    ArchaiusUtils.resetConfig();
+    Mockito.when(environment.getProperty(Config.PROVIDER_LIMIT_KEY_GLOBAL, 
Long.class, (long) Integer.MAX_VALUE))
+        .thenReturn((long) Integer.MAX_VALUE);
+    Mockito.when(environment.getProperty(Config.CONSUMER_LIMIT_KEY_GLOBAL, 
Long.class, (long) Integer.MAX_VALUE))
+        .thenReturn((long) Integer.MAX_VALUE);
   }
 
   @AfterEach
   public void afterTest() {
-    ArchaiusUtils.resetConfig();
+
   }
 
   @Test
@@ -49,7 +57,7 @@ public class QpsControllerManagerTest {
     Mockito.when(invocation.getSchemaId()).thenReturn("server");
     
Mockito.when(operationMeta.getSchemaQualifiedName()).thenReturn("server.test");
 
-    QpsControllerManager testQpsControllerManager = new 
QpsControllerManager(false);
+    QpsControllerManager testQpsControllerManager = new 
QpsControllerManager(false, environment);
     initTestQpsControllerManager(false, testQpsControllerManager, invocation, 
operationMeta);
 
     // pojo
@@ -65,12 +73,23 @@ public class QpsControllerManagerTest {
     Assertions.assertEquals(Config.CONSUMER_LIMIT_KEY_GLOBAL, 
((AbstractQpsStrategy) qpsStrategy).getKey());
     Assertions.assertEquals(Integer.MAX_VALUE, ((AbstractQpsStrategy) 
qpsStrategy).getQpsLimit().intValue());
 
-    
ArchaiusUtils.setProperty("servicecomb.flowcontrol.Consumer.qps.limit.poj.server",
 10000);
+    
Mockito.when(environment.getProperty("servicecomb.flowcontrol.Consumer.qps.limit.poj.server",
+        Long.class)).thenReturn(Long.valueOf(10000));
+    HashMap<String, Object> updated = new HashMap<>();
+    updated.put("servicecomb.flowcontrol.Consumer.qps.limit.poj.server", 
Long.valueOf(10000));
+    EventManager.post(ConfigurationChangedEvent.createIncremental(updated));
+
     qpsStrategy = testQpsControllerManager.getOrCreate("poj", invocation);
     Assertions.assertEquals("poj.server", ((AbstractQpsStrategy) 
qpsStrategy).getKey());
     Assertions.assertEquals(((AbstractQpsStrategy) qpsStrategy).getQpsLimit(), 
(Long) 10000L);
 
-    
ArchaiusUtils.setProperty("servicecomb.flowcontrol.Consumer.qps.limit.poj.server.test",
 20000);
+    
InMemoryDynamicPropertiesSource.update("servicecomb.flowcontrol.Consumer.qps.limit.poj.server.test",
 20000);
+    
Mockito.when(environment.getProperty("servicecomb.flowcontrol.Consumer.qps.limit.poj.server.test",
+        Long.class)).thenReturn(Long.valueOf(20000));
+    updated = new HashMap<>();
+    updated.put("servicecomb.flowcontrol.Consumer.qps.limit.poj.server.test", 
Long.valueOf(20000));
+    EventManager.post(ConfigurationChangedEvent.createIncremental(updated));
+
     qpsStrategy = testQpsControllerManager.getOrCreate("poj", invocation);
     Assertions.assertEquals("poj.server.test", ((AbstractQpsStrategy) 
qpsStrategy).getKey());
     Assertions.assertEquals(((AbstractQpsStrategy) qpsStrategy).getQpsLimit(), 
(Long) 20000L);
@@ -86,10 +105,15 @@ public class QpsControllerManagerTest {
     Mockito.when(invocation.getSchemaId()).thenReturn("server");
     
Mockito.when(operationMeta.getSchemaQualifiedName()).thenReturn("server.test");
 
-    QpsControllerManager testQpsControllerManager = new 
QpsControllerManager(true);
+    QpsControllerManager testQpsControllerManager = new 
QpsControllerManager(true, environment);
 
     // global
-    setConfig(Config.PROVIDER_LIMIT_KEY_GLOBAL, 50);
+    Mockito.when(environment.getProperty(Config.PROVIDER_LIMIT_KEY_GLOBAL, 
Long.class,
+        (long) Integer.MAX_VALUE)).thenReturn(50L);
+    HashMap<String, Object> updated = new HashMap<>();
+    updated.put(Config.PROVIDER_LIMIT_KEY_GLOBAL, 50L);
+    EventManager.post(ConfigurationChangedEvent.createIncremental(updated));
+
     QpsStrategy qpsStrategy = testQpsControllerManager.getOrCreate("pojo", 
invocation);
     Assertions.assertEquals(Config.PROVIDER_LIMIT_KEY_GLOBAL, 
((AbstractQpsStrategy) qpsStrategy).getKey());
     Assertions.assertEquals(50, (long) ((AbstractQpsStrategy) 
qpsStrategy).getQpsLimit());
@@ -122,7 +146,7 @@ public class QpsControllerManagerTest {
     Mockito.when(invocation.getOperationMeta()).thenReturn(operationMeta);
     Mockito.when(invocation.getSchemaId()).thenReturn("schema");
     
Mockito.when(operationMeta.getSchemaQualifiedName()).thenReturn("schema.opr");
-    QpsControllerManager qpsControllerManager = new QpsControllerManager(true);
+    QpsControllerManager qpsControllerManager = new QpsControllerManager(true, 
environment);
     QpsStrategy qpsStrategy = qpsControllerManager.getOrCreate("service", 
invocation);
     
Assertions.assertEquals("servicecomb.flowcontrol.Provider.qps.global.limit",
         ((AbstractQpsStrategy) qpsStrategy).getKey());
@@ -316,17 +340,16 @@ public class QpsControllerManagerTest {
     return operationMeta;
   }
 
-  public static void setConfig(String key, int value) {
-    ArchaiusUtils.setProperty(key, value);
-  }
-
   private static void setConfigWithDefaultPrefix(boolean isProvider, String 
key, int value) {
     String configKey = Config.CONSUMER_LIMIT_KEY_PREFIX + key;
     if (isProvider) {
       configKey = Config.PROVIDER_LIMIT_KEY_PREFIX + key;
     }
 
-    ArchaiusUtils.setProperty(configKey, value);
+    Mockito.when(environment.getProperty(configKey, 
Long.class)).thenReturn(Long.valueOf(value));
+    HashMap<String, Object> updated = new HashMap<>();
+    updated.put(configKey, value);
+    EventManager.post(ConfigurationChangedEvent.createIncremental(updated));
   }
 
   private static void deleteConfigWithDefaultPrefix(boolean isProvider, String 
key) {
@@ -335,7 +358,10 @@ public class QpsControllerManagerTest {
       configKey = Config.PROVIDER_LIMIT_KEY_PREFIX + key;
     }
 
-    ArchaiusUtils.setProperty(configKey, null);
+    Mockito.when(environment.getProperty(configKey, 
Long.class)).thenReturn(null);
+    HashMap<String, Object> updated = new HashMap<>();
+    updated.put(configKey, null);
+    EventManager.post(ConfigurationChangedEvent.createIncremental(updated));
   }
 
   @Test
@@ -346,7 +372,7 @@ public class QpsControllerManagerTest {
     final String operationId = "add";
     final String configKey = "springmvcClient.controller.add";
 
-    QpsControllerManager testManager = new QpsControllerManager(true);
+    QpsControllerManager testManager = new QpsControllerManager(true, 
environment);
     Invocation testInvocation = getMockInvocation(microserviceName, schemaId, 
operationId);
     Mockito.when(testInvocation.getSchemaId()).thenReturn(schemaId);
 
@@ -358,6 +384,8 @@ public class QpsControllerManagerTest {
 
     QpsStrategy strategy2 = testManager.getOrCreate(microserviceName, 
testInvocation);
 
-    Assertions.assertEquals(strategy1, strategy2);
+    Assertions.assertEquals(((AbstractQpsStrategy) strategy1).getQpsLimit(),
+        ((AbstractQpsStrategy) strategy2).getQpsLimit());
+    Assertions.assertEquals(((AbstractQpsStrategy) strategy1).getQpsLimit(), 
Long.valueOf(Integer.MAX_VALUE));
   }
 }
diff --git 
a/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/generator/core/TestSwaggerGenerator.java
 
b/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/generator/core/TestSwaggerGenerator.java
index 79c7890f7..a05bbce20 100644
--- 
a/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/generator/core/TestSwaggerGenerator.java
+++ 
b/swagger/swagger-generator/generator-core/src/test/java/org/apache/servicecomb/swagger/generator/core/TestSwaggerGenerator.java
@@ -17,29 +17,26 @@
 
 package org.apache.servicecomb.swagger.generator.core;
 
-import org.apache.servicecomb.foundation.test.scaffolding.config.ArchaiusUtils;
+import org.apache.servicecomb.foundation.common.LegacyPropertyFactory;
 import org.apache.servicecomb.swagger.SwaggerUtils;
 import org.apache.servicecomb.swagger.generator.pojo.PojoSwaggerGenerator;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
 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 TestSwaggerGenerator {
-  @BeforeClass
-  public static void setup() {
-    ArchaiusUtils.resetConfig();
-  }
+  Environment environment = Mockito.mock(Environment.class);
 
-  @AfterClass
-  public static void teardown() {
-    ArchaiusUtils.resetConfig();
+  @BeforeEach
+  public void setUp() {
+    LegacyPropertyFactory.setEnvironment(environment);
   }
 
   @Test
   public void testBasePathPlaceHolder() {
-    // TODO: fix PlaceholderResolver
-    ArchaiusUtils.setProperty("var", "varValue");
+    Mockito.when(environment.getProperty("var")).thenReturn("varValue");
 
     PojoSwaggerGenerator swaggerGenerator = new PojoSwaggerGenerator(null);
     swaggerGenerator.setBasePath("/a/${var}/b");

Reply via email to