Search in sources :

Example 1 with ReportTestCase

use of org.apache.maven.plugins.surefire.report.ReportTestCase in project repairnator by Spirals-Team.

the class GatherTestInformation method businessExecute.

@Override
protected void businessExecute() {
    this.getLogger().debug("Gathering test information...");
    File rootRepo = new File(this.inspector.getJobStatus().getPomDirPath());
    final List<File> surefireDirs = new ArrayList<File>();
    try {
        Files.walkFileTree(rootRepo.toPath(), new SimpleFileVisitor<Path>() {

            public FileVisitResult preVisitDirectory(Path file, BasicFileAttributes attrs) throws IOException {
                if (file.toString().endsWith(SUREFIREREPORT_PATH)) {
                    surefireDirs.add(file.toFile());
                    return FileVisitResult.SKIP_SUBTREE;
                } else {
                    return FileVisitResult.CONTINUE;
                }
            }
        });
    } catch (IOException e) {
        this.getLogger().warn("Error while traversing files to get surefire reports: " + e);
        this.addStepError(e.getMessage());
    }
    for (File surefireDir : surefireDirs) {
        SurefireReportParser parser = new SurefireReportParser(Arrays.asList(new File[] { surefireDir }), Locale.ENGLISH, null);
        try {
            List<ReportTestSuite> testSuites = parser.parseXMLReportFiles();
            for (ReportTestSuite testSuite : testSuites) {
                if (!skipSettingStatusInformation) {
                    this.nbTotalTests += testSuite.getNumberOfTests();
                    this.nbSkippingTests += testSuite.getNumberOfSkipped();
                    if (testSuite.getNumberOfFailures() > 0 || testSuite.getNumberOfErrors() > 0) {
                        File failingModule = surefireDir.getParentFile().getParentFile();
                        this.failingModulePath = failingModule.getCanonicalPath();
                        this.getInspector().getJobStatus().setFailingModulePath(this.failingModulePath);
                        this.writeProperty("failingModule", this.failingModulePath);
                        getLogger().info("Get the following failing module path: " + failingModulePath);
                        for (ReportTestCase testCase : testSuite.getTestCases()) {
                            if (testCase.hasFailure() || testCase.hasError()) {
                                // sometimes surefire reports a failureType on the form:
                                // "java.lang.NullPointerException:" we should avoid this case
                                String failureType = testCase.getFailureType();
                                if (failureType.endsWith(":")) {
                                    failureType = failureType.substring(0, failureType.length() - 1);
                                }
                                this.failureNames.add(failureType);
                                FailureType typeTof = new FailureType(testCase.getFailureType(), testCase.getFailureMessage(), testCase.hasError());
                                FailureLocation failureLocation = null;
                                for (FailureLocation location : this.failureLocations) {
                                    if (location.getClassName().equals(testCase.getFullClassName())) {
                                        failureLocation = location;
                                        break;
                                    }
                                }
                                if (failureLocation == null) {
                                    failureLocation = new FailureLocation(testCase.getFullClassName());
                                    this.failureLocations.add(failureLocation);
                                }
                                failureLocation.addFailure(typeTof);
                                if (testCase.hasError()) {
                                    failureLocation.addErroringMethod(testCase.getFullClassName() + "#" + testCase.getName());
                                } else {
                                    failureLocation.addFailingMethod(testCase.getFullClassName() + "#" + testCase.getName());
                                }
                            }
                        }
                    }
                }
                this.nbErroringTests += testSuite.getNumberOfErrors();
                this.nbFailingTests += testSuite.getNumberOfFailures();
            }
            if (this.nbFailingTests > 0) {
                this.setPipelineState(PipelineState.HASTESTFAILURE);
            } else if (this.nbErroringTests > 0) {
                this.setPipelineState(PipelineState.HASTESTERRORS);
            } else {
                this.setPipelineState(PipelineState.NOTFAILING);
            }
        } catch (MavenReportException e) {
            this.addStepError("Error while parsing files to get test information:", e);
        } catch (IOException e) {
            this.addStepError("Error while getting the failing module path: ", e);
        }
    }
    if (!this.skipSettingStatusInformation) {
        this.writeProperty("error-types", this.failureNames);
        this.writeProperty("failing-test-cases", this.failureLocations);
        this.writeProperty("totalNumberFailingTests", this.nbFailingTests);
        this.writeProperty("totalNumberErroringTests", this.nbErroringTests);
        this.writeProperty("totalNumberSkippingTests", this.nbSkippingTests);
        this.writeProperty("totalNumberRunningTests", this.nbTotalTests);
        this.inspector.getJobStatus().setFailureLocations(this.failureLocations);
        Metrics metrics = this.inspector.getJobStatus().getMetrics();
        metrics.setFailureNames(this.failureNames);
        metrics.setNbFailingTests(this.nbErroringTests + this.nbFailingTests);
        metrics.setNbRunningTests(this.nbTotalTests);
    }
    this.shouldStop = contract.shouldBeStopped(this);
}
Also used : Path(java.nio.file.Path) ReportTestSuite(org.apache.maven.plugins.surefire.report.ReportTestSuite) SurefireReportParser(org.apache.maven.plugins.surefire.report.SurefireReportParser) FailureType(fr.inria.spirals.repairnator.process.testinformation.FailureType) FailureLocation(fr.inria.spirals.repairnator.process.testinformation.FailureLocation) FileVisitResult(java.nio.file.FileVisitResult) IOException(java.io.IOException) Metrics(fr.inria.spirals.repairnator.process.inspectors.Metrics) ReportTestCase(org.apache.maven.plugins.surefire.report.ReportTestCase) File(java.io.File) BasicFileAttributes(java.nio.file.attribute.BasicFileAttributes) MavenReportException(org.apache.maven.reporting.MavenReportException)

