| /*
|
| * 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.Assert; |
| |
| 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.MethodConfig; |
| import com.alibaba.dubbo.config.ProtocolConfig; |
| import com.alibaba.dubbo.config.ProviderConfig; |
| import com.alibaba.dubbo.config.RegistryConfig; |
| import com.alibaba.dubbo.config.ServiceConfig; |
| import com.alibaba.dubbo.config.api.DemoService;
|
| import com.alibaba.dubbo.config.provider.impl.DemoServiceImpl;
|
| import com.alibaba.dubbo.config.support.RpcConfigGetSetProxy;
|
| |
| /** |
| * @author haomin.liuhm |
| * |
| */ |
| |
| @SuppressWarnings("unused") |
| public class UrlTestBase { |
| |
| private static final Logger log = LoggerFactory.getLogger(UrlTestBase.class); |
| |
| // ====================================================== |
| // data column definition |
| // ====================================================== |
| protected static final int KEY = 0; |
| protected static final int URL_KEY = 1; |
| private static final int TYPE = 2; |
| private static final int DEFAULT = 3; |
| protected static final int TESTVALUE1 = 4; |
| private static final int TESTVALUE2 = 5; |
| private static final int TESTVALUE3 = 6; |
| private static final int TESTVALUE4 = 7; |
| private static final int TESTVALUE5 = 8; |
| private static final int TESTVALUE6 = 9; |
| private static final int TESTVALUE7 = 10; |
| protected ApplicationConfig appConfForProvider; |
| protected ApplicationConfig appConfForService; |
| protected RegistryConfig regConfForProvider; |
| protected RegistryConfig regConfForService; |
| protected ProviderConfig provConf; |
| protected ProtocolConfig protoConfForProvider; |
| protected ProtocolConfig protoConfForService; |
| protected MethodConfig methodConfForService; |
| protected ServiceConfig<DemoService> servConf; |
| protected Object servConfTable[][] = { |
| {"proxy", "proxy", "string", "javassist", "jdk", "javassist", "", "", "", ""}, |
| {"actives", "actives", "int", 0, 90, "", "", "", "", ""}, |
| {"executes", "executes", "int", 0, 90, "", "", "", "", ""}, |
| {"deprecated", "deprecated", "boolean", false, true, "", "", "", "", ""}, |
| {"dynamic", "dynamic", "boolean", true, false, "", "", "", "", ""}, |
| {"accesslog", "accesslog", "string", "", "haominTest", "", "", "", "", ""}, |
| {"document", "document", "string", "", "http://b2b-doc.alibaba-inc.com/display/RC/dubbo_devguide.htm?testquery=你好你好", "", "", "", "", ""}, |
| {"weight", "weight", "int", 0, 90, "", "", "", "", ""}, |
| |
| //{"filter", "service.filter", "string", "", "", "", "", "", "", ""}, |
| //{"listener", "listener", "string", "", "", "", "", "", "", ""}, |
| |
| }; |
| |
| private Object appConfForProviderTable[][] = { |
| {"", "", "", "", "", "", "", "", "", ""}, |
| }; |
| private Object appConfForServiceTable[][] = { |
| {"", "", "", "", "", "", "", "", "", ""}, |
| }; |
| private Object regConfForProviderTable[][] = { |
| {"", "", "", "", "", "", "", "", "", ""}, |
| }; |
| protected Object regConfForServiceTable[][] = { |
| // {"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 protoConfForProviderTable[][] = { |
| {"", "", "", "", "", "", "", "", "", ""}, |
| }; |
| private Object protoConfForServiceTable[][] = { |
| {"", "", "", "", "", "", "", "", "", ""}, |
| }; |
| protected Object provConfTable[][] = { |
| {"cluster", "default.cluster", "string", "string", "failover", "failfast", "failsafe", "", "", ""}, |
| {"async", "default.async", "boolean", false, true, "", "", "", "", ""}, |
| {"loadbalance", "default.loadbalance", "string", "random", "leastactive", "", "", "", "", ""}, |
| {"connections", "default.connections", "int", 0, 60, "", "", "", "", ""}, |
| {"retries", "default.retries", "int", 2, 60, "", "", "", "", ""}, |
| {"timeout", "default.timeout", "int", 5000, 60, "", "", "", "", ""}, |
| //change by fengting listener 没有缺省值 |
| //{"listener", "exporter.listener", "string", "", "", "", "", "", "", ""}, |
| //{"filter", "service.filter", "string", "", "", "", "", "", "", ""}, |
| |
| }; |
| protected Object methodConfForServiceTable[][] = { |
| {"actives", "sayName.actives", "int", 0, 90, "", "", "", "", ""}, |
| {"executes", "sayName.executes", "int", 0, 90, "", "", "", "", ""}, |
| {"deprecated", "sayName.deprecated", "boolean", false, true, "", "", "", "", ""}, |
| {"async", "sayName.async", "boolean", false, true, "", "", "", "", ""}, |
| {"timeout", "sayName.timeout", "int", 0, 90, "", "", "", "", ""}, |
| }; |
| protected DemoService demoService = new DemoServiceImpl(); |
| |
| // ====================================================== |
| // data table manipulation utils |
| // ====================================================== |
| protected String genParamString(Object urlKey, Object value) { |
| |
| return (String)urlKey + "=" + value.toString(); |
| } |
| |
| protected <T> void fillConfigs(T conf, Object[][] table, int column) { |
| |
| for(Object[] row : table){ |
| fillConfig(conf, row, column); |
| } |
| } |
| |
| protected <T> void fillConfig(T conf, Object[] row, int column) { |
| |
| RpcConfigGetSetProxy proxy = new RpcConfigGetSetProxy(conf); |
| proxy.setValue((String)row[KEY], row[column]); |
| |
| } |
| |
| @SuppressWarnings("deprecation") |
| protected void initServConf() { |
| |
| appConfForProvider = new ApplicationConfig(); |
| appConfForService = new ApplicationConfig(); |
| regConfForProvider = new RegistryConfig(); |
| regConfForService = new RegistryConfig(); |
| provConf = new ProviderConfig(); |
| protoConfForProvider = new ProtocolConfig(); |
| protoConfForService = new ProtocolConfig(); |
| methodConfForService = new MethodConfig(); |
| servConf = new ServiceConfig<DemoService>(); |
| |
| provConf.setApplication(appConfForProvider); |
| servConf.setApplication(appConfForService); |
| |
| provConf.setRegistry(regConfForProvider); |
| servConf.setRegistry(regConfForService); |
| |
| provConf.setProtocols(Arrays.asList(new ProtocolConfig[]{protoConfForProvider})); |
| servConf.setProtocols(Arrays.asList(new ProtocolConfig[]{protoConfForService})); |
| |
| servConf.setMethods(Arrays.asList(new MethodConfig[]{methodConfForService})); |
| servConf.setProvider(provConf); |
| |
| servConf.setRef(demoService); |
| servConf.setInterfaceClass(DemoService.class); |
| |
| methodConfForService.setName("sayName"); |
| regConfForService.setAddress("127.0.0.1:9090"); |
| regConfForService.setProtocol("mockregistry"); |
| appConfForService.setName("ConfigTests"); |
| } |
| |
| protected String getProviderParamString() { |
| return servConf.getExportedUrls().get(0).toString(); |
| } |
| |
| /** |
| * @param paramStringFromDb |
| * @param dataTable |
| * @param configName |
| * @param column |
| */ |
| protected void assertUrlStringWithLocalTable(String paramStringFromDb, |
| Object[][] dataTable, String configName, int column) { |
| final String FAILLOG_HEADER = "The following config items are not found in URL: "; |
| |
| log.warn("Verifying service url for " + configName + "... "); |
| log.warn("Consumer url string: " + paramStringFromDb); |
| |
| String failLog = FAILLOG_HEADER; |
| for(Object[] row : dataTable){ |
| |
| String targetString = genParamString(row[URL_KEY], row[column]); |
| |
| log.warn("Checking " + (String)row[KEY] + "for" + targetString); |
| if (paramStringFromDb.contains(targetString)){ |
| log.warn((String)row[KEY] + " --> " + targetString + " OK!"); |
| } else { |
| failLog += targetString + ", "; |
| } |
| } |
| |
| if( !failLog.equals(FAILLOG_HEADER)){ |
| Assert.fail(failLog); |
| } |
| } |
| |
| } |