From f09fcee4480595b57e144065e83c0876efa17039 Mon Sep 17 00:00:00 2001 From: jeb228 Date: Thu, 19 Aug 2010 14:28:32 +0000 Subject: [PATCH] NIHVIVO-222 Tweak the data listener. --- .../utilities/testrunner/SeleniumRunner.java | 82 +++++++++++-------- .../testrunner/SeleniumRunnerParameters.java | 20 +---- ...DataModel.java => OutputDataListener.java} | 3 +- .../testrunner/output/OutputManager.java | 8 +- .../output/OutputSummaryFormatter.java | 41 ++++++---- 5 files changed, 78 insertions(+), 76 deletions(-) rename utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/output/{OutputDataModel.java => OutputDataListener.java} (93%) diff --git a/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/SeleniumRunner.java b/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/SeleniumRunner.java index dca681bf9..6ddb07502 100644 --- a/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/SeleniumRunner.java +++ b/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/SeleniumRunner.java @@ -25,6 +25,8 @@ public class SeleniumRunner { private final SuiteRunner suiteRunner; private final OutputManager outputManager; + private final List selectedSuites = new ArrayList(); + public SeleniumRunner(SeleniumRunnerParameters parms) { this.parms = parms; this.listener = parms.getListener(); @@ -33,7 +35,29 @@ public class SeleniumRunner { this.modelCleaner = new ModelCleaner(parms, this.tomcatController); this.suiteRunner = new SuiteRunner(parms); this.outputManager = new OutputManager(parms); - + + } + + /** + * Select all test suites which aren't explicitly ignored. + */ + public void selectSuites() { + Listener listener = parms.getListener(); + IgnoredTests ignored = parms.getIgnoredTests(); + + this.selectedSuites.clear(); + + for (File parentDir : parms.getSuiteParentDirectories()) { + for (File suite : parms.findSuiteDirs(parentDir)) { + String suiteName = suite.getName(); + if (ignored.isIgnored(suiteName)) { + listener.suiteIgnored(suite); + } else { + listener.suiteAdded(suite); + this.selectedSuites.add(suite); + } + } + } } /** @@ -68,7 +92,7 @@ public class SeleniumRunner { } public void runSelectedSuites() { - for (File suiteDir : parms.getSelectedSuites()) { + for (File suiteDir : this.selectedSuites) { listener.suiteStarted(suiteDir); try { if (parms.isCleanModel()) { @@ -87,24 +111,6 @@ public class SeleniumRunner { } } - private static void selectAllSuites(SeleniumRunnerParameters parms) { - Listener listener = parms.getListener(); - IgnoredTests ignored = parms.getIgnoredTests(); - List suites = new ArrayList(); - for (File parentDir : parms.getSuiteParentDirectories()) { - for (File suite : parms.findSuiteDirs(parentDir)) { - String suiteName = suite.getName(); - if (ignored.isIgnored(suiteName)) { - listener.suiteIgnored(suite); - } else { - listener.suiteAdded(suite); - suites.add(suite); - } - } - } - parms.setSelectedSuites(suites); - } - private static void usage(String message) { System.out.println(message); System.out.println("Usage is: SeleniumRunner " @@ -137,23 +143,31 @@ public class SeleniumRunner { usage("Can't read properties file: " + e.getMessage()); } - if (interactive) { - // TODO hook up the GUI. - throw new RuntimeException("interactive mode not implemented."); - } else { - File logFile = new File(parms.getOutputDirectory(), LOGFILE_NAME); - System.out.println("Log file is '" + logFile.getPath() + "'"); + try { + if (interactive) { + // TODO hook up the GUI. + throw new RuntimeException("interactive mode not implemented."); + } else { + File logFile = new File(parms.getOutputDirectory(), + LOGFILE_NAME); + System.out.println("Log file is '" + logFile.getPath() + "'"); - // Run all of the suites. - // For each suite, clean the model and the upload area. - selectAllSuites(parms); - parms.setCleanModel(true); - parms.setCleanUploads(true); + // Run all of the suites. + // For each suite, clean the model and the upload area. + parms.setCleanModel(true); + parms.setCleanUploads(true); - System.out.println(parms); + System.out.println(parms); - SeleniumRunner runner = new SeleniumRunner(parms); - success = runner.run(); + SeleniumRunner runner = new SeleniumRunner(parms); + runner.selectSuites(); + success = runner.run(); + } + } catch (FatalException e) { + System.err.println("\n\n-----------------\n" + + "| FATAL ERROR | " + e.getMessage() + + "\n-----------------\n\n"); + e.printStackTrace(); } System.out.println("Exiting SeleniumRunner"); System.exit(success ? 0 : -1); diff --git a/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/SeleniumRunnerParameters.java b/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/SeleniumRunnerParameters.java index a6db03cf0..ff5d1b144 100644 --- a/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/SeleniumRunnerParameters.java +++ b/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/SeleniumRunnerParameters.java @@ -49,7 +49,6 @@ public class SeleniumRunnerParameters { private final ModelCleanerProperties modelCleanerProperties; private final IgnoredTests ignoredTests; - private Collection selectedSuites = Collections.emptySet(); private boolean cleanModel = true; private boolean cleanUploads = true; @@ -377,14 +376,6 @@ public class SeleniumRunnerParameters { return ignoredTests; } - public void setSelectedSuites(Collection selectedSuites) { - this.selectedSuites = selectedSuites; - } - - public Collection getSelectedSuites() { - return new ArrayList(this.selectedSuites); - } - public boolean isCleanModel() { return cleanModel; } @@ -411,19 +402,10 @@ public class SeleniumRunnerParameters { + "\n outputDirectory: " + outputDirectory + "\n suiteParentDirectories: " + suiteParentDirectories + "\n modelCleanerProperties: " + modelCleanerProperties - + "\n" + ignoredTests + "\n\n selectedSuites: " - + showSelectedSuites() + "\n cleanModel: " + cleanModel + + "\n" + ignoredTests + "\n cleanModel: " + cleanModel + "\n cleanUploads: " + cleanUploads; } - private String showSelectedSuites() { - StringBuilder buffer = new StringBuilder(); - for (File suite : selectedSuites) { - buffer.append("\n ").append(suite.getPath()); - } - return buffer.toString(); - } - /** * Look inside this parent directory and find any suite directories. You can * recognize a suite directory because it contains a file named Suite.html. diff --git a/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/output/OutputDataModel.java b/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/output/OutputDataListener.java similarity index 93% rename from utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/output/OutputDataModel.java rename to utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/output/OutputDataListener.java index 3c98a3afb..b9a6c492c 100644 --- a/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/output/OutputDataModel.java +++ b/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/output/OutputDataListener.java @@ -11,7 +11,7 @@ import java.util.List; import edu.cornell.mannlib.vitro.utilities.testrunner.FileHelper; import edu.cornell.mannlib.vitro.utilities.testrunner.listener.Listener; -public class OutputDataModel implements Listener { +public class OutputDataListener implements Listener { private boolean runCompleted; private long startTime; private long endTime; @@ -24,6 +24,7 @@ public class OutputDataModel implements Listener { @Override public void runStarted() { + System.out.println("run started"); startTime = new Date().getTime(); } diff --git a/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/output/OutputManager.java b/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/output/OutputManager.java index 8d77d0fcc..2bcb06a7f 100644 --- a/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/output/OutputManager.java +++ b/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/output/OutputManager.java @@ -19,12 +19,12 @@ import edu.cornell.mannlib.vitro.utilities.testrunner.Status; */ public class OutputManager { private final SeleniumRunnerParameters parms; - private final OutputDataModel dataModel; + private final OutputDataListener dataListener; public OutputManager(SeleniumRunnerParameters parms) { this.parms = parms; - this.dataModel = new OutputDataModel(); - parms.addListener(this.dataModel); + this.dataListener = new OutputDataListener(); + parms.addListener(this.dataListener); } /** @@ -76,7 +76,7 @@ public class OutputManager { } OutputSummaryFormatter formatter = new OutputSummaryFormatter(parms); - formatter.format(log, suites, dataModel); + formatter.format(log, suites, dataListener); return formatter.figureOverallStatus(log, suites); } diff --git a/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/output/OutputSummaryFormatter.java b/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/output/OutputSummaryFormatter.java index ea4aaf7c0..fdb53614a 100644 --- a/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/output/OutputSummaryFormatter.java +++ b/utilities/testrunner/src/edu/cornell/mannlib/vitro/utilities/testrunner/output/OutputSummaryFormatter.java @@ -30,9 +30,9 @@ public class OutputSummaryFormatter { "yyyy-MM-dd HH:mm:ss"); private final SeleniumRunnerParameters parms; - private LogStats log; + private LogStats logStats; private Map suites; - private OutputDataModel dataModel; + private OutputDataListener dataListener; private Status runStatus; private List allTests = new ArrayList(); private int passingTestCount; @@ -51,12 +51,12 @@ public class OutputSummaryFormatter { * Create a summary HTML file from the info contained in this log file and * these suite outputs. */ - public void format(LogStats log, Map suites, - OutputDataModel dataModel) { - this.log = log; + public void format(LogStats logStats, Map suites, + OutputDataListener dataListener) { + this.logStats = logStats; this.suites = suites; - this.dataModel = dataModel; - this.runStatus = figureOverallStatus(log, suites); + this.dataListener = dataListener; + this.runStatus = figureOverallStatus(logStats, suites); tallyTests(); tallySuites(); @@ -148,9 +148,9 @@ public class OutputSummaryFormatter { } private void tallySuites() { - List ignoredSuiteNames = dataModel.getIgnoredSuiteNames(); + List ignoredSuiteNames = dataListener.getIgnoredSuiteNames(); - for (String name : dataModel.getSuiteNames()) { + for (String name : dataListener.getSuiteNames()) { if (ignoredSuiteNames.contains(name)) { this.ignoredSuites.add(name); } else if (!suites.containsKey(name)) { @@ -167,7 +167,7 @@ public class OutputSummaryFormatter { } private void writeHeader(PrintWriter writer) { - String startString = formatDateTime(dataModel.getStartTime()); + String startString = formatDateTime(dataListener.getStartTime()); writer.println(""); writer.println(""); @@ -192,9 +192,9 @@ public class OutputSummaryFormatter { String ignoreClass = this.ignoredTests.isEmpty() ? "" : Status.WARN .getHtmlClass(); - String start = formatDateTime(dataModel.getStartTime()); - String end = formatDateTime(dataModel.getEndTime()); - String elapsed = formatElapsedTime(dataModel.getElapsedTime()); + String start = formatDateTime(dataListener.getStartTime()); + String end = formatDateTime(dataListener.getEndTime()); + String elapsed = formatElapsedTime(dataListener.getElapsedTime()); writer.println("
Summary
"); writer.println(); @@ -213,8 +213,13 @@ public class OutputSummaryFormatter { writer.println(" "); writer.println(" "); writer.println(" "); - writer.println(" "); + writer.println(" "); writer.println(" "); @@ -243,14 +248,14 @@ public class OutputSummaryFormatter { writer.println(); writer.println("
 SuitesTests
Total" + "" - + "
Total" + + (this.passingSuites.size() + this.failingSuites.size() + + this.ignoredSuites.size() + this.remainingSuites + .size()) + + "" + + (this.passingTestCount + this.failingTests.size() + this.ignoredTests + .size()) + "
Passed" + this.passingSuites.size() + "" + this.passingTestCount + "
"); - if ((!log.hasErrors()) && (!log.hasWarnings())) { + if ((!logStats.hasErrors()) && (!logStats.hasWarnings())) { writer.println(" "); } else { - for (String e : log.getErrors()) { + for (String e : logStats.getErrors()) { writer.println(" "); } - for (String w : log.getWarnings()) { + for (String w : logStats.getWarnings()) { writer.println(" "); }
No errors or warnings
ERROR" + e + "
ERROR" + w + "