Example 2 with ReportTestCase

use of org.apache.maven.plugins.surefire.report.ReportTestCase in project elastest-torm by elastest.

the class TJobExecOrchestratorService method saveTestResults.

public void saveTestResults(List<ReportTestSuite> testSuites, TJobExecution tJobExec) {
    logger.info("Saving test results {} ", tJobExec.getId());
    TestSuite tSuite;
    TestCase tCase;
    if (testSuites != null && testSuites.size() > 0) {
        for (ReportTestSuite reportTestSuite : testSuites) {
            tSuite = new TestSuite();
            tSuite.setTimeElapsed(reportTestSuite.getTimeElapsed());
            tSuite.setErrors(reportTestSuite.getNumberOfErrors());
            tSuite.setFailures(reportTestSuite.getNumberOfFailures());
            tSuite.setFlakes(reportTestSuite.getNumberOfFlakes());
            tSuite.setSkipped(reportTestSuite.getNumberOfSkipped());
            tSuite.setName(reportTestSuite.getName());
            tSuite.setnumTests(reportTestSuite.getNumberOfTests());
            tSuite = testSuiteRepo.save(tSuite);
            for (ReportTestCase reportTestCase : reportTestSuite.getTestCases()) {
                tCase = new TestCase();
                // Remove parentheses
                tCase.cleanNameAndSet(reportTestCase.getName());
                tCase.setTime(reportTestCase.getTime());
                tCase.setFailureDetail(reportTestCase.getFailureDetail());
                tCase.setFailureErrorLine(reportTestCase.getFailureErrorLine());
                tCase.setFailureMessage(reportTestCase.getFailureMessage());
                tCase.setFailureType(reportTestCase.getFailureType());
                tCase.setTestSuite(tSuite);
                try {
                    Date startDate = this.elasticsearchService.findFirstMsgAndGetTimestamp(tJobExec.getMonitoringIndex(), this.tcStartMsgPrefix + tCase.getName() + " ", "test");
                    tCase.setStartDate(startDate);
                    Date endDate = this.elasticsearchService.findFirstMsgAndGetTimestamp(tJobExec.getMonitoringIndex(), this.tcFinishMsgPrefix + tCase.getName() + " ", "test");
                    tCase.setEndDate(endDate);
                } catch (Exception e) {
                    logger.debug("Cannot save start/end date for Test Case {}", tCase.getName(), e);
                }
                testCaseRepo.save(tCase);
            }
            tSuite.settJobExec(tJobExec);
            testSuiteRepo.save(tSuite);
            tJobExec.getTestSuites().add(tSuite);
        }
    }
}
Also used : ReportTestSuite(org.apache.maven.plugins.surefire.report.ReportTestSuite) TestSuite(io.elastest.etm.model.TestSuite) ReportTestSuite(org.apache.maven.plugins.surefire.report.ReportTestSuite) TestCase(io.elastest.etm.model.TestCase) ReportTestCase(org.apache.maven.plugins.surefire.report.ReportTestCase) ReportTestCase(org.apache.maven.plugins.surefire.report.ReportTestCase) Date(java.util.Date) IOException(java.io.IOException)

Aggregations

IOException (java.io.IOException)2 ReportTestCase (org.apache.maven.plugins.surefire.report.ReportTestCase)2 ReportTestSuite (org.apache.maven.plugins.surefire.report.ReportTestSuite)2 Metrics (fr.inria.spirals.repairnator.process.inspectors.Metrics)1 FailureLocation (fr.inria.spirals.repairnator.process.testinformation.FailureLocation)1 FailureType (fr.inria.spirals.repairnator.process.testinformation.FailureType)1 TestCase (io.elastest.etm.model.TestCase)1 TestSuite (io.elastest.etm.model.TestSuite)1 File (java.io.File)1 FileVisitResult (java.nio.file.FileVisitResult)1 Path (java.nio.file.Path)1 BasicFileAttributes (java.nio.file.attribute.BasicFileAttributes)1 Date (java.util.Date)1 SurefireReportParser (org.apache.maven.plugins.surefire.report.SurefireReportParser)1 MavenReportException (org.apache.maven.reporting.MavenReportException)1