NIHVIVO-222 Tweak the data listener.

This commit is contained in:
jeb228 2010-08-19 14:28:32 +00:00
parent 028f4c038f
commit f09fcee448
5 changed files with 78 additions and 76 deletions

View file

@ -25,6 +25,8 @@ public class SeleniumRunner {
private final SuiteRunner suiteRunner; private final SuiteRunner suiteRunner;
private final OutputManager outputManager; private final OutputManager outputManager;
private final List<File> selectedSuites = new ArrayList<File>();
public SeleniumRunner(SeleniumRunnerParameters parms) { public SeleniumRunner(SeleniumRunnerParameters parms) {
this.parms = parms; this.parms = parms;
this.listener = parms.getListener(); this.listener = parms.getListener();
@ -36,6 +38,28 @@ public class SeleniumRunner {
} }
/**
* 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);
}
}
}
}
/** /**
* Set up the run, run the selected suites, summarize the output, and clean * Set up the run, run the selected suites, summarize the output, and clean
* up afterwards. * up afterwards.
@ -68,7 +92,7 @@ public class SeleniumRunner {
} }
public void runSelectedSuites() { public void runSelectedSuites() {
for (File suiteDir : parms.getSelectedSuites()) { for (File suiteDir : this.selectedSuites) {
listener.suiteStarted(suiteDir); listener.suiteStarted(suiteDir);
try { try {
if (parms.isCleanModel()) { 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<File> suites = new ArrayList<File>();
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) { private static void usage(String message) {
System.out.println(message); System.out.println(message);
System.out.println("Usage is: SeleniumRunner <parameters_file> " System.out.println("Usage is: SeleniumRunner <parameters_file> "
@ -137,23 +143,31 @@ public class SeleniumRunner {
usage("Can't read properties file: " + e.getMessage()); usage("Can't read properties file: " + e.getMessage());
} }
if (interactive) { try {
// TODO hook up the GUI. if (interactive) {
throw new RuntimeException("interactive mode not implemented."); // TODO hook up the GUI.
} else { throw new RuntimeException("interactive mode not implemented.");
File logFile = new File(parms.getOutputDirectory(), LOGFILE_NAME); } else {
System.out.println("Log file is '" + logFile.getPath() + "'"); File logFile = new File(parms.getOutputDirectory(),
LOGFILE_NAME);
System.out.println("Log file is '" + logFile.getPath() + "'");
// Run all of the suites. // Run all of the suites.
// For each suite, clean the model and the upload area. // For each suite, clean the model and the upload area.
selectAllSuites(parms); parms.setCleanModel(true);
parms.setCleanModel(true); parms.setCleanUploads(true);
parms.setCleanUploads(true);
System.out.println(parms); System.out.println(parms);
SeleniumRunner runner = new SeleniumRunner(parms); SeleniumRunner runner = new SeleniumRunner(parms);
success = runner.run(); 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.out.println("Exiting SeleniumRunner");
System.exit(success ? 0 : -1); System.exit(success ? 0 : -1);

View file

@ -49,7 +49,6 @@ public class SeleniumRunnerParameters {
private final ModelCleanerProperties modelCleanerProperties; private final ModelCleanerProperties modelCleanerProperties;
private final IgnoredTests ignoredTests; private final IgnoredTests ignoredTests;
private Collection<File> selectedSuites = Collections.emptySet();
private boolean cleanModel = true; private boolean cleanModel = true;
private boolean cleanUploads = true; private boolean cleanUploads = true;
@ -377,14 +376,6 @@ public class SeleniumRunnerParameters {
return ignoredTests; return ignoredTests;
} }
public void setSelectedSuites(Collection<File> selectedSuites) {
this.selectedSuites = selectedSuites;
}
public Collection<File> getSelectedSuites() {
return new ArrayList<File>(this.selectedSuites);
}
public boolean isCleanModel() { public boolean isCleanModel() {
return cleanModel; return cleanModel;
} }
@ -411,19 +402,10 @@ public class SeleniumRunnerParameters {
+ "\n outputDirectory: " + outputDirectory + "\n outputDirectory: " + outputDirectory
+ "\n suiteParentDirectories: " + suiteParentDirectories + "\n suiteParentDirectories: " + suiteParentDirectories
+ "\n modelCleanerProperties: " + modelCleanerProperties + "\n modelCleanerProperties: " + modelCleanerProperties
+ "\n" + ignoredTests + "\n\n selectedSuites: " + "\n" + ignoredTests + "\n cleanModel: " + cleanModel
+ showSelectedSuites() + "\n cleanModel: " + cleanModel
+ "\n cleanUploads: " + cleanUploads; + "\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 * Look inside this parent directory and find any suite directories. You can
* recognize a suite directory because it contains a file named Suite.html. * recognize a suite directory because it contains a file named Suite.html.

View file

@ -11,7 +11,7 @@ import java.util.List;
import edu.cornell.mannlib.vitro.utilities.testrunner.FileHelper; import edu.cornell.mannlib.vitro.utilities.testrunner.FileHelper;
import edu.cornell.mannlib.vitro.utilities.testrunner.listener.Listener; import edu.cornell.mannlib.vitro.utilities.testrunner.listener.Listener;
public class OutputDataModel implements Listener { public class OutputDataListener implements Listener {
private boolean runCompleted; private boolean runCompleted;
private long startTime; private long startTime;
private long endTime; private long endTime;
@ -24,6 +24,7 @@ public class OutputDataModel implements Listener {
@Override @Override
public void runStarted() { public void runStarted() {
System.out.println("run started");
startTime = new Date().getTime(); startTime = new Date().getTime();
} }

View file

@ -19,12 +19,12 @@ import edu.cornell.mannlib.vitro.utilities.testrunner.Status;
*/ */
public class OutputManager { public class OutputManager {
private final SeleniumRunnerParameters parms; private final SeleniumRunnerParameters parms;
private final OutputDataModel dataModel; private final OutputDataListener dataListener;
public OutputManager(SeleniumRunnerParameters parms) { public OutputManager(SeleniumRunnerParameters parms) {
this.parms = parms; this.parms = parms;
this.dataModel = new OutputDataModel(); this.dataListener = new OutputDataListener();
parms.addListener(this.dataModel); parms.addListener(this.dataListener);
} }
/** /**
@ -76,7 +76,7 @@ public class OutputManager {
} }
OutputSummaryFormatter formatter = new OutputSummaryFormatter(parms); OutputSummaryFormatter formatter = new OutputSummaryFormatter(parms);
formatter.format(log, suites, dataModel); formatter.format(log, suites, dataListener);
return formatter.figureOverallStatus(log, suites); return formatter.figureOverallStatus(log, suites);
} }

View file

@ -30,9 +30,9 @@ public class OutputSummaryFormatter {
"yyyy-MM-dd HH:mm:ss"); "yyyy-MM-dd HH:mm:ss");
private final SeleniumRunnerParameters parms; private final SeleniumRunnerParameters parms;
private LogStats log; private LogStats logStats;
private Map<String, SuiteResults> suites; private Map<String, SuiteResults> suites;
private OutputDataModel dataModel; private OutputDataListener dataListener;
private Status runStatus; private Status runStatus;
private List<TestResults> allTests = new ArrayList<TestResults>(); private List<TestResults> allTests = new ArrayList<TestResults>();
private int passingTestCount; private int passingTestCount;
@ -51,12 +51,12 @@ public class OutputSummaryFormatter {
* Create a summary HTML file from the info contained in this log file and * Create a summary HTML file from the info contained in this log file and
* these suite outputs. * these suite outputs.
*/ */
public void format(LogStats log, Map<String, SuiteResults> suites, public void format(LogStats logStats, Map<String, SuiteResults> suites,
OutputDataModel dataModel) { OutputDataListener dataListener) {
this.log = log; this.logStats = logStats;
this.suites = suites; this.suites = suites;
this.dataModel = dataModel; this.dataListener = dataListener;
this.runStatus = figureOverallStatus(log, suites); this.runStatus = figureOverallStatus(logStats, suites);
tallyTests(); tallyTests();
tallySuites(); tallySuites();
@ -148,9 +148,9 @@ public class OutputSummaryFormatter {
} }
private void tallySuites() { private void tallySuites() {
List<String> ignoredSuiteNames = dataModel.getIgnoredSuiteNames(); List<String> ignoredSuiteNames = dataListener.getIgnoredSuiteNames();
for (String name : dataModel.getSuiteNames()) { for (String name : dataListener.getSuiteNames()) {
if (ignoredSuiteNames.contains(name)) { if (ignoredSuiteNames.contains(name)) {
this.ignoredSuites.add(name); this.ignoredSuites.add(name);
} else if (!suites.containsKey(name)) { } else if (!suites.containsKey(name)) {
@ -167,7 +167,7 @@ public class OutputSummaryFormatter {
} }
private void writeHeader(PrintWriter writer) { private void writeHeader(PrintWriter writer) {
String startString = formatDateTime(dataModel.getStartTime()); String startString = formatDateTime(dataListener.getStartTime());
writer.println("<html>"); writer.println("<html>");
writer.println("<head>"); writer.println("<head>");
@ -192,9 +192,9 @@ public class OutputSummaryFormatter {
String ignoreClass = this.ignoredTests.isEmpty() ? "" : Status.WARN String ignoreClass = this.ignoredTests.isEmpty() ? "" : Status.WARN
.getHtmlClass(); .getHtmlClass();
String start = formatDateTime(dataModel.getStartTime()); String start = formatDateTime(dataListener.getStartTime());
String end = formatDateTime(dataModel.getEndTime()); String end = formatDateTime(dataListener.getEndTime());
String elapsed = formatElapsedTime(dataModel.getElapsedTime()); String elapsed = formatElapsedTime(dataListener.getElapsedTime());
writer.println(" <div class=\"section\">Summary</div>"); writer.println(" <div class=\"section\">Summary</div>");
writer.println(); writer.println();
@ -213,8 +213,13 @@ public class OutputSummaryFormatter {
writer.println(" <td>"); writer.println(" <td>");
writer.println(" <table cellspacing=\"0\">"); writer.println(" <table cellspacing=\"0\">");
writer.println(" <tr><th>&nbsp;</th><th>Suites</th><th>Tests</th>"); writer.println(" <tr><th>&nbsp;</th><th>Suites</th><th>Tests</th>");
writer.println(" <tr><th>Total</th><td>" + "</td><td>" writer.println(" <tr><th>Total</th><td>"
+ "</td>"); + (this.passingSuites.size() + this.failingSuites.size()
+ this.ignoredSuites.size() + this.remainingSuites
.size())
+ "</td><td>"
+ (this.passingTestCount + this.failingTests.size() + this.ignoredTests
.size()) + "</td>");
writer.println(" <tr class=\"" + passClass writer.println(" <tr class=\"" + passClass
+ "\"><th>Passed</th><td>" + this.passingSuites.size() + "\"><th>Passed</th><td>" + this.passingSuites.size()
+ "</td><td>" + this.passingTestCount + "</td>"); + "</td><td>" + this.passingTestCount + "</td>");
@ -243,14 +248,14 @@ public class OutputSummaryFormatter {
writer.println(); writer.println();
writer.println(" <table cellspacing=\"0\">"); writer.println(" <table cellspacing=\"0\">");
if ((!log.hasErrors()) && (!log.hasWarnings())) { if ((!logStats.hasErrors()) && (!logStats.hasWarnings())) {
writer.println(" <tr><td colspan=\"2\">No errors or warnings</td></tr>"); writer.println(" <tr><td colspan=\"2\">No errors or warnings</td></tr>");
} else { } else {
for (String e : log.getErrors()) { for (String e : logStats.getErrors()) {
writer.println(" <tr class=\"" + errorClass writer.println(" <tr class=\"" + errorClass
+ "\"><td>ERROR</td><td>" + e + "</td></tr>"); + "\"><td>ERROR</td><td>" + e + "</td></tr>");
} }
for (String w : log.getWarnings()) { for (String w : logStats.getWarnings()) {
writer.println(" <tr class=\"" + warnClass writer.println(" <tr class=\"" + warnClass
+ "\"><td>ERROR</td><td>" + w + "</td></tr>"); + "\"><td>ERROR</td><td>" + w + "</td></tr>");
} }