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 OutputManager outputManager;
private final List<File> selectedSuites = new ArrayList<File>();
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<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) {
System.out.println(message);
System.out.println("Usage is: SeleniumRunner <parameters_file> "
@ -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);

View file

@ -49,7 +49,6 @@ public class SeleniumRunnerParameters {
private final ModelCleanerProperties modelCleanerProperties;
private final IgnoredTests ignoredTests;
private Collection<File> selectedSuites = Collections.emptySet();
private boolean cleanModel = true;
private boolean cleanUploads = true;
@ -377,14 +376,6 @@ public class SeleniumRunnerParameters {
return ignoredTests;
}
public void setSelectedSuites(Collection<File> selectedSuites) {
this.selectedSuites = selectedSuites;
}
public Collection<File> getSelectedSuites() {
return new ArrayList<File>(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.

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

View file

@ -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);
}

View file

@ -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<String, SuiteResults> suites;
private OutputDataModel dataModel;
private OutputDataListener dataListener;
private Status runStatus;
private List<TestResults> allTests = new ArrayList<TestResults>();
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<String, SuiteResults> suites,
OutputDataModel dataModel) {
this.log = log;
public void format(LogStats logStats, Map<String, SuiteResults> 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<String> ignoredSuiteNames = dataModel.getIgnoredSuiteNames();
List<String> 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("<html>");
writer.println("<head>");
@ -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(" <div class=\"section\">Summary</div>");
writer.println();
@ -213,8 +213,13 @@ public class OutputSummaryFormatter {
writer.println(" <td>");
writer.println(" <table cellspacing=\"0\">");
writer.println(" <tr><th>&nbsp;</th><th>Suites</th><th>Tests</th>");
writer.println(" <tr><th>Total</th><td>" + "</td><td>"
+ "</td>");
writer.println(" <tr><th>Total</th><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
+ "\"><th>Passed</th><td>" + this.passingSuites.size()
+ "</td><td>" + this.passingTestCount + "</td>");
@ -243,14 +248,14 @@ public class OutputSummaryFormatter {
writer.println();
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>");
} else {
for (String e : log.getErrors()) {
for (String e : logStats.getErrors()) {
writer.println(" <tr class=\"" + errorClass
+ "\"><td>ERROR</td><td>" + e + "</td></tr>");
}
for (String w : log.getWarnings()) {
for (String w : logStats.getWarnings()) {
writer.println(" <tr class=\"" + warnClass
+ "\"><td>ERROR</td><td>" + w + "</td></tr>");
}