blob: 85ec90d5f0603bc0020b848286df5e61c8d9bbad [file] [log] [blame]
/*
* 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);
}
}
}