Search in sources :

Example 1 with Report

use of nl.nn.testtool.Report in project iaf by ibissource.

the class ReportNameComparator method doPipe.

@Override
public PipeRunResult doPipe(Message message, PipeLineSession session) throws PipeRunException {
    XmlBuilder results = new XmlBuilder("Results");
    int reportsPassed = 0;
    List<Report> reports = new ArrayList<Report>();
    try {
        List<Integer> storageIds = testStorage.getStorageIds();
        for (Integer storageId : storageIds) {
            Report report = testStorage.getReport(storageId);
            String fullReportPath = (report.getPath() != null ? report.getPath() : "") + report.getName();
            if (excludeRegexPattern == null || !excludeRegexPattern.matcher(fullReportPath).matches()) {
                reports.add(report);
            }
        }
    } catch (StorageException e) {
        addExceptionElement(results, e);
    }
    ReportRunner reportRunner = new ReportRunner();
    reportRunner.setTestTool(testTool);
    reportRunner.setDebugStorage(debugStorage);
    reportRunner.setSecurityContext(new IbisSecurityContext(session, checkRoles));
    Collections.sort(reports, reportNameComparator);
    long startTime = System.currentTimeMillis();
    boolean reportGeneratorEnabledOldValue = testTool.isReportGeneratorEnabled();
    if (enableReportGenerator) {
        testTool.setReportGeneratorEnabled(true);
        testTool.sendReportGeneratorStatusUpdate();
    }
    reportRunner.run(reports, false, true);
    if (enableReportGenerator) {
        testTool.setReportGeneratorEnabled(reportGeneratorEnabledOldValue);
        testTool.sendReportGeneratorStatusUpdate();
    }
    long endTime = System.currentTimeMillis();
    for (Report report : reports) {
        RunResult runResult = reportRunner.getResults().get(report.getStorageId());
        long originalDuration = report.getEndTime() - report.getStartTime();
        long duration = -1;
        boolean equal = false;
        String error = "";
        if (runResult.errorMessage != null) {
            error = runResult.errorMessage;
        } else {
            Report runResultReport = null;
            try {
                runResultReport = reportRunner.getRunResultReport(runResult.correlationId);
            } catch (StorageException e) {
                addExceptionElement(results, e);
            }
            if (runResultReport == null) {
                error = "Result report not found. Report generator not enabled?";
            } else {
                duration = runResultReport.getEndTime() - runResultReport.getStartTime();
                report.setGlobalReportXmlTransformer(reportXmlTransformer);
                runResultReport.setGlobalReportXmlTransformer(reportXmlTransformer);
                runResultReport.setTransformation(report.getTransformation());
                runResultReport.setReportXmlTransformer(report.getReportXmlTransformer());
                if (report.toXml(reportRunner).equals(runResultReport.toXml(reportRunner))) {
                    equal = true;
                    reportsPassed++;
                }
            }
        }
        XmlBuilder result = new XmlBuilder("Result");
        results.addSubElement(result);
        result.addSubElement("Path", report.getPath());
        result.addSubElement("Name", report.getName());
        result.addSubElement("OriginalDuration", "" + originalDuration);
        if (duration > -1)
            result.addSubElement("Duration", "" + duration);
        result.addSubElement("Equal", "" + equal);
        if (!error.isEmpty())
            result.addSubElement("Error", error);
        if (writeToLog || writeToSystemOut) {
            writeToLogOrSysOut("Path=\"" + report.getPath() + "\", " + "Name=\"" + report.getName() + "\", " + "OriginalDuration=\"" + originalDuration + "\", " + ((duration > -1) ? "Duration=\"" + duration + "\", " : "") + "Equal=\"" + equal + "\"" + (!error.isEmpty() ? ", Error=\"" + error + "\"" : ""));
        }
    }
    boolean allReportsPassed = reportsPassed == reports.size();
    if (writeToLog || writeToSystemOut) {
        writeToLogOrSysOut("Total=\"" + reports.size() + "\", " + "Passed=\"" + reportsPassed + "\", " + "Failed=\"" + (reports.size() - reportsPassed) + "\", " + "TotalDuration=\"" + (endTime - startTime) + "\", " + "Equal=\"" + allReportsPassed + "\"");
    }
    PipeForward forward = allReportsPassed ? getSuccessForward() : failureForward;
    return new PipeRunResult(forward, results.toXML());
}
Also used : Report(nl.nn.testtool.Report) ArrayList(java.util.ArrayList) PipeForward(nl.nn.adapterframework.core.PipeForward) PipeRunResult(nl.nn.adapterframework.core.PipeRunResult) XmlBuilder(nl.nn.adapterframework.util.XmlBuilder) StorageException(nl.nn.testtool.storage.StorageException) ReportRunner(nl.nn.testtool.run.ReportRunner) RunResult(nl.nn.testtool.run.RunResult) PipeRunResult(nl.nn.adapterframework.core.PipeRunResult)

