curcuru     02/01/17 12:36:24

  Added:       test     FailScanner.xsl PerfScanner.xsl ResultScanner.xsl
  Log:
  New and improved results.xml stylesheets; only print out minimal info needed
  for either fails (and errors, etc.) or perf measurements
  
  Revision  Changes    Path
  1.1                  xml-xalan/test/FailScanner.xsl
  
  Index: FailScanner.xsl
  ===================================================================
  <?xml version="1.0"?> 
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
      version="1.0">
  <xsl:output method="html"
            doctype-public="-//W3C//DTD HTML 4.0 Transitional"/>
  
  <!-- FileName: FailScanner.xsl -->
  <!-- Author: [EMAIL PROTECTED] -->
  <!-- Purpose: Simple viewer for org.apache.qetest.XMLFileLogger
       logFile failing-only results put into simple HTML pages -->
  
  <!-- Include constant definitions for results file elements, 
       attributes, and values, copied from relevant Java code -->
  <xsl:include href="resultsConstants.xsl"/>
  
  <!-- ================================== -->
  <!-- Main template-standalone: output an HTML page -->
  <xsl:template match="resultsfile">
      <html xmlns="http://www.w3.org/1999/xhtml";>
          <head>
              <title><xsl:text>Test Results file: </xsl:text><xsl:value-of 
select="@logFile"/></title>
          </head>
          <body>
              <xsl:apply-templates/>
          </body>
      </html>
  </xsl:template>
  
  <!-- Output each whole testfile as a table; a small summary then individual results 
-->
  <!-- This is selected in ResultScanner.xsl directly -->
  <xsl:template match="testfile">
    <table frame="box" border="1" rules="groups" 
           cellspacing="2" cellpadding="2"
           bgcolor="#FFFFEE">
      <caption>
        <b><xsl:value-of select="@filename"/><xsl:text>: </xsl:text></b><xsl:value-of 
select="@desc"/>
      </caption>
      <!-- establish row widths here in our mini-summary -->
      <tr>
        <td width="7%"><xsl:text>Overall</xsl:text></td>
        <td>
          <xsl:text>Pass: </xsl:text>
          <xsl:value-of 
select="statistic[@desc='passCount[CASES]']/longval"/><xsl:text>/</xsl:text>
          <xsl:value-of 
select="statistic[@desc='passCount[CHECKS]']/longval"/><xsl:text>, </xsl:text>
          <xsl:text>Fail: </xsl:text>
          <xsl:value-of 
select="statistic[@desc='failCount[CASES]']/longval"/><xsl:text>/</xsl:text>
          <xsl:value-of 
select="statistic[@desc='failCount[CHECKS]']/longval"/><xsl:text>, </xsl:text>
          <xsl:text>Errr: </xsl:text>
          <xsl:value-of 
select="statistic[@desc='errrCount[CASES]']/longval"/><xsl:text>/</xsl:text>
          <xsl:value-of 
select="statistic[@desc='errrCount[CHECKS]']/longval"/><xsl:text>, </xsl:text>
          <xsl:text>Ambg: </xsl:text>
          <xsl:value-of 
select="statistic[@desc='ambgCount[CASES]']/longval"/><xsl:text>/</xsl:text>
          <xsl:value-of 
select="statistic[@desc='ambgCount[CHECKS]']/longval"/><xsl:text>, </xsl:text>
          <xsl:text>Incp: </xsl:text>
          <xsl:value-of select="statistic[@desc='incpCount[CASES]']/longval"/>
        </td>
      </tr>
      
      <!-- Search on all subelements; don't bother restricting -->
      <xsl:apply-templates />
    </table>
  </xsl:template>
  
  <!-- Output only testcases that have clear fails with the specific fails -->
  <xsl:template match="testcase[caseresult/@result = $FAIL] | 
