| /*
|
| * Copyright 1999-2011 Alibaba Group.
|
| *
|
| * Licensed 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 com.alibaba.dubbo.config.url.test; |
| |
| import java.util.Arrays; |
| |
| import org.junit.After; |
| import org.junit.Before; |
| import org.junit.BeforeClass; |
| import org.junit.Ignore; |
| import org.junit.Test; |
| |
| import com.alibaba.dubbo.common.Constants;
|
| import com.alibaba.dubbo.common.logger.Logger; |
| import com.alibaba.dubbo.common.logger.LoggerFactory; |
| import com.alibaba.dubbo.config.ApplicationConfig; |
| import com.alibaba.dubbo.config.ConsumerConfig; |
| import com.alibaba.dubbo.config.MethodConfig; |
| import com.alibaba.dubbo.config.ReferenceConfig; |
| import com.alibaba.dubbo.config.RegistryConfig; |
| import com.alibaba.dubbo.config.api.DemoService;
|
| import com.alibaba.dubbo.config.support.MockRegistry;
|
| |
| |
| /** |
| * @author haomin.liuhm |
| * |
| */ |
| public class InvokerSideConfigUrlTest extends UrlTestBase { |
| private static final Logger log = LoggerFactory.getLogger(InvokerSideConfigUrlTest.class); |
| |
| // ====================================================== |
| // invoker related data preparing |
| // ====================================================== |
| private ApplicationConfig appConfForConsumer; |
| private ApplicationConfig appConfForReference; |
| private RegistryConfig regConfForConsumer; |
| private RegistryConfig regConfForReference; |
| private MethodConfig methodConfForReference; |
| private ConsumerConfig consumerConf; |
| private ReferenceConfig<DemoService> refConf; |
| |
| private Object appConfForConsumerTable[][] = { |
| {"", "", "", "", "", "", "", "", "", ""}, |
| }; |
| |
| private Object appConfForReferenceTable[][] = { |
| {"", "", "", "", "", "", "", "", "", ""}, |
| }; |
| |
| private Object regConfForConsumerTable[][] = { |
| // {"timeout", "registry.timeout", "int", 5000, 9000, "", "", "", "", ""}, |
| // {"file", "registry.file", "string", "", "regConfForServiceTable.log", "", "", "", "", ""}, |
| // {"wait", "registry.wait", "int", 0, 9000, "", "", "", "", ""}, |
| // {"transport", "registry.transporter", "string", "netty", "mina", "", "", "", "", ""}, |
| {"subscribe", "subscribe", "boolean", true, false, "", "", "", "", ""}, |
| {"dynamic", "dynamic", "boolean", true, false, "", "", "", "", ""}, |
| }; |
| |
| private Object regConfForReferenceTable[][] = { |
| {"timeout", "registry.timeout", "int", 5000, 9000, "", "", "", "", ""}, |
| {"file", "registry.file", "string", "", "regConfForServiceTable.log", "", "", "", "", ""}, |
| {"wait", "registry.wait", "int", 0, 9000, "", "", "", "", ""}, |
| {"transport", "registry.transporter", "string", "netty", "mina", "", "", "", "", ""}, |
| {"subscribe", "subscribe", "boolean", true, false, "", "", "", "", ""}, |
| {"dynamic", "dynamic", "boolean", true, false, "", "", "", "", ""}, |
| }; |
| |
| private Object methodConfForReferenceTable[][] = { |
| {"actives", "eatTiger.actives", "int", 0, 90, "", "", "", "", ""}, |
| {"executes", "eatTiger.executes", "int", 0, 90, "", "", "", "", ""}, |
| {"deprecated", "eatTiger.deprecated", "boolean", false, true, "", "", "", "", ""}, |
| {"async", "eatTiger.async", "boolean", false, true, "", "", "", "", ""}, |
| {"timeout", "eatTiger.timeout", "int", 0, 90, "", "", "", "", ""}, |
| }; |
| |
| private Object refConfTable[][] = { |
| // {"version", "version", "string", "0.0.0", "1.2.3", "", "", "", "", ""}, |
| // {"group", "group", "string", "", "HaominTest", "", "", "", "", ""}, |
| |
| // {"delay", "delay", "int", 0, 5, "", "", "", "", ""}, // not boolean |
| {"timeout", "timeout", "int", 5000, 3000, "", "", "", "", ""}, |
| {"retries", "retries", "int", 2, 5, "", "", "", "", ""}, |
| {"connections", "connections", "boolean", 100, 20, "", "", "", "", ""}, |
| {"loadbalance", "loadbalance", "string", "random", "roundrobin", "leastactive", "", "", ""}, |
| {"async", "async", "boolean", false, true, "", "", "", "", ""}, |
| //excluded = true |
| // {"generic", "generic", "boolean", false, true, "", "", "", "", ""}, |
| {"check", "check", "boolean", false, true, "", "", "", "", ""}, |
| //{"local", "local", "string", "false", "HelloServiceLocal", "true", "", "", "", ""}, |
| //{"local", "local", "string", "false", "true", "", "", "", "", ""}, |
| //{"mock", "mock", "string", "false", "dubbo.test.HelloServiceMock", "true", "", "", "", ""}, |
| {"mock", "mock", "string", "false", "false", "", "", "", "", ""}, |
| {"proxy", "proxy", "boolean", "javassist", "jdk", "", "", "", "", ""}, |
| {"client", "client", "string", "netty", "mina", "", "", "", "", ""}, |
| {"client", "client", "string", "netty", "mina", "", "", "", "", ""}, |
| {"owner", "owner", "string", "", "haomin/ludvik", "", "", "", "", ""}, |
| {"actives", "actives", "int", 0, 30, "", "", "", "", ""}, |
| {"cluster", "cluster", "string", "failover", "failfast", "failsafe", "failback", "forking", "", ""}, |
| //excluded = true |
| // {"filter", "service.filter", "string", "default", "-generic", "", "", "", "", ""}, |
| //excluded = true |
| // {"listener", "exporter.listener", "string", "default", "-deprecated", "", "", "", "", ""}, |
| //{"", "", "", "", "", "", "", "", "", ""}, |
| }; |
| |
| private Object consumerConfTable[][] = { |
| {"timeout", "default.timeout", "int", 5000, 8000, "", "", "", "", ""}, |
| {"retries", "default.retries", "int", 2, 5, "", "", "", "", ""}, |
| {"loadbalance", "default.loadbalance", "string", "random", "leastactive", "", "", "", "", ""}, |
| {"async", "default.async", "boolean", false, true, "", "", "", "", ""}, |
| {"connections", "default.connections", "int", 100, 5, "", "", "", "", ""}, |
| // {"generic", "generic", "boolean", false, false, "", "", "", "", ""}, |
| {"check", "check", "boolean", true, false, "", "", "", "", ""}, |
| {"proxy", "proxy", "string", "javassist", "jdk", "javassist", "", "", "", ""}, |
| {"owner", "owner", "string", "", "haomin", "", "", "", "", ""}, |
| {"actives", "default.actives", "int", 0, 5, "", "", "", "", ""}, |
| {"cluster", "default.cluster", "string", "failover", "forking", "", "", "", "", ""}, |
| {"filter", "", "string", "", "", "", "", "", "", ""}, |
| {"listener", "", "string", "", "", "", "", "", "", ""}, |
| // {"", "", "", "", "", "", "", "", "", ""}, |
| }; |
| |
| // ====================================================== |
| // test Start |
| // ====================================================== |
| |
| @BeforeClass |
| public static void start(){ |
| |
| //RegistryController.startRegistryIfAbsence(1); |
| } |
| |
| |
| @Before |
| public void setUp(){ |
| |
| initServConf(); |
| initRefConf(); |
| |
| return; |
| } |
| |
| @After() |
| public void teardown() { |
| |
| //RegistryServer.reloadCache(); |
| } |
| |
| |
| @Test |
| public void consumerConfUrlTest(){ |
| verifyInvokerUrlGeneration(consumerConf, consumerConfTable); |
| } |
| |
| @Test |
| public void refConfUrlTest(){ |
| verifyInvokerUrlGeneration(refConf, refConfTable); |
| } |
| |
| @Ignore |
| @Test //注册中心的参数不会在与consumer的query merge |
| public void regConfForConsumerUrlTest(){ |
| |
| verifyInvokerUrlGeneration(regConfForConsumer, regConfForConsumerTable); |
| |
| } |
| |
| // ====================================================== |
| // private helper |
| // ====================================================== |
| private void initRefConf(){ |
| |
| appConfForConsumer = new ApplicationConfig(); |
| appConfForReference = new ApplicationConfig(); |
| regConfForConsumer = new RegistryConfig(); |
| regConfForReference = new RegistryConfig(); |
| methodConfForReference = new MethodConfig(); |
| |
| refConf = new ReferenceConfig<DemoService>(); |
| consumerConf = new ConsumerConfig(); |
|
|
| methodConfForReference.setName("sayName");
|
| regConfForReference.setAddress("127.0.0.1:9090");
|
| regConfForReference.setProtocol("mockregistry");
|
| appConfForReference.setName("ConfigTests");
|
| refConf.setInterface("com.alibaba.dubbo.config.api.DemoService");
|
| |
| refConf.setApplication(appConfForReference); |
| consumerConf.setApplication(appConfForConsumer); |
| |
| refConf.setRegistry(regConfForReference); |
| consumerConf.setRegistry(regConfForConsumer); |
| |
| refConf.setConsumer(consumerConf); |
| |
| refConf.setMethods(Arrays.asList(new MethodConfig[]{methodConfForReference}));
|
|
|
| refConf.setScope(Constants.SCOPE_REMOTE); |
| } |
| |
| private <T> void verifyInvokerUrlGeneration(T config, Object[][] dataTable){ |
| servConf.export(); |
| |
| fillConfigs(config, dataTable, TESTVALUE1); |
| refConf.get(); |
| |
| String subScribedUrlStr = getSubscribedUrlString(); |
| |
| System.out.println("url string=========:"+subScribedUrlStr); |
| String configName = config.getClass().getName(); |
| int column = TESTVALUE1; |
| |
| assertUrlStringWithLocalTable(subScribedUrlStr, dataTable, configName, column); |
| |
| //重新refer会判断如果已经订阅过,不再重新订阅。 |
| try { |
| refConf.destroy(); |
| } catch (Exception e) { |
| } |
| } |
| |
| private String getSubscribedUrlString() { |
| return MockRegistry.getSubscribedUrl().toString(); |
| } |
| } |