Skip to content

Commit

Permalink
Bug 59918 - Ant generated HTML report is broken (extras folder)
Browse files Browse the repository at this point in the history
Bugzilla Id: 59918

git-svn-id: https://svn.apache.org/repos/asf/jmeter/trunk@1754707 13f79535-47bb-0310-9956-ffa450edef68

Former-commit-id: c3a759b
  • Loading branch information
pmouawad committed Aug 1, 2016
1 parent 3fa0fd4 commit 5740803
Show file tree
Hide file tree
Showing 4 changed files with 130 additions and 122 deletions.
8 changes: 0 additions & 8 deletions extras/build.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,6 @@
N.B. Ant interprets relative paths against the build file
-Djmeter.home=.. - path to JMeter home directory (defaults to parent of this build file)
-Dreport.title="My Report" - title for html report (default is 'Load Test Results')

Deprecated:
-Dformat=2.0 - use version 2.0 JTL files rather than 2.1

</description>

<property name="testpath" value="${user.dir}"/>
Expand All @@ -56,10 +52,6 @@

<property name="format" value="2.1"/>

<condition property="style_version" value="">
<equals arg1="${format}" arg2="2.0"/>
</condition>

<condition property="style_version" value="_21">
<equals arg1="${format}" arg2="2.1"/>
</condition>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes" encoding="UTF-8" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />


<!--
Licensed to the Apache Software Foundation (ASF) under one or more
Expand All @@ -19,13 +18,24 @@
limitations under the License.
-->

<!--
Stylesheet for processing 2.1 output format test result files
To uses this directly in a browser, add the following to the JTL file as line 2:
<?xml-stylesheet type="text/xsl" href="../extras/jmeter-results-detail-report_21.xsl"?>
and you can then view the JTL in a browser
-->

<xsl:output method="html" indent="yes" encoding="UTF-8" doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" />

<!-- Defined parameters (overrideable) -->
<xsl:param name="showData" select="'N'"/>
<xsl:param name="showData" select="'n'"/>
<xsl:param name="titleReport" select="'Load Test Results'"/>
<xsl:param name="dateReport" select="'date not defined'"/>