testcase[caseresult/@result = $ERRR]">
      <tr>
        <td><br/><hr/></td>
        <td><xsl:text>Testcase #</xsl:text><xsl:value-of select="@desc"/><xsl:text> is 
</xsl:text><xsl:value-of select="caseresult/@result"/></td>
      </tr>
      <!-- Only select results; we only have matches later for failed results -->
      <xsl:apply-templates select="checkresult" />
  </xsl:template>
  
  <!-- Testcases that are incomplete just get a note, no details -->
  <xsl:template match="testcase[caseresult/@result = $INCP]">
      <tr>
        <td><hr/></td>
        <td><xsl:text>Testcase #</xsl:text><xsl:value-of select="@desc"/><xsl:text> 
was </xsl:text><xsl:value-of select="caseresult/@result"/></td>
      </tr>
  </xsl:template>
  
  <!-- Results that are clearly fails have preceding messages printed out -->
  <xsl:template match="checkresult[@result=$FAIL] | checkresult[@result=$ERRR]">
    <!-- First, find the several previous messages to this result -->
    <xsl:apply-templates select="preceding-sibling::*[2]" mode="before-result" />
    <xsl:apply-templates select="preceding-sibling::*[1]" mode="before-result" />
      
    <!-- Then print out this result itself -->
    <tr>
      <td bgcolor="#FF8080"><b><xsl:value-of select="@result"/></b></td>
      <td>
        <xsl:if test="@id">
          <xsl:text>[</xsl:text><xsl:value-of select="@id"/><xsl:text>] </xsl:text>
        </xsl:if>
        <xsl:value-of select="@desc"/>
      </td>
    </tr>
  </xsl:template>
  
  <!-- Other Results that are not passes just get printed out as-is -->
  <xsl:template match="checkresult[@result=$AMBG] | checkresult[@result=$INCP]">
    <xsl:apply-templates select="preceding-sibling::fileCheck[1]" mode="before-result" 
/>
    <tr>
      <td bgcolor="#FFFF00"><i><xsl:value-of select="@result"/></i></td>
      <td>
        <xsl:if test="@id">
          <xsl:text>[</xsl:text><xsl:value-of select="@id"/><xsl:text>] </xsl:text>
        </xsl:if>
        <xsl:value-of select="@desc"/>
      </td>
    </tr>
  </xsl:template>
  
  <!-- Only selected from previous checkresult apply-templates -->
  <xsl:template match="message | arbitrary" mode="before-result">
    <tr>
      <td><xsl:value-of select="@level"/>A</td>
      <td>
        <xsl:choose>
          <xsl:when test="'arbitrary' = name()">
            <pre><font size="-1"><xsl:value-of select="."/></font></pre>
          </xsl:when>
          <xsl:otherwise>
            <xsl:value-of select="."/>
          </xsl:otherwise>
        </xsl:choose>
      </td>
    </tr>
  </xsl:template>
  
  <!-- Only selected from previous checkresult apply-templates -->
  <xsl:template match="fileCheck" mode="before-result">
    <tr>
      <td><font size="-1">fileCheck</font></td>
      <td>
        <xsl:text>Actual file: </xsl:text><xsl:value-of select="@actual"/><br/>
        <pre><font size="-1"><xsl:value-of select="."/></font></pre>
      </td>
    </tr>
  </xsl:template>
  
  <!-- We implicitly skip all passes and non-related messages, etc. -->
  
  <!-- Override default text node processing, so statistics, arbitrary messages, and 
