You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by li...@apache.org on 2023/08/08 09:38:10 UTC

[servicecomb-java-chassis] 03/03: [SCB-1929]rename new api name and remove unused code

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 c672400000feb8ad1dceccea6b367015f32e1fcc
Author: liubao <bi...@qq.com>
AuthorDate: Tue Aug 8 16:04:13 2023 +0800

    [SCB-1929]rename new api name and remove unused code
---
 .../rest/filter/inner/RestServerCodecFilter.java   |   4 +-
 .../servicecomb/core/filter/ConsumerFilter.java    |   2 +-
 .../core/filter/CoreFilterConfiguration.java       |   7 -
 .../org/apache/servicecomb/core/filter/Filter.java |   6 +-
 .../core/filter/FilterChainsManager.java           |   4 +-
 .../apache/servicecomb/core/filter/FilterNode.java |   2 +-
 .../core/filter/InvocationFilterChains.java        |   2 +-
 .../servicecomb/core/filter/ProviderFilter.java    |   2 +-
 .../core/filter/impl/ParameterValidatorFilter.java |  15 +-
 .../core/filter/impl/ProviderOperationFilter.java  |   2 +-
 .../core/filter/impl/ScheduleFilter.java           |   2 +-
 .../core/filter/impl/SimpleLoadBalanceFilter.java  | 175 ---------------------
 .../servicecomb/core/filter/SimpleRetryFilter.java |   2 +-
 .../filter/impl/SimpleLoadBalanceFilterTest.java   |  76 ---------
 .../demo/edge/service/handler/AuthHandler.java     |   2 +-
 .../springboot/pojo/server/handler/MyHandler.java  |   2 +-
 .../demo/springmvc/filter/ProviderTestFilter.java  |   2 +-
 .../servicecomb/edge/core/EdgeAddHeaderFilter.java |   4 +-
 .../edge/core/EdgeServerCodecFilter.java           |   6 +-
 .../faultinjection/ConsumerAbortFaultFilter.java   |   2 +-
 .../faultinjection/ConsumerDelayFaultFilter.java   |   2 +-
 .../servicecomb/qps/ConsumerFlowControlFilter.java |   2 +-
 .../servicecomb/qps/ProviderFlowControlFilter.java |   2 +-
 .../governance/ConsumerInstanceBulkheadFilter.java |   2 +-
 .../ConsumerInstanceIsolationFilter.java           |   2 +-
 .../handler/governance/ProviderBulkheadFilter.java |   2 +-
 .../governance/ProviderCircuitBreakerFilter.java   |   2 +-
 .../governance/ProviderRateLimitingFilter.java     |   2 +-
 .../servicecomb/loadbalance/LoadBalanceFilter.java |   2 +-
 .../consumer/ConsumerAuthFilter.java               |   2 +-
 .../provider/ProviderAuthFilter.java               |   2 +-
 .../router/custom/RouterAddHeaderFilter.java       |   4 +-
 .../core/TestInvocationMetersInitializer.java      |  54 +++----
 .../transport/highway/HighwayClientFilter.java     |   4 +-
 .../highway/HighwayServerCodecFilter.java          |   4 +-
 .../rest/client/RestClientCodecFilter.java         |   4 +-
 .../rest/client/RestClientSenderFilter.java        |   4 +-
 .../rest/client/RestClientCodecFilterTest.java     |  63 --------
 .../rest/client/RestClientDecoderTest.java         | 100 ------------
 .../rest/client/RestClientEncoderTest.java         | 170 --------------------
 .../transport/rest/client/RestClientTestBase.java  |  98 ------------
 .../RestClientTransportContextFactoryTest.java     | 107 -------------
 42 files changed, 79 insertions(+), 874 deletions(-)

diff --git a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilter.java b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilter.java
index 38e91a19d..0415fba17 100644
--- a/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilter.java
+++ b/common/common-rest/src/main/java/org/apache/servicecomb/common/rest/filter/inner/RestServerCodecFilter.java
@@ -64,13 +64,13 @@ public class RestServerCodecFilter implements ProviderFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     // almost time, should be the first filter.
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 2000;
   }
 
   @Override