<xsl:template match="testResults">
<html>
<head>
<title>Load Test Results</title>
<title><xsl:value-of select="$titleReport" /></title>
<style type="text/css">
body {
font:normal 68% verdana,arial,helvetica;
Expand All @@ -35,9 +45,10 @@
font-size: 68%;
}
table.details tr th{
color: #ffffff;
font-weight: bold;
text-align:left;
background:#a6caf0;
text-align:center;
background:#2674a6;
white-space: nowrap;
}
table.details tr td{
Expand Down Expand Up @@ -118,10 +129,10 @@
<xsl:call-template name="pageHeader" />

<xsl:call-template name="summary" />
<hr size="1" width="95%" align="left" />
<hr size="1" width="95%" align="center" />

<xsl:call-template name="pagelist" />
<hr size="1" width="95%" align="left" />
<hr size="1" width="95%" align="center" />

<xsl:call-template name="detail" />

Expand All @@ -130,10 +141,10 @@
</xsl:template>

<xsl:template name="pageHeader">
<h1>Load Test Results</h1>
<h1><xsl:value-of select="$titleReport" /></h1>
<table width="100%">
<tr>
<td align="left"></td>
<td align="left">Date report: <xsl:value-of select="$dateReport" /></td>
<td align="right">Designed for use with <a href="http://jmeter.apache.org/">JMeter</a> and <a href="http://ant.apache.org">Ant</a>.</td>
</tr>
</table>
Expand All @@ -142,59 +153,59 @@

<xsl:template name="summary">
<h2>Summary</h2>
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<table align="center" class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<tr valign="top">
<th>Tests</th>
<th># Samples</th>
<th>Failures</th>
<th>Success Rate</th>
<th>Average Time</th>
<th>Min Time</th>
<th>Max Time</th>
</tr>
<tr valign="top">
<xsl:variable name="allCount" select="count(/testResults/sampleResult)" />
<xsl:variable name="allFailureCount" select="count(/testResults/sampleResult[attribute::success='false'])" />
<xsl:variable name="allSuccessCount" select="count(/testResults/sampleResult[attribute::success='true'])" />
<xsl:variable name="allCount" select="count(/testResults/*)" />
<xsl:variable name="allFailureCount" select="count(/testResults/*[attribute::s='false'])" />
<xsl:variable name="allSuccessCount" select="count(/testResults/*[attribute::s='true'])" />
<xsl:variable name="allSuccessPercent" select="$allSuccessCount div $allCount" />
<xsl:variable name="allTotalTime" select="sum(/testResults/sampleResult/@time)" />
<xsl:variable name="allTotalTime" select="sum(/testResults/*/@t)" />
<xsl:variable name="allAverageTime" select="$allTotalTime div $allCount" />
<xsl:variable name="allMinTime">
<xsl:call-template name="min">
<xsl:with-param name="nodes" select="/testResults/sampleResult/@time" />
<xsl:with-param name="nodes" select="/testResults/*/@t" />
</xsl:call-template>
</xsl:variable>
<xsl:variable name="allMaxTime">
<xsl:call-template name="max">
<xsl:with-param name="nodes" select="/testResults/sampleResult/@time" />
<xsl:with-param name="nodes" select="/testResults/*/@t" />
</xsl:call-template>
</xsl:variable>
<xsl:attribute name="class">
<xsl:choose>
<xsl:when test="$allFailureCount &gt; 0">Failure</xsl:when>
</xsl:choose>
</xsl:attribute>
<td>
<td align="center">
<xsl:value-of select="$allCount" />
</td>
<td>
<td align="center">
<xsl:value-of select="$allFailureCount" />
</td>
<td>
<td align="center">
<xsl:call-template name="display-percent">
<xsl:with-param name="value" select="$allSuccessPercent" />
</xsl:call-template>
</td>
<td>
<td align="center">
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$allAverageTime" />
</xsl:call-template>
</td>
<td>
<td align="center">
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$allMinTime" />
</xsl:call-template>
</td>
<td>
<td align="center">
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$allMaxTime" />
</xsl:call-template>
Expand All @@ -205,33 +216,33 @@

<xsl:template name="pagelist">
<h2>Pages</h2>
<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<table align="center" class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<tr valign="top">
<th>URL</th>
<th>Tests</th>
<th># Samples</th>
<th>Failures</th>
<th>Success Rate</th>
<th>Average Time</th>
<th>Min Time</th>
<th>Max Time</th>
<th></th>
</tr>
<xsl:for-each select="/testResults/sampleResult[not(@label = preceding::*/@label)]">
<xsl:variable name="label" select="@label" />
<xsl:variable name="count" select="count(../sampleResult[@label = current()/@label])" />
<xsl:variable name="failureCount" select="count(../sampleResult[@label = current()/@label][attribute::success='false'])" />
<xsl:variable name="successCount" select="count(../sampleResult[@label = current()/@label][attribute::success='true'])" />
<xsl:for-each select="/testResults/*[not(@lb = preceding::*/@lb)]">
<xsl:variable name="label" select="@lb" />
<xsl:variable name="count" select="count(../*[@lb = current()/@lb])" />
<xsl:variable name="failureCount" select="count(../*[@lb = current()/@lb][attribute::s='false'])" />
<xsl:variable name="successCount" select="count(../*[@lb = current()/@lb][attribute::s='true'])" />
<xsl:variable name="successPercent" select="$successCount div $count" />
<xsl:variable name="totalTime" select="sum(../sampleResult[@label = current()/@label]/@time)" />
<xsl:variable name="totalTime" select="sum(../*[@lb = current()/@lb]/@t)" />
<xsl:variable name="averageTime" select="$totalTime div $count" />
<xsl:variable name="minTime">
<xsl:call-template name="min">
<xsl:with-param name="nodes" select="../sampleResult[@label = current()/@label]/@time" />
<xsl:with-param name="nodes" select="../*[@lb = current()/@lb]/@t" />
</xsl:call-template>
</xsl:variable>
<xsl:variable name="maxTime">
<xsl:call-template name="max">
<xsl:with-param name="nodes" select="../sampleResult[@label = current()/@label]/@time" />
<xsl:with-param name="nodes" select="../*[@lb = current()/@lb]/@t" />
</xsl:call-template>
</xsl:variable>
<tr valign="top">
Expand All @@ -250,28 +261,28 @@
<xsl:value-of select="$label" />
</xsl:if>
</td>
<td>
<td align="center">
<xsl:value-of select="$count" />
</td>
<td>
<td align="center">
<xsl:value-of select="$failureCount" />
</td>
<td>
<td align="right">
<xsl:call-template name="display-percent">
<xsl:with-param name="value" select="$successPercent" />
</xsl:call-template>
</td>
<td>
<td align="right">
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$averageTime" />
</xsl:call-template>
</td>
<td>
<td align="right">
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$minTime" />
</xsl:call-template>
</td>
<td>
<td align="right">
<xsl:call-template name="display-time">
<xsl:with-param name="value" select="$maxTime" />
</xsl:call-template>
Expand All @@ -289,30 +300,23 @@
<td colspan="8" bgcolor="#FF0000">
<div align="center">
<b>Details for Page "<xsl:value-of select="$label" />"</b>
<table bordercolor="#000000" border="1" cellpadding="0" cellspacing="0" width="95%">
<table bordercolor="#000000" bgcolor="#2674A6" border="0" cellpadding="1" cellspacing="1" width="95%">
<tr>
<th>Thread</th>
<th>Iteration</th>
<th>Time</th>
<th>Time (milliseconds)</th>
<th>Bytes</th>
<th>Success</th>
<!--
itterations = position() - thread stuff
time="312"
timeStamp="1053622047640"
responseMessage="OK"
threadName="Thread Group-1"
dataType="text"
label="/CansysAandA/processAuthentication.do"
success="true"
-->
</tr>

<xsl:for-each select="../sampleResult[@label = $label and @threadName != $label]">
<xsl:for-each select="../*[@lb = $label and @tn != $label]">
<tr>
<td><xsl:value-of select="@threadName" /></td>
<td><xsl:value-of select="position()" /></td>
<td><xsl:value-of select="@time" />ms</td>
<td><xsl:value-of select="@success" /></td>
<td><xsl:value-of select="@tn" /></td>
<td align="center"><xsl:value-of select="position()" /></td>
<td align="right"><xsl:value-of select="@t" /></td>
<!-- TODO allow for missing bytes field -->
<td align="right"><xsl:value-of select="@by" /></td>
<td align="center"><xsl:value-of select="@s" /></td>
</tr>
</xsl:for-each>

Expand All @@ -326,19 +330,19 @@
</xsl:template>

<xsl:template name="detail">
<xsl:variable name="allFailureCount" select="count(/testResults/sampleResult[attribute::success='false'])" />
<xsl:variable name="allFailureCount" select="count(/testResults/*[attribute::s='false'])" />

<xsl:if test="$allFailureCount > 0">
<h2>Failure Detail</h2>

<xsl:for-each select="/testResults/sampleResult[not(@label = preceding::*/@label)]">
<xsl:for-each select="/testResults/*[not(@lb = preceding::*/@lb)]">

<xsl:variable name="failureCount" select="count(../sampleResult[@label = current()/@label][attribute::success='false'])" />
<xsl:variable name="failureCount" select="count(../*[@lb = current()/@lb][attribute::s='false'])" />

<xsl:if test="$failureCount > 0">
<h3><xsl:value-of select="@label" /><a><xsl:attribute name="name"><xsl:value-of select="@label" /></xsl:attribute></a></h3>
<h3><xsl:value-of select="@lb" /><a><xsl:attribute name="name"><xsl:value-of select="@lb" /></xsl:attribute></a></h3>

<table class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<table align="center" class="details" border="0" cellpadding="5" cellspacing="2" width="95%">
<tr valign="top">
<th>Response</th>
<th>Failure Message</th>
Expand All @@ -347,10 +351,10 @@
</xsl:if>
</tr>

<xsl:for-each select="/testResults/sampleResult[@label = current()/@label][attribute::success='false']">
<xsl:for-each select="/testResults/*[@lb = current()/@lb][attribute::s='false']">
<tr>
<td><xsl:value-of select="@responseCode" /> - <xsl:value-of select="@responseMessage" /></td>
<td><xsl:value-of select="assertionResult/@failureMessage" /></td>
<td><xsl:value-of select="@rc | @rs" /> - <xsl:value-of select="@rm" /></td>
<td><xsl:value-of select="assertionResult/failureMessage" /></td>
<xsl:if test="$showData = 'y'">
<td><xsl:value-of select="./binary" /></td>
</xsl:if>
Expand Down Expand Up @@ -404,4 +408,4 @@
<xsl:value-of select="format-number($value,'0 ms')" />
</xsl:template>

</xsl:stylesheet>
</xsl:stylesheet>
Loading

0 comments on commit 5740803

Please sign in to comment.