other stuff is skipped -->
  <xsl:template match="text()"/>
  <xsl:template match="text()" mode="before-result"/>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-xalan/test/PerfScanner.xsl
  
  Index: PerfScanner.xsl
  ===================================================================
  <?xml version="1.0"?> 
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
      version="1.0">
  <xsl:output method="html"
            doctype-public="-//W3C//DTD HTML 4.0 Transitional"/>
  
  <!-- FileName: FailScanner.xsl -->
  <!-- Author: [EMAIL PROTECTED] -->
  <!-- Purpose: Simple viewer for org.apache.qetest.XMLFileLogger
       logFile failing-only results put into simple HTML pages -->
  
  <!-- Include constant definitions for results file elements, 
       attributes, and values, copied from relevant Java code -->
  <xsl:include href="resultsConstants.xsl"/>
  
  <!-- ================================== -->
  <!-- Main template-standalone: output an HTML page -->
  <xsl:template match="resultsfile">
      <html xmlns="http://www.w3.org/1999/xhtml";>
          <head>
              <title><xsl:text>Test Results file: </xsl:text><xsl:value-of 
select="@logFile"/></title>
          </head>
          <body>
              <xsl:apply-templates/>
          </body>
      </html>
  </xsl:template>
  
  <!-- Output each whole testfile as a table; a small summary then individual results 
-->
  <!-- This is selected in ResultScanner.xsl directly -->
  <xsl:template match="testfile">
    <table frame="box" border="1" rules="groups" 
           cellspacing="2" cellpadding="2"
           bgcolor="#FFFFEE">
      <caption>
        <b><xsl:value-of select="@filename"/><xsl:text>: </xsl:text></b><xsl:value-of 
select="@desc"/>
      </caption>
      <!-- establish row widths here in our mini-summary -->
      <tr>
        <td width="7%"><xsl:text>Overall</xsl:text></td>
        <td>
          <xsl:text>Pass: </xsl:text>
          <xsl:value-of 
select="statistic[@desc='passCount[CASES]']/longval"/><xsl:text>/</xsl:text>
          <xsl:value-of 
select="statistic[@desc='passCount[CHECKS]']/longval"/><xsl:text>, </xsl:text>
          <xsl:text>Fail: </xsl:text>
          <xsl:value-of 
select="statistic[@desc='failCount[CASES]']/longval"/><xsl:text>/</xsl:text>
          <xsl:value-of 
select="statistic[@desc='failCount[CHECKS]']/longval"/><xsl:text>, </xsl:text>
          <xsl:text>Errr: </xsl:text>
          <xsl:value-of 
select="statistic[@desc='errrCount[CASES]']/longval"/><xsl:text>/</xsl:text>
          <xsl:value-of 
select="statistic[@desc='errrCount[CHECKS]']/longval"/><xsl:text>, </xsl:text>
          <xsl:text>Ambg: </xsl:text>
          <xsl:value-of 
select="statistic[@desc='ambgCount[CASES]']/longval"/><xsl:text>/</xsl:text>
          <xsl:value-of 
select="statistic[@desc='ambgCount[CHECKS]']/longval"/><xsl:text>, </xsl:text>
          <xsl:text>Incp: </xsl:text>
          <xsl:value-of select="statistic[@desc='incpCount[CASES]']/longval"/>
        </td>
      </tr>
      
      <!-- Search on all subelements; don't bother restricting -->
      <xsl:apply-templates />
    </table>
  </xsl:template>
  
  <!-- Output all testcases with minimal info in them -->
  <xsl:template match="testcase">
      <tr>
        <td><br/><hr/></td>
        <td><xsl:text>Testcase #</xsl:text><xsl:value-of select="@desc"/><xsl:text> is 
</xsl:text><xsl:value-of select="caseresult/@result"/></td>
      </tr>
      <!-- Only select results; we only have matches later for failed results -->
      <xsl:apply-templates select="checkresult | perf | fileCheck" />
  </xsl:template>
  
  <!-- Printout basic pass/fail for each test -->
  <xsl:template match="checkresult">
    <tr>
      <td><xsl:value-of select="@result"/></td>
      <td>
        <xsl:if test="@id">
          <xsl:text>[</xsl:text><xsl:value-of select="@id"/><xsl:text>] </xsl:text>
        </xsl:if>
        <xsl:value-of select="@desc"/>
      </td>
    </tr>
  </xsl:template>
  
  <!-- Print out simple block of perf info -->
  <xsl:template match="perf">
    <tr>
      <td><b><xsl:value-of select="@idref"/></b></td>
      <td>
      <xsl:value-of select="@processor"/><br/>
      <xsl:if test="@avgparsexsl"><xsl:text> avgparsexsl = </xsl:text><xsl:value-of 