Example 2 with Report

use of nl.nn.testtool.Report in project iaf by ibissource.

the class Storage method getReport.

@Override
public Report getReport(Integer storageId) throws StorageException {
    final Report report = new Report();
    report.setTestTool(testTool);
    report.setStorage(this);
    report.setStorageId(storageId);
    report.setName("Table " + table);
    report.setStubStrategy("Never");
    final List<Checkpoint> checkpoints = new ArrayList<Checkpoint>();
    report.setCheckpoints(checkpoints);
    StringBuilder query = new StringBuilder("select " + reportColumnNames.get(0));
    for (int i = 1; i < reportColumnNames.size(); i++) {
        query.append(", " + reportColumnNames.get(i));
    }
    query.append(" from " + table + " where LOGID = ?");
    try {
        jdbcTemplate.query(query.toString(), new Object[] { storageId }, new RowMapper() {

            public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
                for (int i = 0; i < reportColumnNames.size(); i++) {
                    String value = getValue(rs, i + 1);
                    Checkpoint checkpoint = new Checkpoint(report, Thread.currentThread().getName(), Storage.class.getName(), "Column " + reportColumnNames.get(i), Checkpoint.TYPE_INPUTPOINT, 0);
                    checkpoint.setMessage(value);
                    checkpoints.add(checkpoint);
                }
                return null;
            }
        });
    } catch (DataAccessException e) {
        throw new StorageException("Could not read report", e);
    }
    return report;
}
Also used : Report(nl.nn.testtool.Report) SQLException(java.sql.SQLException) ArrayList(java.util.ArrayList) Checkpoint(nl.nn.testtool.Checkpoint) Checkpoint(nl.nn.testtool.Checkpoint) ResultSet(java.sql.ResultSet) StorageException(nl.nn.testtool.storage.StorageException) DataAccessException(org.springframework.dao.DataAccessException) RowMapper(org.springframework.jdbc.core.RowMapper)

Example 3 with Report

use of nl.nn.testtool.Report in project iaf by ibissource.

the class Debugger method stubINamedObject.

private boolean stubINamedObject(String checkpointNamePrefix, INamedObject namedObject, String correlationId) {
    boolean stub = false;
    boolean rerun;
    synchronized (inRerun) {
        rerun = inRerun.contains(correlationId);
    }
    if (rerun) {
        Checkpoint originalEndpoint = testTool.getOriginalEndpointOrAbortpointForCurrentLevel(correlationId);
        if (originalEndpoint == null) {
            // stub = stub(getCheckpointNameForINamedObject(checkpointNamePrefix, namedObject), true, getDefaultStubStrategy());
            // TODO zou ook gewoon het orginele report kunnen gebruiken (via opslaan in iets als inRerun) of inRerun ook via testTool doen?
            Report reportInProgress = testTool.getReportInProgress(correlationId);
            stub = stub(getCheckpointNameForINamedObject(checkpointNamePrefix, namedObject), true, (reportInProgress == null ? null : reportInProgress.getStubStrategy()));
        } else {
            if (originalEndpoint.getStub() == Checkpoint.STUB_FOLLOW_REPORT_STRATEGY) {
                stub = stub(originalEndpoint, originalEndpoint.getReport().getStubStrategy());
            } else if (originalEndpoint.getStub() == Checkpoint.STUB_NO) {
                stub = false;
            } else if (originalEndpoint.getStub() == Checkpoint.STUB_YES) {
                stub = true;
            }
        }
    } else {
        stub = false;
    }
    return stub;
}
Also used : Checkpoint(nl.nn.testtool.Checkpoint) Report(nl.nn.testtool.Report)

Aggregations

Report (nl.nn.testtool.Report)3 ArrayList (java.util.ArrayList)2 Checkpoint (nl.nn.testtool.Checkpoint)2 StorageException (nl.nn.testtool.storage.StorageException)2 ResultSet (java.sql.ResultSet)1 SQLException (java.sql.SQLException)1 PipeForward (nl.nn.adapterframework.core.PipeForward)1 PipeRunResult (nl.nn.adapterframework.core.PipeRunResult)1 XmlBuilder (nl.nn.adapterframework.util.XmlBuilder)1 ReportRunner (nl.nn.testtool.run.ReportRunner)1 RunResult (nl.nn.testtool.run.RunResult)1 DataAccessException (org.springframework.dao.DataAccessException)1 RowMapper (org.springframework.jdbc.core.RowMapper)1