package org.zstack.test.multinodes; import org.junit.Before; import org.junit.Test; import org.zstack.core.Platform; import org.zstack.core.cloudbus.CloudBusIN; import org.zstack.core.componentloader.ComponentLoader; import org.zstack.header.AbstractService; import org.zstack.header.Service; import org.zstack.header.message.Message; import org.zstack.test.Api; import org.zstack.test.DBUtil; import org.zstack.test.WebBeanConstructor; import org.zstack.test.deployer.Deployer; import org.zstack.utils.Utils; import org.zstack.utils.logging.CLogger; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.concurrent.TimeUnit; /** */ public class ManagementNodeTester { CLogger logger = Utils.getLogger(ManagementNodeTester.class); Deployer deployer; Api api; ComponentLoader loader; CloudBusIN bus; @Before public void setUp() throws Exception { boolean deployDB = Boolean.parseBoolean(System.getProperty("deployDB")); String deployConfig = System.getProperty("deployConfig"); final String serviceId = System.getProperty("serviceId"); boolean loadAll = Boolean.valueOf(System.getProperty("loadAll")); int port = Integer.valueOf(System.getProperty("port")); String springConfigs = System.getProperty("springConfigs"); String dbPoolSize = System.getProperty("DbFacadeDataSource.maxPoolSize"); if (dbPoolSize != null) { System.setProperty("DbFacadeDataSource.maxPoolSize", dbPoolSize); } List<String> springConfs = new ArrayList<String>(); if (springConfigs != null) { springConfs.addAll(Arrays.asList(springConfigs.split(","))); } if (deployDB) { DBUtil.reDeployDB(); } WebBeanConstructor con = new WebBeanConstructor(); con.setPort(port); if (deployConfig != null) { deployer = new Deployer(deployConfig, con); for (String conf : springConfs) { deployer.addSpringConfig(conf); } deployer.build(); api = deployer.getApi(); loader = deployer.getComponentLoader(); } else { if (loadAll) { con.addAllConfigInZstackXml(); } else { for (String conf : springConfs) { con.addXml(conf); } } loader = con.build(); api = new Api(); api.startServer(); } api.setTimeout(300); bus = loader.getComponent(CloudBusIN.class); Service serv = new AbstractService() { @Override public void handleMessage(Message msg) { MultiNodeTestMsg nmsg = (MultiNodeTestMsg) msg; if (nmsg.isCode(nmsg.EXIT)) { MultiNodeTestReply reply = new MultiNodeTestReply(); bus.reply(msg, reply); System.exit(0); } else if (nmsg.isCode(nmsg.READY)) { MultiNodeTestReply reply = new MultiNodeTestReply(); reply.setManagementNodeId(Platform.getManagementServerId()); bus.reply(msg, reply); } else { bus.dealWithUnknownMessage(msg); } } @Override public String getId() { return serviceId; } @Override public boolean start() { return true; } @Override public boolean stop() { return true; } }; bus.registerService(serv); bus.activeService(serv); } @Test public void test() throws InterruptedException { TimeUnit.DAYS.sleep(1); } }