select="@avgparsexsl"/></xsl:if>
      <xsl:if test="@singletransform"><xsl:text> singletransform = 
</xsl:text><xsl:value-of select="@singletransform"/></xsl:if>
      <xsl:if test="@iterations"><xsl:text> iterations = </xsl:text><xsl:value-of 
select="@iterations"/></xsl:if>
      <xsl:if test="@unparsedxml"><xsl:text> unparsedxml = </xsl:text><xsl:value-of 
select="@unparsedxml"/></xsl:if>
      <xsl:if test="@parsexsl"><xsl:text> parsexsl = </xsl:text><xsl:value-of 
select="@parsexsl"/></xsl:if>
      <xsl:if test="@avgetoe"><xsl:text> avgetoe = </xsl:text><xsl:value-of 
select="@avgetoe"/></xsl:if>
      <xsl:if test="@avgunparsedxml"><xsl:text> avgunparsedxml = 
</xsl:text><xsl:value-of select="@avgunparsedxml"/></xsl:if>
      <xsl:if test="@etoe"><xsl:text> etoe = </xsl:text><xsl:value-of 
select="@etoe"/></xsl:if>
      <xsl:if test="@OVERALL"><xsl:text> OVERALL = </xsl:text><xsl:value-of 
select="@OVERALL"/></xsl:if>
      <xsl:if test="@XSLREAD"><xsl:text> XSLREAD = </xsl:text><xsl:value-of 
select="@XSLREAD"/></xsl:if>
      <xsl:if test="@XSLBUILD"><xsl:text> XSLBUILD = </xsl:text><xsl:value-of 
select="@XSLBUILD"/></xsl:if>
      <xsl:if test="@XMLREAD"><xsl:text> XMLREAD = </xsl:text><xsl:value-of 
select="@XMLREAD"/></xsl:if>
      <xsl:if test="@XMLBUILD"><xsl:text> XMLBUILD = </xsl:text><xsl:value-of 
select="@XMLBUILD"/></xsl:if>
      <xsl:if test="@TRANSFORM"><xsl:text> TRANSFORM = </xsl:text><xsl:value-of 
select="@TRANSFORM"/></xsl:if>
      <xsl:if test="@RESULTWRITE"><xsl:text> RESULTWRITE = </xsl:text><xsl:value-of 
select="@RESULTWRITE"/></xsl:if>
      <xsl:if test="@FIRSTLATENCY"><xsl:text> FIRSTLATENCY = </xsl:text><xsl:value-of 
select="@FIRSTLATENCY"/></xsl:if>
      </td>
    </tr>
  </xsl:template>
  
  <!-- Only selected from previous checkresult apply-templates -->
  <xsl:template match="fileCheck">
    <tr>
      <td><font size="-1">fileCheck</font></td>
      <td>
        <xsl:text>Actual file: </xsl:text><xsl:value-of select="@actual"/><br/>
        <pre><font size="-1"><xsl:value-of select="."/></font></pre>
      </td>
    </tr>
  </xsl:template>
  
  <!-- We implicitly skip all passes and non-related messages, etc. -->
  
  <!-- Override default text node processing, so statistics, arbitrary messages, and 
