<!DOCTYPE html SYSTEM "about:legacy-compat">
<html lang="en">
    <head>
        <META http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
        <title>Apache JMeter
          -
          User's Manual: Generating Dashboard Report</title>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="https://fonts.googleapis.com/css?family=Merriweather:400normal" rel="stylesheet" type="text/css">
        <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet" type="text/css">
        <link rel="stylesheet" type="text/css" href="../css/new-style.css">
        <link rel="apple-touch-icon-precomposed" href="../images/apple-touch-icon.png">
        <link rel="icon" href="../images/favicon.png">
        <meta name="msapplication-TileColor" content="#ffffff">
        <meta name="msapplication-TileImage" content="../images/mstile-144x144.png">
        <meta name="theme-color" content="#ffffff">
    </head>
    <body role="document">
        <a href="#content" class="hidden">Main content</a>
        <div class="header">
            <!--
            APACHE LOGO
          -->
            <div>
                <a href="https://www.apache.org"><img title="Apache Software Foundation" class="asf-logo logo" src="../images/asf-logo.svg" alt="Logo ASF"></a>
            </div>
            <!--
              PROJECT LOGO
            -->
            <div>
                <a href="https://jmeter.apache.org/"><img class="logo" src="../images/logo.svg" alt="Apache JMeter"></a>
            </div>
            <div class="banner">
                <a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-234x60.png" alt="Current Apache event teaser"></a>
                <div class="clear"></div>
            </div>
        </div>
        <div class="nav">
            <ul class="menu">
                <li onClick="return true">
                    <div class="menu-title">About</div>
                    <ul>
                        <li>
                            <a href="../index.html">Overview</a>
                        </li>
                        <li>
                            <a href="https://www.apache.org/licenses/">License</a>
                        </li>
                    </ul>
                </li>
            </ul>
            <ul class="menu">
                <li onClick="return true">
                    <div class="menu-title">Download</div>
                    <ul>
                        <li>
                            <a href="../download_jmeter.cgi">Download Releases</a>
                        </li>
                        <li>
                            <a href="../changes.html">Release Notes</a>
                        </li>
                    </ul>
                </li>
            </ul>
            <ul class="menu">
                <li onClick="return true">
                    <div class="menu-title">Documentation</div>
                    <ul>
                        <li>
                            <a href="../usermanual/get-started.html">Get Started</a>
                        </li>
                        <li>
                            <a href="../usermanual/index.html">User Manual</a>
                        </li>
                        <li>
                            <a href="../usermanual/best-practices.html">Best Practices</a>
                        </li>
                        <li>
                            <a href="../usermanual/component_reference.html">Component Reference</a>
                        </li>
                        <li>
                            <a href="../usermanual/functions.html">Functions Reference</a>
                        </li>
                        <li>
                            <a href="../usermanual/properties_reference.html">Properties Reference</a>
                        </li>
                        <li>
                            <a href="../changes_history.html">Change History</a>
                        </li>
                        <li>
                            <a href="../api/index.html">Javadocs</a>
                        </li>
                        <li>
                            <a href="https://cwiki.apache.org/confluence/display/JMETER/Home">JMeter Wiki</a>
                        </li>
                        <li>
                            <a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterFAQ">FAQ (Wiki)</a>
                        </li>
                    </ul>
                </li>
            </ul>
            <ul class="menu">
                <li onClick="return true">
                    <div class="menu-title">Tutorials</div>
                    <ul>
                        <li>
                            <a href="../usermanual/jmeter_distributed_testing_step_by_step.html">Distributed Testing</a>
                        </li>
                        <li>
                            <a href="../usermanual/jmeter_proxy_step_by_step.html">Recording Tests</a>
                        </li>
                        <li>
                            <a href="../usermanual/junitsampler_tutorial.html">JUnit Sampler</a>
                        </li>
                        <li>
                            <a href="../usermanual/jmeter_accesslog_sampler_step_by_step.html">Access Log Sampler</a>
                        </li>
                        <li>
                            <a href="../usermanual/jmeter_tutorial.html">Extending JMeter</a>
                        </li>
                    </ul>
                </li>
            </ul>
            <ul class="menu">
                <li onClick="return true">
                    <div class="menu-title">Community</div>
                    <ul>
                        <li>
                            <a href="../issues.html">Issue Tracking</a>
                        </li>
                        <li>
                            <a href="../security.html">Security</a>
                        </li>
                        <li>
                            <a href="../mail.html">Mailing Lists</a>
                        </li>
                        <li>
                            <a href="../svnindex.html">Source Repositories</a>
                        </li>
                        <li>
                            <a href="../building.html">Building and Contributing</a>
                        </li>
                        <li>
                            <a href="https://projects.apache.org/project.html?jmeter">Project info at Apache</a>
                        </li>
                        <li>
                            <a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterCommitters">Contributors</a>
                        </li>
                    </ul>
                </li>
            </ul>
            <ul class="menu">
                <li onClick="return true">
                    <div class="menu-title">Foundation</div>
                    <ul>
                        <li>
                            <a href="https://www.apache.org/">The Apache Software Foundation (ASF)</a>
                        </li>
                        <li>
                            <a href="https://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a>
                        </li>
                        <li>
                            <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a>
                        </li>
                        <li>
                            <a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
                        </li>
                        <li>
                            <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
                        </li>
                    </ul>
                </li>
            </ul>
        </div>
        <div class="main" id="content">
            <div class="social-media">
                <ul class="social-media-links">
                    <li class="twitter">
                        <a href="https://twitter.com/ApacheJMeter" title="Follow us on Twitter"><i class="fa fa-twitter" aria-hidden="true"></i>Twitter</a>
                    </li>
                    <li class="github">
                        <a href="https://github.com/apache/jmeter" title="Fork us on github"><i class="fa fa-github" aria-hidden="true"></i>github</a>
                    </li>
                </ul>
            </div>
            <ul class="pagelinks">
                <li>
                    <a href="remote-test.html">&lt; Prev</a>
                </li>
                <li>
                    <a href="../index.html">Index</a>
                </li>
                <li>
                    <a href="realtime-results.html">Next &gt;</a>
                </li>
            </ul>
            <div class="section">
                <h1 id="generation">
                    14. Generating Report Dashboard<a class="sectionlink" href="#generation" title="Link to here">&para;</a>
                </h1>
                            
                <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>
                            
                <div class="subsection">
                    <h2 id="overview">
                        14.1 Overview<a class="sectionlink" href="#overview" title="Link to here">&para;</a>
                    </h2>
                                    
                    <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.
                    It can generate the report at end of a load test or on demand.
                </p>
                                    
                    <p>
                                        This report provides the following metrics:
                
                        <ul>
                                                
                            <li>
                                <a href="https://en.wikipedia.org/wiki/Apdex" title="Application Performance Index" target="_blank">APDEX</a> (Application Performance Index) table that computes for every transaction the APDEX based on configurable values for tolerated and satisfied thresholds
                            </li>
                                                
                            <li>
                                A request summary graph showing the Success and failed requests (Transaction Controller Sample Results are not taken into account) percentage: 
                                <figure>
                                    <a href="../images/screenshots/dashboard/report_apdex_and_summary.png"><img src="../images/screenshots/dashboard/report_apdex_and_summary.png" width="1636" height="982" alt=""></a>
                                    <figcaption></figcaption>
                                </figure>
                            </li>
                                                
                            <li>
                                A Statistics table providing in one table a summary of all metrics per transaction including 3 configurable percentiles: 
                                <figure>
                                    <a href="../images/screenshots/dashboard/report_statistics.png"><img src="../images/screenshots/dashboard/report_statistics.png" width="1639" height="467" alt=""></a>
                                    <figcaption></figcaption>
                                </figure>
                            </li>
                                                
                            <li>
                                An error table providing a summary of all errors and their proportion in the total requests: 
                                <figure>
                                    <a href="../images/screenshots/dashboard/report_errors.png"><img src="../images/screenshots/dashboard/report_errors.png" width="1344" height="455" alt=""></a>
                                    <figcaption></figcaption>
                                </figure>
                            </li>
                                                
                            <li>
                                A Top 5 Errors by Sampler table providing for every Sampler (excluding Transaction Controller by default) the top 5 Errors: 
                                <figure>
                                    <a href="../images/screenshots/dashboard/top_5_errors_by_sampler.png"><img src="../images/screenshots/dashboard/top_5_errors_by_sampler.png" width="1609" height="508" alt=""></a>
                                    <figcaption></figcaption>
                                </figure>
                            </li>
                                                
                            <li>
                                Zoomable chart where you can check/uncheck every transaction to show/hide it for:
                        
                                <ul>
                                                                
                                    <li>
                                        Response times Over Time (Includes Transaction Controller Sample Results): 
                                        <figure>
                                            <a href="../images/screenshots/dashboard/report_response_times_over_time.png"><img src="../images/screenshots/dashboard/report_response_times_over_time.png" width="1398" height="566" alt=""></a>
                                            <figcaption></figcaption>
                                        </figure>
                                    </li>
                                                                
                                    <li>
                                        Response times Percentiles Over Time (successful responses only): 
                                        <figure>
                                            <a href="../images/screenshots/dashboard/response_time_percentiles_over_time.png"><img src="../images/screenshots/dashboard/response_time_percentiles_over_time.png" width="1640" height="539" alt=""></a>
                                            <figcaption></figcaption>
                                        </figure>
                                    </li>
                                                                
                                    <li>
                                        Active Threads Over Time: 
                                        <figure>
                                            <a href="../images/screenshots/dashboard/report_active_threads_over_time.png"><img src="../images/screenshots/dashboard/report_active_threads_over_time.png" width="1638" height="544" alt=""></a>
                                            <figcaption></figcaption>
                                        </figure>
                                    </li>
                                                                
                                    <li>
                                        Bytes throughput Over Time (Ignores Transaction Controller Sample Results): 
                                        <figure>
                                            <a href="../images/screenshots/dashboard/report_bytes_throughput_over_time.png"><img src="../images/screenshots/dashboard/report_bytes_throughput_over_time.png" width="1373" height="543" alt=""></a>
                                            <figcaption></figcaption>
                                        </figure>
                                    </li>
                                                                
                                    <li>
                                        Latencies Over Time (Includes Transaction Controller Sample Results): 
                                        <figure>
                                            <a href="../images/screenshots/dashboard/report_latencies_over_time.png"><img src="../images/screenshots/dashboard/report_latencies_over_time.png" width="1373" height="547" alt=""></a>
                                            <figcaption></figcaption>
                                        </figure>
                                    </li>
                                                                
                                    <li>
                                        Connect Time Over Time (Includes Transaction Controller Sample Results): 
                                        <figure>
                                            <a href="../images/screenshots/dashboard/report_connect_time_over_time.png"><img src="../images/screenshots/dashboard/report_connect_time_over_time.png" width="1635" height="520" alt=""></a>
                                            <figcaption></figcaption>
                                        </figure>
                                    </li>
                                                                
                                    <li>
                                        Hits per second (Ignores Transaction Controller Sample Results): 
                                        <figure>
                                            <a href="../images/screenshots/dashboard/report_hits_per_second.png"><img src="../images/screenshots/dashboard/report_hits_per_second.png" width="1375" height="552" alt=""></a>
                                            <figcaption></figcaption>
                                        </figure>
                                    </li>
                                                                
                                    <li>
                                        Response codes per second (Ignores Transaction Controller Sample Results): 
                                        <figure>
                                            <a href="../images/screenshots/dashboard/report_codes_per_second.png"><img src="../images/screenshots/dashboard/report_codes_per_second.png" width="1380" height="558" alt=""></a>
                                            <figcaption></figcaption>
                                        </figure>
                                    </li>
                                                                
                                    <li>
                                        Transactions per second (Includes Transaction Controller Sample Results): 
                                        <figure>
                                            <a href="../images/screenshots/dashboard/report_transactions_per_second.png"><img src="../images/screenshots/dashboard/report_transactions_per_second.png" width="1372" height="577" alt=""></a>
                                            <figcaption></figcaption>
                                        </figure>
                                    </li>
                                                                
                                    <li>
                                        Response Time vs Request per second (Ignores Transaction Controller Sample Results): 
                                        <figure>
                                            <a href="../images/screenshots/dashboard/report_response_time_vs_request.png"><img src="../images/screenshots/dashboard/report_response_time_vs_request.png" width="1380" height="545" alt=""></a>
                                            <figcaption></figcaption>
                                        </figure>
                                    </li>
                                                                
                                    <li>
                                        Latency vs Request per second (Ignores Transaction Controller Sample Results): 
                                        <figure>
                                            <a href="../images/screenshots/dashboard/report_latencies_vs_request.png"><img src="../images/screenshots/dashboard/report_latencies_vs_request.png" width="1373" height="543" alt=""></a>
                                            <figcaption></figcaption>
                                        </figure>
                                    </li>
                                                                
                                    <li>
                                        Response time Overview (Excludes Transaction Controller Sample Results): 
                                        <figure>
                                            <a href="../images/screenshots/dashboard/response_time_overview.png"><img src="../images/screenshots/dashboard/response_time_overview.png" width="1645" height="562" alt=""></a>
                                            <figcaption></figcaption>
                                        </figure>
                                    </li>
                                                                
                                    <li>
                                        Response times percentiles (Includes Transaction Controller Sample Results): 
                                        <figure>
                                            <a href="../images/screenshots/dashboard/report_response_time_percentiles.png"><img src="../images/screenshots/dashboard/report_response_time_percentiles.png" width="1374" height="551" alt=""></a>
                                            <figcaption></figcaption>
                                        </figure>
                                    </li>
                                                                
                                    <li>
                                        Times vs Threads (Includes Transaction Controller Sample Results): 
                                        <figure>
                                            <a href="../images/screenshots/dashboard/report_time_vs_threads.png"><img src="../images/screenshots/dashboard/report_time_vs_threads.png" width="1373" height="567" alt=""></a>
                                            <figcaption></figcaption>
                                        </figure>
                                                                    
                                        <div class="clear"></div>
                                        <div class="note">In distributed mode, this graph shows a horizontal axis the number of threads for 1 server. It's a current limitation</div>
                                        <div class="clear"></div>
                                                                    
                                    </li>
                                                                
                                    <li>
                                        Response Time Distribution (Includes Transaction Controller Sample Results): 
                                        <figure>
                                            <a href="../images/screenshots/dashboard/report_response_time_distribution.png"><img src="../images/screenshots/dashboard/report_response_time_distribution.png" width="1373" height="549" alt=""></a>
                                            <figcaption></figcaption>
                                        </figure>
                                    </li>
                                                            
                                </ul>
                                                    
                            </li>
                                            
                        </ul>
                                        
                    </p>
                                    
            
                </div>
                            
                <div class="subsection">
                    <h2 id="configuration">
                        14.2 Configuring Dashboard Generation<a class="sectionlink" href="#configuration" title="Link to here">&para;</a>
                    </h2>
                                    
                    <p>
                                            Dashboard generation uses JMeter properties to customize the
                    report. Some properties are used for general settings and others are
                    used for a particular graph configuration or exporter configuration.
                    
                        <div class="clear"></div>
                        <div class="note">
                            All report generator properties can be found in file <span class="code">reportgenerator.properties</span>.
                    To customize these properties, you should copy them in <span class="code">user.properties</span> file and modify them.
                        </div>
                        <div class="clear"></div>
                                        
                    </p>
                                    
                    <div class="subsection">
                        <h2 id="configuration_requirements">
                            14.2.1 Requirements<a class="sectionlink" href="#configuration_requirements" title="Link to here">&para;</a>
                        </h2>
                                            
                        <div class="subsection">
                            <h2 id="saveservice_requirements">
                                14.2.1.1 Filtering configuration<a class="sectionlink" href="#saveservice_requirements" title="Link to here">&para;</a>
                            </h2>
                                                    Ensure you set property <span class="code">jmeter.reportgenerator.exporter.html.series_filter</span> to keep only the transactions
                        you want in the report if you don't want everything.
                            <br>
                                                    In the example below you must only modify <span class="code">Search|Order</span>, keep the rest:
                        
                            <pre class="source">jmeter.reportgenerator.exporter.html.series_filter=^(Search|Order)(-success|-failure)?$</pre>
                                                
                        </div>
                                            
                        <div class="subsection">
                            <h2 id="saveservice_requirements">
                                14.2.1.2 Save Service configuration<a class="sectionlink" href="#saveservice_requirements" title="Link to here">&para;</a>
                            </h2>
                                                
                            <p>
                                                        To enable the generator to operate, the CSV file generated by JMeter
                        must include certain required data which <b>are correct by default in the last live version</b> of JMeter.
                                <br>
                                                        If you modified those settings, check that your JMeter configuration follows these settings (these are the defaults):
                        
                                <pre class="source">
