NIHVIVO-222 Tweak the data listener.
This commit is contained in:
parent
028f4c038f
commit
f09fcee448
5 changed files with 78 additions and 76 deletions
|
@ -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);
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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> </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>");
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue