aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/batchtools/headless/src/main/java/com/galois/fiveui/BatchRunner.java41
-rw-r--r--src/batchtools/headless/src/test/java/com/galois/fiveui/ReporterTest.java32
-rw-r--r--src/batchtools/rsTester/src/main/java/com/galois/fiveui/Result.java16
3 files changed, 54 insertions, 35 deletions
diff --git a/src/batchtools/headless/src/main/java/com/galois/fiveui/BatchRunner.java b/src/batchtools/headless/src/main/java/com/galois/fiveui/BatchRunner.java
index 934620a..4adbd67 100644
--- a/src/batchtools/headless/src/main/java/com/galois/fiveui/BatchRunner.java
+++ b/src/batchtools/headless/src/main/java/com/galois/fiveui/BatchRunner.java
@@ -123,7 +123,7 @@ public class BatchRunner {
} catch (Exception e) {
String errStr = "failed to complete webcrawl of" + seedUrl + "\n";
errStr += e.toString();
- builder.add(new Result(ResType.Exception, _driver, errStr, seedUrl,
+ builder.add(new Result(ResType.Exception, _driver, errStr, null, seedUrl,
rs.getName(), rs.getDescription(), ""));
logger.error(errStr);
continue;
@@ -148,7 +148,7 @@ public class BatchRunner {
} catch (Exception e) {
String errStr = "exception during runRule: " + rs.getName() + "\n";
errStr += e.toString();
- builder.add(new Result(ResType.Exception, _driver, errStr, url,
+ builder.add(new Result(ResType.Exception, _driver, errStr, null, url,
rs.getName(), rs.getDescription(), ""));
logger.error(errStr);
}
@@ -192,33 +192,36 @@ public class BatchRunner {
if (res.getClass() == String.class) {
// we received an error via the expected mechanisms:
logger.error("exception running rule: " + res);
- builder.add(new Result(ResType.Exception, _driver, "", _driver.getCurrentUrl(),
+ builder.add(new Result(ResType.Exception, _driver, "", null, _driver.getCurrentUrl(),
ruleSet.getName(), ruleSet.getDescription(), ""));
return builder.build();
} else {
try {
@SuppressWarnings({ "unchecked", "rawtypes" })
- List<Map<String, Map<String, String>>> results = (List) res;
+ List<Map<String, Map<String, Object>>> results = (List) res;
if (0 == results.size()) {
builder.add(new Result(ResType.Pass, _driver,
- "passed " + ruleSet.getRules().size() + " tests",
+ "passed " + ruleSet.getRules().size() + " tests", null,
_driver.getCurrentUrl(), ruleSet.getName(), ruleSet.getDescription(), ""));
}
- for (Map<String, Map<String, String>> r : results) {
- Map<String, String> problem = r.get("payload");
+ for (Map<String, Map<String, Object>> r : results) {
+ Map<String, Object> problem = r.get("payload");
// TODO decide what to extract from problem object and what
// to do with it.
//
// Probably we should just pass along the Map<String, String>
// and let the reporter deal with it.
- String ruleName = problem.get("name");
- String ruleDescr = problem.get("descr");
- String problemAsHTML = "Rule Name: " + ruleName + " / "
+ String ruleName = (String) problem.get("name");
+ String ruleDescr = (String) problem.get("descr");
+ String msg = (String) (problem.get("msg") != null ? problem.get("msg") : "");
+ String xpath = (String) problem.get("xpath");
+ ResType severity = mapSeverity((Long) problem.get("severity"));
+ String problemAsHTML = "Rule Name: " + ruleName + " / "
+ "Rule Desc: " + ruleDescr + " / "
- + "XPath: " + problem.get("xpath");
- builder.add(new Result(ResType.Error, _driver, "",
+ + "XPath: " + (String) problem.get("xpath");
+ builder.add(new Result(severity, _driver, msg, xpath,
_driver.getCurrentUrl(),
ruleName, ruleDescr,
problemAsHTML));
@@ -228,7 +231,7 @@ public class BatchRunner {
// An unexpected error happened:
logger.error("unexpected object returned: " + e.toString());
builder.add(new Result(ResType.Exception, _driver,
- "Unexpected object returned: " + res + ", state: " + state,
+ "Unexpected object returned: " + res + ", state: " + state, null,
_driver.getCurrentUrl(),
ruleSet.getName(),
ruleSet.getDescription(),
@@ -302,4 +305,16 @@ public class BatchRunner {
private void loadURL(String url) {
_driver.get(url);
}
+
+ private static ResType mapSeverity(long sev) {
+ ResType res;
+
+ switch ((int) sev) {
+ case 0: res = ResType.Error; break;
+ case 1: res = ResType.Warning; break;
+ default: res = ResType.Error; break;
+ }
+
+ return res;
+ }
}
diff --git a/src/batchtools/headless/src/test/java/com/galois/fiveui/ReporterTest.java b/src/batchtools/headless/src/test/java/com/galois/fiveui/ReporterTest.java
index b30d331..9e6a4af 100644
--- a/src/batchtools/headless/src/test/java/com/galois/fiveui/ReporterTest.java
+++ b/src/batchtools/headless/src/test/java/com/galois/fiveui/ReporterTest.java
@@ -35,9 +35,9 @@ public class ReporterTest {
@Test
public void testConstructor() {
ImmutableList<Result> r = ImmutableList.of(
- new Result(ResType.Pass, (WebDriver) null, "OK", "http://nonexistant", "test rule 1", "a desc or test rule 1", "problem!"),
- new Result(ResType.Pass, (WebDriver) null, "OK", "http://intransigent", "test rule 1", "a desc or test rule 1", "problem!"),
- new Result(ResType.Error, (WebDriver) null, "ERROR", "http://nonexistant", "test rule 2", "a desc or test rule 1", "problem!"));
+ new Result(ResType.Pass, (WebDriver) null, "OK", null, "http://nonexistant", "test rule 1", "a desc or test rule 1", "problem!"),
+ new Result(ResType.Pass, (WebDriver) null, "OK", null, "http://intransigent", "test rule 1", "a desc or test rule 1", "problem!"),
+ new Result(ResType.Error, (WebDriver) null, "ERROR", null, "http://nonexistant", "test rule 2", "a desc or test rule 1", "problem!"));
Reporter kermit = new Reporter(r);
System.out.println("Summary page size: " + kermit.getSummary().length() + " bytes");
System.out.println("Summary page size: " + kermit.getByURL().length() + " bytes");
@@ -53,19 +53,19 @@ public class ReporterTest {
//File tmpPath = new File("/tmp/");
System.out.println("Writing test summary page to: " + tmpPath.toString() + File.separator);
ImmutableList<Result> r = ImmutableList.of(
- new Result(ResType.Pass, (WebDriver) null, "OK", "http://nonexistant", "test rule 1", "a desc or test rule 1", "problem!"),
- new Result(ResType.Pass, (WebDriver) null, "OK", "http://intransigent", "test rule 1", "a desc or test rule 1", "problem!"),
- new Result(ResType.Pass, (WebDriver) null, "OK", "http://intransigent", "test rule 3", "a desc or test rule 1", "problem!"),
- new Result(ResType.Pass, (WebDriver) null, "OK", "http://intransigent", "test rule 4", "a desc or test rule 1", "problem!"),
- new Result(ResType.Pass, (WebDriver) null, "OK", "http://intransigent", "test rule 5", "a desc or test rule 1", "problem!"),
- new Result(ResType.Pass, (WebDriver) null, "OK", "http://foo.com", "test rule 1", "a desc or test rule 1", "problem!"),
- new Result(ResType.Error, (WebDriver) null, "ERROR", "http://foo.com", "test rule 5", "a desc or test rule 1", "problem!"),
- new Result(ResType.Error, (WebDriver) null, "ERROR", "http://foo.com", "test rule 2", "a desc or test rule 1", "problem!"),
- new Result(ResType.Error, (WebDriver) null, "ERROR", "http://bar.com", "test rule 3", "a desc or test rule 1", "problem!"),
- new Result(ResType.Error, (WebDriver) null, "ERROR", "http://bar.com", "test rule 3", "a desc or test rule 1", "problem!"), // multiple fails for same url+rule combo
- new Result(ResType.Error, (WebDriver) null, "ERROR", "http://bar.com", "test rule 3", "a desc or test rule 1", "problem!"),
- new Result(ResType.Error, (WebDriver) null, "ERROR", "http://bar.com", "test rule 3", "a desc or test rule 1", "problem!"),
- new Result(ResType.Error, (WebDriver) null, "ERROR", "http://nonexistant", "test rule 2", "a desc or test rule 1", "problem!"));
+ new Result(ResType.Pass, (WebDriver) null, "OK", null, "http://nonexistant", "test rule 1", "a desc or test rule 1", "problem!"),
+ new Result(ResType.Pass, (WebDriver) null, "OK", null, "http://intransigent", "test rule 1", "a desc or test rule 1", "problem!"),
+ new Result(ResType.Pass, (WebDriver) null, "OK", null, "http://intransigent", "test rule 3", "a desc or test rule 1", "problem!"),
+ new Result(ResType.Pass, (WebDriver) null, "OK", null, "http://intransigent", "test rule 4", "a desc or test rule 1", "problem!"),
+ new Result(ResType.Pass, (WebDriver) null, "OK", null, "http://intransigent", "test rule 5", "a desc or test rule 1", "problem!"),
+ new Result(ResType.Pass, (WebDriver) null, "OK", null, "http://foo.com", "test rule 1", "a desc or test rule 1", "problem!"),
+ new Result(ResType.Error, (WebDriver) null, "ERROR", null, "http://foo.com", "test rule 5", "a desc or test rule 1", "problem!"),
+ new Result(ResType.Error, (WebDriver) null, "ERROR", null, "http://foo.com", "test rule 2", "a desc or test rule 1", "problem!"),
+ new Result(ResType.Error, (WebDriver) null, "ERROR", null, "http://bar.com", "test rule 3", "a desc or test rule 1", "problem!"),
+ new Result(ResType.Error, (WebDriver) null, "ERROR", null, "http://bar.com", "test rule 3", "a desc or test rule 1", "problem!"), // multiple fails for same url+rule combo
+ new Result(ResType.Error, (WebDriver) null, "ERROR", null, "http://bar.com", "test rule 3", "a desc or test rule 1", "problem!"),
+ new Result(ResType.Error, (WebDriver) null, "ERROR", null, "http://bar.com", "test rule 3", "a desc or test rule 1", "problem!"),
+ new Result(ResType.Error, (WebDriver) null, "ERROR", null, "http://nonexistant", "test rule 2", "a desc or test rule 1", "problem!"));
Reporter kermit = new Reporter(r);
kermit.writeReportsToDir(tmpPath.toString());
assertTrue("made it!", true);
diff --git a/src/batchtools/rsTester/src/main/java/com/galois/fiveui/Result.java b/src/batchtools/rsTester/src/main/java/com/galois/fiveui/Result.java
index 6c83c7b..e6f2253 100644
--- a/src/batchtools/rsTester/src/main/java/com/galois/fiveui/Result.java
+++ b/src/batchtools/rsTester/src/main/java/com/galois/fiveui/Result.java
@@ -19,6 +19,9 @@ package com.galois.fiveui;
import org.openqa.selenium.WebDriver;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
/**
* A Result object encapsulates the result of running a rule set check on a URL
* with a WebDriver. Results are organized into four categories:
@@ -36,8 +39,9 @@ public class Result {
private transient WebDriver _driver;
private String _url;
private String _ruleName;
- private String _ruleDesc;
- private String _prob;
+ private String _ruleDesc;
+ private String _prob;
+ private String _xpath = null;
/**
* Construct a new result of one of the four types.
@@ -50,11 +54,12 @@ public class Result {
* @param ruleDesc rule description
* @param prob problem description
*/
- public Result(ResType type, WebDriver driver, String msg, String url,
- String ruleName, String ruleDesc, String prob) {
+ public Result(ResType type, WebDriver driver, String msg, String xpath,
+ String url, String ruleName, String ruleDesc, String prob) {
super();
_type = type;
_msg = msg;
+ _xpath = xpath;
_driver = driver;
_url = url;
_ruleName = ruleName;
@@ -207,7 +212,6 @@ public class Result {
}
public String getXpath() {
- // TODO Auto-generated method stub
- return null;
+ return _xpath;
}
}