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]