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());
}
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;
}
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;
}
Aggregations