From bd68ac7da6e7489ca02eb2efd8083c78a0d02692 Mon Sep 17 00:00:00 2001
From: gary_williams <gary_williams@localhost>
Date: Fri, 04 Jan 2008 11:22:05 +0000
Subject: [PATCH] test report group and test suite view
---
opendj-sdk/opends/tests/functional-tests/testcases/runTestJob.xml | 86 +++
opendj-sdk/opends/tests/functional-tests/shared/xsl/gen-groups-report.xsl | 529 ++++++++++++++++++++++++++
opendj-sdk/opends/tests/shared/python/common.py | 39 +
opendj-sdk/opends/tests/functional-tests/shared/xsl/gen-suites-report.xsl | 531 ++++++++++++++++++++++++++
4 files changed, 1,174 insertions(+), 11 deletions(-)
diff --git a/opendj-sdk/opends/tests/functional-tests/shared/xsl/gen-groups-report.xsl b/opendj-sdk/opends/tests/functional-tests/shared/xsl/gen-groups-report.xsl
new file mode 100644
index 0000000..5291c4f
--- /dev/null
+++ b/opendj-sdk/opends/tests/functional-tests/shared/xsl/gen-groups-report.xsl
@@ -0,0 +1,529 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0"
+xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output method="html" version="4.0" encoding="iso-8859-1" indent="yes"/>
+
+<xsl:template match="/">
+
+ <!--- Test Report Header Variables -->
+ <xsl:variable name="ft" select="qa/functional-tests"/>
+ <xsl:variable name="identification" select="$ft/identification"/>
+ <xsl:variable name="url" select="normalize-space($identification/tests-url)"/>
+ <xsl:variable name="hostname" select="normalize-space($identification/hostname)"/>
+ <xsl:variable name="version" select="normalize-space($identification/version)"/>
+ <xsl:variable name="buildid" select="normalize-space($identification/buildid)"/>
+ <xsl:variable name="revision" select="normalize-space($identification/revision)"/>
+ <xsl:variable name="os" select="normalize-space($identification/os-label)"/>
+ <xsl:variable name="jvm" select="normalize-space($identification/jvm-label)"/>
+ <xsl:variable name="testgroup" select="$ft/results/testgroup"/>
+ <xsl:variable name="testsuite" select="$testgroup/testsuite"/>
+ <xsl:variable name="testcase" select="$testsuite/testcase"/>
+ <xsl:variable name="total-tests" select="count($testcase)"/>
+ <xsl:variable name="pass-tests" select="count($testcase[@result='pass'])"/>
+ <xsl:variable name="fail-tests" select="count($testcase[@result='fail'])"/>
+ <xsl:variable name="inconc-tests" select="count($testcase[@result='unknown'])"/>
+ <xsl:variable name="tests-dir" select="normalize-space($identification/tests-dir)"/>
+
+ <xsl:element name="html">
+
+ <xsl:element name="head">
+
+ <link rel="SHORTCUT ICON" href="https://opends.dev.java.net/public/images/opends_favicon.gif" />
+ <style type="text/css">
+/* <![CDATA[ */
+ @import "/branding/css/tigris.css";
+ @import "/branding/css/inst.css";
+ /* ]]> */
+ </style>
+ <link rel="stylesheet" type="text/css" href="/branding/css/print.css" media="print" />
+ <link rel="stylesheet" href="https://opends.dev.java.net/public/css/opends.css" type="text/css" />
+
+ <xsl:element name="title">
+ <xsl:value-of select="concat('Test Report for OpenDS ',$version)"/>
+ </xsl:element>
+
+ </xsl:element>
+
+ <table class="tertmasttable" width="100%" cellspacing="0">
+ <tbody>
+ <tr>
+ <td><div class="collectionheader"><xsl:value-of select="concat('Test Report for OpenDS ',$version)"/></div></td>
+ <td width="10%"><a href="https://opends.dev.java.net/"><img src="https://opends.dev.java.net/public/images/opends_logo_sm.png" alt="OpenDS Logo" width="104" height="33" border="0" align="middle" /></a> </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <!-- Overall Test Percentage -->
+ <xsl:variable name="percent-tests">
+ <xsl:choose>
+ <xsl:when test="$total-tests > 0">
+ <xsl:value-of select="round((($pass-tests div $total-tests) * 100) - 0.5)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Shaded Line -->
+ <xsl:element name="hr">
+ <xsl:attribute name="noshade">
+ <xsl:value-of select="'noshade'"/>
+ </xsl:attribute>
+ <xsl:attribute name="size">
+ <xsl:value-of select="1"/>
+ </xsl:attribute>
+ </xsl:element>
+
+ <!-- Percentage Result -->
+ <xsl:element name="table">
+ <xsl:attribute name="width">
+ <xsl:value-of select="'100%'"/>
+ </xsl:attribute>
+ <xsl:call-template name="setColour">
+ <xsl:with-param name="percent" select="$percent-tests"/>
+ </xsl:call-template>
+ <xsl:element name="tr">
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="font">
+ <xsl:attribute name="size">
+ <xsl:value-of select="'+2'"/>
+ </xsl:attribute>
+ <xsl:value-of select="concat($percent-tests,'%')"/>
+ </xsl:element>
+ </xsl:element>
+ </xsl:element>
+ </xsl:element>
+
+ <!-- Shaded Line -->
+ <xsl:element name="hr">
+ <xsl:attribute name="noshade">
+ <xsl:value-of select="'noshade'"/>
+ </xsl:attribute>
+ <xsl:attribute name="size">
+ <xsl:value-of select="1"/>
+ </xsl:attribute>
+ </xsl:element>
+
+ <!-- Identification -->
+ <xsl:element name="table">
+ <xsl:attribute name="width">
+ <xsl:value-of select="'100%'"/>
+ </xsl:attribute>
+ <xsl:element name="tr">
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="'Build'"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="'Revision'"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="'Host'"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="'Platform'"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="'JVM'"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="'Total'"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="'Pass'"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="'Fail'"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="'Inconclusive'"/>
+ </xsl:element>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="tr">
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$buildid"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$revision"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$hostname"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$os"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$jvm"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$total-tests"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$pass-tests"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$fail-tests"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$inconc-tests"/>
+ </xsl:element>
+ </xsl:element>
+ </xsl:element>
+ </xsl:element>
+
+ <!-- Shaded Line -->
+ <xsl:element name="hr">
+ <xsl:attribute name="noshade">
+ <xsl:value-of select="'noshade'"/>
+ </xsl:attribute>
+ <xsl:attribute name="size">
+ <xsl:value-of select="1"/>
+ </xsl:attribute>
+ </xsl:element>
+
+ <xsl:element name="body">
+
+ <!-- Test Results Table -->
+ <xsl:element name="table">
+ <xsl:attribute name="width">
+ <xsl:value-of select="'100%'"/>
+ </xsl:attribute>
+ <xsl:attribute name="border">
+ <xsl:value-of select="1"/>
+ </xsl:attribute>
+ <xsl:attribute name="cellpadding">
+ <xsl:value-of select="2"/>
+ </xsl:attribute>
+
+ <xsl:element name="tr">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="'lightblue'"/>
+ </xsl:attribute>
+
+ <xsl:element name="th">
+ <xsl:value-of select="'Test Group'"/>
+ </xsl:element>
+ <xsl:element name="th">
+ <xsl:value-of select="'Start Time'"/>
+ </xsl:element>
+ <xsl:element name="th">
+ <xsl:value-of select="'End Time'"/>
+ </xsl:element>
+ <xsl:element name="th">
+ <xsl:value-of select="'Duration'"/>
+ </xsl:element>
+ <xsl:element name="th">
+ <xsl:value-of select="'Total'"/>
+ </xsl:element>
+ <xsl:element name="th">
+ <xsl:value-of select="'Pass'"/>
+ </xsl:element>
+ <xsl:element name="th">
+ <xsl:value-of select="'Fail'"/>
+ </xsl:element>
+ <xsl:element name="th">
+ <xsl:value-of select="'Inconc'"/>
+ </xsl:element>
+ <xsl:element name="th">
+ <xsl:value-of select="'Percent'"/>
+ </xsl:element>
+
+ </xsl:element>
+
+ <xsl:for-each select="$testgroup">
+ <xsl:sort select="group" order="ascending"/>
+ <xsl:variable name="group" select="@name"/>
+ <xsl:if test="generate-id(.)=generate-id($testgroup[@name = $group])">
+
+ <xsl:variable name="all-tests" select="$testcase[@group = $group]"/>
+ <xsl:variable name="test-num" select="count($all-tests)"/>
+ <xsl:variable name="test-pass" select="count($all-tests[@result = 'pass'])"/>
+ <xsl:variable name="test-fail" select="count($all-tests[@result = 'fail'])"/>
+ <xsl:variable name="test-inc" select="count($all-tests[@result = 'unknown'])"/>
+ <xsl:variable name="test-percent" select="round((($test-pass div $test-num) * 100) - 0.5)"/>
+
+ <xsl:variable name="end-time">
+ <xsl:for-each select="$all-tests/@stop">
+
+ <xsl:if test="position() = last()">
+ <xsl:value-of select="."/>
+ </xsl:if>
+
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="groupdir" select="translate(@name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')"/>
+
+ <xsl:variable name="duration">
+ <xsl:call-template name="countDuration">
+ <xsl:with-param name="testList" select="$all-tests"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:element name="tr">
+ <xsl:call-template name="setColour">
+ <xsl:with-param name="percent" select="$test-percent"/>
+ </xsl:call-template>
+
+ <!-- Group Name -->
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'left'"/>
+ </xsl:attribute>
+ <xsl:element name="a">
+ <xsl:attribute name="href">
+ <xsl:value-of select="concat($url,$tests-dir,'/testlogs/',$groupdir,'/',@name,'.html')"/>
+ </xsl:attribute>
+ <xsl:value-of select="@name"/>
+ </xsl:element>
+ </xsl:element>
+
+ <!-- Start Time -->
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:value-of select="testsuite/testcase/@start[1]"/>
+ </xsl:element>
+
+ <!-- End Time -->
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:value-of select="$end-time"/>
+ </xsl:element>
+
+ <!-- Duration -->
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:value-of select="concat($duration,'s')"/>
+ </xsl:element>
+
+ <!-- Total-->
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:value-of select="$test-num"/>
+ </xsl:element>
+
+ <!-- Pass -->
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:value-of select="$test-pass"/>
+ </xsl:element>
+
+ <!-- Fail -->
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:value-of select="$test-fail"/>
+ </xsl:element>
+
+ <!-- Inconclusive -->
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:value-of select="$test-inc"/>
+ </xsl:element>
+
+ <!-- Percent -->
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:value-of select="concat($test-percent,'%')"/>
+ </xsl:element>
+
+ </xsl:element>
+
+ </xsl:if>
+
+ </xsl:for-each>
+
+ </xsl:element>
+
+ <!-- Shaded Line -->
+ <xsl:element name="hr">
+ <xsl:attribute name="noshade">
+ <xsl:value-of select="'noshade'"/>
+ </xsl:attribute>
+ <xsl:attribute name="size">
+ <xsl:value-of select="1"/>
+ </xsl:attribute>
+ </xsl:element>
+
+ <!-- Additional Information -->
+ <xsl:element name="h2">
+ <xsl:value-of select="'Additional Information'"/>
+ </xsl:element>
+
+ <xsl:element name="table">
+ <xsl:element name="tr">
+ <xsl:element name="td">
+ <xsl:element name="b">
+ <xsl:value-of select="'Test Archive: '"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$tests-dir"/>
+ </xsl:element>
+ </xsl:element>
+ </xsl:element>
+ </xsl:element>
+
+ <!-- Shaded Line -->
+ <xsl:element name="hr">
+ <xsl:attribute name="noshade">
+ <xsl:value-of select="'noshade'"/>
+ </xsl:attribute>
+ <xsl:attribute name="size">
+ <xsl:value-of select="1"/>
+ </xsl:attribute>
+ </xsl:element>
+
+ </xsl:element>
+
+ </xsl:element>
+
+</xsl:template>
+
+<xsl:template name="countDuration">
+ <xsl:param name="testList"/>
+ <xsl:choose>
+ <xsl:when test="$testList">
+ <xsl:variable name="recursive_result">
+ <xsl:call-template name="countDuration">
+ <xsl:with-param name="testList"
+ select="$testList[position() > 1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of
+ select="number($testList[1]/@duration) + $recursive_result"/>
+ </xsl:when>
+ <xsl:otherwise><xsl:value-of select="0"/></xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="setColour">
+ <xsl:param name="percent"/>
+ <xsl:attribute name="bgcolor">
+ <xsl:choose>
+ <xsl:when test="$percent < 70">
+ <xsl:value-of select="'red'" />
+ </xsl:when>
+ <xsl:when test="$percent < 95">
+ <xsl:value-of select="'yellow'" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'lightgreen'" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/opendj-sdk/opends/tests/functional-tests/shared/xsl/gen-suites-report.xsl b/opendj-sdk/opends/tests/functional-tests/shared/xsl/gen-suites-report.xsl
new file mode 100644
index 0000000..681656a
--- /dev/null
+++ b/opendj-sdk/opends/tests/functional-tests/shared/xsl/gen-suites-report.xsl
@@ -0,0 +1,531 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsl:stylesheet version="1.0"
+xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+
+<xsl:output method="html" version="4.0" encoding="iso-8859-1" indent="yes"/>
+
+<xsl:param name="group">''</xsl:param>
+<xsl:variable name="groupdir" select="translate($group, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')"/>
+
+<xsl:template match="/">
+
+ <!--- Test Report Header Variables -->
+ <xsl:variable name="ft" select="qa/functional-tests"/>
+ <xsl:variable name="identification" select="$ft/identification"/>
+ <xsl:variable name="url" select="normalize-space($identification/tests-url)"/>
+ <xsl:variable name="hostname" select="normalize-space($identification/hostname)"/>
+ <xsl:variable name="version" select="normalize-space($identification/version)"/>
+ <xsl:variable name="buildid" select="normalize-space($identification/buildid)"/>
+ <xsl:variable name="revision" select="normalize-space($identification/revision)"/>
+ <xsl:variable name="os" select="normalize-space($identification/os-label)"/>
+ <xsl:variable name="jvm" select="normalize-space($identification/jvm-label)"/>
+ <xsl:variable name="testgroup" select="$ft/results/testgroup[translate(@name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz') = $groupdir]"/>
+ <xsl:variable name="testsuite" select="$testgroup/testsuite"/>
+ <xsl:variable name="testcase" select="$testsuite/testcase"/>
+ <xsl:variable name="total-tests" select="count($testcase)"/>
+ <xsl:variable name="pass-tests" select="count($testcase[@result='pass'])"/>
+ <xsl:variable name="fail-tests" select="count($testcase[@result='fail'])"/>
+ <xsl:variable name="inconc-tests" select="count($testcase[@result='unknown'])"/>
+ <xsl:variable name="tests-dir" select="normalize-space($identification/tests-dir)"/>
+
+ <xsl:element name="html">
+
+ <xsl:element name="head">
+
+ <link rel="SHORTCUT ICON" href="https://opends.dev.java.net/public/images/opends_favicon.gif" />
+ <style type="text/css">
+/* <![CDATA[ */
+ @import "/branding/css/tigris.css";
+ @import "/branding/css/inst.css";
+ /* ]]> */
+ </style>
+ <link rel="stylesheet" type="text/css" href="/branding/css/print.css" media="print" />
+ <link rel="stylesheet" href="https://opends.dev.java.net/public/css/opends.css" type="text/css" />
+
+ <xsl:element name="title">
+ <xsl:value-of select="concat('Test Report for OpenDS ',$version)"/>
+ </xsl:element>
+
+ </xsl:element>
+
+ <table class="tertmasttable" width="100%" cellspacing="0">
+ <tbody>
+ <tr>
+ <td><div class="collectionheader"><xsl:value-of select="concat('Test Report for OpenDS ',$version)"/></div></td>
+ <td width="10%"><a href="https://opends.dev.java.net/"><img src="https://opends.dev.java.net/public/images/opends_logo_sm.png" alt="OpenDS Logo" width="104" height="33" border="0" align="middle" /></a> </td>
+ </tr>
+ </tbody>
+ </table>
+
+ <!-- Overall Test Percentage -->
+ <xsl:variable name="percent-tests">
+ <xsl:choose>
+ <xsl:when test="$total-tests > 0">
+ <xsl:value-of select="round((($pass-tests div $total-tests) * 100) - 0.5)"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="0"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <!-- Shaded Line -->
+ <xsl:element name="hr">
+ <xsl:attribute name="noshade">
+ <xsl:value-of select="'noshade'"/>
+ </xsl:attribute>
+ <xsl:attribute name="size">
+ <xsl:value-of select="1"/>
+ </xsl:attribute>
+ </xsl:element>
+
+ <!-- Percentage Result -->
+ <xsl:element name="table">
+ <xsl:attribute name="width">
+ <xsl:value-of select="'100%'"/>
+ </xsl:attribute>
+ <xsl:call-template name="setColour">
+ <xsl:with-param name="percent" select="$percent-tests"/>
+ </xsl:call-template>
+ <xsl:element name="tr">
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="font">
+ <xsl:attribute name="size">
+ <xsl:value-of select="'+2'"/>
+ </xsl:attribute>
+ <xsl:value-of select="concat($percent-tests,'%')"/>
+ </xsl:element>
+ </xsl:element>
+ </xsl:element>
+ </xsl:element>
+
+ <!-- Shaded Line -->
+ <xsl:element name="hr">
+ <xsl:attribute name="noshade">
+ <xsl:value-of select="'noshade'"/>
+ </xsl:attribute>
+ <xsl:attribute name="size">
+ <xsl:value-of select="1"/>
+ </xsl:attribute>
+ </xsl:element>
+
+ <!-- Identification -->
+ <xsl:element name="table">
+ <xsl:attribute name="width">
+ <xsl:value-of select="'100%'"/>
+ </xsl:attribute>
+ <xsl:element name="tr">
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="'Build'"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="'Revision'"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="'Host'"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="'Platform'"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="'JVM'"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="'Total'"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="'Pass'"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="'Fail'"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="'Inconclusive'"/>
+ </xsl:element>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="tr">
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$buildid"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$revision"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$hostname"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$os"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$jvm"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$total-tests"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$pass-tests"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$fail-tests"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$inconc-tests"/>
+ </xsl:element>
+ </xsl:element>
+ </xsl:element>
+ </xsl:element>
+
+ <!-- Shaded Line -->
+ <xsl:element name="hr">
+ <xsl:attribute name="noshade">
+ <xsl:value-of select="'noshade'"/>
+ </xsl:attribute>
+ <xsl:attribute name="size">
+ <xsl:value-of select="1"/>
+ </xsl:attribute>
+ </xsl:element>
+
+ <xsl:element name="body">
+
+ <!-- Test Results Table -->
+ <xsl:element name="table">
+ <xsl:attribute name="width">
+ <xsl:value-of select="'100%'"/>
+ </xsl:attribute>
+ <xsl:attribute name="border">
+ <xsl:value-of select="1"/>
+ </xsl:attribute>
+ <xsl:attribute name="cellpadding">
+ <xsl:value-of select="2"/>
+ </xsl:attribute>
+
+ <xsl:element name="tr">
+ <xsl:attribute name="bgcolor">
+ <xsl:value-of select="'lightblue'"/>
+ </xsl:attribute>
+
+ <xsl:element name="th">
+ <xsl:value-of select="'Test Suite'"/>
+ </xsl:element>
+ <xsl:element name="th">
+ <xsl:value-of select="'Start Time'"/>
+ </xsl:element>
+ <xsl:element name="th">
+ <xsl:value-of select="'End Time'"/>
+ </xsl:element>
+ <xsl:element name="th">
+ <xsl:value-of select="'Duration'"/>
+ </xsl:element>
+ <xsl:element name="th">
+ <xsl:value-of select="'Total'"/>
+ </xsl:element>
+ <xsl:element name="th">
+ <xsl:value-of select="'Pass'"/>
+ </xsl:element>
+ <xsl:element name="th">
+ <xsl:value-of select="'Fail'"/>
+ </xsl:element>
+ <xsl:element name="th">
+ <xsl:value-of select="'Inconc'"/>
+ </xsl:element>
+ <xsl:element name="th">
+ <xsl:value-of select="'Percent'"/>
+ </xsl:element>
+
+ </xsl:element>
+
+ <xsl:for-each select="$testsuite">
+ <xsl:sort select="suite" order="ascending"/>
+ <xsl:variable name="suite" select="@name"/>
+ <xsl:if test="generate-id(.)=generate-id($testsuite[@name = $suite])">
+
+ <xsl:variable name="all-tests" select="$testcase[@suite = $suite]"/>
+ <xsl:variable name="test-num" select="count($all-tests)"/>
+ <xsl:variable name="test-pass" select="count($all-tests[@result = 'pass'])"/>
+ <xsl:variable name="test-fail" select="count($all-tests[@result = 'fail'])"/>
+ <xsl:variable name="test-inc" select="count($all-tests[@result = 'unknown'])"/>
+ <xsl:variable name="test-percent" select="round((($test-pass div $test-num) * 100) - 0.5)"/>
+ <xsl:variable name="suitename" select="translate(@name, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')"/>
+
+ <xsl:variable name="end-time">
+ <xsl:for-each select="$all-tests/@stop">
+
+ <xsl:if test="position() = last()">
+ <xsl:value-of select="."/>
+ </xsl:if>
+
+ </xsl:for-each>
+ </xsl:variable>
+
+ <xsl:variable name="duration">
+ <xsl:call-template name="countDuration">
+ <xsl:with-param name="testList" select="$all-tests"/>
+ </xsl:call-template>
+ </xsl:variable>
+
+ <xsl:element name="tr">
+ <xsl:call-template name="setColour">
+ <xsl:with-param name="percent" select="$test-percent"/>
+ </xsl:call-template>
+
+ <!-- Group Name -->
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'left'"/>
+ </xsl:attribute>
+ <xsl:element name="a">
+ <xsl:attribute name="href">
+ <xsl:value-of select="concat($url,$tests-dir,'/testlogs/',$groupdir,'/',$suitename)"/>
+ </xsl:attribute>
+ <xsl:value-of select="@name"/>
+ </xsl:element>
+ </xsl:element>
+
+ <!-- Start Time -->
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:value-of select="testcase/@start[1]"/>
+ </xsl:element>
+
+ <!-- End Time -->
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:value-of select="$end-time"/>
+ </xsl:element>
+
+ <!-- Duration -->
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:value-of select="concat($duration,'s')"/>
+ </xsl:element>
+
+ <!-- Total-->
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:value-of select="$test-num"/>
+ </xsl:element>
+
+ <!-- Pass -->
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:value-of select="$test-pass"/>
+ </xsl:element>
+
+ <!-- Fail -->
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:value-of select="$test-fail"/>
+ </xsl:element>
+
+ <!-- Inconclusive -->
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:value-of select="$test-inc"/>
+ </xsl:element>
+
+ <!-- Percent -->
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:value-of select="concat($test-percent,'%')"/>
+ </xsl:element>
+
+ </xsl:element>
+
+ </xsl:if>
+
+ </xsl:for-each>
+
+ </xsl:element>
+
+ <!-- Shaded Line -->
+ <xsl:element name="hr">
+ <xsl:attribute name="noshade">
+ <xsl:value-of select="'noshade'"/>
+ </xsl:attribute>
+ <xsl:attribute name="size">
+ <xsl:value-of select="1"/>
+ </xsl:attribute>
+ </xsl:element>
+
+ <!-- Additional Information -->
+ <xsl:element name="h2">
+ <xsl:value-of select="'Additional Information'"/>
+ </xsl:element>
+
+ <xsl:element name="table">
+ <xsl:element name="tr">
+ <xsl:element name="td">
+ <xsl:element name="b">
+ <xsl:value-of select="'Test Archive: '"/>
+ </xsl:element>
+ </xsl:element>
+ <xsl:element name="td">
+ <xsl:attribute name="align">
+ <xsl:value-of select="'center'"/>
+ </xsl:attribute>
+ <xsl:element name="b">
+ <xsl:value-of select="$tests-dir"/>
+ </xsl:element>
+ </xsl:element>
+ </xsl:element>
+ </xsl:element>
+
+ <!-- Shaded Line -->
+ <xsl:element name="hr">
+ <xsl:attribute name="noshade">
+ <xsl:value-of select="'noshade'"/>
+ </xsl:attribute>
+ <xsl:attribute name="size">
+ <xsl:value-of select="1"/>
+ </xsl:attribute>
+ </xsl:element>
+
+ </xsl:element>
+
+ </xsl:element>
+
+</xsl:template>
+
+<xsl:template name="countDuration">
+ <xsl:param name="testList"/>
+ <xsl:choose>
+ <xsl:when test="$testList">
+ <xsl:variable name="recursive_result">
+ <xsl:call-template name="countDuration">
+ <xsl:with-param name="testList"
+ select="$testList[position() > 1]"/>
+ </xsl:call-template>
+ </xsl:variable>
+ <xsl:value-of
+ select="number($testList[1]/@duration) + $recursive_result"/>
+ </xsl:when>
+ <xsl:otherwise><xsl:value-of select="0"/></xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template name="setColour">
+ <xsl:param name="percent"/>
+ <xsl:attribute name="bgcolor">
+ <xsl:choose>
+ <xsl:when test="$percent < 70">
+ <xsl:value-of select="'red'" />
+ </xsl:when>
+ <xsl:when test="$percent < 95">
+ <xsl:value-of select="'yellow'" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="'lightgreen'" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/opendj-sdk/opends/tests/functional-tests/testcases/runTestJob.xml b/opendj-sdk/opends/tests/functional-tests/testcases/runTestJob.xml
index 63666e1..0260a54 100644
--- a/opendj-sdk/opends/tests/functional-tests/testcases/runTestJob.xml
+++ b/opendj-sdk/opends/tests/functional-tests/testcases/runTestJob.xml
@@ -36,10 +36,6 @@
STAXLogMessage = 1
</script>
- <script>
- import os
- </script>
-
<if expr="not STAXJobScriptFiles">
<sequence>
<message>'No script file (config.py) is specified. Unable to run the tests.'</message>
@@ -49,7 +45,7 @@
<!-- Load in the local shared python objects -->
<script>
- import sys
+ import sys,os
sys.path.append("%s/shared/python" % TESTS_ROOT )
from common import *
</script>
@@ -73,6 +69,15 @@
ServerJVMString='Unknown JVM'
except NameError,details:
ServerJVMString='Unknown JVM'
+
+ try:
+ if LOGS_URI:
+ logsURI=LOGS_URI
+ else:
+ logsURI=''
+ except NameError,details:
+ logsURI=''
+
</script>
<job name="'Job: %s %s' % (STAF_REMOTE_HOSTNAME,ServerOsString) " monitor="1" clearlogs="'Enabled'" logtcstartstop="'Enabled'">
@@ -419,6 +424,9 @@
xmlfh.write(' <tests-dir>\n')
xmlfh.write(' %s\n' % logsDir)
xmlfh.write(' </tests-dir>\n')
+ xmlfh.write(' <tests-url>\n')
+ xmlfh.write(' %s\n' % logsURI)
+ xmlfh.write(' </tests-url>\n')
xmlfh.write(' </identification>\n')
xmlfh.write(' <results>\n')
</script>
@@ -513,7 +521,45 @@
_message='Unable to generate standard test report %s.' % details
</script>
<message>_message</message>
-
+
+ <!-- Generate the test report by test groups-->
+ <script>
+ _message='Generated groups test report.'
+ xslfile= '%s/xsl/gen-groups-report.xsl' % TESTS_SHARED_DIR
+ htmlfile= '%s/groups.html' % logsReportDir
+ groupsReport=report_generation()
+
+ try:
+ groupsReport.transformReport(xslfile,xmlfile,htmlfile)
+ except IOError,details:
+ _message='Unable to generate groups test report %s.' % details
+ </script>
+ <message>_message</message>
+
+ <!-- Generate the test report by test suites -->
+ <script>
+ _message='Generated suites test reports.'
+ testGroupDirsList=os.listdir(logsTestsDir)
+ for testGroupName in testGroupDirsList:
+
+ groupDir='%s/%s' % (logsTestsDir,testGroupName)
+
+ if os.path.isdir(groupDir):
+
+ xmlfile='%s/results.xml' % logsReportDir
+ htmlfile='%s/%s.html' % (groupDir,testGroupName)
+ xslfile= '%s/xsl/gen-suites-report.xsl' % TESTS_SHARED_DIR
+
+ suitesReport=report_generation()
+ stringParamsDict={ 'group' : testGroupName }
+
+ try:
+ suitesReport.transformSuitesReport(xslfile,xmlfile,htmlfile,stringParamsDict)
+ except IOError,details:
+ _message='Unable to generate suites test report %s.' % details
+ </script>
+ <message>_message</message>
+
<!-- Generate the drill down test report -->
<script>
_message='Generated the drill down test report.'
@@ -577,8 +623,30 @@
</message>
<script>
- MailToList= SEND_MAIL_TO.split(",")
- MailSubject= 'OpenDS Test Report for %s' % STAF_REMOTE_HOSTNAME
+ try:
+ if SEND_MAIL_REPORT:
+ MailSendReport=SEND_MAIL_REPORT
+ else:
+ MailSendReport='%s/groups.html' % logsReportDir
+ except NameError,details:
+ MailSendReport='%s/groups.html' % logsReportDir
+
+ try:
+ if SEND_MAIL_TO:
+ MailToList= SEND_MAIL_TO.split(",")
+ else:
+ MailToList=[]
+ except NameError,details:
+ MailToList=[]
+
+ try:
+ if SEND_MAIL_SUBJECT:
+ MailSubject= SEND_MAIL_SUBJECT
+ else:
+ MailSubject= 'OpenDS Test Report for %s' % STAF_REMOTE_HOSTNAME
+ except NameError,details:
+ MailSubject= 'OpenDS Test Report for %s' % STAF_REMOTE_HOSTNAME
+
MailSendTo= ' '
</script>
@@ -592,7 +660,7 @@
<location>'%s' % STAF_LOCAL_HOSTNAME </location>
<service>'email'</service>
<request>
- 'send %s contenttype "text/html" file %s subject "%s" noheader' % (MailSendTo,htmlfile,MailSubject)
+ 'send %s contenttype "text/html" file %s subject "%s" noheader' % (MailSendTo,MailSendReport,MailSubject)
</request>
</stafcmd>
diff --git a/opendj-sdk/opends/tests/shared/python/common.py b/opendj-sdk/opends/tests/shared/python/common.py
index 102bd26..eca6f6b 100644
--- a/opendj-sdk/opends/tests/shared/python/common.py
+++ b/opendj-sdk/opends/tests/shared/python/common.py
@@ -90,8 +90,19 @@
self.hours,self.minutes,self.seconds=clocktime.split(':')
return int(self.hours)*7200+int(self.minutes)*60+int(self.seconds)
+class basic_utils:
+ 'Some simple basic utilities'
+ def printKey(self,keypair):
+ self.key=keypair.keys()[0]
+ return self.key
+ def printKeyValue(self,keypair):
+ self.key=keypair.keys()[0]
+ self.keyvalue=keypair[self.key]
+ return self.keyvalue
+
class report_generation:
'Test Report Generation'
+
def transformReport(self,stylesheet,xml,output):
from java.io import FileInputStream
from java.io import FileOutputStream
@@ -101,8 +112,9 @@
from javax.xml.transform.stream import StreamSource
from javax.xml.transform.stream import StreamResult
- self.xslSource = StreamSource(FileInputStream("%s" % stylesheet))
- self.xslTemplate = TransformerFactory.newInstance().newTemplates(self.xslSource)
+ self.xslSource = StreamSource(FileInputStream("%s" % stylesheet))
+ self.tfactory = TransformerFactory.newInstance()
+ self.xslTemplate = self.tfactory.newTemplates(self.xslSource)
self.transformer = self.xslTemplate.newTransformer()
self.source = StreamSource(FileInputStream("%s" % xml))
@@ -110,3 +122,26 @@
self.transformer.transform(self.source, self.result)
+ def transformSuitesReport(self,stylesheet,xml,output,params):
+ from java.io import FileInputStream
+ from java.io import FileOutputStream
+ from java.io import ByteArrayOutputStream
+
+ from javax.xml.transform import TransformerFactory
+ from javax.xml.transform.stream import StreamSource
+ from javax.xml.transform.stream import StreamResult
+
+ self.xslSource = StreamSource(FileInputStream("%s" % stylesheet))
+ self.tfactory = TransformerFactory.newInstance()
+ self.xslTemplate = self.tfactory.newTemplates(self.xslSource)
+ self.transformer = self.xslTemplate.newTransformer()
+
+ self.source = StreamSource(FileInputStream("%s" % xml))
+ self.result = StreamResult(FileOutputStream("%s" % output))
+
+ self.myAttr = basic_utils().printKey(params)
+ self.myValue = basic_utils().printKeyValue(params)
+
+ self.transformer.setParameter(self.myAttr, self.myValue)
+ self.transformer.transform(self.source, self.result)
+
--
Gitblit v1.10.0