You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2016/02/08 12:50:42 UTC
svn commit: r1729145 [2/2] - in /jmeter/trunk:
bin/report-template/content/js/ src/core/org/apache/jmeter/report/config/
src/core/org/apache/jmeter/report/dashboard/
src/core/org/apache/jmeter/report/processor/graph/ xdocs/ xdocs/usermanual/
Modified: jmeter/trunk/xdocs/usermanual/generating-dashboard.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/generating-dashboard.xml?rev=1729145&r1=1729144&r2=1729145&view=diff
==============================================================================
--- jmeter/trunk/xdocs/usermanual/generating-dashboard.xml (original)
+++ jmeter/trunk/xdocs/usermanual/generating-dashboard.xml Mon Feb 8 11:50:41 2016
@@ -1,14 +1,8 @@
<?xml version="1.0"?>
-<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
- license agreements. See the NOTICE file distributed with this work for additional
- information regarding copyright ownership. The ASF licenses this file to
- You under the Apache License, Version 2.0 (the "License"); you may not use
- this file except in compliance with the License. You may obtain a copy of
- the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
- by applicable law or agreed to in writing, software distributed under the
- License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
- OF ANY KIND, either express or implied. See the License for the specific
- language governing permissions and limitations under the License. -->
+<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You
+ under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed
+ to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations
+ under the License. -->
<!DOCTYPE document[
<!ENTITY sect-num '16'>
@@ -17,590 +11,632 @@
<document prev="regular_expressions.html" next="hints_and_tips.html" id="$Id$">
- <properties>
- <title>User's Manual: Generating Dashboard Report</title>
- </properties>
-
- <body>
-
- <section name="§-num;. Generating Report Dashboard" anchor="generation">
- <p>
- JMeter supports dashboard report generation to get graphs and
- statistics from a test plan.
- <br />
- This chapter describes how to configure and use the generator.
- </p>
-
- <subsection name="§-num;.1 Overview" anchor="overview">
- <p>
- The dashboard generator is a modular extension of JMeter. Its
- default behavior is to read and process samples from CSV files to
- generate Html files containing graph views.
- </p>
-
- <p>
- It is designed to support different way of data exportation, if
- Html files are not relevant.
- </p>
- </subsection>
-
- <subsection name="§-num;.2 Configuring Dashboard Generation" anchor="configure">
- <p>
- Dashboard generation uses JMeter properties to customize the
- report. Some properties are used
- for general settings and others are
- used to describe a graph
- configuration or exporter configuration.
- </p>
-
- <subsection name="§-num;.2.1 General settings" anchor="configure_general">
- <note>
- All properties must be prefixed with
- <code>jmeter.reportgenerator.</code>
- </note>
- <table>
- <thead>
- <tr>
- <th>Property</th>
- <th>Description</th>
- <th>Default value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>apdex_statisfied_threshold</td>
- <td>
- Sets the satisfaction threshold for the APDEX calculation.
- <br />
- Specified in milliseconds
- </td>
- <td>500</td>
- </tr>
- <tr>
- <td>apdex_tolerated_threshold</td>
- <td>
- Sets the tolerance threshold for the APDEX calculation.
- <br />
- Specified in milliseconds
- </td>
- <td>1500</td>
- </tr>
- <tr>
- <td>sample_filter</td>
- <td>
- Sets the filter of samples to keep for graphs and
- statistics
- generation.
- <br />
- A comma separated list of samples names is expected
- </td>
- <td>"" (no filtering)</td>
- </tr>
- <tr>
- <td>temp_dir</td>
- <td>Sets the temporary directory used by the generation
- processus if
- it needs file I/O operations.</td>
- <td>temp</td>
- </tr>
- <tr>
- <td>statistic_window</td>
- <td>
- Sets the size of the sliding window used by percentile
- evaluation.
- <br />
- Caution : higher value provides a better accurency but needs
- more memory.
- </td>
- <td>200000</td>
- </tr>
- </tbody>
- </table>
-
- <note>Relative paths are build from the JMeter working directory (default: bin).</note>
-
- <note>
- <p>
- You can define some overall properties which are used by the
- generator configuration.
- These properties are freely named but you
- should use the prefix
- "jmeter.reportgenerator." in order to avoid
- properties overlap.
- </p>
- <p>
- E.g :
- <br />
- Property definition :
- <code>jmeter.reportgenerator.overall_granularity=60000</code>
- <br />
- Property reference :
- <br />
- <code>jmeter.reportgenerator.graph.<…>=${jmeter.reportgenerator.overall_granularity}
- </code>
- </p>
- </note>
- </subsection>
-
- <subsection name="§-num;.2.2 Graph settings" anchor="configure_graph">
- <p>Each property describing a graph configuration must be prefixed
- with "jmeter.reportgenerator.graph." followed by the graph
- identifier.</p>
- <note> The identifier is used to group properties by graph.</note>
-
- <subsection name="§-num;.2.2.1 General properties" anchor="general_graph_properties">
- <p>All graphs support these properties :</p>
- <table>
- <thead>
- <tr>
- <th>Property</th>
- <th>Description</th>
- <th>Default value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>abscissa_max</td>
- <td>
- Sets the maximum abscissa of the graph. If this property is
- not set, it will be defined during the generation.
- </td>
- <td>No default value</td>
- </tr>
- <tr>
- <td>abscissa_min</td>
- <td>
- Sets the minimum abscissa of the graph. If this property is
- not set, it will be defined during the generation.
- </td>
- <td>No default value</td>
- </tr>
- <tr>
- <td>classname</td>
- <td>
- The fully qualified class name of the graph
- <br />
- This property is required.
- <br />
- The class of the graph must extend
- org.apache.jmeter.report.processor.graph.AbstractGraphConsumer.
- <br />
- See
- <a href="#default_graphs">Default graph section</a>
- for more details.
- </td>
- <td>No default value</td>
- </tr>
- <tr>
- <td>exclude_controllers</td>
- <td>
- Defines whether the graph discards controller samples.
- </td>
- <td>false</td>
- </tr>
- <tr>
- <td>ordinate_max</td>
- <td>
- Sets the maximum ordinate of the graph. If this property is
- not set, it will be defined during the generation.
- </td>
- <td>No default value</td>
- </tr>
- <tr>
- <td>ordinate_min</td>
- <td>
- Sets the minimum ordinate of the graph. If this property is
- not set, it will be defined during the generation.
- </td>
- <td>No default value</td>
- </tr>
- <tr>
- <td>title</td>
- <td>
- Sets the title of the graph.
- </td>
- <td>""</td>
- </tr>
- </tbody>
- </table>
- </subsection>
-
- <subsection name="§-num;.2.2.2 Specific properties" anchor="specific_graph_properties">
- <p>
- Specific graph properties must use the prefix
- "jmeter.reportgenerator.graph.<graph_id>.property"
- <br />
- The name of the property will be mapped using camel case
- transformation and the matching method of the class will be
- called
- with the property
- value as argument.
- </p>
- <p>
- E.g :
- <br />
- jmeter.reportgenerator.graph.<graph_id>.property.set_granularity
- = 150 induces the call of the method setGranularity(150) on the
- instance of the graph.
- </p>
- </subsection>
-
- </subsection>
-
- <subsection name="§-num;.2.3 Export settings" anchor="configure_export">
- <p>
- Each property describing an exporter configuration must be
- prefixed
- with "jmeter.reportgenerator.exporter"
- followed by the
- exporter identifier.
- </p>
-
- <subsection name="§-num;.2.3.1 General properties" anchor="general_export_properties">
- <table>
- <thead>
- <tr>
- <th>Property</th>
- <th>Description</th>
- <th>Default value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>classname</td>
- <td>
- The fully qualified class name of the exporter
- <br />
- This property is required.
- <br />
- The class of the exporter must implement
- org.apache.jmeter.report.dashboard.DataExporter.
- </td>
- <td>No default value</td>
- </tr>
- </tbody>
- </table>
- </subsection>
-
- <subsection name="§-num;.2.3.1 Specific properties for Html export" anchor="html_export_properties">
- <p>
- Specific exporter properties must use the prefix
- "jmeter.reportgenerator.exporter.<exporter_id>.property"
- </p>
- <table>
- <thead>
- <tr>
- <th>Property</th>
- <th>Description</th>
- <th>Default value</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td>output_dir</td>
- <td>
- Sets the destination directory for generated html pages.
- </td>
- <td>report-output</td>
- </tr>
- <tr>
- <td>template_dir</td>
- <td>
- Sets the source directory of templated files from which the
- html pages are generated.
- </td>
- <td>report-template</td>
- </tr>
- </tbody>
- </table>
- </subsection>
-
- </subsection>
- </subsection>
-
- <subsection name="§-num;.3 Generating reports" anchor="report">
- <p>
- The report generation can be done as a stand alone process from a
- sample log file or automatically after running load test.
- </p>
-
- <subsection name="§-num;.3.1 Generation from an existing sample log file" anchor="report_only">
- <p>
- Use the following command :
- <code>jmeter -n -g <log file></code>
- </p>
- </subsection>
-
- <subsection name="§-num;.3.2 Generation after load test" anchor="report_after_load_test">
- <p>
- Use the following command :
- <code>jmeter -n -t <test JMX file> -e -l <test log file></code>
- </p>
- </subsection>
- </subsection>
-
- <subsection name="§-num;.4 Template processing" anchor="process_template">
- <subsection name="§-num;.4.1 Overview" anchor="template_overview">
- <p>
- The default exporter of the generator use the template engine
- <a href="http://freemarker.org/">freemarker</a>
- to produce html pages.
- <br />
- Templated files are located in the template directory defined by
- the JMeter property "jmeter.reportgenerator.template_dir" and have
- the
- extension ".fmkr".
- </p>
- <p>
- The graph references in the templated files use the syntax :
- ${<graph_id>.<value>} where :
- <ul>
- <li>"graph_id" is the identifier of the graph matching the jmeter
- properties definition</li>
- <li>"value" is the name of the value where data are stored.</li>
- </ul>
- </p>
-
- <p>
- Each graph produces the following values :
- <ul>
- <li>
- <p>
- <code>maxX</code>
- :
- <br />
- The maximum abscissa of the graph (double).
- </p>
- </li>
- <li>
- <p>
- <code>maxY</code>
- :
- <br />
- The maximum ordinate of the graph (double).
- </p>
- </li>
- <li>
- <p>
- <code>minX</code>
- :
- <br />
- The minimum abscissa of the graph (double).
- </p>
- </li>
- <li>
- <p>
- <code>minY</code>
- :
- <br />
- The maximum ordinate of the graph (double).
- </p>
- </li>
- <li>
- <p>
- <code>title</code>
- :
- <br />
- The title of the graph (string).
- </p>
- </li>
- <li>
- <p>
- <code>values</code>
- :
- <br />
- A json object representing the data of the graph series
- (string).
- </p>
- </li>
- </ul>
- </p>
-
- <note>
- Graph can provide some other values, see
- <a href="#default_graphs">Default graph section</a>
- to get the list of these values for default graphs.
- </note>
- </subsection>
-
- <subsection name="§-num;.4.2 Customization" anchor="template_customization">
- <p>You can customize the dashboard generation by modifying the
- files in the template directory.
- </p>
- <p>
- If you want to add a graph to the dahsboard, you have to
- <a href="#configure_graph">declare
- it among the JMeter properties</a>
- and use its references in the templated files.
- </p>
- <p>If you want to remove a graph from the dashboard, you must
- remove
- all its references in the templated files and clear JMeter
- properties.</p>
- </subsection>
- </subsection>
-
- <subsection name="§-num;.5 Default graphs" anchor="default_graphs">
- <note>Due to limitations of this early version, each default graph
- must be declared among the JMeter properties. Otherwise, the graph
- views will be empty.</note>
-
- <p>The dashboard generator provides the following graph classes :</p>
- <ul>
- <li>
- <p>
- <code>org.apache.jmeter.report.processor.graph.impl.ActiveThreadsGraphConsumer</code>
- :
- <br />
- This graph represents the number of active threads over time.
- <br />
- Additional produced values : granularity.
- </p>
- </li>
- <li>
- <p>
- <code>org.apache.jmeter.report.processor.graph.impl.BytesThroughputGraphConsumer</code>
- :
- <br />
- This graph represents the troughput of received and sent data
- over time.
- <br />
- Additional produced values : granularity.
- </p>
- </li>
- <li>
- <p>
- <code>org.apache.jmeter.report.processor.graph.impl.CodesPerSecondGraphConsumer</code>
- :
- <br />
- This graph represents the rate of response codes over time.
- <br />
- Additional produced values : granularity.
- </p>
- </li>
- <li>
- <p>
- <code>org.apache.jmeter.report.processor.graph.impl.HitsPerSecondGraphConsumer</code>
- :
- <br />
- This graph represents the rate of finished requests over time.
- <br />
- Additional produced values : granularity.
- </p>
- </li>
- <li>
- <p>
- <code>org.apache.jmeter.report.processor.graph.impl.LatencyOverTimeGraphConsumer</code>
- :
- <br />
- This graph represents the average latency time over time.
- <br />
- Additional produced values : granularity.
- </p>
- </li>
- <li>
- <p>
- <code>org.apache.jmeter.report.processor.graph.impl.LatencyVSRequestGraphConsumer</code>
- :
- <br />
- This graph represents the median and average latency time
- depending on the number of current requests.
- <br />
- Additional produced values : granularity.
- </p>
- </li>
- <li>
- <p>
- <code>org.apache.jmeter.report.processor.graph.impl.ResponseTimeDistributionGraphConsumer</code>
- :
- <br />
- This graph represents the distribution of the samples depending
- on their elapsed time and name.
- <br />
- Additional produced values : granularity.
- </p>
- </li>
- <li>
- <p>
- <code>org.apache.jmeter.report.processor.graph.impl.ResponseTimeOverTimeGraphConsumer</code>
- :
- <br />
- This graph represents the average response time over time.
- <br />
- Additional produced values : granularity.
- </p>
- </li>
- <li>
- <p>
- <code>
- org.apache.jmeter.report.processor.graph.impl.ResponseTimePercentilesGraphConsumer
- </code>
- :
- <br />
- This graph represents the percentiles of the elapsed time over
- time.
- </p>
- </li>
- <li>
- <p>
- <code>
- org.apache.jmeter.report.processor.graph.impl.ResponseTimePerSampleGraphConsumer
- </code>
- :
- <br />
- This graph represents the median and average response time per
- sample name.
- <br />
- Additional produced values : sampleNames (index of sample names).
- </p>
- </li>
- <li>
- <p>
- <code>
- org.apache.jmeter.report.processor.graph.impl.ResponseTimeVSRequestGraphConsumer
- </code>
- :
- <br />
- This graph represents the median and average response time
- depending on the number of current requests.
- <br />
- Additional produced values : granularity.
- </p>
- </li>
- <li>
- <p>
- <code>org.apache.jmeter.report.processor.graph.impl.TimeVSThreadGraphConsumer</code>
- :
- <br />
- This graph represents the average response time depending on the
- number of current active threads.
- <br />
- <!-- NOTE : Actually aggregated series are disabled -->
- <!--<p> The *-aggregated series represent the average response time
- regardless of the number of current active threads. These series are represented
- by a sole point because the number of current active threads is aggregated
- to an average. So for these points : <ul> <li>The abscissa is the average
- of the number of current active threads when samples of the series finish.</li>
- <li>The ordinate is the average of the response time for the samples of the
- series regardless of the number of current active threads.</li> </ul> </p> -->
- </p>
- </li>
- <li>
- <p>
- <code>org.apache.jmeter.report.processor.graph.impl.TransactionsPerSecondGraphConsumer</code>
- :
- <br />
- This graph represents the rate of transaction by sample name over
- time.
- <br />
- Additional produced values : granularity.
- </p>
- </li>
- </ul>
- </subsection>
+ <properties>
+ <title>User's Manual: Generating Dashboard Report</title>
+ </properties>
+
+ <body>
+
+ <section name="§-num;. Generating Report Dashboard" anchor="generation">
+ <p>
+ JMeter supports dashboard report generation to get graphs and
+ statistics from a test plan.
+ <br />
+ This chapter describes how to configure and use the generator.
+ </p>
+
+ <subsection name="§-num;.1 Overview" anchor="overview">
+ <p>
+ The dashboard generator is a modular extension of JMeter. Its
+ default behavior is to read and process samples from CSV files to
+ generate Html files
+ containing graph views.
+ </p>
+ <!-- <p> It is designed to support different way of data exportation, if Html files are not relevant. </p> -->
+ </subsection>
+
+ <subsection name="§-num;.2 Configuring Dashboard Generation" anchor="configure">
+ <p>
+ Dashboard generation uses JMeter properties to customize the
+ report. Some properties are used
+ for general settings and others are
+ used to describe a graph
+ configuration or exporter configuration.
+ </p>
+
+ <subsection name="§-num;.2.1 Requirements" anchor="configure_requirements">
+ <p>
+ To enable the generator to operate, the input CSV files must
+ include
+ required data.
+ Check that your jmeter configuration follows
+ these
+ settings :
+ <ul>
+ <li>jmeter.save.saveservice.bytes = true</li>
+ <li>jmeter.save.saveservice.label = true</li>
+ <li>jmeter.save.saveservice.latency = true</li>
+ <li>jmeter.save.saveservice.response_code = true</li>
+ <li>jmeter.save.saveservice.response_message = true</li>
+ <li>jmeter.save.saveservice.successful = true</li>
+ <li>jmeter.save.saveservice.thread_counts = true</li>
+ <li>jmeter.save.saveservice.thread_name = true</li>
+ <li>jmeter.save.saveservice.time = true</li>
+ <li>jmeter.save.saveservice.timestamp_format != none</li>
+ </ul>
+
+ <note>
+ The "Errors" summary table shows more accurate data if these
+ settings are fulfilled :
+ <ul>
+ <li>jmeter.save.saveservice.assertion_results_failure_message =
+ true</li>
+ <li>
+ If you use a transaction controller, check the box
+ <code>Generate parent sample</code>
+ <figure image="transactioncontroller.png"></figure>
+ </li>
+ </ul>
+ </note>
+ </p>
+ </subsection>
+
+ <subsection name="§-num;.2.2 General settings" anchor="configure_general">
+ <note>
+ All properties must be prefixed with
+ <code>jmeter.reportgenerator.</code>
+ </note>
+ <properties>
+ <property name="apdex_statisfied_threshold" required="No">
+ Sets
+ the satisfaction threshold for the APDEX
+ calculation (in ms).
+ Default: 500
+ </property>
+ <property name="apdex_tolerated_threshold" required="No">
+ Sets
+ the tolerance threshold for the APDEX calculation
+ (in ms).
+ Default: 1500
+ </property>
+ <property name="sample_filter" required="No">
+ Sets the filter
+ of samples to keep for generating
+ graphs and statistics. An empty
+ value deactivates the
+ filtering.
+ Format: comma separated list of
+ sample names. Default: ""
+ </property>
+ <property name="temp_dir" required="No">
+ Sets the temporary
+ directory used by the generation
+ processus if it needs file I/O
+ operations. Default: temp
+ </property>
+ <property name="statistic_window" required="No">
+ Sets the size
+ of the sliding window used by percentile
+ evaluation. Caution :
+ higher value provides a
+ better accurency
+ but needs more memory.
+ Default: 200000
+ </property>
+ </properties>
+
+ <note>Relative paths are build from the JMeter working directory
+ (default: bin).</note>
+
+ <note>
+ <p>
+ You can define some overall properties which are used by the
+ generator configuration.
+ These properties are freely named but you
+ should use the prefix
+ <code>jmeter.reportgenerator.</code>
+ in order to avoid
+ properties overlap.
+ </p>
+ <p>
+ E.g :
+ <br />
+ Property definition :
+ <code>jmeter.reportgenerator.overall_granularity=60000</code>
+ <br />
+ Property reference :
+ <code>${jmeter.reportgenerator.overall_granularity}
+ </code>
+ </p>
+ </note>
+ </subsection>
+
+ <subsection name="§-num;.2.3 Graph settings" anchor="configure_graph">
+ <p>
+ Each property describing a graph configuration must be prefixed
+ with
+ <code>jmeter.reportgenerator.graph.</code>
+ followed by the graph
+ identifier.
+ </p>
+ <!-- <note> The identifier is used to group properties by graph.</note> -->
+
+ <subsection name="§-num;.2.3.1 General properties" anchor="general_graph_properties">
+ <p>All graphs support these properties :</p>
+ <properties>
+ <property name="classname" required="Yes">
+ The fully qualified class name of the graph
+ <br />
+ The class of the graph must extend
+ <code>org.apache.jmeter.report.processor.graph.AbstractGraphConsumer</code>
+ .
+ <br />
+ See
+ <a href="#default_graphs">Default graph section</a>
+ for more details.
+ </property>
+ <property name="exclude_controllers" required="No">Defines
+ whether the graph discards controller samples. Default: false</property>
+ <property name="title" required="No">Sets the title of the
+ graph. Default: ""</property>
+ </properties>
+ </subsection>
+
+ <subsection name="§-num;.2.3.2 Specific properties" anchor="specific_graph_properties">
+ <p>
+ Specific graph properties must use the prefix
+ <code>jmeter.reportgenerator.graph.<graph_id>.property</code>
+ <br />
+ The name of the property will be mapped using camel case
+ transformation and the matching method of the class will be
+ called
+ with the property
+ value as
+ argument.
+ </p>
+ <p>
+ E.g :
+ <br />
+ <code>jmeter.reportgenerator.graph.<graph_id>.property.set_granularity=150</code>
+ induces the call of the method setGranularity(150) on the
+ instance of the graph.
+ </p>
+ </subsection>
+
+ </subsection>
+
+ <subsection name="§-num;.2.4 Export settings" anchor="configure_export">
+ <p>
+ Each property describing an exporter configuration must be
+ prefixed with
+ <code>jmeter.reportgenerator.exporter</code>
+ followed by the exporter identifier.
+ </p>
+
+ <subsection name="§-num;.2.4.1 General properties" anchor="general_export_properties">
+ <p>All exporters support these properties :</p>
+ <properties>
+ <property name="classname" required="Yes">
+ The fully qualified class name of the exporter
+ <br />
+ The class of the exporter must implement
+ <code>org.apache.jmeter.report.dashboard.DataExporter</code>
+ .
+ </property>
+ <property name="filters_only_sample_series" required="No">Defines
+ whether series_filter (see below) apply only on sample series.
+ Default: false</property>
+ <property name="series_filter" required="No">Sets the filter
+ of series. An empty value deactivates the filtering. Format:
+ regular expression. Default:
+ ""</property>
+ <property name="show_controllers_only" required="No">Defines
+ whether only controller series are shown. Default: false</property>
+ </properties>
+ </subsection>
+
+ <subsection name="§-num;.2.4.2 Specific properties" anchor="specific_export_properties">
+ <p>
+ Specific exporter properties must use the prefix
+ <code>jmeter.reportgenerator.exporter.<exporter_id>.property</code>
+ </p>
+ <table>
+ <caption>Specific properties for HTML exporter</caption>
+ <tbody>
+ <tr>
+ <td>
+ <properties>
+ <property name="output_dir" required="No">Sets the
+ destination directory for generated html pages. Default:
+ report-output</property>
+ <property name="template_dir" required="No">Sets the
+ source directory of templated files from which the html
+ pages are generated. Default:
+ report-template</property>
+ </properties>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </subsection>
+
+ <subsection name="§-num;.2.4.3 Graph properties" anchor="graph_export_properties">
+ <p>
+ Graph properties allow exporters to overwrite some graph data.
+ <br />
+ They must use the prefix
+ <code>jmeter.reportgenerator.exporter.<exporter_id>.graph_options.<graph_id></code>
+ </p>
+ <table>
+ <caption>Supported graph properties by HTML exporter</caption>
+ <tbody>
+ <tr>
+ <td>
+ <properties>
+ <property name="minX" required="No">Sets the minimum
+ abscissa for the graph.</property>
+ <property name="maxX" required="No">Sets the maximum
+ abscissa for the graph.</property>
+ <property name="minY" required="No">Sets the minimum
+ ordinate for the graph.</property>
+ <property name="maxY" required="No">Sets the maximum
+ ordinate for the graph.</property>
+ </properties>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </subsection>
+
+ <subsection name="§-num;.2.4.4 Filtering mechanisms" anchor="export_filtering">
+ <p>
+ Unlike the filtering in the section
+ <a href="#configure_general">General properties</a>
+ which discards data
+ before calculations, here the filtering is
+ performed after the
+ calculations and serves to lighten the final
+ report.
+ </p>
+ <p>
+ The property
+ <code>series_filter</code>
+ allows to filter which series of a graph (resp. rows of a summary
+ table) using regular expression that matches the name of the
+ series (resp. of the row).
+ However, even if the name of the
+ series (resp. row) matches the filter, the setting
+ of the other
+ filtering properties can lead to its discarding. Conversely if there is no matching, the other properties can allow to keep it.
+ </p>
+ <p>
+ The following tables show how the setting of filtering
+ properties
+ works.
+ </p>
+ <p>
+ <table>
+ <caption>Cases of discarding when there is pattern matching</caption>
+ <thead>
+ <tr>
+ <th>filter_only_sample_series</th>
+ <th>Graph/Summary supports controllers discrimination</th>
+ <th>The current series is a controller series</th>
+ <th>show_controllers_only</th>
+ <th>Discarded</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td style="border-bottom:1px solid black" rowspan="8">False</td>
+ <td style="border-bottom:1px solid black" rowspan="4">False</td>
+ <td style="border-bottom:1px solid black" rowspan="2">-</td>
+ <td style="border-bottom:1px solid black">False</td>
+ <td style="border-bottom:1px solid black" rowspan="13">False</td>
+ </tr>
+ <tr>
+ <td style="border-bottom:1px solid black">True</td>
+ </tr>
+ <tr>
+ <td style="border-bottom:1px solid black" rowspan="2">-</td>
+ <td style="border-bottom:1px solid black">False</td>
+ </tr>
+ <tr>
+ <td style="border-bottom:1px solid black">True</td>
+ </tr>
+ <tr>
+ <td style="border-bottom:1px solid black" rowspan="4">True</td>
+ <td style="border-bottom:1px solid black" rowspan="2">False</td>
+ <td style="border-bottom:1px solid black">False</td>
+ </tr>
+ <tr>
+ <td style="border-bottom:1px solid black">True</td>
+ </tr>
+ <tr>
+ <td style="border-bottom:1px solid black" rowspan="2">True</td>
+ <td style="border-bottom:1px solid black">False</td>
+ </tr>
+ <tr>
+ <td style="border-bottom:1px solid black">True</td>
+ </tr>
+ <tr>
+ <td rowspan="8">True</td>
+ <td style="border-bottom:1px solid black" rowspan="4">False</td>
+ <td style="border-bottom:1px solid black" rowspan="2">-</td>
+ <td style="border-bottom:1px solid black">False</td>
+ </tr>
+ <tr>
+ <td style="border-bottom:1px solid black">True</td>
+ </tr>
+ <tr>
+ <td style="border-bottom:1px solid black" rowspan="2">-</td>
+ <td style="border-bottom:1px solid black">False</td>
+ </tr>
+ <tr>
+ <td style="border-bottom:1px solid black">True</td>
+ </tr>
+ <tr>
+ <td rowspan="4">True</td>
+ <td style="border-bottom:1px solid black" rowspan="2">False</td>
+ <td style="border-bottom:1px solid black">False</td>
+ </tr>
+ <tr>
+ <td style="border-bottom:1px solid black">True</td>
+ <td style="border-bottom:1px solid black">True</td>
+ </tr>
+ <tr>
+ <td rowspan="2">True</td>
+ <td style="border-bottom:1px solid black">False</td>
+ <td rowspan="2">False</td>
+ </tr>
+ <tr>
+ <td>True</td>
+ </tr>
+ </tbody>
+ </table>
+ </p>
+ <p>
+ <table>
+ <caption>Cases of retention when there is no pattern matching</caption>
+ <thead>
+ <tr>
+ <th>filter_only_sample_series</th>
+ <th>Graph/Summary supports controllers discrimination</th>
+ <th>Kept</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td style="border-bottom:1px solid black" rowspan="2">False</td>
+ <td style="border-bottom:1px solid black">False</td>
+ <td style="border-bottom:1px solid black" rowspan="2">False</td>
+ </tr>
+ <tr>
+ <td style="border-bottom:1px solid black">True</td>
+ </tr>
+ <tr>
+ <td rowspan="2">True</td>
+ <td style="border-bottom:1px solid black">False</td>
+ <td style="border-bottom:1px solid black">True</td>
+ </tr>
+ <tr>
+ <td>True</td>
+ <td>False</td>
+ </tr>
+ </tbody>
+ </table>
+ </p>
+ <note>
+ A wrong filtering configuration can lead to generate empty
+ graphs/summary tables:
+ <ul>
+ <li>
+ If you set the property
+ <code>show_controllers_only</code>
+ whereas the
+ graph is configured to exclude controllers.
+ </li>
+ <li>
+ If the property
+ <code>series_filter</code>
+ matches none series.
+ </li>
+ </ul>
+
+ </note>
+ </subsection>
+ </subsection>
+
+ <subsection name="§-num;.2.5 Sample configuration" anchor="sample_configuration">
+ <p>You can copy the following configuration in your user.properties
+ file in order to test the report generator.</p>
+ <source>
+# Change this parameter if you want to change the granularity of over time graphs.
+jmeter.reportgenerator.overall_granularity=60000
+
+# Change this parameter if you want to override the APDEX satisfaction threshold.
+jmeter.reportgenerator.apdex_statisfied_threshold=1500
+
+# Change this parameter if you want to override the APDEX tolerance threshold.
+jmeter.reportgenerator.apdex_tolerated_threshold=3000
+
+# Sets the destination directory for generated
+html pages.
+jmeter.reportgenerator.exporter.html.property.output_dir=/tmp/test-report
+
+# Indicates which graph series are filtered (regular expression)
+jmeter.reportgenerator.exporter.html.series_filter=^((s0)|(s1)).*$
+
+# Indicates whether
+series filter apply only on sample series
+jmeter.reportgenerator.exporter.html.filters_only_sample_series=true
+ </source>
+ <note>
+ Adapt the parameter
+ <code>output_dir</code>
+ to your environment.
+ </note>
+ <p>
+ This configuration allows to generate a report where :
+ <ul>
+ <li>Over time graphs have a time granularity equals to 1 minute.</li>
+ <li>The satisfaction threshold for ADPEX calculation is 1 second and half.</li>
+ <li>The tolerance threshold for ADPEX calculation is 3 seconds.</li>
+ <li>The HTML files are generated in the directory /tmp/test-report.</li>
+ <li>Only series which the name begins with "s0" or "s1" are shown.</li>
+ <li>The previous filter only applies to graphs (resp. summary tables) where the series (resp. rows) match samples</li>
+ </ul>
+ </p>
+ </subsection>
+
+ </subsection>
+
+ <subsection name="§-num;.3 Generating reports" anchor="report">
+ <p>
+ The report generation can be done as a stand alone process from a
+ sample log file or automatically after running load test.
+ </p>
+
+ <subsection name="§-num;.3.1 Generation from an existing sample log file" anchor="report_only">
+ <p>
+ Use the following command :
+ <code>jmeter -n -g <log file></code>
+ </p>
+ </subsection>
+
+ <subsection name="§-num;.3.2 Generation after load test" anchor="report_after_load_test">
+ <p>
+ Use the following command :
+ <code>jmeter -n -t <test JMX file> -e -l <test log
+ file></code>
+ </p>
+ </subsection>
+ </subsection>
+
+ <subsection name="§-num;.4 Default graphs" anchor="default_graphs">
+ <note>Due to limitations of this early version, each default graph
+ must be declared among the JMeter properties. Otherwise, the graph
+ views will be empty.</note>
+
+ <p>
+ All graphs provided by this report engine are located in the
+ package
+ <code>org.apache.jmeter.report.processor.graph.impl</code>
+ </p>
+ <p>The dashboard generator provides the following graph classes :</p>
+ <table>
+ <thead>
+ <tr>
+ <th>Graph</th>
+ <th>Description</th>
+ <th>Supports controller discrimination</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>ActiveThreadsGraphConsumer</td>
+ <td>This graph represents the number of active threads over time.</td>
+ <td>False</td>
+ </tr>
+ <tr>
+ <td>BytesThroughputGraphConsumer</td>
+ <td>This graph represents the troughput of received and sent data
+ over time.</td>
+ <td>False</td>
+ </tr>
+ <tr>
+ <td>CodesPerSecondGraphConsumer</td>
+ <td>This graph represents the rate of response codes over time.</td>
+ <td>False</td>
+ </tr>
+ <tr>
+ <td>HitsPerSecondGraphConsumer</td>
+ <td>This graph represents the rate of finished requests over
+ time.</td>
+ <td>False</td>
+ </tr>
+ <tr>
+ <td>LatencyOverTimeGraphConsumer</td>
+ <td>This graph represents the average latency time over time.</td>
+ <td>True</td>
+ </tr>
+ <tr>
+ <td>LatencyVSRequestGraphConsumer</td>
+ <td>This graph represents the median and average latency time
+ depending on the number of current requests.</td>
+ <td>False</td>
+ </tr>
+ <tr>
+ <td>ResponseTimeDistributionGraphConsumer</td>
+ <td>This graph represents the distribution of the samples
+ depending on their elapsed time and name.</td>
+ <td>True</td>
+ </tr>
+ <tr>
+ <td>ResponseTimeOverTimeGraphConsumer</td>
+ <td>This graph represents the average response time over time.</td>
+ <td>True</td>
+ </tr>
+ <tr>
+ <td>ResponseTimePercentilesGraphConsumer</td>
+ <td>This graph represents the percentiles of the elapsed time
+ over time.</td>
+ <td>True</td>
+ </tr>
+ <tr>
+ <td>ResponseTimePerSampleGraphConsumer</td>
+ <td>This graph represents the median and average response time
+ per sample name.</td>
+ <td>False</td>
+ </tr>
+ <tr>
+ <td>ResponseTimeVSRequestGraphConsumer</td>
+ <td>This graph represents the median and average response time
+ depending on the number of current requests.</td>
+ <td>False</td>
+ </tr>
+ <tr>
+ <td>TimeVSThreadGraphConsumer</td>
+ <td>
+ This graph represents the average response time depending on the
+ number of current active threads.
+ <p>
+ The *-aggregated series represent the average response time
+ regardless of the number of current active threads. These
+ series are represented
+ by a sole
+ point because the number of
+ current active threads is
+ aggregated
+ to an average. So for
+ these
+ points :
+ <ul>
+ <li>The abscissa is the average
+ of the number of current active
+ threads when samples of the
+ series finish.</li>
+ <li>The ordinate is the average of the response time for the
+ samples of the
+ series regardless of the number of current
+ active threads.</li>
+ </ul>
+ </p>
+ </td>
+ <td>True</td>
+ </tr>
+ <tr>
+ <td>TransactionsPerSecondGraphConsumer</td>
+ <td>This graph represents the rate of transaction by sample name
+ over time.</td>
+ <td>True</td>
+ </tr>
+ </tbody>
+ </table>
+ </subsection>
- </section>
+ </section>
- </body>
+ </body>
</document>