All Downloads are FREE. Search and download functionalities are using the official Maven repository.

uk.co.automatictester.jmeter.lightning.maven.plugin.LightningMojo Maven / Gradle / Ivy

package uk.co.automatictester.jmeter.lightning.maven.plugin;

import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import uk.co.automatictester.lightning.core.facades.LightningCoreLocalFacade;

@Mojo(name = "lightning", defaultPhase = LifecyclePhase.POST_INTEGRATION_TEST)
public class LightningMojo extends ConfigurationMojo {

    private LightningCoreLocalFacade core = new LightningCoreLocalFacade();
    private int exitCode = 0;

    @Override
    public void execute() throws MojoExecutionException {
        core.setJmeterCsv(jmeterCsv);
        core.setPerfMonCsv(perfmonCsv);
        core.setJunitReportSuffix(junitReportSuffix);
        core.loadTestData();

        switch (mode) {
            case verify:
                runTests();
                core.saveJunitReport();
                notifyCiServerForVerify();
                break;
            case report:
                runReport();
                notifyCiServerForReport();
                break;
        }

        setExitCode();
    }

    private void runTests() {
        long testSetExecStart = System.currentTimeMillis();

        core.setLightningXml(testSetXml);
        core.loadConfig();

        String testExecutionReport = core.executeTests();
        log(testExecutionReport);

        String testSetExecutionSummaryReport = core.testSetExecutionSummaryReport();
        log(testSetExecutionSummaryReport);

        long testSetExecEnd = System.currentTimeMillis();
        long testExecTime = testSetExecEnd - testSetExecStart;
        String message = String.format("Execution time:    %dms", testExecTime);
        log(message);

        if (core.hasExecutionFailed() && !continueOnFailure) {
            exitCode = 1;
        }
    }

    private void runReport() {
        String report = core.runReport();
        log(report);
        if (core.hasFailedTransactions()) {
            exitCode = 1;
        }
    }

    private void notifyCiServerForVerify() {
        String teamCityVerifyStatistics = core.teamCityVerifyStatistics();
        log(teamCityVerifyStatistics);
        core.setJenkinsBuildNameForVerify();
    }

    private void notifyCiServerForReport() {
        String teamCityBuildReportSummary = core.teamCityBuildReportSummary();
        log(teamCityBuildReportSummary);
        String teamCityReportStatistics = core.teamCityReportStatistics();
        log(teamCityReportStatistics);
        core.setJenkinsBuildNameForReport();
    }

    private void setExitCode() throws MojoExecutionException {
        if (exitCode != 0) {
            throw new MojoExecutionException("");
        }
    }

    private void log(String text) {
        for (String line : text.split(System.lineSeparator())) {
            getLog().info(line);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy