/** * */ package com.taobao.top.analysis.node.component; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.util.Map; import junit.framework.Assert; import org.junit.Test; import com.taobao.top.analysis.config.MasterConfig; import com.taobao.top.analysis.exception.AnalysisException; import com.taobao.top.analysis.node.io.FileInputAdaptor; import com.taobao.top.analysis.node.io.HttpInputAdaptor; import com.taobao.top.analysis.node.io.IInputAdaptor; import com.taobao.top.analysis.node.job.Job; import com.taobao.top.analysis.node.job.JobTask; import com.taobao.top.analysis.node.job.JobTaskResult; import com.taobao.top.analysis.statistics.StatisticsEngine; /** * @author fangweng * email: fangweng@taobao.com * 下午1:13:56 * */ public class FileJobExporterTest { @Test public void testExportReportJob() throws AnalysisException, UnsupportedEncodingException, IOException { StatisticsEngine defaultAnalysisEngine = new StatisticsEngine(); defaultAnalysisEngine.init(); IInputAdaptor fileInputAdaptor = new FileInputAdaptor(); IInputAdaptor httpInputAdaptor = new HttpInputAdaptor(); defaultAnalysisEngine.addInputAdaptor(fileInputAdaptor); defaultAnalysisEngine.addInputAdaptor(httpInputAdaptor); MixJobBuilder mixJobBuilder = new MixJobBuilder(); FileJobExporter fileJobExporter = new FileJobExporter(); MasterConfig config = new MasterConfig(); config.load("master-config.properties"); fileJobExporter.setConfig(config); mixJobBuilder.setConfig(config); mixJobBuilder.init(); fileJobExporter.init(); Map<String, Job> jobs = mixJobBuilder.build(); for(Job job : jobs.values()) { JobTask task = job.getJobTasks().get(0); job.setJobResult(defaultAnalysisEngine.doAnalysis(task).getResults()); fileJobExporter.exportReport(job, false); } defaultAnalysisEngine.releaseResource(); mixJobBuilder.releaseResource(); fileJobExporter.releaseResource(); } @Test public void testExportReportJobTaskJobTaskResult() throws AnalysisException, UnsupportedEncodingException, IOException { StatisticsEngine defaultAnalysisEngine = new StatisticsEngine(); defaultAnalysisEngine.init(); IInputAdaptor fileInputAdaptor = new FileInputAdaptor(); IInputAdaptor httpInputAdaptor = new HttpInputAdaptor(); defaultAnalysisEngine.addInputAdaptor(fileInputAdaptor); defaultAnalysisEngine.addInputAdaptor(httpInputAdaptor); MixJobBuilder mixJobBuilder = new MixJobBuilder(); FileJobExporter fileJobExporter = new FileJobExporter(); MasterConfig config = new MasterConfig(); config.load("master-config.properties"); fileJobExporter.setConfig(config); mixJobBuilder.setConfig(config); mixJobBuilder.init(); fileJobExporter.init(); Map<String, Job> jobs = mixJobBuilder.build(); for(Job job : jobs.values()) { JobTask task = job.getJobTasks().get(0); JobTaskResult jobTaskResult = defaultAnalysisEngine.doAnalysis(task); fileJobExporter.exportReport(task, jobTaskResult, false); } defaultAnalysisEngine.releaseResource(); mixJobBuilder.releaseResource(); fileJobExporter.releaseResource(); } @Test public void testExportEntryDataAndLoadEntryData() throws AnalysisException, UnsupportedEncodingException, IOException, InterruptedException { StatisticsEngine defaultAnalysisEngine = new StatisticsEngine(); defaultAnalysisEngine.init(); IInputAdaptor fileInputAdaptor = new FileInputAdaptor(); IInputAdaptor httpInputAdaptor = new HttpInputAdaptor(); defaultAnalysisEngine.addInputAdaptor(fileInputAdaptor); defaultAnalysisEngine.addInputAdaptor(httpInputAdaptor); MixJobBuilder mixJobBuilder = new MixJobBuilder(); FileJobExporter fileJobExporter = new FileJobExporter(); MasterConfig config = new MasterConfig(); config.load("master-config.properties"); fileJobExporter.setConfig(config); mixJobBuilder.setConfig(config); mixJobBuilder.init(); fileJobExporter.init(); Map<String, Job> jobs = mixJobBuilder.build(); Job job = jobs.values().iterator().next(); JobTask task = job.getJobTasks().get(0); job.setJobResult(defaultAnalysisEngine.doAnalysis(task).getResults()); fileJobExporter.exportEntryData(job); Thread.sleep(1000); Map<String, Map<String, Object>> result = job.getJobResult(); job.setJobResult(null); fileJobExporter.loadEntryData(job); fileJobExporter.loadEntryDataToTmp(job); Thread.sleep(1000); String key = result.keySet().iterator().next(); String key2 = result.get(key).keySet().iterator().next(); Object value = result.get(key).get(key2); Assert.assertEquals(job.getJobResult().get(key).get(key2), value); Assert.assertEquals(job.getDiskResult().get(key).get(key2), value); defaultAnalysisEngine.releaseResource(); mixJobBuilder.releaseResource(); fileJobExporter.releaseResource(); } }