package hudson.plugins.performance.parsers; import com.google.common.io.Files; import hudson.EnvVars; import hudson.FilePath; import hudson.model.FreeStyleBuild; import hudson.model.FreeStyleProject; import org.junit.Rule; import org.junit.Test; import org.jvnet.hudson.test.Issue; import org.jvnet.hudson.test.JenkinsRule; import javax.annotation.Nonnull; import java.io.File; import java.io.IOException; import java.util.HashMap; import static org.junit.Assert.*; public class ParserFactoryTest { @Rule public JenkinsRule j = new JenkinsRule(); @Test public void testFlow() throws Exception { EnvVars envVars = new EnvVars(new HashMap<String, String>()); FilePath path = new FilePath(new File("/")); String filePath; filePath = getClass().getResource("/TaurusXMLReport.xml").toURI().getPath(); assertTrue(ParserFactory.getParser(null, path, null, filePath, envVars) instanceof TaurusParser); filePath = getClass().getResource("/JMeterResults.jtl").toURI().getPath(); assertTrue(ParserFactory.getParser(null, path, null, filePath, envVars) instanceof JMeterParser); filePath = getClass().getResource("/TEST-JUnitResults.xml").toURI().getPath(); assertTrue(ParserFactory.getParser(null, path, null, filePath, envVars) instanceof JUnitParser); filePath = getClass().getResource("/IagoResults.log").toURI().getPath(); assertTrue(ParserFactory.getParser(null, path, null, filePath, envVars) instanceof IagoParser); filePath = getClass().getResource("/WrkResultsQuick.wrk").toURI().getPath(); assertTrue(ParserFactory.getParser(null, path, null, filePath, envVars) instanceof WrkSummarizerParser); filePath = getClass().getResource("/JMeterCsvResults.csv").toURI().getPath(); assertTrue(ParserFactory.getParser(null, path, null, filePath, envVars) instanceof JMeterCsvParser); filePath = getClass().getResource("/summary.log").toURI().getPath(); assertTrue(ParserFactory.getParser(null, path, null, filePath, envVars) instanceof JmeterSummarizerParser); } @Test public void testFlowWithGlob() throws Exception { EnvVars envVars = new EnvVars(new HashMap<String, String>()); assertTrue(ParserFactory.getParser(null, null, null, "**/*.xml", envVars) instanceof TaurusParser); assertTrue(ParserFactory.getParser(null, null, null, "**/*.jtl", envVars) instanceof JMeterParser); assertTrue(ParserFactory.getParser(null, null, null, "**/TEST-*.xml", envVars) instanceof JUnitParser); assertTrue(ParserFactory.getParser(null, null, null, "parrot-server-stats.log", envVars) instanceof IagoParser); assertTrue(ParserFactory.getParser(null, null, null, "**/*.wrk", envVars) instanceof WrkSummarizerParser); assertTrue(ParserFactory.getParser(null, null, null, "**/*.csv", envVars) instanceof JMeterCsvParser); assertTrue(ParserFactory.getParser(null, null, null, "**/*.log", envVars) instanceof JmeterSummarizerParser); } @Test @Issue("43503") public void test43503() throws Exception { FreeStyleProject project = j.createFreeStyleProject(); FreeStyleBuildExt build = new FreeStyleBuildExt(project); EnvVars envVars = new EnvVars(new HashMap<String, String>()); FilePath workspace = new FilePath(Files.createTempDir()); build.setWorkspace(workspace); FilePath results = workspace.child("results"); results.mkdirs(); FilePath child = results.child("result.wrk"); child.copyFrom(getClass().getResourceAsStream("/WrkResultsQuick.wrk")); String glob = "**/results/*.wrk"; assertTrue(ParserFactory.getParser(build, build.getWorkspace(), null, glob, envVars) instanceof WrkSummarizerParser); FilePath child2 = results.child("result.jtl"); child2.copyFrom(getClass().getResourceAsStream("/JMeterResults.jtl")); String glob2 = "**/results/*.jtl"; assertTrue(ParserFactory.getParser(build, build.getWorkspace(), null, glob2, envVars) instanceof JMeterParser); } public static class FreeStyleBuildExt extends FreeStyleBuild { public FreeStyleBuildExt(FreeStyleProject project) throws IOException { super(project); } @Override protected void setWorkspace(@Nonnull FilePath ws) { super.setWorkspace(ws); } } }