/**
*
*/
package com.taobao.top.analysis.node.component;
import org.junit.Test;
import com.taobao.top.analysis.config.MasterConfig;
import com.taobao.top.analysis.config.SlaveConfig;
import com.taobao.top.analysis.exception.AnalysisException;
import com.taobao.top.analysis.node.connect.MemMasterConnector;
import com.taobao.top.analysis.node.connect.MemSlaveConnector;
import com.taobao.top.analysis.node.connect.MemTunnel;
import com.taobao.top.analysis.node.io.FileInputAdaptor;
import com.taobao.top.analysis.node.io.FileOutputAdaptor;
import com.taobao.top.analysis.node.io.HttpInputAdaptor;
import com.taobao.top.analysis.node.io.IInputAdaptor;
import com.taobao.top.analysis.node.io.IOutputAdaptor;
import com.taobao.top.analysis.statistics.StatisticsEngine;
/**
* 集成MasterSlave测试
* @author fangweng
* email: fangweng@taobao.com
* 下午5:06:21
*
*/
public class MasterSlaveIntegrationTest {
@Test
public void test() throws AnalysisException, InterruptedException
{
//build MasterNode
MasterNode masterNode = new MasterNode();
MemMasterConnector masterConnector = new MemMasterConnector();
JobManager jobManager = new JobManager();
JobResultMerger jobResultMerger = new JobResultMerger();
MixJobBuilder mixJobBuilder = new MixJobBuilder();
FileJobExporter fileJobExporter = new FileJobExporter();
MemTunnel tunnel = new MemTunnel();
jobManager.setJobBuilder(mixJobBuilder);
jobManager.setJobExporter(fileJobExporter);
jobManager.setJobResultMerger(jobResultMerger);
masterConnector.setTunnel(tunnel);
masterNode.setJobManager(jobManager);
masterNode.setMasterConnector(masterConnector);
MasterConfig config = new MasterConfig();
config.load("master-config-ms.properties");
masterNode.setConfig(config);
masterNode.startNode();
//build SlaveNode
SlaveNode slaveNode = new SlaveNode();
JobResultMerger jobResultMerger2 = new JobResultMerger();
MemSlaveConnector slaveConnector = new MemSlaveConnector();
slaveConnector.setTunnel(tunnel);
StatisticsEngine statisticsEngine = new StatisticsEngine();
SlaveConfig slaveConfig = new SlaveConfig();
slaveConfig.load("slave-config.properties");
slaveNode.setConfig(slaveConfig);
slaveNode.setSlaveConnector(slaveConnector);
slaveNode.setStatisticsEngine(statisticsEngine);
slaveNode.setJobResultMerger(jobResultMerger2);
IInputAdaptor fileInputAdaptor = new FileInputAdaptor();
IInputAdaptor httpInputAdaptor = new HttpInputAdaptor();
IOutputAdaptor fileOutAdaptor = new FileOutputAdaptor();
FileJobExporter fileJobExporter2 = new FileJobExporter();
fileJobExporter2.setMaxCreateReportWorker(2);
fileJobExporter2.init();
((FileOutputAdaptor)fileOutAdaptor).setJobExporter(fileJobExporter2);
statisticsEngine.addInputAdaptor(fileInputAdaptor);
statisticsEngine.addInputAdaptor(httpInputAdaptor);
statisticsEngine.addOutputAdaptor(fileOutAdaptor);
slaveNode.startNode();
Thread.sleep(30 * 1000);
masterNode.stopNode();
slaveNode.stopNode();
Thread.sleep(3000);
}
}