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>&#x0A;</xsl:text>
       Thank you very much.
       <xsl:text>&#x0A;</xsl:text>
     </xsl:template>     
  
     <xsl:template match="report">
        <xsl:text>&#x0A;</xsl:text>
        <xsl:apply-templates select="//request[not(requestSuccess)]"/>
        <!-- <xsl:apply-templates select="//request"/> -->
        <xsl:call-template name="summary"/>
        <xsl:text>&#x0A;</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>&#x0A;</xsl:text>
        <xsl:value-of select="count(//request)"/><xsl:text> requests.</xsl:text>
        <xsl:text>&#x0A;</xsl:text>
        <xsl:value-of select="count(//request/requestSuccess)"/><xsl:text> 
passed.</xsl:text>
        <xsl:text>&#x0A;</xsl:text>
        <xsl:value-of select="count(//request/requestFailure)"/><xsl:text> 
failed.</xsl:text>
        <xsl:text>&#x0A;</xsl:text>
        <xsl:value-of select="count(//request/requestSkipped)"/><xsl:text> 
skipped.</xsl:text>
        <xsl:text>&#x0A;</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>&#x0A;</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>&#x0A;</xsl:text>
        <xsl:text>&#x0A;</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>&#x0A;    </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>&#x0A;    </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>
  
  
  

Reply via email to