/* * Copyright 2009-2016 Weibo, Inc. * * 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.weibo.api.motan; import java.net.InetAddress; import java.util.ArrayList; import java.util.List; import junit.framework.TestCase; import org.jmock.integration.junit4.JUnit4Mockery; import org.jmock.lib.legacy.ClassImposteriser; import org.junit.After; import org.junit.Before; import com.weibo.api.motan.common.MotanConstants; import com.weibo.api.motan.config.ProtocolConfig; import com.weibo.api.motan.config.RefererConfig; import com.weibo.api.motan.config.RegistryConfig; import com.weibo.api.motan.config.ServiceConfig; import com.weibo.api.motan.protocol.example.IWorld; import com.weibo.api.motan.protocol.example.MockWorld; import com.weibo.api.motan.rpc.URL; import com.weibo.api.motan.util.NetUtils; /** * * base test * * @author fishermen * @version V1.0 created at: 2013-5-23 */ public class BaseTestCase extends TestCase { protected static String application = "api"; protected static String module = "test"; protected String localAddress = null; protected static String group = "test-yf"; public static JUnit4Mockery mockery = null; @Before @Override public void setUp() throws Exception { mockery = new JUnit4Mockery() { { setImposteriser(ClassImposteriser.INSTANCE); } }; InetAddress address = NetUtils.getLocalAddress(); if (address != null) { localAddress = address.getHostAddress(); } } @After @Override public void tearDown() throws Exception {} public void testBase() {} protected static RefererConfig<IWorld> mockIWorldRefererConfig() { RefererConfig<IWorld> rc = new RefererConfig<IWorld>(); rc.setInterface(IWorld.class); rc.setApplication(application); rc.setModule(module); rc.setGroup(group); return rc; } protected static ServiceConfig<IWorld> mockIWorldServiceConfig() { ServiceConfig<IWorld> serviceConfig = new ServiceConfig<IWorld>(); serviceConfig.setRef(new MockWorld()); serviceConfig.setApplication(application); serviceConfig.setModule(module); serviceConfig.setCheck("true"); serviceConfig.setInterface(IWorld.class); serviceConfig.setGroup(group); serviceConfig.setShareChannel(true); return serviceConfig; } protected static ProtocolConfig mockProtocolConfig(String protocolName) { ProtocolConfig pc = createProtocol(protocolName); pc.setEndpointFactory("mockEndpoint"); return pc; } protected static <T> ServiceConfig<T> createServiceConfig(Class<T> clz, T impl) { ServiceConfig<T> serviceConfig = new MockServiceConfig<T>(); serviceConfig.setRef(impl); serviceConfig.setApplication(application); serviceConfig.setModule(module); serviceConfig.setCheck("true"); serviceConfig.setInterface(clz); serviceConfig.setGroup(group); serviceConfig.setShareChannel(true); serviceConfig.setVersion("2.0"); return serviceConfig; } protected static <T> ServiceConfig<T> createServiceConfig(Class<T> clz, T impl, String group, String version, ProtocolConfig protocl, RegistryConfig registryConfig, String export) { ServiceConfig<T> serviceConfig = new MockServiceConfig<T>(); serviceConfig.setRef(impl); serviceConfig.setApplication(application); serviceConfig.setModule(module); serviceConfig.setCheck("true"); serviceConfig.setInterface(clz); serviceConfig.setGroup(group); serviceConfig.setShareChannel(true); serviceConfig.setVersion(version); serviceConfig.setProtocol(protocl); serviceConfig.setRegistry(registryConfig); serviceConfig.setExport(export); return serviceConfig; } protected static <T> RefererConfig<T> createRefererConfig(Class<T> clz) { RefererConfig<T> rc = new RefererConfig<T>(); rc.setInterface(clz); rc.setApplication(application); rc.setModule(module); rc.setGroup(group); rc.setRequestTimeout(2000); rc.setVersion("2.0"); return rc; } protected static ProtocolConfig createProtocol(String protocolName) { ProtocolConfig pc = new ProtocolConfig(); pc.setName(protocolName); pc.setId(pc.getName()); return pc; } protected static RegistryConfig mockLocalRegistryConfig() { return createLocalRegistryConfig(MotanConstants.REGISTRY_PROTOCOL_LOCAL, MotanConstants.REGISTRY_PROTOCOL_LOCAL); } protected static RegistryConfig createLocalRegistryConfig(String protocol, String name) { RegistryConfig rc = new RegistryConfig(); rc.setRegProtocol(protocol); rc.setName(name); rc.setId(rc.getName()); return rc; } protected static RegistryConfig createRemoteRegistryConfig(String protocol, String name, String address, int port) { RegistryConfig rc = new RegistryConfig(); rc.setRegProtocol(protocol); rc.setName(name); rc.setId(rc.getName()); rc.setAddress(address); rc.setPort(port); return rc; } protected static List<ProtocolConfig> getMultiProtocols(String... protocolNames) { List<ProtocolConfig> protocols = new ArrayList<ProtocolConfig>(); for (String protocol : protocolNames) { protocols.add(mockProtocolConfig(protocol)); } return protocols; } protected static List<RegistryConfig> getMultiRegister(String... registerName) { List<RegistryConfig> registries = new ArrayList<RegistryConfig>(); for (String register : registerName) { RegistryConfig registryConfig = createLocalRegistryConfig(register, register); registries.add(registryConfig); } return registries; } } class MockServiceConfig<T> extends ServiceConfig<T> { private static final long serialVersionUID = 7965700855475224943L; protected boolean serviceExists(URL url) { return false; } }