jmeter.save.saveservice.bytes = true
# Only available with HttpClient4
#jmeter.save.saveservice.sent_bytes=true
jmeter.save.saveservice.label = true
jmeter.save.saveservice.latency = true
jmeter.save.saveservice.response_code = true
jmeter.save.saveservice.response_message = true
jmeter.save.saveservice.successful = true
jmeter.save.saveservice.thread_counts = true
jmeter.save.saveservice.thread_name = true
jmeter.save.saveservice.time = true
jmeter.save.saveservice.connect_time = true
jmeter.save.saveservice.assertion_results_failure_message = true
# the timestamp format must include the time and should include the date.
# For example the default, which is milliseconds since the epoch:
jmeter.save.saveservice.timestamp_format = ms
# Or the following would also be suitable
# jmeter.save.saveservice.timestamp_format = yyyy/MM/dd HH:mm:ss
                        </pre>
                                                    
                            </p>
                                                
                        </div>
                                            
                        <div class="subsection">
                            <h2 id="transaction_controller_requirements">
                                14.2.1.3 Transaction Controller configuration<a class="sectionlink" href="#transaction_controller_requirements" title="Link to here">&para;</a>
                            </h2>
                                                
                            <p>
                                                        If you use <span class="code">Transaction Controller</span>s, to ensure most accurate results:
                        
                                <ul>
                                                            
                                    <li>
                                        uncheck the box (<b>this is the default configuration</b>):
                            <span class="code">Generate parent sample</span>
                            
                                        <figure>
                                            <a href="../images/screenshots/transactioncontroller.png"><img src="../images/screenshots/transactioncontroller.png" width="" height="" alt=""></a>
                                            <figcaption></figcaption>
                                        </figure>
                                                                
                                    </li>
                                                            
                                    <li>
                                                                    If <span class="code">Transaction Controller</span> is used as a Container to represent a request for an HTML Page that will trigger Ajax calls and you
                            only want in your report the Transaction Controller, then Right click on the node and Apply Naming Policy
                            
                                        <figure>
                                            <a href="../images/screenshots/apply_naming_policy1.png"><img src="../images/screenshots/apply_naming_policy1.png" width="" height="" alt=""></a>
                                            <figcaption></figcaption>
                                        </figure>
                                                                    You will obtain this:
                            
                                        <figure>
                                            <a href="../images/screenshots/apply_naming_policy2.png"><img src="../images/screenshots/apply_naming_policy2.png" width="" height="" alt=""></a>
                                            <figcaption></figcaption>
                                        </figure>
                                                                
                                    </li>
                                                            
                                </ul>
                                                    
                            </p>
                                                
                        </div>
                                        
                    </div>
                                    
                    <div class="subsection">
                        <h2 id="configuration_general">
                            14.2.2 General settings<a class="sectionlink" href="#configuration_general" title="Link to here">&para;</a>
                        </h2>
                                            
                        <div class="clear"></div>
                        <div class="note">
                                                    All properties must be prefixed with
                        
                            <pre class="source">jmeter.reportgenerator.</pre>
                                                
                        </div>
                        <div class="clear"></div>
                                            
                        <div class="properties">
                            <h3>
        Parameters
        </h3>
                            <div class="property title">
                                <div class="name title">Attribute</div>
                                <div class="description title">Description</div>
                                <div class="required title">Required</div>
                            </div>
                                                    
                            <div class="property">
                                <div class="name req-false">report_title</div>
                                <div class="description req-false">
                                                                Title used in the generated report.
                                    <br>
                                                                Default: "Apache JMeter Dashboard"
                        
                                </div>
                                <div class="required req-false">No</div>
                            </div>
                                                    
                            <div class="property">
                                <div class="name req-false">date_format</div>
                                <div class="description req-false">
                                                                Default date format from <a href="http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html">
                            SimpleDateFormat Java API</a> with Locale.ENGLISH.
                                    <br>
                                                                Default Date format is <span class="code">yyyyMMddHHmmss</span>
                                    <br>
                                                                Useful when you would like to generate a report after the load test, and the results file contains timestamp in
                            another time zone. In this case the date format must include the time zone (zzz).
                            
                                    <div class="clear"></div>
                                    <div class="note">
                                        If <span class="code">jmeter.save.saveservice.timestamp_format</span> does not contain year then use 1970 as year
                                    </div>
                                    <div class="clear"></div>
                                                                
                                    <br>
                                                                Example: <span class="code">dd/MM/yyyy HH:mm:ss zzz</span>
                        
                                </div>
                                <div class="required req-false">No</div>
                            </div>
                                                    
                            <div class="property">
                                <div class="name req-false">start_date</div>
                                <div class="description req-false">
                                                                Start date of the range of data to use for report.
                                    <br>
                                                                Date format is defined by date_format property.
                                    <br>
                                                                Default: not filled which means data range will be used from the beginning
                        
                                </div>
                                <div class="required req-false">No</div>
                            </div>
                                                    
                            <div class="property">
                                <div class="name req-false">end_date</div>
                                <div class="description req-false">
                                                                End date of the range of data to use for report.
                                    <br>
                                                                Date format is defined by date_format property.
                                    <br>
                                                                Default: not filled which means data range will be used until the end
                        
                                </div>
                                <div class="required req-false">No</div>
                            </div>
                                                    
                            <div class="property">
                                <div class="name req-false">overall_granularity</div>
                                <div class="description req-false">
                                                                Granularity of over time graphs. Data is aggregated to have 1 minute ticks.
                                    <br>
                                                                
                                    <div class="clear"></div>
                                    <div class="note">Granularity must be higher than 1 second (1000) otherwise throughput graphs will be incorrect</div>
                                    <div class="clear"></div>
                                                                Default: "60000" (1 minute)
                        
                                </div>
                                <div class="required req-false">No</div>
                            </div>
                                                    
                            <div class="property">
                                <div class="name req-false">apdex_satisfied_threshold</div>
                                <div class="description req-false">
                                                                Sets the satisfaction threshold for the
                            <a href="https://en.wikipedia.org/wiki/Apdex" target="_blank">APDEX</a>
                            calculation (in ms).
                                    <br>
                                                                Default: <span class="code">500</span>
                        
                                </div>
                                <div class="required req-false">No</div>
                            </div>
                                                    
                            <div class="property">
                                <div class="name req-false">apdex_tolerated_threshold</div>
                                <div class="description req-false">
                                                                Sets the tolerance threshold for the APDEX calculation
                            (in ms).
                                    <br>
                                                                Default: <span class="code">1500</span>
                        
                                </div>
                                <div class="required req-false">No</div>
                            </div>
                                                    
                            <div class="property">
                                <div class="name req-false">jmeter.reportgenerator.apdex_per_transaction</div>
                                <div class="description req-false">
                                                                 Sets satisfaction and tolerance threshold to specific samples.
                                    <br>
                                                                 Use sample names or regular expression.
                                    <br>
                                                                 Format is <span class="code">sample_name:satisfaction|tolerance[;]</span>
                                    <br>
                                                                 Values are in milliseconds.
                             
                                    <div class="clear"></div>
                                    <div class="note">
                             Notice the colon between sample name and values, the pipe between thresholds and the
                             semicolon at the end to separate different samples. Don't forget to escape after
                             semicolon to span multiple lines.
                             </div>
                                    <div class="clear"></div>
                                                                 Example:
                             
                                    <pre class="source">jmeter.reportgenerator.apdex_per_transaction=sample(\\d+):1000|2000;\
    samples12:3000|4000;\
    scenar01-12:5000|6000</pre>
                                                            
                                </div>
                                <div class="required req-false">No</div>
                            </div>
                                                    
                            <div class="property">
                                <div class="name req-false">sample_filter</div>
                                <div class="description req-false">
                                                                Sets the filter of samples to keep for generating
                            graphs and statistics. An empty value deactivates the
                            filtering.
                                    <br>
                                                                Format: Regular expression.
                                    <br>
                                                                Default: ""
                        
                                </div>
                                <div class="required req-false">No</div>
                            </div>
                                                    
                            <div class="property">
                                <div class="name req-false">temp_dir</div>
                                <div class="description req-false">
                                                                Sets the temporary directory used by the generation
                            process if it needs file I/O
                            operations.
                                    <br>
                                                                Default: <span class="code">temp</span>
                        
                                </div>
                                <div class="required req-false">No</div>
                            </div>
                                                    
                            <div class="property">
                                <div class="name req-false">statistic_window</div>
                                <div class="description req-false">
                                                                Sets the size of the sliding window used by percentile
                            evaluation. Caution: higher value provides a
                            better accuracy but needs more memory.
                                    <br>
                                                                Default: <span class="code">20000</span>
                        
                                </div>
                                <div class="required req-false">No</div>
                            </div>
                                                
                        </div>
                                            
                        <div class="clear"></div>
                        <div class="note">
                            Percentiles used by Summary table and Percentile graphs can be adjusted to different values by using the 3 properties:
                    
                            <ul>
                                                        
                                <li>aggregate_rpt_pct1: Defaults to 90</li>
                                                        
                                <li>aggregate_rpt_pct2: Defaults to 95</li>
                                                        
                                <li>aggregate_rpt_pct3: Defaults to 99</li>
                                                    
                            </ul>
                                                
                        </div>
                        <div class="clear"></div>
                                            
                        <div class="clear"></div>
                        <div class="note">
                            Relative paths are built from the JMeter working directory
                        (default: <span class="code">bin</span>).
                        </div>
                        <div class="clear"></div>
                                            
                        <div class="clear"></div>
                        <div class="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
                            
                                <pre class="source">jmeter.reportgenerator.</pre>
                                                            in order to avoid property overlap.
                        
                            </p>
                                                    
                            <p>
                            E.g.:
                        </p>
                                                    
                            <dl>
                                                            
                                <dt>Property definition:</dt>
                                                            
                                <dd>
                                    <pre class="source">jmeter.reportgenerator.overall_granularity=60000</pre>
                                </dd>
                                                            
                                <dt>Property reference:</dt>
                                                            
                                <dd>
                                    <pre class="source">${jmeter.reportgenerator.overall_granularity}</pre>
                                </dd>
                                                        
                            </dl>
                                                
                        </div>
                        <div class="clear"></div>
                                            
                        <div class="clear"></div>
                        <div class="note">
                                                   
                            <p>
                                The calculated percentiles might differ from those from the Aggregate Report in the GUI.
                       This is because the dashboard uses a different formula to estimate the percentiles.
                       It will be most observable when the distribution of the timing values is spread
                       too wide. That can happen if too few samples were taken. If you want the numbers
                       to be more or less the same as those from the Aggregate Report, you will have to switch the used
                       <a href="https://commons.apache.org/proper/commons-math/javadocs/api-3.6/org/apache/commons/math3/stat/descriptive/rank/Percentile.EstimationType.html">estimator</a>
                       from <span class="code">LEGACY</span> to <span class="code">R_3</span>, by specifying the JMeter property
                       <span class="code">backend_metrics_percentile_estimator=R_3</span> (this time without any
                       prefix).
                            </p>
                                                
                        </div>
                        <div class="clear"></div>
                                        
                    </div>
                                    
                    <div class="subsection">
                        <h2 id="configure_graph">
                            14.2.3 Graph settings<a class="sectionlink" href="#configure_graph" title="Link to here">&para;</a>
                        </h2>
                                            
                        <p>
                                                    Each property describing a graph configuration must be prefixed
                        with
                        
                            <pre class="source">jmeter.reportgenerator.graph.</pre>
                                                    followed by the graph identifier.
                    
                        </p>
                                            

                    
                        <div class="subsection">
                            <h2 id="general_graph_properties">
                                14.2.3.1 General properties<a class="sectionlink" href="#general_graph_properties" title="Link to here">&para;</a>
                            </h2>
                                                    
                            <p>All graphs support these properties:</p>
                                                    
                            <div class="properties">
                                <h3>
        Parameters
        </h3>
                                <div class="property title">
                                    <div class="name title">Attribute</div>
                                    <div class="description title">Description</div>
                                    <div class="required title">Required</div>
                                </div>
                                                            
                                <div class="property">
                                    <div class="name req-true">classname</div>
                                    <div class="description req-true">
                                                                        The fully qualified class name of the graph
                                
                                        <br>
                                                                        The class of the graph must extend
                                <span class="code">org.apache.jmeter.report.processor.graph.AbstractGraphConsumer</span>.
                                
                                        <br>
                                                                        See
                                <a href="#default_graphs">Default graph section</a>
                                for more details.
                            
                                    </div>
                                    <div class="required req-true">Yes</div>
                                </div>
                                                            
                                <div class="property">
                                    <div class="name req-false">exclude_controllers</div>
                                    <div class="description req-false">
                                        Defines
                                whether the graph discards controller samples.
                                Default: <span class="code">false</span>
                            
                                    </div>
                                    <div class="required req-false">No</div>
                                </div>
                                                            
                                <div class="property">
                                    <div class="name req-false">title</div>
                                    <div class="description req-false">Sets the title of the
                                graph.
                                Default: ""
                            </div>
                                    <div class="required req-false">No</div>
                                </div>
                                                        
                            </div>
                                                
                        </div>
                                            
                        <div class="subsection">
                            <h2 id="specific_graph_properties">
                                14.2.3.2 Specific properties<a class="sectionlink" href="#specific_graph_properties" title="Link to here">&para;</a>
                            </h2>
                                                    
                            <p>
                                                            Specific graph properties must use the prefix:
                            
                                <pre class="source">jmeter.reportgenerator.graph.&lt;graph_id&gt;.property</pre>
                                                            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.:
                            
                                <pre class="source">jmeter.reportgenerator.graph.&lt;graph_id&gt;.property.set_granularity=150</pre>
                                                            induces the call of the method <span class="code">setGranularity(150)</span> on the
                            instance of the graph.
                        
                            </p>
                                                
                        </div>
                                        
                    </div>
                                    
                    <div class="subsection">
                        <h2 id="configure_export">
                            14.2.4 Export settings<a class="sectionlink" href="#configure_export" title="Link to here">&para;</a>
                        </h2>
                                            
                        <p>
                                                    Each property describing an exporter configuration must be
                        prefixed with
                        
                            <pre class="source">jmeter.reportgenerator.exporter</pre>
                                                    followed by the exporter identifier.
                    
                        </p>
                                            
                        <div class="subsection">
                            <h2 id="general_export_properties">
                                14.2.4.1 General properties<a class="sectionlink" href="#general_export_properties" title="Link to here">&para;</a>
                            </h2>
                                                    
                            <p>All exporters support these properties:</p>
                                                    
                            <div class="properties">
                                <h3>
        Parameters
        </h3>
                                <div class="property title">
                                    <div class="name title">Attribute</div>
                                    <div class="description title">Description</div>
                                    <div class="required title">Required</div>
                                </div>
                                                            
                                <div class="property">
                                    <div class="name req-true">classname</div>
                                    <div class="description req-true">
                                                                        The fully qualified class name of the exporter
                                
                                        <br>
                                                                        The class of the exporter must implement
                                <span class="code">org.apache.jmeter.report.dashboard.DataExporter</span>
                                .
                            
                                    </div>
                                    <div class="required req-true">Yes</div>
                                </div>
                                                            
                                <div class="property">
                                    <div class="name req-false">filters_only_sample_series</div>
                                    <div class="description req-false">
                                                                        Defines whether <span class="code">series_filter</span> (see below)
                                apply only on sample series.
                                Default: <span class="code">true</span>
                                    </div>
                                    <div class="required req-false">No</div>
                                </div>
                                                            
                                <div class="property">
                                    <div class="name req-false">series_filter</div>
                                    <div class="description req-false">
                                        Sets the filter
                                of series. An empty value deactivates the filtering.
                                If not empty, regex should end with <span class="code">(-success|-failure)?$</span>
                                        <br>
                                                                        Format: regular expression.
                                Default: ""
                            
                                    </div>
                                    <div class="required req-false">No</div>
                                </div>
                                                            
                                <div class="property">
                                    <div class="name req-false">show_controllers_only</div>
                                    <div class="description req-false">
                                                                        Defines whether only controller series are shown.
                                Default: <span class="code">false</span>
                            
                                    </div>
                                    <div class="required req-false">No</div>
                                </div>
                                                        
                            </div>
                                                
                        </div>
                                            
                        <div class="subsection">
                            <h2 id="specific_export_properties">
                                14.2.4.2 Specific properties<a class="sectionlink" href="#specific_export_properties" title="Link to here">&para;</a>
                            </h2>
                                                    
                            <p>
                                                            Specific exporter properties must use the prefix
                            
                                <pre class="source">jmeter.reportgenerator.exporter.&lt;exporter_id&gt;.property</pre>
                                                        
                            </p>
                                                    
                            <div class="properties">
                                <h3>
        Parameters
        </h3>
                                <div class="property title">
                                    <div class="name title">Attribute</div>
                                    <div class="description title">Description</div>
                                    <div class="required title">Required</div>
                                </div>
                                                            
                                <div class="property">
                                    <div class="name req-false">output_dir</div>
                                    <div class="description req-false">
                                                                        Sets the destination directory for generated html pages.
                                Default: <span class="code">report-output</span>
                            
                                    </div>
                                    <div class="required req-false">No</div>
                                </div>
                                                            
                                <div class="property">
                                    <div class="name req-false">template_dir</div>
                                    <div class="description req-false">
                                                                        Sets the source directory of template files from
                                which the html pages are generated.
                                Default: <span class="code">report-template</span>
                            
                                    </div>
                                    <div class="required req-false">No</div>
                                </div>
                                                        
                            </div>
                                                
                        </div>
                                            
                        <div class="subsection">
                            <h2 id="graph_export_properties">
                                14.2.4.3 Graph properties<a class="sectionlink" href="#graph_export_properties" title="Link to here">&para;</a>
                            </h2>
                                                    
                            <p>
                                                            Graph properties allow exporters to overwrite some graph data.
                            
                                <br>
                                                            They must use the prefix:
                            
                                <pre class="source">jmeter.reportgenerator.exporter.&lt;exporter_id&gt;.graph_options.&lt;graph_id&gt;</pre>
                                                        
                            </p>
                                                    
                            <div class="properties">
                                <h3>
        Parameters
        </h3>
                                <div class="property title">
                                    <div class="name title">Attribute</div>
                                    <div class="description title">Description</div>
                                    <div class="required title">Required</div>
                                </div>
                                                            
                                <div class="property">
                                    <div class="name req-false">minX</div>
                                    <div class="description req-false">Sets the minimum
                                abscissa for the graph.</div>
                                    <div class="required req-false">No</div>
                                </div>
                                                            
                                <div class="property">
                                    <div class="name req-false">maxX</div>
                                    <div class="description req-false">Sets the maximum
                                abscissa for the graph.</div>
                                    <div class="required req-false">No</div>
                                </div>
                                                            
                                <div class="property">
                                    <div class="name req-false">minY</div>
                                    <div class="description req-false">Sets the minimum
                                ordinate for the graph.</div>
                                    <div class="required req-false">No</div>
                                </div>
                                                            
                                <div class="property">
                                    <div class="name req-false">maxY</div>
                                    <div class="description req-false">Sets the maximum
                                ordinate for the graph.</div>
                                    <div class="required req-false">No</div>
                                </div>
                                                        
                            </div>
                                                
                        </div>
                                            
                        <div class="subsection">
                            <h2 id="export_filtering">
                                14.2.4.4 Filtering mechanisms<a class="sectionlink" href="#export_filtering" title="Link to here">&para;</a>
                            </h2>
                                                    
                            <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 simplify the final report.
                        
                            </p>
                                                    
                            <p>
                                                            The property <span class="code">series_filter</span>
                            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>
                                                                    
                                    <div class="nostyle">
                                        <caption>Cases of discarding when there is pattern matching</caption>
                                    </div>
                                                                    
                                    <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>
                                                                    
                                    <div class="nostyle">
                                        <caption>Cases of retention when there is no pattern matching</caption>
                                    </div>
                                                                    
                                    <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>
                                                    
                            <div class="clear"></div>
                            <div class="note">
                                                            Incorrect filter configuration can lead to generate empty
                            graphs/summary tables:
                            
                                <ul>
                                                                    
                                    <li>
                                                                            If you set the property
                                    <span class="code">show_controllers_only</span>
                                    and the graph is configured to exclude
                                    controllers.
                                
                                    </li>
                                                                    
                                    <li>
                                                                            If the property
                                    <span class="code">series_filter</span>
                                    matches none series.
                                
                                    </li>
                                                                
                                </ul>
                                                        
                            </div>
                            <div class="clear"></div>
                                                
                        </div>
                                        
                    </div>
                                    
                    <div class="subsection">
                        <h2 id="sample_configuration">
                            14.2.5 Sample configuration<a class="sectionlink" href="#sample_configuration" title="Link to here">&para;</a>
                        </h2>
                                            
                        <p>You can copy the following configuration to your user.properties
                        file in order to test the report generator.</p>
                                            
                        <pre class="source">
