morgand 01/09/07 10:13:43
Modified: latka-webapp/webapp RunTestBody.jsp RunTestURL.jsp
latka-webapp/webapp/WEB-INF web.xml
Added: latka-webapp/src/org/apache/commons/latka/servlet
ViewResponseServlet.java
latka-webapp/webapp report.xsl
Log:
added ability to review failed Responses
Revision Changes Path
1.1
jakarta-commons-sandbox/latka-webapp/src/org/apache/commons/latka/servlet/ViewResponseServlet.java
Index: ViewResponseServlet.java
===================================================================
package org.apache.commons.latka.servlet;
import java.io.InputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.latka.http.Response;
public class ViewResponseServlet extends HttpServlet {
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws IOException {
doGet(req,res);
}
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException {
HttpSession session = req.getSession();
List list = (List) session.getAttribute("latka.failedResponses");
String responseHash = req.getParameter("responseId");
Collections.sort(list,new ToStringComparator());
int i = Collections.binarySearch(list,responseHash,new ToStringComparator());
Response response = (Response) list.get(i);
InputStream responseStream = response.getStream();
OutputStream servletStream = res.getOutputStream();
int someByte = responseStream.read();
while (someByte > -1) {
servletStream.write(someByte);
someByte = responseStream.read();
}
}
private class ToStringComparator implements Comparator {
public int compare(Object o1, Object o2) {
return o1.toString().compareTo(o2.toString());
}
}
}
1.6 +12 -2 jakarta-commons-sandbox/latka-webapp/webapp/RunTestBody.jsp
Index: RunTestBody.jsp
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/latka-webapp/webapp/RunTestBody.jsp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- RunTestBody.jsp 2001/09/04 19:12:31 1.5
+++ RunTestBody.jsp 2001/09/07 17:13:42 1.6
@@ -1,16 +1,26 @@
+<%@ page import="java.io.File" %>
<%@ taglib uri="http://jakarta.apache.org/taglibs/latka-taglib" prefix="latka" %>
<latka:sessionProperties id="props"/>
+<%
+ File styleFile = new File(request.getRealPath("report.xsl"));
+ String styleUrl = styleFile.toURL().toString();
+%>
+
<pre>
-<latka:executeSuite properties="props" validate="false">
+<latka:executeSuite properties="props" validate="false"
+ stylesheetUrl="<%= styleUrl %>" failedResponses="failedResponses">
<%= request.getParameter("testBody") %>
</latka:executeSuite>
</pre>
<% // store away the test for when we return to the form
props.setProperty("latka.testBody",
- request.getParameter("testBody").trim()); %>
+ request.getParameter("testBody").trim());
+
+ session.setAttribute("latka.failedResponses",
+ pageContext.getAttribute("failedResponses")); %>
<a href="TestForm.jsp">[Return to test form]</a>
1.2 +16 -2 jakarta-commons-sandbox/latka-webapp/webapp/RunTestURL.jsp
Index: RunTestURL.jsp
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/latka-webapp/webapp/RunTestURL.jsp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- RunTestURL.jsp 2001/09/06 15:22:03 1.1
+++ RunTestURL.jsp 2001/09/07 17:13:42 1.2
@@ -1,10 +1,24 @@
+<%@ page import="java.io.File" %>
<%@ taglib uri="http://jakarta.apache.org/taglibs/latka-taglib" prefix="latka" %>
<latka:sessionProperties id="props"/>
-<% String url = request.getParameter("url"); %>
+<%
+ String url = request.getParameter("url");
+ // much rather use getResource(String) but Tomcat
+ // returns jndi urls rather than http urls
+ // good for tomcat, bad for XML
+ File styleFile = new File(request.getRealPath("report.xsl"));
+ String styleUrl = styleFile.toURL().toString();
+%>
<pre>
-<latka:executeSuite url="<%= url %>" properties="props"/>
+<latka:executeSuite url="<%= url %>" properties="props"
+ stylesheetUrl="<%= styleUrl %>" failedResponses="failedResponses"/>
</pre>
+
+<%
+ session.setAttribute("latka.failedResponses",
+ pageContext.getAttribute("failedResponses"));
+%>
<a href="TestMenu.jsp">[Return to test menu]</a>
1.1 jakarta-commons-sandbox/latka-webapp/webapp/report.xsl
Index: report.xsl
===================================================================
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="no"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:apply-templates/>
<xsl:text>
</xsl:text>
Thank you very much.
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="report">
<xsl:text>
</xsl:text>
<xsl:apply-templates select="//request[not(requestSuccess)]"/>
<!-- <xsl:apply-templates select="//request"/> -->
<xsl:call-template name="summary"/>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template name="summary">
<xsl:choose>
<xsl:when test="/report/@suiteSuccess = 'true'">SUITE SUCCEEDED</xsl:when>
<xsl:otherwise>SUITE FAILED</xsl:otherwise>
</xsl:choose>
<xsl:text>
</xsl:text>
<xsl:value-of select="count(//request)"/><xsl:text> requests.</xsl:text>
<xsl:text>
</xsl:text>
<xsl:value-of select="count(//request/requestSuccess)"/><xsl:text>
passed.</xsl:text>
<xsl:text>
</xsl:text>
<xsl:value-of select="count(//request/requestFailure)"/><xsl:text>
failed.</xsl:text>
<xsl:text>
</xsl:text>
<xsl:value-of select="count(//request/requestSkipped)"/><xsl:text>
skipped.</xsl:text>
<xsl:text>
</xsl:text>
<xsl:value-of select="count(//request/requestError)"/><xsl:text>
errors.</xsl:text>
</xsl:template>
<xsl:template match="request">
<xsl:value-of select="@url"/> <xsl:call-template name="label"/>
<xsl:text>
</xsl:text>
<xsl:apply-templates>
<xsl:with-param name="timing">
<xsl:text>(</xsl:text><xsl:value-of select="@requestTime"/><xsl:text>
millis)</xsl:text>
</xsl:with-param>
</xsl:apply-templates>
<xsl:text>
</xsl:text>
<xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="requestSuccess">
<xsl:param name="timing"/>
<xsl:text> REQUEST SUCCEEDED </xsl:text>
<xsl:value-of select="$timing"/>
</xsl:template>
<xsl:template match="requestFailure">
<xsl:param name="timing"/>
<xsl:text> REQUEST FAILED </xsl:text>
<xsl:value-of select="$timing"/>
<xsl:text>
 </xsl:text>
