package com.lazerycode.jmeter.mojo;
import com.lazerycode.jmeter.json.TestConfig;
import com.lazerycode.jmeter.testrunner.ResultScanner;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import java.io.File;
/**
* JMeter Maven plugin.
*/
@Mojo(name = "results", defaultPhase = LifecyclePhase.VERIFY)
public class CheckResultsMojo extends AbstractJMeterMojo {
/**
* Sets whether build should fail if there are failed requests found in the JMeter result file.
* Failures are for example failed requests
*/
@Parameter(defaultValue = "false")
protected boolean ignoreResultFailures;
/**
* Sets whether ResultScanner should search for failed requests in the JMeter result file.
* Defaults to false
*/
@Parameter(defaultValue = "false")
protected boolean scanResultsForFailedRequests;
/**
* Sets whether ResultScanner should search for Successful requests in the JMeter result file.
* Defaults to false
*/
@Parameter(defaultValue = "false")
protected boolean scanResultsForSuccessfulRequests;
/**
* Scan JMeter result files for successful, and failed requests/
*
* @throws MojoExecutionException
* @throws MojoFailureException
*/
@Override
public void doExecute() throws MojoExecutionException, MojoFailureException {
if (scanResultsForSuccessfulRequests || scanResultsForFailedRequests) {
ResultScanner resultScanner = new ResultScanner(scanResultsForSuccessfulRequests, scanResultsForFailedRequests);
TestConfig testConfig = new TestConfig(new File(testConfigFile));
for (String resultFileLocation : testConfig.getResultsFileLocations()) {
resultScanner.parseResultFile(new File(resultFileLocation));
}
getLog().info(" ");
getLog().info("Performance Test Results");
getLog().info(" ");
getLog().info("Result (.jtl) files scanned: " + testConfig.getResultsFileLocations().size());
getLog().info("Successful requests: " + resultScanner.getSuccessCount());
getLog().info("Failed requests: " + resultScanner.getFailureCount());
getLog().info(" ");
if (!ignoreResultFailures && resultScanner.getFailureCount() > 0) {
throw new MojoFailureException("Failing build because failed requests have been detected. JMeter logs are available at: '" + logsDirectory.getAbsolutePath() + "'");
}
} else {
getLog().info(" ");
getLog().info("Results of Performance Test(s) have not been scanned.");
getLog().info(" ");
}
}
}