# Configure this property to change the report title
#jmeter.reportgenerator.report_title=Apache JMeter Dashboard

# Change this parameter if you want to change the granularity of over time graphs.
# Granularity must be higher than 1000 (1second) otherwise Throughput graphs will be incorrect
# see Bug 60149
#jmeter.reportgenerator.overall_granularity=60000

 Change this parameter if you want to change the granularity of Response time distribution
# Set to 100 ms by default
#jmeter.reportgenerator.graph.responseTimeDistribution.property.set_granularity=100

# Change this parameter if you want to override the APDEX satisfaction threshold.
jmeter.reportgenerator.apdex_satisfied_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, it is better to change it for every generation
# This will override the value set through -o command line option
# jmeter.reportgenerator.exporter.html.property.output_dir=/tmp/test-report

# Indicates which graph series are filtered (regular expression)
# In the below example we filter on Search and Order samples
# Note that the end of the pattern should always include (-success|-failure)?$
# Transactions per second suffixes Transactions with "-success" or "-failure" depending
# on the result
#jmeter.reportgenerator.exporter.html.series_filter=^(Search|Order)(-success|-failure)?$

# Indicates whether series filter apply only on sample series
jmeter.reportgenerator.exporter.html.filters_only_sample_series=true
                    </pre>
                                            
                        <div class="clear"></div>
                        <div class="note">
                                                    Adapt the parameter
                        <span class="code">output_dir</span>
                        to your environment.
                    
                        </div>
                        <div class="clear"></div>
                                            
                        <p>
                                                    This configuration allows to generate a report where:
                        
                            <ul>
                                                            
                                <li>Over time graphs have a time granularity equal 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 <span class="code">/tmp/test-report</span>.
                                </li>
                                                            
                                <li>
                                    Only series which the name begins with "<span class="code">s0</span>" or "<span class="code">s1</span>" are shown.
                                </li>
                                                            
                                <li>The previous filter only applies to graphs (resp. summary tables) where the series (resp. rows) match samples</li>
                                                        
                            </ul>
                                                
                        </p>
                                        
                    </div>
                                
                </div>
                            
                <div class="subsection">
                    <h2 id="report">
                        14.3 Generating reports<a class="sectionlink" href="#report" title="Link to here">&para;</a>
                    </h2>
                                    
                    <p>
                    The report generation can be done as a stand alone process from a
                    sample log file or automatically after running load test.
                </p>
                                    
                    <div class="subsection">
                        <h2 id="report_only">
                            14.3.1 Generation from an existing sample CSV log file<a class="sectionlink" href="#report_only" title="Link to here">&para;</a>
                        </h2>
                                            
                        <p>
                                                    Use the following command:
                        
                            <pre class="source">jmeter -g &lt;log file&gt; -o &lt;Path to output folder&gt;</pre>
                                                
                        </p>
                                        
                    </div>
                                    
                    <div class="subsection">
                        <h2 id="report_after_load_test">
                            14.3.2 Generation after load test<a class="sectionlink" href="#report_after_load_test" title="Link to here">&para;</a>
                        </h2>
                                            
                        <p>
                                                    Use the following command:
                        
                            <pre class="source">jmeter -n -t &lt;test JMX file&gt; -l &lt;test log file&gt; -e -o &lt;Path to output folder&gt;</pre>
                                                
                        </p>
                                        
                    </div>
                                
                </div>
                            
                <div class="subsection">
                    <h2 id="report_gui">
                        14.3.3 Generation using GUI Tools menu<a class="sectionlink" href="#report_gui" title="Link to here">&para;</a>
                    </h2>
                                    
                    <p>
                                        You can generate the HTML report using menu item <span class="code">Tools &rarr; Generate HTML report</span>:
                
                        <figure>
                            <a href="../images/screenshots/html_report_menu.png"><img src="../images/screenshots/html_report_menu.png" width="" height="" alt="Figure 14.1. HTML Report Dialog Menu"></a>
                            <figcaption>Figure 14.1. HTML Report Dialog Menu</figcaption>
                        </figure>
                                        
                    </p>
                                    
                    <p>For each parameters see the following table :</p>
                                    
                    <div class="properties">
                        <h3>
        Parameters
        </h3>
                        <div class="property title">
                            <div class="name title">Attribute</div>
                            <div class="description title">Description</div>
                            <div class="required title">Required</div>
                        </div>
                        	                
                        <div class="property">
                            <div class="name req-true">Results file (csv or jtl)</div>
                            <div class="description req-true">The CSV output of a tes run</div>
                            <div class="required req-true">Yes</div>
                        </div>
                        	                
                        <div class="property">
                            <div class="name req-true">user.properties file</div>
                            <div class="description req-true">The user.properties file used to run the load test</div>
                            <div class="required req-true">Yes</div>
                        </div>
                        	                
                        <div class="property">
                            <div class="name req-false">Output directory</div>
                            <div class="description req-false">The directory where you want the report to be created(must be empty)</div>
                            <div class="required req-false">No</div>
                        </div>
                                        
                    </div>
                                    
                    <p>
                        If no output directory is defined, the controller will use <span class="code">${JMETER_HOME}/bin/report-output</span>.
                    </p>
                                    
                    <p>
                        You then only have to click on the <span class="code">Generate report</span> button and wait for an information dialog to appear
                
                        <div class="clear"></div>
                        <div class="note">
                            If report generation takes more than two minutes, adjust the property <span class="code">generate_report_ui.generation_timeout</span>
                        </div>
                        <div class="clear"></div>
                    </p>
                                 
                </div>
                            
                <div class="subsection">
                    <h2 id="default_graphs">
                        14.4 Default graphs<a class="sectionlink" href="#default_graphs" title="Link to here">&para;</a>
                    </h2>
                                    
                    <div class="clear"></div>
                    <div class="note">Due to limitations of this early version, each default graph
                    must be declared in JMeter properties. Otherwise, the graph
                    views will be empty.</div>
                    <div class="clear"></div>
                                    
                    <p>
                                            All graphs provided by this report engine are located in the
                    package
                    <span class="code">org.apache.jmeter.report.processor.graph.impl</span>
                
                    </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 throughput 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>ConnectTimeOverTimeGraphConsumer</td>
                            <td>This graph represents the connection 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>ResponseTimePercentilesOverTimeGraphConsumer</td>
                            <td>This graph shows Min/Max and 3 percentiles response time over time.</td>
                            <td>True</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>
                                
                </div>
                            
                <div class="subsection">
                    <h2 id="customs_graphs">
                        14.5 Generating customs graphs over time<a class="sectionlink" href="#customs_graphs" title="Link to here">&para;</a>
                    </h2>
                                    
                    <p>
                                                    You can graph any sample_variable in CSV over time, you can customize your graphs
                            by settings their properties in the user.properties file.
                            
                        <br>
                                                    They must use the id prefix <span class="code">custom_</span>:
                            
                        <pre class="source">jmeter.reportgenerator.graph.custom_&lt;your_graph_name_id&gt;.property.&lt;your_option_name&gt;</pre>
                                                    To specify that this graph is a customized one :
                            
                        <pre class="source">jmeter.reportgenerator.graph.custom_&lt;your_graph_name_id&gt;.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer</pre>
                                                
                    </p>
                                            
                    <div class="properties">
                        <h3>
        Parameters
        </h3>
                        <div class="property title">
                            <div class="name title">Attribute</div>
                            <div class="description title">Description</div>
                            <div class="required title">Required</div>
                        </div>
                                                    
                        <div class="property">
                            <div class="name req-true">set_X_Axis</div>
                            <div class="description req-true">Sets the X axis name of the graph.</div>
                            <div class="required req-true">Yes</div>
                        </div>
                                                    
                        <div class="property">
                            <div class="name req-true">set_Y_Axis</div>
                            <div class="description req-true">Sets the Y axis name of the graph.</div>
                            <div class="required req-true">Yes</div>
                        </div>
                                                    
                        <div class="property">
                            <div class="name req-true">set_Content_Message</div>
                            <div class="description req-true">Sets the displayed message when the cursor is on a point of the graph.</div>
                            <div class="required req-true">Yes</div>
                        </div>
                                                    
                        <div class="property">
                            <div class="name req-true">set_Sample_Variable_Name</div>
                            <div class="description req-true">Name of the column you want to graph in the csv.</div>
                            <div class="required req-true">Yes</div>
                        </div>
                                                
                    </div>
                                            
                    <p>
                        Here is an example of a custom graph configuration that graphs the variable <span class="code">ts-hit</span>: 
                    </p>
                                            
                    <pre class="source">