other stuff is skipped -->
  <xsl:template match="text()"/>
  
  </xsl:stylesheet>
  
  
  
  1.1                  xml-xalan/test/ResultScanner.xsl
  
  Index: ResultScanner.xsl
  ===================================================================
  <?xml version="1.0"?> 
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
      version="1.0">
    <xsl:output method="html"
                doctype-public="-//W3C//DTD HTML 4.0 Transitional"/>
  
  <!-- FileName: ResultScanner.xsl -->
  <!-- Author: [EMAIL PROTECTED] -->
  <!-- Purpose: Meta-scanner for groups of results produced 
       by org.apache.qetest.ResultScanner -->
  
  <!-- Basic scanning stylesheet for individual testfile results -->
  <xsl:include href="FailScanner.xsl"/>
  
  <!-- ================================== -->
  <!-- Constants from org.apache.qetest.ResultScanner -->
  <xsl:variable name="goodResult">ok</xsl:variable>
  <xsl:variable name="badResult">notok</xsl:variable>
  
  <!-- ================================== -->
  <!-- Main template: output an HTML page -->
  <xsl:template match="resultfilelist">
    <html>
      <head>
        <title><xsl:text>ResultScanner: </xsl:text><xsl:value-of 
select="@logFile"/></title>
      </head>
      <body>
        <!-- A table of all fail results -->
        <h3>All bad results:</h3>
        <xsl:for-each select="testgroup/teststatus[@status = $badResult]">
            <xsl:element name="a">
              <xsl:attribute name="href">#<xsl:value-of select="concat(../@href, '/', 
@href)"/></xsl:attribute>
              <xsl:value-of select="@href"/>
            </xsl:element>
            <br/>
        </xsl:for-each>
        <xsl:apply-templates/>
      </body>
    </html>
  </xsl:template>
  
  <!-- For each directory full of results found, print out a summary -->
  <xsl:template match="testgroup">
    <!-- Cache the value of the dir for later use -->
    <xsl:variable name="dir" select="@href"/>
    <h3><xsl:text>Testgroup: </xsl:text><xsl:value-of select="$dir"/></h3>
    <font size="-1">
      <xsl:apply-templates select="teststatus[@status = $goodResult]" />
    </font>
    <br/>
    <xsl:apply-templates select="teststatus[@status = $badResult]" >
        <xsl:with-param name="dir" select="$dir"/>
    </xsl:apply-templates>
  </xsl:template>
  
  <!-- Just list names of good result files (passing), nothing else -->
  <xsl:template match="teststatus[@status = $goodResult]">
    <xsl:value-of select="@href"/><xsl:text> </xsl:text>
  </xsl:template>
  
  <!-- For bad result summary files, go look up the actual file and report it -->
  <xsl:template match="teststatus[@status = $badResult]">
    <xsl:param name="dir" select="."/>
    <br/>
    <!-- Read in the teststatus file we found and get it's info -->
    <xsl:variable name="statusfilename" select="concat($dir, '/', @href)"/>
    <xsl:variable name="status" select="document($statusfilename)/teststatus"/>
  
    <!-- From that info, read in the actual results file associated therewith -->
    <xsl:variable name="testresultsfilename" select="concat($status/@baseref, '/', 
$status/@logFile)"/>
    <xsl:variable name="testresults" 
select="document($testresultsfilename)/resultsfile"/>
  
    <!-- Anchor element for each test -->
    <xsl:element name="a">
      <xsl:attribute name="name"><xsl:value-of 
select="$statusfilename"/></xsl:attribute>
    </xsl:element>
  
    <!-- Link to the full xml source of each test -->
    <font size="-1"><xsl:value-of select="$testresults/testfile/@filename"/>
      <xsl:element name="a">
        <xsl:attribute name="href"><xsl:value-of 
select="$testresultsfilename"/></xsl:attribute>
        <xsl:text> source results xml</xsl:text>
      </xsl:element>
    </font>
  
    <!-- Now scan the actual underlying result file for stuff -->
    <xsl:apply-templates select="$testresults/testfile"/>
  </xsl:template>
  
  <!-- Override default text node processing, so statistics, arbitrary messages, and 
other stuff is skipped -->
  <xsl:template match="text()"/>
  
  </xsl:stylesheet>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to