-  public boolean isEnabledForTransport(String transport) {
+  public boolean enabledForTransport(String transport) {
     return Const.RESTFUL.equals(transport);
   }
 
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/ConsumerFilter.java b/core/src/main/java/org/apache/servicecomb/core/filter/ConsumerFilter.java
index 899286787..9f89c7025 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/ConsumerFilter.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/ConsumerFilter.java
@@ -23,7 +23,7 @@ import org.apache.servicecomb.swagger.invocation.InvocationType;
 public interface ConsumerFilter extends Filter {
   @Nonnull
   @Override
-  default boolean isEnabledForInvocationType(InvocationType invocationType) {
+  default boolean enabledForInvocationType(InvocationType invocationType) {
     return invocationType == InvocationType.CONSUMER;
   }
 }
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/CoreFilterConfiguration.java b/core/src/main/java/org/apache/servicecomb/core/filter/CoreFilterConfiguration.java
index d03b69753..23bc14eac 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/CoreFilterConfiguration.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/CoreFilterConfiguration.java
@@ -24,13 +24,6 @@ import org.springframework.context.annotation.Configuration;
 
 @Configuration
 public class CoreFilterConfiguration {
-  //TODO: need remove all component scan or will cause bean conflict with load balance module
-//  @Bean
-//  @ConditionalOnMissingBean(name = "loadBalanceFilter")
-//  public ConsumerFilter loadBalanceFilter() {
-//    return new SimpleLoadBalanceFilter();
-//  }
-
   @Bean
   public ProviderFilter producerOperationFilter() {
     return new ProviderOperationFilter();
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/Filter.java b/core/src/main/java/org/apache/servicecomb/core/filter/Filter.java
index e84302808..5c58aca97 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/Filter.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/Filter.java
@@ -54,15 +54,15 @@ public interface Filter {
 
   int CONSUMER_LOAD_BALANCE_ORDER = 0;
 
-  default boolean isEnabledForInvocationType(InvocationType invocationType) {
+  default boolean enabledForInvocationType(InvocationType invocationType) {
     return true;
   }
 
-  default boolean isEnabledForTransport(String transport) {
+  default boolean enabledForTransport(String transport) {
     return true;
   }
 
-  default boolean isEnabledForMicroservice(String application, String serviceName) {
+  default boolean enabledForMicroservice(String application, String serviceName) {
     return true;
   }
 
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/FilterChainsManager.java b/core/src/main/java/org/apache/servicecomb/core/filter/FilterChainsManager.java
index 033208219..4f7392f86 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/FilterChainsManager.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/FilterChainsManager.java
@@ -33,11 +33,11 @@ public class FilterChainsManager {
   @Autowired
   public FilterChainsManager addFilters(List<Filter> filters) {
     for (Filter filter : filters) {
-      if (filter.isEnabledForInvocationType(InvocationType.CONSUMER)) {
+      if (filter.enabledForInvocationType(InvocationType.CONSUMER)) {
         consumerChains.addFilter(filter);
       }
 
-      if (filter.isEnabledForInvocationType(InvocationType.PROVIDER)) {
+      if (filter.enabledForInvocationType(InvocationType.PROVIDER)) {
         producerChains.addFilter(filter);
       }
     }
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/FilterNode.java b/core/src/main/java/org/apache/servicecomb/core/filter/FilterNode.java
index fa9ec9d1a..b5cb63c01 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/FilterNode.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/FilterNode.java
@@ -62,7 +62,7 @@ public class FilterNode {
   }
 
   public CompletableFuture<Response> onFilter(Invocation invocation) {
-    if (!filter.isEnabledForTransport(invocation.getTransportName())) {
+    if (!filter.enabledForTransport(invocation.getTransportName())) {
       return nextNode.onFilter(invocation);
     }
 
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/InvocationFilterChains.java b/core/src/main/java/org/apache/servicecomb/core/filter/InvocationFilterChains.java
index d64534ea4..064e4471b 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/InvocationFilterChains.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/InvocationFilterChains.java
@@ -48,7 +48,7 @@ public class InvocationFilterChains {
     FilterNode filterNode = microserviceChains.get(serviceName);
     if (filterNode == null) {
       List<Filter> serviceFilters = filters.entrySet().stream()
-          .filter(e -> e.getValue().isEnabledForMicroservice(application, serviceName))
+          .filter(e -> e.getValue().enabledForMicroservice(application, serviceName))
           .map(e -> e.getValue())
           .collect(Collectors.toList());
       serviceFilters.sort(Comparator.comparingInt(a -> a.getOrder(invocationType, application, serviceName)));
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/ProviderFilter.java b/core/src/main/java/org/apache/servicecomb/core/filter/ProviderFilter.java
index bfac61a03..49ba1e481 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/ProviderFilter.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/ProviderFilter.java
@@ -23,7 +23,7 @@ import org.apache.servicecomb.swagger.invocation.InvocationType;
 public interface ProviderFilter extends Filter {
   @Nonnull
   @Override
-  default boolean isEnabledForInvocationType(InvocationType invocationType) {
+  default boolean enabledForInvocationType(InvocationType invocationType) {
     return invocationType == InvocationType.PROVIDER;
   }
 }
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java
index 351b06d1f..03efe04ad 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ParameterValidatorFilter.java
@@ -21,12 +21,6 @@ import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 
 import javax.annotation.Nonnull;
-import jakarta.validation.ConstraintViolation;
-import jakarta.validation.ConstraintViolationException;
-import jakarta.validation.Validation;
-import jakarta.validation.ValidatorFactory;
-import jakarta.validation.executable.ExecutableValidator;
-import jakarta.validation.groups.Default;
 
 import org.apache.servicecomb.core.Invocation;
 import org.apache.servicecomb.core.filter.Filter;
@@ -46,6 +40,13 @@ import org.springframework.beans.factory.InitializingBean;
 
 import com.netflix.config.DynamicPropertyFactory;
 
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.ConstraintViolationException;
+import jakarta.validation.Validation;
+import jakarta.validation.ValidatorFactory;
+import jakarta.validation.executable.ExecutableValidator;
+import jakarta.validation.groups.Default;
+
 public class ParameterValidatorFilter implements ProviderFilter, InitializingBean {
   private static final Logger LOGGER = LoggerFactory.getLogger(ParameterValidatorFilter.class);
 
@@ -62,7 +63,7 @@ public class ParameterValidatorFilter implements ProviderFilter, InitializingBea
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER + 1000;
   }
 
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ProviderOperationFilter.java b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ProviderOperationFilter.java
index d1b07bff0..1e450ebf4 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ProviderOperationFilter.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ProviderOperationFilter.java
@@ -42,7 +42,7 @@ public class ProviderOperationFilter implements ProviderFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     // almost time, should be the last filter.
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER + 2000;
   }
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ScheduleFilter.java b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ScheduleFilter.java
index 7f08061fb..1f2c119c2 100644
--- a/core/src/main/java/org/apache/servicecomb/core/filter/impl/ScheduleFilter.java
+++ b/core/src/main/java/org/apache/servicecomb/core/filter/impl/ScheduleFilter.java
@@ -40,7 +40,7 @@ public class ScheduleFilter implements ProviderFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER;
   }
 
diff --git a/core/src/main/java/org/apache/servicecomb/core/filter/impl/SimpleLoadBalanceFilter.java b/core/src/main/java/org/apache/servicecomb/core/filter/impl/SimpleLoadBalanceFilter.java
deleted file mode 100644
index 2a0c1029f..000000000
--- a/core/src/main/java/org/apache/servicecomb/core/filter/impl/SimpleLoadBalanceFilter.java
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.servicecomb.core.filter.impl;
-
-import static org.apache.servicecomb.core.exception.ExceptionCodes.LB_ADDRESS_NOT_FOUND;
-
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import javax.annotation.Nonnull;
-
-import org.apache.servicecomb.core.Endpoint;
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.core.exception.Exceptions;
-import org.apache.servicecomb.core.filter.ConsumerFilter;
-import org.apache.servicecomb.core.filter.Filter;
-import org.apache.servicecomb.core.filter.FilterNode;
-import org.apache.servicecomb.core.governance.RetryContext;
-import org.apache.servicecomb.foundation.common.cache.VersionedCache;
-import org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx;
-import org.apache.servicecomb.registry.discovery.DiscoveryContext;
-import org.apache.servicecomb.registry.discovery.DiscoveryTree;
-import org.apache.servicecomb.swagger.invocation.InvocationType;
-import org.apache.servicecomb.swagger.invocation.Response;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-
-/**
- * build-in round robin LB, for demo scenes
- */
-public class SimpleLoadBalanceFilter implements ConsumerFilter {
-  private static final Logger LOGGER = LoggerFactory.getLogger(SimpleLoadBalanceFilter.class);
-
-  public static final String NAME = "simple-load-balance";
-
-  private class Service {
-    public static final String CONTEXT_KEY_LAST_SERVER = "x-context-last-server";
-
-    // Enough times to make sure to choose a different server in high volume.
-    private static final int COUNT = 17;
-
-    private final String name;
-
-    // key is grouping filter qualified name
-    private final Map<String, AtomicInteger> indexMap = new ConcurrentHashMapEx<>();
-
-    public Service(String name) {
-      this.name = name;
-    }
-
-    public String getName() {
-      return name;
-    }
-
-    public Endpoint selectEndpoint(Invocation invocation) {
-      DiscoveryContext context = new DiscoveryContext();
-      context.setInputParameters(invocation);
-      VersionedCache endpointsVersionedCache = discoveryTree.discovery(context,
-          invocation.getAppId(),
-          invocation.getMicroserviceName());
-      if (endpointsVersionedCache.isEmpty()) {
-        String msg = "No available address found.";
-        LOGGER.error("{} microserviceName={}, discoveryGroupName={}",
-            msg,
-            invocation.getMicroserviceName(),
-            endpointsVersionedCache.name());
-        throw Exceptions.consumer(LB_ADDRESS_NOT_FOUND, msg);
-      }
-
-      return selectEndpoint(invocation, endpointsVersionedCache.name(), endpointsVersionedCache.data());
-    }
-
-    private Endpoint selectEndpoint(Invocation invocation, String key, List<Endpoint> endpoints) {
-      RetryContext retryContext = invocation.getLocalContext(RetryContext.RETRY_CONTEXT);
-      if (retryContext == null) {
-        return chooseEndpoint(invocation, key, endpoints);
-      }
-
-      if (!retryContext.isRetry()) {
-        Endpoint server = chooseEndpoint(invocation, key, endpoints);
-        invocation.addLocalContext(CONTEXT_KEY_LAST_SERVER, server);
-        return server;
-      }
-
-      Endpoint lastServer = invocation.getLocalContext(CONTEXT_KEY_LAST_SERVER);
-      Endpoint nextServer = lastServer;
-      if (!retryContext.trySameServer()) {
-        for (int i = 0; i < COUNT; i++) {
-          Endpoint s = chooseEndpoint(invocation, key, endpoints);
-          if (s == null) {
-            break;
-          }
-          if (!s.equals(nextServer)) {
-            nextServer = s;
-            break;
-          }
-        }
-      }
-
-      LOGGER.info("operation failed {}, retry to instance [{}], last instance [{}], trace id {}",
-          invocation.getMicroserviceQualifiedName(),
-          nextServer == null ? "" : nextServer.getEndpoint(),
-          lastServer == null ? "" : lastServer.getEndpoint(),
-          invocation.getTraceId());
-      invocation.addLocalContext(CONTEXT_KEY_LAST_SERVER, nextServer);
-      return nextServer;
-    }
-
-    private Endpoint chooseEndpoint(Invocation invocation, String key, List<Endpoint> endpoints) {
-      AtomicInteger index = indexMap.computeIfAbsent(key, name -> {
-        LOGGER.info("Create loadBalancer for {}.", name);
-        return new AtomicInteger();
-      });
-      LOGGER.debug("invocation {} use discoveryGroup {}.",
-          invocation.getMicroserviceQualifiedName(),
-          key);
-
-      int idx = Math.abs(index.getAndIncrement());
-      idx = idx % endpoints.size();
-
-      return endpoints.get(idx);
-    }
-  }
-
-
-  private final Map<String, Service> servicesByName = new ConcurrentHashMapEx<>();
-
-  private DiscoveryTree discoveryTree;
-
-  @Autowired
-  public void setDiscoveryTree(DiscoveryTree discoveryTree) {
-    this.discoveryTree = discoveryTree;
-  }
-
-  @Nonnull
-  @Override
-  public String getName() {
-    return NAME;
-  }
-
-  @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
-    return Filter.CONSUMER_LOAD_BALANCE_ORDER;
-  }
-
-  @Override
-  public CompletableFuture<Response> onFilter(Invocation invocation, FilterNode nextNode) {
-    if (invocation.getEndpoint() != null) {
-      invocation.addLocalContext(RetryContext.RETRY_LOAD_BALANCE, false);
-      return nextNode.onFilter(invocation);
-    }
-    invocation.addLocalContext(RetryContext.RETRY_LOAD_BALANCE, true);
-    Service service = servicesByName.computeIfAbsent(invocation.getMicroserviceName(), Service::new);
-    Endpoint endpoint = service.selectEndpoint(invocation);
-    invocation.setEndpoint(endpoint);
-    return nextNode.onFilter(invocation);
-  }
-}
diff --git a/core/src/test/java/org/apache/servicecomb/core/filter/SimpleRetryFilter.java b/core/src/test/java/org/apache/servicecomb/core/filter/SimpleRetryFilter.java
index 059277847..b162bfb1f 100644
--- a/core/src/test/java/org/apache/servicecomb/core/filter/SimpleRetryFilter.java
+++ b/core/src/test/java/org/apache/servicecomb/core/filter/SimpleRetryFilter.java
@@ -36,7 +36,7 @@ public class SimpleRetryFilter implements ConsumerFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER - 900;
   }
 
diff --git a/core/src/test/java/org/apache/servicecomb/core/filter/impl/SimpleLoadBalanceFilterTest.java b/core/src/test/java/org/apache/servicecomb/core/filter/impl/SimpleLoadBalanceFilterTest.java
deleted file mode 100644
index 08c1eda3f..000000000
--- a/core/src/test/java/org/apache/servicecomb/core/filter/impl/SimpleLoadBalanceFilterTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.core.filter.impl;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-
-import org.apache.servicecomb.core.Endpoint;
-import org.apache.servicecomb.core.Invocation;
-import org.apache.servicecomb.core.filter.FilterNode;
-import org.apache.servicecomb.registry.discovery.DiscoveryContext;
-import org.apache.servicecomb.swagger.invocation.Response;
-import org.junit.Test;
-
-import mockit.Expectations;
-import mockit.Injectable;
-import mockit.Mocked;
-import mockit.Verifications;
-
-public class SimpleLoadBalanceFilterTest {
-  SimpleLoadBalanceFilter filter = new SimpleLoadBalanceFilter();
-
-  @Injectable
-  Invocation invocation;
-
-  @Injectable
-  Endpoint endpoint;
-
-  @Mocked
-  DiscoveryContext discoveryContext;
-
-  @Injectable
-  FilterNode nextNode;
-
-  @Test
-  public void should_invoke_next_directly_when_invocation_already_has_endpoint()
-      throws ExecutionException, InterruptedException {
-    Response response = Response.ok("ok");
-    new Expectations() {
-      {
-        invocation.getEndpoint();
-        result = endpoint;
-
-        nextNode.onFilter(invocation);
-        result = CompletableFuture.completedFuture(response);
-      }
-    };
-
-    Response result = filter.onFilter(invocation, nextNode).get();
-
-    assertThat(result).isSameAs(response);
-    new Verifications() {
-      {
-        discoveryContext.setInputParameters(invocation);
-        times = 0;
-      }
-    };
-  }
-}
diff --git a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/handler/AuthHandler.java b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/handler/AuthHandler.java
index ddc81adf8..a7838f2f8 100644
--- a/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/handler/AuthHandler.java
+++ b/demo/demo-edge/edge-service/src/main/java/org/apache/servicecomb/demo/edge/service/handler/AuthHandler.java
@@ -52,7 +52,7 @@ public class AuthHandler implements ConsumerFilter {
   }
 
   @Override
-  public boolean isEnabledForMicroservice(String application, String serviceName) {
+  public boolean enabledForMicroservice(String application, String serviceName) {
     if ("auth".equals(serviceName)) {
       return false;
     }
diff --git a/demo/demo-spring-boot-transport/demo-spring-boot-pojo-server/src/main/java/org/apache/servicecomb/demo/springboot/pojo/server/handler/MyHandler.java b/demo/demo-spring-boot-transport/demo-spring-boot-pojo-server/src/main/java/org/apache/servicecomb/demo/springboot/pojo/server/handler/MyHandler.java
index 615afab42..1f7673d6a 100644
--- a/demo/demo-spring-boot-transport/demo-spring-boot-pojo-server/src/main/java/org/apache/servicecomb/demo/springboot/pojo/server/handler/MyHandler.java
+++ b/demo/demo-spring-boot-transport/demo-spring-boot-pojo-server/src/main/java/org/apache/servicecomb/demo/springboot/pojo/server/handler/MyHandler.java
@@ -40,7 +40,7 @@ public class MyHandler implements ProviderFilter {
   public static final String SPLITPARAM_RESPONSE_USER_SUFFIX = "(modified by MyHandler)";
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 100;
   }
 
diff --git a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/filter/ProviderTestFilter.java b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/filter/ProviderTestFilter.java
index 63a1537ec..936f26838 100644
--- a/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/filter/ProviderTestFilter.java
+++ b/demo/demo-springmvc/springmvc-server/src/main/java/org/apache/servicecomb/demo/springmvc/filter/ProviderTestFilter.java
@@ -32,7 +32,7 @@ import org.springframework.stereotype.Component;
 @Component
 public class ProviderTestFilter implements ProviderFilter {
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 1800;
   }
 
diff --git a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderFilter.java b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderFilter.java
index 333a36edf..0a55d51dd 100644
--- a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderFilter.java
+++ b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeAddHeaderFilter.java
@@ -81,12 +81,12 @@ public class EdgeAddHeaderFilter implements ConsumerFilter {
   }
 
   @Override
-  public boolean isEnabledForTransport(String transport) {
+  public boolean enabledForTransport(String transport) {
     return enabled;
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER + 1991;
   }
 
diff --git a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeServerCodecFilter.java b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeServerCodecFilter.java
index c6b01d614..416672ea5 100644
--- a/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeServerCodecFilter.java
+++ b/edge/edge-core/src/main/java/org/apache/servicecomb/edge/core/EdgeServerCodecFilter.java
@@ -39,18 +39,18 @@ public class EdgeServerCodecFilter extends RestServerCodecFilter {
 
   @Nonnull
   @Override
-  public boolean isEnabledForInvocationType(InvocationType invocationType) {
+  public boolean enabledForInvocationType(InvocationType invocationType) {
     return invocationType == InvocationType.CONSUMER;
   }
 
   @Override
-  public boolean isEnabledForTransport(String transport) {
+  public boolean enabledForTransport(String transport) {
     // For edge service, this filter executed before load balancer and transport is always null.
     return true;
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER - 2000;
   }
 
diff --git a/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/ConsumerAbortFaultFilter.java b/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/ConsumerAbortFaultFilter.java
index 5c2b9d4e8..25c8f7799 100644
--- a/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/ConsumerAbortFaultFilter.java
+++ b/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/ConsumerAbortFaultFilter.java
@@ -39,7 +39,7 @@ public class ConsumerAbortFaultFilter implements ConsumerFilter {
   public static final String ABORTED_ERROR_MSG = "aborted by fault inject";
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER + 1020;
   }
 
diff --git a/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/ConsumerDelayFaultFilter.java b/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/ConsumerDelayFaultFilter.java
index 97e782fc4..7503be81f 100644
--- a/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/ConsumerDelayFaultFilter.java
+++ b/handlers/handler-fault-injection/src/main/java/org/apache/servicecomb/faultinjection/ConsumerDelayFaultFilter.java
@@ -36,7 +36,7 @@ public class ConsumerDelayFaultFilter implements ConsumerFilter {
   private static final Logger LOGGER = LoggerFactory.getLogger(ConsumerDelayFaultFilter.class);
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER + 1030;
   }
 
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 af259bb13..ac848c56a 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
@@ -41,7 +41,7 @@ public class ConsumerFlowControlFilter implements ConsumerFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER - 1990;
   }
 
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 43fbc0786..8d0fda11a 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
@@ -37,7 +37,7 @@ public class ProviderFlowControlFilter implements ProviderFilter {
   private final QpsControllerManager qpsControllerMgr = new QpsControllerManager(true);
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 1990;
   }
 
diff --git a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ConsumerInstanceBulkheadFilter.java b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ConsumerInstanceBulkheadFilter.java
index f811570e7..33db08c5a 100644
--- a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ConsumerInstanceBulkheadFilter.java
+++ b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ConsumerInstanceBulkheadFilter.java
@@ -55,7 +55,7 @@ public class ConsumerInstanceBulkheadFilter implements ConsumerFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER + 1060;
   }
 
diff --git a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ConsumerInstanceIsolationFilter.java b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ConsumerInstanceIsolationFilter.java
index d636395a2..a2eca3457 100644
--- a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ConsumerInstanceIsolationFilter.java
+++ b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ConsumerInstanceIsolationFilter.java
@@ -65,7 +65,7 @@ public class ConsumerInstanceIsolationFilter implements ConsumerFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER + 1050;
   }
 
diff --git a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderBulkheadFilter.java b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderBulkheadFilter.java
index 552c5c9e2..4bfaf3af9 100644
--- a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderBulkheadFilter.java
+++ b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderBulkheadFilter.java
@@ -54,7 +54,7 @@ public class ProviderBulkheadFilter implements ProviderFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 1880;
   }
 
diff --git a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderCircuitBreakerFilter.java b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderCircuitBreakerFilter.java
index dff10b9e7..a85b53372 100644
--- a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderCircuitBreakerFilter.java
+++ b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderCircuitBreakerFilter.java
@@ -54,7 +54,7 @@ public class ProviderCircuitBreakerFilter implements ProviderFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 1890;
   }
 
diff --git a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderRateLimitingFilter.java b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderRateLimitingFilter.java
index 69c5bc4ce..f72e2c279 100644
--- a/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderRateLimitingFilter.java
+++ b/handlers/handler-governance/src/main/java/org/apache/servicecomb/handler/governance/ProviderRateLimitingFilter.java
@@ -54,7 +54,7 @@ public class ProviderRateLimitingFilter implements ProviderFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 1900;
   }
 
diff --git a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/LoadBalanceFilter.java b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/LoadBalanceFilter.java
index 149097119..f37388962 100644
--- a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/LoadBalanceFilter.java
+++ b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/LoadBalanceFilter.java
@@ -114,7 +114,7 @@ public class LoadBalanceFilter implements ConsumerFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER;
   }
 
diff --git a/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/consumer/ConsumerAuthFilter.java b/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/consumer/ConsumerAuthFilter.java
index f9b57f5c7..fe3cc778c 100644
--- a/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/consumer/ConsumerAuthFilter.java
+++ b/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/consumer/ConsumerAuthFilter.java
@@ -42,7 +42,7 @@ public class ConsumerAuthFilter implements ConsumerFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER + 1010;
   }
 
diff --git a/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/provider/ProviderAuthFilter.java b/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/provider/ProviderAuthFilter.java
index 0b3dab471..51ef28eb5 100644
--- a/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/provider/ProviderAuthFilter.java
+++ b/handlers/handler-publickey-auth/src/main/java/org/apache/servicecomb/authentication/provider/ProviderAuthFilter.java
@@ -41,7 +41,7 @@ public class ProviderAuthFilter implements ProviderFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER + 1010;
   }
 
diff --git a/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterAddHeaderFilter.java b/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterAddHeaderFilter.java
index e40ee7dbd..d4c1fbe1c 100644
--- a/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterAddHeaderFilter.java
+++ b/handlers/handler-router/src/main/java/org/apache/servicecomb/router/custom/RouterAddHeaderFilter.java
@@ -104,13 +104,13 @@ public class RouterAddHeaderFilter implements Filter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return ProviderFilter.PROVIDER_SCHEDULE_FILTER_ORDER - 1970;
   }
 
   @Nonnull
   @Override
-  public boolean isEnabledForInvocationType(InvocationType invocationType) {
+  public boolean enabledForInvocationType(InvocationType invocationType) {
     // enable for both edge and producer
     return true;
   }
diff --git a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestInvocationMetersInitializer.java b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestInvocationMetersInitializer.java
index fc6e7e090..a25942cf5 100644
--- a/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestInvocationMetersInitializer.java
+++ b/metrics/metrics-core/src/test/java/org/apache/servicecomb/metrics/core/TestInvocationMetersInitializer.java
@@ -286,32 +286,32 @@ public class TestInvocationMetersInitializer {
     tree.from(registry.iterator(), new MeasurementGroupConfig(MeterInvocationConst.INVOCATION_NAME));
     List<Measurement> measurements = tree.findChild(MeterInvocationConst.INVOCATION_NAME).getMeasurements();
     int i = 0;
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=total:statistic=count:status=0:transport=rest:type=stage,0,2.0");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=total:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=total:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=handlers_request:statistic=count:status=0:transport=rest:type=stage,0,2.0");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=handlers_request:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=handlers_request:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=handlers_response:statistic=count:status=0:transport=rest:type=stage,0,2.0");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=handlers_response:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=handlers_response:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=prepare:statistic=count:status=0:transport=rest:type=stage,0,2.0");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=prepare:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=prepare:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=queue:statistic=count:status=0:transport=rest:type=stage,0,2.0");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=queue:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=queue:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=execution:statistic=count:status=0:transport=rest:type=stage,0,2.0");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=execution:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=execution:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=server_filters_request:statistic=count:status=0:transport=rest:type=stage,0,2.0");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=server_filters_request:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=server_filters_request:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=server_filters_response:statistic=count:status=0:transport=rest:type=stage,0,2.0");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=server_filters_response:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=server_filters_response:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=producer_send_response:statistic=count:status=0:transport=rest:type=stage,0,2.0");
-    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=producer_send_response:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
-    AssertUtil.assertMeasure(measurements, i, "servicecomb.invocation:operation=m.s.o:role=PRODUCER:stage=producer_send_response:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=total:statistic=count:status=0:transport=rest:type=stage,0,2.0");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=total:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=total:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=handlers_request:statistic=count:status=0:transport=rest:type=stage,0,2.0");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=handlers_request:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=handlers_request:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=handlers_response:statistic=count:status=0:transport=rest:type=stage,0,2.0");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=handlers_response:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=handlers_response:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=prepare:statistic=count:status=0:transport=rest:type=stage,0,2.0");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=prepare:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=prepare:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=queue:statistic=count:status=0:transport=rest:type=stage,0,2.0");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=queue:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=queue:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=execution:statistic=count:status=0:transport=rest:type=stage,0,2.0");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=execution:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=execution:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=server_filters_request:statistic=count:status=0:transport=rest:type=stage,0,2.0");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=server_filters_request:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=server_filters_request:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=server_filters_response:statistic=count:status=0:transport=rest:type=stage,0,2.0");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=server_filters_response:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=server_filters_response:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=producer_send_response:statistic=count:status=0:transport=rest:type=stage,0,2.0");
+    AssertUtil.assertMeasure(measurements, i++, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=producer_send_response:statistic=totalTime:status=0:transport=rest:type=stage,0,1.8000000000000002E-8");
+    AssertUtil.assertMeasure(measurements, i, "servicecomb.invocation:operation=m.s.o:role=PROVIDER:stage=producer_send_response:statistic=max:status=0:transport=rest:type=stage,0,9.000000000000001E-9");
   }
 }
diff --git a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayClientFilter.java b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayClientFilter.java
index 5b7de34dd..6a35299e7 100644
--- a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayClientFilter.java
+++ b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayClientFilter.java
@@ -48,12 +48,12 @@ public class HighwayClientFilter implements ConsumerFilter {
   }
 
   @Override
-  public boolean isEnabledForTransport(String transport) {
+  public boolean enabledForTransport(String transport) {
     return Const.HIGHWAY.equals(transport);
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER + 2000;
   }
 
diff --git a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerCodecFilter.java b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerCodecFilter.java
index 9d894e21c..6339c9cf3 100644
--- a/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerCodecFilter.java
+++ b/transports/transport-highway/src/main/java/org/apache/servicecomb/transport/highway/HighwayServerCodecFilter.java
@@ -46,13 +46,13 @@ public class HighwayServerCodecFilter implements ProviderFilter {
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     // almost time, should be the first filter.
     return Filter.PROVIDER_SCHEDULE_FILTER_ORDER - 2000;
   }
 
   @Override
-  public boolean isEnabledForTransport(String transport) {
+  public boolean enabledForTransport(String transport) {
     return Const.HIGHWAY.equals(transport);
   }
 
diff --git a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestClientCodecFilter.java b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestClientCodecFilter.java
index aceab8316..a9dc6c673 100644
--- a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestClientCodecFilter.java
+++ b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestClientCodecFilter.java
@@ -49,12 +49,12 @@ public class RestClientCodecFilter implements ConsumerFilter {
   }
 
   @Override
-  public boolean isEnabledForTransport(String transport) {
+  public boolean enabledForTransport(String transport) {
     return Const.RESTFUL.equals(transport);
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER + 1990;
   }
 
diff --git a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestClientSenderFilter.java b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestClientSenderFilter.java
index 854ba5ed3..026d04f46 100644
--- a/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestClientSenderFilter.java
+++ b/transports/transport-rest/transport-rest-client/src/main/java/org/apache/servicecomb/transport/rest/client/RestClientSenderFilter.java
@@ -38,12 +38,12 @@ public class RestClientSenderFilter implements ConsumerFilter {
   }
 
   @Override
-  public boolean isEnabledForTransport(String transport) {
+  public boolean enabledForTransport(String transport) {
     return Const.RESTFUL.equals(transport);
   }
 
   @Override
-  public int getOrder(InvocationType invocationType, String microservice) {
+  public int getOrder(InvocationType invocationType, String application, String serviceName) {
     return Filter.CONSUMER_LOAD_BALANCE_ORDER + 2000;
   }
 
diff --git a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientCodecFilterTest.java b/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientCodecFilterTest.java
deleted file mode 100644
index 893c2a80a..000000000
--- a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientCodecFilterTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.transport.rest.client;
-
-// TODO: vert.x 4 changed HttpClientRequest creation behavior, and will
-// connect to server and when successfully HttpClientRequest will created. So tests case will fail.
-// These unit tests is hard to modify, will change it to integration test or think another method
-// to test them
-class RestClientCodecFilterTest extends RestClientTestBase {
-//  RestClientEncoder encoder = new RestClientEncoder();
-//
-//  RestClientDecoder decoder = new RestClientDecoder();
-//
-//  RestClientCodecFilter codecFilter = new RestClientCodecFilter()
-//      .setTransportContextFactory(factory)
-//      .setEncoder(encoder)
-//      .setDecoder(decoder);
-//
-//  @Test
-//  void should_record_start_and_finish_client_filters_time_when_succeed() {
-//    init("query", null, false);
-//
-//    Response response = codecFilter.onFilter(invocation, FilterNode.EMPTY).join();
-//
-//    assertThat(response.getStatusCode()).isEqualTo(Status.OK.getStatusCode());
-//    assertThat(invocation.getInvocationStageTrace().getStartClientFiltersRequest()).isNotEqualTo(0);
-//    assertThat(invocation.getInvocationStageTrace().getFinishClientFiltersResponse()).isNotEqualTo(0);
-//  }
-//
-//  @Test
-//  void should_record_start_and_finish_client_filters_time_when_failed() {
-//    init("query", null, false);
-//
-//    RuntimeExceptionWithoutStackTrace mockThrowable = new RuntimeExceptionWithoutStackTrace("mock filter failed");
-//    FilterNode filterNode = new FilterNode(null) {
-//      @Override
-//      public CompletableFuture<Response> onFilter(Invocation invocation) {
-//        return AsyncUtils.completeExceptionally(mockThrowable);
-//      }
-//    };
-//
-//    Throwable throwable = catchThrowable(() -> codecFilter.onFilter(invocation, filterNode).join());
-//
-//    assertThat(throwable.getCause()).isSameAs(mockThrowable);
-//    assertThat(invocation.getInvocationStageTrace().getStartClientFiltersRequest()).isNotEqualTo(0);
-//    assertThat(invocation.getInvocationStageTrace().getFinishClientFiltersResponse()).isNotEqualTo(0);
-//  }
-}
diff --git a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientDecoderTest.java b/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientDecoderTest.java
deleted file mode 100644
index f4b35dacb..000000000
--- a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientDecoderTest.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.transport.rest.client;
-
-// TODO: vert.x 4 changed HttpClientRequest creation behavior, and will
-// connect to server and when successfully HttpClientRequest will created. So tests case will fail.
-// These unit tests is hard to modify, will change it to integration test or think another method
-// to test them
-class RestClientDecoderTest extends RestClientTestBase {
-//  static RestClientDecoder decoder = new RestClientDecoder();
-//
-//  @Test
-//  void should_decode_by_json_when_no_content_type() {
-//    init("query", null, false);
-//
-//    Response response = Response.ok(Buffer.buffer("\"result\""));
-//    decoder.decode(invocation, response);
-//
-//    assertThat(response.<String>getResult()).isEqualTo("result");
-//  }
-//
-//  @Test
-//  void should_decode_2xx_body() {
-//    init("query", null, false);
-//
-//    Response response = Response.ok(Buffer.buffer("\"result\""))
-//        .setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
-//    decoder.decode(invocation, response);
-//
-//    assertThat(response.<String>getResult()).isEqualTo("result");
-//  }
-//
-//  @Test
-//  void should_throw_exception_when_decode_invalid_2xx_body() {
-//    init("query", null, false);
-//
-//    Response response = Response.ok(Buffer.buffer("result"))
-//        .setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
-//    Throwable throwable = catchThrowable(() -> decoder.decode(invocation, response));
-//
-//    assertThat(throwable.toString()).isEqualTo(
-//        "InvocationException: code=400;msg=CommonExceptionData{code='scb_rest_client.40000002', message='failed to decode success response body.', dynamic={}}");
-//  }
-//
-//  @Test
-//  void should_decode_by_content_type_with_charset() {
-//    init("query", null, false);
-//
-//    Response response = Response.ok(Buffer.buffer("\"result\""))
-//        .setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON + ";charset=UTF-8");
-//    decoder.decode(invocation, response);
-//
-//    assertThat(response.<String>getResult()).isEqualTo("result");
-//  }
-//
-//  @Test
-//  void should_throw_exception_when_decode_not_2xx_response() {
-//    init("query", null, false);
-//
-//    CommonExceptionData data = new CommonExceptionData("error");
-//    String json = Json.encodePrettily(data);
-//    Response response = Response
-//        .status(BAD_REQUEST)
-//        .entity(Buffer.buffer(json))
-//        .setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
-//
-//    Throwable throwable = catchThrowable(() -> decoder.decode(invocation, response));
-//
-//    assertThat(throwable.toString()).isEqualTo("InvocationException: code=400;msg={message=error}");
-//  }
-//
-//  @Test
-//  void should_throw_exception_when_decode_invalid_not_2xx_body() {
-//    init("query", null, false);
-//
-//    Response response = Response
-//        .status(BAD_REQUEST)
-//        .entity(Buffer.buffer("result"))
-//        .setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
-//    Throwable throwable = catchThrowable(() -> decoder.decode(invocation, response));
-//
-//    assertThat(throwable.toString()).isEqualTo(
-//        "InvocationException: code=400;msg=CommonExceptionData{code='scb_rest_client.40000003', message='failed to decode fail response body.', dynamic={}}");
-//  }
-}
diff --git a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientEncoderTest.java b/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientEncoderTest.java
deleted file mode 100644
index 3d0ea1ba8..000000000
--- a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientEncoderTest.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.transport.rest.client;
-
-// TODO: vert.x 4 changed HttpClientRequest creation behavior, and will
-// connect to server and when successfully HttpClientRequest will created. So tests case will fail.
-// These unit tests is hard to modify, will change it to integration test or think another method
-// to test them
-class RestClientEncoderTest extends RestClientTestBase {
-//  RestClientEncoder encoder = new RestClientEncoder();
-//
-//  void init(String operationId, Map<String, Object> swaggerArgs) {
-//    init(operationId, swaggerArgs, false);
-//  }
-//
-//  @Test
-//  void should_encode_header_parameter() {
-//    init("header", ImmutableMap.of("header", "value"));
-//
-//    encoder.encode(invocation);
-//
-//    assertThat(httpClientRequest.headers().get("header"))
-//        .isEqualTo("value");
-//  }
-//
-//  @Test
-//  void should_encode_servicecomb_headers() {
-//    init("header", ImmutableMap.of("header", "value"));
-//
-//    encoder.encode(invocation);
-//
-//    assertThat(httpClientRequest.headers().toString())
-//        .isEqualTo("header: value\n"
-//            + "x-cse-target-microservice: defaultMicroservice\n"
-//            + "x-cse-context: {\"x-cse-src-microservice\":\"defaultMicroservice\"}\n");
-//  }
-//
-//  @Test
-//  void should_not_encode_servicecomb_headers_when_invoke_3rd_service_and_filter_servicecomb_headers() {
-//    init("header", ImmutableMap.of("header", "value"));
-//    referenceConfig.setThirdPartyService(true);
-//    operationMeta.getConfig().setClientRequestHeaderFilterEnabled(true);
-//
-//    encoder.encode(invocation);
-//
-//    assertThat(httpClientRequest.headers().toString())
-//        .isEqualTo("header: value\n");
-//  }
-//
-//  @Test
-//  void should_encode_servicecomb_headers_when_invoke_3rd_service_and_not_filter_servicecomb_headers() {
-//    init("header", ImmutableMap.of("header", "value"));
-//    referenceConfig.setThirdPartyService(true);
-//    operationMeta.getConfig().setClientRequestHeaderFilterEnabled(false);
-//
-//    encoder.encode(invocation);
-//
-//    assertThat(httpClientRequest.headers().toString())
-//        .isEqualTo("header: value\n"
-//            + "x-cse-target-microservice: defaultMicroservice\n"
-//            + "x-cse-context: {\"x-cse-src-microservice\":\"defaultMicroservice\"}\n");
-//  }
-//
-//  @Test
-//  void should_encode_cookie_parameter() {
-//    init("cookie", ImmutableMap.of("cookie1", "v1", "cookie2", "v2"));
-//
-//    encoder.encode(invocation);
-//
-//    assertThat(httpClientRequest.headers().get(HttpHeaders.COOKIE))
-//        .isEqualTo("cookie1=v1; cookie2=v2");
-//  }
-//
-//  @Test
-//  void should_encode_body_parameter() {
-//    init("body", ImmutableMap.of("body", "value"));
-//
-//    encoder.encode(invocation);
-//
-//    assertThat(transportContext.getRequestParameters().getBodyBuffer().toString())
-//        .isEqualTo("\"value\"");
-//  }
-//
-//  @Test
-//  void should_encode_form_attribute_parameter() {
-//    init("form", ImmutableMap.of("form1", "v1", "form2", "v2"));
-//
-//    encoder.encode(invocation);
-//
-//    assertThat(httpClientRequest.headers().get(HttpHeaders.CONTENT_TYPE))
-//        .isEqualTo(MediaType.APPLICATION_FORM_URLENCODED);
-//    assertThat(transportContext.getRequestParameters().getBodyBuffer().toString())
-//        .isEqualTo("form1=v1&form2=v2");
-//  }
-//
-//  @Test
-//  void should_not_encode_null_form_attribute() {
-//    Map<String, Object> swaggerArgs = new HashMap<>();
-//    swaggerArgs.put("form1", "v1");
-//    swaggerArgs.put("form2", null);
-//    init("form", swaggerArgs);
-//
-//    encoder.encode(invocation);
-//
-//    assertThat(httpClientRequest.headers().get(HttpHeaders.CONTENT_TYPE))
-//        .isEqualTo(MediaType.APPLICATION_FORM_URLENCODED);
-//    assertThat(transportContext.getRequestParameters().getBodyBuffer().toString())
-//        .isEqualTo("form1=v1");
-//  }
-//
-//  @Test
-//  void should_encode_form_with_upload_parameter() {
-//    init("formWithUpload", ImmutableMap.of("form1", "v1", "form2", new File("form2")));
-//
-//    encoder.encode(invocation);
-//
-//    RestClientRequestParameters requestParameters = transportContext.getRequestParameters();
-//    assertThat(requestParameters.getBodyBuffer().toString())
-//        .isEqualTo("\r\n"
-//            + "--my-boundary\r\n"
-//            + "Content-Disposition: form-data; name=\"form1\"\r\n"
-//            + "\r\n"
-//            + "v1");
-//    List<Part> parts = Lists.newArrayList(requestParameters.getUploads().get("form2"));
-//    assertThat(parts).hasSize(1);
-//    assertThat(((FilePart) parts.get(0))).isInstanceOf(FilePart.class);
-//  }
-//
-//  @Test
-//  void should_encode_form_with_upload_list() {
-//    init("formWithUploadList", ImmutableMap.of("files", Arrays.asList(new File("f1"), new File("f2"))));
-//
-//    encoder.encode(invocation);
-//
-//    checkUploadList();
-//  }
-//
-//  @Test
-//  void should_encode_form_with_upload_array() {
-//    init("formWithUploadList", ImmutableMap.of("files", new File[] {new File("f1"), new File("f2")}));
-//
-//    encoder.encode(invocation);
-//
-//    checkUploadList();
-//  }
-//
-//  private void checkUploadList() {
-//    RestClientRequestParameters requestParameters = transportContext.getRequestParameters();
-//    assertThat(requestParameters.getBodyBuffer()).isNull();
-//    List<Part> parts = Lists.newArrayList(requestParameters.getUploads().get("files"));
-//    assertThat(parts).hasSize(2);
-//    assertThat(((FilePart) parts.get(0)).getAbsolutePath()).endsWith("f1");
-//    assertThat(((FilePart) parts.get(1)).getAbsolutePath()).endsWith("f2");
-//  }
-}
diff --git a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientTestBase.java b/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientTestBase.java
deleted file mode 100644
index 563b38ae3..000000000
--- a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientTestBase.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.servicecomb.transport.rest.client;
-
-// TODO: vert.x 4 changed HttpClientRequest creation behavior, and will
-// connect to server and when successfully HttpClientRequest will created. So tests case will fail.
-// These unit tests is hard to modify, will change it to integration test or think another method
-// to test them
-public class RestClientTestBase {
-//  static SCBEngine scbEngine;
-//
-//  static Transport restTransport = new FakeRestTransport();
-//
-//  static RestClientTransportContextFactory factory = new RestClientTransportContextFactory()
-//      .setBoundaryFactory(() -> "my-boundary");
-//
-//  ReferenceConfig referenceConfig = new ReferenceConfig(Const.RESTFUL, Const.DEFAULT_VERSION_RULE);
-//
-//  OperationMeta operationMeta;
-//
-//  RestOperationMeta restOperationMeta;
-//
-//  Invocation invocation;
-//
-//  RestClientTransportContext transportContext;
-//
-//  HttpClientRequest httpClientRequest;
-//
-//  @BeforeAll
-//  static void beforeAll() {
-//    ConfigUtil.installDynamicConfig();
-//    scbEngine = SCBBootstrap.createSCBEngineForTest()
-//        .addProducerMeta(SCHEMA_ID, new RestFeatureController());
-//
-//    RestClientTransportContextFactory transportContextFactory = new RestClientTransportContextFactory()
-//        .setBoundaryFactory(BoundaryFactory.DEFAULT)
-//        .setHttpClientRequestFactory(HttpClientRequestFactory.DEFAULT);
-//    RestClientCodecFilter restClientCodecFilter = new RestClientCodecFilter()
-//        .setTransportContextFactory(transportContextFactory)
-//        .setEncoder(new RestClientEncoder())
-//        .setDecoder(new RestClientDecoder());
-//    scbEngine.getFilterChainsManager()
-//        .addFilters(Arrays.asList(
-//            new SimpleLoadBalanceFilter(),
-//            restClientCodecFilter,
-//            new RestClientSenderFilter(),
-//            new RestServerCodecFilter(),
-//            new ScheduleFilter(),
-//            new ProviderOperationFilter()
-//        ));
-//
-//    scbEngine.run();
-//    HttpClients.load();
-//  }
-//
-//  @AfterAll
-//  static void afterAll() {
-//    scbEngine.destroy();
-//    HttpClients.destroy();
-//
-//    ArchaiusUtils.resetConfig();
-//  }
-//
-//  void init(String operationId, Map<String, Object> swaggerArgs, boolean ssl) {
-//    operationMeta = scbEngine.getProducerMicroserviceMeta()
-//        .ensureFindSchemaMeta(SCHEMA_ID)
-//        .ensureFindOperation(operationId);
-//    restOperationMeta = RestMetaUtils.getRestOperationMeta(operationMeta);
-//
-//    invocation = InvocationFactory.forConsumer(
-//        referenceConfig, operationMeta, operationMeta.buildBaseConsumerRuntimeType(), swaggerArgs);
-//
-//    String url = "rest://localhost:1234?sslEnabled=" + ssl;
-//    invocation.setEndpoint(new Endpoint(restTransport, url));
-//
-//    transportContext = factory.create(invocation);
-//    invocation.setTransportContext(transportContext);
-//    httpClientRequest = transportContext.getHttpClientRequest();
-//  }
-//
-//  String absoluteURI() {
-//    return httpClientRequest.absoluteURI();
-//  }
-}
diff --git a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientTransportContextFactoryTest.java b/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientTransportContextFactoryTest.java
deleted file mode 100644
index a5a299ac6..000000000
--- a/transports/transport-rest/transport-rest-client/src/test/java/org/apache/servicecomb/transport/rest/client/RestClientTransportContextFactoryTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.servicecomb.transport.rest.client;
-
-// TODO: vert.x 4 changed HttpClientRequest creation behavior, and will
-// connect to server and when successfully HttpClientRequest will created. So tests case will fail.
-// These unit tests is hard to modify, will change it to integration test or think another method
-// to test them
-class RestClientTransportContextFactoryTest extends RestClientTestBase {
-//  void init(Map<String, Object> swaggerArgs, boolean ssl) {
-//    init("query", swaggerArgs, ssl);
-//  }
-//
-//  @Test
-//  void should_create_without_ssl() {
-//    init(null, false);
-//
-//    assertThat(absoluteURI()).isEqualTo("http://localhost:1234/query");
-//  }
-//
-//  @Test
-//  void should_create_with_ssl() {
-//    init(null, true);
-//
-//    assertThat(absoluteURI()).isEqualTo("https://localhost:1234/query");
-//  }
-//
-//  @Test
-//  void should_create_with_query() {
-//    init(ImmutableMap.of("query", "value"), true);
-//
-//    assertThat(absoluteURI()).isEqualTo("https://localhost:1234/query?query=value");
-//  }
-//
-//  @Test
-//  void should_ignore_null_query_value() {
-//    Map<String, Object> swaggerArgs = new HashMap<>();
-//    swaggerArgs.put("query", null);
-//    init(swaggerArgs, true);
-//
-//    assertThat(absoluteURI()).isEqualTo("https://localhost:1234/query");
-//  }
-//
-//  @Test
-//  void should_create_with_query_list() {
-//    init(ImmutableMap.of("query", Arrays.asList("v1", "v2")), true);
-//
-//    assertThat(absoluteURI()).isEqualTo("https://localhost:1234/query?query=v1&query=v2");
-//  }
-//
-//  @Test
-//  void should_ignore_null_in_query_list() {
-//    init(ImmutableMap.of("query", Arrays.asList("v1", null)), true);
-//
-//    assertThat(absoluteURI()).isEqualTo("https://localhost:1234/query?query=v1");
-//  }
-//
-//  @Test
-//  void should_create_with_query_array() {
-//    init(ImmutableMap.of("query", new String[] {"v1", "v2"}), true);
-//
-//    assertThat(absoluteURI()).isEqualTo("https://localhost:1234/query?query=v1&query=v2");
-//  }
-//
-//  @Test
-//  void should_ignore_null_in_query_array() {
-//    init(ImmutableMap.of("query", new String[] {"v1", null}), true);
-//
-//    assertThat(absoluteURI()).isEqualTo("https://localhost:1234/query?query=v1");
-//  }
-//
-//  @Test
-//  void should_get_local_address_as_not_connected_before_connect() {
-//    init(null, true);
-//
-//    assertThat(transportContext.getLocalAddress()).isEqualTo("not connected");
-//  }
-//
-//  @Test
-//  void should_allowed_modify_host() {
-//    factory.setHttpClientRequestFactory((invocation, httpClient, options) -> {
-//      options.setHost(invocation.getSwaggerArgument("clusterId") + "." + options.getHost());
-//      return httpClient.request(options).result();
-//    });
-//
-//    init(ImmutableMap.of("clusterId", "my-id"), true);
-//
-//    assertThat(absoluteURI()).isEqualTo("https://my-id.localhost:1234/query");
-//
-//    factory.setHttpClientRequestFactory(HttpClientRequestFactory.DEFAULT);
-//  }
-}