<xsl:apply-templates/>
<xsl:variable name="responseId" select="@responseId"/>
<form action="viewResponse">
<input type="hidden" name="responseId" value="{$responseId}"/>
<input type="submit" value="view response"/>
</form>
</xsl:template>
<xsl:template match="requestSkipped">
<xsl:param name="timing"/>
<xsl:text> REQUEST SKIPPED </xsl:text>
<xsl:value-of select="$timing"/>
</xsl:template>
<xsl:template match="requestError">
<xsl:param name="timing"/>
<xsl:text> REQUEST ERROR </xsl:text>
<xsl:value-of select="$timing"/>
<xsl:text>
 </xsl:text>
<xsl:apply-templates/>
</xsl:template>
<xsl:template name="label">
<xsl:if test="@label">
<xsl:text> (</xsl:text><xsl:value-of select="@label"/><xsl:text>)</xsl:text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
1.4 +12 -0 jakarta-commons-sandbox/latka-webapp/webapp/WEB-INF/web.xml
Index: web.xml
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/latka-webapp/webapp/WEB-INF/web.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- web.xml 2001/09/06 15:22:04 1.3
+++ web.xml 2001/09/07 17:13:42 1.4
@@ -14,6 +14,18 @@
<param-name>latka.testDir</param-name>
<param-value>/lib/latka/doc</param-value>
</context-param>
+
+ <!-- view response servlet -->
+ <servlet>
+ <servlet-name>viewResponse</servlet-name>
+
<servlet-class>org.apache.commons.latka.servlet.ViewResponseServlet</servlet-class>
+ </servlet>
+
+ <!-- view response servlet -->
+ <servlet-mapping>
+ <servlet-name>viewResponse</servlet-name>
+ <url-pattern>/viewResponse</url-pattern>
+ </servlet-mapping>
<taglib>
<taglib-uri>http://jakarta.apache.org/taglibs/latka-taglib</taglib-uri>