Parse all CTS result xml failure elements
bug:30222127
Change-Id: Iad37865982c46136a950808951eb16f8c86422d4
diff --git a/common/util/src/com/android/compatibility/common/util/ResultHandler.java b/common/util/src/com/android/compatibility/common/util/ResultHandler.java
index a6ff30c..82c98da 100644
--- a/common/util/src/com/android/compatibility/common/util/ResultHandler.java
+++ b/common/util/src/com/android/compatibility/common/util/ResultHandler.java
@@ -165,7 +165,7 @@
String result = parser.getAttributeValue(NS, RESULT_ATTR);
test.setResultStatus(TestStatus.getStatus(result));
test.setRetry(true);
- if (parser.nextTag() == XmlPullParser.START_TAG) {
+ while (parser.nextTag() == XmlPullParser.START_TAG) {
if (parser.getName().equals(FAILURE_TAG)) {
test.setMessage(parser.getAttributeValue(NS, MESSAGE_ATTR));
if (parser.nextTag() == XmlPullParser.START_TAG) {
@@ -175,19 +175,17 @@
parser.nextTag();
}
parser.require(XmlPullParser.END_TAG, NS, FAILURE_TAG);
- parser.nextTag();
} else if (parser.getName().equals(BUGREPORT_TAG)) {
test.setBugReport(parser.nextText());
- parser.nextTag();
+ parser.require(XmlPullParser.END_TAG, NS, BUGREPORT_TAG);
} else if (parser.getName().equals(LOGCAT_TAG)) {
test.setLog(parser.nextText());
- parser.nextTag();
+ parser.require(XmlPullParser.END_TAG, NS, LOGCAT_TAG);
} else if (parser.getName().equals(SCREENSHOT_TAG)) {
test.setScreenshot(parser.nextText());
- parser.nextTag();
+ parser.require(XmlPullParser.END_TAG, NS, SCREENSHOT_TAG);
} else {
test.setReportLog(ReportLog.parse(parser));
- parser.nextTag();
}
}
parser.require(XmlPullParser.END_TAG, NS, TEST_TAG);
diff --git a/common/util/tests/src/com/android/compatibility/common/util/ResultHandlerTest.java b/common/util/tests/src/com/android/compatibility/common/util/ResultHandlerTest.java
index c1ef361..a3b2670 100644
--- a/common/util/tests/src/com/android/compatibility/common/util/ResultHandlerTest.java
+++ b/common/util/tests/src/com/android/compatibility/common/util/ResultHandlerTest.java
@@ -74,6 +74,9 @@
private static final String MESSAGE = "Something small is not alright";
private static final String STACK_TRACE = "Something small is not alright\n " +
"at four.big.insects.Marley.sing(Marley.java:10)";
+ private static final String BUG_REPORT = "https://cnsviewer.corp.google.com/cns/bugreport.txt";
+ private static final String LOGCAT = "https://cnsviewer.corp.google.com/cns/logcat.gz";
+ private static final String SCREENSHOT = "https://cnsviewer.corp.google.com/screenshot.png";
private static final long START_MS = 1431586801000L;
private static final long END_MS = 1431673199000L;
private static final String START_DISPLAY = "Fri Aug 20 15:13:03 PDT 2010";
@@ -118,6 +121,9 @@
" <Failure message=\"%s\">\n" +
" <StackTrace>%s</StackTrace>\n" +
" </Failure>\n" +
+ " <BugReport>%s</BugReport>\n" +
+ " <Logcat>%s</Logcat>\n" +
+ " <Screenshot>%s</Screenshot>\n" +
" </Test>\n";
private static final String XML_TEST_RESULT =
" <Test result=\"pass\" name=\"%s\">\n" +
@@ -165,6 +171,9 @@
moduleBTest3.setResultStatus(TestStatus.FAIL);
moduleBTest3.setMessage(MESSAGE);
moduleBTest3.setStackTrace(STACK_TRACE);
+ moduleBTest3.setBugReport(BUG_REPORT);
+ moduleBTest3.setLog(LOGCAT);
+ moduleBTest3.setScreenshot(SCREENSHOT);
ITestResult moduleBTest4 = moduleBCase.getOrCreateResult(METHOD_4);
moduleBTest4.setResultStatus(TestStatus.PASS);
ReportLog report = new ReportLog();
@@ -197,7 +206,8 @@
String moduleATest = String.format(XML_TEST_PASS, METHOD_1);
String moduleACases = String.format(XML_CASE, CLASS_A, moduleATest);
String moduleA = String.format(XML_MODULE, NAME_A, ABI, DEVICE_A, moduleACases);
- String moduleBTest3 = String.format(XML_TEST_FAIL, METHOD_3, MESSAGE, STACK_TRACE);
+ String moduleBTest3 = String.format(XML_TEST_FAIL, METHOD_3, MESSAGE, STACK_TRACE,
+ BUG_REPORT, LOGCAT, SCREENSHOT);
String moduleBTest4 = String.format(XML_TEST_RESULT, METHOD_4,
SUMMARY_SOURCE, SUMMARY_MESSAGE, ResultType.HIGHER_BETTER.toReportString(),
ResultUnit.SCORE.toReportString(), Double.toString(SUMMARY_VALUE),
@@ -289,9 +299,9 @@
ITestResult moduleBTest3 = moduleBResults.get(0);
assertEquals("Incorrect name", METHOD_3, moduleBTest3.getName());
assertEquals("Incorrect result", TestStatus.FAIL, moduleBTest3.getResultStatus());
- assertNull("Unexpected bugreport", moduleBTest3.getBugReport());
- assertNull("Unexpected log", moduleBTest3.getLog());
- assertNull("Unexpected screenshot", moduleBTest3.getScreenshot());
+ assertEquals("Incorrect bugreport", BUG_REPORT, moduleBTest3.getBugReport());
+ assertEquals("Incorrect log", LOGCAT, moduleBTest3.getLog());
+ assertEquals("Incorrect screenshot", SCREENSHOT, moduleBTest3.getScreenshot());
assertEquals("Incorrect message", MESSAGE, moduleBTest3.getMessage());
assertEquals("Incorrect stack trace", STACK_TRACE, moduleBTest3.getStackTrace());
assertNull("Unexpected report", moduleBTest3.getReportLog());