jmeter.reportgenerator.graph.custom_testGraph.classname=org.apache.jmeter.report.processor.graph.impl.CustomGraphConsumer
jmeter.reportgenerator.graph.custom_testGraph.title=Chunk Hit
jmeter.reportgenerator.graph.custom_testGraph.property.set_Y_Axis=Number of Hits
jmeter.reportgenerator.graph.custom_testGraph.set_X_Axis=Over Time
jmeter.reportgenerator.graph.custom_testGraph.property.set_granularity=60000
jmeter.reportgenerator.graph.custom_testGraph.property.set_Sample_Variable_Name=ts-hit
jmeter.reportgenerator.graph.custom_testGraph.property.set_Content_Message=Number of Hits :
                        </pre>
                                
                </div>
                            
                <div class="subsection">
                    <h2 id="development">
                        14.6  Want to improve Report Dashboard ?<a class="sectionlink" href="#development" title="Link to here">&para;</a>
                    </h2>
                                If you want to contribute new graphs or improve current ones, you
            can read this <a href="../devguide-dashboard.html">developer documentation</a>.
                    <br>
                                Read this <a href="../building.html">documentation</a> on contributing.
            
                </div>
                        
            </div>
            <ul class="pagelinks">
                <li>
                    <a href="remote-test.html">&lt; Prev</a>
                </li>
                <li>
                    <a href="../index.html">Index</a>
                </li>
                <li>
                    <a href="realtime-results.html">Next &gt;</a>
                </li>
            </ul>
            <div class="share-links">
                      Share this page:
      
                <ul>
                    <li class="fb">
                        <a data-social-url="https://facebook.com/sharer/sharer.php?u=" title="Share on facebook"><i class="fa fa-facebook" aria-hidden="true"></i>share</a>
                    </li>
                    <li class="twitter">
                        <a data-social-url="https://twitter.com/intent/tweet?url=" title="Tweet on twitter"><i class="fa fa-twitter" aria-hidden="true"></i>tweet</a>
                    </li>
                </ul>
            </div>
            <a href="#top" id="topButton">Go to top</a>
        </div>
        <div class="footer">
            <div class="copyright">
            Copyright &copy;
            1999 &ndash;
            2024
            , Apache Software Foundation
          </div>
            <div class="trademarks">Apache, Apache JMeter, JMeter, the Apache
            feather, and the Apache JMeter logo are
            trademarks of the
            Apache Software Foundation.
          </div>
        </div>
        <script>(function(){
            "use strict";
            // enable 'go to top' button functionality
            document.addEventListener('scroll', function() {
                if (document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) {
                    document.getElementById("topButton").style.display = "block";
                } else {
                    document.getElementById("topButton").style.display = "none";
                }
            });
            // fill in the current location into social links on this page.
            var as = document.getElementsByTagName('a');
            var loc = document.location.href;
            if (!loc.toLowerCase().startsWith('http')) {
                return;
            }
            for (var i=0; i<as.length; i++) {
                var href = as[i].getAttribute('data-social-url');
                if (href !== null) {
                    as[i].href = href + encodeURIComponent(loc);
                }
            }
        })();</script>
    </body>
</html>
