/** {@inheritDoc} */ @Override public void testStarted(final TestCase tc, final String version) { if (reportDoc == null) { reportDoc = new IRXMLDocument(); reportDoc.setName(version); } remoteAppender.clear(); localAppender.clear(); resourceAppender.clear(); currentTestCase = tc; currentTestStartTime = System.currentTimeMillis(); }
/** {@inheritDoc} */ @Override public void testStopped(final Result result) { LOGGER.info("result is : ---- " + result.getAssert() + " ----"); long cost = System.currentTimeMillis() - currentTestStartTime; ResultItem item = new ResultItem(); item.id = currentTestCase.getId(); item.res = result.getAssert(); item.notes = result.getReason(); item.costInMS = cost; item.spec = currentTestCase.getSpecSection(); item.desc = currentTestCase.getDescription(); String prefix = "" + currentTestCase.getId() + "."; if (result.getAssert() != TestResult.SKIP) { final PatternLayout layout = new PatternLayout(); layout.setConversionPattern("%6r [%-20.20t] %-5p %30.30c (%6L) %x %m%n"); final File remoteFile = new File(reportDir, prefix + "remote.log"); final File localFile = new File(reportDir, prefix + "local.log"); final File resourceFile = new File(reportDir, prefix + "resource.log"); try { remoteAppender.writeToFile(layout, remoteFile); item.remoteLogURI = "file:" + remoteFile.getName(); boolean hasError = remoteAppender.hasErrorLevelEvent(); item.hasErrorLevelLog = Boolean.toString(hasError); localAppender.writeToFile(layout, localFile); item.localLogURI = "file:" + localFile.getName(); resourceAppender.writeToFile(layout, resourceFile); item.resourceLog = filterReturn(resourceAppender); } catch (IOException e) { LOGGER.error(e.getMessage(), e); return; } } reportDoc.add(item); currentTestCase = null; // write to file. final File report = new File(reportDir, reportName); try { LOGGER.info("writing report to: '" + report.getCanonicalPath() + "'"); writeReport(report); } catch (IOException e) { LOGGER.error("error writing the report", e); } }
/** Constructs a new object. */ public TestRecorder() { remoteAppender = new SystemTestAppender(); final LoggerNameFilter filter = new LoggerNameFilter(); filter.setName("org.jvoicexml.systemtest"); remoteAppender.addFilter(filter); final Logger jvxmlLogger = Logger.getLogger("org.jvoicexml"); jvxmlLogger.addAppender(remoteAppender); localAppender = new SystemTestAppender(); final Logger systemtestLogger = Logger.getLogger("org.jvoicexml.systemtest"); systemtestLogger.addAppender(localAppender); resourceAppender = new SystemTestAppender(); final Logger resourceLogger = Logger.getLogger("org.jvoicexml.implementation.pool"); resourceLogger.addAppender(resourceAppender); }
/** * Filters the resource pool info from the message of the given appender. * * @param appender resource appender * @return filtered pool size info * @since 0.7.4 */ private String filterReturn(final SystemTestAppender appender) { List<LoggingEvent> events = new java.util.ArrayList<LoggingEvent>(); events.addAll(appender.getEvents()); final StringBuilder str = new StringBuilder(); final String lf = System.getProperty("line.separator"); for (LoggingEvent event : events) { String message = (String) event.getMessage(); int end = message.indexOf(" after return"); if (end < 0) { continue; } message = message.substring("pool has now ".length(), end); message = message.replaceAll("for key 'text' .org.jvoicexml.implementation.text.", "("); str.append(message); str.append(lf); } return str.toString(); }