morgand 01/09/07 10:09:15
Modified: latka/conf report.dtd
latka/doc TestLatka.xml
latka/resource org.apache.commons.latka.report.xsl
latka/src/java/org/apache/commons/latka
AbstractReporter.java Latka.java XMLReporter.java
latka/src/java/org/apache/commons/latka/event
LatkaEventInfo.java
latka/src/java/org/apache/commons/latka/http
RequestImpl.java Response.java ResponseImpl.java
latka/src/java/org/apache/commons/latka/xml
RequestHandler.java
Log:
added ability to review failed Responses
Revision Changes Path
1.6 +1 -0 jakarta-commons/latka/conf/report.dtd
Index: report.dtd
===================================================================
RCS file: /home/cvs/jakarta-commons/latka/conf/report.dtd,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- report.dtd 2001/08/21 17:08:19 1.5
+++ report.dtd 2001/09/07 17:09:14 1.6
@@ -13,6 +13,7 @@
<!ELEMENT requestSuccess EMPTY>
<!ELEMENT requestFailure (label)>
+<!ATTLIST requestFailure responseId CDATA #REQUIRED>
<!ELEMENT requestSkipped EMPTY>
1.4 +7 -0 jakarta-commons/latka/doc/TestLatka.xml
Index: TestLatka.xml
===================================================================
RCS file: /home/cvs/jakarta-commons/latka/doc/TestLatka.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- TestLatka.xml 2001/08/21 21:44:30 1.3
+++ TestLatka.xml 2001/09/07 17:09:14 1.4
@@ -10,6 +10,7 @@
<!-- first request should not set a referer -->
<request path="/latka-test/snoop/RequestHeaders.jsp" label="no referer 1">
<validate>
+ <statusCode code="400"/>
<regexp pattern="referer" cond="false"/>
</validate>
</request>
@@ -23,6 +24,12 @@
</request>
</session>
+
+ <request path="/latka-webapp/superman2.jpg" label="image2">
+ <validate>
+ <byteLength min="14000" max="14000"/>
+ </validate>
+ </request>
<!-- no referer for requests outside of a session -->
<request path="/latka-test/snoop/RequestHeaders.jsp" label="no referer 2">
1.6 +1 -1
jakarta-commons/latka/resource/org.apache.commons.latka.report.xsl
Index: org.apache.commons.latka.report.xsl
===================================================================
RCS file:
/home/cvs/jakarta-commons/latka/resource/org.apache.commons.latka.report.xsl,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- org.apache.commons.latka.report.xsl 2001/08/21 15:55:32 1.5
+++ org.apache.commons.latka.report.xsl 2001/09/07 17:09:15 1.6
@@ -72,7 +72,7 @@
<xsl:param name="timing"/>
<xsl:text> REQUEST ERROR </xsl:text>
<xsl:value-of select="$timing"/>
- <xsl:text> </xsl:text>
+ <xsl:text>
 </xsl:text>
