Author: jsong
Date: Fri Aug 6 15:05:47 2004
New Revision: 36050
Added:
incubator/beehive/trunk/controls/test/infra/gtlf/
incubator/beehive/trunk/controls/test/infra/gtlf/xsl/
incubator/beehive/trunk/controls/test/infra/gtlf/xsl/ReportFormat.xml
incubator/beehive/trunk/controls/test/infra/gtlf/xsl/TestReport.xsl
incubator/beehive/trunk/controls/test/infra/gtlf/xsl/build.xml
incubator/beehive/trunk/controls/test/infra/gtlf/xsl/junit.css
incubator/beehive/trunk/controls/test/infra/gtlf/xsl/reportutils.jar
(contents, props changed)
incubator/beehive/trunk/controls/test/infra/gtlf/xsl/windowFrameScript.xml
incubator/beehive/trunk/controls/test/infra/tch/runtime/
incubator/beehive/trunk/controls/test/infra/tch/runtime/build.xml
Modified:
incubator/beehive/trunk/controls/test/build.xml
Log:
Add tch report function.
Modified: incubator/beehive/trunk/controls/test/build.xml
==============================================================================
--- incubator/beehive/trunk/controls/test/build.xml (original)
+++ incubator/beehive/trunk/controls/test/build.xml Fri Aug 6 15:05:47 2004
@@ -128,7 +128,7 @@
failonerror="true"
>
<classpath>
- <pathelement location="tools/milton/milton.jar"/>
+ <pathelement location="${milton.jar}"/>
</classpath>
</javac>
<property name="_build.test.drivers.ran" value="true"/>
@@ -145,7 +145,7 @@
verbose="false"
failonerror="true">
<classpath>
- <pathelement location="tools/milton/milton.jar"/>
+ <pathelement location="${milton.jar}"/>
<pathelement path="${build.tests.driver}"/>
</classpath>
</javac>
@@ -178,6 +178,7 @@
<target name="run">
<property name="test-suite" value="${junit.src.dir}/root.xml"/>
+ <property name="tch.base-logfile-name" value="tch"/>
<tch tchHome="${tch.home}"
@@ -188,34 +189,14 @@
- <arg value="-emacs"/>
- <property name="tch.replication.entry-point" value="ant -f
${controls.test.dir}/build.xml run"/>
+ <arg value="-emacs"/>
+ <property name="tch.replication.entry-point" value="ant -f
${controls.test.dir}/build.xml run"/>
+ </tch>
-
-
- </tch>
-
-
- <!--
- <peanut peanutHome="${peanut.home}" testfile="${test-suite}"
fork="true">
-
- <classpath>
- <pathelement path="${ant.jar}"/>
- <pathelement path="${os.ANT_HOME}/lib/ant-launcher.jar"/>
- <pathelement path="${tools.jar}"/>
- <pathelement path="${junit.jar}"/>
- <pathelement path="${velocity14.jar}"/>
- <pathelement path="${velocitydep14}.jar"/>
- <pathelement path="${servlet24.jar}"/>
- <pathelement path="../build/jars/controls.jar"/>
- <pathelement location="${build.beans}" />
- <pathelement location="tools/milton/milton.jar"/>
- <pathelement path="${build.tests.driver}"/>
- <pathelement location="${build.tests}" />
- <pathelement location="${peanut.jar}" />
- </classpath>
- </peanut>
- -->
+ <ant antfile="${controls.test.infra.dir}/tch/runtime/build.xml"
target="generate-html-log" dir="${basedir}">
+ <property name="gtlf.file"
value="${basedir}/${tch.base-logfile-name}.xml"/>
+ <property name="output.file"
value="${basedir}/${tch.base-logfile-name}.html"/>
+ </ant>
</target>
</project>
Added: incubator/beehive/trunk/controls/test/infra/gtlf/xsl/ReportFormat.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/gtlf/xsl/ReportFormat.xml
Fri Aug 6 15:05:47 2004
@@ -0,0 +1,116 @@
+ <!-- controls the sections that should be part of the diff report
+
+ The user can specify a comma separated list of sections they area interested
+ in
+
+ for e.g. result-Summary,setup
+
+ The sections are
+
+ report-Summary
+ report-summary-error-list
+ result-Summary
+ result-Detail
+ error-Summary
+ error-Detail
+ files
+ setup
+ help
+ p4-Changes
+ webclarify-crs
+ all - all the sections are displayed
+
+ The report summary is always displayed.
+
+ -->
+ <xsl:param name="sections">all</xsl:param>
+
+
+ <!-- controls the display of navigation tools in the diff report
+ controls the navigation tools that will be available
+ in the report. You can specify a comma separated list
+ of the navigation tools
+
+ The navigation tools are:
+
+ all - all the tools are displayed
+ menu - menu of the report
+ toolbar - toolbar of the report
+ top - top link displayed in different report
+ sections
+ split - Capibility to split the page horizontally
+ and vertically.
+
+
+ -->
+ <xsl:param name="navigationTools">all</xsl:param>
+ <xsl:param name="reportSummaryErrorListCount">5</xsl:param>
+ <xsl:param name="reportSummaryErrorListHyperlinkPrefix">NA</xsl:param>
+
+ <xsl:variable name="allTool">all</xsl:variable>
+ <xsl:variable name="menuNavigationTool">menu</xsl:variable>
+ <xsl:variable name="toolbarNavigationTool">toolbar</xsl:variable>
+ <xsl:variable name="splitNavigationTool">split</xsl:variable>
+ <xsl:variable name="topNavigationTool">top</xsl:variable>
+
+ <xsl:variable name="showMenuNavigationTool"
+ select="contains($navigationTools,$allTool) or
+ contains($navigationTools,$menuNavigationTool)"/>
+ <xsl:variable name="showToolbarNavigationTool"
+ select="contains($navigationTools,$allTool) or
+ contains($navigationTools,$toolbarNavigationTool)"/>
+ <xsl:variable name="showSplitNavigationTool"
+ select="contains($navigationTools,$allTool) or
+ contains($navigationTools,$splitNavigationTool)"/>
+ <xsl:variable name="showTopNavigationTool"
+ select="contains($navigationTools,$allTool) or
+ contains($navigationTools,$topNavigationTool)"/>
+
+
+ <xsl:variable name="reportSummarySection">report-summary</xsl:variable>
+ <xsl:variable
+
name="reportSummaryErrorListSubSection">report-summary-error-list</xsl:variable>
+ <xsl:variable name="resultSummarySection">result-summary</xsl:variable>
+ <xsl:variable name="resultDetailSection">result-detail</xsl:variable>
+ <xsl:variable name="errorSummarySection">error-summary</xsl:variable>
+ <xsl:variable name="errorDetailSection">error-detail</xsl:variable>
+ <xsl:variable name="p4ChangesSection">p4-changes</xsl:variable>
+ <xsl:variable name="webclarifyCrsSection">webclarify-crs</xsl:variable>
+ <xsl:variable name="setupSection">setup</xsl:variable>
+ <xsl:variable name="filesSection">files</xsl:variable>
+ <xsl:variable name="helpSection">help</xsl:variable>
+ <xsl:variable name="allSection">all</xsl:variable>
+
+ <xsl:variable name="showReportSummarySection"
+ select="contains($sections,$allSection) or
+ contains($sections,$reportSummarySection)"/>
+ <xsl:variable name="showReportSummaryErrorListSubSection"
+ select="contains($sections,$allSection) or
+
contains($sections,$reportSummaryErrorListSubSection)"/>
+ <xsl:variable name="showResultSummarySection"
+ select="contains($sections,$allSection) or
+ contains($sections,$resultSummarySection)"/>
+ <xsl:variable name="showResultDetailSection"
+ select="contains($sections,$allSection) or
+ contains($sections,$resultDetailSection)"/>
+ <xsl:variable name="showErrorSummarySection"
+ select="contains($sections,$allSection) or
+ contains($sections,$errorSummarySection)"/>
+ <xsl:variable name="showErrorDetailSection"
+ select="contains($sections,$allSection) or
+ contains($sections,$errorDetailSection)"/>
+ <xsl:variable name="showP4ChangesSection"
+ select="contains($sections,$allSection) or
+ contains($sections,$p4ChangesSection)"/>
+ <xsl:variable name="showWebclarifyCrsSection"
+ select="contains($sections,$allSection) or
+ contains($sections,$webclarifyCrsSection)"/>
+ <xsl:variable name="showSetupSection"
+ select="contains($sections,$allSection) or
+ contains($sections,$setupSection)"/>
+ <xsl:variable name="showFilesSection"
+ select="contains($sections,$allSection) or
+ contains($sections,$filesSection)"/>
+ <xsl:variable name="showHelpSection"
+ select="contains($sections,$allSection) or
+ contains($sections,$helpSection)"/>
Added: incubator/beehive/trunk/controls/test/infra/gtlf/xsl/TestReport.xsl
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/gtlf/xsl/TestReport.xsl Fri Aug
6 15:05:47 2004
@@ -0,0 +1,2389 @@
+<?xml version="1.0"?>
+<!DOCTYPE
+ xsl:stylesheet
+ [
+ <!ENTITY report-format SYSTEM "ReportFormat.xml">
+ <!ENTITY window-frame-script SYSTEM "windowFrameScript.xml">
+ ]
+>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:java="java" xmlns:org="org" version="1.0">
+
+
+ <!-- global param -->
+ <xsl:param name="instrument">0</xsl:param>
+ <xsl:param name="showFeatureInfo">0</xsl:param>
+ <xsl:param name="showTestfiles">0</xsl:param>
+ <xsl:param name="filebasename">myrun</xsl:param>
+ <xsl:param name="feature">NONE</xsl:param>
+ <xsl:param name="showWebclarifyCrs">0</xsl:param>
+ <xsl:param name="zipFiles">false</xsl:param>
+ <xsl:param name="zipFileName">myrun.zip</xsl:param>
+ <xsl:param name="gtlfFileName">myrun.gtlf.xml</xsl:param>
+ <xsl:param name="testFiles"> </xsl:param>
+ <xsl:param name="cssFile">junit</xsl:param>
+ <xsl:param name="showSuccessInErrorSummary">0</xsl:param>
+ <xsl:param name="reportSectionOrder">result-focus</xsl:param>
+
+ <xsl:param name="showTheFilters">1</xsl:param>
+ &report-format;
+
+ <xsl:output method="html"/>
+
+ <!--
+
+ Structure of the xml
+ =====================
+
+ (root)
+ test-log (1)
+ |
+ environment (1)
+ | |
+ | env-attribute (1) { name, value }
+ |
+ header-info (1) { execaccount, execdate, checksum, harnesstype,
+ | importinfo, testruntype }
+ |
+ test-result (1.*) { exectime, result, isdone, logicalname, duration}
+ |
+ test-case (1) {testcsename, testunit, testpath}
+ |
+ execution-output (1)
+ |
+ output-details (1)
+ |
+ test-replication(0 - 1)
+ |
+ info
+ |
+ command-line
+ |
+ unix
+ |
+ win
+
+ -->
+
+ <xsl:template match="/test-log">
+ <html>
+ <head>
+ <xsl:call-template name="javascripts"/>
+ </head>
+ <body>
+ <!-- FILTER SCRIPTS -->
+ <xsl:call-template name="filterScript"/>
+ <!-- TOOLTIP SCRIPTS -->
+ <xsl:call-template name="tooltipScript"/>
+
+ <!-- WINDOW Frame SCRIPTS -->
+ <xsl:if test="$showSplitNavigationTool">
+ <xsl:call-template name="windowFrameScripts"/>
+ </xsl:if>
+
+ <!-- MENU -->
+ <xsl:if test="$showMenuNavigationTool">
+ <xsl:call-template name="sidemenu"/>
+ </xsl:if>
+
+ <!-- HEADER -->
+ <xsl:if test="$showToolbarNavigationTool">
+ <xsl:call-template name="header"/>
+ </xsl:if>
+
+ <!-- POPULATE DataStructures-->
+ <!--
+ <xsl:call-template name="createDataStructure"/>
+ -->
+
+ <!-- RESULT SUMMARY -->
+ <xsl:if test="$showResultSummarySection">
+ <xsl:call-template name="summary"/>
+ </xsl:if>
+
+ <!-- REPORT SUMMARY -->
+ <xsl:if test="$showReportSummarySection">
+ <xsl:call-template name="reportSummary"/>
+ </xsl:if>
+
+ <!-- display the report sections in the order specified -->
+ <xsl:choose>
+ <xsl:when test="contains(string($reportSectionOrder),'error-focus')">
+
+ <!-- ERROR DETAIL -->
+ <xsl:if test="$showErrorDetailSection">
+ <xsl:call-template name="testResultWithErrors"/>
+ </xsl:if>
+
+ <!-- ERROR SUMMARY -->
+ <xsl:if test="$showErrorSummarySection">
+ <xsl:call-template name="testResultErrorSummary"/>
+ </xsl:if>
+
+ <!-- RESULT DETAIL -->
+ <xsl:if test="$showResultDetailSection">
+ <xsl:call-template name="summaryByTestUnit"/>
+ </xsl:if>
+
+ <!-- FILES -->
+ <xsl:call-template name="files"/>
+
+ <!-- USEFUL COMMANDS -->
+ <xsl:if test="$showHelpSection">
+ <xsl:call-template name="testCommands"/>
+ </xsl:if>
+
+ <!-- SETUP -->
+ <xsl:if test="$showSetupSection">
+ <xsl:call-template name="metaInfo"/>
+ </xsl:if>
+
+ </xsl:when>
+ <xsl:otherwise>
+
+
+ <!-- RESULT DETAIL -->
+ <xsl:if test="$showResultDetailSection">
+ <xsl:call-template name="summaryByTestUnit"/>
+ </xsl:if>
+
+ <!-- ERROR SUMMARY -->
+ <xsl:if test="$showErrorSummarySection">
+ <xsl:call-template name="testResultErrorSummary"/>
+ </xsl:if>
+
+ <!-- FILES -->
+ <xsl:if test="$showFilesSection">
+ <xsl:call-template name="files"/>
+ </xsl:if>
+
+ <!-- USEFUL COMMANDS -->
+ <xsl:if test="$showHelpSection">
+ <xsl:call-template name="testCommands"/>
+ </xsl:if>
+
+ <!-- SETUP -->
+ <xsl:if test="$showSetupSection">
+ <xsl:call-template name="metaInfo"/>
+ </xsl:if>
+
+ <!-- ERROR DETAIL -->
+ <xsl:if test="$showErrorDetailSection">
+ <xsl:call-template name="testResultWithErrors"/>
+ </xsl:if>
+
+ </xsl:otherwise>
+ </xsl:choose>
+
+
+
+ </body>
+ </html>
+ </xsl:template>
+
+ <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- CREATE DATA STRUCTURES -->
+ <!-- ================================================================ -->
+ <xsl:template name="createDataStructure">
+
+ <xsl:call-template name="recordTime">
+ <xsl:with-param
+ name="message"> Creating dataStructures: </xsl:with-param>
+ </xsl:call-template>
+
+ <!-- build the hashmap of first and second result in ReportUtils -->
+ <xsl:for-each
+ select="/diff/first/test-log/[EMAIL PROTECTED] = 'FAILURE' or
+ @result = 'SKIP' or @result='TIMEOUT' or @result='ABORT' or
+ @result = 'ABANDONED' or @result = 'SCRATCH']">
+ <xsl:variable name="result" select="."/>
+ <xsl:variable name="dummy"
+
select="org:apache.beehive.test.tools.tchTools.xsl.util.ReportUtils.putFirstResultPosition(concat($result/test-case/@testunit,'.',$result/@logicalname),position())"/>
+ </xsl:for-each>
+
+ </xsl:template>
+
+ <!-- File test information -->
+ <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- FILES -->
+ <!-- ================================================================ -->
+ <xsl:template name="files">
+ <hr width="100%" size="2"/>
+ <a name="files"/>
+ <center><h2> Files <xsl:if
+ test="$showTopNavigationTool">[<a href="#top"> Top </a>]</xsl:if></h2>
+ </center>
+
+ <table id="filesTable" class="details" border="1" cellspacing="0">
+ <tr>
+ <th class="name">
+ Test log files:
+ </th>
+ <td>
+ [<a target="_blank"><xsl:attribute name="href"><xsl:value-of
+ select="$filebasename"/>.log</xsl:attribute> Log</a>]
+ [<a target="_blank"><xsl:attribute name="href"><xsl:value-of
+ select="$filebasename"/>.debug</xsl:attribute> Debug </a>]
+ [<a target="_blank"><xsl:attribute name="href"><xsl:value-of
+ select="$filebasename"/>.debug-all</xsl:attribute> Debug all
</a>]
+ </td>
+ </tr>
+ <tr>
+ <th class="name">
+ OtherTest Framework files:
+ </th>
+ <td>
+ [<a target="_blank"><xsl:attribute name="href"><xsl:value-of
+ select="$filebasename"/>.gtlf.xml</xsl:attribute> test gtlf </a>]
+ </td>
+ </tr>
+ <tr>
+ <th class="name">
+ Test output:
+ </th>
+ <td>
+ [<a target="_blank"><xsl:attribute name="href"><xsl:value-of
+ select="$filebasename"/>.out</xsl:attribute> test standard
output</a>]
+ </td>
+ </tr>
+ <xsl:if test="$showTestfiles = 1">
+ <tr>
+ <td colspan="2" bgcolor="#ffffe0">
+ <br/>
+ <b><center>files modified/created in test subdir:</center></b>
+ <p/>
+ <xsl:if test="$zipFiles = 'true'">
+ <b><center>Zip of files found below:
+ <a><xsl:attribute
+ name="href"><xsl:value-of
+ select="$zipFileName"/></xsl:attribute><xsl:value-of
+ select="$zipFileName"/>
+ </a>
+ </center></b>
+ <p/>
+ </xsl:if>
+ <b><font color="red">NOTE: </font></b>
+ This information will be invalid if incorrect value is passed for
+ property <i>first.file</i>. For more information, run
+ <i>ant -f build-Test.xml test.report.help
+ </i>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="2">
+ <div style="width:100%;height:200px;color: green;overflow:scroll">
+ <xsl:value-of select="$testFiles"
+ disable-output-escaping="yes"/>
+ </div>
+ </td>
+ </tr>
+ </xsl:if>
+ </table>
+
+ </xsl:template>
+
+ <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- TEST SETUP -->
+ <!-- ================================================================ -->
+ <xsl:template name="metaInfo">
+ <hr width="100%" size="2"/>
+ <a name="metaInfo"/>
+ <center><h2> Setup <xsl:if
+ test="$showTopNavigationTool">[<a href="#top"> Top </a>]</xsl:if></h2>
+ </center>
+
+ <table id="setupTable" class="details" border="1" cellspacing="0">
+ <tr>
+ <th class="name"> Name </th>
+ <th class="value"> Value </th>
+ </tr>
+ <tr>
+ <td> Test type </td>
+ <td> <xsl:value-of select="@testtype"/> </td>
+ </tr>
+ <tr>
+ <td> Release </td>
+ <td> <xsl:value-of select="@release"/> </td>
+ </tr>
+ <tr>
+ <td> Load </td>
+ <td> <xsl:value-of select="@load"/> </td>
+ </tr>
+ <tr>
+ <td> Branch </td>
+ <td> <xsl:value-of select="@branch"/> </td>
+ </tr>
+ <tr>
+ <td> String </td>
+ <td> <xsl:value-of select="@string"/> </td>
+ </tr>
+ <tr>
+ <td> Change number </td>
+ <td> <xsl:value-of select="@changenumber"/> </td>
+ </tr>
+ <tr>
+ <td> Analyzer </td>
+ <td> <xsl:value-of select="@analyzer"/> </td>
+ </tr>
+ <tr>
+ <td> Hostname </td>
+ <td> <xsl:value-of select="@hostname"/> </td>
+ </tr>
+ <tr>
+ <td> Top test file </td>
+ <td> <xsl:value-of select="@toptestfile"/> </td>
+ </tr>
+ <tr>
+ <td> Run id </td>
+ <td> <xsl:value-of select="@runid"/> </td>
+ </tr>
+ <tr>
+ <th class="name"> Environment </th>
+ <th class="name"> -- </th>
+ </tr>
+ <tr>
+ <td> JVM Name </td>
+ <td> <xsl:value-of select=
+ "environment/[EMAIL PROTECTED] = 'JVM_Name']/@value"/>
+ </td>
+ </tr>
+ <tr>
+ <td> JVM Mode </td>
+ <td> <xsl:value-of
+ select="environment/[EMAIL PROTECTED] 'JVM_Mode']/@value"/>
+ </td>
+ </tr>
+ <tr>
+ <td> OS </td>
+ <td> <xsl:value-of
+ select="environment/[EMAIL PROTECTED] = 'OS']/@value"/>
+ </td>
+ </tr>
+ <tr>
+ <td> JVM version </td>
+ <td> <xsl:value-of
+ select="environment/[EMAIL PROTECTED] = 'JVM_Version']/@value"/>
+ </td>
+ </tr>
+ <tr>
+ <td> Native IO </td>
+ <td> <xsl:value-of
+ select="environment/[EMAIL PROTECTED] = 'NativeIO']/@value"/>
+ </td>
+ </tr>
+ <tr>
+ <th class="name"> Header Info: </th>
+ <th class="name"> -- </th>
+ </tr>
+ <tr>
+ <td> Exec account </td>
+ <td> <xsl:value-of select="header-info/@execaccount"/> </td>
+ </tr>
+ <tr>
+ <td> Exec date </td>
+ <td> <xsl:value-of select="header-info/@execdate"/> </td>
+ </tr>
+ <tr>
+ <td> Checksum </td>
+ <td> <xsl:value-of select="header-info/@checksum"/> </td>
+ </tr>
+ <tr>
+ <td> Result count </td>
+ <td> <xsl:value-of select="header-info/@resultcount"/> </td>
+ </tr>
+ <tr>
+ <td> Harness type </td>
+ <td> <xsl:value-of select="header-info/@harnesstype"/> </td>
+ </tr>
+ <tr>
+ <td> Import info </td>
+ <td> <xsl:value-of select="header-info/@importinfo"/> </td>
+ </tr>
+ <tr>
+ <td> Test run type </td>
+ <td> <xsl:value-of select="header-info/@testruntype"/> </td>
+ </tr>
+ </table>
+ </xsl:template>
+
+ <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- ERROR SUMMARY -->
+ <!-- ================================================================ -->
+ <xsl:template name="testResultErrorSummary">
+ <hr width="100%" size="2"/>
+ <a name="testResultErrorSummary"/>
+ <center>
+ <h2> Error Summary <xsl:if
+ test="$showTopNavigationTool">[<a href="#top"> Top </a>]</xsl:if></h2>
+ </center>
+
+ <xsl:variable name="errorTestResults"
+ select="/test-log/[EMAIL PROTECTED] = 'FAILURE' or
+ @result = 'SKIP' or @result='TIMEOUT' or @result='ABORT' or
+ @result = 'ABANDONED' or @result = 'SCRATCH']"/>
+
+ <xsl:if test="$showTheFilters = 1">
+ <!-- +++++++++++++++++++++++++++++++++ Filter Table ++++++++++++++++ -->
+
+ <table cellpadding="0" cellspacing="0" border="0"
+ style="background-color: rgb(255, 255, 255);border-left: none;
+ border-top: none; border-right: none; border-bottom: none" >
+
+ <!-- filter form elements -->
+ <tr>
+ <td cellpadding="0" cellspacing="0" border="0"
+ style="background-color: rgb(255, 255, 255);border-left: none;
+ border-top: none; border-right: none; border-bottom: none" >
+ <form name="errorSummaryFilter"
+ onsubmit="TF_filterTable(document.getElementById
+ ('errorSummaryTable'),document.errorSummaryFilter);
+ return false"
+ onreset="_TF_showAll(document.getElementById
+ ('errorSummaryTable'))">
+
+ <!-- form element table -->
+ <table cellpadding="0" cellspacing="0" border="0"
+ style="background-color: rgb(255, 255, 255);border-left: none;
+ border-top: none; border-right: none; border-bottom: none" >
+ <tr>
+ <td cellpadding="0" cellspacing="0" border="0"
+ style="background-color: rgb(255, 255, 255);border-left: none;
+ border-top: none; border-right: none; border-bottom: none" >
+
+ <!-- filter reset -->
+ <input type="button"
+ onclick="document.errorSummaryFilter.reset()"
+ value="Show All"/>
+
+ <!-- Result select -->
+ <xsl:text> </xsl:text>
+ <b>Result: </b>
+ <select TF_colKey="errorSummary_Result"
+ TF_searchType="full"
+ onChange="TF_filterTable(document.getElementById
+ ('errorSummaryTable'), document.errorSummaryFilter)">
+ <option TF_not_used="TRUE">-</option>
+ <xsl:for-each
+ select="$errorTestResults[ generate-id() =
+ generate-id(key('errorTestResults',@result)[1])]">
+ <xsl:sort select="@result"/>
+ <option>
+ <xsl:attribute name="value"><xsl:value-of
+ select = "@result"/></xsl:attribute><xsl:value-of
+ select = "@result"/>
+ </option>
+ </xsl:for-each>
+ <xsl:if test="$showSuccessInErrorSummary = 1">
+ <option value="SUCCESS">SUCCESS</option>
+ </xsl:if>
+ </select>
+
+ <!-- testunit select -->
+ <xsl:text> </xsl:text>
+ <b>Testunit: </b>
+ <select TF_colKey="errorSummary_Name"
+ TF_searchType="full"
+ onChange="TF_filterTable(document.getElementById
+ ('errorSummaryTable'), document.errorSummaryFilter)">
+ <option TF_not_used="TRUE">-</option>
+ <xsl:choose>
+ <xsl:when test="$showSuccessInErrorSummary = 1">
+ <xsl:for-each
+ select="$testResults/test-case[
+ generate-id() =
+ generate-id(key('testUnits', @testunit)[1])]">
+ <xsl:sort select="@testunit"/>
+ <option>
+ <xsl:attribute name="value"><xsl:value-of
+ select = "@testunit"/></xsl:attribute><xsl:value-of
+ select = "@testunit"/>
+ </option>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each
+ select="$errorTestResults/test-case[
+ generate-id() =
+ generate-id(key('errorTestUnits', @testunit)[1])]">
+ <xsl:sort select="@testunit"/>
+ <option>
+ <xsl:attribute name="value"><xsl:value-of
+ select = "@testunit"/></xsl:attribute><xsl:value-of
+ select = "@testunit"/>
+ </option>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </select>
+
+ <!-- testunit search -->
+ <input type="text"
+ TF_colKey="errorSummary_Name"
+ TF_searchType="substring"
+ onkeyup="TF_filterTable(document.getElementById
+ ('errorSummaryTable'), document.errorSummaryFilter)">
+ </input>
+
+ <p/>
+ <xsl:text>       </xsl:text>
+ <xsl:text>       </xsl:text>
+ <xsl:text>    </xsl:text>
+
+ <!-- testcase search -->
+ <xsl:text>  </xsl:text>
+ <b>Testcase search: </b>
+ <input type="text"
+ TF_colKey="errorSummary_LogicalName"
+ TF_searchType="substring"
+ onkeyup="TF_filterTable(document.getElementById
+ ('errorSummaryTable'), document.errorSummaryFilter)">
+ </input>
+
+
+ </td> <!-- filter elements -->
+ </tr> <!-- filter elements row -->
+ </table> <!-- filter element table -->
+ </form> <!-- filter form -->
+ </td>
+ </tr>
+ </table> <!-- filter table -->
+ </xsl:if>
+
+ <!-- iterate all the test units that have an error -->
+ <table id="errorSummaryTable" class="details" border="1"
+ cellspacing="0">
+ <tr>
+ <th class="name"> Time </th>
+ <th class="name"> Testunit</th>
+ <th class="name"> Result </th>
+ <th class="name"> Testcase name</th>
+ </tr>
+ <xsl:choose>
+ <xsl:when test="$showSuccessInErrorSummary = 1">
+ <xsl:for-each select="$testResults">
+ <tr>
+ <td>
+ <xsl:value-of select="@exectime"/>
+ </td>
+ <td TF_colKey="errorSummary_Name">
+ <xsl:attribute name="TF_colValue"><xsl:value-of
+ select = "test-case/@testunit"/></xsl:attribute>
+ <xsl:value-of select="test-case/@testunit"/>
+ </td>
+ <td TF_colKey="errorSummary_Result">
+ <xsl:attribute name="TF_colValue"><xsl:value-of
+ select = "@result"/></xsl:attribute>
+ <xsl:value-of select="@result"/>
+ </td>
+ <td TF_colKey="errorSummary_LogicalName">
+ <xsl:attribute name="TF_colValue"><xsl:value-of
+ select = "@logicalname"/></xsl:attribute>
+ <a>
+ <xsl:if test="$showErrorDetailSection">
+ <xsl:if test="@result != 'SUCCESS'">
+ <xsl:attribute name="href">#next_<xsl:value-of
+ select="concat(test-case/@testpath,
+ @exectime, @logicalname)"/>
+ </xsl:attribute>
+ </xsl:if>
+ </xsl:if>
+ <xsl:value-of select="@logicalname"/>
+ </a>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="$errorTestResults">
+ <tr>
+ <td>
+ <xsl:value-of select="@exectime"/>
+ </td>
+ <td TF_colKey="errorSummary_Name">
+ <xsl:attribute name="TF_colValue"><xsl:value-of
+ select = "test-case/@testunit"/></xsl:attribute>
+ <xsl:value-of select="test-case/@testunit"/>
+ </td>
+ <td TF_colKey="errorSummary_Result">
+ <xsl:attribute name="TF_colValue"><xsl:value-of
+ select = "@result"/></xsl:attribute>
+ <xsl:value-of select="@result"/>
+ </td>
+ <td TF_colKey="errorSummary_LogicalName">
+ <xsl:attribute name="TF_colValue"><xsl:value-of
+ select = "@logicalname"/></xsl:attribute>
+ <a>
+ <xsl:if test="$showErrorDetailSection">
+ <xsl:attribute name="href">#next_<xsl:value-of
+ select="concat(test-case/@testpath,
+ @exectime, @logicalname)"/>
+ </xsl:attribute>
+ </xsl:if>
+ <xsl:value-of select="@logicalname"/>
+ </a>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+
+
+
+ </table>
+ </xsl:template>
+
+ <!-- Test results that were not success -->
+ <xsl:key name="errorTestUnits"
+ match="/test-log/[EMAIL PROTECTED] = 'FAILURE' or
+ @result = 'SKIP' or @result='TIMEOUT' or @result='ABORT' or
+ @result = 'ABANDONED' or @result = 'SCRATCH']/test-case"
+ use="@testunit"/>
+ <xsl:key name="errorTestResults"
+ match="/test-log/[EMAIL PROTECTED] = 'FAILURE' or
+ @result = 'SKIP' or @result='TIMEOUT' or @result='ABORT' or
+ @result = 'ABANDONED' or @result = 'SCRATCH']"
+ use="@result"/>
+
+ <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- ERROR DETAIL -->
+ <!-- ================================================================ -->
+ <xsl:template name="testResultWithErrors">
+ <hr width="100%" size="2"/>
+ <a name="testResultWithErrors"/>
+ <center>
+ <h2> Error Detail <xsl:if
+ test="$showTopNavigationTool">[<a href="#top"> Top </a>] </xsl:if></h2>
+ </center>
+
+ <!-- iterate all the test units that have an error -->
+ <xsl:variable name="errorTestResults"
+ select="/test-log/[EMAIL PROTECTED] = 'FAILURE' or
+ @result = 'SKIP' or @result='TIMEOUT' or @result='ABORT' or
+ @result = 'ABANDONED' or @result = 'SCRATCH']"/>
+
+
+
+
+ <xsl:for-each
+ select="$errorTestResults/test-case[
+ generate-id() =
+ generate-id(key('errorTestUnits', @testunit)[1])]">
+ <xsl:variable name="pos" select="position()"/>
+ <xsl:variable name="errorTestUnit" select="@testunit"/>
+ <hr width="100%" size="2"/>
+
+
+ <a><xsl:attribute name="name">testErrors_<xsl:value-of
+ select="@testunit"/></xsl:attribute></a>
+ [<a href="#summaryByTestUnit"> Result Detail</a>]
+ <xsl:if
+ test="$showTopNavigationTool"> [<a href="#top"> Top </a>] </xsl:if>
+
+
+ <xsl:if test="$showTheFilters = 1">
+ <!-- +++++++++++++++++++++++++++++++++ Filter Table ++++++++++++++++ -->
+
+
+
+ <table cellpadding="0" cellspacing="0" border="0"
+ style="background-color: rgb(255, 255, 255);border-left: none;
+ border-top: none; border-right: none; border-bottom: none" >
+
+ <xsl:variable
name="tf_enableFilter">TF_enableFilter(document.getElementById('errorDetailTable<xsl:value-of
select="$pos"/>'), document.errorDetailFilter<xsl:value-of select="$pos"/>,
this)</xsl:variable>
+ <xsl:variable
name="tf_filterTable">TF_filterTable(document.getElementById('errorDetailTable<xsl:value-of
select="$pos"/>'), document.errorDetailFilter<xsl:value-of
select="$pos"/>)</xsl:variable>
+ <xsl:variable
name="tf_showAll">TF_showAll(document.getElementById('errorDetailTable<xsl:value-of
select="$pos"/>'))</xsl:variable>
+
+ <!-- filter form elements -->
+ <tr>
+ <td cellpadding="0" cellspacing="0" border="0"
+ style="background-color: rgb(255, 255, 255);border-left: none;
+ border-top: none; border-right: none; border-bottom: none" >
+ <form>
+ <xsl:attribute name="name">errorDetailFilter<xsl:value-of
+ select="$pos"/></xsl:attribute>
+ <xsl:attribute name="onsubmit"><xsl:value-of
+ select="$tf_filterTable"/></xsl:attribute>
+ <xsl:attribute name="onreset"><xsl:value-of
+ select="$tf_showAll"/></xsl:attribute>
+
+ <!-- form element table -->
+ <table cellpadding="0" cellspacing="0" border="0"
+ style="background-color: rgb(255, 255, 255);border-left: none;
+ border-top: none; border-right: none; border-bottom: none" >
+ <tr>
+ <td cellpadding="0" cellspacing="0" border="0"
+ style="background-color: rgb(255, 255, 255);border-left: none;
+ border-top: none; border-right: none; border-bottom: none" >
+
+ <!-- testunit select -->
+ <xsl:text>  </xsl:text>
+ <select TF_colKey="errorDetail_Cell"
+ TF_searchType="substring"
+ multiple="multiple"
+ size="3">
+ <xsl:attribute name="onchange"><xsl:value-of
+ select="$tf_filterTable"/></xsl:attribute>
+ <option TF_not_used="TRUE">-</option>
+
+ <option value="ExecutionOutput">Execution output</option>
+ <option
+ value="LogicalTestCaseName">Logical Testcase name</option>
+ <option value="TestParameters">Test parameters</option>
+ <option value="Result">Result</option>
+ <option value="TestPath">Testpath</option>
+ <option value="TestUnit">TestUnit</option>
+ <option value="ExecutionTime">Execution time</option>
+ <xsl:if test="$showFeatureInfo = 1">
+ <option value="BugDetective">BugDetective cmds</option>
+ </xsl:if>
+ <xsl:if test="boolean(test-replication)">
+ <option value="Replication">Replication cmds</option>
+ </xsl:if>
+ <option
+ value="TestCaseName">Testcase name</option>
+ </select>
+
+ <!-- testcase search -->
+ <xsl:text>  </xsl:text>
+ <b>Search (outupt, param): </b>
+ <input type="text"
+ TF_colKey="errorDetail_Cell"
+ TF_searchType="substring">
+ <xsl:attribute name="onkeyup"><xsl:value-of
+ select="$tf_filterTable"/></xsl:attribute>
+ </input>
+
+ </td>
+ </tr>
+ </table>
+ </form>
+ </td>
+ </tr>
+ </table> <!-- filter table -->
+ </xsl:if>
+ <!-- error detail table -->
+ <table border="1" class="details" cellspacing="0">
+ <xsl:attribute name="id">errorDetailTable<xsl:value-of
select="$pos"/></xsl:attribute>
+ <tr>
+ <th class="title" colspan="2">
+ <xsl:value-of select="@testunit"/>
+ <xsl:if test="$showTopNavigationTool">
+ [<a href="#top"> Top </a>]</xsl:if>
+ </th>
+ </tr>
+ <xsl:for-each
+ select="$errorTestResults[test-case/@testunit = $errorTestUnit]">
+ <xsl:variable name="pos" select="position()"/>
+ <tr>
+ <th class="name"> Name</th>
+ <th class="name" width="90%" style="text-align:left">
+ <a>
+ <xsl:attribute name="name">next_<xsl:value-of
+ select="concat(test-case/@testpath,
+ @exectime, @logicalname)"/>
+ </xsl:attribute>
+ </a>
+ <!-- Vishal: disabling next and previous as it's a big perofmance hit.
+ We can't use RTF as we run into a xalan (DTM) bug
+ in jdk 1.4.1
+
+ <xsl:variable name="nextTestResult"
+ select="following-sibling::[EMAIL PROTECTED] =
'FAILURE' or
+ @result = 'SKIP' or @result='TIMEOUT' or
+ @result='ABORT' or @result = 'ABANDONED' or
+ @result = 'SCRATCH'][1]"/>
+ <xsl:variable name="previousTestResult"
+ select="preceding-sibling::[EMAIL PROTECTED] =
'FAILURE' or
+ @result = 'SKIP' or @result='TIMEOUT' or
+ @result='ABORT' or @result = 'ABANDONED' or
+ @result = 'SCRATCH'][1]"/>
+ <xsl:value-of select="nextTestResult"/>
+ [
+ <xsl:if test="$showTopNavigationTool">
+ <a href="#top">Top</a>]</xsl:if>
+ [
+ <a>
+ <xsl:if test="$showErrorDetailSection">
+ <xsl:attribute name="href">#next_<xsl:value-of
+ select="concat($nextTestResult/test-case/@testpath,
+ $nextTestResult/@exectime, $nextTestResult/@logicalname)"/>
+ </xsl:attribute>
+ </xsl:if>
+ next
+ </a>]
+ [
+ <a>
+ <xsl:if test="$showErrorDetailSection">
+ <xsl:attribute name="href">#next_<xsl:value-of
+ select="concat($previousTestResult/test-case/@testpath,
+ $previousTestResult/@exectime,
+ $previousTestResult/@logicalname)"/>
+ </xsl:attribute>
+ </xsl:if>
+ Prev.
+ </a>]
+ --> <!-- turning off next/previous -->
+ Value</th>
+ </tr>
+ <tr>
+ <td width="10%">
+ TestUnit
+ </td>
+ <td TF_colKey="errorDetail_Cell" width="90%"
+ TF_colValue="TestUnit">
+ <xsl:value-of select="test-case/@testunit"/>
+ </td>
+ </tr>
+ <tr>
+ <td width="10%">
+ Result
+ </td>
+ <td TF_colKey="errorDetail_Cell" width="90%"
+ TF_colValue="Result">
+ <xsl:value-of select="@result"/>
+ </td>
+ </tr>
+ <tr>
+ <td width="10%">
+ Execution time
+ </td>
+ <td TF_colKey="errorDetail_Cell" width="90%"
+ TF_colValue="ExecutionTime">
+ <xsl:value-of select="@exectime"/>
+ </td>
+ </tr>
+ <xsl:if test="$showFeatureInfo = 1">
+ <tr>
+ <td TF_colKey="errorDetail_Cell" TF_colValue="BugDetective"
+ width="10%"> BugDetective cmd's</td>
+ <td>
+ <table border="1" class="details" cellspacing="0">
+ <tr>
+ <th width="10%"> Run cmd </th>
+ <td TF_colKey="errorDetail_Cell" width="90%"
+ TF_colValue="RunCmd">
+ <font color="blue"><i>ant -f build-Test.xml run
-Dfeature=<xsl:value-of select="$feature"/>
-DTEST_ARGS="-Dcoconut.filter.test-level=4 -Dcoconut.string=4
-Dcoconut.test-names=<xsl:value-of select="test-case/@testunit"/>.<xsl:value-of
select="@logicalname"/>"</i></font>
+ </td>
+ </tr>
+ <tr>
+ <th width="10%"> Coverage cmd </th>
+ <td TF_colKey="errorDetail_Cell" width="90%"
+ TF_colValue="CoverageCmd">
+ <font color="blue"><i>ant -f build-Test.xml coverage.all
-Dfeature=<xsl:value-of select="$feature"/>
-DTEST_ARGS="-Dcoconut.filter.test-level=4 -Dcoconut.string=4
-Dcoconut.test-names=<xsl:value-of select="test-case/@testunit"/>.<xsl:value-of
select="@logicalname"/>"</i></font>
+ </td>
+ </tr>
+ <tr>
+ <th width="10%"> Inspect cmd </th>
+ <td TF_colKey="errorDetail_Cell" width="90%"
+ TF_colValue="InspectCmd">
+ <font color="blue"><i>ant -f build-Test.xml inspect.all
-Dfeature=<xsl:value-of select="$feature"/>
-DTEST_ARGS="-Dcoconut.filter.test-level=4 -Dcoconut.string=4
-Dcoconut.test-names=<xsl:value-of select="test-case/@testunit"/>.<xsl:value-of
select="@logicalname"/>"</i></font>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </xsl:if>
+ <tr>
+ <td width="10%">
+ Logical Testcase name
+ </td>
+ <td TF_colKey="errorDetail_Cell" width="90%" >
+ <xsl:attribute name="TF_colValue">LogicalTestCaseName<xsl:value-of
+ select = "execution-output/output-details"/><xsl:value-of
+ select = "test-parameters"/></xsl:attribute>
+ <xsl:value-of select="@logicalname"/>
+ </td>
+ </tr>
+ <tr>
+ <td width="10%">
+ Testcase name
+ </td>
+ <td TF_colKey="errorDetail_Cell" width="90%"
+ TF_colValue="TestCaseName">
+ <xsl:value-of select="test-case/@testcasename"/>
+ </td>
+ </tr>
+ <tr>
+ <td width="10%">
+ Test path
+ </td>
+ <td TF_colKey="errorDetail_Cell" width="90%"
+ TF_colValue="TestPath">
+ <xsl:value-of select="test-case/@testpath"/>
+ </td>
+ </tr>
+ <tr>
+ <td width="10%">
+ execution output
+ </td>
+ <td TF_colKey="errorDetail_Cell" width="90%" >
+ <xsl:attribute name="TF_colValue">ExecutionOutput<xsl:value-of
+ select = "execution-output/output-details"/></xsl:attribute>
+ <font color="red">
+ <pre wrap="true">
+ <xsl:value-of select="execution-output/output-details"/>
+ </pre>
+ </font>
+ </td>
+ </tr>
+ <!--
+ 3/7/2004 Vishal - Test replication is a new feature, and we
+ should display it in the report on if the
+ data is there in the xml file.
+ -->
+ <xsl:if test="boolean(test-replication)">
+ <tr>
+ <td TF_colKey="errorDetail_Cell" TF_colValue="Replication"
+ width="10%"> Replication </td>
+ <td>
+ <table border="1" class="details" cellspacing="0">
+ <tr>
+ <th width="10%"> info</th>
+ <td><font color="blue"><xsl:value-of
+ select="test-replication/info"/></font></td>
+ </tr>
+ <tr>
+ <th width="10%"> unix cmd.</th>
+ <td><font color="blue"><xsl:value-of
+ select="test-replication/command-line/unix"/></font></td>
+ </tr>
+ <tr>
+ <th width="10%"> win cmd.</th>
+ <td><font color="blue"><xsl:value-of
+ select="test-replication/command-line/win"/></font></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </xsl:if>
+ <tr>
+ <td width="10%">
+ test parameters
+ </td>
+ <td TF_colKey="errorDetail_Cell" width="90%">
+ <xsl:attribute name="TF_colValue">TestParameters<xsl:value-of
+ select = "test-parameters"/></xsl:attribute>
+ <font color="darkgreen">
+ <pre wrap="true">
+ <xsl:value-of select="test-parameters"/>
+ </pre>
+ </font>
+ </td>
+ </tr>
+ <xsl:variable name="prevTestResult"
+ select="concat(test-case/@testpath, @exectime, @logicalname)"/>
+ </xsl:for-each>
+ </table>
+ </xsl:for-each>
+ </xsl:template>
+
+ <xsl:key name="testUnits"
+ match="/test-log/test-result/test-case"
+ use="@testunit"/>
+ <xsl:key name="successTestUnits"
+ match="/test-log/[EMAIL PROTECTED] = 'SUCCESS']/test-case"
+ use="@testunit"/>
+ <xsl:key name="failTestUnits"
+ match="/test-log/[EMAIL PROTECTED] = 'FAILURE']/test-case"
+ use="@testunit"/>
+ <xsl:key name="skipTestUnits"
+ match="/test-log/[EMAIL PROTECTED] = 'SKIP']/test-case"
+ use="@testunit"/>
+ <xsl:key name="timeoutTestUnits"
+ match="/test-log/[EMAIL PROTECTED] = 'TIMEOUT']/test-case"
+ use="@testunit"/>
+ <xsl:key name="abortTestUnits"
+ match="/test-log/[EMAIL PROTECTED] = 'ABORT']/test-case"
+ use="@testunit"/>
+ <xsl:key name="abandonedTestUnits"
+ match="/test-log/[EMAIL PROTECTED] = 'ABANDONED']/test-case"
+ use="@testunit"/>
+ <xsl:key name="scratchTestUnits"
+ match="/test-log/[EMAIL PROTECTED] = 'SCRATCH']/test-case"
+ use="@testunit"/>
+
+
+ <!-- Summary of the test run by test unit -->
+ <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- RESULT DETAIL -->
+ <!-- ================================================================ -->
+ <xsl:template name="summaryByTestUnit">
+ <hr width="100%" size="2"/>
+ <a name="summaryByTestUnit"/>
+ <center>
+ <h2> Result Detail <xsl:if
+ test="$showTopNavigationTool">[<a href="#top"> Top </a>]</xsl:if></h2>
+ </center>
+
+ <xsl:if test="$showTheFilters = 1">
+ <!-- +++++++++++++++++++++++++++++++++ Filter Table ++++++++++++++++ -->
+
+ <table cellpadding="0" cellspacing="0" border="0"
+ style="background-color: rgb(255, 255, 255);border-left: none;
+ border-top: none; border-right: none; border-bottom: none" >
+
+ <!-- filter form elements -->
+ <tr>
+ <td cellpadding="0" cellspacing="0" border="0"
+ style="background-color: rgb(255, 255, 255);border-left: none;
+ border-top: none; border-right: none; border-bottom: none" >
+ <form name="resultSummaryFilter"
+ onsubmit="TF_filterTable(document.getElementById
+ ('resultSummaryTable'),document.resultSummaryFilter);
+ return false"
+ onreset="_TF_showAll(document.getElementById
+ ('resultSummaryTable'))">
+
+ <!-- form element table -->
+ <table cellpadding="0" cellspacing="0" border="0"
+ style="background-color: rgb(255, 255, 255);border-left: none;
+ border-top: none; border-right: none; border-bottom: none" >
+ <tr>
+ <td cellpadding="0" cellspacing="0" border="0"
+ style="background-color: rgb(255, 255, 255);border-left: none;
+ border-top: none; border-right: none; border-bottom: none" >
+
+ <!-- filter reset -->
+ <input type="button"
+ onclick="document.resultSummaryFilter.reset()"
+ value="Show all"/>
+ <xsl:text> </xsl:text>
+
+ <!-- result select -->
+ <xsl:text> </xsl:text>
+ <b>Result: </b>
+ <select TF_colKey="resultSummary_Error"
+ TF_searchType="substring"
+ onChange="TF_filterTable(document.getElementById
+ ('resultSummaryTable'), document.resultSummaryFilter)">
+ <option TF_not_used="TRUE">-</option>
+ <option value="ERRORS">Errors</option>
+ <option value="ALL_SUCCESS">No Errors</option>
+ </select>
+
+ <!-- testunit select -->
+ <xsl:text> </xsl:text>
+ <b>Testunit: </b>
+ <select TF_colKey="resultSummary_Name"
+ TF_searchType="full"
+ onChange="TF_filterTable(document.getElementById
+ ('resultSummaryTable'), document.resultSummaryFilter)">
+ <option TF_not_used="TRUE">-</option>
+
+ <xsl:for-each
+ select="/test-log/test-result/test-case[
+ generate-id() =
+ generate-id(key('testUnits', @testunit)[1])]">
+ <xsl:sort select="@testunit"/>
+ <option>
+ <xsl:attribute name="value"><xsl:value-of
+ select = "@testunit"/></xsl:attribute><xsl:value-of
+ select = "@testunit"/>
+ </option>
+ </xsl:for-each>
+ </select>
+
+ <!-- testcase search -->
+ <input type="text"
+ TF_colKey="resultSummary_Name"
+ TF_searchType="substring"
+ onkeyup="TF_filterTable(document.getElementById
+ ('resultSummaryTable'), document.resultSummaryFilter)">
+ </input>
+
+
+ </td>
+ </tr>
+ </table>
+ </form>
+ </td>
+ </tr>
+ </table> <!-- filter table -->
+ </xsl:if>
+ <table id="resultSummaryTable" class="details" border="1"
cellspacing="0">
+ <tr>
+ <th class="name">Test Unit name</th>
+ <th class="name">Total</th>
+ <th class="name">Pass</th>
+ <th class="name">Fail</th>
+ <th class="name">Skip</th>
+ <th class="name">Timeout</th>
+ <th class="name">Abort</th>
+ <th class="name">Abandoned</th>
+ <th class="name">Scratch</th>
+ <th class="name">Duration (min.)</th>
+ </tr>
+ <xsl:for-each
+ select="test-result/test-case[ generate-id() =
+ generate-id(key('testUnits', @testunit)[1])]">
+ <xsl:sort select="@testunit"/>
+
+ <xsl:variable name="currentTestUnit" select="@testunit"/>
+
+ <tr>
+ <td TF_colKey="resultSummary_Name">
+ <xsl:attribute name="TF_colValue"><xsl:value-of
+ select = "@testunit"/></xsl:attribute>
+ <xsl:if test="count(key('testUnits',@testunit)) =
+ count(key('successTestUnits', @testunit))">
+ <xsl:value-of select = "@testunit"/>
+ </xsl:if>
+ <xsl:if test="count(key('testUnits',@testunit)) !=
+ count(key('successTestUnits', @testunit))">
+ <a>
+ <xsl:if test="$showErrorDetailSection">
+ <xsl:attribute name="href">#testErrors_<xsl:value-of
+ select = "@testunit"/></xsl:attribute>
+ </xsl:if>
+ <xsl:value-of select = "@testunit"/>
+ </a>
+ </xsl:if>
+ </td>
+
+ <xsl:variable name="totalTuTests" select=
+ "count(key('testUnits',@testunit))"/>
+ <xsl:variable name="successTests" select=
+ "count(key('successTestUnits', @testunit))"/>
+ <xsl:variable name="failTests" select=
+ "count(key('failTestUnits', @testunit))"/>
+ <xsl:variable name="skipTests" select=
+ "count(key('skipTestUnits', @testunit))"/>
+ <xsl:variable name="timeoutTests" select=
+ "count(key('timeoutTestUnits', @testunit))"/>
+ <xsl:variable name="abortTests" select=
+ "count(key('abortTestUnits', @testunit))"/>
+ <xsl:variable name="abandonedTests" select=
+ "count(key('abandonedTestUnits', @testunit))"/>
+ <xsl:variable name="scratchTests" select=
+ "count(key('scratchTestUnits', @testunit))"/>
+
+ <td>
+ <xsl:value-of select="$totalTuTests"/>
+ </td>
+ <td TF_colKey="resultSummary_Error">
+ <xsl:attribute name="TF_colValue">
+ <xsl:if test="$totalTuTests != $successTests">
+ <xsl:text>ERRORS</xsl:text>
+ </xsl:if>
+ <xsl:if test="$totalTuTests = $successTests">
+ <xsl:text>ALL_SUCCESS</xsl:text>
+ </xsl:if>
+ </xsl:attribute>
+ <xsl:value-of select="$successTests"/>
+ </td>
+ <td>
+ <xsl:if test="$failTests > 0">
+ <font color="red">
+ <xsl:value-of select="$failTests"/>
+ </font>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ </td>
+ <td>
+ <xsl:if test="$skipTests > 0">
+ <font color="red">
+ <xsl:value-of select="$skipTests"/>
+ </font>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ </td>
+ <td>
+ <xsl:if test="$timeoutTests > 0">
+ <font color="red">
+ <xsl:value-of select="$timeoutTests"/>
+ </font>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ </td>
+ <td>
+ <xsl:if test="$abortTests > 0">
+ <font color="red">
+ <xsl:value-of select="$abortTests"/>
+ </font>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ </td>
+ <td>
+ <xsl:if test="$abandonedTests > 0">
+ <font color="red">
+ <xsl:value-of select="$abandonedTests"/>
+ </font>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ </td>
+ <td>
+ <xsl:if test="$scratchTests > 0">
+ <font color="red">
+ <xsl:value-of select="$scratchTests"/>
+ </font>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ </td>
+ <td>
+ <xsl:variable name="tuTime"
+ select="format-number(sum(/test-log/test-result
+ [test-case/@testunit= $currentTestUnit]/@duration) div 1000 div
60,
+ '#.##')"/>
+ <xsl:value-of select="$tuTime"/>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </table>
+ </xsl:template>
+
+ <!-- Creates the test run summary table -->
+ <xsl:variable name="totalTime"
+ select="format-number(sum(/test-log/test-result/@duration)
+ div 1000 div 60, '#.##')"/>
+ <xsl:variable name="totalTests" select="count(/test-log/test-result)"/>
+ <xsl:variable name="testResults" select="/test-log/test-result"/>
+
+
+ <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- REPORT SUMMARY -->
+ <!-- ================================================================ -->
+ <xsl:template name="reportSummary">
+ <hr width="100%" size="2"/>
+ <a name="reportSummary"/>
+ <center>
+ <h2> Report Summary <xsl:if
+ test="$showTopNavigationTool">[<a href="#top"> Top </a>]</xsl:if></h2>
+ </center>
+
+ <xsl:variable name="successTests" select=
+ "count([EMAIL PROTECTED] = 'SUCCESS'])"/>
+ <xsl:variable name="failTests" select=
+ "count([EMAIL PROTECTED] = 'FAILURE'])"/>
+ <xsl:variable name="skipTests" select=
+ "count([EMAIL PROTECTED] = 'SKIP'])"/>
+ <xsl:variable name="timeoutTests" select=
+ "count([EMAIL PROTECTED] = 'TIMEOUT'])"/>
+ <xsl:variable name="abortTests" select=
+ "count([EMAIL PROTECTED] = 'ABORT'])"/>
+ <xsl:variable name="abandonedTests" select=
+ "count([EMAIL PROTECTED] = 'ABANDONED'])"/>
+ <xsl:variable name="scratchTests" select=
+ "count([EMAIL PROTECTED] = 'SCRATCH'])"/>
+
+ <table style="margin-bottom:0em" class="details" border="1"
+ cellspacing="0"> <!-- result summary description -->
+ <tr> <!-- summary description -->
+ <tr> <!-- start of error statement -->
+ <!-- run problem or clean run -->
+ <xsl:choose>
+ <!-- no result , problem -->
+ <xsl:when test="$totalTests = 0">
+ <td colspan="2">
+ <b>
+ <span style="color: rgb(155, 0, 0);font-size:15 pt">
+ <xsl:text>  </xsl:text>
+ No test were found, problem running tests.
+ </span></b>
+ </td>
+ <td colspan="7" style="padding:0px;background-color:rgb(255, 0,
0);font-size:10pt"><b><center>:-(</center></b></td>
+ </xsl:when>
+ <!-- clean run -->
+ <xsl:when test="$totalTests = $successTests">
+ <td colspan="2">
+ <b>
+ <span style="color: rgb(0, 153, 0);font-size:15 pt">
+ <xsl:text>  </xsl:text>
+ Clean run
+ </span></b>
+ </td>
+ <td colspan="7" style="padding:0px;background-color:rgb(0, 255,
0)
+ ;font-size:10pt"><b><center>:-)</center></b></td>
+ </xsl:when>
+ </xsl:choose>
+ </tr> <!-- end of clean run check -->
+ <!-- test has failures -->
+ <xsl:if test="not($totalTests = $successTests)">
+ <tr> <!-- start of failure -->
+ <td colspan="9"> <!-- not a clean run -->
+
+ <!-- summary description table -->
+ <table style="margin-bottom:0em" stype="border=0">
+ <tr><td>
+ <b>
+ <span style="color: rgb(153, 0, 0);font-size:12 pt">
+ <xsl:text>  </xsl:text>Not a clean run :-(.
+ </span>
+ </b>
+ <xsl:text> </xsl:text>Total Errors: [<font
+ style="padding:0px;color:rgb(255, 0,0);
+ font-size:10pt"> <xsl:value-of
+ select="$totalTests - $successTests"/></font> / <xsl:value-of
+ select="$totalTests"/>]
+ <p/>
+ <ul>
+ <li>
+ Go to <a href="#testResultErrorSummary"> Error summary </a>
+ section, to view New/Old problem in a table.
+ </li>
+ </ul>
+ <p/>
+ <table style="margin-bottom:0em"
+ cellspacing="0"> <!-- problem bug table -->
+ <tr><td>
+
+ <p/>
+
+ <xsl:for-each select="$testResults">
+
+ <xsl:variable name="testResult" select="."/>
+
+ <xsl:variable name="testUnit"
+ select="string($testResult/test-case/@testunit)"/>
+ <xsl:variable name="logicalName"
+ select="string($testResult/@logicalname)"/>
+ <xsl:variable name="execTime"
+ select="string($testResult/@exectime)"/>
+ <xsl:variable name="testPath"
+ select="string($testResult/test-case/@testpath)"/>
+
+ <xsl:if test="not((position()-1) mod 100)">
+ [<xsl:value-of
+ select="substring($execTime,12,8)"/>]
+ </xsl:if>
+
+ <xsl:if test="not((position() - 1) mod 25)">
+ |
+ </xsl:if>
+
+ <xsl:variable name="result" select="$testResult/@result"/>
+ <!-- success -->
+ <xsl:if test="$result = 'SUCCESS'">
+ <font style="padding:0px;background-color:Chartreuse;
+ font-size:10pt"><xsl:attribute
+ name="onMouseover">ddrivetip('<xsl:value-of
+
select="$testUnit"></xsl:value-of>','Chartreuse')</xsl:attribute><xsl:attribute
+ name="onMouseout">hideddrivetip()</xsl:attribute>.</font>
+ </xsl:if>
+
+ <!-- failure -->
+ <xsl:if test="$result = 'FAILURE'">
+ <font style="padding:0px;background-color:hotpink;
+ font-size:10pt"><a>
+ <xsl:if test="$showErrorDetailSection">
+ <xsl:attribute
+ name="href">#next_<xsl:value-of
+ select="concat($testPath, $execTime,
+ $logicalName)"/>
+ </xsl:attribute></xsl:if><xsl:attribute
+ name="onMouseover">ddrivetip('<xsl:value-of
+
select="concat($testUnit,'.',$logicalName)"/>','hotpink')</xsl:attribute><xsl:attribute
+ name="onMouseout">hideddrivetip()</xsl:attribute>.</a></font>
+ </xsl:if>
+
+ <!-- skip -->
+ <xsl:if test="$result = 'SKIP'">
+ <font style="padding:0px;background-color:cornflowerblue;
+ font-size:10pt"><a>
+ <xsl:if test="$showErrorDetailSection">
+ <xsl:attribute
+ name="href">#next_<xsl:value-of
+ select="concat($testPath, $execTime,
+ $logicalName)"/>
+ </xsl:attribute></xsl:if><xsl:attribute
+ name="onMouseover">ddrivetip('<xsl:value-of
+
select="concat($testUnit,'.',$logicalName)"></xsl:value-of>','cornflowerblue')</xsl:attribute><xsl:attribute
+ name="onMouseout">hideddrivetip()</xsl:attribute>.</a></font>
+
+ </xsl:if>
+
+ <!-- timeout -->
+ <xsl:if test="$result = 'TIMEOUT'">
+ <font style="padding:0px;background-color:yellow;
+ font-size:10pt"><a>
+ <xsl:if test="$showErrorDetailSection">
+ <xsl:attribute
+ name="href">#next_<xsl:value-of
+ select="concat($testPath, $execTime,
+ $logicalName)"/>
+ </xsl:attribute></xsl:if><xsl:attribute
+ name="onMouseover">ddrivetip('<xsl:value-of
+
select="concat($testUnit,'.',$logicalName)"></xsl:value-of>','yellow')</xsl:attribute><xsl:attribute
+ name="onMouseout">hideddrivetip()</xsl:attribute>.</a></font>
+ </xsl:if>
+
+ <!-- Not a Success, failure, skip or timeout -->
+ <xsl:if test="not($result = 'TIMEOUT' or
+ $result = 'SUCCESS' or
+ $result = 'FAILURE' or
+ $result = 'SKIP')">
+ <font style="padding:0px;background-color:Darkgray;
+ font-size:10pt"><a>
+ <xsl:if test="$showErrorDetailSection">
+ <xsl:attribute
+ name="href">#next_<xsl:value-of
+ select="concat($testPath, $execTime,
+ $logicalName)"/>
+ </xsl:attribute></xsl:if><xsl:attribute
+ name="onMouseover">ddrivetip('<xsl:value-of
+
select="concat($testUnit,'.',$logicalName)"></xsl:value-of>','Darkgray')</xsl:attribute><xsl:attribute
+ name="onMouseout">hideddrivetip()</xsl:attribute>.</a></font>
+ </xsl:if>
+
+ <!-- wrap the row for every 100 errors -->
+ <xsl:if test="not(position() mod 100)">
+ <xsl:text> </xsl:text><xsl:value-of
+ select="position()"/>]<br/>
+ </xsl:if>
+
+
+ </xsl:for-each>] <!-- each error in -->
+ </td></tr> <!-- bug row -->
+ </table> <!-- bug table -->
+
+ <p/>
+ <!-- bar label -->
+ <table border="1" cellspacing="0" style="margin-bottom:0em">
+ <tr>
+ <th class="title" colspan="9">
+ ResultBar Information
+ </th>
+ </tr>
+ <tr>
+ <td
colspan="9"><xsl:text>      </xsl:text>
+ Each dot in the above ResultBar represents a
+ test in the run.</td>
+ </tr>
+ <tr>
+ <th class="name" colspan="1"
+ style="background-color:hotpink">.</th>
+ <td colspan="4">FAILURE</td>
+ <th class="name" colspan="2">Exec date </th>
+ <td colspan="2"><xsl:value-of
+ select="/test-log/header-info/@execdate"/>
+ </td>
+ </tr>
+ <tr>
+ <th class="name" colspan="1"
+ style="background-color:yellow">.</th>
+ <td colspan="4">TIMEOUT</td>
+ <th class="name" colspan="2"> File </th>
+ <td colspan="2"><xsl:value-of
+ select="$gtlfFileName"/>
+ </td>
+ </tr>
+ <tr>
+ <th class="name" colspan="1"
+ style="background-color:cornflowerblue">.</th>
+ <td colspan="4">SKIP</td>
+ <th class="name" colspan="2"> Change # </th>
+ <td colspan="2"><xsl:value-of
+ select="/test-log/@changenumber"/>
+ </td>
+ </tr>
+ <tr>
+ <th class="name" colspan="1"
+ style="background-color:DarkGray;color:white">.</th>
+ <td colspan="4">ABORT or ABANDONED or SCRATCH</td>
+ <th class="name" colspan="2"> OS</th>
+ <td colspan="2"><xsl:value-of
+ select="/test-log/environment/[EMAIL PROTECTED]
+ = 'OS']/@value"/>
+ </td>
+ </tr>
+ <tr>
+ <th class="name" colspan="1"
+ style="background-color:Chartreuse">.</th>
+ <td colspan="4">SUCCESS</td>
+ <th class="name" colspan="2"> JVM</th>
+ <td colspan="2"><xsl:value-of
+ select="/test-log/environment/[EMAIL PROTECTED]
+ = 'JVM_Name']/@value"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of
+ select="/test-log/environment/[EMAIL PROTECTED]
+ = 'JVM_Version']/@value"/>
+ </td>
+ </tr>
+ </table> <!-- result bar table -->
+
+ </td></tr> <!-- description row row -->
+ </table> <!-- sumarry desc table -->
+
+ </td> <!-- cell with error info -->
+ </tr>
+ </xsl:if> <!-- not a clean run -->
+ </tr> <!-- summary description section -->
+ </table>
+ </xsl:template>
+
+
+
+ <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- RESULT SUMMARY -->
+ <!-- ================================================================ -->
+ <xsl:template name="summary">
+<hr width="100%" size="2"/>
+ <a name="summary"/>
+ <center>
+ <h2> Result Summary <xsl:if
+ test="$showTopNavigationTool">[<a href="#top"> Top </a>]</xsl:if></h2>
+ </center>
+
+ <xsl:variable name="successTests" select=
+ "count([EMAIL PROTECTED] = 'SUCCESS'])"/>
+ <xsl:variable name="failTests" select=
+ "count([EMAIL PROTECTED] = 'FAILURE'])"/>
+ <xsl:variable name="skipTests" select=
+ "count([EMAIL PROTECTED] = 'SKIP'])"/>
+ <xsl:variable name="timeoutTests" select=
+ "count([EMAIL PROTECTED] = 'TIMEOUT'])"/>
+ <xsl:variable name="abortTests" select=
+ "count([EMAIL PROTECTED] = 'ABORT'])"/>
+ <xsl:variable name="abandonedTests" select=
+ "count([EMAIL PROTECTED] = 'ABANDONED'])"/>
+ <xsl:variable name="scratchTests" select=
+ "count([EMAIL PROTECTED] = 'SCRATCH'])"/>
+
+ <table border="1" class="details" cellspacing="0">
+ <tr>
+ <th >Total</th>
+ <th >Pass</th>
+ <th >Fail</th>
+ <th >Skip</th>
+ <th >Timeout</th>
+ <th >Abort</th>
+ <th >Abandoned</th>
+ <th >Scratch</th>
+ <th >Duration (minutes)</th>
+ </tr>
+
+
+
+ <tr>
+ <td>
+ <xsl:value-of select="$totalTests"/>
+ </td>
+ <td>
+
+ <xsl:value-of select="$successTests"/>
+ (<xsl:value-of select="format-number($successTests div $totalTests
+ * 100, '#.##')"/>%)
+ </td>
+ <td>
+ <xsl:if test="$failTests > 0">
+ <font color="red">
+ <xsl:value-of select="$failTests"/>
+ (<xsl:value-of select="format-number($failTests div $totalTests
+ * 100, '#.##')"/>%)
+ </font>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ </td>
+ <td>
+ <xsl:if test="$skipTests > 0">
+ <font color="red">
+ <xsl:value-of select="$skipTests"/>
+ (<xsl:value-of select="format-number($skipTests div $totalTests
+ * 100, '#.##')"/>%)
+ </font>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ </td>
+ <td>
+ <xsl:if test="$timeoutTests > 0">
+ <font color="red">
+ <xsl:value-of select="$timeoutTests"/>
+ (<xsl:value-of select="format-number($timeoutTests div $totalTests
+ * 100, '#.##')"/>%)
+ </font>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ </td>
+ <td>
+ <xsl:if test="$abortTests > 0">
+ <font color="red">
+ <xsl:value-of select="$abortTests"/>
+ (<xsl:value-of select="format-number($abortTests div $totalTests
+ * 100, '#.##')"/>%)
+ </font>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ </td>
+ <td>
+ <xsl:if test="$abandonedTests > 0">
+ <font color="red">
+ <xsl:value-of select="$abandonedTests"/>
+ (<xsl:value-of select="format-number($abandonedTests div
$totalTests
+ * 100, '#.##')"/>%)
+ </font>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ </td>
+ <td>
+ <xsl:if test="$scratchTests > 0">
+ <font color="red">
+ <xsl:value-of select="$scratchTests"/>
+ (<xsl:value-of select="format-number($scratchTests div $totalTests
+ * 100, '#.##')"/>%)
+ </font>
+ </xsl:if>
+ <xsl:text> </xsl:text>
+ </td>
+ <td>
+ <xsl:value-of select="$totalTime"/>
+ </td>
+ </tr>
+ <tr>
+ <table border="0" cellspacing="0">
+ <tr>
+ <td width="17%">
+ <p/>
+ <b>Start time: </b>
+ </td>
+ <td>
+ <p/>
+ <xsl:value-of select="test-result[1]/@exectime"/>
+ </td>
+ <td width="7%">
+ </td>
+ <td width="17%">
+ <p/>
+ <b>End time: </b>
+ </td>
+ <td>
+ <p/>
+ <xsl:value-of select="test-result[last()]/@exectime"/>
+ </td>
+ </tr>
+ </table>
+ </tr>
+ </table>
+
+ </xsl:template>
+
+ <xsl:template name="recordTime">
+ <xsl:param name="message">Time: </xsl:param>
+ <!-- show time only if instrument is turned on (1) -->
+ <xsl:if test="$instrument = 1">
+ [<xsl:value-of
+ select="string(java:util.Date.new())"/>][<xsl:value-of
+ select="string(java:lang.System.currentTimeMillis())"/>]
<xsl:value-of
+ select="$message"/>
+ <br/>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- USEFUL COMMANDS -->
+ <!-- ================================================================ -->
+ <xsl:template name="testCommands">
+ <hr width="100%" size="2"/>
+ <a name="commands"/>
+ <center>
+ <h2> Help/Info <xsl:if
+ test="$showTopNavigationTool">[<a href="#top"> Top </a>]</xsl:if></h2>
+ </center>
+
+ <table class="details" id="commandsTable" border="1" cellspacing="0">
+ <tr>
+ <th class="name" align="left"> ant wrapper <font
color="blue">document</font></th>
+ <td> <font color="green">Help document of the tool that generates this
+ report.</font><br/>
+ <a target="_original"
+
href="http://home/internal/councils/admin/QAdocs/diablo/buildTestHelp.html#usage">http://home/internal/councils/admin/QAdocs/diablo/buildTestHelp.html</a>
+ <p/>Run 'ant -f build-Test.xml doc' to generated document locally.
+
+ </td>
+
+ </tr>
+ <tr>
+ <th class="name" align="left"> ant <font color="blue">html report
</font></th>
+ <td> <font color="green">Command to generated this report</font> 'ant
-f
+ build-Test.xml test.report'<br/>
+ <a target="_original"
href="http://home/internal/councils/admin/QAdocs/diablo/buildTestHelp.html#test.report">http://home/internal/councils/admin/QAdocs/diablo/buildTestHelp.html#test.report</a>
+
+ </td>
+ </tr>
+ <tr>
+ <th class="name" align="left"> new <font color="blue">features
</font></th>
+ <td> <font color="green">new features added to BugWatcher</font><br/>
+ <a target="_original"
href="http://home/internal/councils/admin/QAdocs/diablo/buildTestHelp.html#new.features">http://home/internal/councils/admin/QAdocs/diablo/buildTestHelp.html#new.features</a>
+
+ </td>
+ </tr>
+ </table>
+ </xsl:template>
+
+ <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- REPORT HEADER -->
+ <!-- ================================================================ -->
+ <xsl:template name="header">
+ <a name="top"/>
+ <center>
+ <div style="background-color: skyblue;">
+
+ <xsl:if test="$showSplitNavigationTool">
+ <span style="background-color: white;"
+ onMouseover=
+ "ddrivetip('Split report vertically or horizontally, like
Emacs . NOTE: It Only works in Mozilla, Netscape 7.x browser', 'hotPink')"
+ onMouseout="hideddrivetip()">
+ [
+ <a href="javascript:unSplit()">Un </a>
+ / Split
+ <a href="javascript:split(1)"> V </a>
+ or
+ <a href="javascript:split(0)"> H</a>
+ ]
+ </span>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+ <xsl:if test="$showResultSummarySection">
+ <span style="background-color: white;">
+ [<a href="#summary">Result Summary</a>]
+ </span>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+ <xsl:if test="$showResultDetailSection">
+ <span style="background-color: white;">
+ [<a href="#summaryByTestUnit">Result Detail</a>]
+ </span>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+ <xsl:if test="$showErrorSummarySection">
+ <span style="background-color: white;">
+ [<a href="#testResultErrorSummary">Error Summary</a>]
+ </span>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+
+ <xsl:if test="$showErrorDetailSection">
+ <span style="background-color: white;">
+ [<a href="#testResultWithErrors">Error Detail</a>]
+ </span>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+ <xsl:if test="$showFilesSection">
+ <span style="background-color: white;">
+ [<a href="#files">Files</a>]
+ </span>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+ <xsl:if test="$showSetupSection">
+ <span style="background-color: white;">
+ [<a href="#metaInfo">Setup</a>]
+ </span>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+
+ <xsl:if test="$showHelpSection">
+ <span style="background-color: white;">
+ [<a href="#commands">Help/doc</a>]
+ </span>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+ </div>
+ </center>
+ </xsl:template>
+
+ <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- MENU -->
+ <!-- ================================================================ -->
+ <xsl:template name="sidemenu">
+
+<script language="JavaScript1.2">
+<![CDATA[
+
/********************************************************************************
+ Submitted with modifications by Jack Routledge
(http://fastway.to/compute) to DynamicDrive.com
+ Copyright (C) 1999 Thomas Brattli @ www.bratta.com
+ This script is made by and copyrighted to Thomas Brattli
+ This may be used freely as long as this msg is intact!
+ This script has been featured on http://www.dynamicdrive.com
+
********************************************************************************
+ Browsercheck:*/
+ ie=document.all?1:0
+ n=document.layers?1:0
+ ns6=document.getElementById&&!document.all?1:0
+
+ //These are the variables you have to set:
+
+ //How much of the layer do you wan't to be visible when it's in the out
state?
+ lshow=40
+
+ //How many pixels should it move every step?
+ var move=10;
+
+ //At what speed (in milliseconds, lower value is more speed)
+ menuSpeed=0
+
+ //Do you want it to move with the page if the user scroll the page?
+ var moveOnScroll=true
+
+
/********************************************************************************
+ You should't have to change anything below this.
+
********************************************************************************/
+ //Defining variables
+
+ var ltop;
+ var tim=0;
+
+ //Object constructor
+ function makeMenu(obj,nest){
+ nest=(!nest) ? '':'document.'+nest+'.'
+ if (n) this.css=eval(nest+'document.'+obj)
+ else if (ns6) this.css=document.getElementById(obj).style
+ else if (ie) this.css=eval(obj+'.style')
+ this.state=1
+ this.go=0
+ if (n) this.width=this.css.document.width
+ else if (ns6) this.width=document.getElementById(obj).offsetWidth
+ else if (ie) this.width=eval(obj+'.offsetWidth')
+ this.left=b_getleft
+ this.obj = obj + "Object"; eval(this.obj + "=this")
+ }
+ //Get's the top position.
+ function b_getleft(){
+ if (n||ns6){ gleft=parseInt(this.css.left)}
+ else if (ie){ gleft=eval(this.css.pixelLeft)}
+ return gleft;
+ }
+
/********************************************************************************
+ Deciding what way to move the menu (this is called onmouseover,
onmouseout or onclick)
+
********************************************************************************/
+ function moveMenu(){
+ if(!oMenu.state){
+ clearTimeout(tim)
+ mIn()
+ }else{
+ clearTimeout(tim)
+ mOut()
+ }
+ }
+ //Menu in
+ function mIn(){
+ if(oMenu.left()>-oMenu.width+lshow){
+ oMenu.go=1
+ oMenu.css.left=oMenu.left()-move
+ tim=setTimeout("mIn()",menuSpeed)
+ }else{
+ oMenu.go=0
+ oMenu.state=1
+ }
+ }
+ //Menu out
+ function mOut(){
+ if(oMenu.left()<0){
+ oMenu.go=1
+ oMenu.css.left=oMenu.left()+move
+ tim=setTimeout("mOut()",menuSpeed)
+ }else{
+ oMenu.go=0
+ oMenu.state=0
+ }
+ }
+
/********************************************************************************
+ Checking if the page is scrolled, if it is move the menu after
+
********************************************************************************/
+ function checkScrolled(){
+ if(!oMenu.go) oMenu.css.top=eval(scrolled)+parseInt(ltop)
+ if(n||ns6) setTimeout('checkScrolled()',30)
+ }
+
/********************************************************************************
+ Inits the page, makes the menu object, moves it to the right place,
+ show it
+
********************************************************************************/
+ function menuInit(){
+ oMenu=new makeMenu('divMenu')
+ if (n||ns6) scrolled="window.pageYOffset"
+ else if (ie) scrolled="document.body.scrollTop"
+ oMenu.css.left=-oMenu.width+lshow
+ if (n||ns6) ltop=oMenu.css.top
+ else if (ie) ltop=oMenu.css.pixelTop
+ oMenu.css.visibility='visible'
+ if(moveOnScroll) ie?window.onscroll=checkScrolled:checkScrolled();
+
+ }
+
+
+ //Initing menu on pageload
+ window.onload=menuInit;
+]]>
+</script>
+
+ <div id="divMenu"
+ style="position:absolute; top:0; left:0; visibility:hidden;
+ background-color:lightskyblue">
+ <nobr>
+ <span
+ style=" font-weight:normal;background-color: rgb(255, 255, 153);">
+ <a onclick="moveMenu()"
+ style=" font-weight:normal;background-color:orange;
+ text-decoration:none">[M]</a>
+ </span>
+ <xsl:text> </xsl:text>
+
+
+ <span style=" font-weight:normal;background-color: white;">
+ [<a href="#top">Top</a>]
+ </span>
+ <xsl:text> </xsl:text>
+
+ <xsl:if test="$showSplitNavigationTool">
+ <span style="background-color: white;">
+ [
+ <a href="javascript:unSplit()">Un </a>
+ / Split
+ <a href="javascript:split(1)"> V </a>
+ or
+ <a href="javascript:split(0)"> H</a>
+ ]
+ </span>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+ <xsl:if test="$showResultSummarySection">
+ <span style=" font-weight:normal;background-color: white;">
+ [<a href="#summary">Result Summary</a>]
+ </span>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+
+ <xsl:if test="$showResultDetailSection">
+ <span style=" font-weight:normal;background-color: white;">
+ [<a href="#summaryByTestUnit">Result Detail</a>]
+ </span>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+
+ <xsl:if test="$showErrorSummarySection">
+ <span style=" font-weight:normal;background-color: white;">
+ [<a href="#testResultErrorSummary">Error Summary</a>]
+ </span>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+
+ <xsl:if test="$showErrorDetailSection">
+ <span style=" font-weight:normal;background-color: white;">
+ [<a href="#testResultWithErrors">Error Detail</a>]
+ </span>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+ <xsl:if test="$showFilesSection">
+ <span style=" font-weight:normal;background-color: white;">
+ [<a href="#files">Files</a>]
+ </span>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+ <xsl:if test="$showSetupSection">
+ <span style=" font-weight:normal;background-color: white;">
+ [<a href="#metaInfo">Setup</a>]
+ </span>
+ <xsl:text> </xsl:text>
+ </xsl:if>
+
+ <xsl:text> </xsl:text>
+ <a onclick="moveMenu()"
+ style=" font-weight:normal;background-color:orange;
+ text-decoration:none">[MENU]</a>
+ </nobr>
+ </div>
+ </xsl:template>
+
+ <!-- Window frame script -->
+ &window-frame-script;
+
+
+ <xsl:template name="tooltipScript">
+
+ <div id="dhtmltooltip"></div>
+ <script type="text/javascript">
+ <![CDATA[
+ /***********************************************
+ * Cool DHTML tooltip script- Dynamic Drive DHTML code library
(www.dynamicdrive.com)
+ * This notice MUST stay intact for legal use
+ * Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
+ ***********************************************/
+
+ var offsetxpoint=-60 //Customize x offset of tooltip
+ var offsetypoint=20 //Customize y offset of tooltip
+ var ie=document.all
+ var ns6=document.getElementById && !document.all
+ var enabletip=false
+ if (ie||ns6)
+ var tipobj=document.all? document.all["dhtmltooltip"] :
document.getElementById? document.getElementById("dhtmltooltip") : ""
+
+ function ietruebody(){
+ return (document.compatMode && document.compatMode!="BackCompat")?
document.documentElement : document.body
+ }
+
+ function ddrivetip(thetext, thecolor, thewidth){
+ if (ns6||ie){
+ if (typeof thewidth!="undefined") tipobj.style.width=thewidth+"px"
+ if (typeof thecolor!="undefined" && thecolor!="")
tipobj.style.backgroundColor=thecolor
+ tipobj.innerHTML=thetext
+ enabletip=true
+ return false
+ }
+ }
+
+ function positiontip(e){
+ if (enabletip){
+ var curX=(ns6)?e.pageX : event.x+ietruebody().scrollLeft;
+ var curY=(ns6)?e.pageY : event.y+ietruebody().scrollTop;
+ //Find out how close the mouse is to the corner of the window
+ var rightedge=ie&&!window.opera?
ietruebody().clientWidth-event.clientX-offsetxpoint :
window.innerWidth-e.clientX-offsetxpoint-20
+ var bottomedge=ie&&!window.opera?
ietruebody().clientHeight-event.clientY-offsetypoint :
window.innerHeight-e.clientY-offsetypoint-20
+
+ var leftedge=(offsetxpoint<0)? offsetxpoint*(-1) : -1000
+
+ //if the horizontal distance isn't enough to accomodate the width of the
context menu
+ if (rightedge<tipobj.offsetWidth)
+ //move the horizontal position of the menu to the left by it's width
+ tipobj.style.left=ie?
ietruebody().scrollLeft+event.clientX-tipobj.offsetWidth+"px" :
window.pageXOffset+e.clientX-tipobj.offsetWidth+"px"
+ else if (curX<leftedge)
+ tipobj.style.left="5px"
+ else
+ //position the horizontal position of the menu where the mouse is
positioned
+ tipobj.style.left=curX+offsetxpoint+"px"
+
+ //same concept with the vertical position
+ if (bottomedge<tipobj.offsetHeight)
+ tipobj.style.top=ie?
ietruebody().scrollTop+event.clientY-tipobj.offsetHeight-offsetypoint+"px" :
window.pageYOffset+e.clientY-tipobj.offsetHeight-offsetypoint+"px"
+ else
+ tipobj.style.top=curY+offsetypoint+"px"
+ tipobj.style.visibility="visible"
+ }
+ }
+
+ function hideddrivetip(){
+ if (ns6||ie){
+ enabletip=false
+ tipobj.style.visibility="hidden"
+ tipobj.style.left="-1000px"
+ tipobj.style.backgroundColor=''
+ tipobj.style.width=''
+ }
+ }
+
+ document.onmousemove=positiontip
+
+ ]]>
+ </script>
+
+ </xsl:template>
+
+
+ <xsl:template name="filterScript">
+
+ <script language="JavaScript1.2">
+<![CDATA[
+
+ function report_init(){
+ TF_disableFilter;
+ }
+
+
+ function TF_disableFilter() {
+ document.errorSummaryFilter.display = "none";
+ document.resultSummaryFilter.display = "none";
+ }
+
+ function _TF_trimWhitespace(txt) {
+ var strTmp = txt;
+ //trimming from the front
+ for (counter=0; counter<strTmp.length; counter++)
+ if (strTmp.charAt(counter) != " ")
+ break;
+ //trimming from the back
+ strTmp = strTmp.substring(counter,strTmp.length);
+ counter = strTmp.length - 1;
+ for (counter; counter>=0; counter--)
+ if (strTmp.charAt(counter) != " ")
+ break;
+ return strTmp.substring(0, counter+1);
+ }
+
+ function _TF_showAll(tb) {
+ for (i=0;i<tb.rows.length;i++)
+ {
+ tb.rows[i].style.display = "";
+ }
+ }
+
+ function _TF_shouldShow(type, con, val) {
+ var sameCaseCon = con.toLowerCase();
+ var sameCaseVal = val.toLowerCase();
+ var toshow=true;
+ if (type != null) type = type.toLowerCase();
+ switch (type)
+ {
+ case "item":
+ var strarray = sameCaseVal.split(",");
+ innershow = false;
+ for (ss=0;ss<strarray.length;ss++){
+ if
(sameCaseCon==_TF_trimWhitespace(strarray[ss])){
+ innershow=true;
+ break;
+ }
+ }
+ if (innershow == false)
+ toshow=false;
+ break
+ case "full":
+ if (sameCaseVal!=sameCaseCon)
+ toshow = false;
+ break
+ case "substring":
+ if (sameCaseVal.indexOf(sameCaseCon)<0)
+ toshow = false;
+ break
+ default: //is "substring1" search
+ if (sameCaseVal.indexOf(sameCaseCon)!=0) //pattern must
start from 1st char
+ toshow = false;
+ if (sameCaseCon.charAt(con.length-1) == " ")
+ { //last char is a space, so lets do a full search as
well
+ if (_TF_trimWhitespace(con) != sameCaseVal)
+ toshow = false;
+ else
+ toshow = true;
+ }
+ break
+ }
+ return toshow;
+ }
+
+ function _TF_filterTable(tb, conditions) {
+ //given an array of conditions, lets search the table
+ for (i=0;i<tb.rows.length;i++)
+ {
+ var show = true;
+ var rw = tb.rows[i];
+ for (j=0;j<rw.cells.length;j++)
+ {
+ var cl = rw.cells[j];
+ for (k=0;k<conditions.length;k++)
+ {
+ var colKey = cl.getAttribute("TF_colKey");
+ if (colKey == null) //attribute not found
+ continue; //so lets not search on this
cell.
+ if (conditions[k].name.toUpperCase() ==
colKey.toUpperCase())
+ {
+ var tbVal =
cl.getAttribute("TF_colValue");
+ var conVals = conditions[k].value;
+ if (conditions[k].single) //single value
+ {
+ show =
_TF_shouldShow(conditions[k].type, conditions[k].value,
cl.getAttribute("TF_colValue"));
+ } else { //multiple values
+ for
(l=0;l<conditions[k].value.length;l++)
+ {
+ innershow =
_TF_shouldShow(conditions[k].type, conditions[k].value[l],
cl.getAttribute("TF_colValue"));
+ if (innershow == true)
break;
+ }
+ if (innershow == false)
+ show = false;
+ }
+ }
+ }
+ //if any condition has failed, then we stop the
matching (due to AND behaviour)
+ if (show == false)
+ break;
+ }
+ if (show == true)
+ tb.rows[i].style.display = "";
+ else
+ tb.rows[i].style.display = "none";
+ }
+ }
+
+ /** PUBLIC FUNCTIONS **/
+ //main function
+ function TF_filterTable(tb, frm) {
+ var conditions = new Array();
+ if (frm.style.display == "none") //filtering is off
+ return _TF_showAll(tb);
+
+ //go thru each type of input elements to figure out the filter
conditions
+ var inputs = frm.elements;
+ for (i=0;i<inputs.length;i++)
+ { //looping thru all INPUT elements
+ if (inputs[i].getAttribute("TF_colKey") == null) //attribute
not found
+ continue; //we assume that this input field is not for
us
+ switch (inputs[i].type)
+ {
+ case "text":
+ case "hidden":
+ if(inputs[i].value != "")
+ {
+ index = conditions.length;
+ conditions[index] = new Object;
+ conditions[index].name =
inputs[i].getAttribute("TF_colKey");
+ conditions[index].type =
inputs[i].getAttribute("TF_searchType");
+ conditions[index].value =
inputs[i].value;
+ conditions[index].single = true;
+ }
+ break
+ }
+ }
+ var inputs = frm.elements;
+ //able to do multiple selection box
+ for (i=0;i<inputs.length;i++)
+ { //looping thru all SELECT elements
+ if (inputs[i].getAttribute("TF_colKey") == null) //attribute
not found
+ continue; //we assume that this input field is not for
us
+ if( inputs[i].type != "select-one" &&
+ inputs[i].type != "select" &&
+ inputs[i].type != "select-multiple") // not of type select
+ continue; // only select will be processed
+ var opts = inputs[i].options;
+ var optsSelected = new Array();
+ for (intLoop=0; intLoop<opts.length; intLoop++)
+ { //looping thru all OPTIONS elements
+ if (opts[intLoop].selected &&
(opts[intLoop].getAttribute("TF_not_used") == null))
+ {
+ index = optsSelected.length;
+ optsSelected[index] = opts[intLoop].value;
+ }
+ }
+ if (optsSelected.length > 0) //has selected items
+ {
+ index = conditions.length;
+ conditions[index] = new Object;
+ conditions[index].name =
inputs[i].getAttribute("TF_colKey");
+ conditions[index].type =
inputs[i].getAttribute("TF_searchType");
+ conditions[index].value = optsSelected;
+ conditions[index].single = false;
+ }
+ }
+ //ok, now that we have all the conditions, lets do the filtering proper
+ _TF_filterTable(tb, conditions);
+ }
+
+ function TF_enableFilter(tb, frm, val) {
+ if (val.checked) //filtering is on
+ {
+ frm.style.display = "";
+ } else { //filtering is off
+ frm.style.display = "none";
+ }
+ //refresh the table
+ TF_filterTable(tb, frm);
+ }
+
+ function TF_hide(tb){
+ for (i=0;i<tb.rows.length;i++)
+ {
+ // We will keep the first row, assuming that it has the title.
+ if ( i == 0){
+ tb.rows[0].style.display="";
+ } else {
+ tb.rows[i].style.display = "none";
+ }
+ }
+ }
+
+ function TF_hide_separator(tb, val){
+ if (val.checked) //filtering is on
+ {
+ for (i=0;i<tb.rows.length;i++)
+ {
+ var rw = tb.rows[i];
+ for (j=0;j<rw.cells.length;j++)
+ {
+ var cl = rw.cells[j];
+ var isSeparator = cl.getAttribute("separator");
+
+ if (isSeparator == null) // attribute not found
+ continue;
+
+ rw.style.display="none";
+ } // cells
+ } // rows
+ } else {
+ for (i=0;i<tb.rows.length;i++)
+ {
+ var rw = tb.rows[i];
+ for (j=0;j<rw.cells.length;j++)
+ {
+ var cl = rw.cells[j];
+ var isSeparator = cl.getAttribute("separator");
+
+ if (isSeparator == null) // attribute not found
+ continue;
+
+ rw.style.display="";
+ } // cells
+ } // rows
+ }
+
+ } //
+
+ function TF_show(tb){
+ for (i=0;i<tb.rows.length;i++)
+ {
+ tb.rows[i].style.display = "";
+ }
+ }
+
+ function _TF_get_value(input) {
+ switch (input.type)
+ {
+ case "text":
+ return input.value;
+ break
+ case "select-one":
+ if (input.selectedIndex > -1) //has value
+ return input.options(input.selectedIndex).value;
+ else
+ return "";
+ break;
+ }
+ }
+]]>
+
+ </script>
+ </xsl:template>
+
+ <!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- JAVASCIPTS AND CSS -->
+ <!-- ================================================================ -->
+ <xsl:template name="javascripts">
+ <meta http-equiv="expires" content="Fri, 24 Jan 1977 10:00:00 GMT"/>
+ <xsl:if test="$showFeatureInfo = 1">
+ <title> <xsl:value-of
+ select="$feature"/> Test Report (BugWatcher) </title>
+ </xsl:if>
+ <xsl:if test="not($showFeatureInfo = 1)">
+ <title> Test Report (BugWatcher) </title>
+ </xsl:if>
+
+ <xsl:value-of select="$cssFile"
+ disable-output-escaping="yes"/>
+
+ <style type="text/css">
+
+ #dhtmltooltip{
+ position: absolute;
+ width: 500px;
+ border: 2px solid black;
+ padding: 2px;
+ background-color: lightyellow;
+ visibility: hidden;
+ z-index: 100;
+ text-align: center;
+ /*Remove below line to remove shadow. Below line should always
appear last within this CSS*/
+ filter:
progid:DXImageTransform.Microsoft.Shadow(color=gray,direction=135);
+ }
+
+ </style>
+
+ </xsl:template>
+
+</xsl:stylesheet>
Added: incubator/beehive/trunk/controls/test/infra/gtlf/xsl/build.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/gtlf/xsl/build.xml Fri Aug
6 15:05:47 2004
@@ -0,0 +1,339 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="test" basedir=".">
+
+ <property environment="os"/>
+ <property file="${os.BEEHIVE_HOME}/controls/test/common/path.properties"/>
+
+ <!-- properties for customizing to diff environment -->
+ <property name="xsl.root.dir" value="${controls.test.infra.dir}/gtlf/xsl"/>
+ <property name="tch.dtd.dir"
+ value="${xsl.root.dir}/gtlf-config-2-0.dtd"/>
+
+
+ <!-- +++++++++++++++++++++++ Test Report targets +++++++++++++++++++++++- -->
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <target name="test.report.help">
+ <description>
+ help for target [test.report]
+ </description>
+ <echo>
+ ===============================================================
+
+ Target [test.report] generates a html report from
+ the gtlf file of a coconut test run.
+
+ Options:
+ ===========
+ - feature : feature for which the report is
+ being generated. If we don't specify one
+ the report will not include commands for
+ running failed tests and other feature
+ specific sections. To get the supported
+ features, invoke target [features]
+ - gtlf.file : gtlf file of the coconut test. The
+ default is myrun.gtlf.xml
+ - base.file : Base file name. The value is computed.
+ from gtlf by stripping any .gtlf, .xml
+ and .gtlf.xml suffix. Thus, if the
+ suffix is different, then specify the
+ base.file name. It is used to
+ generate links to the test log, out
+ and td files
+ - output.file : output name of the report. If no name
+ is specified, then it defaults to
+ ${base.file}.html
+ - find.files : Search files generated by the test and
+ list them in the files section. Also,
+ add links for Infra run files. The
+ default is true.
+
+ Note: Setting it to false, will turn
+ of all archive feature, as they rely
+ on getting the file list to archive.
+
+ Archive Options : No archiving is done by default. The
+ ---------------- user can zip the file and/or backup
+ the files in a directory by date time
+ stamp. The test filest are identified
+ using the 'first.file' property.
+
+ Note: find.files should be set to true
+ (which is the default) to perform
+ archiving.
+
+ Archive file identification:
+ ****************************
+
+ - first.file : Name of the first file that gets generated
+ in the test. The default is
+ ${wltestantwrapper.properties}. This
+ property is used to identify the files
+ modified/created by the test.
+ - first.file.dir : The directory under which the search is
+ done of the generated test files. The
+ default is '.'.
+
+ Archive zip file information:
+ *****************************
+
+ - zip.files : Zips all the files modified/created by the
+ test. The generated file is
+ 'output.file'.zip. The files are
+ identified using the 'first.file' property.
+ To enable, set this property to true.
+ By default, the files are not zipped.
+ - zip.file.name : Name of the zip file. It defaults to
+ ${base.file}_time.zip, where time is
+ the time stamp when this command is issued.
+ The time stamp format is
+ dd_MMMM_yyyy_hh_mm_aa.
+
+ Archive backup dir information:
+ *******************************
+
+ - backup.files : Backup's the files generated by the test
+ in directory specified by property
+ 'backup.dir'. The default, is false.
+ The files are identified using the
+ 'first.file' property.
+ - backup.dir : directory where the files are backed up.
+ The default is 'results/${feature}'.
+
+
+ Advanced Options:
+ -----------------
+
+ - hyperlink.files: Creates hyperlink of the files displayed
+ in the 'files modified/created by test'
+ section. Default is true.
+ - hyperlink.zip.file.name
+ : zip file name that will be used in
+ files section of the report. It's useful
+ when this name is different from
+ ${zip.file.name} option. It defaults to
+ the value of ${zip.file.name}.
+
+ Report Formatting:
+ ------------------
+
+ Let's the user control the content of the report
+
+ -report.sections
+ : sections of the report that should be generated
+ It defaults to 'all'. You can specify a comma
+ separated list of the sections that should show up.
+
+ The sections are:
+
+ all - all the sections are displayed
+ report-summary - report summary section
+ result-summary - result summary section
+ result-detail - result detail section
+ error-summary - error summary section
+ error-detail - error detail section
+ setup - setup section
+ help - help section
+
+ -report.section.order
+ : The following canned order display the sections
+ specified by 'report.sections':
+
+ result-focus
+ : The order is report-summary->result-summary
+ ->result-detail->error-summary->files->help/info
+ ->setup->error-detail
+ error-focus
+ : The order is report-summary->result-summary->
+ error-detail->->error-summary->result-detail->
+ files->help/info->setup
+
+ result-focus is the default.
+
+ -show.success.in.error.summary
+ : controls the display of successful test results in
+ error summary section. It's set to false by default.
+
+ -show.filters
+ : Display the filters in each setion. It's set to
+ true by default.
+
+ -report.navigation.tools
+ : controls the navigation tools that will be available
+ in the report. You can specify a comma separated list
+ of the navigation tools
+
+ The navigation tools are:
+
+ all - all the tools are displayed
+ menu - menu of the report
+ toolbar - toolbar of the report
+ top - top link displayed in different report
+ sections
+
+ -report.skin
+ : Controls the report skin that will be used. The skin
+ is applied by a cascading style sheet (css). The
+ currently supported skins are:
+ classic - original default skin
+ junit - same format as the JUnit reports
+ none - no skin is applied
+
+ junit is the default skin.
+
+
+ Examples:
+ =========
+
+ ----------------------------------------------------------
+ ant -f build-Test.xml test.report
+
+ generates the test report for myrun.gtlf.xml file.
+
+ ----------------------------------------------------------
+ ant -f build-Test.xml test.report -Dfeature=oam
+
+ generates the test report for myrun.gtlf.xml file. The
+ report now contains commands to rerun the test.
+
+ ----------------------------------------------------------
+ ant -f build-Test.xml test.report \
+ -Dgtlf.file=srcW2KServerNativeIO-oam-load.gtlf.xml
+
+ generates test report for the specified gtfl file.
+
+ ----------------------------------------------------------
+ ant -f build-Test.xml test.report \
+ -Dgtlf.file=srcW2KServerNativeIO-oam-load.gtlf.xml \
+ -Dreport.sections=report-summary,report-detail,error-detail \
+ -Dreport.navigation.tools=toolbar,top
+
+ generates test report for the specified gtfl file. The
+ report only displays report summary, report detail and
+ error detail. Only the toolbar and top navigation tool
+ are present in the report.
+ ----------------------------------------------------------
+ 'ant -f build-Test.xml test.report -Dfeature=oam \
+ -Dgtlf.file=srcW2KServerNativeIO-oam-load.gtlf.xml'
+
+ generates test report for the specified gtfl file. The
+ report now contains commands to rerun the test
+
+ ----------------------------------------------------------
+ 'ant -f build-Test.xml test.report -Dfind.files=false'
+
+ generates the test report for myrun.gtlf.xml file. The files
+ generated by the test are not listed in the files section.
+
+ This option is usually specified, when we have not run the
+ test locally and want to generate report from a gtlf file got
+ from BT or any othe machine.
+
+ ----------------------------------------------------------
+ 'ant -f build-Test.xml test.report -Dzip.file=true
+
+ generates the test report and creates a zip of all the
+ test files
+
+ ----------------------------------------------------------
+ 'ant -f build-Test.xml test.report -Dbackup.files=true
+
+ generates the test report and then backup the test files in
+ 'results' directory.
+
+ ===============================================================
+ </echo>
+ </target>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <target name="test.report">
+ <description>
+ generates test report. For help, use tgt. [test.report.help]
+ </description>
+
+ <!-- get/set the target properties -->
+ <property name="gtlf.file" value="myrun.gtlf.xml"/>
+ <basename property="base.file.temp" file="${gtlf.file}" suffix=".xml"/>
+ <basename property="base.file" file="${base.file.temp}" suffix=".gtlf"/>
+ <property name="output.file" value="${base.file}.html"/>
+ <property name="hyperlink.files" value="true"/>
+ <property name="report.sections" value="all"/>
+ <property name="report.section.order" value="result-focus"/>
+ <property name="report.navigation.tools" value="all"/>
+ <property name="report.skin" value="junit"/>
+
+ <touch file="${output.file}"/>
+
+ <tstamp>
+ <format property="time" pattern="dd_MMMM_yyyy_hh_mm_aa"/>
+ </tstamp>
+ <property name="zip.file.name" value="${base.file}_${time}.zip"/>
+ <property name="hyperlink.zip.file.name" value="${zip.file.name}"/>
+
+ <delete file="${output.file}"/>
+ <delete file="${output.file}.zip"/>
+
+ <condition property="show.feature.info" value="1">
+ <isset property="feature"/>
+ </condition>
+ <condition property="show.test.files" value="1">
+ <isset property="find.the.files"/>
+ </condition>
+
+ <!-- show the filter -->
+ <property name="show.filters" value="true"/>
+ <condition property="show.the.filters" value="1">
+ <istrue value="${show.filters}"/>
+ </condition>
+ <property name="show.the.filters" value="0"/>
+
+ <property name="show.success.in.error.summary" value="false"/>
+ <condition property="show.success.in.error.summary.section" value="1">
+ <istrue value="${show.success.in.error.summary}"/>
+ </condition>
+
+ <!-- load the report skin css -->
+ <loadfile property="css.file"
+ srcfile="${xsl.root.dir}/${report.skin}.css"
+ failonerror="false" />
+
+ <!-- create the test report -->
+ <!-- xsl transform on the gtlf -->
+ <xslt in="${gtlf.file}" out="${output.file}"
+ style="${xsl.root.dir}/TestReport.xsl">
+ <param name="filebasename" expression="${base.file}"/>
+ <param name="feature" expression="${feature}"/>
+ <param name="showFeatureInfo" expression="${show.feature.info}"/>
+ <param name="showTestfiles" expression="${show.test.files}"/>
+ <param name="zipFiles" expression="${zip.files}"/>
+ <param name="zipFileName" expression="${hyperlink.zip.file.name}"/>
+ <param name="gtlfFileName" expression="${gtlf.file}"/>
+ <param name="testFiles" expression="${test.files}"/>
+ <param name="showTheFilters" expression="${show.the.filters}"/>
+ <param name="sections" expression="${report.sections}"/>
+ <param name="navigationTools" expression="${report.navigation.tools}"/>
+ <param name="cssFile" expression="${css.file}"/>
+ <param name="showSuccessInErrorSummary"
+ expression="${show.success.in.error.summary.section}"/>
+ <param name="reportSectionOrder" expression="${report.section.order}"/>
+ <xmlcatalog>
+ <dtd
+ publicId="-//BEA Systems, Inc.//DTD GTLF 1.0//EN"
+ location="${tch.dtd.dir}"/>
+ </xmlcatalog>
+ <outputproperty name="method" value="html"/>
+ <outputproperty name="indent" value="yes"/>
+ <outputproperty name="standalone" value="yes"/>
+ </xslt>
+ <delete file="${xsl.root.dir}/generatedTestReport.xsl"/>
+ <echo message=""/>
+ <echo message="****************************************************"/>
+ <echo message="Generated report [${output.file}]"/>
+ <echo message="*****************************************************"/>
+ </target>
+
+
+</project>
Added: incubator/beehive/trunk/controls/test/infra/gtlf/xsl/junit.css
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/gtlf/xsl/junit.css Fri Aug
6 15:05:47 2004
@@ -0,0 +1,49 @@
+<style type="text/css">
+ body {
+ font:normal 68% verdana,arial,helvetica;
+ color:#000000;
+ }
+ table tr td, table tr th {
+ font-size: 68%;
+ }
+ table.details tr th{
+ font-weight: bold;
+ text-align:left;
+ background:#a6caf0;
+ }
+ table.details tr td{
+ background:#eeeee0;
+ }
+
+ p {
+ line-height:1.5em;
+ margin-top:0.5em; margin-bottom:1.0em;
+ }
+ h1 {
+ margin: 0px 0px 5px; font: 165% verdana,arial,helvetica
+ }
+ h2 {
+ margin-top: 1em; margin-bottom: 0.5em; font: bold 125%
verdana,arial,helvetica
+ }
+ h3 {
+ margin-bottom: 0.5em; font: bold 115% verdana,arial,helvetica
+ }
+ h4 {
+ margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
+ }
+ h5 {
+ margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
+ }
+ h6 {
+ margin-bottom: 0.5em; font: bold 100% verdana,arial,helvetica
+ }
+ .Error {
+ font-weight:bold; color:red;
+ }
+ .Failure {
+ font-weight:bold; color:purple;
+ }
+ .Properties {
+ text-align:right;
+ }
+ </style>
Added: incubator/beehive/trunk/controls/test/infra/gtlf/xsl/reportutils.jar
==============================================================================
Binary file. No diff available.
Added:
incubator/beehive/trunk/controls/test/infra/gtlf/xsl/windowFrameScript.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/gtlf/xsl/windowFrameScript.xml
Fri Aug 6 15:05:47 2004
@@ -0,0 +1,207 @@
+<xsl:template name="windowFrameScripts">
+
+ <!-- HTML structure that will hold vertical and horizontal split data -->
+
+ <!-- HORIZONTAL SPLIT STRUCTURE -->
+ <form id="horizontalForm" style="width:100%;height:96%">
+ <table id="horizontalSpilt" style="width:100%;height:96%"
+ border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td>
+ <iframe id="horizontalFirst" frameborder="1"
+ style="width:100%;height:100%" src="">
+ </iframe>
+ </td>
+ <td>
+ <iframe id="horizontalSecond" frameborder="1"
+ style="width:100%;height:100%" src="">
+ </iframe>
+ </td>
+ </tr>
+ </table>
+ </form>
+
+ <!-- VERTICAL SPLIT STRUCTURE -->
+ <form id="verticalForm" style="width:100%;height:96%">
+ <table id="verticalSpilt" style="width:100%;height:100%"
+ border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td>
+ <iframe id="verticalFirst" frameborder="1"
+ style="width:100%;height:100%" src="">
+ </iframe>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <iframe id="verticalSecond" frameborder="1"
+ style="width:100%;height:100%" src="">
+ </iframe>
+ </td>
+ </tr>
+ </table>
+ </form>
+
+ <script type="text/javascript">
+
+<![CDATA[
+
+//Drop-down Document Viewer- Dynamic Drive (www.dynamicdrive.com)
+//For full source code, 100's more DHTML scripts, and TOS,
+//visit http://www.dynamicdrive.com
+
+
+
+
+//Specify display mode (0 or 1)
+//0 causes document to be displayed in an inline frame, while 1 in a new
browser window
+//if displaymode=0, configure inline frame attributes (ie: dimensions, intial
document shown
+
+var displaymode=0
+var verticalSplit = 0
+var horzontalSplit = 0
+
+ document.getElementById("horizontalFirst").style.display="none"
+ document.getElementById("horizontalSecond").style.display="none"
+ document.getElementById("horizontalForm").style.display="none"
+
+ document.getElementById("verticalFirst").style.display="none"
+ document.getElementById("verticalSecond").style.display="none"
+ document.getElementById("verticalForm").style.display="none"
+
+
+function unSplit(){
+ if ( verticalSplit == 1){
+ document.getElementById("verticalFirst").style.display="none"
+ document.getElementById("verticalSecond").style.display="none"
+ document.getElementById("verticalForm").style.display="none"
+ } else if (horizontalSplit == 1){
+ document.getElementById("horizontalFirst").style.display="none"
+ document.getElementById("horizontalSecond").style.display="none"
+ document.getElementById("horizontalForm").style.display="none"
+ }
+
+}
+
+
+function split(doVerticalSplit){
+ var splitUrl = window.location.href
+ verticalSplit = doVerticalSplit
+if (document.getElementById && displaymode==0){
+
+ if ( verticalSplit == 1){
+
+ verticalSplit = 1
+ document.getElementById("horizontalFirst").style.display="none"
+ document.getElementById("horizontalSecond").style.display="none"
+ document.getElementById("horizontalForm").style.display="none"
+
+ document.getElementById("verticalForm").style.display=""
+
+ document.getElementById("verticalSecond").src="http://www.google.com"
+ document.getElementById("verticalFirst").src="http://www.google.com"
+
+ document.getElementById("verticalSecond").style.display=""
+ document.getElementById("verticalSecond").style.display="none"
+ document.getElementById("verticalSecond").style.display=""
+
+ document.getElementById("verticalFirst").style.display=""
+ document.getElementById("verticalFirst").style.display="none"
+ document.getElementById("verticalFirst").style.display=""
+
+ document.getElementById("verticalSecond").src=splitUrl
+ document.getElementById("verticalFirst").src=splitUrl
+
+ document.getElementById("verticalSecond").style.display=""
+ document.getElementById("verticalSecond").style.display="none"
+ document.getElementById("verticalSecond").style.display=""
+
+ document.getElementById("verticalFirst").style.display=""
+ document.getElementById("verticalFirst").style.display="none"
+ document.getElementById("verticalFirst").style.display=""
+
+ } else {
+
+ horizontalSplit = 1
+ document.getElementById("verticalFirst").style.display="none"
+ document.getElementById("verticalSecond").style.display="none"
+ document.getElementById("verticalForm").style.display="none"
+
+ document.getElementById("horizontalForm").style.display=""
+
+ document.getElementById("horizontalSecond").src=splitUrl
+ document.getElementById("horizontalFirst").src=splitUrl
+
+ document.getElementById("horizontalSecond").style.display=""
+ document.getElementById("horizontalSecond").style.display="none"
+ document.getElementById("horizontalSecond").style.display=""
+
+ document.getElementById("horizontalFirst").style.display=""
+ document.getElementById("horizontalFirst").style.display="none"
+ document.getElementById("horizontalFirst").style.display=""
+
+
+ }
+
+
+} else if (document.all && displaymode==0) {
+
+ if ( verticalSplit == 1){
+
+ verticalSplit = 1
+ document.getElementById("horizontalFirst").style.display="none"
+ document.getElementById("horizontalSecond").style.display="none"
+ document.getElementById("horizontalForm").style.display="none"
+
+ document.getElementById("verticalForm").style.display=""
+
+ document.all.verticalSecond.src=splitUrl
+ document.all.verticalFirst.src=splitUrl
+
+ document.getElementById("verticalSecond").style.display=""
+ document.getElementById("verticalSecond").style.display="none"
+ document.getElementById("verticalSecond").style.display=""
+
+ document.getElementById("verticalFirst").style.display=""
+ document.getElementById("verticalFirst").style.display="none"
+ document.getElementById("verticalFirst").style.display=""
+
+ } else {
+
+ horizontalSplit = 1
+ document.getElementById("verticalFirst").style.display="none"
+ document.getElementById("verticalSecond").style.display="none"
+ document.getElementById("verticalForm").style.display="none"
+
+ document.getElementById("horizontalForm").style.display=""
+
+ document.all.horizontalSecond.src=splitUrl
+ document.all.horizontalFirst.src=splitUrl
+
+ document.getElementById("horizontalSecond").style.display=""
+ document.getElementById("horizontalSecond").style.display="none"
+ document.getElementById("horizontalSecond").style.display=""
+
+ document.getElementById("horizontalFirst").style.display=""
+ document.getElementById("horizontalFirst").style.display="none"
+ document.getElementById("horizontalFirst").style.display=""
+
+ }
+
+
+} else{
+ if (!window.win2||win2.closed)
+ win2=window.open(splitUrl)
+ //else if win2 already exists
+ else{
+ win2.location=splitUrl
+ win2.focus()
+ } // if.
+ } // if..
+} // M - split
+]]>
+
+ </script>
+
+
+</xsl:template>
Added: incubator/beehive/trunk/controls/test/infra/tch/runtime/build.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/controls/test/infra/tch/runtime/build.xml Fri Aug
6 15:05:47 2004
@@ -0,0 +1,174 @@
+<project name="tch-project" default="usage">
+
+ <property environment="os"/>
+ <property file="${os.BEEHIVE_HOME}/controls/test/common/path.properties"/>
+
+ <!-- the default base name for the logfiles Blackhawk generates -->
+ <property name="tch.base-logfile-name" value="tch"/>
+
+ <!-- the tch logs go into the dir ant is run from by default -->
+ <property name="log.basedir.default" location="${controls.test.dir}"/>
+
+ <!-- the tch logs go into the dir ant is run from -->
+ <property name="tch.log.basedir" value="${log.basedir.default}"/>
+
+ <!-- may be overridden from the top, a single (lame) system property that -->
+ <!-- should be set -->
+ <property name="test.sysproperty.name" value=""/>
+ <property name="test.sysproperty.value" value=""/>
+
+ <!-- if enabled, at the end of the run, generated an html file -->
+ <!-- from the GTLF log -->
+ <property name="gtlf.transform" value="false"/>
+
+ <!-- if true, generates a valid GTLF header, as far as that's possible -->
+ <property name="gtlf.prepare" value="false"/>
+
+
+ <!-- default for html log file generation, may be overridden from the top -->
+ <property
+ name="gtlf.base.file"
+ location="${tch.log.basedir}/${tch.base-logfile-name}"
+ />
+
+ <!-- A few defaults for GTLF -->
+ <property name="gtlf.headerfile" value="gtlf-header-values.txt"/>
+
+
+
+ <!-- public generate html target -->
+ <target name="generate-html-log">
+ <antcall target="-generate-html-log">
+ <param name="_gtlf.transform" value="true"/>
+ </antcall>
+ </target>
+
+ <!-- private generate html target -->
+ <target name="-generate-html-log" if="_gtlf.transform">
+ <property name="gtlf.file" value="${gtlf.base.file}.xml"/>
+ <property name="output.file" value="${gtlf.base.file}.html"/>
+
+ <echo message="gtlf.file: ${gtlf.file}"/>
+ <!-- fork Ant because I could not find a more elegant way to get -->
+ <!-- reportutils.jar onto the classpath -->
+ <java classname="org.apache.tools.ant.Main" fork="true">
+ <classpath>
+ <pathelement path="${java.class.path}"/>
+ <pathelement
location="${controls.test.infra.dir}/gtlf/xsl/reportutils.jar"/>
+ </classpath>
+ <sysproperty key="gtlf.file" value="${gtlf.file}"/>
+ <sysproperty key="output.file" value="${output.file}"/>
+
+ <!-- html customization -->
+ <sysproperty key="show.success.in.error.summary" value="false"/>
+ <sysproperty
+ key="report.sections"
+ value="result-summary,result-detail,error-summary,error-detail"
+ />
+ <!--sysproperty key="report.section.order" value="error-focus"/ -->
+ <sysproperty key="report.navigation.tools" value="toolbar,top"/>
+ <sysproperty key="show.filters" value="false"/>
+ <arg value="-f"/>
+ <arg value="${controls.test.infra.dir}/gtlf/xsl/build.xml"/>
+ <arg value="test.report"/>
+ <arg value="-emacs"/>
+ </java>
+ </target>
+
+ <target name="-init" unless="_init.complete">
+
+ <!-- set up system prop that my be passed from top-->
+ <condition
+ property="_test.sysproperty.line"
+ value="${test.sysproperty.name}=${test.sysproperty.value}"
+ >
+ <not><equals arg1="${test.sysproperty.name}" arg2=""/></not>
+ </condition>
+ <!-- else set it to empty string -->
+ <property name="_test.sysproperty.line" value=""/>
+
+ <!-- for the message at the end of run, only print dir of logs
+ if it has been reset -->
+ <condition property="_logs.dir" value="${tch.log.basedir}/">
+ <not><equals
+ arg1="${tch.log.basedir}"
+ arg2="${log.basedir.default}"
+ casesensitive="false"
+ /></not>
+ </condition>
+ <!-- else empty string -->
+ <property name="_logs.dir" value=""/>
+
+ <condition property="_gtlf.transform">
+ <and>
+ <equals
+ arg1="${gtlf.transform}"
+ arg2="true"
+ casesensitive="false"
+ />
+ <!-- don't generate html log if init-mode-only is on -->
+ <equals
+ arg1="${tch.init-mode-only}"
+ arg2="false"
+ casesensitive="false"
+ />
+ </and>
+ </condition>
+
+ <!-- if gtlf logging is disabled explicitly, no need to prepare gtlf -->
+ <!-- however, if upload is enbled, then force prepare also -->
+ <!-- meaning: -->
+ <!-- if ((gtlf.upload || gtlf.prepare) && !tch.log-gtlf==false) -->
+ <condition property="_gtlf.prepare">
+ <and>
+ <or>
+ <equals
+ arg1="${gtlf.upload}"
+ arg2="true"
+ casesensitive="false"
+ />
+ <equals
+ arg1="${gtlf.prepare}"
+ arg2="true"
+ casesensitive="false"
+ />
+ </or>
+ <not>
+ <equals
+ arg1="${tch.log-gtlf}"
+ arg2="false"
+ casesensitive="false"
+ />
+ </not>
+ </and>
+ </condition>
+
+ <condition property="_gtlf.upload">
+ <equals
+ arg1="${gtlf.upload}"
+ arg2="true"
+ casesensitive="false"
+ />
+ </condition>
+
+ <property name="_init.complete" value="true"/>
+
+ </target>
+
+ <target name="-write-gtlf-header" if="_gtlf.prepare">
+ <ant dir="${testinfra.gtlf.home}" antfile="build.xml" target="run"/>
+ </target>
+
+ <target name="-validate">
+ <available property="test-suite.exists" file="${test-suite}"/>
+ <fail unless="test-suite.exists" message="Cannot find test-suite with name
"${test-suite}". Set the test-suite Ant property (-Dtest-suite) to
the testfile you want to run."/>
+ </target>
+
+</project>
+
+
+
+
+
+
+