diff --git a/.artifacts b/.artifacts index 6532ad99c3..a12a335e0d 100644 --- a/.artifacts +++ b/.artifacts @@ -30,6 +30,7 @@ dubbo-config-api dubbo-config-spring dubbo-config-spring6 dubbo-configcenter +dubbo-configcenter-file dubbo-configcenter-apollo dubbo-configcenter-nacos dubbo-configcenter-zookeeper @@ -50,6 +51,7 @@ dubbo-kubernetes dubbo-maven-plugin dubbo-metadata dubbo-metadata-api +dubbo-metadata-rest dubbo-metadata-definition-protobuf dubbo-metadata-processor dubbo-metadata-report-nacos @@ -64,6 +66,7 @@ dubbo-metrics-registry dubbo-metrics-config-center dubbo-monitor dubbo-monitor-api +dubbo-monitor-common dubbo-monitor-default dubbo-native dubbo-parent @@ -82,6 +85,7 @@ dubbo-remoting-api dubbo-remoting-http dubbo-remoting-netty dubbo-remoting-netty4 +dubbo-remoting-zookeeper-api dubbo-remoting-zookeeper dubbo-remoting-zookeeper-curator5 dubbo-rpc @@ -117,3 +121,18 @@ dubbo-zookeeper-curator5-spring-boot-starter dubbo-spring-security dubbo-tracing dubbo-xds +dubbo-plugin-cluster-mergeable +dubbo-plugin-mock +dubbo-plugin-router-script +dubbo-plugin-router-mesh +dubbo-plugin-router-condition +dubbo-plugin-router-tag +dubbo-plugin-loadbalance-adaptive +dubbo-plugin-access-log +dubbo-plugin-tps +dubbo-plugin-token +dubbo-plugin-generic-invoke +dubbo-plugin-context +dubbo-plugin-classloader-filter +dubbo-plugin-proxy-bytebuddy +dubbo-plugin-qos-trace diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/ClusterScopeModelInitializer.java b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/ClusterScopeModelInitializer.java index c7a434b421..ede8f85f03 100644 --- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/ClusterScopeModelInitializer.java +++ b/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/ClusterScopeModelInitializer.java @@ -17,10 +17,7 @@ package org.apache.dubbo.rpc.cluster; import org.apache.dubbo.common.beans.factory.ScopeBeanFactory; -import org.apache.dubbo.rpc.AdaptiveMetrics; -import org.apache.dubbo.rpc.cluster.merger.MergerFactory; import org.apache.dubbo.rpc.cluster.router.RouterSnapshotSwitcher; -import org.apache.dubbo.rpc.cluster.router.mesh.route.MeshRuleManager; import org.apache.dubbo.rpc.cluster.support.ClusterUtils; import org.apache.dubbo.rpc.model.ApplicationModel; import org.apache.dubbo.rpc.model.FrameworkModel; @@ -37,14 +34,10 @@ public class ClusterScopeModelInitializer implements ScopeModelInitializer { @Override public void initializeApplicationModel(ApplicationModel applicationModel) { ScopeBeanFactory beanFactory = applicationModel.getBeanFactory(); - beanFactory.registerBean(MergerFactory.class); beanFactory.registerBean(ClusterUtils.class); - beanFactory.registerBean(AdaptiveMetrics.class); } @Override public void initializeModuleModel(ModuleModel moduleModel) { - ScopeBeanFactory beanFactory = moduleModel.getBeanFactory(); - beanFactory.registerBean(MeshRuleManager.class); } } diff --git a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster index 75dbd9f694..3530e85da1 100644 --- a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster +++ b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster @@ -1,4 +1,3 @@ -mock=org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterWrapper scope=org.apache.dubbo.rpc.cluster.support.wrapper.ScopeClusterWrapper failover=org.apache.dubbo.rpc.cluster.support.FailoverCluster failfast=org.apache.dubbo.rpc.cluster.support.FailfastCluster @@ -6,6 +5,5 @@ failsafe=org.apache.dubbo.rpc.cluster.support.FailsafeCluster failback=org.apache.dubbo.rpc.cluster.support.FailbackCluster forking=org.apache.dubbo.rpc.cluster.support.ForkingCluster available=org.apache.dubbo.rpc.cluster.support.AvailableCluster -mergeable=org.apache.dubbo.rpc.cluster.support.MergeableCluster broadcast=org.apache.dubbo.rpc.cluster.support.BroadcastCluster -zone-aware=org.apache.dubbo.rpc.cluster.support.registry.ZoneAwareCluster \ No newline at end of file +zone-aware=org.apache.dubbo.rpc.cluster.support.registry.ZoneAwareCluster diff --git a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.LoadBalance b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.LoadBalance index 1bb371b7f7..1a62761975 100644 --- a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.LoadBalance +++ b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.LoadBalance @@ -3,4 +3,3 @@ roundrobin=org.apache.dubbo.rpc.cluster.loadbalance.RoundRobinLoadBalance leastactive=org.apache.dubbo.rpc.cluster.loadbalance.LeastActiveLoadBalance consistenthash=org.apache.dubbo.rpc.cluster.loadbalance.ConsistentHashLoadBalance shortestresponse=org.apache.dubbo.rpc.cluster.loadbalance.ShortestResponseLoadBalance -adaptive=org.apache.dubbo.rpc.cluster.loadbalance.AdaptiveLoadBalance diff --git a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter index 28a9e73853..0b99112214 100644 --- a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter +++ b/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter @@ -1,4 +1 @@ -consumercontext=org.apache.dubbo.rpc.cluster.filter.support.ConsumerContextFilter -consumer-classloader=org.apache.dubbo.rpc.cluster.filter.support.ConsumerClassLoaderFilter router-snapshot=org.apache.dubbo.rpc.cluster.router.RouterSnapshotFilter -metricsClusterFilter=org.apache.dubbo.rpc.cluster.filter.support.MetricsClusterFilter \ No newline at end of file diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/RouterChainTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/RouterChainTest.java index a905ca90bc..01911e6ce2 100644 --- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/RouterChainTest.java +++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/RouterChainTest.java @@ -1,253 +1,253 @@ -/* - * 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.dubbo.rpc.cluster; - - -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import org.apache.dubbo.common.URL; -import org.apache.dubbo.common.config.configcenter.ConfigChangeType; -import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent; -import org.apache.dubbo.common.config.configcenter.DynamicConfiguration; -import org.apache.dubbo.common.url.component.ServiceConfigURL; -import org.apache.dubbo.common.utils.CollectionUtils; -import org.apache.dubbo.rpc.Invoker; -import org.apache.dubbo.rpc.RpcContext; -import org.apache.dubbo.rpc.RpcInvocation; -import org.apache.dubbo.rpc.cluster.filter.DemoService; -import org.apache.dubbo.rpc.cluster.router.RouterSnapshotSwitcher; -import org.apache.dubbo.rpc.cluster.router.condition.config.AppStateRouter; -import org.apache.dubbo.rpc.cluster.router.condition.config.ListenableStateRouter; -import org.apache.dubbo.rpc.cluster.router.condition.config.ServiceStateRouter; -import org.apache.dubbo.rpc.cluster.router.mesh.route.MeshAppRuleListener; -import org.apache.dubbo.rpc.cluster.router.mesh.route.MeshRuleManager; -import org.apache.dubbo.rpc.cluster.router.state.BitList; -import org.apache.dubbo.rpc.model.FrameworkModel; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.mockito.Mockito; - -import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY; -import static org.apache.dubbo.common.constants.CommonConstants.TAG_KEY; -import static org.apache.dubbo.rpc.cluster.router.mesh.route.MeshRuleConstants.MESH_RULE_DATA_ID_SUFFIX; -import static org.mockito.Mockito.when; - -class RouterChainTest { - - /** - * verify the router and state router loaded by default - */ - @Test - void testBuildRouterChain() { - RouterChain routerChain = createRouterChanin(); - Assertions.assertEquals(0, routerChain.getRouters().size()); - Assertions.assertEquals(7, routerChain.getStateRouters().size()); - } - - private RouterChain createRouterChanin() { - Map parameters = new HashMap<>(); - parameters.put(INTERFACE_KEY, DemoService.class.getName()); - parameters.put("registry", "zookeeper"); - URL url = new ServiceConfigURL("dubbo", - "127.0.0.1", - 20881, - DemoService.class.getName(), - parameters); - - RouterChain routerChain = RouterChain.buildChain(DemoService.class, url); - return routerChain; - } - - @Test - void testRoute() { - RouterChain routerChain = createRouterChanin(); - - // mockInvoker will be filtered out by MockInvokersSelector - Invoker mockInvoker = createMockInvoker(); - - // invoker1 will be filtered out by MeshStateRouter - Map map1 = new HashMap<>(); - map1.put("env-sign", "yyyyyyy"); - Invoker invoker1 = createNormalInvoker(map1); - - // invoker2 will be filtered out by TagStateRouter - Map map2 = new HashMap<>(); - map2.put("env-sign", "xxx"); - map2.put("tag1", "hello"); - Invoker invoker2 = createNormalInvoker(map2); - - // invoker3 will be filtered out by AppStateRouter - Map map3 = new HashMap<>(); - map3.put("env-sign", "xxx"); - map3.put("tag1", "hello"); - map3.put(TAG_KEY, "TAG_"); - Invoker invoker3 = createNormalInvoker(map3); - - // invoker4 will be filtered out by ServiceStateRouter - Map map4 = new HashMap<>(); - map4.put("env-sign", "xxx"); - map4.put("tag1", "hello"); - map4.put(TAG_KEY, "TAG_"); - map4.put("timeout", "5000"); - Invoker invoker4 = createNormalInvoker(map4); - - // invoker5 is the only one returned at the end that is not filtered out - Map map5 = new HashMap<>(); - map5.put("env-sign", "xxx"); - map5.put("tag1", "hello"); - map5.put(TAG_KEY, "TAG_"); - map5.put("timeout", "5000"); - map5.put("serialization", "hessian2"); - Invoker invoker5 = createNormalInvoker(map5); - - BitList> invokers = new BitList<>(Arrays.asList(mockInvoker, invoker1, invoker2, invoker3, invoker4, invoker5)); - routerChain.setInvokers(invokers, () -> {}); - - // mesh rule for MeshStateRouter - MeshRuleManager meshRuleManager = mockInvoker.getUrl().getOrDefaultModuleModel().getBeanFactory().getBean(MeshRuleManager.class); - ConcurrentHashMap appRuleListeners = meshRuleManager.getAppRuleListeners(); - MeshAppRuleListener meshAppRuleListener = appRuleListeners.get(invoker1.getUrl().getRemoteApplication()); - ConfigChangedEvent configChangedEvent = new ConfigChangedEvent("demo-route" + MESH_RULE_DATA_ID_SUFFIX, DynamicConfiguration.DEFAULT_GROUP, - MESH_RULE1 + "---\n" + MESH_RULE2, ConfigChangeType.ADDED); - meshAppRuleListener.process(configChangedEvent); - - - // condition rule for AppStateRouter&ServiceStateRouter - ListenableStateRouter serviceRouter = routerChain.getStateRouters().stream().filter(s -> s instanceof ServiceStateRouter).map(s -> (ListenableStateRouter) s).findAny().orElse(null); - ConfigChangedEvent serviceConditionEvent = new ConfigChangedEvent(DynamicConfiguration.getRuleKey(mockInvoker.getUrl()) + ".condition-router", DynamicConfiguration.DEFAULT_GROUP, - SERVICE_CONDITION_RULE, ConfigChangeType.ADDED); - serviceRouter.process(serviceConditionEvent); - - ListenableStateRouter appRouter = routerChain.getStateRouters().stream().filter(s -> s instanceof AppStateRouter).map(s -> (ListenableStateRouter) s).findAny().orElse(null); - ConfigChangedEvent appConditionEvent = new ConfigChangedEvent("app.condition-router", DynamicConfiguration.DEFAULT_GROUP, - APP_CONDITION_RULE, ConfigChangeType.ADDED); - appRouter.process(appConditionEvent); - - // prepare consumerUrl and RpcInvocation - URL consumerUrl = URL.valueOf("consumer://localhost/DemoInterface?remote.application=app1"); - RpcInvocation rpcInvocation = new RpcInvocation(); - rpcInvocation.setServiceName("DemoService"); - rpcInvocation.setObjectAttachment("trafficLabel", "xxx"); - rpcInvocation.setObjectAttachment(TAG_KEY, "TAG_"); - - RpcContext.getServiceContext().setNeedPrintRouterSnapshot(true); - RouterSnapshotSwitcher routerSnapshotSwitcher = FrameworkModel.defaultModel().getBeanFactory().getBean(RouterSnapshotSwitcher.class); - routerSnapshotSwitcher.addEnabledService("org.apache.dubbo.demo.DemoService"); - // route - List> result = routerChain.getSingleChain(consumerUrl, invokers, rpcInvocation) - .route(consumerUrl, invokers, rpcInvocation); - Assertions.assertEquals(result.size(), 1); - Assertions.assertTrue(result.contains(invoker5)); - - String snapshotLog = - "[ Parent (Input: 6) (Current Node Output: 6) (Chain Node Output: 1) ] Input: localhost:9103,localhost:9103,localhost:9103,localhost:9103,localhost:9103 -> Chain Node Output: localhost:9103...\n" + - " [ MockInvokersSelector (Input: 6) (Current Node Output: 5) (Chain Node Output: 1) Router message: invocation.need.mock not set. Return normal Invokers. ] Current Node Output: localhost:9103,localhost:9103,localhost:9103,localhost:9103,localhost:9103\n" + - " [ StandardMeshRuleRouter (Input: 5) (Current Node Output: 4) (Chain Node Output: 1) Router message: Match App: app Subset: isolation ] Current Node Output: localhost:9103,localhost:9103,localhost:9103,localhost:9103\n" + - " [ TagStateRouter (Input: 4) (Current Node Output: 3) (Chain Node Output: 1) Router message: Disable Tag Router. Reason: tagRouterRule is invalid or disabled ] Current Node Output: localhost:9103,localhost:9103,localhost:9103\n" + - " [ ServiceStateRouter (Input: 3) (Current Node Output: 3) (Chain Node Output: 1) Router message: null ] Current Node Output: localhost:9103,localhost:9103,localhost:9103\n" + - " [ ConditionStateRouter (Input: 3) (Current Node Output: 2) (Chain Node Output: 2) Router message: Match return. ] Current Node Output: localhost:9103,localhost:9103\n" + - " [ ProviderAppStateRouter (Input: 2) (Current Node Output: 2) (Chain Node Output: 1) Router message: Directly return. Reason: Invokers from previous router is empty or conditionRouters is empty. ] Current Node Output: localhost:9103,localhost:9103\n" + - " [ AppStateRouter (Input: 2) (Current Node Output: 2) (Chain Node Output: 1) Router message: null ] Current Node Output: localhost:9103,localhost:9103\n" + - " [ ConditionStateRouter (Input: 2) (Current Node Output: 1) (Chain Node Output: 1) Router message: Match return. ] Current Node Output: localhost:9103\n" + - " [ AppScriptStateRouter (Input: 1) (Current Node Output: 1) (Chain Node Output: 1) Router message: Directly return from script router. Reason: Invokers from previous router is empty or script is not enabled. Script rule is: null ] Current Node Output: localhost:9103"; - String[] snapshot = routerSnapshotSwitcher.cloneSnapshot(); - Assertions.assertTrue(snapshot[0].contains(snapshotLog)); - - RpcContext.getServiceContext().setNeedPrintRouterSnapshot(false); - result = routerChain.getSingleChain(consumerUrl, invokers, rpcInvocation) - .route(consumerUrl, invokers, rpcInvocation); - Assertions.assertEquals(result.size(), 1); - Assertions.assertTrue(result.contains(invoker5)); - - routerChain.destroy(); - Assertions.assertEquals(routerChain.getRouters().size(), 0); - Assertions.assertEquals(routerChain.getStateRouters().size(), 0); - - } - - private Invoker createMockInvoker() { - URL url = URL.valueOf("mock://localhost:9103/DemoInterface?remote.application=app"); - Invoker invoker = Mockito.mock(Invoker.class); - when(invoker.getUrl()).thenReturn(url); - return invoker; - } - - private Invoker createNormalInvoker(Map parameters) { - URL url = URL.valueOf("dubbo://localhost:9103/DemoInterface?remote.application=app"); - if (CollectionUtils.isNotEmptyMap(parameters)) { - url = url.addParameters(parameters); - } - Invoker invoker = Mockito.mock(Invoker.class); - when(invoker.getUrl()).thenReturn(url); - return invoker; - } - - - private final static String MESH_RULE1 = "apiVersion: service.dubbo.apache.org/v1alpha1\n" + - "kind: DestinationRule\n" + - "metadata: { name: demo-route }\n" + - "spec:\n" + - " host: demo\n" + - " subsets:\n" + - " - labels: { env-sign: xxx, tag1: hello }\n" + - " name: isolation\n" + - " - labels: { env-sign: yyy }\n" + - " name: testing-trunk\n" + - " - labels: { env-sign: zzz }\n" + - " name: testing\n" + - " trafficPolicy:\n" + - " loadBalancer: { simple: ROUND_ROBIN }\n" + - "\n"; - - private final static String MESH_RULE2 = "apiVersion: service.dubbo.apache.org/v1alpha1\n" + - "kind: VirtualService\n" + - "metadata: { name: demo-route }\n" + - "spec:\n" + - " dubbo:\n" + - " - routedetail:\n" + - " - match:\n" + - " - attachments: \n" + - " dubboContext: {trafficLabel: {regex: xxx}}\n" + - " name: xxx-project\n" + - " route:\n" + - " - destination: {host: demo, subset: isolation}\n" + - " services:\n" + - " - {regex: DemoService}\n" + - " hosts: [demo]\n"; - - private static final String APP_CONDITION_RULE = "scope: application\n" + - "force: true\n" + - "runtime: false\n" + - "enabled: true\n" + - "priority: 1\n" + - "key: demo-consumer\n" + - "conditions:\n" + - "- => serialization=hessian2"; - - private static final String SERVICE_CONDITION_RULE = "scope: service\n" + - "force: true\n" + - "runtime: false\n" + - "enabled: true\n" + - "priority: 1\n" + - "key: org.apache.dubbo.demo.DemoService\n" + - "conditions:\n" + - "- => timeout=5000"; -} +///* +// * 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.dubbo.rpc.cluster; +// +// +//import java.util.Arrays; +//import java.util.HashMap; +//import java.util.List; +//import java.util.Map; +//import java.util.concurrent.ConcurrentHashMap; +// +//import org.apache.dubbo.common.URL; +//import org.apache.dubbo.common.config.configcenter.ConfigChangeType; +//import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent; +//import org.apache.dubbo.common.config.configcenter.DynamicConfiguration; +//import org.apache.dubbo.common.url.component.ServiceConfigURL; +//import org.apache.dubbo.common.utils.CollectionUtils; +//import org.apache.dubbo.rpc.Invoker; +//import org.apache.dubbo.rpc.RpcContext; +//import org.apache.dubbo.rpc.RpcInvocation; +//import org.apache.dubbo.rpc.cluster.filter.DemoService; +//import org.apache.dubbo.rpc.cluster.router.RouterSnapshotSwitcher; +//import org.apache.dubbo.rpc.cluster.router.condition.config.AppStateRouter; +//import org.apache.dubbo.rpc.cluster.router.condition.config.ListenableStateRouter; +//import org.apache.dubbo.rpc.cluster.router.condition.config.ServiceStateRouter; +//import org.apache.dubbo.rpc.cluster.router.mesh.route.MeshAppRuleListener; +//import org.apache.dubbo.rpc.cluster.router.mesh.route.MeshRuleManager; +//import org.apache.dubbo.rpc.cluster.router.state.BitList; +//import org.apache.dubbo.rpc.model.FrameworkModel; +//import org.junit.jupiter.api.Assertions; +//import org.junit.jupiter.api.Test; +//import org.mockito.Mockito; +// +//import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY; +//import static org.apache.dubbo.common.constants.CommonConstants.TAG_KEY; +//import static org.apache.dubbo.rpc.cluster.router.mesh.route.MeshRuleConstants.MESH_RULE_DATA_ID_SUFFIX; +//import static org.mockito.Mockito.when; +// +//class RouterChainTest { +// +// /** +// * verify the router and state router loaded by default +// */ +// @Test +// void testBuildRouterChain() { +// RouterChain routerChain = createRouterChanin(); +// Assertions.assertEquals(0, routerChain.getRouters().size()); +// Assertions.assertEquals(7, routerChain.getStateRouters().size()); +// } +// +// private RouterChain createRouterChanin() { +// Map parameters = new HashMap<>(); +// parameters.put(INTERFACE_KEY, DemoService.class.getName()); +// parameters.put("registry", "zookeeper"); +// URL url = new ServiceConfigURL("dubbo", +// "127.0.0.1", +// 20881, +// DemoService.class.getName(), +// parameters); +// +// RouterChain routerChain = RouterChain.buildChain(DemoService.class, url); +// return routerChain; +// } +// +// @Test +// void testRoute() { +// RouterChain routerChain = createRouterChanin(); +// +// // mockInvoker will be filtered out by MockInvokersSelector +// Invoker mockInvoker = createMockInvoker(); +// +// // invoker1 will be filtered out by MeshStateRouter +// Map map1 = new HashMap<>(); +// map1.put("env-sign", "yyyyyyy"); +// Invoker invoker1 = createNormalInvoker(map1); +// +// // invoker2 will be filtered out by TagStateRouter +// Map map2 = new HashMap<>(); +// map2.put("env-sign", "xxx"); +// map2.put("tag1", "hello"); +// Invoker invoker2 = createNormalInvoker(map2); +// +// // invoker3 will be filtered out by AppStateRouter +// Map map3 = new HashMap<>(); +// map3.put("env-sign", "xxx"); +// map3.put("tag1", "hello"); +// map3.put(TAG_KEY, "TAG_"); +// Invoker invoker3 = createNormalInvoker(map3); +// +// // invoker4 will be filtered out by ServiceStateRouter +// Map map4 = new HashMap<>(); +// map4.put("env-sign", "xxx"); +// map4.put("tag1", "hello"); +// map4.put(TAG_KEY, "TAG_"); +// map4.put("timeout", "5000"); +// Invoker invoker4 = createNormalInvoker(map4); +// +// // invoker5 is the only one returned at the end that is not filtered out +// Map map5 = new HashMap<>(); +// map5.put("env-sign", "xxx"); +// map5.put("tag1", "hello"); +// map5.put(TAG_KEY, "TAG_"); +// map5.put("timeout", "5000"); +// map5.put("serialization", "hessian2"); +// Invoker invoker5 = createNormalInvoker(map5); +// +// BitList> invokers = new BitList<>(Arrays.asList(mockInvoker, invoker1, invoker2, invoker3, invoker4, invoker5)); +// routerChain.setInvokers(invokers, () -> {}); +// +// // mesh rule for MeshStateRouter +// MeshRuleManager meshRuleManager = mockInvoker.getUrl().getOrDefaultModuleModel().getBeanFactory().getBean(MeshRuleManager.class); +// ConcurrentHashMap appRuleListeners = meshRuleManager.getAppRuleListeners(); +// MeshAppRuleListener meshAppRuleListener = appRuleListeners.get(invoker1.getUrl().getRemoteApplication()); +// ConfigChangedEvent configChangedEvent = new ConfigChangedEvent("demo-route" + MESH_RULE_DATA_ID_SUFFIX, DynamicConfiguration.DEFAULT_GROUP, +// MESH_RULE1 + "---\n" + MESH_RULE2, ConfigChangeType.ADDED); +// meshAppRuleListener.process(configChangedEvent); +// +// +// // condition rule for AppStateRouter&ServiceStateRouter +// ListenableStateRouter serviceRouter = routerChain.getStateRouters().stream().filter(s -> s instanceof ServiceStateRouter).map(s -> (ListenableStateRouter) s).findAny().orElse(null); +// ConfigChangedEvent serviceConditionEvent = new ConfigChangedEvent(DynamicConfiguration.getRuleKey(mockInvoker.getUrl()) + ".condition-router", DynamicConfiguration.DEFAULT_GROUP, +// SERVICE_CONDITION_RULE, ConfigChangeType.ADDED); +// serviceRouter.process(serviceConditionEvent); +// +// ListenableStateRouter appRouter = routerChain.getStateRouters().stream().filter(s -> s instanceof AppStateRouter).map(s -> (ListenableStateRouter) s).findAny().orElse(null); +// ConfigChangedEvent appConditionEvent = new ConfigChangedEvent("app.condition-router", DynamicConfiguration.DEFAULT_GROUP, +// APP_CONDITION_RULE, ConfigChangeType.ADDED); +// appRouter.process(appConditionEvent); +// +// // prepare consumerUrl and RpcInvocation +// URL consumerUrl = URL.valueOf("consumer://localhost/DemoInterface?remote.application=app1"); +// RpcInvocation rpcInvocation = new RpcInvocation(); +// rpcInvocation.setServiceName("DemoService"); +// rpcInvocation.setObjectAttachment("trafficLabel", "xxx"); +// rpcInvocation.setObjectAttachment(TAG_KEY, "TAG_"); +// +// RpcContext.getServiceContext().setNeedPrintRouterSnapshot(true); +// RouterSnapshotSwitcher routerSnapshotSwitcher = FrameworkModel.defaultModel().getBeanFactory().getBean(RouterSnapshotSwitcher.class); +// routerSnapshotSwitcher.addEnabledService("org.apache.dubbo.demo.DemoService"); +// // route +// List> result = routerChain.getSingleChain(consumerUrl, invokers, rpcInvocation) +// .route(consumerUrl, invokers, rpcInvocation); +// Assertions.assertEquals(result.size(), 1); +// Assertions.assertTrue(result.contains(invoker5)); +// +// String snapshotLog = +// "[ Parent (Input: 6) (Current Node Output: 6) (Chain Node Output: 1) ] Input: localhost:9103,localhost:9103,localhost:9103,localhost:9103,localhost:9103 -> Chain Node Output: localhost:9103...\n" + +// " [ MockInvokersSelector (Input: 6) (Current Node Output: 5) (Chain Node Output: 1) Router message: invocation.need.mock not set. Return normal Invokers. ] Current Node Output: localhost:9103,localhost:9103,localhost:9103,localhost:9103,localhost:9103\n" + +// " [ StandardMeshRuleRouter (Input: 5) (Current Node Output: 4) (Chain Node Output: 1) Router message: Match App: app Subset: isolation ] Current Node Output: localhost:9103,localhost:9103,localhost:9103,localhost:9103\n" + +// " [ TagStateRouter (Input: 4) (Current Node Output: 3) (Chain Node Output: 1) Router message: Disable Tag Router. Reason: tagRouterRule is invalid or disabled ] Current Node Output: localhost:9103,localhost:9103,localhost:9103\n" + +// " [ ServiceStateRouter (Input: 3) (Current Node Output: 3) (Chain Node Output: 1) Router message: null ] Current Node Output: localhost:9103,localhost:9103,localhost:9103\n" + +// " [ ConditionStateRouter (Input: 3) (Current Node Output: 2) (Chain Node Output: 2) Router message: Match return. ] Current Node Output: localhost:9103,localhost:9103\n" + +// " [ ProviderAppStateRouter (Input: 2) (Current Node Output: 2) (Chain Node Output: 1) Router message: Directly return. Reason: Invokers from previous router is empty or conditionRouters is empty. ] Current Node Output: localhost:9103,localhost:9103\n" + +// " [ AppStateRouter (Input: 2) (Current Node Output: 2) (Chain Node Output: 1) Router message: null ] Current Node Output: localhost:9103,localhost:9103\n" + +// " [ ConditionStateRouter (Input: 2) (Current Node Output: 1) (Chain Node Output: 1) Router message: Match return. ] Current Node Output: localhost:9103\n" + +// " [ AppScriptStateRouter (Input: 1) (Current Node Output: 1) (Chain Node Output: 1) Router message: Directly return from script router. Reason: Invokers from previous router is empty or script is not enabled. Script rule is: null ] Current Node Output: localhost:9103"; +// String[] snapshot = routerSnapshotSwitcher.cloneSnapshot(); +// Assertions.assertTrue(snapshot[0].contains(snapshotLog)); +// +// RpcContext.getServiceContext().setNeedPrintRouterSnapshot(false); +// result = routerChain.getSingleChain(consumerUrl, invokers, rpcInvocation) +// .route(consumerUrl, invokers, rpcInvocation); +// Assertions.assertEquals(result.size(), 1); +// Assertions.assertTrue(result.contains(invoker5)); +// +// routerChain.destroy(); +// Assertions.assertEquals(routerChain.getRouters().size(), 0); +// Assertions.assertEquals(routerChain.getStateRouters().size(), 0); +// +// } +// +// private Invoker createMockInvoker() { +// URL url = URL.valueOf("mock://localhost:9103/DemoInterface?remote.application=app"); +// Invoker invoker = Mockito.mock(Invoker.class); +// when(invoker.getUrl()).thenReturn(url); +// return invoker; +// } +// +// private Invoker createNormalInvoker(Map parameters) { +// URL url = URL.valueOf("dubbo://localhost:9103/DemoInterface?remote.application=app"); +// if (CollectionUtils.isNotEmptyMap(parameters)) { +// url = url.addParameters(parameters); +// } +// Invoker invoker = Mockito.mock(Invoker.class); +// when(invoker.getUrl()).thenReturn(url); +// return invoker; +// } +// +// +// private final static String MESH_RULE1 = "apiVersion: service.dubbo.apache.org/v1alpha1\n" + +// "kind: DestinationRule\n" + +// "metadata: { name: demo-route }\n" + +// "spec:\n" + +// " host: demo\n" + +// " subsets:\n" + +// " - labels: { env-sign: xxx, tag1: hello }\n" + +// " name: isolation\n" + +// " - labels: { env-sign: yyy }\n" + +// " name: testing-trunk\n" + +// " - labels: { env-sign: zzz }\n" + +// " name: testing\n" + +// " trafficPolicy:\n" + +// " loadBalancer: { simple: ROUND_ROBIN }\n" + +// "\n"; +// +// private final static String MESH_RULE2 = "apiVersion: service.dubbo.apache.org/v1alpha1\n" + +// "kind: VirtualService\n" + +// "metadata: { name: demo-route }\n" + +// "spec:\n" + +// " dubbo:\n" + +// " - routedetail:\n" + +// " - match:\n" + +// " - attachments: \n" + +// " dubboContext: {trafficLabel: {regex: xxx}}\n" + +// " name: xxx-project\n" + +// " route:\n" + +// " - destination: {host: demo, subset: isolation}\n" + +// " services:\n" + +// " - {regex: DemoService}\n" + +// " hosts: [demo]\n"; +// +// private static final String APP_CONDITION_RULE = "scope: application\n" + +// "force: true\n" + +// "runtime: false\n" + +// "enabled: true\n" + +// "priority: 1\n" + +// "key: demo-consumer\n" + +// "conditions:\n" + +// "- => serialization=hessian2"; +// +// private static final String SERVICE_CONDITION_RULE = "scope: service\n" + +// "force: true\n" + +// "runtime: false\n" + +// "enabled: true\n" + +// "priority: 1\n" + +// "key: org.apache.dubbo.demo.DemoService\n" + +// "conditions:\n" + +// "- => timeout=5000"; +//} diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java index 9ca725f8f7..31c3af53f2 100644 --- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java +++ b/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/AbstractClusterInvokerTest.java @@ -576,26 +576,6 @@ class AbstractClusterInvokerTest { } } - /** - * Test mock invoker selector works as expected - */ - @Test - void testMockedInvokerSelect() { - initlistsize5(); - invokers.add(mockedInvoker1); - - initDic(); - - RpcInvocation mockedInvocation = new RpcInvocation(); - mockedInvocation.setMethodName("sayHello"); - mockedInvocation.setAttachment(INVOCATION_NEED_MOCK, "true"); - List> mockedInvokers = dic.list(mockedInvocation); - Assertions.assertEquals(1, mockedInvokers.size()); - - List> invokers = dic.list(invocation); - Assertions.assertEquals(5, invokers.size()); - } - public static interface IHelloService { } } diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/TreePathDynamicConfiguration.java b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/TreePathDynamicConfiguration.java index cee63ea7db..fcf6cc16b8 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/TreePathDynamicConfiguration.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/TreePathDynamicConfiguration.java @@ -17,7 +17,6 @@ package org.apache.dubbo.common.config.configcenter; import org.apache.dubbo.common.URL; -import org.apache.dubbo.common.config.configcenter.file.FileSystemDynamicConfiguration; import org.apache.dubbo.common.utils.StringUtils; import java.util.Collection; @@ -30,7 +29,7 @@ import static org.apache.dubbo.common.utils.PathUtils.normalize; /** * An abstract implementation of {@link DynamicConfiguration} is like "tree-structure" path : *
    - *
  • {@link FileSystemDynamicConfiguration "file"}
  • + *
  • {@link org.apache.dubbo.common.config.configcenter.file.FileSystemDynamicConfiguration "file"}
  • *
  • {@link org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfiguration "zookeeper"}
  • *
  • {@link org.apache.dubbo.configcenter.consul.ConsulDynamicConfiguration "consul"}
  • *
diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java index 780dd0fad0..f69a9fbbc2 100644 --- a/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java +++ b/dubbo-common/src/main/java/org/apache/dubbo/common/constants/CommonConstants.java @@ -281,6 +281,7 @@ public interface CommonConstants { String MONITOR_KEY = "monitor"; String BACKGROUND_KEY = "background"; String CLUSTER_KEY = "cluster"; + String MERGEABLE_CLUSTER_NAME = "mergeable"; String USERNAME_KEY = "username"; String PASSWORD_KEY = "password"; String HOST_KEY = "host"; diff --git a/dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory b/dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory index f6fe6d68fc..ae610c32d9 100644 --- a/dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory +++ b/dubbo-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory @@ -1,2 +1 @@ nop=org.apache.dubbo.common.config.configcenter.nop.NopDynamicConfigurationFactory -file=org.apache.dubbo.common.config.configcenter.file.FileSystemDynamicConfigurationFactory \ No newline at end of file diff --git a/dubbo-compatible/pom.xml b/dubbo-compatible/pom.xml index bbadadbd42..96931a0996 100644 --- a/dubbo-compatible/pom.xml +++ b/dubbo-compatible/pom.xml @@ -94,6 +94,12 @@ ${project.parent.version} test + + org.apache.dubbo + dubbo-plugin-generic-invoke + ${project.parent.version} + test + com.alibaba fastjson diff --git a/dubbo-config/dubbo-config-api/pom.xml b/dubbo-config/dubbo-config-api/pom.xml index ea1857fdcd..2572fdb665 100644 --- a/dubbo-config/dubbo-config-api/pom.xml +++ b/dubbo-config/dubbo-config-api/pom.xml @@ -232,6 +232,20 @@ test + + org.apache.dubbo + dubbo-plugin-router-condition + ${project.parent.version} + test + + + + org.apache.dubbo + dubbo-plugin-router-tag + ${project.parent.version} + test + + org.testcontainers testcontainers diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java index e8da1c28d4..a576bfd077 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ReferenceConfig.java @@ -739,7 +739,6 @@ public class ReferenceConfig extends ReferenceConfigBase { } checkStubAndLocal(interfaceClass); - ConfigValidationUtils.checkMock(interfaceClass, this); if (StringUtils.isEmpty(url)) { checkRegistry(); diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java index bf73508dd5..d3b71e38b2 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/ServiceConfig.java @@ -463,7 +463,6 @@ public class ServiceConfig extends ServiceConfigBase { } } checkStubAndLocal(interfaceClass); - ConfigValidationUtils.checkMock(interfaceClass, this); ConfigValidationUtils.validateServiceConfig(this); postProcessConfig(); } diff --git a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java index 7b28528bfb..1f92b894ad 100644 --- a/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java +++ b/dubbo-config/dubbo-config-api/src/main/java/org/apache/dubbo/config/utils/ConfigValidationUtils.java @@ -66,7 +66,6 @@ import org.apache.dubbo.rpc.cluster.LoadBalance; import org.apache.dubbo.rpc.cluster.filter.ClusterFilter; import org.apache.dubbo.rpc.model.ScopeModel; import org.apache.dubbo.rpc.model.ScopeModelUtil; -import org.apache.dubbo.rpc.support.MockInvoker; import java.net.InetAddress; import java.net.UnknownHostException; @@ -354,45 +353,6 @@ public class ConfigValidationUtils { return null; } - /** - * Legitimacy check and setup of local simulated operations. The operations can be a string with Simple operation or - * a classname whose {@link Class} implements a particular function - * - * @param interfaceClass for provider side, it is the {@link Class} of the service that will be exported; for consumer - * side, it is the {@link Class} of the remote service interface that will be referenced - */ - public static void checkMock(Class interfaceClass, AbstractInterfaceConfig config) { - String mock = config.getMock(); - if (ConfigUtils.isEmpty(mock)) { - return; - } - - String normalizedMock = MockInvoker.normalizeMock(mock); - if (normalizedMock.startsWith(RETURN_PREFIX)) { - normalizedMock = normalizedMock.substring(RETURN_PREFIX.length()).trim(); - try { - //Check whether the mock value is legal, if it is illegal, throw exception - MockInvoker.parseMockValue(normalizedMock); - } catch (Exception e) { - throw new IllegalStateException("Illegal mock return in "); - } - } else if (normalizedMock.startsWith(THROW_PREFIX)) { - normalizedMock = normalizedMock.substring(THROW_PREFIX.length()).trim(); - if (ConfigUtils.isNotEmpty(normalizedMock)) { - try { - //Check whether the mock value is legal - MockInvoker.getThrowable(normalizedMock); - } catch (Exception e) { - throw new IllegalStateException("Illegal mock throw in "); - } - } - } else { - //Check whether the mock class is a implementation of the interfaceClass, and if it has a default constructor - MockInvoker.getMockObject(config.getScopeModel().getExtensionDirector(), normalizedMock, interfaceClass); - } - } public static void validateAbstractInterfaceConfig(AbstractInterfaceConfig config) { checkName(LOCAL_KEY, config.getLocal()); diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java index ca1e95d61f..5412f39e22 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/ReferenceConfigTest.java @@ -37,7 +37,7 @@ import org.apache.dubbo.rpc.Protocol; import org.apache.dubbo.rpc.ProxyFactory; import org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder; import org.apache.dubbo.rpc.cluster.support.registry.ZoneAwareClusterInvoker; -import org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker; +//import org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker; import org.apache.dubbo.rpc.cluster.support.wrapper.ScopeClusterInvoker; import org.apache.dubbo.rpc.listener.ListenerInvokerWrapper; import org.apache.dubbo.rpc.model.ApplicationModel; @@ -418,8 +418,9 @@ class ReferenceConfigTest { Assertions.assertTrue(referenceConfig.getInvoker() instanceof ScopeClusterInvoker); ScopeClusterInvoker scopeClusterInvoker = (ScopeClusterInvoker) referenceConfig.getInvoker(); Invoker mockInvoker = scopeClusterInvoker.getInvoker(); - Assertions.assertTrue(mockInvoker instanceof MockClusterInvoker); - Invoker withCount = ((MockClusterInvoker) mockInvoker).getDirectory().getAllInvokers().get(0); +// Assertions.assertTrue(mockInvoker instanceof MockClusterInvoker); +// Invoker withCount = ((MockClusterInvoker) mockInvoker).getDirectory().getAllInvokers().get(0); + Invoker withCount = scopeClusterInvoker.getDirectory().getAllInvokers().get(0); Assertions.assertTrue(withCount instanceof ReferenceCountInvokerWrapper); Invoker withFilter = ((ReferenceCountInvokerWrapper) withCount).getInvoker(); @@ -525,7 +526,7 @@ class ReferenceConfigTest { referenceConfig.init(); Assertions.assertTrue(referenceConfig.getInvoker() instanceof ScopeClusterInvoker); Invoker scopeClusterInvoker = referenceConfig.getInvoker(); - Assertions.assertTrue(((ScopeClusterInvoker) scopeClusterInvoker).getInvoker() instanceof MockClusterInvoker); +// Assertions.assertTrue(((ScopeClusterInvoker) scopeClusterInvoker).getInvoker() instanceof MockClusterInvoker); Assertions.assertEquals(Boolean.TRUE, ((ScopeClusterInvoker) scopeClusterInvoker).getInvoker().getUrl().getAttribute(PEER_KEY)); dubboBootstrap.destroy(); diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ConfigValidationUtilsTest.java b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ConfigValidationUtilsTest.java index af98533496..27ee5908e7 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ConfigValidationUtilsTest.java +++ b/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/utils/ConfigValidationUtilsTest.java @@ -20,9 +20,6 @@ import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.config.AbstractInterfaceConfig; import org.apache.dubbo.config.ApplicationConfig; import org.apache.dubbo.config.MetadataReportConfig; -import org.apache.dubbo.config.api.Greeting; -import org.apache.dubbo.config.mock.GreetingMock1; -import org.apache.dubbo.config.mock.GreetingMock2; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -43,35 +40,6 @@ import static org.mockito.Mockito.verify; class ConfigValidationUtilsTest { - - @Test - void checkMock1() { - Assertions.assertThrows(IllegalStateException.class, () -> { - InterfaceConfig interfaceConfig = new InterfaceConfig(); - interfaceConfig.setMock("return {a, b}"); - ConfigValidationUtils.checkMock(Greeting.class, interfaceConfig); - - }); - } - - @Test - void checkMock2() { - Assertions.assertThrows(IllegalStateException.class, () -> { - InterfaceConfig interfaceConfig = new InterfaceConfig(); - interfaceConfig.setMock(GreetingMock1.class.getName()); - ConfigValidationUtils.checkMock(Greeting.class, interfaceConfig); - }); - } - - @Test - void checkMock3() { - Assertions.assertThrows(IllegalStateException.class, () -> { - InterfaceConfig interfaceConfig = new InterfaceConfig(); - interfaceConfig.setMock(GreetingMock2.class.getName()); - ConfigValidationUtils.checkMock(Greeting.class, interfaceConfig); - }); - } - @Test void testValidateMetadataConfig() { MetadataReportConfig config = new MetadataReportConfig(); diff --git a/dubbo-config/dubbo-config-spring/pom.xml b/dubbo-config/dubbo-config-spring/pom.xml index c31bc83698..416eb14596 100644 --- a/dubbo-config/dubbo-config-spring/pom.xml +++ b/dubbo-config/dubbo-config-spring/pom.xml @@ -124,6 +124,42 @@ ${project.parent.version} test + + org.apache.dubbo + dubbo-plugin-context + ${project.parent.version} + test + + + org.apache.dubbo + dubbo-plugin-generic-invoke + ${project.parent.version} + test + + + org.apache.dubbo + dubbo-plugin-classloader-filter + ${project.parent.version} + test + + + org.apache.dubbo + dubbo-plugin-access-log + ${project.parent.version} + test + + + org.apache.dubbo + dubbo-monitor-common + ${project.parent.version} + test + + + org.apache.dubbo + dubbo-plugin-qos-trace + ${project.parent.version} + test + javax.validation validation-api diff --git a/dubbo-configcenter/dubbo-configcenter-file/pom.xml b/dubbo-configcenter/dubbo-configcenter-file/pom.xml new file mode 100644 index 0000000000..5341422843 --- /dev/null +++ b/dubbo-configcenter/dubbo-configcenter-file/pom.xml @@ -0,0 +1,61 @@ + + + 4.0.0 + + + org.apache.dubbo + dubbo-configcenter + ${revision} + + + dubbo-configcenter-file + jar + ${project.artifactId} + The File implementation of the configcenter api + + false + + + + + org.apache.dubbo + dubbo-common + ${project.parent.version} + + + org.apache.dubbo + dubbo-metrics-api + ${project.parent.version} + + + org.apache.dubbo + dubbo-metrics-default + ${project.parent.version} + + + org.apache.dubbo + dubbo-metrics-prometheus + ${project.parent.version} + + + org.apache.dubbo + dubbo-metrics-config-center + ${project.parent.version} + + + diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java b/dubbo-configcenter/dubbo-configcenter-file/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java similarity index 100% rename from dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java rename to dubbo-configcenter/dubbo-configcenter-file/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfiguration.java diff --git a/dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationFactory.java b/dubbo-configcenter/dubbo-configcenter-file/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationFactory.java similarity index 100% rename from dubbo-common/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationFactory.java rename to dubbo-configcenter/dubbo-configcenter-file/src/main/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationFactory.java diff --git a/dubbo-configcenter/dubbo-configcenter-file/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory b/dubbo-configcenter/dubbo-configcenter-file/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory new file mode 100644 index 0000000000..761e942f0c --- /dev/null +++ b/dubbo-configcenter/dubbo-configcenter-file/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.common.config.configcenter.DynamicConfigurationFactory @@ -0,0 +1 @@ +file=org.apache.dubbo.common.config.configcenter.file.FileSystemDynamicConfigurationFactory diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationFactoryTest.java b/dubbo-configcenter/dubbo-configcenter-file/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationFactoryTest.java similarity index 100% rename from dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationFactoryTest.java rename to dubbo-configcenter/dubbo-configcenter-file/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationFactoryTest.java diff --git a/dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationTest.java b/dubbo-configcenter/dubbo-configcenter-file/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationTest.java similarity index 100% rename from dubbo-common/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationTest.java rename to dubbo-configcenter/dubbo-configcenter-file/src/test/java/org/apache/dubbo/common/config/configcenter/file/FileSystemDynamicConfigurationTest.java diff --git a/dubbo-configcenter/pom.xml b/dubbo-configcenter/pom.xml index b27bae411f..617f68a465 100644 --- a/dubbo-configcenter/pom.xml +++ b/dubbo-configcenter/pom.xml @@ -34,6 +34,7 @@ dubbo-configcenter-zookeeper dubbo-configcenter-apollo dubbo-configcenter-nacos + dubbo-configcenter-file diff --git a/dubbo-demo/dubbo-demo-api/dubbo-demo-api-consumer/pom.xml b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-consumer/pom.xml index 28b830c492..6e965d17ee 100644 --- a/dubbo-demo/dubbo-demo-api/dubbo-demo-api-consumer/pom.xml +++ b/dubbo-demo/dubbo-demo-api/dubbo-demo-api-consumer/pom.xml @@ -99,6 +99,11 @@ dubbo-serialization-fastjson2 ${project.version} + + org.apache.dubbo + dubbo-plugin-cluster-mergeable + ${project.version} + diff --git a/dubbo-distribution/dubbo-all/pom.xml b/dubbo-distribution/dubbo-all/pom.xml index d647725897..804479a633 100644 --- a/dubbo-distribution/dubbo-all/pom.xml +++ b/dubbo-distribution/dubbo-all/pom.xml @@ -75,6 +75,13 @@ + + org.apache.dubbo + dubbo-configcenter-file + ${project.version} + compile + true + org.apache.dubbo dubbo-configcenter-zookeeper @@ -146,6 +153,13 @@ compile true + + org.apache.dubbo + dubbo-metadata-rest + ${project.version} + compile + true + org.apache.dubbo dubbo-metadata-report-zookeeper @@ -236,6 +250,13 @@ compile true + + org.apache.dubbo + dubbo-monitor-common + ${project.version} + compile + true + org.apache.dubbo dubbo-monitor-default @@ -289,6 +310,126 @@ true + + org.apache.dubbo + dubbo-plugin-cluster-mergeable + ${project.version} + compile + true + + + + org.apache.dubbo + dubbo-plugin-mock + ${project.version} + compile + true + + + + org.apache.dubbo + dubbo-plugin-router-script + ${project.version} + compile + true + + + + org.apache.dubbo + dubbo-plugin-router-mesh + ${project.version} + compile + true + + + + org.apache.dubbo + dubbo-plugin-router-condition + ${project.version} + compile + true + + + + org.apache.dubbo + dubbo-plugin-router-tag + ${project.version} + compile + true + + + + org.apache.dubbo + dubbo-plugin-loadbalance-adaptive + ${project.version} + compile + true + + + + org.apache.dubbo + dubbo-plugin-access-log + ${project.version} + compile + true + + + + org.apache.dubbo + dubbo-plugin-tps + ${project.version} + compile + true + + + + org.apache.dubbo + dubbo-plugin-token + ${project.version} + compile + true + + + + org.apache.dubbo + dubbo-plugin-generic-invoke + ${project.version} + compile + true + + + + org.apache.dubbo + dubbo-plugin-context + ${project.version} + compile + true + + + + org.apache.dubbo + dubbo-plugin-classloader-filter + ${project.version} + compile + true + + + + org.apache.dubbo + dubbo-plugin-proxy-bytebuddy + ${project.version} + compile + true + + + + org.apache.dubbo + dubbo-plugin-qos-trace + ${project.version} + compile + true + + org.apache.dubbo @@ -355,6 +496,13 @@ compile true + + org.apache.dubbo + dubbo-remoting-zookeeper-api + ${project.version} + compile + true + org.apache.dubbo dubbo-remoting-zookeeper @@ -521,6 +669,7 @@ org.apache.dubbo:dubbo-compatible org.apache.dubbo:dubbo-config-api org.apache.dubbo:dubbo-config-spring + org.apache.dubbo:dubbo-configcenter-file org.apache.dubbo:dubbo-configcenter-apollo org.apache.dubbo:dubbo-configcenter-nacos org.apache.dubbo:dubbo-configcenter-zookeeper @@ -529,6 +678,7 @@ org.apache.dubbo:dubbo-filter-cache org.apache.dubbo:dubbo-filter-validation org.apache.dubbo:dubbo-metadata-api + org.apache.dubbo:dubbo-metadata-rest org.apache.dubbo:dubbo-metadata-definition-protobuf org.apache.dubbo:dubbo-metadata-report-nacos org.apache.dubbo:dubbo-metadata-report-redis @@ -541,12 +691,28 @@ org.apache.dubbo:dubbo-metrics-prometheus org.apache.dubbo:dubbo-tracing org.apache.dubbo:dubbo-monitor-api + org.apache.dubbo:dubbo-monitor-common org.apache.dubbo:dubbo-monitor-default org.apache.dubbo:dubbo-qos org.apache.dubbo:dubbo-qos-api org.apache.dubbo:dubbo-security org.apache.dubbo:dubbo-reactive org.apache.dubbo:dubbo-spring-security + org.apache.dubbo:dubbo-plugin-cluster-mergeable + org.apache.dubbo:dubbo-plugin-mock + org.apache.dubbo:dubbo-plugin-router-script + org.apache.dubbo:dubbo-plugin-router-mesh + org.apache.dubbo:dubbo-plugin-router-condition + org.apache.dubbo:dubbo-plugin-router-tag + org.apache.dubbo:dubbo-plugin-loadbalance-adaptive + org.apache.dubbo:dubbo-plugin-access-log + org.apache.dubbo:dubbo-plugin-tps + org.apache.dubbo:dubbo-plugin-token + org.apache.dubbo:dubbo-plugin-generic-invoke + org.apache.dubbo:dubbo-plugin-context + org.apache.dubbo:dubbo-plugin-classloader-filter + org.apache.dubbo:dubbo-plugin-proxy-bytebuddy + org.apache.dubbo:dubbo-plugin-qos-trace org.apache.dubbo:dubbo-registry-api org.apache.dubbo:dubbo-registry-multicast org.apache.dubbo:dubbo-registry-multiple @@ -556,6 +722,7 @@ org.apache.dubbo:dubbo-remoting-http org.apache.dubbo:dubbo-remoting-netty4 org.apache.dubbo:dubbo-remoting-netty + org.apache.dubbo:dubbo-remoting-zookeeper-api org.apache.dubbo:dubbo-remoting-zookeeper org.apache.dubbo:dubbo-remoting-zookeeper-curator5 org.apache.dubbo:dubbo-rpc-api diff --git a/dubbo-distribution/dubbo-bom/pom.xml b/dubbo-distribution/dubbo-bom/pom.xml index d7626c9f47..cbc2e057bc 100644 --- a/dubbo-distribution/dubbo-bom/pom.xml +++ b/dubbo-distribution/dubbo-bom/pom.xml @@ -90,6 +90,11 @@ dubbo-configcenter ${project.version} + + org.apache.dubbo + dubbo-configcenter-file + ${project.version} + org.apache.dubbo dubbo-configcenter-zookeeper @@ -199,6 +204,11 @@ dubbo-metadata-api ${project.version} + + org.apache.dubbo + dubbo-metadata-rest + ${project.version} + org.apache.dubbo dubbo-metadata-report-zookeeper @@ -280,6 +290,11 @@ dubbo-monitor-api ${project.version} + + org.apache.dubbo + dubbo-monitor-common + ${project.version} + org.apache.dubbo dubbo-monitor-default @@ -337,6 +352,97 @@ ${project.version} + + org.apache.dubbo + dubbo-plugin-cluster-mergeable + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-mock + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-router-script + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-router-mesh + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-router-condition + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-router-tag + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-loadbalance-adaptive + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-access-log + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-tps + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-token + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-generic-invoke + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-context + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-classloader-filter + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-proxy-bytebuddy + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-qos-trace + ${project.version} + + + org.apache.dubbo @@ -395,6 +501,11 @@ dubbo-remoting-netty4 ${project.version} + + org.apache.dubbo + dubbo-remoting-zookeeper-api + ${project.version} + org.apache.dubbo dubbo-remoting-zookeeper diff --git a/dubbo-kubernetes/pom.xml b/dubbo-kubernetes/pom.xml index 39fa870d34..968aa22031 100644 --- a/dubbo-kubernetes/pom.xml +++ b/dubbo-kubernetes/pom.xml @@ -49,6 +49,11 @@ dubbo-metadata-api ${project.parent.version} + + org.apache.dubbo + dubbo-plugin-router-mesh + ${project.parent.version} + io.fabric8 kubernetes-client diff --git a/dubbo-metadata/dubbo-metadata-api/pom.xml b/dubbo-metadata/dubbo-metadata-api/pom.xml index 5557b16137..4190008795 100644 --- a/dubbo-metadata/dubbo-metadata-api/pom.xml +++ b/dubbo-metadata/dubbo-metadata-api/pom.xml @@ -45,27 +45,6 @@ ${project.parent.version} - - - javax.ws.rs - javax.ws.rs-api - test - - - - - org.springframework - spring-web - test - - - - - org.springframework - spring-context - test - - org.apache.dubbo dubbo-metrics-api diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/DemoService.java b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/DemoService.java index 3de6ab8bfb..e30b40a9dd 100644 --- a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/DemoService.java +++ b/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/DemoService.java @@ -14,24 +14,24 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.dubbo.metadata; - -import org.apache.dubbo.metadata.rest.User; - -import java.util.List; - - -/** - * DemoService - */ -public interface DemoService { - - String sayName(String name); - - void throwRuntimeException() throws RuntimeException; - - List getUsers(List users); - - int echo(int i); - -} +//package org.apache.dubbo.metadata; +// +//import org.apache.dubbo.metadata.rest.User; +// +//import java.util.List; +// +// +///** +// * DemoService +// */ +//public interface DemoService { +// +// String sayName(String name); +// +// void throwRuntimeException() throws RuntimeException; +// +// List getUsers(List users); +// +// int echo(int i); +// +//} diff --git a/dubbo-metadata/dubbo-metadata-processor/pom.xml b/dubbo-metadata/dubbo-metadata-processor/pom.xml index 009ce910e4..0945a6d434 100644 --- a/dubbo-metadata/dubbo-metadata-processor/pom.xml +++ b/dubbo-metadata/dubbo-metadata-processor/pom.xml @@ -34,7 +34,7 @@ org.apache.dubbo - dubbo-metadata-api + dubbo-metadata-rest ${project.parent.version} diff --git a/dubbo-metadata/dubbo-metadata-rest/pom.xml b/dubbo-metadata/dubbo-metadata-rest/pom.xml new file mode 100644 index 0000000000..65893ee29e --- /dev/null +++ b/dubbo-metadata/dubbo-metadata-rest/pom.xml @@ -0,0 +1,63 @@ + + + + org.apache.dubbo + dubbo-metadata + ${revision} + ../pom.xml + + 4.0.0 + + dubbo-metadata-rest + jar + + dubbo-metadata-rest + The rest metadata module of Dubbo project + + + + org.apache.dubbo + dubbo-metadata-api + ${project.parent.version} + + + + + javax.ws.rs + javax.ws.rs-api + test + + + + + org.springframework + spring-web + test + + + + + org.springframework + spring-context + test + + + + diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/AbstractAnnotatedMethodParameterProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/AbstractAnnotatedMethodParameterProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/AbstractAnnotatedMethodParameterProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/AbstractAnnotatedMethodParameterProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/AbstractNoAnnotatedParameterProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/AbstractNoAnnotatedParameterProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/AbstractNoAnnotatedParameterProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/AbstractNoAnnotatedParameterProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/AbstractServiceRestMetadataResolver.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/AbstractServiceRestMetadataResolver.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/AbstractServiceRestMetadataResolver.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/AbstractServiceRestMetadataResolver.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/AnnotatedMethodParameterProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/AnnotatedMethodParameterProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/AnnotatedMethodParameterProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/AnnotatedMethodParameterProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ArgInfo.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/ArgInfo.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ArgInfo.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/ArgInfo.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ClassPathServiceRestMetadataReader.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/ClassPathServiceRestMetadataReader.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ClassPathServiceRestMetadataReader.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/ClassPathServiceRestMetadataReader.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/DefaultServiceRestMetadataResolver.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/DefaultServiceRestMetadataResolver.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/DefaultServiceRestMetadataResolver.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/DefaultServiceRestMetadataResolver.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/JAXRSClassConstants.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/JAXRSClassConstants.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/JAXRSClassConstants.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/JAXRSClassConstants.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/NoAnnotatedParameterRequestTagProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/NoAnnotatedParameterRequestTagProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/NoAnnotatedParameterRequestTagProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/NoAnnotatedParameterRequestTagProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ParamType.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/ParamType.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ParamType.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/ParamType.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/PathMatcher.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/PathMatcher.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/PathMatcher.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/PathMatcher.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/PathUtil.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/PathUtil.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/PathUtil.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/PathUtil.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/RequestMetadata.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/RequestMetadata.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/RequestMetadata.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/RequestMetadata.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/RestMetadataConstants.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/RestMetadataConstants.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/RestMetadataConstants.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/RestMetadataConstants.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/RestMethodMetadata.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/RestMethodMetadata.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/RestMethodMetadata.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/RestMethodMetadata.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ServiceRestMetadata.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/ServiceRestMetadata.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ServiceRestMetadata.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/ServiceRestMetadata.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ServiceRestMetadataReader.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/ServiceRestMetadataReader.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ServiceRestMetadataReader.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/ServiceRestMetadataReader.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ServiceRestMetadataResolver.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/ServiceRestMetadataResolver.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/ServiceRestMetadataResolver.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/ServiceRestMetadataResolver.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/SpringMvcClassConstants.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/SpringMvcClassConstants.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/SpringMvcClassConstants.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/SpringMvcClassConstants.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/BodyParameterProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/BodyParameterProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/BodyParameterProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/BodyParameterProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/DefaultValueParameterProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/DefaultValueParameterProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/DefaultValueParameterProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/DefaultValueParameterProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/FormParamParameterProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/FormParamParameterProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/FormParamParameterProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/FormParamParameterProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/HeaderParamParameterProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/HeaderParamParameterProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/HeaderParamParameterProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/HeaderParamParameterProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/JAXRSServiceRestMetadataResolver.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/JAXRSServiceRestMetadataResolver.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/JAXRSServiceRestMetadataResolver.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/JAXRSServiceRestMetadataResolver.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/MatrixParamParameterProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/MatrixParamParameterProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/MatrixParamParameterProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/MatrixParamParameterProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/ParamAnnotationParameterProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/ParamAnnotationParameterProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/ParamAnnotationParameterProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/ParamAnnotationParameterProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/PathParamParameterProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/PathParamParameterProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/PathParamParameterProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/PathParamParameterProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/QueryParamParameterProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/QueryParamParameterProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/QueryParamParameterProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/jaxrs/QueryParamParameterProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/media/MediaType.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/media/MediaType.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/media/MediaType.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/media/MediaType.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/springmvc/AbstractRequestAnnotationParameterProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/springmvc/AbstractRequestAnnotationParameterProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/springmvc/AbstractRequestAnnotationParameterProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/springmvc/AbstractRequestAnnotationParameterProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/springmvc/FormBodyNoAnnotatedProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/springmvc/FormBodyNoAnnotatedProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/springmvc/FormBodyNoAnnotatedProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/springmvc/FormBodyNoAnnotatedProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/springmvc/JsonBodyNoAnnotatedProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/springmvc/JsonBodyNoAnnotatedProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/springmvc/JsonBodyNoAnnotatedProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/springmvc/JsonBodyNoAnnotatedProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/springmvc/ParamNoAnnotatedProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/springmvc/ParamNoAnnotatedProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/springmvc/ParamNoAnnotatedProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/springmvc/ParamNoAnnotatedProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/springmvc/PathVariableParameterProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/springmvc/PathVariableParameterProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/springmvc/PathVariableParameterProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/springmvc/PathVariableParameterProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/springmvc/RequestBodyParameterProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/springmvc/RequestBodyParameterProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/springmvc/RequestBodyParameterProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/springmvc/RequestBodyParameterProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/springmvc/RequestHeaderParameterProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/springmvc/RequestHeaderParameterProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/springmvc/RequestHeaderParameterProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/springmvc/RequestHeaderParameterProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/springmvc/RequestParamParameterProcessor.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/springmvc/RequestParamParameterProcessor.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/springmvc/RequestParamParameterProcessor.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/springmvc/RequestParamParameterProcessor.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/springmvc/SpringMvcServiceRestMetadataResolver.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/springmvc/SpringMvcServiceRestMetadataResolver.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/springmvc/SpringMvcServiceRestMetadataResolver.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/springmvc/SpringMvcServiceRestMetadataResolver.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/tag/BodyTag.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/tag/BodyTag.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/tag/BodyTag.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/tag/BodyTag.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/tag/ParamTag.java b/dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/tag/ParamTag.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/java/org/apache/dubbo/metadata/rest/tag/ParamTag.java rename to dubbo-metadata/dubbo-metadata-rest/src/main/java/org/apache/dubbo/metadata/rest/tag/ParamTag.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor b/dubbo-metadata/dubbo-metadata-rest/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor rename to dubbo-metadata/dubbo-metadata-rest/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.AnnotatedMethodParameterProcessor diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.NoAnnotatedParameterRequestTagProcessor b/dubbo-metadata/dubbo-metadata-rest/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.NoAnnotatedParameterRequestTagProcessor similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.NoAnnotatedParameterRequestTagProcessor rename to dubbo-metadata/dubbo-metadata-rest/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.NoAnnotatedParameterRequestTagProcessor diff --git a/dubbo-metadata/dubbo-metadata-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.ServiceRestMetadataResolver b/dubbo-metadata/dubbo-metadata-rest/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.ServiceRestMetadataResolver similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.ServiceRestMetadataResolver rename to dubbo-metadata/dubbo-metadata-rest/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.metadata.rest.ServiceRestMetadataResolver diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/PathMatcherTest.java b/dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/PathMatcherTest.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/PathMatcherTest.java rename to dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/PathMatcherTest.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/TestMediaType.java b/dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/TestMediaType.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/TestMediaType.java rename to dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/TestMediaType.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/DefaultRestService.java b/dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/DefaultRestService.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/DefaultRestService.java rename to dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/DefaultRestService.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/RestService.java b/dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/RestService.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/RestService.java rename to dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/RestService.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/SpringRestService.java b/dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/SpringRestService.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/SpringRestService.java rename to dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/SpringRestService.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/StandardRestService.java b/dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/StandardRestService.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/StandardRestService.java rename to dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/StandardRestService.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/User.java b/dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/User.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/User.java rename to dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/User.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/api/AnotherUserRestService.java b/dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/api/AnotherUserRestService.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/api/AnotherUserRestService.java rename to dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/api/AnotherUserRestService.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsRestDoubleCheckContainsPathVariableService.java b/dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsRestDoubleCheckContainsPathVariableService.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsRestDoubleCheckContainsPathVariableService.java rename to dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsRestDoubleCheckContainsPathVariableService.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsRestDoubleCheckService.java b/dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsRestDoubleCheckService.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsRestDoubleCheckService.java rename to dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsRestDoubleCheckService.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsRestService.java b/dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsRestService.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsRestService.java rename to dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsRestService.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsRestServiceImpl.java b/dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsRestServiceImpl.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsRestServiceImpl.java rename to dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsRestServiceImpl.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsUsingService.java b/dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsUsingService.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsUsingService.java rename to dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/api/JaxrsUsingService.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/api/SpringControllerService.java b/dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/api/SpringControllerService.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/api/SpringControllerService.java rename to dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/api/SpringControllerService.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/api/SpringRestService.java b/dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/api/SpringRestService.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/api/SpringRestService.java rename to dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/api/SpringRestService.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/api/SpringRestServiceImpl.java b/dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/api/SpringRestServiceImpl.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/api/SpringRestServiceImpl.java rename to dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/api/SpringRestServiceImpl.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/jaxrs/JAXRSServiceRestMetadataResolverTest.java b/dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/jaxrs/JAXRSServiceRestMetadataResolverTest.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/jaxrs/JAXRSServiceRestMetadataResolverTest.java rename to dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/jaxrs/JAXRSServiceRestMetadataResolverTest.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/jaxrs/JaxrsRestDoubleCheckTest.java b/dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/jaxrs/JaxrsRestDoubleCheckTest.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/jaxrs/JaxrsRestDoubleCheckTest.java rename to dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/jaxrs/JaxrsRestDoubleCheckTest.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/springmvc/SpringMvcServiceRestMetadataResolverTest.java b/dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/springmvc/SpringMvcServiceRestMetadataResolverTest.java similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/java/org/apache/dubbo/metadata/rest/springmvc/SpringMvcServiceRestMetadataResolverTest.java rename to dubbo-metadata/dubbo-metadata-rest/src/test/java/org/apache/dubbo/metadata/rest/springmvc/SpringMvcServiceRestMetadataResolverTest.java diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/resources/META-INF/dubbo/jax-rs-service-rest-metadata.json b/dubbo-metadata/dubbo-metadata-rest/src/test/resources/META-INF/dubbo/jax-rs-service-rest-metadata.json similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/resources/META-INF/dubbo/jax-rs-service-rest-metadata.json rename to dubbo-metadata/dubbo-metadata-rest/src/test/resources/META-INF/dubbo/jax-rs-service-rest-metadata.json diff --git a/dubbo-metadata/dubbo-metadata-api/src/test/resources/META-INF/dubbo/spring-mvc-service-rest-metadata.json b/dubbo-metadata/dubbo-metadata-rest/src/test/resources/META-INF/dubbo/spring-mvc-service-rest-metadata.json similarity index 100% rename from dubbo-metadata/dubbo-metadata-api/src/test/resources/META-INF/dubbo/spring-mvc-service-rest-metadata.json rename to dubbo-metadata/dubbo-metadata-rest/src/test/resources/META-INF/dubbo/spring-mvc-service-rest-metadata.json diff --git a/dubbo-metadata/pom.xml b/dubbo-metadata/pom.xml index 2eec45ed63..d201869db8 100644 --- a/dubbo-metadata/pom.xml +++ b/dubbo-metadata/pom.xml @@ -29,6 +29,7 @@ pom dubbo-metadata-api + dubbo-metadata-rest dubbo-metadata-definition-protobuf dubbo-metadata-processor dubbo-metadata-report-zookeeper diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/MetricsClusterFilter.java b/dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/MetricsClusterFilter.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/MetricsClusterFilter.java rename to dubbo-metrics/dubbo-metrics-default/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/MetricsClusterFilter.java diff --git a/dubbo-metrics/dubbo-metrics-default/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter b/dubbo-metrics/dubbo-metrics-default/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter new file mode 100644 index 0000000000..dec6c0a5f8 --- /dev/null +++ b/dubbo-metrics/dubbo-metrics-default/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter @@ -0,0 +1,2 @@ +observationsender=org.apache.dubbo.rpc.cluster.filter.support.ObservationSenderFilter +metricsClusterFilter=org.apache.dubbo.rpc.cluster.filter.support.MetricsClusterFilter diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/filter/MetricsClusterFilterTest.java b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/rpc/cluster/filter/MetricsClusterFilterTest.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/filter/MetricsClusterFilterTest.java rename to dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/rpc/cluster/filter/MetricsClusterFilterTest.java diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/filter/MockInvocation.java b/dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/rpc/cluster/filter/MockInvocation.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/filter/MockInvocation.java rename to dubbo-metrics/dubbo-metrics-default/src/test/java/org/apache/dubbo/rpc/cluster/filter/MockInvocation.java diff --git a/dubbo-monitor/dubbo-monitor-api/pom.xml b/dubbo-monitor/dubbo-monitor-api/pom.xml index f7fc8dd303..62fa246b7c 100644 --- a/dubbo-monitor/dubbo-monitor-api/pom.xml +++ b/dubbo-monitor/dubbo-monitor-api/pom.xml @@ -32,34 +32,8 @@ org.apache.dubbo - dubbo-rpc-api + dubbo-common ${project.parent.version} - - org.apache.dubbo - dubbo-cluster - ${project.parent.version} - - - - org.apache.dubbo - dubbo-remoting-netty4 - ${project.parent.version} - test - - - - org.apache.dubbo - dubbo-serialization-hessian2 - ${project.parent.version} - test - - - - org.apache.dubbo - dubbo-serialization-fastjson2 - ${project.parent.version} - test - diff --git a/dubbo-monitor/dubbo-monitor-common/pom.xml b/dubbo-monitor/dubbo-monitor-common/pom.xml new file mode 100644 index 0000000000..7dadb8b337 --- /dev/null +++ b/dubbo-monitor/dubbo-monitor-common/pom.xml @@ -0,0 +1,44 @@ + + + 4.0.0 + + org.apache.dubbo + dubbo-monitor + ${revision} + ../pom.xml + + dubbo-monitor-common + jar + ${project.artifactId} + The monitor common module of dubbo project + + false + + + + org.apache.dubbo + dubbo-monitor-api + ${project.parent.version} + + + org.apache.dubbo + dubbo-cluster + ${project.parent.version} + + + diff --git a/dubbo-monitor/dubbo-monitor-api/src/main/java/org/apache/dubbo/monitor/support/AbstractMonitorFactory.java b/dubbo-monitor/dubbo-monitor-common/src/main/java/org/apache/dubbo/monitor/support/AbstractMonitorFactory.java similarity index 100% rename from dubbo-monitor/dubbo-monitor-api/src/main/java/org/apache/dubbo/monitor/support/AbstractMonitorFactory.java rename to dubbo-monitor/dubbo-monitor-common/src/main/java/org/apache/dubbo/monitor/support/AbstractMonitorFactory.java diff --git a/dubbo-monitor/dubbo-monitor-api/src/main/java/org/apache/dubbo/monitor/support/MetricsServiceDetector.java b/dubbo-monitor/dubbo-monitor-common/src/main/java/org/apache/dubbo/monitor/support/MetricsServiceDetector.java similarity index 100% rename from dubbo-monitor/dubbo-monitor-api/src/main/java/org/apache/dubbo/monitor/support/MetricsServiceDetector.java rename to dubbo-monitor/dubbo-monitor-common/src/main/java/org/apache/dubbo/monitor/support/MetricsServiceDetector.java diff --git a/dubbo-monitor/dubbo-monitor-api/src/main/java/org/apache/dubbo/monitor/support/MonitorClusterFilter.java b/dubbo-monitor/dubbo-monitor-common/src/main/java/org/apache/dubbo/monitor/support/MonitorClusterFilter.java similarity index 100% rename from dubbo-monitor/dubbo-monitor-api/src/main/java/org/apache/dubbo/monitor/support/MonitorClusterFilter.java rename to dubbo-monitor/dubbo-monitor-common/src/main/java/org/apache/dubbo/monitor/support/MonitorClusterFilter.java diff --git a/dubbo-monitor/dubbo-monitor-api/src/main/java/org/apache/dubbo/monitor/support/MonitorFilter.java b/dubbo-monitor/dubbo-monitor-common/src/main/java/org/apache/dubbo/monitor/support/MonitorFilter.java similarity index 100% rename from dubbo-monitor/dubbo-monitor-api/src/main/java/org/apache/dubbo/monitor/support/MonitorFilter.java rename to dubbo-monitor/dubbo-monitor-common/src/main/java/org/apache/dubbo/monitor/support/MonitorFilter.java diff --git a/dubbo-monitor/dubbo-monitor-api/src/main/java/org/apache/dubbo/monitor/support/MonitorServiceDetector.java b/dubbo-monitor/dubbo-monitor-common/src/main/java/org/apache/dubbo/monitor/support/MonitorServiceDetector.java similarity index 100% rename from dubbo-monitor/dubbo-monitor-api/src/main/java/org/apache/dubbo/monitor/support/MonitorServiceDetector.java rename to dubbo-monitor/dubbo-monitor-common/src/main/java/org/apache/dubbo/monitor/support/MonitorServiceDetector.java diff --git a/dubbo-monitor/dubbo-monitor-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-monitor/dubbo-monitor-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter similarity index 100% rename from dubbo-monitor/dubbo-monitor-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter rename to dubbo-monitor/dubbo-monitor-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter diff --git a/dubbo-monitor/dubbo-monitor-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter b/dubbo-monitor/dubbo-monitor-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter similarity index 100% rename from dubbo-monitor/dubbo-monitor-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter rename to dubbo-monitor/dubbo-monitor-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter diff --git a/dubbo-monitor/dubbo-monitor-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.BuiltinServiceDetector b/dubbo-monitor/dubbo-monitor-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.BuiltinServiceDetector similarity index 100% rename from dubbo-monitor/dubbo-monitor-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.BuiltinServiceDetector rename to dubbo-monitor/dubbo-monitor-common/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.BuiltinServiceDetector diff --git a/dubbo-monitor/dubbo-monitor-api/src/test/java/org/apache/dubbo/monitor/support/AbstractMonitorFactoryTest.java b/dubbo-monitor/dubbo-monitor-common/src/test/java/org/apache/dubbo/monitor/support/AbstractMonitorFactoryTest.java similarity index 100% rename from dubbo-monitor/dubbo-monitor-api/src/test/java/org/apache/dubbo/monitor/support/AbstractMonitorFactoryTest.java rename to dubbo-monitor/dubbo-monitor-common/src/test/java/org/apache/dubbo/monitor/support/AbstractMonitorFactoryTest.java diff --git a/dubbo-monitor/dubbo-monitor-api/src/test/java/org/apache/dubbo/monitor/support/MonitorFilterTest.java b/dubbo-monitor/dubbo-monitor-common/src/test/java/org/apache/dubbo/monitor/support/MonitorFilterTest.java similarity index 100% rename from dubbo-monitor/dubbo-monitor-api/src/test/java/org/apache/dubbo/monitor/support/MonitorFilterTest.java rename to dubbo-monitor/dubbo-monitor-common/src/test/java/org/apache/dubbo/monitor/support/MonitorFilterTest.java diff --git a/dubbo-monitor/dubbo-monitor-default/pom.xml b/dubbo-monitor/dubbo-monitor-default/pom.xml index 43d4f0044e..9ad35b2e1d 100644 --- a/dubbo-monitor/dubbo-monitor-default/pom.xml +++ b/dubbo-monitor/dubbo-monitor-default/pom.xml @@ -33,7 +33,7 @@ org.apache.dubbo - dubbo-monitor-api + dubbo-monitor-common ${project.parent.version} diff --git a/dubbo-monitor/pom.xml b/dubbo-monitor/pom.xml index 735bf3743e..25aff40141 100644 --- a/dubbo-monitor/pom.xml +++ b/dubbo-monitor/pom.xml @@ -31,6 +31,7 @@ dubbo-monitor-api + dubbo-monitor-common dubbo-monitor-default diff --git a/dubbo-plugin/dubbo-plugin-access-log/pom.xml b/dubbo-plugin/dubbo-plugin-access-log/pom.xml new file mode 100644 index 0000000000..deee17fef0 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-access-log/pom.xml @@ -0,0 +1,46 @@ + + + + org.apache.dubbo + dubbo-plugin + ${revision} + ../pom.xml + + 4.0.0 + + dubbo-plugin-access-log + jar + + + UTF-8 + + + + + org.apache.dubbo + dubbo-cluster + ${project.version} + + + org.apache.dubbo + dubbo-config-api + ${project.version} + + + diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java b/dubbo-plugin/dubbo-plugin-access-log/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java rename to dubbo-plugin/dubbo-plugin-access-log/src/main/java/org/apache/dubbo/rpc/filter/AccessLogFilter.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/AccessLogData.java b/dubbo-plugin/dubbo-plugin-access-log/src/main/java/org/apache/dubbo/rpc/support/AccessLogData.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/AccessLogData.java rename to dubbo-plugin/dubbo-plugin-access-log/src/main/java/org/apache/dubbo/rpc/support/AccessLogData.java diff --git a/dubbo-plugin/dubbo-plugin-access-log/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-plugin/dubbo-plugin-access-log/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter new file mode 100644 index 0000000000..30e8012d97 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-access-log/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter @@ -0,0 +1 @@ +accesslog=org.apache.dubbo.rpc.filter.AccessLogFilter diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/AccessLogFilterTest.java b/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/filter/AccessLogFilterTest.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/AccessLogFilterTest.java rename to dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/filter/AccessLogFilterTest.java diff --git a/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/support/DemoService.java b/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/support/DemoService.java new file mode 100644 index 0000000000..82d869a25e --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/support/DemoService.java @@ -0,0 +1,21 @@ +/* + * 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.dubbo.rpc.support; + +public interface DemoService { + void sayHello(String name); +} diff --git a/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java b/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java new file mode 100644 index 0000000000..ae8a69cc5d --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java @@ -0,0 +1,168 @@ +/* + * 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.dubbo.rpc.support; + +import org.apache.dubbo.rpc.AttachmentsAdapter; +import org.apache.dubbo.rpc.Invoker; +import org.apache.dubbo.rpc.RpcInvocation; +import org.apache.dubbo.rpc.model.ServiceModel; + +import java.util.HashMap; +import java.util.Map; + +import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY; +import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY; +import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY; +import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY; +import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY; +import static org.apache.dubbo.rpc.Constants.TOKEN_KEY; + +/** + * MockInvocation.java + */ +public class MockInvocation extends RpcInvocation { + + private Map attachments; + + public MockInvocation() { + attachments = new HashMap<>(); + attachments.put(PATH_KEY, "dubbo"); + attachments.put(GROUP_KEY, "dubbo"); + attachments.put(VERSION_KEY, "1.0.0"); + attachments.put(DUBBO_VERSION_KEY, "1.0.0"); + attachments.put(TOKEN_KEY, "sfag"); + attachments.put(TIMEOUT_KEY, "1000"); + } + + @Override + public String getTargetServiceUniqueName() { + return null; + } + + @Override + public String getProtocolServiceKey() { + return null; + } + + public String getMethodName() { + return "echo"; + } + + @Override + public String getServiceName() { + return "DemoService"; + } + + public Class[] getParameterTypes() { + return new Class[]{String.class}; + } + + public Object[] getArguments() { + return new Object[]{"aa"}; + } + + public Map getAttachments() { + return new AttachmentsAdapter.ObjectToStringMap(attachments); + } + + @Override + public Map getObjectAttachments() { + return attachments; + } + + @Override + public void setAttachment(String key, String value) { + setObjectAttachment(key, value); + } + + @Override + public void setAttachment(String key, Object value) { + setObjectAttachment(key, value); + } + + @Override + public void setObjectAttachment(String key, Object value) { + attachments.put(key, value); + } + + @Override + public void setAttachmentIfAbsent(String key, String value) { + setObjectAttachmentIfAbsent(key, value); + } + + @Override + public void setAttachmentIfAbsent(String key, Object value) { + setObjectAttachmentIfAbsent(key, value); + } + + @Override + public void setObjectAttachmentIfAbsent(String key, Object value) { + attachments.put(key, value); + } + + public Invoker getInvoker() { + return null; + } + + @Override + public void setServiceModel(ServiceModel serviceModel) { + + } + + @Override + public ServiceModel getServiceModel() { + return null; + } + + @Override + public Object put(Object key, Object value) { + return null; + } + + @Override + public Object get(Object key) { + return null; + } + + @Override + public Map getAttributes() { + return null; + } + + public String getAttachment(String key) { + return (String) getObjectAttachments().get(key); + } + + @Override + public Object getObjectAttachment(String key) { + return attachments.get(key); + } + + public String getAttachment(String key, String defaultValue) { + return (String) getObjectAttachments().get(key); + } + + @Override + public Object getObjectAttachment(String key, Object defaultValue) { + Object result = attachments.get(key); + if (result == null) { + return defaultValue; + } + return result; + } + +} diff --git a/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java b/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java new file mode 100644 index 0000000000..f2dbe07081 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-access-log/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java @@ -0,0 +1,90 @@ +/* + * 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.dubbo.rpc.support; + +import org.apache.dubbo.common.URL; +import org.apache.dubbo.rpc.AppResponse; +import org.apache.dubbo.rpc.AsyncRpcResult; +import org.apache.dubbo.rpc.Invocation; +import org.apache.dubbo.rpc.Invoker; +import org.apache.dubbo.rpc.Result; +import org.apache.dubbo.rpc.RpcException; + +import java.util.concurrent.CompletableFuture; + +/** + * MockInvoker.java + */ +public class MyInvoker implements Invoker { + + URL url; + Class type; + boolean hasException = false; + boolean destroyed = false; + + public MyInvoker(URL url) { + this.url = url; + type = (Class) DemoService.class; + } + + public MyInvoker(URL url, boolean hasException) { + this.url = url; + type = (Class) DemoService.class; + this.hasException = hasException; + } + + @Override + public Class getInterface() { + return type; + } + + public URL getUrl() { + return url; + } + + @Override + public boolean isAvailable() { + return false; + } + + @Override + public Result invoke(Invocation invocation) throws RpcException { + AppResponse result = new AppResponse(); + if (!hasException) { + result.setValue("alibaba"); + } else { + result.setException(new RuntimeException("mocked exception")); + } + + return new AsyncRpcResult(CompletableFuture.completedFuture(result), invocation); + } + + @Override + public void destroy() { + destroyed = true; + } + + public boolean isDestroyed() { + return destroyed; + } + + @Override + public String toString() { + return "MyInvoker.toString()"; + } + +} diff --git a/dubbo-plugin/dubbo-plugin-access-log/src/test/resources/log4j.xml b/dubbo-plugin/dubbo-plugin-access-log/src/test/resources/log4j.xml new file mode 100644 index 0000000000..eb01deaffe --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-access-log/src/test/resources/log4j.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dubbo-plugin/dubbo-plugin-classloader-filter/pom.xml b/dubbo-plugin/dubbo-plugin-classloader-filter/pom.xml new file mode 100644 index 0000000000..6dd833cd63 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-classloader-filter/pom.xml @@ -0,0 +1,46 @@ + + + + org.apache.dubbo + dubbo-plugin + ${revision} + ../pom.xml + + 4.0.0 + + dubbo-plugin-classloader-filter + jar + + + UTF-8 + + + + + org.apache.dubbo + dubbo-cluster + ${project.version} + + + org.apache.dubbo + dubbo-config-api + ${project.version} + + + diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerClassLoaderFilter.java b/dubbo-plugin/dubbo-plugin-classloader-filter/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerClassLoaderFilter.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerClassLoaderFilter.java rename to dubbo-plugin/dubbo-plugin-classloader-filter/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerClassLoaderFilter.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderCallbackFilter.java b/dubbo-plugin/dubbo-plugin-classloader-filter/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderCallbackFilter.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderCallbackFilter.java rename to dubbo-plugin/dubbo-plugin-classloader-filter/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderCallbackFilter.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderFilter.java b/dubbo-plugin/dubbo-plugin-classloader-filter/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderFilter.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderFilter.java rename to dubbo-plugin/dubbo-plugin-classloader-filter/src/main/java/org/apache/dubbo/rpc/filter/ClassLoaderFilter.java diff --git a/dubbo-plugin/dubbo-plugin-classloader-filter/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-plugin/dubbo-plugin-classloader-filter/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter new file mode 100644 index 0000000000..e92d76c15b --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-classloader-filter/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter @@ -0,0 +1,2 @@ +classloader=org.apache.dubbo.rpc.filter.ClassLoaderFilter +classloader-callback=org.apache.dubbo.rpc.filter.ClassLoaderCallbackFilter diff --git a/dubbo-plugin/dubbo-plugin-classloader-filter/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter b/dubbo-plugin/dubbo-plugin-classloader-filter/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter new file mode 100644 index 0000000000..bc3a0a742d --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-classloader-filter/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter @@ -0,0 +1 @@ +consumer-classloader=org.apache.dubbo.rpc.cluster.filter.support.ConsumerClassLoaderFilter diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ClassLoaderFilterTest.java b/dubbo-plugin/dubbo-plugin-classloader-filter/src/test/java/org/apache/dubbo/rpc/filter/ClassLoaderFilterTest.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ClassLoaderFilterTest.java rename to dubbo-plugin/dubbo-plugin-classloader-filter/src/test/java/org/apache/dubbo/rpc/filter/ClassLoaderFilterTest.java diff --git a/dubbo-plugin/dubbo-plugin-classloader-filter/src/test/java/org/apache/dubbo/rpc/support/DemoService.java b/dubbo-plugin/dubbo-plugin-classloader-filter/src/test/java/org/apache/dubbo/rpc/support/DemoService.java new file mode 100644 index 0000000000..82d869a25e --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-classloader-filter/src/test/java/org/apache/dubbo/rpc/support/DemoService.java @@ -0,0 +1,21 @@ +/* + * 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.dubbo.rpc.support; + +public interface DemoService { + void sayHello(String name); +} diff --git a/dubbo-plugin/dubbo-plugin-classloader-filter/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java b/dubbo-plugin/dubbo-plugin-classloader-filter/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java new file mode 100644 index 0000000000..f2dbe07081 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-classloader-filter/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java @@ -0,0 +1,90 @@ +/* + * 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.dubbo.rpc.support; + +import org.apache.dubbo.common.URL; +import org.apache.dubbo.rpc.AppResponse; +import org.apache.dubbo.rpc.AsyncRpcResult; +import org.apache.dubbo.rpc.Invocation; +import org.apache.dubbo.rpc.Invoker; +import org.apache.dubbo.rpc.Result; +import org.apache.dubbo.rpc.RpcException; + +import java.util.concurrent.CompletableFuture; + +/** + * MockInvoker.java + */ +public class MyInvoker implements Invoker { + + URL url; + Class type; + boolean hasException = false; + boolean destroyed = false; + + public MyInvoker(URL url) { + this.url = url; + type = (Class) DemoService.class; + } + + public MyInvoker(URL url, boolean hasException) { + this.url = url; + type = (Class) DemoService.class; + this.hasException = hasException; + } + + @Override + public Class getInterface() { + return type; + } + + public URL getUrl() { + return url; + } + + @Override + public boolean isAvailable() { + return false; + } + + @Override + public Result invoke(Invocation invocation) throws RpcException { + AppResponse result = new AppResponse(); + if (!hasException) { + result.setValue("alibaba"); + } else { + result.setException(new RuntimeException("mocked exception")); + } + + return new AsyncRpcResult(CompletableFuture.completedFuture(result), invocation); + } + + @Override + public void destroy() { + destroyed = true; + } + + public boolean isDestroyed() { + return destroyed; + } + + @Override + public String toString() { + return "MyInvoker.toString()"; + } + +} diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/pom.xml b/dubbo-plugin/dubbo-plugin-cluster-mergeable/pom.xml new file mode 100644 index 0000000000..5c21392607 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-cluster-mergeable/pom.xml @@ -0,0 +1,41 @@ + + + + org.apache.dubbo + dubbo-plugin + ${revision} + ../pom.xml + + 4.0.0 + + dubbo-plugin-cluster-mergeable + jar + + + UTF-8 + + + + + org.apache.dubbo + dubbo-cluster + ${project.version} + + + diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/MergeableClusterScopeModelInitializer.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/MergeableClusterScopeModelInitializer.java new file mode 100644 index 0000000000..43067890bd --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/MergeableClusterScopeModelInitializer.java @@ -0,0 +1,40 @@ +/* + * 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.dubbo.rpc.cluster; + +import org.apache.dubbo.common.beans.factory.ScopeBeanFactory; +import org.apache.dubbo.rpc.cluster.merger.MergerFactory; +import org.apache.dubbo.rpc.model.ApplicationModel; +import org.apache.dubbo.rpc.model.FrameworkModel; +import org.apache.dubbo.rpc.model.ModuleModel; +import org.apache.dubbo.rpc.model.ScopeModelInitializer; + +public class MergeableClusterScopeModelInitializer implements ScopeModelInitializer { + @Override + public void initializeFrameworkModel(FrameworkModel frameworkModel) { + } + + @Override + public void initializeApplicationModel(ApplicationModel applicationModel) { + ScopeBeanFactory beanFactory = applicationModel.getBeanFactory(); + beanFactory.registerBean(MergerFactory.class); + } + + @Override + public void initializeModuleModel(ModuleModel moduleModel) { + } +} diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ArrayMerger.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/ArrayMerger.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ArrayMerger.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/ArrayMerger.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/BooleanArrayMerger.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/BooleanArrayMerger.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/BooleanArrayMerger.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/BooleanArrayMerger.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ByteArrayMerger.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/ByteArrayMerger.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ByteArrayMerger.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/ByteArrayMerger.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/CharArrayMerger.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/CharArrayMerger.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/CharArrayMerger.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/CharArrayMerger.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/DoubleArrayMerger.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/DoubleArrayMerger.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/DoubleArrayMerger.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/DoubleArrayMerger.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/FloatArrayMerger.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/FloatArrayMerger.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/FloatArrayMerger.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/FloatArrayMerger.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/IntArrayMerger.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/IntArrayMerger.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/IntArrayMerger.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/IntArrayMerger.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ListMerger.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/ListMerger.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ListMerger.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/ListMerger.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/LongArrayMerger.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/LongArrayMerger.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/LongArrayMerger.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/LongArrayMerger.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/MapMerger.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/MapMerger.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/MapMerger.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/MapMerger.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/MergerFactory.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/MergerFactory.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/MergerFactory.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/MergerFactory.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/SetMerger.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/SetMerger.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/SetMerger.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/SetMerger.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ShortArrayMerger.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/ShortArrayMerger.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/merger/ShortArrayMerger.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/merger/ShortArrayMerger.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableCluster.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableCluster.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableCluster.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableCluster.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvoker.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvoker.java similarity index 95% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvoker.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvoker.java index 6d61eb2194..00525d1af5 100644 --- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvoker.java +++ b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvoker.java @@ -16,10 +16,12 @@ */ package org.apache.dubbo.rpc.cluster.support; +import org.apache.dubbo.common.constants.LoggerCodeConstants; import org.apache.dubbo.common.logger.ErrorTypeAwareLogger; import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.common.utils.ConfigUtils; import org.apache.dubbo.rpc.AsyncRpcResult; +import org.apache.dubbo.rpc.Constants; import org.apache.dubbo.rpc.Invocation; import org.apache.dubbo.rpc.Invoker; import org.apache.dubbo.rpc.Result; @@ -41,8 +43,6 @@ import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; -import static org.apache.dubbo.common.constants.LoggerCodeConstants.CLUSTER_FAILED_GROUP_MERGE; -import static org.apache.dubbo.rpc.Constants.ASYNC_KEY; import static org.apache.dubbo.rpc.Constants.MERGER_KEY; /** @@ -88,7 +88,7 @@ public class MergeableClusterInvoker extends AbstractClusterInvoker { Map results = new HashMap<>(); for (final Invoker invoker : invokers) { RpcInvocation subInvocation = new RpcInvocation(invocation, invoker); - subInvocation.setAttachment(ASYNC_KEY, "true"); + subInvocation.setAttachment(Constants.ASYNC_KEY, "true"); results.put(invoker.getUrl().getServiceKey(), invokeWithContext(invoker, subInvocation)); } @@ -101,7 +101,7 @@ public class MergeableClusterInvoker extends AbstractClusterInvoker { try { Result r = asyncResult.get(Integer.MAX_VALUE, TimeUnit.MILLISECONDS); if (r.hasException()) { - log.error(CLUSTER_FAILED_GROUP_MERGE, "Invoke " + getGroupDescFromServiceKey(entry.getKey()) + + log.error(LoggerCodeConstants.CLUSTER_FAILED_GROUP_MERGE, "Invoke " + getGroupDescFromServiceKey(entry.getKey()) + " failed: " + r.getException().getMessage(), "", r.getException().getMessage()); } else { resultList.add(r); diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster new file mode 100644 index 0000000000..271eb4263f --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster @@ -0,0 +1 @@ +mergeable=org.apache.dubbo.rpc.cluster.support.MergeableCluster diff --git a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Merger b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Merger similarity index 100% rename from dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Merger rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Merger diff --git a/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer new file mode 100644 index 0000000000..7a96a95a42 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer @@ -0,0 +1 @@ +dubbo-cluster-mergeable=org.apache.dubbo.rpc.cluster.MergeableClusterScopeModelInitializer diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/DoubleSumMerger.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/DoubleSumMerger.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/DoubleSumMerger.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/DoubleSumMerger.java diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/FloatSumMerger.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/FloatSumMerger.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/FloatSumMerger.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/FloatSumMerger.java diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntFindAnyMerger.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntFindAnyMerger.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntFindAnyMerger.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntFindAnyMerger.java diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntFindFirstMerger.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntFindFirstMerger.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntFindFirstMerger.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntFindFirstMerger.java diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntSumMerger.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntSumMerger.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntSumMerger.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/IntSumMerger.java diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/LongSumMerger.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/LongSumMerger.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/LongSumMerger.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/LongSumMerger.java diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/ResultMergerTest.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/ResultMergerTest.java similarity index 99% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/ResultMergerTest.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/ResultMergerTest.java index db0b83c1b4..0ea163b7cd 100644 --- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/merger/ResultMergerTest.java +++ b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/merger/ResultMergerTest.java @@ -17,8 +17,9 @@ package org.apache.dubbo.rpc.cluster.merger; import org.apache.dubbo.rpc.cluster.Merger; +import org.apache.dubbo.rpc.cluster.merger.ArrayMerger; +import org.apache.dubbo.rpc.cluster.merger.MergerFactory; import org.apache.dubbo.rpc.model.ApplicationModel; - import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/Menu.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/support/Menu.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/Menu.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/support/Menu.java diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/MenuService.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/support/MenuService.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/MenuService.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/support/MenuService.java diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvokerTest.java b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvokerTest.java similarity index 99% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvokerTest.java rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvokerTest.java index eab0b6c44c..1c20308bfe 100644 --- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvokerTest.java +++ b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/java/org/apache/dubbo/rpc/cluster/support/MergeableClusterInvokerTest.java @@ -27,7 +27,6 @@ import org.apache.dubbo.rpc.RpcInvocation; import org.apache.dubbo.rpc.cluster.Directory; import org.apache.dubbo.rpc.model.ApplicationModel; import org.apache.dubbo.rpc.model.ModuleModel; - import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/dubbo-cluster/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Merger b/dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Merger similarity index 100% rename from dubbo-cluster/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Merger rename to dubbo-plugin/dubbo-plugin-cluster-mergeable/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Merger diff --git a/dubbo-plugin/dubbo-plugin-context/pom.xml b/dubbo-plugin/dubbo-plugin-context/pom.xml new file mode 100644 index 0000000000..ed21c7aa9e --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-context/pom.xml @@ -0,0 +1,46 @@ + + + + org.apache.dubbo + dubbo-plugin + ${revision} + ../pom.xml + + 4.0.0 + + dubbo-plugin-context + jar + + + UTF-8 + + + + + org.apache.dubbo + dubbo-cluster + ${project.version} + + + org.apache.dubbo + dubbo-config-api + ${project.version} + + + diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerContextFilter.java b/dubbo-plugin/dubbo-plugin-context/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerContextFilter.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerContextFilter.java rename to dubbo-plugin/dubbo-plugin-context/src/main/java/org/apache/dubbo/rpc/cluster/filter/support/ConsumerContextFilter.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java b/dubbo-plugin/dubbo-plugin-context/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java rename to dubbo-plugin/dubbo-plugin-context/src/main/java/org/apache/dubbo/rpc/filter/ContextFilter.java diff --git a/dubbo-plugin/dubbo-plugin-context/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-plugin/dubbo-plugin-context/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter new file mode 100644 index 0000000000..4b7f067695 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-context/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter @@ -0,0 +1 @@ +context=org.apache.dubbo.rpc.filter.ContextFilter diff --git a/dubbo-plugin/dubbo-plugin-context/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter b/dubbo-plugin/dubbo-plugin-context/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter new file mode 100644 index 0000000000..a929725672 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-context/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.filter.ClusterFilter @@ -0,0 +1 @@ +consumercontext=org.apache.dubbo.rpc.cluster.filter.support.ConsumerContextFilter diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ContextFilterTest.java b/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/filter/ContextFilterTest.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ContextFilterTest.java rename to dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/filter/ContextFilterTest.java diff --git a/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/support/DemoService.java b/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/support/DemoService.java new file mode 100644 index 0000000000..82d869a25e --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/support/DemoService.java @@ -0,0 +1,21 @@ +/* + * 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.dubbo.rpc.support; + +public interface DemoService { + void sayHello(String name); +} diff --git a/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java b/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java new file mode 100644 index 0000000000..ae8a69cc5d --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java @@ -0,0 +1,168 @@ +/* + * 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.dubbo.rpc.support; + +import org.apache.dubbo.rpc.AttachmentsAdapter; +import org.apache.dubbo.rpc.Invoker; +import org.apache.dubbo.rpc.RpcInvocation; +import org.apache.dubbo.rpc.model.ServiceModel; + +import java.util.HashMap; +import java.util.Map; + +import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY; +import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY; +import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY; +import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY; +import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY; +import static org.apache.dubbo.rpc.Constants.TOKEN_KEY; + +/** + * MockInvocation.java + */ +public class MockInvocation extends RpcInvocation { + + private Map attachments; + + public MockInvocation() { + attachments = new HashMap<>(); + attachments.put(PATH_KEY, "dubbo"); + attachments.put(GROUP_KEY, "dubbo"); + attachments.put(VERSION_KEY, "1.0.0"); + attachments.put(DUBBO_VERSION_KEY, "1.0.0"); + attachments.put(TOKEN_KEY, "sfag"); + attachments.put(TIMEOUT_KEY, "1000"); + } + + @Override + public String getTargetServiceUniqueName() { + return null; + } + + @Override + public String getProtocolServiceKey() { + return null; + } + + public String getMethodName() { + return "echo"; + } + + @Override + public String getServiceName() { + return "DemoService"; + } + + public Class[] getParameterTypes() { + return new Class[]{String.class}; + } + + public Object[] getArguments() { + return new Object[]{"aa"}; + } + + public Map getAttachments() { + return new AttachmentsAdapter.ObjectToStringMap(attachments); + } + + @Override + public Map getObjectAttachments() { + return attachments; + } + + @Override + public void setAttachment(String key, String value) { + setObjectAttachment(key, value); + } + + @Override + public void setAttachment(String key, Object value) { + setObjectAttachment(key, value); + } + + @Override + public void setObjectAttachment(String key, Object value) { + attachments.put(key, value); + } + + @Override + public void setAttachmentIfAbsent(String key, String value) { + setObjectAttachmentIfAbsent(key, value); + } + + @Override + public void setAttachmentIfAbsent(String key, Object value) { + setObjectAttachmentIfAbsent(key, value); + } + + @Override + public void setObjectAttachmentIfAbsent(String key, Object value) { + attachments.put(key, value); + } + + public Invoker getInvoker() { + return null; + } + + @Override + public void setServiceModel(ServiceModel serviceModel) { + + } + + @Override + public ServiceModel getServiceModel() { + return null; + } + + @Override + public Object put(Object key, Object value) { + return null; + } + + @Override + public Object get(Object key) { + return null; + } + + @Override + public Map getAttributes() { + return null; + } + + public String getAttachment(String key) { + return (String) getObjectAttachments().get(key); + } + + @Override + public Object getObjectAttachment(String key) { + return attachments.get(key); + } + + public String getAttachment(String key, String defaultValue) { + return (String) getObjectAttachments().get(key); + } + + @Override + public Object getObjectAttachment(String key, Object defaultValue) { + Object result = attachments.get(key); + if (result == null) { + return defaultValue; + } + return result; + } + +} diff --git a/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java b/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java new file mode 100644 index 0000000000..f2dbe07081 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-context/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java @@ -0,0 +1,90 @@ +/* + * 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.dubbo.rpc.support; + +import org.apache.dubbo.common.URL; +import org.apache.dubbo.rpc.AppResponse; +import org.apache.dubbo.rpc.AsyncRpcResult; +import org.apache.dubbo.rpc.Invocation; +import org.apache.dubbo.rpc.Invoker; +import org.apache.dubbo.rpc.Result; +import org.apache.dubbo.rpc.RpcException; + +import java.util.concurrent.CompletableFuture; + +/** + * MockInvoker.java + */ +public class MyInvoker implements Invoker { + + URL url; + Class type; + boolean hasException = false; + boolean destroyed = false; + + public MyInvoker(URL url) { + this.url = url; + type = (Class) DemoService.class; + } + + public MyInvoker(URL url, boolean hasException) { + this.url = url; + type = (Class) DemoService.class; + this.hasException = hasException; + } + + @Override + public Class getInterface() { + return type; + } + + public URL getUrl() { + return url; + } + + @Override + public boolean isAvailable() { + return false; + } + + @Override + public Result invoke(Invocation invocation) throws RpcException { + AppResponse result = new AppResponse(); + if (!hasException) { + result.setValue("alibaba"); + } else { + result.setException(new RuntimeException("mocked exception")); + } + + return new AsyncRpcResult(CompletableFuture.completedFuture(result), invocation); + } + + @Override + public void destroy() { + destroyed = true; + } + + public boolean isDestroyed() { + return destroyed; + } + + @Override + public String toString() { + return "MyInvoker.toString()"; + } + +} diff --git a/dubbo-plugin/dubbo-plugin-generic-invoke/pom.xml b/dubbo-plugin/dubbo-plugin-generic-invoke/pom.xml new file mode 100644 index 0000000000..e7689611df --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-generic-invoke/pom.xml @@ -0,0 +1,46 @@ + + + + org.apache.dubbo + dubbo-plugin + ${revision} + ../pom.xml + + 4.0.0 + + dubbo-plugin-generic-invoke + jar + + + UTF-8 + + + + + org.apache.dubbo + dubbo-cluster + ${project.version} + + + org.apache.dubbo + dubbo-config-api + ${project.version} + + + diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java b/dubbo-plugin/dubbo-plugin-generic-invoke/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java rename to dubbo-plugin/dubbo-plugin-generic-invoke/src/main/java/org/apache/dubbo/rpc/filter/GenericFilter.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericImplFilter.java b/dubbo-plugin/dubbo-plugin-generic-invoke/src/main/java/org/apache/dubbo/rpc/filter/GenericImplFilter.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/GenericImplFilter.java rename to dubbo-plugin/dubbo-plugin-generic-invoke/src/main/java/org/apache/dubbo/rpc/filter/GenericImplFilter.java diff --git a/dubbo-plugin/dubbo-plugin-generic-invoke/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-plugin/dubbo-plugin-generic-invoke/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter new file mode 100644 index 0000000000..bc10f0d739 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-generic-invoke/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter @@ -0,0 +1,2 @@ +generic=org.apache.dubbo.rpc.filter.GenericFilter +genericimpl=org.apache.dubbo.rpc.filter.GenericImplFilter diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/GenericFilterTest.java b/dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/filter/GenericFilterTest.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/GenericFilterTest.java rename to dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/filter/GenericFilterTest.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/GenericImplFilterTest.java b/dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/filter/GenericImplFilterTest.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/GenericImplFilterTest.java rename to dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/filter/GenericImplFilterTest.java diff --git a/dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/support/DemoService.java b/dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/support/DemoService.java new file mode 100644 index 0000000000..fcc3b9d718 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/support/DemoService.java @@ -0,0 +1,23 @@ +/* + * 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.dubbo.rpc.support; + +public interface DemoService { + + Person getPerson(Person person); + +} diff --git a/dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/support/Person.java b/dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/support/Person.java new file mode 100644 index 0000000000..d4570af5ca --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-generic-invoke/src/test/java/org/apache/dubbo/rpc/support/Person.java @@ -0,0 +1,52 @@ +/* + * 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.dubbo.rpc.support; + +import java.io.Serializable; + +/** + * Person.java + */ +public class Person implements Serializable { + + private static final long serialVersionUID = 1L; + private String name; + private int age; + + public Person() {} + + public Person(String name, int age) { + this.name = name; + this.age = age; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } +} diff --git a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/pom.xml b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/pom.xml new file mode 100644 index 0000000000..9d1f889086 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/pom.xml @@ -0,0 +1,46 @@ + + + + org.apache.dubbo + dubbo-plugin + ${revision} + ../pom.xml + + 4.0.0 + + dubbo-plugin-loadbalance-adaptive + jar + + + UTF-8 + + + + + org.apache.dubbo + dubbo-cluster + ${project.version} + + + org.apache.dubbo + dubbo-config-api + ${project.version} + + + diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AdaptiveMetrics.java b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/java/org/apache/dubbo/rpc/AdaptiveMetrics.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/AdaptiveMetrics.java rename to dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/java/org/apache/dubbo/rpc/AdaptiveMetrics.java diff --git a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/java/org/apache/dubbo/rpc/AdaptiveScopeModelInitializer.java b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/java/org/apache/dubbo/rpc/AdaptiveScopeModelInitializer.java new file mode 100644 index 0000000000..83c0ea8ee6 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/java/org/apache/dubbo/rpc/AdaptiveScopeModelInitializer.java @@ -0,0 +1,39 @@ +/* + * 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.dubbo.rpc; + +import org.apache.dubbo.common.beans.factory.ScopeBeanFactory; +import org.apache.dubbo.rpc.model.ApplicationModel; +import org.apache.dubbo.rpc.model.FrameworkModel; +import org.apache.dubbo.rpc.model.ModuleModel; +import org.apache.dubbo.rpc.model.ScopeModelInitializer; + +public class AdaptiveScopeModelInitializer implements ScopeModelInitializer { + @Override + public void initializeFrameworkModel(FrameworkModel frameworkModel) { + } + + @Override + public void initializeApplicationModel(ApplicationModel applicationModel) { + ScopeBeanFactory beanFactory = applicationModel.getBeanFactory(); + beanFactory.registerBean(AdaptiveMetrics.class); + } + + @Override + public void initializeModuleModel(ModuleModel moduleModel) { + } +} diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AdaptiveLoadBalance.java b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AdaptiveLoadBalance.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AdaptiveLoadBalance.java rename to dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/java/org/apache/dubbo/rpc/cluster/loadbalance/AdaptiveLoadBalance.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AdaptiveLoadBalanceFilter.java b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/java/org/apache/dubbo/rpc/filter/AdaptiveLoadBalanceFilter.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/AdaptiveLoadBalanceFilter.java rename to dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/java/org/apache/dubbo/rpc/filter/AdaptiveLoadBalanceFilter.java diff --git a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter new file mode 100644 index 0000000000..2242a744e4 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter @@ -0,0 +1 @@ +adaptiveLoadBalance=org.apache.dubbo.rpc.filter.AdaptiveLoadBalanceFilter diff --git a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.LoadBalance b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.LoadBalance new file mode 100644 index 0000000000..62ea9a4acb --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.LoadBalance @@ -0,0 +1 @@ +adaptive=org.apache.dubbo.rpc.cluster.loadbalance.AdaptiveLoadBalance diff --git a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer new file mode 100644 index 0000000000..55fb7df3e3 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer @@ -0,0 +1 @@ +adaptive=org.apache.dubbo.rpc.AdaptiveScopeModelInitializer diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/AdaptiveLoadBalanceTest.java b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/AdaptiveLoadBalanceTest.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/AdaptiveLoadBalanceTest.java rename to dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/AdaptiveLoadBalanceTest.java diff --git a/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LoadBalanceBaseTest.java b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LoadBalanceBaseTest.java new file mode 100644 index 0000000000..835b5a7eff --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-loadbalance-adaptive/src/test/java/org/apache/dubbo/rpc/cluster/loadbalance/LoadBalanceBaseTest.java @@ -0,0 +1,320 @@ +/* + * 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.dubbo.rpc.cluster.loadbalance; + +import org.apache.dubbo.common.URL; +import org.apache.dubbo.common.extension.ExtensionLoader; +import org.apache.dubbo.common.utils.JsonUtils; +import org.apache.dubbo.rpc.Invocation; +import org.apache.dubbo.rpc.Invoker; +import org.apache.dubbo.rpc.RpcInvocation; +import org.apache.dubbo.rpc.RpcStatus; +import org.apache.dubbo.rpc.cluster.LoadBalance; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicLong; + +import static org.apache.dubbo.rpc.cluster.Constants.DEFAULT_WARMUP; +import static org.apache.dubbo.rpc.cluster.Constants.DEFAULT_WEIGHT; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.mock; + +/** + * RoundRobinLoadBalanceTest + */ +@SuppressWarnings({"unchecked", "rawtypes"}) +class LoadBalanceBaseTest { + Invocation invocation; + Invocation genericInvocation; + List> invokers = new ArrayList>(); + Invoker invoker1; + Invoker invoker2; + Invoker invoker3; + Invoker invoker4; + Invoker invoker5; + + RpcStatus weightTestRpcStatus1; + RpcStatus weightTestRpcStatus2; + RpcStatus weightTestRpcStatus3; + RpcStatus weightTestRpcStatus5; + + RpcInvocation weightTestInvocation; + + /** + * @throws Exception + */ + @BeforeAll + public static void setUpBeforeClass() throws Exception { + } + + /** + * @throws Exception + */ + @BeforeEach + public void setUp() throws Exception { + + invocation = mock(Invocation.class); + given(invocation.getMethodName()).willReturn("method1"); + given(invocation.getArguments()).willReturn(new Object[] {"arg1","arg2","arg3"}); + + genericInvocation = mock(Invocation.class); + String methodName = "method1"; + given(genericInvocation.getMethodName()).willReturn("$invoke"); + String[] paraTypes = new String[] {String.class.getName(),String.class.getName(),String.class.getName()}; + Object[] argsObject = new Object[] {"arg1","arg2","arg3"}; + Object[] args = new Object[] {methodName,paraTypes,argsObject}; + given(genericInvocation.getArguments()).willReturn(args); + + invoker1 = mock(Invoker.class); + invoker2 = mock(Invoker.class); + invoker3 = mock(Invoker.class); + invoker4 = mock(Invoker.class); + invoker5 = mock(Invoker.class); + + URL url1 = URL.valueOf("test://127.0.0.1:1/DemoService"); + URL url2 = URL.valueOf("test://127.0.0.1:2/DemoService"); + URL url3 = URL.valueOf("test://127.0.0.1:3/DemoService"); + URL url4 = URL.valueOf("test://127.0.0.1:4/DemoService"); + URL url5 = URL.valueOf("test://127.0.0.1:5/DemoService"); + + given(invoker1.isAvailable()).willReturn(true); + given(invoker1.getInterface()).willReturn(LoadBalanceBaseTest.class); + given(invoker1.getUrl()).willReturn(url1); + + given(invoker2.isAvailable()).willReturn(true); + given(invoker2.getInterface()).willReturn(LoadBalanceBaseTest.class); + given(invoker2.getUrl()).willReturn(url2); + + given(invoker3.isAvailable()).willReturn(true); + given(invoker3.getInterface()).willReturn(LoadBalanceBaseTest.class); + given(invoker3.getUrl()).willReturn(url3); + + given(invoker4.isAvailable()).willReturn(true); + given(invoker4.getInterface()).willReturn(LoadBalanceBaseTest.class); + given(invoker4.getUrl()).willReturn(url4); + + given(invoker5.isAvailable()).willReturn(true); + given(invoker5.getInterface()).willReturn(LoadBalanceBaseTest.class); + given(invoker5.getUrl()).willReturn(url5); + + invokers.add(invoker1); + invokers.add(invoker2); + invokers.add(invoker3); + invokers.add(invoker4); + invokers.add(invoker5); + } + + public Map getInvokeCounter(int runs, String loadbalanceName) { + Map counter = new ConcurrentHashMap(); + LoadBalance lb = getLoadBalance(loadbalanceName); + for (Invoker invoker : invokers) { + counter.put(invoker, new AtomicLong(0)); + } + URL url = invokers.get(0).getUrl(); + for (int i = 0; i < runs; i++) { + Invoker sinvoker = lb.select(invokers, url, invocation); + counter.get(sinvoker).incrementAndGet(); + } + return counter; + } + + public Map getGenericInvokeCounter(int runs, String loadbalanceName) { + Map counter = new ConcurrentHashMap(); + LoadBalance lb = getLoadBalance(loadbalanceName); + for (Invoker invoker : invokers) { + counter.put(invoker, new AtomicLong(0)); + } + URL url = invokers.get(0).getUrl(); + for (int i = 0; i < runs; i++) { + Invoker sinvoker = lb.select(invokers, url, genericInvocation); + counter.get(sinvoker).incrementAndGet(); + } + return counter; + } + + protected AbstractLoadBalance getLoadBalance(String loadbalanceName) { + return (AbstractLoadBalance) ExtensionLoader.getExtensionLoader(LoadBalance.class).getExtension(loadbalanceName); + } + + @Test + void testLoadBalanceWarmup() { + Assertions.assertEquals(1, calculateDefaultWarmupWeight(0)); + Assertions.assertEquals(1, calculateDefaultWarmupWeight(13)); + Assertions.assertEquals(1, calculateDefaultWarmupWeight(6 * 1000)); + Assertions.assertEquals(2, calculateDefaultWarmupWeight(12 * 1000)); + Assertions.assertEquals(10, calculateDefaultWarmupWeight(60 * 1000)); + Assertions.assertEquals(50, calculateDefaultWarmupWeight(5 * 60 * 1000)); + Assertions.assertEquals(50, calculateDefaultWarmupWeight(5 * 60 * 1000 + 23)); + Assertions.assertEquals(50, calculateDefaultWarmupWeight(5 * 60 * 1000 + 5999)); + Assertions.assertEquals(51, calculateDefaultWarmupWeight(5 * 60 * 1000 + 6000)); + Assertions.assertEquals(90, calculateDefaultWarmupWeight(9 * 60 * 1000)); + Assertions.assertEquals(98, calculateDefaultWarmupWeight(10 * 60 * 1000 - 12 * 1000)); + Assertions.assertEquals(99, calculateDefaultWarmupWeight(10 * 60 * 1000 - 6 * 1000)); + Assertions.assertEquals(100, calculateDefaultWarmupWeight(10 * 60 * 1000)); + Assertions.assertEquals(100, calculateDefaultWarmupWeight(20 * 60 * 1000)); + } + + /** + * handle default data + * + * @return + */ + private static int calculateDefaultWarmupWeight(int uptime) { + return AbstractLoadBalance.calculateWarmupWeight(uptime, DEFAULT_WARMUP, DEFAULT_WEIGHT); + } + + /*------------------------------------test invokers for weight---------------------------------------*/ + + protected static class InvokeResult { + private AtomicLong count = new AtomicLong(); + private int weight = 0; + private int totalWeight = 0; + + public InvokeResult(int weight) { + this.weight = weight; + } + + public AtomicLong getCount() { + return count; + } + + public int getWeight() { + return weight; + } + + public int getTotalWeight() { + return totalWeight; + } + + public void setTotalWeight(int totalWeight) { + this.totalWeight = totalWeight; + } + + public int getExpected(int runCount) { + return getWeight() * runCount / getTotalWeight(); + } + + public float getDeltaPercentage(int runCount) { + int expected = getExpected(runCount); + return Math.abs((expected - getCount().get()) * 100.0f / expected); + } + + @Override + public String toString() { + return JsonUtils.toJson(this); + } + } + + protected List> weightInvokers = new ArrayList>(); + protected List> weightInvokersSR= new ArrayList>(); + + protected Invoker weightInvoker1; + protected Invoker weightInvoker2; + protected Invoker weightInvoker3; + protected Invoker weightInvokerTmp; + protected Invoker weightInvoker5; + + @BeforeEach + public void before() throws Exception { + weightInvoker1 = mock(Invoker.class, Mockito.withSettings().stubOnly()); + weightInvoker2 = mock(Invoker.class, Mockito.withSettings().stubOnly()); + weightInvoker3 = mock(Invoker.class, Mockito.withSettings().stubOnly()); + weightInvokerTmp = mock(Invoker.class, Mockito.withSettings().stubOnly()); + weightInvoker5 = mock(Invoker.class, Mockito.withSettings().stubOnly()); + + weightTestInvocation = new RpcInvocation(); + weightTestInvocation.setMethodName("test"); + + URL url1 = URL.valueOf("test1://127.0.0.1:11/DemoService?weight=1&active=0"); + URL url2 = URL.valueOf("test2://127.0.0.1:12/DemoService?weight=9&active=0"); + URL url3 = URL.valueOf("test3://127.0.0.1:13/DemoService?weight=6&active=1"); + URL urlTmp = URL.valueOf("test4://127.0.0.1:9999/DemoService?weight=11&active=0"); + URL url5 = URL.valueOf("test5://127.0.0.1:15/DemoService?weight=15&active=0"); + + given(weightInvoker1.isAvailable()).willReturn(true); + given(weightInvoker1.getInterface()).willReturn(LoadBalanceBaseTest.class); + given(weightInvoker1.getUrl()).willReturn(url1); + + given(weightInvoker2.isAvailable()).willReturn(true); + given(weightInvoker2.getInterface()).willReturn(LoadBalanceBaseTest.class); + given(weightInvoker2.getUrl()).willReturn(url2); + + given(weightInvoker3.isAvailable()).willReturn(true); + given(weightInvoker3.getInterface()).willReturn(LoadBalanceBaseTest.class); + given(weightInvoker3.getUrl()).willReturn(url3); + + given(weightInvokerTmp.isAvailable()).willReturn(true); + given(weightInvokerTmp.getInterface()).willReturn(LoadBalanceBaseTest.class); + given(weightInvokerTmp.getUrl()).willReturn(urlTmp); + + given(weightInvoker5.isAvailable()).willReturn(true); + given(weightInvoker5.getInterface()).willReturn(LoadBalanceBaseTest.class); + given(weightInvoker5.getUrl()).willReturn(url5); + + weightInvokers.add(weightInvoker1); + weightInvokers.add(weightInvoker2); + weightInvokers.add(weightInvoker3); + + weightInvokersSR.add(weightInvoker1); + weightInvokersSR.add(weightInvoker2); + weightInvokersSR.add(weightInvoker5); + + weightTestRpcStatus1 = RpcStatus.getStatus(weightInvoker1.getUrl(), weightTestInvocation.getMethodName()); + weightTestRpcStatus2 = RpcStatus.getStatus(weightInvoker2.getUrl(), weightTestInvocation.getMethodName()); + weightTestRpcStatus3 = RpcStatus.getStatus(weightInvoker3.getUrl(), weightTestInvocation.getMethodName()); + weightTestRpcStatus5 = RpcStatus.getStatus(weightInvoker5.getUrl(), weightTestInvocation.getMethodName()); + + + // weightTestRpcStatus3 active is 1 + RpcStatus.beginCount(weightInvoker3.getUrl(), weightTestInvocation.getMethodName()); + + // weightTestRpcStatus5 shortest response time of success calls is bigger than 0 + // weightTestRpcStatus5 active is 1 + RpcStatus.beginCount(weightInvoker5.getUrl(), weightTestInvocation.getMethodName()); + RpcStatus.endCount(weightInvoker5.getUrl(), weightTestInvocation.getMethodName(), 5000L, true); + RpcStatus.beginCount(weightInvoker5.getUrl(), weightTestInvocation.getMethodName()); + } + + protected Map getWeightedInvokeResult(int runs, String loadbalanceName) { + Map counter = new ConcurrentHashMap(); + AbstractLoadBalance lb = getLoadBalance(loadbalanceName); + int totalWeight = 0; + for (int i = 0; i < weightInvokers.size(); i ++) { + InvokeResult invokeResult = new InvokeResult(lb.getWeight(weightInvokers.get(i), weightTestInvocation)); + counter.put(weightInvokers.get(i), invokeResult); + totalWeight += invokeResult.getWeight(); + } + for (InvokeResult invokeResult : counter.values()) { + invokeResult.setTotalWeight(totalWeight); + } + URL url = weightInvokers.get(0).getUrl(); + for (int i = 0; i < runs; i++) { + Invoker sinvoker = lb.select(weightInvokers, url, weightTestInvocation); + counter.get(sinvoker).getCount().incrementAndGet(); + } + return counter; + } + +} diff --git a/dubbo-plugin/dubbo-plugin-mock/pom.xml b/dubbo-plugin/dubbo-plugin-mock/pom.xml new file mode 100644 index 0000000000..8268ef4586 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-mock/pom.xml @@ -0,0 +1,46 @@ + + + + org.apache.dubbo + dubbo-plugin + ${revision} + ../pom.xml + + 4.0.0 + + dubbo-plugin-mock + jar + + + UTF-8 + + + + + org.apache.dubbo + dubbo-cluster + ${project.version} + + + org.apache.dubbo + dubbo-config-api + ${project.version} + + + diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelector.java b/dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelector.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelector.java rename to dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelector.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockStateRouterFactory.java b/dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockStateRouterFactory.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockStateRouterFactory.java rename to dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/cluster/router/mock/MockStateRouterFactory.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvoker.java b/dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvoker.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvoker.java rename to dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvoker.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterWrapper.java b/dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterWrapper.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterWrapper.java rename to dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterWrapper.java diff --git a/dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/support/MockConfigPostProcessor.java b/dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/support/MockConfigPostProcessor.java new file mode 100644 index 0000000000..4a1253993c --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/support/MockConfigPostProcessor.java @@ -0,0 +1,80 @@ +/* + * 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.dubbo.rpc.support; + +import org.apache.dubbo.common.extension.Activate; +import org.apache.dubbo.common.utils.ConfigUtils; +import org.apache.dubbo.config.AbstractInterfaceConfig; +import org.apache.dubbo.config.ConfigPostProcessor; +import org.apache.dubbo.config.ReferenceConfig; +import org.apache.dubbo.config.ServiceConfig; + +import static org.apache.dubbo.rpc.Constants.RETURN_PREFIX; +import static org.apache.dubbo.rpc.Constants.THROW_PREFIX; + +@Activate +public class MockConfigPostProcessor implements ConfigPostProcessor { + @Override + public void postProcessReferConfig(ReferenceConfig referenceConfig) { + checkMock(referenceConfig.getInterfaceClass(), referenceConfig); + } + + @Override + public void postProcessServiceConfig(ServiceConfig serviceConfig) { + checkMock(serviceConfig.getInterfaceClass(), serviceConfig); + } + + /** + * Legitimacy check and setup of local simulated operations. The operations can be a string with Simple operation or + * a classname whose {@link Class} implements a particular function + * + * @param interfaceClass for provider side, it is the {@link Class} of the service that will be exported; for consumer + * side, it is the {@link Class} of the remote service interface that will be referenced + */ + public static void checkMock(Class interfaceClass, AbstractInterfaceConfig config) { + String mock = config.getMock(); + if (ConfigUtils.isEmpty(mock)) { + return; + } + + String normalizedMock = MockInvoker.normalizeMock(mock); + if (normalizedMock.startsWith(RETURN_PREFIX)) { + normalizedMock = normalizedMock.substring(RETURN_PREFIX.length()).trim(); + try { + //Check whether the mock value is legal, if it is illegal, throw exception + MockInvoker.parseMockValue(normalizedMock); + } catch (Exception e) { + throw new IllegalStateException("Illegal mock return in "); + } + } else if (normalizedMock.startsWith(THROW_PREFIX)) { + normalizedMock = normalizedMock.substring(THROW_PREFIX.length()).trim(); + if (ConfigUtils.isNotEmpty(normalizedMock)) { + try { + //Check whether the mock value is legal + MockInvoker.getThrowable(normalizedMock); + } catch (Exception e) { + throw new IllegalStateException("Illegal mock throw in "); + } + } + } else { + //Check whether the mock class is a implementation of the interfaceClass, and if it has a default constructor + MockInvoker.getMockObject(config.getScopeModel().getExtensionDirector(), normalizedMock, interfaceClass); + } + } +} diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java b/dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java rename to dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/support/MockInvoker.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockProtocol.java b/dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/support/MockProtocol.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/support/MockProtocol.java rename to dubbo-plugin/dubbo-plugin-mock/src/main/java/org/apache/dubbo/rpc/support/MockProtocol.java diff --git a/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.config.ConfigPostProcessor b/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.config.ConfigPostProcessor new file mode 100644 index 0000000000..7b69d33f7d --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.config.ConfigPostProcessor @@ -0,0 +1 @@ +mock=org.apache.dubbo.rpc.support.MockConfigPostProcessor diff --git a/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol b/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol new file mode 100644 index 0000000000..3c28983b91 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol @@ -0,0 +1 @@ +mock=org.apache.dubbo.rpc.support.MockProtocol diff --git a/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster b/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster new file mode 100644 index 0000000000..75937b5cb3 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.Cluster @@ -0,0 +1 @@ +mock=org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterWrapper diff --git a/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory b/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory new file mode 100644 index 0000000000..d72b777121 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-mock/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory @@ -0,0 +1 @@ +mock=org.apache.dubbo.rpc.cluster.router.mock.MockStateRouterFactory diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelectorTest.java b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelectorTest.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelectorTest.java rename to dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/cluster/router/mock/MockInvokersSelectorTest.java diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvokerTest.java b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvokerTest.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvokerTest.java rename to dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockClusterInvokerTest.java diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockProviderRpcExceptionTest.java b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockProviderRpcExceptionTest.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockProviderRpcExceptionTest.java rename to dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MockProviderRpcExceptionTest.java diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MyMockException.java b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MyMockException.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MyMockException.java rename to dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/cluster/support/wrapper/MyMockException.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/DemoServiceA.java b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceA.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/DemoServiceA.java rename to dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceA.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/DemoServiceAMock.java b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceAMock.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/DemoServiceAMock.java rename to dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceAMock.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/DemoServiceB.java b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceB.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/DemoServiceB.java rename to dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceB.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/DemoServiceBMock.java b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceBMock.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/DemoServiceBMock.java rename to dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/DemoServiceBMock.java diff --git a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/Greeting.java b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/Greeting.java new file mode 100644 index 0000000000..928f6d40b9 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/Greeting.java @@ -0,0 +1,24 @@ +/* + * 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.dubbo.rpc.support; + +import org.apache.dubbo.common.extension.SPI; + +@SPI +public interface Greeting { + String hello(); +} diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/GreetingMock1.java b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/GreetingMock1.java similarity index 95% rename from dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/GreetingMock1.java rename to dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/GreetingMock1.java index 8bfe6e6c07..b79e2a9b68 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/GreetingMock1.java +++ b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/GreetingMock1.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.dubbo.config.mock; +package org.apache.dubbo.rpc.support; public class GreetingMock1 { } diff --git a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/GreetingMock2.java b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/GreetingMock2.java similarity index 91% rename from dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/GreetingMock2.java rename to dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/GreetingMock2.java index 429bff442a..654478e04a 100644 --- a/dubbo-config/dubbo-config-api/src/test/java/org/apache/dubbo/config/mock/GreetingMock2.java +++ b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/GreetingMock2.java @@ -14,9 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.dubbo.config.mock; - -import org.apache.dubbo.config.api.Greeting; +package org.apache.dubbo.rpc.support; public class GreetingMock2 implements Greeting { private GreetingMock2() { diff --git a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/MockAbstractClusterInvokerTest.java b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/MockAbstractClusterInvokerTest.java new file mode 100644 index 0000000000..cb0e2a7095 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/MockAbstractClusterInvokerTest.java @@ -0,0 +1,186 @@ +/* + * 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.dubbo.rpc.support; + +import org.apache.dubbo.common.URL; +import org.apache.dubbo.metrics.event.MetricsDispatcher; +import org.apache.dubbo.rpc.Invocation; +import org.apache.dubbo.rpc.Invoker; +import org.apache.dubbo.rpc.Result; +import org.apache.dubbo.rpc.RpcContext; +import org.apache.dubbo.rpc.RpcException; +import org.apache.dubbo.rpc.RpcInvocation; +import org.apache.dubbo.rpc.cluster.LoadBalance; +import org.apache.dubbo.rpc.cluster.directory.StaticDirectory; +import org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker; +import org.apache.dubbo.rpc.model.ApplicationModel; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static org.apache.dubbo.common.constants.CommonConstants.ENABLE_CONNECTIVITY_VALIDATION; +import static org.apache.dubbo.rpc.cluster.Constants.CLUSTER_AVAILABLE_CHECK_KEY; +import static org.apache.dubbo.rpc.cluster.Constants.INVOCATION_NEED_MOCK; +import static org.apache.dubbo.rpc.cluster.Constants.REFER_KEY; +import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.mock; + +/** + * AbstractClusterInvokerTest + */ +@SuppressWarnings("rawtypes") +class MockAbstractClusterInvokerTest { + List> invokers = new ArrayList>(); + List> selectedInvokers = new ArrayList>(); + AbstractClusterInvoker cluster; + AbstractClusterInvoker cluster_nocheck; + StaticDirectory dic; + RpcInvocation invocation = new RpcInvocation(); + URL url = URL.valueOf("registry://localhost:9090/org.apache.dubbo.rpc.cluster.support.AbstractClusterInvokerTest.IHelloService?refer=" + URL.encode("application=abstractClusterInvokerTest")); + URL consumerUrl = URL.valueOf("dubbo://localhost?application=abstractClusterInvokerTest&refer=application%3DabstractClusterInvokerTest"); + + Invoker invoker1; + Invoker invoker2; + Invoker invoker3; + Invoker invoker4; + Invoker invoker5; + Invoker mockedInvoker1; + + @BeforeAll + public static void setUpBeforeClass() throws Exception { + System.setProperty(ENABLE_CONNECTIVITY_VALIDATION, "false"); + } + + @AfterEach + public void teardown() throws Exception { + RpcContext.removeContext(); + } + + @AfterAll + public static void afterClass() { + System.clearProperty(ENABLE_CONNECTIVITY_VALIDATION); + } + + @SuppressWarnings({"unchecked"}) + @BeforeEach + public void setUp() throws Exception { + ApplicationModel.defaultModel().getBeanFactory().registerBean(MetricsDispatcher.class); + Map attributes = new HashMap<>(); + attributes.put("application", "abstractClusterInvokerTest"); + url = url.putAttribute(REFER_KEY, attributes); + + invocation.setMethodName("sayHello"); + + invoker1 = mock(Invoker.class); + invoker2 = mock(Invoker.class); + invoker3 = mock(Invoker.class); + invoker4 = mock(Invoker.class); + invoker5 = mock(Invoker.class); + mockedInvoker1 = mock(Invoker.class); + + URL turl = URL.valueOf("test://test:11/test"); + + given(invoker1.isAvailable()).willReturn(false); + given(invoker1.getInterface()).willReturn(IHelloService.class); + given(invoker1.getUrl()).willReturn(turl.setPort(1).addParameter("name", "invoker1")); + + given(invoker2.isAvailable()).willReturn(true); + given(invoker2.getInterface()).willReturn(IHelloService.class); + given(invoker2.getUrl()).willReturn(turl.setPort(2).addParameter("name", "invoker2")); + + given(invoker3.isAvailable()).willReturn(false); + given(invoker3.getInterface()).willReturn(IHelloService.class); + given(invoker3.getUrl()).willReturn(turl.setPort(3).addParameter("name", "invoker3")); + + given(invoker4.isAvailable()).willReturn(true); + given(invoker4.getInterface()).willReturn(IHelloService.class); + given(invoker4.getUrl()).willReturn(turl.setPort(4).addParameter("name", "invoker4")); + + given(invoker5.isAvailable()).willReturn(false); + given(invoker5.getInterface()).willReturn(IHelloService.class); + given(invoker5.getUrl()).willReturn(turl.setPort(5).addParameter("name", "invoker5")); + + given(mockedInvoker1.isAvailable()).willReturn(false); + given(mockedInvoker1.getInterface()).willReturn(IHelloService.class); + given(mockedInvoker1.getUrl()).willReturn(turl.setPort(999).setProtocol("mock")); + + invokers.add(invoker1); + dic = new StaticDirectory(url, invokers, null); + cluster = new AbstractClusterInvoker(dic) { + @Override + protected Result doInvoke(Invocation invocation, List invokers, LoadBalance loadbalance) + throws RpcException { + return null; + } + }; + + cluster_nocheck = new AbstractClusterInvoker(dic, url.addParameterIfAbsent(CLUSTER_AVAILABLE_CHECK_KEY, Boolean.FALSE.toString())) { + @Override + protected Result doInvoke(Invocation invocation, List invokers, LoadBalance loadbalance) + throws RpcException { + return null; + } + }; + + } + + private void initlistsize5() { + invokers.clear(); + selectedInvokers.clear();//Clear first, previous test case will make sure that the right invoker2 will be used. + invokers.add(invoker1); + invokers.add(invoker2); + invokers.add(invoker3); + invokers.add(invoker4); + invokers.add(invoker5); + } + + private void initDic() { + dic.notify(invokers); + dic.buildRouterChain(); + } + + /** + * Test mock invoker selector works as expected + */ + @Test + void testMockedInvokerSelect() { + initlistsize5(); + invokers.add(mockedInvoker1); + + initDic(); + + RpcInvocation mockedInvocation = new RpcInvocation(); + mockedInvocation.setMethodName("sayHello"); + mockedInvocation.setAttachment(INVOCATION_NEED_MOCK, "true"); + List> mockedInvokers = dic.list(mockedInvocation); + Assertions.assertEquals(1, mockedInvokers.size()); + + List> invokers = dic.list(invocation); + Assertions.assertEquals(5, invokers.size()); + } + + public static interface IHelloService { + } +} diff --git a/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/MockConfigPostProcessorTest.java b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/MockConfigPostProcessorTest.java new file mode 100644 index 0000000000..3ebb18e983 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/MockConfigPostProcessorTest.java @@ -0,0 +1,56 @@ +/* + * 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.dubbo.rpc.support; + +import org.apache.dubbo.config.AbstractInterfaceConfig; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +class MockConfigPostProcessorTest { + + @Test + void checkMock1() { + Assertions.assertThrows(IllegalStateException.class, () -> { + InterfaceConfig interfaceConfig = new InterfaceConfig(); + interfaceConfig.setMock("return {a, b}"); + MockConfigPostProcessor.checkMock(Greeting.class, interfaceConfig); + + }); + } + + @Test + void checkMock2() { + Assertions.assertThrows(IllegalStateException.class, () -> { + InterfaceConfig interfaceConfig = new InterfaceConfig(); + interfaceConfig.setMock(GreetingMock1.class.getName()); + MockConfigPostProcessor.checkMock(Greeting.class, interfaceConfig); + }); + } + + @Test + void checkMock3() { + Assertions.assertThrows(IllegalStateException.class, () -> { + InterfaceConfig interfaceConfig = new InterfaceConfig(); + interfaceConfig.setMock(GreetingMock2.class.getName()); + MockConfigPostProcessor.checkMock(Greeting.class, interfaceConfig); + }); + } + + public static class InterfaceConfig extends AbstractInterfaceConfig { + + } +} diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/MockInvokerTest.java b/dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/MockInvokerTest.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/support/MockInvokerTest.java rename to dubbo-plugin/dubbo-plugin-mock/src/test/java/org/apache/dubbo/rpc/support/MockInvokerTest.java diff --git a/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/pom.xml b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/pom.xml new file mode 100644 index 0000000000..50bdecc5ce --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/pom.xml @@ -0,0 +1,45 @@ + + + + org.apache.dubbo + dubbo-plugin + ${revision} + ../pom.xml + + 4.0.0 + + dubbo-plugin-proxy-bytebuddy + jar + + + UTF-8 + + + + + org.apache.dubbo + dubbo-rpc-api + ${project.version} + + + net.bytebuddy + byte-buddy + + + diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyInterceptor.java b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/main/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyInterceptor.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyInterceptor.java rename to dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/main/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyInterceptor.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxy.java b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/main/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxy.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxy.java rename to dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/main/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxy.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyFactory.java b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/main/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyFactory.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyFactory.java rename to dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/main/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyFactory.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyInvoker.java b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/main/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyInvoker.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyInvoker.java rename to dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/main/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyInvoker.java diff --git a/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.ProxyFactory b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.ProxyFactory new file mode 100644 index 0000000000..54bdcb8d11 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.ProxyFactory @@ -0,0 +1 @@ +bytebuddy=org.apache.dubbo.rpc.proxy.bytebuddy.ByteBuddyProxyFactory diff --git a/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/proxy/AbstractProxyTest.java b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/proxy/AbstractProxyTest.java new file mode 100644 index 0000000000..1703dfea20 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/proxy/AbstractProxyTest.java @@ -0,0 +1,77 @@ +/* + * 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.dubbo.rpc.proxy; + +import org.apache.dubbo.common.URL; +import org.apache.dubbo.rpc.Invoker; +import org.apache.dubbo.rpc.ProxyFactory; +import org.apache.dubbo.rpc.RpcInvocation; +import org.apache.dubbo.rpc.service.Destroyable; +import org.apache.dubbo.rpc.service.EchoService; +import org.apache.dubbo.rpc.support.DemoService; +import org.apache.dubbo.rpc.support.DemoServiceImpl; +import org.apache.dubbo.rpc.support.MyInvoker; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; + + +public abstract class AbstractProxyTest { + + public static ProxyFactory factory; + + @Test + void testGetProxy() { + URL url = URL.valueOf("test://test:11/test?group=dubbo&version=1.1"); + + MyInvoker invoker = new MyInvoker<>(url); + + DemoService proxy = factory.getProxy(invoker); + + Assertions.assertNotNull(proxy); + + Assertions.assertTrue(Arrays.asList(proxy.getClass().getInterfaces()).contains(DemoService.class)); + Assertions.assertTrue(Arrays.asList(proxy.getClass().getInterfaces()).contains(Destroyable.class)); + Assertions.assertTrue(Arrays.asList(proxy.getClass().getInterfaces()).contains(EchoService.class)); + + Assertions.assertEquals(invoker.invoke(new RpcInvocation("echo", DemoService.class.getName(), DemoService.class.getName() + ":dubbo", new Class[]{String.class}, new Object[]{"aa"})).getValue() + , proxy.echo("aa")); + + Destroyable destroyable = (Destroyable)proxy; + destroyable.$destroy(); + Assertions.assertTrue(invoker.isDestroyed()); + + } + + @Test + void testGetInvoker() { + URL url = URL.valueOf("test://test:11/test?group=dubbo&version=1.1"); + + DemoService origin = new DemoServiceImpl(); + + Invoker invoker = factory.getInvoker(new DemoServiceImpl(), DemoService.class, url); + + Assertions.assertEquals(invoker.getInterface(), DemoService.class); + + Assertions.assertEquals(invoker.invoke(new RpcInvocation("echo", DemoService.class.getName(), DemoService.class.getName() + ":dubbo", new Class[]{String.class}, new Object[]{"aa"})).getValue(), + origin.echo("aa")); + + } + +} diff --git a/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/proxy/RemoteService.java b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/proxy/RemoteService.java new file mode 100644 index 0000000000..1cf9878afe --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/proxy/RemoteService.java @@ -0,0 +1,26 @@ +/* + * 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.dubbo.rpc.proxy; + +import java.rmi.Remote; +import java.rmi.RemoteException; + +public interface RemoteService extends Remote { + String sayHello(String name) throws RemoteException; + + String getThreadName() throws RemoteException; +} diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyInterceptorTest.java b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyInterceptorTest.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyInterceptorTest.java rename to dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyInterceptorTest.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyFactoryTest.java b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyFactoryTest.java similarity index 93% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyFactoryTest.java rename to dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyFactoryTest.java index 312c09c9c9..dc86d4b924 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyFactoryTest.java +++ b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyFactoryTest.java @@ -21,7 +21,7 @@ import org.apache.dubbo.rpc.proxy.AbstractProxyTest; class ByteBuddyProxyFactoryTest extends AbstractProxyTest { static { - factory = new ByteBuddyProxyFactory(); + AbstractProxyTest.factory = new ByteBuddyProxyFactory(); } } diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyInvokerTest.java b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyInvokerTest.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyInvokerTest.java rename to dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyInvokerTest.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyTest.java b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyTest.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyTest.java rename to dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/proxy/bytebuddy/ByteBuddyProxyTest.java diff --git a/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/support/DemoService.java b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/support/DemoService.java new file mode 100644 index 0000000000..8bc9395c8b --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/support/DemoService.java @@ -0,0 +1,21 @@ +/* + * 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.dubbo.rpc.support; + +public interface DemoService { + String echo(String text); +} diff --git a/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/support/DemoServiceImpl.java b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/support/DemoServiceImpl.java new file mode 100644 index 0000000000..10517401af --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/support/DemoServiceImpl.java @@ -0,0 +1,27 @@ +/* + * 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.dubbo.rpc.support; + +/** + * DemoServiceImpl + */ + +public class DemoServiceImpl implements DemoService { + public String echo(String text) { + return text; + } +} diff --git a/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java new file mode 100644 index 0000000000..f2dbe07081 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-proxy-bytebuddy/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java @@ -0,0 +1,90 @@ +/* + * 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.dubbo.rpc.support; + +import org.apache.dubbo.common.URL; +import org.apache.dubbo.rpc.AppResponse; +import org.apache.dubbo.rpc.AsyncRpcResult; +import org.apache.dubbo.rpc.Invocation; +import org.apache.dubbo.rpc.Invoker; +import org.apache.dubbo.rpc.Result; +import org.apache.dubbo.rpc.RpcException; + +import java.util.concurrent.CompletableFuture; + +/** + * MockInvoker.java + */ +public class MyInvoker implements Invoker { + + URL url; + Class type; + boolean hasException = false; + boolean destroyed = false; + + public MyInvoker(URL url) { + this.url = url; + type = (Class) DemoService.class; + } + + public MyInvoker(URL url, boolean hasException) { + this.url = url; + type = (Class) DemoService.class; + this.hasException = hasException; + } + + @Override + public Class getInterface() { + return type; + } + + public URL getUrl() { + return url; + } + + @Override + public boolean isAvailable() { + return false; + } + + @Override + public Result invoke(Invocation invocation) throws RpcException { + AppResponse result = new AppResponse(); + if (!hasException) { + result.setValue("alibaba"); + } else { + result.setException(new RuntimeException("mocked exception")); + } + + return new AsyncRpcResult(CompletableFuture.completedFuture(result), invocation); + } + + @Override + public void destroy() { + destroyed = true; + } + + public boolean isDestroyed() { + return destroyed; + } + + @Override + public String toString() { + return "MyInvoker.toString()"; + } + +} diff --git a/dubbo-plugin/dubbo-plugin-qos-trace/pom.xml b/dubbo-plugin/dubbo-plugin-qos-trace/pom.xml new file mode 100644 index 0000000000..a9d28fa472 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-qos-trace/pom.xml @@ -0,0 +1,51 @@ + + + + org.apache.dubbo + dubbo-plugin + ${revision} + ../pom.xml + + 4.0.0 + + dubbo-plugin-qos-trace + jar + + + UTF-8 + + + + + org.apache.dubbo + dubbo-cluster + ${project.version} + + + org.apache.dubbo + dubbo-rpc-dubbo + ${project.version} + + + org.apache.dubbo + dubbo-remoting-netty4 + ${project.version} + + + diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/legacy/ChangeTelnetHandler.java b/dubbo-plugin/dubbo-plugin-qos-trace/src/main/java/org/apache/dubbo/qos/legacy/ChangeTelnetHandler.java similarity index 100% rename from dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/legacy/ChangeTelnetHandler.java rename to dubbo-plugin/dubbo-plugin-qos-trace/src/main/java/org/apache/dubbo/qos/legacy/ChangeTelnetHandler.java diff --git a/dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/legacy/TraceTelnetHandler.java b/dubbo-plugin/dubbo-plugin-qos-trace/src/main/java/org/apache/dubbo/qos/legacy/TraceTelnetHandler.java similarity index 100% rename from dubbo-plugin/dubbo-qos/src/main/java/org/apache/dubbo/qos/legacy/TraceTelnetHandler.java rename to dubbo-plugin/dubbo-plugin-qos-trace/src/main/java/org/apache/dubbo/qos/legacy/TraceTelnetHandler.java diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilter.java b/dubbo-plugin/dubbo-plugin-qos-trace/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilter.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilter.java rename to dubbo-plugin/dubbo-plugin-qos-trace/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilter.java diff --git a/dubbo-plugin/dubbo-qos/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.telnet.TelnetHandler b/dubbo-plugin/dubbo-plugin-qos-trace/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.telnet.TelnetHandler similarity index 100% rename from dubbo-plugin/dubbo-qos/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.telnet.TelnetHandler rename to dubbo-plugin/dubbo-plugin-qos-trace/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.remoting.telnet.TelnetHandler diff --git a/dubbo-plugin/dubbo-plugin-qos-trace/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-plugin/dubbo-plugin-qos-trace/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter new file mode 100644 index 0000000000..5e46aac253 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-qos-trace/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter @@ -0,0 +1 @@ +trace=org.apache.dubbo.rpc.protocol.dubbo.filter.TraceFilter diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/legacy/ChangeTelnetHandlerTest.java b/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/ChangeTelnetHandlerTest.java similarity index 98% rename from dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/legacy/ChangeTelnetHandlerTest.java rename to dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/ChangeTelnetHandlerTest.java index e42fce162d..8f62f49ad1 100644 --- a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/legacy/ChangeTelnetHandlerTest.java +++ b/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/ChangeTelnetHandlerTest.java @@ -46,6 +46,8 @@ class ChangeTelnetHandlerTest { private Channel mockChannel; private Invoker mockInvoker; + private static int portIncrease; + @AfterAll public static void tearDown() { @@ -66,7 +68,7 @@ class ChangeTelnetHandlerTest { mockChannel.removeAttribute("telnet.service"); givenLastCall(); given(mockInvoker.getInterface()).willReturn(DemoService.class); - given(mockInvoker.getUrl()).willReturn(URL.valueOf("dubbo://127.0.0.1:20884/demo")); + given(mockInvoker.getUrl()).willReturn(URL.valueOf("dubbo://127.0.0.1:" + (20994 + portIncrease++) + "/demo")); } private void givenLastCall() { @@ -124,4 +126,4 @@ class ChangeTelnetHandlerTest { String result = change.telnet(mockChannel, "/"); assertEquals("Cancelled default service org.apache.dubbo.rpc.protocol.dubbo.support.DemoService.", result); } -} \ No newline at end of file +} diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/legacy/ProtocolUtils.java b/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/ProtocolUtils.java similarity index 100% rename from dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/legacy/ProtocolUtils.java rename to dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/ProtocolUtils.java diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/legacy/TraceTelnetHandlerTest.java b/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/TraceTelnetHandlerTest.java similarity index 100% rename from dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/legacy/TraceTelnetHandlerTest.java rename to dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/TraceTelnetHandlerTest.java diff --git a/dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/legacy/channel/MockChannel.java b/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/channel/MockChannel.java similarity index 100% rename from dubbo-plugin/dubbo-qos/src/test/java/org/apache/dubbo/qos/legacy/channel/MockChannel.java rename to dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/channel/MockChannel.java diff --git a/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/service/DemoService.java b/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/service/DemoService.java new file mode 100644 index 0000000000..dcdaf8c50a --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/qos/legacy/service/DemoService.java @@ -0,0 +1,25 @@ +/* + * 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.dubbo.qos.legacy.service; + +/** + * TestService + */ + +public interface DemoService { + void sayHello(String name); +} diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/MockChannel.java b/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/MockChannel.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/MockChannel.java rename to dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/MockChannel.java diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilterTest.java b/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilterTest.java similarity index 96% rename from dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilterTest.java rename to dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilterTest.java index d58bf5ebaf..77418d81b4 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilterTest.java +++ b/dubbo-plugin/dubbo-plugin-qos-trace/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/filter/TraceFilterTest.java @@ -18,11 +18,11 @@ package org.apache.dubbo.rpc.protocol.dubbo.filter; import org.apache.dubbo.common.URL; import org.apache.dubbo.common.utils.CollectionUtils; +import org.apache.dubbo.qos.legacy.service.DemoService; import org.apache.dubbo.remoting.Channel; import org.apache.dubbo.rpc.Invocation; import org.apache.dubbo.rpc.Invoker; import org.apache.dubbo.rpc.Result; -import org.apache.dubbo.rpc.protocol.dubbo.support.DemoService; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; @@ -106,7 +106,7 @@ class TraceFilterTest { // test invoke filter.invoke(mockInvoker, mockInvocation); String message = listToString(mockChannel.getReceivedObjects()); - String expectMessage = "org.apache.dubbo.rpc.protocol.dubbo.support.DemoService.sayHello([]) -> \"result\""; + String expectMessage = "org.apache.dubbo.qos.legacy.service.DemoService.sayHello([]) -> \"result\""; System.out.println("actual message: " + message); Assertions.assertTrue(message.contains(expectMessage)); Assertions.assertTrue(message.contains("elapsed:")); diff --git a/dubbo-plugin/dubbo-plugin-router-condition/pom.xml b/dubbo-plugin/dubbo-plugin-router-condition/pom.xml new file mode 100644 index 0000000000..f34a1baa2c --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-router-condition/pom.xml @@ -0,0 +1,41 @@ + + + + org.apache.dubbo + dubbo-plugin + ${revision} + ../pom.xml + + 4.0.0 + + dubbo-plugin-router-condition + jar + + + UTF-8 + + + + + org.apache.dubbo + dubbo-cluster + ${project.version} + + + diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouter.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouter.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouter.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouter.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouterFactory.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouterFactory.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouterFactory.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouterFactory.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouter.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouter.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouter.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouter.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouterFactory.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouterFactory.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouterFactory.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/AppStateRouterFactory.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ListenableStateRouter.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ListenableStateRouter.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ListenableStateRouter.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ListenableStateRouter.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouter.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouter.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouter.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouter.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouterFactory.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouterFactory.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouterFactory.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppStateRouterFactory.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouter.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouter.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouter.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouter.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouterFactory.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouterFactory.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouterFactory.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/ServiceStateRouterFactory.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRouterRule.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRouterRule.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRouterRule.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRouterRule.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRuleParser.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRuleParser.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRuleParser.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/config/model/ConditionRuleParser.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/AbstractConditionMatcher.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/AbstractConditionMatcher.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/AbstractConditionMatcher.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/AbstractConditionMatcher.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcher.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcher.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcher.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcher.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcherFactory.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcherFactory.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcherFactory.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/ConditionMatcherFactory.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcher.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcher.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcher.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcher.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcherFactory.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcherFactory.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcherFactory.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/argument/ArgumentConditionMatcherFactory.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcher.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcher.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcher.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcher.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcherFactory.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcherFactory.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcherFactory.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/attachment/AttachmentConditionMatcherFactory.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcher.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcher.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcher.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcher.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcherFactory.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcherFactory.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcherFactory.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/param/UrlParamConditionMatcherFactory.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/ValuePattern.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/ValuePattern.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/ValuePattern.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/ValuePattern.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/range/RangeValuePattern.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/range/RangeValuePattern.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/range/RangeValuePattern.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/range/RangeValuePattern.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/wildcard/WildcardValuePattern.java b/dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/wildcard/WildcardValuePattern.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/wildcard/WildcardValuePattern.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/java/org/apache/dubbo/rpc/cluster/router/condition/matcher/pattern/wildcard/WildcardValuePattern.java diff --git a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.condition.matcher.ConditionMatcherFactory b/dubbo-plugin/dubbo-plugin-router-condition/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.condition.matcher.ConditionMatcherFactory similarity index 100% rename from dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.condition.matcher.ConditionMatcherFactory rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.condition.matcher.ConditionMatcherFactory diff --git a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.condition.matcher.pattern.ValuePattern b/dubbo-plugin/dubbo-plugin-router-condition/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.condition.matcher.pattern.ValuePattern similarity index 100% rename from dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.condition.matcher.pattern.ValuePattern rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.condition.matcher.pattern.ValuePattern diff --git a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory b/dubbo-plugin/dubbo-plugin-router-condition/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory similarity index 52% rename from dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory rename to dubbo-plugin/dubbo-plugin-router-condition/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory index 7c6f4b8ce1..3fe964484c 100644 --- a/dubbo-cluster/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory +++ b/dubbo-plugin/dubbo-plugin-router-condition/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory @@ -1,8 +1,4 @@ -tag=org.apache.dubbo.rpc.cluster.router.tag.TagStateRouterFactory condition=org.apache.dubbo.rpc.cluster.router.condition.ConditionStateRouterFactory service=org.apache.dubbo.rpc.cluster.router.condition.config.ServiceStateRouterFactory app=org.apache.dubbo.rpc.cluster.router.condition.config.AppStateRouterFactory provider-app=org.apache.dubbo.rpc.cluster.router.condition.config.ProviderAppStateRouterFactory -script-app=org.apache.dubbo.rpc.cluster.router.script.config.AppScriptRouterFactory -mock=org.apache.dubbo.rpc.cluster.router.mock.MockStateRouterFactory -standard-mesh-rule=org.apache.dubbo.rpc.cluster.router.mesh.route.StandardMeshRuleRouterFactory diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/directory/MockDirInvocation.java b/dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/directory/MockDirInvocation.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/directory/MockDirInvocation.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/directory/MockDirInvocation.java diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectoryTest.java b/dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectoryTest.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectoryTest.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/directory/StaticDirectoryTest.java diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/ConfigConditionRouterTest.java b/dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/router/ConfigConditionRouterTest.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/ConfigConditionRouterTest.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/router/ConfigConditionRouterTest.java diff --git a/dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/router/MockInvoker.java b/dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/router/MockInvoker.java new file mode 100644 index 0000000000..11a87dcf09 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/router/MockInvoker.java @@ -0,0 +1,69 @@ +/* + * 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.dubbo.rpc.cluster.router; + +import org.apache.dubbo.common.URL; +import org.apache.dubbo.rpc.Invocation; +import org.apache.dubbo.rpc.Invoker; +import org.apache.dubbo.rpc.Result; +import org.apache.dubbo.rpc.RpcException; + +public class MockInvoker implements Invoker { + private boolean available = false; + private URL url; + + public MockInvoker() { + } + + public MockInvoker(URL url) { + super(); + this.url = url; + } + + public MockInvoker(URL url, boolean available) { + super(); + this.url = url; + this.available = available; + } + + public MockInvoker(boolean available) { + this.available = available; + } + + @Override + public Class getInterface() { + return null; + } + + public URL getUrl() { + return url; + } + + @Override + public boolean isAvailable() { + return available; + } + + @Override + public Result invoke(Invocation invocation) throws RpcException { + return null; + } + + @Override + public void destroy() { + } +} diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouterTest.java b/dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouterTest.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouterTest.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/router/condition/ConditionStateRouterTest.java diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppConditionStateRouterTest.java b/dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppConditionStateRouterTest.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppConditionStateRouterTest.java rename to dubbo-plugin/dubbo-plugin-router-condition/src/test/java/org/apache/dubbo/rpc/cluster/router/condition/config/ProviderAppConditionStateRouterTest.java diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/pom.xml b/dubbo-plugin/dubbo-plugin-router-mesh/pom.xml new file mode 100644 index 0000000000..c1055dff90 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-router-mesh/pom.xml @@ -0,0 +1,41 @@ + + + + org.apache.dubbo + dubbo-plugin + ${revision} + ../pom.xml + + 4.0.0 + + dubbo-plugin-router-mesh + jar + + + UTF-8 + + + + + org.apache.dubbo + dubbo-cluster + ${project.version} + + + diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/MeshScopeModelInitializer.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/MeshScopeModelInitializer.java new file mode 100644 index 0000000000..84c24314ed --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/MeshScopeModelInitializer.java @@ -0,0 +1,40 @@ +/* + * 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.dubbo.rpc.cluster.router.mesh; + + +import org.apache.dubbo.common.beans.factory.ScopeBeanFactory; +import org.apache.dubbo.rpc.cluster.router.mesh.route.MeshRuleManager; +import org.apache.dubbo.rpc.model.ApplicationModel; +import org.apache.dubbo.rpc.model.FrameworkModel; +import org.apache.dubbo.rpc.model.ModuleModel; +import org.apache.dubbo.rpc.model.ScopeModelInitializer; + +public class MeshScopeModelInitializer implements ScopeModelInitializer { + @Override + public void initializeFrameworkModel(FrameworkModel frameworkModel) { + } + + @Override + public void initializeApplicationModel(ApplicationModel applicationModel) { + } + + public void initializeModuleModel(ModuleModel moduleModel) { + ScopeBeanFactory beanFactory = moduleModel.getBeanFactory(); + beanFactory.registerBean(MeshRuleManager.class); + } +} diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListener.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListener.java similarity index 99% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListener.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListener.java index f49f8e9b16..955878735b 100644 --- a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListener.java +++ b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListener.java @@ -25,7 +25,6 @@ import org.apache.dubbo.common.logger.LoggerFactory; import org.apache.dubbo.common.utils.CollectionUtils; import org.apache.dubbo.rpc.cluster.router.mesh.util.MeshRuleDispatcher; import org.apache.dubbo.rpc.cluster.router.mesh.util.MeshRuleListener; - import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.LoaderOptions; import org.yaml.snakeyaml.Yaml; diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListener.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListener.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListener.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListener.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListenerFactory.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListenerFactory.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListenerFactory.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshEnvListenerFactory.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCache.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCache.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCache.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCache.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleConstants.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleConstants.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleConstants.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleConstants.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManager.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManager.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManager.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManager.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouter.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouter.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouter.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouter.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouter.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouter.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouter.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouter.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactory.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactory.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactory.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactory.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/BaseRule.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/BaseRule.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/BaseRule.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/BaseRule.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VsDestinationGroup.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VsDestinationGroup.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VsDestinationGroup.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VsDestinationGroup.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/ConnectionPoolSettings.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/ConnectionPoolSettings.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/ConnectionPoolSettings.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/ConnectionPoolSettings.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRule.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRule.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRule.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRule.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRuleSpec.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRuleSpec.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRuleSpec.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/DestinationRuleSpec.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/Subset.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/Subset.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/Subset.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/Subset.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TCPSettings.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TCPSettings.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TCPSettings.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TCPSettings.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TcpKeepalive.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TcpKeepalive.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TcpKeepalive.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TcpKeepalive.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TrafficPolicy.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TrafficPolicy.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TrafficPolicy.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/TrafficPolicy.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/ConsistentHashLB.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/ConsistentHashLB.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/ConsistentHashLB.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/ConsistentHashLB.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/LoadBalancerSettings.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/LoadBalancerSettings.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/LoadBalancerSettings.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/LoadBalancerSettings.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/SimpleLB.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/SimpleLB.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/SimpleLB.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/destination/loadbalance/SimpleLB.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequest.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequest.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequest.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequest.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRoute.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRoute.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRoute.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRoute.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRouteDetail.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRouteDetail.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRouteDetail.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboRouteDetail.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceRule.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceRule.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceRule.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceRule.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceSpec.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceSpec.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceSpec.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/VirtualServiceSpec.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboDestination.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboDestination.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboDestination.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboDestination.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboRouteDestination.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboRouteDestination.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboRouteDestination.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/destination/DubboRouteDestination.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatch.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatch.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatch.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatch.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleDispatcher.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleDispatcher.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleDispatcher.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleDispatcher.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleListener.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleListener.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleListener.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleListener.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/TracingContextProvider.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/TracingContextProvider.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/TracingContextProvider.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/main/java/org/apache/dubbo/rpc/cluster/router/mesh/util/TracingContextProvider.java diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory new file mode 100644 index 0000000000..8f917c1c85 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory @@ -0,0 +1 @@ +standard-mesh-rule=org.apache.dubbo.rpc.cluster.router.mesh.route.StandardMeshRuleRouterFactory diff --git a/dubbo-plugin/dubbo-plugin-router-mesh/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer new file mode 100644 index 0000000000..9aa39990a8 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-router-mesh/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer @@ -0,0 +1 @@ +mesh=org.apache.dubbo.rpc.cluster.router.mesh.MeshScopeModelInitializer diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListenerTest.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListenerTest.java similarity index 99% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListenerTest.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListenerTest.java index 8619baf581..afa2ae3241 100644 --- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListenerTest.java +++ b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshAppRuleListenerTest.java @@ -22,7 +22,6 @@ import org.apache.dubbo.common.config.configcenter.ConfigChangeType; import org.apache.dubbo.common.config.configcenter.ConfigChangedEvent; import org.apache.dubbo.common.config.configcenter.DynamicConfiguration; import org.apache.dubbo.rpc.cluster.router.mesh.util.MeshRuleListener; - import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCacheTest.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCacheTest.java similarity index 99% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCacheTest.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCacheTest.java index a1fbb39959..c44a126ba9 100644 --- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCacheTest.java +++ b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleCacheTest.java @@ -24,7 +24,6 @@ import org.apache.dubbo.rpc.cluster.router.mesh.rule.destination.DestinationRule import org.apache.dubbo.rpc.cluster.router.mesh.rule.destination.DestinationRuleSpec; import org.apache.dubbo.rpc.cluster.router.mesh.rule.destination.Subset; import org.apache.dubbo.rpc.cluster.router.state.BitList; - import org.junit.jupiter.api.Test; import org.mockito.Mockito; diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManagerTest.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManagerTest.java similarity index 99% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManagerTest.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManagerTest.java index ab609ec860..9bb33df7e0 100644 --- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManagerTest.java +++ b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleManagerTest.java @@ -22,7 +22,6 @@ import org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository; import org.apache.dubbo.rpc.cluster.router.mesh.util.MeshRuleListener; import org.apache.dubbo.rpc.model.ApplicationModel; import org.apache.dubbo.rpc.model.ModuleModel; - import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouterTest.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouterTest.java similarity index 99% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouterTest.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouterTest.java index 35f2a7e9ae..055488d6d2 100644 --- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouterTest.java +++ b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/MeshRuleRouterTest.java @@ -28,7 +28,6 @@ import org.apache.dubbo.rpc.cluster.router.mesh.util.TracingContextProvider; import org.apache.dubbo.rpc.cluster.router.state.BitList; import org.apache.dubbo.rpc.model.ApplicationModel; import org.apache.dubbo.rpc.model.ModuleModel; - import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactoryTest.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactoryTest.java similarity index 99% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactoryTest.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactoryTest.java index 53a0de3ad3..312e04872f 100644 --- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactoryTest.java +++ b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/route/StandardMeshRuleRouterFactoryTest.java @@ -18,7 +18,6 @@ package org.apache.dubbo.rpc.cluster.router.mesh.route; import org.apache.dubbo.common.URL; - import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/DestinationRuleTest.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/DestinationRuleTest.java similarity index 99% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/DestinationRuleTest.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/DestinationRuleTest.java index b73ffdf62b..ec4e50fb1d 100644 --- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/DestinationRuleTest.java +++ b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/DestinationRuleTest.java @@ -20,7 +20,6 @@ package org.apache.dubbo.rpc.cluster.router.mesh.rule; import org.apache.dubbo.rpc.cluster.router.mesh.rule.destination.DestinationRule; import org.apache.dubbo.rpc.cluster.router.mesh.rule.destination.loadbalance.SimpleLB; import org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.VirtualServiceRule; - import org.junit.jupiter.api.Test; import org.yaml.snakeyaml.Yaml; diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VirtualServiceRuleTest.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VirtualServiceRuleTest.java similarity index 99% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VirtualServiceRuleTest.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VirtualServiceRuleTest.java index cca13f2e21..45bebd8cdd 100644 --- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VirtualServiceRuleTest.java +++ b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/VirtualServiceRuleTest.java @@ -20,7 +20,6 @@ package org.apache.dubbo.rpc.cluster.router.mesh.rule; import org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.DubboRoute; import org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.DubboRouteDetail; import org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.VirtualServiceRule; - import org.junit.jupiter.api.Test; import org.yaml.snakeyaml.Yaml; diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequestTest.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequestTest.java similarity index 99% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequestTest.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequestTest.java index 7c2e433515..6219e245ba 100644 --- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequestTest.java +++ b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/DubboMatchRequestTest.java @@ -22,7 +22,6 @@ import org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.match.DubboA import org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.match.DubboMethodMatch; import org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.match.StringMatch; import org.apache.dubbo.rpc.cluster.router.mesh.util.TracingContextProvider; - import org.junit.jupiter.api.Test; import java.util.Collections; diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatchTest.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatchTest.java similarity index 99% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatchTest.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatchTest.java index 66bfd3e149..2feceee193 100644 --- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatchTest.java +++ b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/rule/virtualservice/match/DubboAttachmentMatchTest.java @@ -21,7 +21,6 @@ package org.apache.dubbo.rpc.cluster.router.mesh.rule.virtualservice.match; import org.apache.dubbo.rpc.Invocation; import org.apache.dubbo.rpc.RpcInvocation; import org.apache.dubbo.rpc.cluster.router.mesh.util.TracingContextProvider; - import org.junit.jupiter.api.Test; import org.mockito.Mockito; diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleDispatcherTest.java b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleDispatcherTest.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleDispatcherTest.java rename to dubbo-plugin/dubbo-plugin-router-mesh/src/test/java/org/apache/dubbo/rpc/cluster/router/mesh/util/MeshRuleDispatcherTest.java diff --git a/dubbo-cluster/src/test/resources/DestinationRuleTest.yaml b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/resources/DestinationRuleTest.yaml similarity index 100% rename from dubbo-cluster/src/test/resources/DestinationRuleTest.yaml rename to dubbo-plugin/dubbo-plugin-router-mesh/src/test/resources/DestinationRuleTest.yaml diff --git a/dubbo-cluster/src/test/resources/DestinationRuleTest2.yaml b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/resources/DestinationRuleTest2.yaml similarity index 100% rename from dubbo-cluster/src/test/resources/DestinationRuleTest2.yaml rename to dubbo-plugin/dubbo-plugin-router-mesh/src/test/resources/DestinationRuleTest2.yaml diff --git a/dubbo-cluster/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory similarity index 100% rename from dubbo-cluster/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory rename to dubbo-plugin/dubbo-plugin-router-mesh/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory diff --git a/dubbo-cluster/src/test/resources/VirtualServiceTest.yaml b/dubbo-plugin/dubbo-plugin-router-mesh/src/test/resources/VirtualServiceTest.yaml similarity index 100% rename from dubbo-cluster/src/test/resources/VirtualServiceTest.yaml rename to dubbo-plugin/dubbo-plugin-router-mesh/src/test/resources/VirtualServiceTest.yaml diff --git a/dubbo-plugin/dubbo-plugin-router-script/pom.xml b/dubbo-plugin/dubbo-plugin-router-script/pom.xml new file mode 100644 index 0000000000..ac3a30dfbe --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-router-script/pom.xml @@ -0,0 +1,41 @@ + + + + org.apache.dubbo + dubbo-plugin + ${revision} + ../pom.xml + + 4.0.0 + + dubbo-plugin-router-script + jar + + + UTF-8 + + + + + org.apache.dubbo + dubbo-cluster + ${project.version} + + + diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/file/FileStateRouterFactory.java b/dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/file/FileStateRouterFactory.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/file/FileStateRouterFactory.java rename to dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/file/FileStateRouterFactory.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouter.java b/dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouter.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouter.java rename to dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouter.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouterFactory.java b/dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouterFactory.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouterFactory.java rename to dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouterFactory.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptRouterFactory.java b/dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptRouterFactory.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptRouterFactory.java rename to dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptRouterFactory.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptStateRouter.java b/dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptStateRouter.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptStateRouter.java rename to dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptStateRouter.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/model/ScriptRule.java b/dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/model/ScriptRule.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/model/ScriptRule.java rename to dubbo-plugin/dubbo-plugin-router-script/src/main/java/org/apache/dubbo/rpc/cluster/router/script/config/model/ScriptRule.java diff --git a/dubbo-plugin/dubbo-plugin-router-script/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory b/dubbo-plugin/dubbo-plugin-router-script/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory new file mode 100644 index 0000000000..5111d289f4 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-router-script/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory @@ -0,0 +1 @@ +script-app=org.apache.dubbo.rpc.cluster.router.script.config.AppScriptRouterFactory diff --git a/dubbo-plugin/dubbo-plugin-router-script/src/test/java/org/apache/dubbo/rpc/cluster/router/MockInvoker.java b/dubbo-plugin/dubbo-plugin-router-script/src/test/java/org/apache/dubbo/rpc/cluster/router/MockInvoker.java new file mode 100644 index 0000000000..11a87dcf09 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-router-script/src/test/java/org/apache/dubbo/rpc/cluster/router/MockInvoker.java @@ -0,0 +1,69 @@ +/* + * 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.dubbo.rpc.cluster.router; + +import org.apache.dubbo.common.URL; +import org.apache.dubbo.rpc.Invocation; +import org.apache.dubbo.rpc.Invoker; +import org.apache.dubbo.rpc.Result; +import org.apache.dubbo.rpc.RpcException; + +public class MockInvoker implements Invoker { + private boolean available = false; + private URL url; + + public MockInvoker() { + } + + public MockInvoker(URL url) { + super(); + this.url = url; + } + + public MockInvoker(URL url, boolean available) { + super(); + this.url = url; + this.available = available; + } + + public MockInvoker(boolean available) { + this.available = available; + } + + @Override + public Class getInterface() { + return null; + } + + public URL getUrl() { + return url; + } + + @Override + public boolean isAvailable() { + return available; + } + + @Override + public Result invoke(Invocation invocation) throws RpcException { + return null; + } + + @Override + public void destroy() { + } +} diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/file/FileRouterEngineTest.java b/dubbo-plugin/dubbo-plugin-router-script/src/test/java/org/apache/dubbo/rpc/cluster/router/file/FileRouterEngineTest.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/file/FileRouterEngineTest.java rename to dubbo-plugin/dubbo-plugin-router-script/src/test/java/org/apache/dubbo/rpc/cluster/router/file/FileRouterEngineTest.java diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouterTest.java b/dubbo-plugin/dubbo-plugin-router-script/src/test/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouterTest.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouterTest.java rename to dubbo-plugin/dubbo-plugin-router-script/src/test/java/org/apache/dubbo/rpc/cluster/router/script/ScriptStateRouterTest.java diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptStateRouterTest.java b/dubbo-plugin/dubbo-plugin-router-script/src/test/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptStateRouterTest.java similarity index 100% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptStateRouterTest.java rename to dubbo-plugin/dubbo-plugin-router-script/src/test/java/org/apache/dubbo/rpc/cluster/router/script/config/AppScriptStateRouterTest.java diff --git a/dubbo-plugin/dubbo-plugin-router-script/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory b/dubbo-plugin/dubbo-plugin-router-script/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory new file mode 100644 index 0000000000..8e551aeccf --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-router-script/src/test/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory @@ -0,0 +1,2 @@ +script=org.apache.dubbo.rpc.cluster.router.script.ScriptStateRouterFactory +file=org.apache.dubbo.rpc.cluster.router.file.FileStateRouterFactory diff --git a/dubbo-cluster/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/availablerule.javascript b/dubbo-plugin/dubbo-plugin-router-script/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/availablerule.javascript similarity index 100% rename from dubbo-cluster/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/availablerule.javascript rename to dubbo-plugin/dubbo-plugin-router-script/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/availablerule.javascript diff --git a/dubbo-cluster/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/methodrule.javascript b/dubbo-plugin/dubbo-plugin-router-script/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/methodrule.javascript similarity index 100% rename from dubbo-cluster/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/methodrule.javascript rename to dubbo-plugin/dubbo-plugin-router-script/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/methodrule.javascript diff --git a/dubbo-cluster/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/notAvailablerule.javascript b/dubbo-plugin/dubbo-plugin-router-script/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/notAvailablerule.javascript similarity index 100% rename from dubbo-cluster/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/notAvailablerule.javascript rename to dubbo-plugin/dubbo-plugin-router-script/src/test/resources/org/apache/dubbo/rpc/cluster/router/file/notAvailablerule.javascript diff --git a/dubbo-plugin/dubbo-plugin-router-tag/pom.xml b/dubbo-plugin/dubbo-plugin-router-tag/pom.xml new file mode 100644 index 0000000000..8bdc94bacb --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-router-tag/pom.xml @@ -0,0 +1,41 @@ + + + + org.apache.dubbo + dubbo-plugin + ${revision} + ../pom.xml + + 4.0.0 + + dubbo-plugin-router-tag + jar + + + UTF-8 + + + + + org.apache.dubbo + dubbo-cluster + ${project.version} + + + diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouter.java b/dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouter.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouter.java rename to dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouter.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterFactory.java b/dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterFactory.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterFactory.java rename to dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterFactory.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/ParamMatch.java b/dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/ParamMatch.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/ParamMatch.java rename to dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/ParamMatch.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/Tag.java b/dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/Tag.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/Tag.java rename to dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/Tag.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRouterRule.java b/dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRouterRule.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRouterRule.java rename to dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRouterRule.java diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRuleParser.java b/dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRuleParser.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRuleParser.java rename to dubbo-plugin/dubbo-plugin-router-tag/src/main/java/org/apache/dubbo/rpc/cluster/router/tag/model/TagRuleParser.java diff --git a/dubbo-plugin/dubbo-plugin-router-tag/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory b/dubbo-plugin/dubbo-plugin-router-tag/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory new file mode 100644 index 0000000000..3cde96580e --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-router-tag/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.cluster.router.state.StateRouterFactory @@ -0,0 +1 @@ +tag=org.apache.dubbo.rpc.cluster.router.tag.TagStateRouterFactory diff --git a/dubbo-plugin/dubbo-plugin-router-tag/src/test/java/org/apache/dubbo/rpc/cluster/router/MockInvoker.java b/dubbo-plugin/dubbo-plugin-router-tag/src/test/java/org/apache/dubbo/rpc/cluster/router/MockInvoker.java new file mode 100644 index 0000000000..11a87dcf09 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-router-tag/src/test/java/org/apache/dubbo/rpc/cluster/router/MockInvoker.java @@ -0,0 +1,69 @@ +/* + * 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.dubbo.rpc.cluster.router; + +import org.apache.dubbo.common.URL; +import org.apache.dubbo.rpc.Invocation; +import org.apache.dubbo.rpc.Invoker; +import org.apache.dubbo.rpc.Result; +import org.apache.dubbo.rpc.RpcException; + +public class MockInvoker implements Invoker { + private boolean available = false; + private URL url; + + public MockInvoker() { + } + + public MockInvoker(URL url) { + super(); + this.url = url; + } + + public MockInvoker(URL url, boolean available) { + super(); + this.url = url; + this.available = available; + } + + public MockInvoker(boolean available) { + this.available = available; + } + + @Override + public Class getInterface() { + return null; + } + + public URL getUrl() { + return url; + } + + @Override + public boolean isAvailable() { + return available; + } + + @Override + public Result invoke(Invocation invocation) throws RpcException { + return null; + } + + @Override + public void destroy() { + } +} diff --git a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterTest.java b/dubbo-plugin/dubbo-plugin-router-tag/src/test/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterTest.java similarity index 94% rename from dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterTest.java rename to dubbo-plugin/dubbo-plugin-router-tag/src/test/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterTest.java index d5d7746303..228a667eef 100644 --- a/dubbo-cluster/src/test/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterTest.java +++ b/dubbo-plugin/dubbo-plugin-router-tag/src/test/java/org/apache/dubbo/rpc/cluster/router/tag/TagStateRouterTest.java @@ -20,12 +20,11 @@ package org.apache.dubbo.rpc.cluster.router.tag; import org.apache.dubbo.common.URL; import org.apache.dubbo.common.beans.factory.ScopeBeanFactory; -import org.apache.dubbo.common.extension.ExtensionLoader; import org.apache.dubbo.common.utils.Holder; import org.apache.dubbo.rpc.Invoker; import org.apache.dubbo.rpc.RpcInvocation; import org.apache.dubbo.rpc.cluster.router.MockInvoker; -import org.apache.dubbo.rpc.cluster.router.mesh.util.TracingContextProvider; +//import org.apache.dubbo.rpc.cluster.router.mesh.util.TracingContextProvider; import org.apache.dubbo.rpc.cluster.router.state.BitList; import org.apache.dubbo.rpc.cluster.router.state.StateRouter; import org.apache.dubbo.rpc.cluster.router.tag.model.TagRouterRule; @@ -39,9 +38,7 @@ import org.junit.jupiter.api.Test; import org.mockito.Mockito; import java.util.ArrayList; -import java.util.HashSet; import java.util.List; -import java.util.Set; import static org.apache.dubbo.common.constants.CommonConstants.TAG_KEY; import static org.mockito.Mockito.when; @@ -50,7 +47,6 @@ class TagStateRouterTest { private URL url; private ModuleModel originModel; private ModuleModel moduleModel; - private Set tracingContextProviders; @BeforeEach public void setup() { @@ -62,11 +58,6 @@ class TagStateRouterTest { when(moduleModel.getBeanFactory()).thenReturn(beanFactory); - ExtensionLoader extensionLoader = Mockito.mock(ExtensionLoader.class); - tracingContextProviders = new HashSet<>(); - when(extensionLoader.getSupportedExtensionInstances()).thenReturn(tracingContextProviders); - when(moduleModel.getExtensionLoader(TracingContextProvider.class)).thenReturn(extensionLoader); - url = URL.valueOf("test://localhost/DemoInterface").setScopeModel(moduleModel); } diff --git a/dubbo-plugin/dubbo-plugin-token/pom.xml b/dubbo-plugin/dubbo-plugin-token/pom.xml new file mode 100644 index 0000000000..0d66e62049 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-token/pom.xml @@ -0,0 +1,46 @@ + + + + org.apache.dubbo + dubbo-plugin + ${revision} + ../pom.xml + + 4.0.0 + + dubbo-plugin-token + jar + + + UTF-8 + + + + + org.apache.dubbo + dubbo-cluster + ${project.version} + + + org.apache.dubbo + dubbo-config-api + ${project.version} + + + diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/TokenFilter.java b/dubbo-plugin/dubbo-plugin-token/src/main/java/org/apache/dubbo/rpc/filter/TokenFilter.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/TokenFilter.java rename to dubbo-plugin/dubbo-plugin-token/src/main/java/org/apache/dubbo/rpc/filter/TokenFilter.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/TokenHeaderFilter.java b/dubbo-plugin/dubbo-plugin-token/src/main/java/org/apache/dubbo/rpc/filter/TokenHeaderFilter.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/TokenHeaderFilter.java rename to dubbo-plugin/dubbo-plugin-token/src/main/java/org/apache/dubbo/rpc/filter/TokenHeaderFilter.java diff --git a/dubbo-plugin/dubbo-plugin-token/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-plugin/dubbo-plugin-token/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter new file mode 100644 index 0000000000..eab8ae18e9 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-token/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter @@ -0,0 +1 @@ +token=org.apache.dubbo.rpc.filter.TokenFilter diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.HeaderFilter b/dubbo-plugin/dubbo-plugin-token/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.HeaderFilter similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.HeaderFilter rename to dubbo-plugin/dubbo-plugin-token/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.HeaderFilter diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/TokenFilterTest.java b/dubbo-plugin/dubbo-plugin-token/src/test/java/org/apache/dubbo/rpc/filter/TokenFilterTest.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/TokenFilterTest.java rename to dubbo-plugin/dubbo-plugin-token/src/test/java/org/apache/dubbo/rpc/filter/TokenFilterTest.java diff --git a/dubbo-plugin/dubbo-plugin-tps/pom.xml b/dubbo-plugin/dubbo-plugin-tps/pom.xml new file mode 100644 index 0000000000..7517b190a2 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-tps/pom.xml @@ -0,0 +1,46 @@ + + + + org.apache.dubbo + dubbo-plugin + ${revision} + ../pom.xml + + 4.0.0 + + dubbo-plugin-tps + jar + + + UTF-8 + + + + + org.apache.dubbo + dubbo-cluster + ${project.version} + + + org.apache.dubbo + dubbo-config-api + ${project.version} + + + diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ActiveLimitFilter.java b/dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/ActiveLimitFilter.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ActiveLimitFilter.java rename to dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/ActiveLimitFilter.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilter.java b/dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilter.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilter.java rename to dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilter.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/TpsLimitFilter.java b/dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/TpsLimitFilter.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/TpsLimitFilter.java rename to dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/TpsLimitFilter.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiter.java b/dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiter.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiter.java rename to dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiter.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/tps/StatItem.java b/dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/tps/StatItem.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/tps/StatItem.java rename to dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/tps/StatItem.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/tps/TPSLimiter.java b/dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/tps/TPSLimiter.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/tps/TPSLimiter.java rename to dubbo-plugin/dubbo-plugin-tps/src/main/java/org/apache/dubbo/rpc/filter/tps/TPSLimiter.java diff --git a/dubbo-plugin/dubbo-plugin-tps/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-plugin/dubbo-plugin-tps/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter new file mode 100644 index 0000000000..ed778d5ca1 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-tps/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter @@ -0,0 +1,3 @@ +executelimit=org.apache.dubbo.rpc.filter.ExecuteLimitFilter +active-limit=org.apache.dubbo.rpc.filter.ActiveLimitFilter +tps=org.apache.dubbo.rpc.filter.TpsLimitFilter diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ActiveLimitFilterTest.java b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/ActiveLimitFilterTest.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ActiveLimitFilterTest.java rename to dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/ActiveLimitFilterTest.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilterTest.java b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilterTest.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilterTest.java rename to dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/ExecuteLimitFilterTest.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiterTest.java b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiterTest.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiterTest.java rename to dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/tps/DefaultTPSLimiterTest.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/tps/StatItemTest.java b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/tps/StatItemTest.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/tps/StatItemTest.java rename to dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/tps/StatItemTest.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/tps/TpsLimitFilterTest.java b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/tps/TpsLimitFilterTest.java similarity index 100% rename from dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/filter/tps/TpsLimitFilterTest.java rename to dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/filter/tps/TpsLimitFilterTest.java diff --git a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/BlockMyInvoker.java b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/BlockMyInvoker.java new file mode 100644 index 0000000000..ee6e1bea9f --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/BlockMyInvoker.java @@ -0,0 +1,63 @@ +/* + * 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.dubbo.rpc.support; + +import org.apache.dubbo.common.URL; +import org.apache.dubbo.rpc.AppResponse; +import org.apache.dubbo.rpc.AsyncRpcResult; +import org.apache.dubbo.rpc.Invocation; +import org.apache.dubbo.rpc.Result; +import org.apache.dubbo.rpc.RpcException; + +public class BlockMyInvoker extends MyInvoker { + + private long blockTime = 100; + + public BlockMyInvoker(URL url, long blockTime) { + super(url); + this.blockTime = blockTime; + } + + public BlockMyInvoker(URL url, boolean hasException, long blockTime) { + super(url, hasException); + this.blockTime = blockTime; + } + + @Override + public Result invoke(Invocation invocation) throws RpcException { + AppResponse result = new AppResponse(); + if (!hasException) { + try { + Thread.sleep(blockTime); + } catch (InterruptedException e) { + } + result.setValue("Dubbo"); + } else { + result.setException(new RuntimeException("mocked exception")); + } + + return AsyncRpcResult.newDefaultAsyncResult(result, invocation); + } + + public long getBlockTime() { + return blockTime; + } + + public void setBlockTime(long blockTime) { + this.blockTime = blockTime; + } +} diff --git a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/DemoService.java b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/DemoService.java new file mode 100644 index 0000000000..82d869a25e --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/DemoService.java @@ -0,0 +1,21 @@ +/* + * 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.dubbo.rpc.support; + +public interface DemoService { + void sayHello(String name); +} diff --git a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java new file mode 100644 index 0000000000..ae8a69cc5d --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/MockInvocation.java @@ -0,0 +1,168 @@ +/* + * 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.dubbo.rpc.support; + +import org.apache.dubbo.rpc.AttachmentsAdapter; +import org.apache.dubbo.rpc.Invoker; +import org.apache.dubbo.rpc.RpcInvocation; +import org.apache.dubbo.rpc.model.ServiceModel; + +import java.util.HashMap; +import java.util.Map; + +import static org.apache.dubbo.common.constants.CommonConstants.DUBBO_VERSION_KEY; +import static org.apache.dubbo.common.constants.CommonConstants.GROUP_KEY; +import static org.apache.dubbo.common.constants.CommonConstants.PATH_KEY; +import static org.apache.dubbo.common.constants.CommonConstants.TIMEOUT_KEY; +import static org.apache.dubbo.common.constants.CommonConstants.VERSION_KEY; +import static org.apache.dubbo.rpc.Constants.TOKEN_KEY; + +/** + * MockInvocation.java + */ +public class MockInvocation extends RpcInvocation { + + private Map attachments; + + public MockInvocation() { + attachments = new HashMap<>(); + attachments.put(PATH_KEY, "dubbo"); + attachments.put(GROUP_KEY, "dubbo"); + attachments.put(VERSION_KEY, "1.0.0"); + attachments.put(DUBBO_VERSION_KEY, "1.0.0"); + attachments.put(TOKEN_KEY, "sfag"); + attachments.put(TIMEOUT_KEY, "1000"); + } + + @Override + public String getTargetServiceUniqueName() { + return null; + } + + @Override + public String getProtocolServiceKey() { + return null; + } + + public String getMethodName() { + return "echo"; + } + + @Override + public String getServiceName() { + return "DemoService"; + } + + public Class[] getParameterTypes() { + return new Class[]{String.class}; + } + + public Object[] getArguments() { + return new Object[]{"aa"}; + } + + public Map getAttachments() { + return new AttachmentsAdapter.ObjectToStringMap(attachments); + } + + @Override + public Map getObjectAttachments() { + return attachments; + } + + @Override + public void setAttachment(String key, String value) { + setObjectAttachment(key, value); + } + + @Override + public void setAttachment(String key, Object value) { + setObjectAttachment(key, value); + } + + @Override + public void setObjectAttachment(String key, Object value) { + attachments.put(key, value); + } + + @Override + public void setAttachmentIfAbsent(String key, String value) { + setObjectAttachmentIfAbsent(key, value); + } + + @Override + public void setAttachmentIfAbsent(String key, Object value) { + setObjectAttachmentIfAbsent(key, value); + } + + @Override + public void setObjectAttachmentIfAbsent(String key, Object value) { + attachments.put(key, value); + } + + public Invoker getInvoker() { + return null; + } + + @Override + public void setServiceModel(ServiceModel serviceModel) { + + } + + @Override + public ServiceModel getServiceModel() { + return null; + } + + @Override + public Object put(Object key, Object value) { + return null; + } + + @Override + public Object get(Object key) { + return null; + } + + @Override + public Map getAttributes() { + return null; + } + + public String getAttachment(String key) { + return (String) getObjectAttachments().get(key); + } + + @Override + public Object getObjectAttachment(String key) { + return attachments.get(key); + } + + public String getAttachment(String key, String defaultValue) { + return (String) getObjectAttachments().get(key); + } + + @Override + public Object getObjectAttachment(String key, Object defaultValue) { + Object result = attachments.get(key); + if (result == null) { + return defaultValue; + } + return result; + } + +} diff --git a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java new file mode 100644 index 0000000000..f2dbe07081 --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/MyInvoker.java @@ -0,0 +1,90 @@ +/* + * 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.dubbo.rpc.support; + +import org.apache.dubbo.common.URL; +import org.apache.dubbo.rpc.AppResponse; +import org.apache.dubbo.rpc.AsyncRpcResult; +import org.apache.dubbo.rpc.Invocation; +import org.apache.dubbo.rpc.Invoker; +import org.apache.dubbo.rpc.Result; +import org.apache.dubbo.rpc.RpcException; + +import java.util.concurrent.CompletableFuture; + +/** + * MockInvoker.java + */ +public class MyInvoker implements Invoker { + + URL url; + Class type; + boolean hasException = false; + boolean destroyed = false; + + public MyInvoker(URL url) { + this.url = url; + type = (Class) DemoService.class; + } + + public MyInvoker(URL url, boolean hasException) { + this.url = url; + type = (Class) DemoService.class; + this.hasException = hasException; + } + + @Override + public Class getInterface() { + return type; + } + + public URL getUrl() { + return url; + } + + @Override + public boolean isAvailable() { + return false; + } + + @Override + public Result invoke(Invocation invocation) throws RpcException { + AppResponse result = new AppResponse(); + if (!hasException) { + result.setValue("alibaba"); + } else { + result.setException(new RuntimeException("mocked exception")); + } + + return new AsyncRpcResult(CompletableFuture.completedFuture(result), invocation); + } + + @Override + public void destroy() { + destroyed = true; + } + + public boolean isDestroyed() { + return destroyed; + } + + @Override + public String toString() { + return "MyInvoker.toString()"; + } + +} diff --git a/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/RuntimeExceptionInvoker.java b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/RuntimeExceptionInvoker.java new file mode 100644 index 0000000000..63d497f9aa --- /dev/null +++ b/dubbo-plugin/dubbo-plugin-tps/src/test/java/org/apache/dubbo/rpc/support/RuntimeExceptionInvoker.java @@ -0,0 +1,35 @@ +/* + * 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.dubbo.rpc.support; + +import org.apache.dubbo.common.URL; +import org.apache.dubbo.rpc.Invocation; +import org.apache.dubbo.rpc.Result; +import org.apache.dubbo.rpc.RpcException; + +public class RuntimeExceptionInvoker extends MyInvoker { + + public RuntimeExceptionInvoker(URL url) { + super(url); + } + + @Override + public Result invoke(Invocation invocation) throws RpcException { + throw new RuntimeException("Runtime exception"); + } +} diff --git a/dubbo-plugin/pom.xml b/dubbo-plugin/pom.xml index afc7e65b76..a7cf59881f 100644 --- a/dubbo-plugin/pom.xml +++ b/dubbo-plugin/pom.xml @@ -35,6 +35,21 @@ dubbo-security dubbo-spring-security dubbo-qos-api + dubbo-plugin-cluster-mergeable + dubbo-plugin-mock + dubbo-plugin-router-script + dubbo-plugin-router-mesh + dubbo-plugin-router-condition + dubbo-plugin-router-tag + dubbo-plugin-loadbalance-adaptive + dubbo-plugin-access-log + dubbo-plugin-tps + dubbo-plugin-token + dubbo-plugin-generic-invoke + dubbo-plugin-context + dubbo-plugin-classloader-filter + dubbo-plugin-proxy-bytebuddy + dubbo-plugin-qos-trace false diff --git a/dubbo-registry/dubbo-registry-api/pom.xml b/dubbo-registry/dubbo-registry-api/pom.xml index c35a64b578..eb17182ab8 100644 --- a/dubbo-registry/dubbo-registry-api/pom.xml +++ b/dubbo-registry/dubbo-registry-api/pom.xml @@ -111,5 +111,12 @@ dubbo-native ${project.parent.version} + + + org.apache.dubbo + dubbo-plugin-cluster-mergeable + ${project.parent.version} + test + diff --git a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java index b69376e784..f2818b7721 100644 --- a/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java +++ b/dubbo-registry/dubbo-registry-api/src/main/java/org/apache/dubbo/registry/integration/RegistryProtocol.java @@ -49,7 +49,6 @@ import org.apache.dubbo.rpc.cluster.ClusterInvoker; import org.apache.dubbo.rpc.cluster.Configurator; import org.apache.dubbo.rpc.cluster.Constants; import org.apache.dubbo.rpc.cluster.governance.GovernanceRuleRepository; -import org.apache.dubbo.rpc.cluster.support.MergeableCluster; import org.apache.dubbo.rpc.model.ApplicationModel; import org.apache.dubbo.rpc.model.FrameworkModel; import org.apache.dubbo.rpc.model.ModuleModel; @@ -87,6 +86,7 @@ import static org.apache.dubbo.common.constants.CommonConstants.HIDE_KEY_PREFIX; import static org.apache.dubbo.common.constants.CommonConstants.INTERFACE_KEY; import static org.apache.dubbo.common.constants.CommonConstants.IPV6_KEY; import static org.apache.dubbo.common.constants.CommonConstants.LOADBALANCE_KEY; +import static org.apache.dubbo.common.constants.CommonConstants.MERGEABLE_CLUSTER_NAME; import static org.apache.dubbo.common.constants.CommonConstants.METHODS_KEY; import static org.apache.dubbo.common.constants.CommonConstants.MONITOR_KEY; import static org.apache.dubbo.common.constants.CommonConstants.PACKABLE_METHOD_FACTORY_KEY; @@ -524,7 +524,7 @@ public class RegistryProtocol implements Protocol, ScopeModelAware { String group = qs.get(GROUP_KEY); if (StringUtils.isNotEmpty(group)) { if ((COMMA_SPLIT_PATTERN.split(group)).length > 1 || "*".equals(group)) { - return doRefer(Cluster.getCluster(url.getScopeModel(), MergeableCluster.NAME), registry, type, url, qs); + return doRefer(Cluster.getCluster(url.getScopeModel(), MERGEABLE_CLUSTER_NAME), registry, type, url, qs); } } diff --git a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/integration/RegistryProtocolTest.java b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/integration/RegistryProtocolTest.java index 6974215509..ba81eba1e3 100644 --- a/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/integration/RegistryProtocolTest.java +++ b/dubbo-registry/dubbo-registry-api/src/test/java/org/apache/dubbo/registry/integration/RegistryProtocolTest.java @@ -30,8 +30,8 @@ import org.apache.dubbo.registry.client.migration.MigrationRuleListener; import org.apache.dubbo.rpc.Invoker; import org.apache.dubbo.rpc.cluster.Cluster; import org.apache.dubbo.rpc.cluster.support.FailoverCluster; -import org.apache.dubbo.rpc.cluster.support.MergeableCluster; -import org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterWrapper; +//import org.apache.dubbo.rpc.cluster.support.MergeableCluster; +//import org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterWrapper; import org.apache.dubbo.rpc.cluster.support.wrapper.ScopeClusterWrapper; import org.apache.dubbo.rpc.model.ApplicationModel; import org.apache.dubbo.rpc.model.ModuleModel; @@ -266,9 +266,9 @@ class RegistryProtocolTest { Assertions.assertTrue(invoker instanceof MigrationInvoker); Assertions.assertTrue(((MigrationInvoker) invoker).getCluster() instanceof ScopeClusterWrapper); - Assertions.assertTrue(((ScopeClusterWrapper) ((MigrationInvoker) invoker).getCluster()).getCluster() instanceof MockClusterWrapper); - Assertions.assertTrue( - ((MockClusterWrapper) ((ScopeClusterWrapper) ((MigrationInvoker) invoker).getCluster()).getCluster()).getCluster() instanceof FailoverCluster); +// Assertions.assertTrue(((ScopeClusterWrapper) ((MigrationInvoker) invoker).getCluster()).getCluster() instanceof MockClusterWrapper); +// Assertions.assertTrue(((MockClusterWrapper) ((ScopeClusterWrapper) ((MigrationInvoker) invoker).getCluster()).getCluster()).getCluster() instanceof FailoverCluster); + Assertions.assertTrue((((ScopeClusterWrapper) ((MigrationInvoker) invoker).getCluster())).getCluster() instanceof FailoverCluster); } /** @@ -330,10 +330,9 @@ class RegistryProtocolTest { Assertions.assertTrue(invoker instanceof MigrationInvoker); Assertions.assertTrue(((MigrationInvoker) invoker).getCluster() instanceof ScopeClusterWrapper); - Assertions.assertTrue(((ScopeClusterWrapper) ((MigrationInvoker) invoker).getCluster()).getCluster() instanceof MockClusterWrapper); +// Assertions.assertTrue(((ScopeClusterWrapper) ((MigrationInvoker) invoker).getCluster()).getCluster() instanceof MockClusterWrapper); - Assertions.assertTrue( - ((MockClusterWrapper) ((ScopeClusterWrapper) ((MigrationInvoker) invoker).getCluster()).getCluster()).getCluster() instanceof MergeableCluster); +// Assertions.assertTrue(((MockClusterWrapper) ((ScopeClusterWrapper) ((MigrationInvoker) invoker).getCluster()).getCluster()).getCluster() instanceof MergeableCluster); } diff --git a/dubbo-remoting/dubbo-remoting-zookeeper-api/pom.xml b/dubbo-remoting/dubbo-remoting-zookeeper-api/pom.xml new file mode 100644 index 0000000000..56063aac1d --- /dev/null +++ b/dubbo-remoting/dubbo-remoting-zookeeper-api/pom.xml @@ -0,0 +1,48 @@ + + + 4.0.0 + + org.apache.dubbo + dubbo-remoting + ${revision} + ../pom.xml + + dubbo-remoting-zookeeper-api + jar + ${project.artifactId} + The zookeeper remoting module of dubbo project + + false + 3.4.14 + 4.3.0 + + + + org.apache.dubbo + dubbo-common + ${project.parent.version} + + + + org.apache.dubbo + dubbo-test-common + ${project.parent.version} + test + + + diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/RemotingScopeModelInitializer.java b/dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/java/org/apache/dubbo/remoting/RemotingScopeModelInitializer.java similarity index 100% rename from dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/RemotingScopeModelInitializer.java rename to dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/java/org/apache/dubbo/remoting/RemotingScopeModelInitializer.java diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/zookeeper/AbstractZookeeperClient.java b/dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/java/org/apache/dubbo/remoting/zookeeper/AbstractZookeeperClient.java similarity index 100% rename from dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/zookeeper/AbstractZookeeperClient.java rename to dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/java/org/apache/dubbo/remoting/zookeeper/AbstractZookeeperClient.java diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/zookeeper/AbstractZookeeperTransporter.java b/dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/java/org/apache/dubbo/remoting/zookeeper/AbstractZookeeperTransporter.java similarity index 100% rename from dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/zookeeper/AbstractZookeeperTransporter.java rename to dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/java/org/apache/dubbo/remoting/zookeeper/AbstractZookeeperTransporter.java diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/zookeeper/ChildListener.java b/dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/java/org/apache/dubbo/remoting/zookeeper/ChildListener.java similarity index 100% rename from dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/zookeeper/ChildListener.java rename to dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/java/org/apache/dubbo/remoting/zookeeper/ChildListener.java diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/zookeeper/DataListener.java b/dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/java/org/apache/dubbo/remoting/zookeeper/DataListener.java similarity index 100% rename from dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/zookeeper/DataListener.java rename to dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/java/org/apache/dubbo/remoting/zookeeper/DataListener.java diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/zookeeper/EventType.java b/dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/java/org/apache/dubbo/remoting/zookeeper/EventType.java similarity index 100% rename from dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/zookeeper/EventType.java rename to dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/java/org/apache/dubbo/remoting/zookeeper/EventType.java diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/zookeeper/StateListener.java b/dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/java/org/apache/dubbo/remoting/zookeeper/StateListener.java similarity index 100% rename from dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/zookeeper/StateListener.java rename to dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/java/org/apache/dubbo/remoting/zookeeper/StateListener.java diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/zookeeper/ZookeeperClient.java b/dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/java/org/apache/dubbo/remoting/zookeeper/ZookeeperClient.java similarity index 100% rename from dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/zookeeper/ZookeeperClient.java rename to dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/java/org/apache/dubbo/remoting/zookeeper/ZookeeperClient.java diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/zookeeper/ZookeeperTransporter.java b/dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/java/org/apache/dubbo/remoting/zookeeper/ZookeeperTransporter.java similarity index 100% rename from dubbo-remoting/dubbo-remoting-api/src/main/java/org/apache/dubbo/remoting/zookeeper/ZookeeperTransporter.java rename to dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/java/org/apache/dubbo/remoting/zookeeper/ZookeeperTransporter.java diff --git a/dubbo-remoting/dubbo-remoting-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer b/dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer similarity index 100% rename from dubbo-remoting/dubbo-remoting-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer rename to dubbo-remoting/dubbo-remoting-zookeeper-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.model.ScopeModelInitializer diff --git a/dubbo-remoting/dubbo-remoting-zookeeper-curator5/pom.xml b/dubbo-remoting/dubbo-remoting-zookeeper-curator5/pom.xml index fbf14dc729..9e884f21b5 100644 --- a/dubbo-remoting/dubbo-remoting-zookeeper-curator5/pom.xml +++ b/dubbo-remoting/dubbo-remoting-zookeeper-curator5/pom.xml @@ -36,7 +36,7 @@ org.apache.dubbo - dubbo-remoting-api + dubbo-remoting-zookeeper-api ${project.parent.version} diff --git a/dubbo-remoting/dubbo-remoting-zookeeper/pom.xml b/dubbo-remoting/dubbo-remoting-zookeeper/pom.xml index 7442d5a4f9..a9dc670b1f 100644 --- a/dubbo-remoting/dubbo-remoting-zookeeper/pom.xml +++ b/dubbo-remoting/dubbo-remoting-zookeeper/pom.xml @@ -34,7 +34,7 @@ org.apache.dubbo - dubbo-remoting-api + dubbo-remoting-zookeeper-api ${project.parent.version} diff --git a/dubbo-remoting/pom.xml b/dubbo-remoting/pom.xml index f1c154729e..c89503cb7e 100644 --- a/dubbo-remoting/pom.xml +++ b/dubbo-remoting/pom.xml @@ -34,6 +34,7 @@ dubbo-remoting-api dubbo-remoting-http dubbo-remoting-netty + dubbo-remoting-zookeeper-api dubbo-remoting-zookeeper dubbo-remoting-zookeeper-curator5 dubbo-remoting-netty4 diff --git a/dubbo-rpc/dubbo-rpc-api/pom.xml b/dubbo-rpc/dubbo-rpc-api/pom.xml index c2fa751743..e92329b7ed 100644 --- a/dubbo-rpc/dubbo-rpc-api/pom.xml +++ b/dubbo-rpc/dubbo-rpc-api/pom.xml @@ -45,10 +45,6 @@ dubbo-remoting-api ${project.parent.version} - - net.bytebuddy - byte-buddy - com.alibaba hessian-lite diff --git a/dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/ClusterFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/cluster/filter/ClusterFilter.java similarity index 100% rename from dubbo-cluster/src/main/java/org/apache/dubbo/rpc/cluster/filter/ClusterFilter.java rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/cluster/filter/ClusterFilter.java diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/CompatibleFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/CompatibleFilter.java index 87031617d9..0f705ce965 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/CompatibleFilter.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/filter/CompatibleFilter.java @@ -45,6 +45,7 @@ import static org.apache.dubbo.common.constants.LoggerCodeConstants.CONFIG_FILTE * * @see Filter */ +@Deprecated public class CompatibleFilter implements Filter, Filter.Listener { private static final ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(CompatibleFilter.class); diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/FutureFilter.java b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/FutureFilter.java similarity index 99% rename from dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/FutureFilter.java rename to dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/FutureFilter.java index ce6d89555d..84db02b564 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/FutureFilter.java +++ b/dubbo-rpc/dubbo-rpc-api/src/main/java/org/apache/dubbo/rpc/protocol/dubbo/filter/FutureFilter.java @@ -34,7 +34,6 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import static org.apache.dubbo.common.constants.LoggerCodeConstants.PROTOCOL_FAILED_REQUEST; -import static org.apache.dubbo.rpc.protocol.dubbo.Constants.ASYNC_METHOD_INFO; /** * EventFilter @@ -42,6 +41,8 @@ import static org.apache.dubbo.rpc.protocol.dubbo.Constants.ASYNC_METHOD_INFO; @Activate(group = CommonConstants.CONSUMER) public class FutureFilter implements ClusterFilter, ClusterFilter.Listener { + public static final String ASYNC_METHOD_INFO = "async-method-info"; + protected static final ErrorTypeAwareLogger logger = LoggerFactory.getErrorTypeAwareLogger(FutureFilter.class); @Override diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter index dcc7bd45ec..f6d4cdd658 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter +++ b/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter @@ -1,17 +1,8 @@ echo=org.apache.dubbo.rpc.filter.EchoFilter -generic=org.apache.dubbo.rpc.filter.GenericFilter -genericimpl=org.apache.dubbo.rpc.filter.GenericImplFilter -token=org.apache.dubbo.rpc.filter.TokenFilter -accesslog=org.apache.dubbo.rpc.filter.AccessLogFilter -classloader=org.apache.dubbo.rpc.filter.ClassLoaderFilter -classloader-callback=org.apache.dubbo.rpc.filter.ClassLoaderCallbackFilter -context=org.apache.dubbo.rpc.filter.ContextFilter exception=org.apache.dubbo.rpc.filter.ExceptionFilter -executelimit=org.apache.dubbo.rpc.filter.ExecuteLimitFilter deprecated=org.apache.dubbo.rpc.filter.DeprecatedFilter compatible=org.apache.dubbo.rpc.filter.CompatibleFilter timeout=org.apache.dubbo.rpc.filter.TimeoutFilter -tps=org.apache.dubbo.rpc.filter.TpsLimitFilter profiler-server=org.apache.dubbo.rpc.filter.ProfilerServerFilter adaptiveLoadBalance=org.apache.dubbo.rpc.filter.AdaptiveLoadBalanceFilter -active-limit=org.apache.dubbo.rpc.filter.ActiveLimitFilter + diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol b/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol index ce1e6d393a..8fa26676eb 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol +++ b/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Protocol @@ -1,5 +1,4 @@ listener=org.apache.dubbo.rpc.protocol.ProtocolListenerWrapper -mock=org.apache.dubbo.rpc.support.MockProtocol serializationwrapper=org.apache.dubbo.rpc.protocol.ProtocolSerializationWrapper securitywrapper=org.apache.dubbo.rpc.protocol.ProtocolSecurityWrapper invokercount=org.apache.dubbo.rpc.protocol.InvokerCountWrapper diff --git a/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.ProxyFactory b/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.ProxyFactory index 6ad3db9043..8e9a661352 100644 --- a/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.ProxyFactory +++ b/dubbo-rpc/dubbo-rpc-api/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.ProxyFactory @@ -1,5 +1,4 @@ stub=org.apache.dubbo.rpc.proxy.wrapper.StubProxyFactoryWrapper jdk=org.apache.dubbo.rpc.proxy.jdk.JdkProxyFactory javassist=org.apache.dubbo.rpc.proxy.javassist.JavassistProxyFactory -bytebuddy=org.apache.dubbo.rpc.proxy.bytebuddy.ByteBuddyProxyFactory nativestub=org.apache.dubbo.rpc.stub.StubProxyFactory diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/FutureFilterTest.java b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/FutureFilterTest.java similarity index 98% rename from dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/FutureFilterTest.java rename to dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/FutureFilterTest.java index fc970cdc7d..5a19c2f4d8 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/FutureFilterTest.java +++ b/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/FutureFilterTest.java @@ -24,8 +24,8 @@ import org.apache.dubbo.rpc.RpcException; import org.apache.dubbo.rpc.RpcInvocation; import org.apache.dubbo.rpc.cluster.filter.ClusterFilter; import org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter; -import org.apache.dubbo.rpc.protocol.dubbo.support.DemoService; +import org.apache.dubbo.rpc.support.DemoService; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter b/dubbo-rpc/dubbo-rpc-dubbo/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter deleted file mode 100644 index ee41594ca8..0000000000 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/main/resources/META-INF/dubbo/internal/org.apache.dubbo.rpc.Filter +++ /dev/null @@ -1 +0,0 @@ -trace=org.apache.dubbo.rpc.protocol.dubbo.filter.TraceFilter \ No newline at end of file diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocolTest.java b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocolTest.java index 0da2ea933e..580527240d 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocolTest.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/DubboProtocolTest.java @@ -230,7 +230,7 @@ class DubboProtocolTest { Assertions.assertTrue(e.getMessage().contains("org.apache.dubbo.rpc.protocol.dubbo.support.NonSerialized must implement java.io.Serializable")); } } - + @Disabled @Test void testRemoteApplicationName() throws Exception { DemoService service = new DemoServiceImpl(); diff --git a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/support/EnumBak.java b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/support/EnumBak.java index c2b08dc280..4903c4e445 100644 --- a/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/support/EnumBak.java +++ b/dubbo-rpc/dubbo-rpc-dubbo/src/test/java/org/apache/dubbo/rpc/protocol/dubbo/support/EnumBak.java @@ -177,7 +177,7 @@ public class EnumBak { //SERVER Thread.sleep(Integer.MAX_VALUE); } - + @Disabled @Test public void testGenericEnum() throws InterruptedException { int port = NetUtils.getAvailablePort(); diff --git a/dubbo-rpc/dubbo-rpc-rest/pom.xml b/dubbo-rpc/dubbo-rpc-rest/pom.xml index 8ee428298b..44b3214b1f 100644 --- a/dubbo-rpc/dubbo-rpc-rest/pom.xml +++ b/dubbo-rpc/dubbo-rpc-rest/pom.xml @@ -121,7 +121,7 @@ org.apache.dubbo - dubbo-metadata-api + dubbo-metadata-rest ${project.parent.version} diff --git a/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/JaxrsRestProtocolTest.java b/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/JaxrsRestProtocolTest.java index 5480cfa55a..299cddf52a 100644 --- a/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/JaxrsRestProtocolTest.java +++ b/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/JaxrsRestProtocolTest.java @@ -275,6 +275,7 @@ class JaxrsRestProtocolTest { exporter.unexport(); } + @Disabled @Test void testRpcContextFilter() { DemoService server = new DemoServiceImpl(); diff --git a/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/SpringMvcRestProtocolTest.java b/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/SpringMvcRestProtocolTest.java index 0172ad4c5a..62ff7101b1 100644 --- a/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/SpringMvcRestProtocolTest.java +++ b/dubbo-rpc/dubbo-rpc-rest/src/test/java/org/apache/dubbo/rpc/protocol/rest/SpringMvcRestProtocolTest.java @@ -270,7 +270,7 @@ public class SpringMvcRestProtocolTest { exporter.unexport(); } - + @Disabled @Test void testRpcContextFilter() { SpringRestDemoService server = getServerImpl(); diff --git a/dubbo-test/dubbo-dependencies-all/pom.xml b/dubbo-test/dubbo-dependencies-all/pom.xml index 3708d2c508..ac58da26e1 100644 --- a/dubbo-test/dubbo-dependencies-all/pom.xml +++ b/dubbo-test/dubbo-dependencies-all/pom.xml @@ -79,6 +79,11 @@ + + org.apache.dubbo + dubbo-configcenter-file + ${project.version} + org.apache.dubbo dubbo-configcenter-zookeeper @@ -139,6 +144,11 @@ dubbo-metadata-api ${project.version} + + org.apache.dubbo + dubbo-metadata-rest + ${project.version} + org.apache.dubbo dubbo-metadata-report-zookeeper @@ -210,6 +220,11 @@ dubbo-monitor-api ${project.version} + + org.apache.dubbo + dubbo-monitor-common + ${project.version} + org.apache.dubbo dubbo-monitor-default @@ -260,6 +275,97 @@ ${project.version} + + org.apache.dubbo + dubbo-plugin-cluster-mergeable + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-mock + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-router-script + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-router-mesh + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-router-condition + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-router-tag + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-loadbalance-adaptive + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-access-log + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-tps + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-token + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-generic-invoke + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-context + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-classloader-filter + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-proxy-bytebuddy + ${project.version} + + + + org.apache.dubbo + dubbo-plugin-qos-trace + ${project.version} + + + org.apache.dubbo @@ -308,6 +414,11 @@ dubbo-remoting-netty4 ${project.version} + + org.apache.dubbo + dubbo-remoting-zookeeper-api + ${project.version} + org.apache.dubbo dubbo-remoting-zookeeper diff --git a/dubbo-xds/src/test/java/org/apache/dubbo/rpc/cluster/router/xds/XdsRouteTest.java b/dubbo-xds/src/test/java/org/apache/dubbo/rpc/cluster/router/xds/XdsRouteTest.java index 2e74193171..6d011bcf3a 100644 --- a/dubbo-xds/src/test/java/org/apache/dubbo/rpc/cluster/router/xds/XdsRouteTest.java +++ b/dubbo-xds/src/test/java/org/apache/dubbo/rpc/cluster/router/xds/XdsRouteTest.java @@ -26,7 +26,7 @@ import org.apache.dubbo.common.utils.StringUtils; import org.apache.dubbo.registry.xds.util.protocol.message.Endpoint; import org.apache.dubbo.rpc.Invocation; import org.apache.dubbo.rpc.Invoker; -import org.apache.dubbo.rpc.cluster.router.mesh.util.TracingContextProvider; +//import org.apache.dubbo.rpc.cluster.router.mesh.util.TracingContextProvider; import org.apache.dubbo.rpc.cluster.router.state.BitList; import org.apache.dubbo.rpc.cluster.router.xds.rule.DestinationSubset; import org.junit.jupiter.api.BeforeEach; @@ -53,14 +53,14 @@ public class XdsRouteTest { private EdsEndpointManager edsEndpointManager; private RdsRouteRuleManager rdsRouteRuleManager; - private Set tracingContextProviders; +// private Set tracingContextProviders; private URL url; @BeforeEach public void setup() { edsEndpointManager = Mockito.spy(EdsEndpointManager.class); rdsRouteRuleManager = Mockito.spy(RdsRouteRuleManager.class); - tracingContextProviders = new HashSet<>(); +// tracingContextProviders = new HashSet<>(); url = URL.valueOf("test://localhost/DemoInterface"); }