<xsl:apply-templates/>
</xsl:template>
1.8 +11 -2
jakarta-commons/latka/src/java/org/apache/commons/latka/AbstractReporter.java
Index: AbstractReporter.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/latka/src/java/org/apache/commons/latka/AbstractReporter.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- AbstractReporter.java 2001/09/03 07:02:04 1.7
+++ AbstractReporter.java 2001/09/07 17:09:15 1.8
@@ -65,6 +65,8 @@
import org.apache.commons.latka.http.Session;
import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
import org.apache.log4j.Category;
@@ -82,7 +84,9 @@
protected boolean _suiteSucceeded = true;
- protected static final Category log =
+ protected List _failedResponses = new LinkedList();
+
+ protected static final Category _log =
Category.getInstance(AbstractReporter.class);
public void requestSucceeded(RequestEvent event) {
@@ -91,6 +95,7 @@
public void requestFailed(RequestEvent event) {
recordSuccess(event, false);
+ _failedResponses.add(event.getResponse());
}
public void requestSkipped(RequestEvent event) {
@@ -106,7 +111,7 @@
_suiteSucceeded = false;
_requestSucceeded.put(event.getRequest(),new Boolean(bool));
_sessionSucceeded.put(event.getSession(),new Boolean(bool));
- log.info("request failed");
+ _log.info("request failed");
}
}
@@ -134,6 +139,10 @@
public boolean didSuiteSucceed() {
return _suiteSucceeded;
+ }
+
+ public List getFailedResponses() {
+ return _failedResponses;
}
}
1.18 +17 -3
jakarta-commons/latka/src/java/org/apache/commons/latka/Latka.java
Index: Latka.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/latka/src/java/org/apache/commons/latka/Latka.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- Latka.java 2001/09/06 15:19:25 1.17
+++ Latka.java 2001/09/07 17:09:15 1.18
@@ -82,6 +82,7 @@
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.parsers.SAXParser;
+import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
@@ -110,6 +111,8 @@
protected boolean _isValidating = true;
+ protected URL _reportStylesheetUrl = null;
+
protected static Category log =
Category.getInstance(Latka.class.getName());
@@ -190,6 +193,10 @@
_isValidating = isValidating;
}
+ public void setReportStylesheet(URL url) {
+ _reportStylesheetUrl = url;
+ }
+
/**
* Use this method to log XML generated by the
* XMLReporter class.
@@ -230,11 +237,18 @@
try {
StringWriter output = new StringWriter();
+
+ Source xslSource = null;
- ClassLoader loader = Thread.currentThread().getContextClassLoader();
+ if (_reportStylesheetUrl == null) {
+ ClassLoader loader = Thread.currentThread().getContextClassLoader();
+
+ xslSource =
+ new
StreamSource(loader.getResourceAsStream("org.apache.commons.latka.report.xsl"));
+ } else {
+ xslSource = new StreamSource(_reportStylesheetUrl.toString());
+ }
- StreamSource xslSource =
- new
StreamSource(loader.getResourceAsStream("org.apache.commons.latka.report.xsl"));
Transformer transformer =
TransformerFactory.newInstance().newTransformer(xslSource);
1.11 +1 -0
jakarta-commons/latka/src/java/org/apache/commons/latka/XMLReporter.java
Index: XMLReporter.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/latka/src/java/org/apache/commons/latka/XMLReporter.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- XMLReporter.java 2001/09/04 05:44:51 1.10
+++ XMLReporter.java 2001/09/07 17:09:15 1.11
@@ -185,6 +185,7 @@
Element requestElement = createRequestElement(event);
_rootElement.addContent(requestElement);
Element requestFailure = new Element("requestFailure");
+ requestFailure.addAttribute("responseId",event.getResponse().toString());
requestElement.addContent(requestFailure);
StringBuffer buf = new StringBuffer();
1.6 +10 -0
jakarta-commons/latka/src/java/org/apache/commons/latka/event/LatkaEventInfo.java
Index: LatkaEventInfo.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/latka/src/java/org/apache/commons/latka/event/LatkaEventInfo.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- LatkaEventInfo.java 2001/09/03 07:02:04 1.5
+++ LatkaEventInfo.java 2001/09/07 17:09:15 1.6
@@ -59,6 +59,8 @@
package org.apache.commons.latka.event;
+import java.util.List;
+
import org.apache.commons.latka.http.Request;
import org.apache.commons.latka.http.Session;
@@ -99,4 +101,12 @@
* @return true if all Requests have succeeded
*/
public boolean didSuiteSucceed();
+
+ /**
+ * Returns a List of all responses that failed
+ * validation.
+ *
+ * @return List of failed Responses
+ */
+ public List getFailedResponses();
}
1.12 +2 -2
jakarta-commons/latka/src/java/org/apache/commons/latka/http/RequestImpl.java
Index: RequestImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/latka/src/java/org/apache/commons/latka/http/RequestImpl.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- RequestImpl.java 2001/08/23 21:12:49 1.11
+++ RequestImpl.java 2001/09/07 17:09:15 1.12
@@ -163,8 +163,8 @@
_requestTiming = ((new java.util.Date()).getTime() - startDate.getTime());
if (log.isInfoEnabled()) {
- log.info("response obtained (response follows):");
- log.info(response.getResource());
+ log.info("response obtained (response logging disabled because some responses
are binary):");
+ //log.info(response.getResource());
}
return response;
1.6 +9 -0
jakarta-commons/latka/src/java/org/apache/commons/latka/http/Response.java
Index: Response.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/latka/src/java/org/apache/commons/latka/http/Response.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- Response.java 2001/08/23 16:24:26 1.5
+++ Response.java 2001/09/07 17:09:15 1.6
@@ -59,6 +59,8 @@
package org.apache.commons.latka.http;
+import java.io.InputStream;
+
/**
* A Latka Response represents a response from an HTTP server.
*
@@ -76,6 +78,13 @@
* @return the resource, in string form, provided by the HTTP server.
*/
public String getResource();
+
+ /**
+ * Get the actual bytes returned by the web server
+ *
+ * @return InputStream containing the HTTP response
+ */
+ public InputStream getStream();
/**
* @return the length (in bytes) of the resource provided by the HTTP server.
1.7 +19 -0
jakarta-commons/latka/src/java/org/apache/commons/latka/http/ResponseImpl.java
Index: ResponseImpl.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/latka/src/java/org/apache/commons/latka/http/ResponseImpl.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- ResponseImpl.java 2001/08/23 21:21:07 1.6
+++ ResponseImpl.java 2001/09/07 17:09:15 1.7
@@ -59,6 +59,7 @@
package org.apache.commons.latka.http;
+import java.io.InputStream;
import java.io.IOException;
import org.apache.commons.httpclient.Header;
@@ -166,5 +167,23 @@
else {
return -1;
}
+ }
+
+ public InputStream getStream() {
+ InputStream stream = null;
+
+ // is there a reason that these are separate cases?
+ // does PostMethod override GetMethod's getDataAsString()?
+
+ if (_httpMethod instanceof GetMethod) {
+ try {
+ stream = ((GetMethod) _httpMethod).getData();
+ }
+ catch (IOException ioX) {
+ stream = null;
+ }
+ }
+
+ return stream;
}
}
1.12 +9 -9
jakarta-commons/latka/src/java/org/apache/commons/latka/xml/RequestHandler.java
Index: RequestHandler.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/latka/src/java/org/apache/commons/latka/xml/RequestHandler.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- RequestHandler.java 2001/08/23 16:24:27 1.11
+++ RequestHandler.java 2001/09/07 17:09:15 1.12
@@ -101,7 +101,7 @@
protected Response _response = null;
protected boolean _requestExecuted = false;
- protected static final Category log =
+ protected static final Category _log =
Category.getInstance(RequestHandler.class);
public RequestHandler(XMLReader reader, Session session,
@@ -119,7 +119,7 @@
_defaultPort = Integer.parseInt(portString);
}
- log.debug("request handler instantiated");
+ _log.debug("request handler instantiated");
}
public RequestHandler(XMLReader reader,
@@ -135,7 +135,7 @@
String qName, Attributes atts)
throws SAXException {
- log.debug("received start element event");
+ _log.debug("received start element event");
if (_listener.didRequestSucceed(_request) == false) {
// if a test in this request has already failed,
@@ -154,22 +154,22 @@
if (_skipped) {
_listener.requestSkipped(new RequestSkippedEvent(_request,null));
- log.info("request skipped");
+ _log.info("request skipped");
}
} else if (localName.equals("credentials")) {
_request.setCredentials(atts.getValue("userName"),atts.getValue("password"));
} else if (localName.equals("requestHeader")) {
- log.info("adding request headers");
+ _log.info("adding request headers");
RequestHeaderHandler headerHandler = new
RequestHeaderHandler(_reader,_request);
headerHandler.delegate(uri,localName,qName,atts);
} else if (localName.equals("param")) {
- log.info("adding parameters: params should follow");
+ _log.info("adding parameters: params should follow");
ParameterHandler paramHandler = new ParameterHandler(_reader,_request);
paramHandler.delegate(uri,localName,qName,atts);
return;
} else if (localName.equals("validate")) {
- log.info("encountered validations");
+ _log.info("encountered validations");
try {
_response = _request.execute();
@@ -246,8 +246,8 @@
}
String label = atts.getValue("label");
- log.info("creating request with label:");
- log.info(label);
+ _log.info("creating request with label:");
+ _log.info(label);
boolean followRedirects = true;
String followRedirectStr = atts.getValue("followRedirects");