Modified: jmeter/trunk/docs/usermanual/realtime-results.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/realtime-results.html?rev=1664961&r1=1664960&r2=1664961&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/realtime-results.html (original) +++ jmeter/trunk/docs/usermanual/realtime-results.html Sun Mar 8 10:22:58 2015 @@ -1,813 +1,229 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<!-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<!-- Content Stylesheet for Site --> - - -<!-- start the processing --> -<html> -<head> -<link rel="stylesheet" type="text/css" href="../css/style.css"/> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> -<meta name="author" value="Philippe Mouawad"> -<meta name="email" value="p.mouawad at ubik-ingenierie.com"> - -<title>Apache JMeter - User's Manual: Live Statistics</title> -</head> - -<body bgcolor="#ffffff" text="#000000" link="#525D76"> -<table width="100%" cellspacing="0" border="0"> -<tr> -<td width="90%" align="left"> -<table border="0" cellspacing="0"> -<tr> -<td width="10%"> -<a href="http://www.apache.org"><img title="Apache Software Foundation" width="290" height="75" src="../images/asf-logo.png" border="0"/></a> -</td> -<td align="left" width="40%"> - -<a href="http://jmeter.apache.org/"><img width="182" height="88" src="../images/logo.jpg" alt="Apache JMeter" title="Apache JMeter" border="0"/></a> -</td> -</tr> -</table> -</td> -<td align="left" width="50%"> -<table cellspacing="0" align="right" border="0"> -<tr> -<td align="left"> <a href="https://twitter.com/share" -class="twitter-share-button" -data-text="Powerful Load Testing with -Apache #JMeter" data-via="ApacheJMeter" -data-lang="en-gb" data-size="large">Tweet</a> -<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> -</td> -<td align="right"> <a -href="https://twitter.com/ApacheJMeter" -class="twitter-follow-button" -data-show-count="false" data-lang="en-gb" -data-size="large">Follow</a> -<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> -</td> -</tr> -</table> -</td></tr> -</table> - -<table border="0" width="100%" cellspacing="4"> -<tr><td colspan="2"> -<hr noshade size="1"/> -</td></tr> -<tr> -<!-- LEFT SIDE NAVIGATION --> -<td width="20%" valign="top" nowrap="true"> -<table border="0" width="100%" cellspacing="0"> -<tr><td> -<p><strong>About</strong></p> -<ul> -<li><a href="../index.html">Overview</a> -</li> -<li><a href="http://twitter.com/ApacheJMeter">JMeter on Twitter</a> -<img src="../images/twitter.png" align="top"/></li> -<li><a href="../issues.html">Issue Tracking</a> -</li> -<li><a href="http://projects.apache.org/feeds/rss/jmeter.xml">Subscribe to What's New</a> -</li> -<li><a href="http://www.apache.org/licenses/">License</a> -</li> -</ul> -<p><strong>Download</strong></p> -<ul> -<li><a href="../download_jmeter.cgi">Download Releases</a> -</li> -<li><a href="../nightly.html">Developer (Nightly) Builds</a> -</li> -</ul> -<p><strong>Documentation</strong></p> -<ul> -<li><a href="../changes.html">Changes per version</a> -</li> -<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="../api/index.html">Javadocs</a> -</li> -<li><a href="../building.html">Building JMeter and Add-Ons</a> -</li> -<li><a href="http://wiki.apache.org/jmeter">JMeter Wiki</a> -</li> -<li><a href="http://wiki.apache.org/jmeter/JMeterFAQ">FAQ (Wiki)</a> -</li> -</ul> -<p><strong>Tutorials (PDF format)</strong></p> -<ul> -<li><a href="../usermanual/jmeter_distributed_testing_step_by_step.pdf">Distributed Testing</a> -</li> -<li><a href="../usermanual/jmeter_proxy_step_by_step.pdf">Recording Tests</a> -</li> -<li><a href="../usermanual/junitsampler_tutorial.pdf">JUnit Sampler</a> -</li> -<li><a href="../usermanual/jmeter_accesslog_sampler_step_by_step.pdf">Access Log Sampler</a> -</li> -<li><a href="../extending/jmeter_tutorial.pdf">Extending JMeter</a> -</li> -</ul> -<p><strong>Community</strong></p> -<ul> -<li><a href="http://wiki.apache.org/jmeter/JMeterCommitters">Contributors</a> -</li> -<li><a href="../mail.html">Mailing Lists</a> -</li> -<li><a href="../svnindex.html">SVN Repositories</a> -</li> -</ul> -<p><strong>Foundation</strong></p> -<ul> -<li><a href="http://www.apache.org/">ASF</a> -</li> -<li><a href="http://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a> -</li> -<li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a> -</li> -<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a> -</li> -</ul> -</td></tr> -<tr><td> -<iframe src="http://www.apache.org/ads/button.html" style="border-width:0; float: left;" frameborder="0" scrolling="no"></iframe> -</td></tr> -</table> -</td> -<td width="80%" align="left" valign="top"> -<table> -<tr> -<td bgcolor="#525D76"> -<div align="right"><a href="index.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Index</font></a></div> -</td> -<td bgcolor="#525D76"> -<div align="right"><a href="component_reference.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Next</font></a></div> -</td> -<td bgcolor="#525D76"> -<div align="right"><a href="live-statistics.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Prev</font></a></div> -</td> -</tr> -</table> -<br> -<table border="0" cellspacing="0" cellpadding="2" width="100%"> -<tr><td bgcolor="#525D76"> -<font color="#ffffff" face="arial,helvetica,sanserif"> -<a name="realtime-results"><strong>17. Real-time results</strong></a><a class="sectionlink" href="#realtime-results" title="Link to here">¶</a></font> -</td></tr> -<tr><td> -<blockquote> -<p> -Since JMeter 2.13 you can get realtime results sent to a backend through the - -<a href="component_reference.html#Backend_Listener"> -Backend Listener -</a> - using potentially any backend (JDBC, JMS, Webservice...) implementing -<a href="../api/org/apache/jmeter/visualizers/backend/AbstractBackendListenerClient.html"> -AbstractBackendListenerClient -</a> -. -<br> - - -JMeter ships with a GraphiteBackendListenerClient which allows you to send metrics to a Graphite Backend. -<br> - - +<!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: Live Statistics</title><meta name="author" value="Philippe Mouawad"><meta name="email" value="p.mouawad at ubik-ingenierie.com"><meta name="viewport" content="width=device-width, initial-scale=1"><link href="http://fonts.googleapis.com/css?family=Merriweather:400normal" rel="stylesheet" type="text/css"><link rel="stylesheet" type="text/css" href="../css/new-style.css"></head><body role="document"><a href="#content" class="hidden">Main content</a><div class="header"><!-- + APACHE LOGO + --><div><a href="http://www.apache.org"><img title="Apache Software Foundation" width="290" height="75" src="../images/asf-logo.png" alt="Logo ASF"></a></div><!-- + PROJECT LOGO + --><div><a href="http://jmeter.apache.org/"><img src="../images/logo.jpg" alt="Apache JMeter"></a></div><div class="twitter"><div><a href="https://twitter.com/share" class="twitter-share-button" data-text="Powerful Load Testing with Apache #JMeter" data-via="ApacheJMeter" data-lang="en-gb" data-size="large">Tweet</a><script> + (function(d,s,id){ + var js, + fjs=d.getElementsByTagName(s)[0], + p=/^http:/.test(d.location)?'http':'https'; + if (!d.getElementById(id)) { + js=d.createElement(s); + js.id=id; + js.src=p+'://platform.twitter.com/widgets.js'; + fjs.parentNode.insertBefore(js,fjs); + } + })(document, 'script', 'twitter-wjs'); + </script></div><div><a href="https://twitter.com/ApacheJMeter" class="twitter-follow-button" data-show-count="false" data-lang="en-gb" data-size="large">Follow</a><script>(function(d,s,id){ + var js, + fjs=d.getElementsByTagName(s)[0], + p=/^http:/.test(d.location)?'http':'https'; + if (!d.getElementById(id)) { + js=d.createElement(s); + js.id=id; + js.src=p+'://platform.twitter.com/widgets.js'; + fjs.parentNode.insertBefore(js,fjs); + } + })(document, 'script', 'twitter-wjs'); + </script></div></div><div class="banner"><iframe src="http://www.apache.org/ads/bannerbar.html" style="border-width:0;" frameborder="0" scrolling="no"></iframe><div class="clear"></div></div></div><div class="nav"><ul class="menu"><li><div class="menu-title">About</div><ul><li><a href="../index.html">Overview</a></li><li><a href="http://twitter.com/ApacheJMeter">JMeter on Twitter<img src="../images/twitter.png" alt="Icon for JMeter on Twitter"></a></li><li><a href="../issues.html">Issue Tracking</a></li><li><a href="http://projects.apache.org/feeds/rss/jmeter.xml">Subscribe to What's New</a></li><li><a href="http://www.apache.org/licenses/">License</a></li></ul></li></ul><ul class="menu"><li><div class="menu-title">Download</div><ul><li><a href="../download_jmeter.cgi">Download Releases</a></li><li><a href="../nightly.html">Developer (Nightly) Builds</a></li></ul></li></ul><ul class="menu"><li><div class="menu-title">Documentation</div><ul><li><a href="../changes.html" >Changes per version</a></li><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="../api/index.html">Javadocs</a></li><li><a >href="../building.html">Building JMeter and Add-Ons</a></li><li><a >href="http://wiki.apache.org/jmeter">JMeter Wiki</a></li><li><a >href="http://wiki.apache.org/jmeter/JMeterFAQ">FAQ >(Wiki)</a></li></ul></li></ul><ul class="menu"><li><div >class="menu-title">Tutorials (PDF format)</div><ul><li><a >href="../usermanual/jmeter_distributed_testing_step_by_step.pdf">Distributed >Testing</a></li><li><a >href="../usermanual/jmeter_proxy_step_by_step.pdf">Recording >Tests</a></li><li><a href="../usermanual/junitsampler_tutorial.pdf">JUnit >Sampler</a></li><li><a href="../us ermanual/jmeter_accesslog_sampler_step_by_step.pdf">Access Log Sampler</a></li><li><a href="../extending/jmeter_tutorial.pdf">Extending JMeter</a></li></ul></li></ul><ul class="menu"><li><div class="menu-title">Community</div><ul><li><a href="http://wiki.apache.org/jmeter/JMeterCommitters">Contributors</a></li><li><a href="../mail.html">Mailing Lists</a></li><li><a href="../svnindex.html">SVN Repositories</a></li></ul></li></ul><ul class="menu"><li><div class="menu-title">Foundation</div><ul><li><a href="http://www.apache.org/">ASF</a></li><li><a href="http://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a></li><li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li><li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li></ul></li></ul></div><div class="main" id="content"><ul class="pagelinks"><li><a href="live-statistics.html">< Prev</a></li><li><a href="../index.html">Index</a></li><li><a href="component_refer ence.html">Next ></a></li></ul><div class="section"><h1 id="realtime-results">17. Real-time results<a class="sectionlink" href="#realtime-results" title="Link to here">¶</a></h1> +<p>Since JMeter 2.13 you can get realtime results sent to a backend through the +<a href="component_reference.html#Backend_Listener">Backend Listener</a> using potentially any backend (JDBC, JMS, Webservice...) implementing <a href="../api/org/apache/jmeter/visualizers/backend/AbstractBackendListenerClient.html">AbstractBackendListenerClient</a>.<br> +JMeter ships with a GraphiteBackendListenerClient which allows you to send metrics to a Graphite Backend.<br> This feature provides: - <ul> - - -<li> -Live results -</li> - - -<li> -Nice graphs for metrics -</li> - - -<li> -Ability to compare 2 or more load tests -</li> - - -<li> -Having monitoring data as long as JMeter results in the same backend -</li> - - -<li> -... -</li> - - +<li>Live results</li> +<li>Nice graphs for metrics</li> +<li>Ability to compare 2 or more load tests</li> +<li>Storing monitoring data as long as JMeter results in the same backend</li> +<li>...</li> </ul> - -In this document we will present the configuration setup to be able to graph and historize the data in 3 different backends: - +In this document we will present the configuration setup to graph and historize the data in 2 different backends: <ul> - - -<li> -InfluxDB -</li> - - -<li> -CollectD -</li> - - -<li> -Graphite -</li> - - +<li>InfluxDB</li> +<li>Graphite</li> </ul> - - </p> -<table border="0" cellspacing="0" cellpadding="2" width="100%"> -<tr><td bgcolor="#828DA6"> -<font color="#ffffff" face="arial,helvetica,sanserif"> -<a name="metrics"><strong>17.1 Metrics exposed</strong></a> -<a class="sectionlink" href="#metrics" title="Link to here">¶</a></font> -</td></tr> -<tr><td> -<blockquote> -<table border="0" cellspacing="0" cellpadding="2" width="100%"> -<tr><td bgcolor="#828DA6"> -<font color="#ffffff" face="arial,helvetica,sanserif"> -<a name="metrics-threads"><strong>17.1.1 Thread/Virtual Users metrics</strong></a> -<a class="sectionlink" href="#metrics-threads" title="Link to here">¶</a></font> -</td></tr> -<tr><td> -<blockquote> -<p> - +<div class="subsection"><h2>17.1 Metrics exposed<a class="sectionlink" href="#metrics" title="Link to here">¶</a></h2> + <div class="subsection"><h2>17.1.1 Thread/Virtual Users metrics<a class="sectionlink" href="#metrics-threads" title="Link to here">¶</a></h2> + <p> Threads metrics are the following: - -</p> -<table> -<tr> -<td bgcolor="#039acc" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -Metric Name -</font> -</td> -<td bgcolor="#039acc" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -Description -</font> -</td> -</tr> -<tr> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -<rootMetricsPrefix>.cumulated.minActiveThreads -</font> -</td> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -Min active threads -</font> -</td> -</tr> -<tr> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -<rootMetricsPrefix>.cumulated.maxActiveThreads -</font> -</td> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -Max active threads -</font> -</td> -</tr> -<tr> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -<rootMetricsPrefix>.cumulated.meanActiveThreads -</font> -</td> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -Mean active threads -</font> -</td> -</tr> -<tr> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -<rootMetricsPrefix>.cumulated.startedThreads -</font> -</td> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -Started threads -</font> -</td> -</tr> -<tr> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -<rootMetricsPrefix>.cumulated.stoppedThreads -</font> -</td> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -Finished threads -</font> -</td> -</tr> -</table> -</blockquote> -</td></tr> -<tr><td><br></td></tr> -</table> -<table border="0" cellspacing="0" cellpadding="2" width="100%"> -<tr><td bgcolor="#828DA6"> -<font color="#ffffff" face="arial,helvetica,sanserif"> -<a name="metrics-response-times"><strong>17.1.2 Response times metrics</strong></a> -<a class="sectionlink" href="#metrics-response-times" title="Link to here">¶</a></font> -</td></tr> -<tr><td> -<blockquote> -<p> -Response times metrics are the following: -</p> -<table> -<tr> -<td bgcolor="#039acc" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -Metric Name -</font> -</td> -<td bgcolor="#039acc" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -Description -</font> -</td> -</tr> -<tr> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -<rootMetricsPrefix>.<samplerName>.success -</font> -</td> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -Number of successful responses for sampler name -</font> -</td> -</tr> -<tr> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -<rootMetricsPrefix>.<samplerName>.failure -</font> -</td> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -Number of failed responses for sampler name -</font> -</td> -</tr> -<tr> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -<rootMetricsPrefix>.<samplerName>.total -</font> -</td> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -Total number of requests for sampler name -</font> -</td> -</tr> -<tr> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -<rootMetricsPrefix>.<samplerName>.min -</font> -</td> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -Min response time for sampler name -</font> -</td> -</tr> -<tr> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -<rootMetricsPrefix>.<samplerName>.max -</font> -</td> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -Max response time for sampler name -</font> -</td> -</tr> -<tr> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -<rootMetricsPrefix>.<samplerName>.percentile<percentileValue> -</font> -</td> -<td bgcolor="#a0ddf0" valign="top" align="left"> -<font color="#000000" size="-1" face="arial,helvetica,sanserif"> -Percentile computed for successful responses of sampler name. You can input as many percentiles as you want (3 or 4 being a reasonable value).<br /> - By default listener computes percentiles 90%, 95% and 99% -</font> -</td> -</tr> -</table> -<p> - - By default JMeter sends only metrics for all samplers using "__cumulated__" as samplerName. - -</p> -</blockquote> -</td></tr> -<tr><td><br></td></tr> -</table> -</blockquote> -</td></tr> -<tr><td><br></td></tr> -</table> -<table border="0" cellspacing="0" cellpadding="2" width="100%"> -<tr><td bgcolor="#828DA6"> -<font color="#ffffff" face="arial,helvetica,sanserif"> -<a name="jmeter-configuration"><strong>17.2 JMeter configuration</strong></a> -<a class="sectionlink" href="#jmeter-configuration" title="Link to here">¶</a></font> -</td></tr> -<tr><td> -<blockquote> -<p> + </p> + <table> + <tr> + <th>Metric Name</th> + <th>Description</th> + </tr> + <tr> + <td><rootMetricsPrefix>.test.minAT</td> + <td>Min active threads</td> + </tr> + <tr> + <td><rootMetricsPrefix>.test.maxAT</td> + <td>Max active threads</td> + </tr> + <tr> + <td><rootMetricsPrefix>.test.meanAT</td> + <td>Mean active threads</td> + </tr> + <tr> + <td><rootMetricsPrefix>.test.startedT</td> + <td>Started threads</td> + </tr> + <tr> + <td><rootMetricsPrefix>.test.endedT</td> + <td>Finished threads</td> + </tr> + </table> + </div> + <div class="subsection"><h2>17.1.2 Response times metrics<a class="sectionlink" href="#metrics-response-times" title="Link to here">¶</a></h2> + <p>Response times metrics are the following:</p> + <table> + <tr> + <th>Metric Name</th> + <th>Description</th> + </tr> + <tr> + <td><rootMetricsPrefix>.<samplerName>.ok.count</td> + <td>Number of successful responses for sampler name</td> + </tr> + <tr> + <td><rootMetricsPrefix>.<samplerName>.ok.min</td> + <td>Min response time for successful responses of sampler name</td> + </tr> + <tr> + <td><rootMetricsPrefix>.<samplerName>.ok.max</td> + <td>Max response time for successful responses of sampler name</td> + </tr> + <tr> + <td><rootMetricsPrefix>.<samplerName>.ok.pct<percentileValue></td> + <td>Percentile computed for successful responses of sampler name. You can input as many percentiles as you want (3 or 4 being a reasonable value).<br> + When percentile contains a comma for example "99.9", dot is sanitized by "_" leading to 99_9. + By default listener computes percentiles 90%, 95% and 99%</td> + </tr> + <tr> + <td><rootMetricsPrefix>.<samplerName>.ko.count</td> + <td>Number of failed responses for sampler name</td> + </tr> + <tr> + <td><rootMetricsPrefix>.<samplerName>.ko.min</td> + <td>Min response time for failed responses of sampler name</td> + </tr> + <tr> + <td><rootMetricsPrefix>.<samplerName>.ko.max</td> + <td>Max response time for failed responses of sampler name</td> + </tr> + <tr> + <td><rootMetricsPrefix>.<samplerName>.ko.pct<percentileValue></td> + <td>Percentile computed for failed responses of sampler name. You can input as many percentiles as you want (3 or 4 being a reasonable value).<br> + When percentile contains a comma for example "99.9", dot is sanitized by "_" leading to 99_9. + By default listener computes percentiles 90%, 95% and 99%</td> + </tr> + <tr> + <td><rootMetricsPrefix>.<samplerName>.a.count</td> + <td>Number of responses for sampler name</td> + </tr> + <tr> + <td><rootMetricsPrefix>.<samplerName>.a.min</td> + <td>Min response time for responses of sampler name</td> + </tr> + <tr> + <td><rootMetricsPrefix>.<samplerName>.a.max</td> + <td>Max response time for responses of sampler name</td> + </tr> + <tr> + <td><rootMetricsPrefix>.<samplerName>.a.pct<percentileValue></td> + <td>Percentile computed for responses of sampler name. You can input as many percentiles as you want (3 or 4 being a reasonable value).<br> + When percentile contains a comma for example "99.9", dot is sanitized by "_" leading to 99_9. + By default listener computes percentiles 90%, 95% and 99%</td> + </tr> + </table> + <p> + By default JMeter sends only metrics for all samplers using "all" as samplerName. + </p> + </div> +</div> +<div class="subsection"><h2>17.2 JMeter configuration<a class="sectionlink" href="#jmeter-configuration" title="Link to here">¶</a></h2> + <p> + To make JMeter send metrics to backend add a <a href="./component_reference.html#Backend_Listener">BackendListener</a> using the GraphiteBackendListenerClient. + </p> + <figure><a href="../images/screenshots/backend_listener.png"><img src="../images/screenshots/backend_listener.png" width="902" height="341" alt="Graphite configuration"></a><figcaption>Graphite configuration</figcaption></figure> +</div> - To make JMeter send metrics to backend add a -<a href="./component_reference.html#Backend_Listener"> -BackendListener -</a> - using the GraphiteBackendListenerClient. - -</p> -<p><table border="0" cellspacing="0" cellpadding="0"><tr><td><img width='1138' height='352' src="../images/screenshots/backend_listener.png"/><br> -<font size="-1">Graphite configuration -</font></td></tr></table></p> -</blockquote> -</td></tr> -<tr><td><br></td></tr> -</table> -<table border="0" cellspacing="0" cellpadding="2" width="100%"> -<tr><td bgcolor="#828DA6"> -<font color="#ffffff" face="arial,helvetica,sanserif"> -<a name="influxdb"><strong>17.2 InfluxDB</strong></a> -<a class="sectionlink" href="#influxdb" title="Link to here">¶</a></font> -</td></tr> -<tr><td> -<blockquote> -<p> -InfluxDB is an open-source, distributed,time-series database that allows to +<div class="subsection"><h2>17.2 InfluxDB<a class="sectionlink" href="#influxdb" title="Link to here">¶</a></h2> +<p>InfluxDB is an open-source, distributed,time-series database that allows to easily store metrics. -Installation and configuration is very easy, read this for more details -<a href="http://influxdb.com/docs/v0.8/introduction/installation.html" target="_blank"> -InfluxDB documentation -</a> -. -<br> - - -InfluxDB data can be easily viewed in a browser through either -<a href="https://github.com/hakobera/influga" target="_blank"> -Influga -</a> - or -<a href="http://grafana.org/" target="_blank"> -Grafana -</a> -. +Installation and configuration is very easy, read this for more details <a href="http://influxdb.com/docs/v0.8/introduction/installation.html" target="_blank">InfluxDB documentation</a>.<br> +InfluxDB data can be easily viewed in a browser through either <a href="https://github.com/hakobera/influga" target="_blank">Influga</a> or <a href="http://grafana.org/" target="_blank">Grafana</a>. We will use Grafana in this case. - -</p> -<table border="0" cellspacing="0" cellpadding="2" width="100%"> -<tr><td bgcolor="#828DA6"> -<font color="#ffffff" face="arial,helvetica,sanserif"> -<a name="influxdb_configuration"><strong>17.2.1 InfluxDB graphite listener configuration</strong></a> -<a class="sectionlink" href="#influxdb_configuration" title="Link to here">¶</a></font> -</td></tr> -<tr><td> -<blockquote> -<p> -To enable Graphite listener in InfluxDB, edit files /opt/influxdb/shared/config.toml or /usr/local/etc/influxdb.conf, find "input_plugins.graphite" and set this: - -</p> -<code> - - # Configure the graphite api -<br> - - - [input_plugins.graphite] -<br> - - - enabled = true -<br> - - - address = "0.0.0.0" # If not set, is actually set to bind-address. -<br> - - - port = 2003 -<br> - - - database = "jmeter" # store graphite data in this database -<br> - - - # udp_enabled = true # enable udp interface on the same port as the tcp interface -<br> - - - -</code> -</blockquote> -</td></tr> -<tr><td><br></td></tr> -</table> -<table border="0" cellspacing="0" cellpadding="2" width="100%"> -<tr><td bgcolor="#828DA6"> -<font color="#ffffff" face="arial,helvetica,sanserif"> -<a name="influxdb_db_configuration"><strong>17.2.2 InfluxDB database configuration</strong></a> -<a class="sectionlink" href="#influxdb_db_configuration" title="Link to here">¶</a></font> -</td></tr> -<tr><td> -<blockquote> -<p> -Connect to InfluxDB admin console and create 2 databases: - -<ul> - - -<li> -grafana : Used by Grafana to store the dashboards we will create -</li> - - -<li> -jmeter : Used by InfluxDB to store the data sent to Graphite Listener as per database="jmeter" config element in influxdb.conf or config.toml -</li> - - -</ul> - - -</p> -</blockquote> -</td></tr> -<tr><td><br></td></tr> -</table> -<table border="0" cellspacing="0" cellpadding="2" width="100%"> -<tr><td bgcolor="#828DA6"> -<font color="#ffffff" face="arial,helvetica,sanserif"> -<a name="grafana_configuration"><strong>17.2.3 Grafana configuration</strong></a> -<a class="sectionlink" href="#grafana_configuration" title="Link to here">¶</a></font> -</td></tr> -<tr><td> -<blockquote> -<p> - - Installing grafana is just a matter of putting the unzipped bundle behind an Apache HTTP server. -<br> - - - Read -<a href="http://grafana.org/docs/" targer="_blank"> -documentation -</a> - for more details. - Open config.js file and find datasources element, and edit it like this: -<br> - - - </p> -<code> - - datasources: { -<br> - - - influxdb: { -<br> - - - type: 'influxdb', -<br> - - - url: "http://localhost:8086/db/jmeter", -<br> - - - username: 'root', -<br> - - - password: 'root', -<br> - - + <div class="subsection"><h2>17.2.1 InfluxDB graphite listener configuration<a class="sectionlink" href="#influxdb_configuration" title="Link to here">¶</a></h2> + <p>To enable Graphite listener in InfluxDB, edit files /opt/influxdb/shared/config.toml or /usr/local/etc/influxdb.conf, find "input_plugins.graphite" and set this: + </p> + <span class="code"> + # Configure the graphite api<br> + [input_plugins.graphite]<br> + enabled = true<br> + address = "0.0.0.0" # If not set, is actually set to bind-address.<br> + port = 2003<br> + database = "jmeter" # store graphite data in this database<br> + # udp_enabled = true # enable udp interface on the same port as the tcp interface<br> + </span> + </div> + <div class="subsection"><h2>17.2.2 InfluxDB database configuration<a class="sectionlink" href="#influxdb_db_configuration" title="Link to here">¶</a></h2> + <p>Connect to InfluxDB admin console and create 2 databases: + <ul> + <li>grafana : Used by Grafana to store the dashboards we will create</li> + <li>jmeter : Used by InfluxDB to store the data sent to Graphite Listener as per database="jmeter" config element in influxdb.conf or config.toml</li> + </ul> + </p> + </div> + <div class="subsection"><h2>17.2.3 Grafana configuration<a class="sectionlink" href="#grafana_configuration" title="Link to here">¶</a></h2> + <p> + Installing grafana is just a matter of putting the unzipped bundle behind an Apache HTTP server.<br> + Read <a href="http://grafana.org/docs/" targer="_blank">documentation</a> for more details. + Open config.js file and find datasources element, and edit it like this:<br> + </p> + <span class="code"> + datasources: {<br> + influxdb: {<br> + type: 'influxdb',<br> + url: "http://localhost:8086/db/jmeter",<br> + username: 'root',<br> + password: 'root',<br> }, - grafana: { -<br> - - - type: 'influxdb', -<br> - - - url: "http://localhost:8086/db/grafana", -<br> - - - username: 'root', -<br> - - - password: 'root', -<br> - - - grafanaDB: true -<br> - - - }, -<br> - - + grafana: {<br> + type: 'influxdb',<br> + url: "http://localhost:8086/db/grafana",<br> + username: 'root',<br> + password: 'root',<br> + grafanaDB: true<br> + },<br> }, - -</code> -<br> - -<p> - - Note that grafana has "grafanaDB:true". Also note that here we use root user for simplicity, it is better to dedicate a special user with less rights. -<br> - - + </span><br> + <p> + Note that grafana has "grafanaDB:true". Also note that here we use root user for simplicity, it is better to dedicate a special user with less rights.<br> Here is the kind of dashboard that you could obtain: + </p> + <figure><a href="../images/screenshots/grafana_dashboard.png"><img src="../images/screenshots/grafana_dashboard.png" width="1265" height="581" alt="Grafana dashboard"></a><figcaption>Grafana dashboard</figcaption></figure> -</p> -<p><table border="0" cellspacing="0" cellpadding="0"><tr><td><img width='1912' height='957' src="../images/screenshots/grafana_dashboard.png"/><br> -<font size="-1">Grafana dashboard -</font></td></tr></table></p> -</blockquote> -</td></tr> -<tr><td><br></td></tr> -</table> -</blockquote> -</td></tr> -<tr><td><br></td></tr> -</table> -<table border="0" cellspacing="0" cellpadding="2" width="100%"> -<tr><td bgcolor="#828DA6"> -<font color="#ffffff" face="arial,helvetica,sanserif"> -<a name="collectd"><strong>17.3 Collectd</strong></a> -<a class="sectionlink" href="#collectd" title="Link to here">¶</a></font> -</td></tr> -<tr><td> -<blockquote> -<p> -TODO. -</p> -</blockquote> -</td></tr> -<tr><td><br></td></tr> -</table> -<table border="0" cellspacing="0" cellpadding="2" width="100%"> -<tr><td bgcolor="#828DA6"> -<font color="#ffffff" face="arial,helvetica,sanserif"> -<a name="graphite"><strong>17.4 Graphite</strong></a> -<a class="sectionlink" href="#graphite" title="Link to here">¶</a></font> -</td></tr> -<tr><td> -<blockquote> -<p> -TODO. -</p> -</blockquote> -</td></tr> -<tr><td><br></td></tr> -</table> -</blockquote> -</p> -</td></tr> -<tr><td><br></td></tr> -</table> -<br> -<table> -<tr> -<td bgcolor="#525D76"> -<div align="right"><a href="index.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Index</font></a></div> -</td> -<td bgcolor="#525D76"> -<div align="right"><a href="component_reference.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Next</font></a></div> -</td> -<td bgcolor="#525D76"> -<div align="right"><a href="live-statistics.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Prev</font></a></div> -</td> -</tr> -</table> -</td> -</tr> -<tr><td colspan="2"> -<hr noshade size="1"/> -</td></tr> -<tr><td colspan="2"> -<div align="center"><font color="#525D76" size="-1"><em> -Copyright © 1999-2015, Apache Software Foundation -</em></font></div> -</td></tr> -<tr><td colspan="2"> -<div align="center"><font color="#525D76" size="-1"> -Apache, Apache JMeter, JMeter, the Apache feather, and the Apache JMeter logo are -trademarks of the Apache Software Foundation. -</font> + </div> </div> -</td></tr> -</table> -</body> -</html> -<!-- end the processing --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +<div class="subsection"><h2>17.3 Graphite<a class="sectionlink" href="#graphite" title="Link to here">¶</a></h2> +<p>TODO.</p> +</div> +</div><ul class="pagelinks"><li><a href="live-statistics.html">< Prev</a></li><li><a href="../index.html">Index</a></li><li><a href="component_reference.html">Next ></a></li></ul></div><div class="footer"><div class="copyright"> + Copyright © + 1999 – + 2015 + , 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></body></html> \ No newline at end of file
Modified: jmeter/trunk/docs/usermanual/regular_expressions.html URL: http://svn.apache.org/viewvc/jmeter/trunk/docs/usermanual/regular_expressions.html?rev=1664961&r1=1664960&r2=1664961&view=diff ============================================================================== --- jmeter/trunk/docs/usermanual/regular_expressions.html (original) +++ jmeter/trunk/docs/usermanual/regular_expressions.html Sun Mar 8 10:22:58 2015 @@ -1,903 +1,255 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -<!-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> - -<!-- Content Stylesheet for Site --> - - -<!-- start the processing --> -<html> -<head> -<link rel="stylesheet" type="text/css" href="../css/style.css"/> -<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> - -<title>Apache JMeter - User's Manual: Regular Expressions</title> -</head> - -<body bgcolor="#ffffff" text="#000000" link="#525D76"> -<table width="100%" cellspacing="0" border="0"> -<tr> -<td width="90%" align="left"> -<table border="0" cellspacing="0"> -<tr> -<td width="10%"> -<a href="http://www.apache.org"><img title="Apache Software Foundation" width="290" height="75" src="../images/asf-logo.png" border="0"/></a> -</td> -<td align="left" width="40%"> - -<a href="http://jmeter.apache.org/"><img width="182" height="88" src="../images/logo.jpg" alt="Apache JMeter" title="Apache JMeter" border="0"/></a> -</td> -</tr> -</table> -</td> -<td align="left" width="50%"> -<table cellspacing="0" align="right" border="0"> -<tr> -<td align="left"> <a href="https://twitter.com/share" -class="twitter-share-button" -data-text="Powerful Load Testing with -Apache #JMeter" data-via="ApacheJMeter" -data-lang="en-gb" data-size="large">Tweet</a> -<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> -</td> -<td align="right"> <a -href="https://twitter.com/ApacheJMeter" -class="twitter-follow-button" -data-show-count="false" data-lang="en-gb" -data-size="large">Follow</a> -<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script> -</td> -</tr> -</table> -</td></tr> -</table> - -<table border="0" width="100%" cellspacing="4"> -<tr><td colspan="2"> -<hr noshade size="1"/> -</td></tr> -<tr> -<!-- LEFT SIDE NAVIGATION --> -<td width="20%" valign="top" nowrap="true"> -<table border="0" width="100%" cellspacing="0"> -<tr><td> -<p><strong>About</strong></p> -<ul> -<li><a href="../index.html">Overview</a> -</li> -<li><a href="http://twitter.com/ApacheJMeter">JMeter on Twitter</a> -<img src="../images/twitter.png" align="top"/></li> -<li><a href="../issues.html">Issue Tracking</a> -</li> -<li><a href="http://projects.apache.org/feeds/rss/jmeter.xml">Subscribe to What's New</a> -</li> -<li><a href="http://www.apache.org/licenses/">License</a> -</li> -</ul> -<p><strong>Download</strong></p> -<ul> -<li><a href="../download_jmeter.cgi">Download Releases</a> -</li> -<li><a href="../nightly.html">Developer (Nightly) Builds</a> -</li> -</ul> -<p><strong>Documentation</strong></p> -<ul> -<li><a href="../changes.html">Changes per version</a> -</li> -<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="../api/index.html">Javadocs</a> -</li> -<li><a href="../building.html">Building JMeter and Add-Ons</a> -</li> -<li><a href="http://wiki.apache.org/jmeter">JMeter Wiki</a> -</li> -<li><a href="http://wiki.apache.org/jmeter/JMeterFAQ">FAQ (Wiki)</a> -</li> -</ul> -<p><strong>Tutorials (PDF format)</strong></p> -<ul> -<li><a href="../usermanual/jmeter_distributed_testing_step_by_step.pdf">Distributed Testing</a> -</li> -<li><a href="../usermanual/jmeter_proxy_step_by_step.pdf">Recording Tests</a> -</li> -<li><a href="../usermanual/junitsampler_tutorial.pdf">JUnit Sampler</a> -</li> -<li><a href="../usermanual/jmeter_accesslog_sampler_step_by_step.pdf">Access Log Sampler</a> -</li> -<li><a href="../extending/jmeter_tutorial.pdf">Extending JMeter</a> -</li> -</ul> -<p><strong>Community</strong></p> -<ul> -<li><a href="http://wiki.apache.org/jmeter/JMeterCommitters">Contributors</a> -</li> -<li><a href="../mail.html">Mailing Lists</a> -</li> -<li><a href="../svnindex.html">SVN Repositories</a> -</li> -</ul> -<p><strong>Foundation</strong></p> -<ul> -<li><a href="http://www.apache.org/">ASF</a> -</li> -<li><a href="http://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a> -</li> -<li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a> -</li> -<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a> -</li> -</ul> -</td></tr> -<tr><td> -<iframe src="http://www.apache.org/ads/button.html" style="border-width:0; float: left;" frameborder="0" scrolling="no"></iframe> -</td></tr> -</table> -</td> -<td width="80%" align="left" valign="top"> -<table> -<tr> -<td bgcolor="#525D76"> -<div align="right"><a href="index.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Index</font></a></div> -</td> -<td bgcolor="#525D76"> -<div align="right"><a href="hints_and_tips.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Next</font></a></div> -</td> -<td bgcolor="#525D76"> -<div align="right"><a href="functions.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Prev</font></a></div> -</td> -</tr> -</table> -<br> -<table border="0" cellspacing="0" cellpadding="2" width="100%"> -<tr><td bgcolor="#525D76"> -<font color="#ffffff" face="arial,helvetica,sanserif"> -<a name="regex"><strong>20. Regular Expressions</strong></a><a class="sectionlink" href="#regex" title="Link to here">¶</a></font> -</td></tr> -<tr><td> -<blockquote> -<table border="0" cellspacing="0" cellpadding="2" width="100%"> -<tr><td bgcolor="#828DA6"> -<font color="#ffffff" face="arial,helvetica,sanserif"> -<a name="overview"><strong>20.1 Overview</strong></a> -<a class="sectionlink" href="#overview" title="Link to here">¶</a></font> -</td></tr> -<tr><td> -<blockquote> +<!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: Regular Expressions</title><meta name="viewport" content="width=device-width, initial-scale=1"><link href="http://fonts.googleapis.com/css?family=Merriweather:400normal" rel="stylesheet" type="text/css"><link rel="stylesheet" type="text/css" href="../css/new-style.css"></head><body role="document"><a href="#content" class="hidden">Main content</a><div class="header"><!-- + APACHE LOGO + --><div><a href="http://www.apache.org"><img title="Apache Software Foundation" width="290" height="75" src="../images/asf-logo.png" alt="Logo ASF"></a></div><!-- + PROJECT LOGO + --><div><a href="http://jmeter.apache.org/"><img src="../images/logo.jpg" alt="Apache JMeter"></a></div><div class="twitter"><div><a href="https://twitter.com/share" class="twitter-share-button" data-text="Powerful Load Testing with Apache #JMeter" data-via="ApacheJMeter" data-lang="en-gb" data-size="large">Tweet</a><script> + (function(d,s,id){ + var js, + fjs=d.getElementsByTagName(s)[0], + p=/^http:/.test(d.location)?'http':'https'; + if (!d.getElementById(id)) { + js=d.createElement(s); + js.id=id; + js.src=p+'://platform.twitter.com/widgets.js'; + fjs.parentNode.insertBefore(js,fjs); + } + })(document, 'script', 'twitter-wjs'); + </script></div><div><a href="https://twitter.com/ApacheJMeter" class="twitter-follow-button" data-show-count="false" data-lang="en-gb" data-size="large">Follow</a><script>(function(d,s,id){ + var js, + fjs=d.getElementsByTagName(s)[0], + p=/^http:/.test(d.location)?'http':'https'; + if (!d.getElementById(id)) { + js=d.createElement(s); + js.id=id; + js.src=p+'://platform.twitter.com/widgets.js'; + fjs.parentNode.insertBefore(js,fjs); + } + })(document, 'script', 'twitter-wjs'); + </script></div></div><div class="banner"><iframe src="http://www.apache.org/ads/bannerbar.html" style="border-width:0;" frameborder="0" scrolling="no"></iframe><div class="clear"></div></div></div><div class="nav"><ul class="menu"><li><div class="menu-title">About</div><ul><li><a href="../index.html">Overview</a></li><li><a href="http://twitter.com/ApacheJMeter">JMeter on Twitter<img src="../images/twitter.png" alt="Icon for JMeter on Twitter"></a></li><li><a href="../issues.html">Issue Tracking</a></li><li><a href="http://projects.apache.org/feeds/rss/jmeter.xml">Subscribe to What's New</a></li><li><a href="http://www.apache.org/licenses/">License</a></li></ul></li></ul><ul class="menu"><li><div class="menu-title">Download</div><ul><li><a href="../download_jmeter.cgi">Download Releases</a></li><li><a href="../nightly.html">Developer (Nightly) Builds</a></li></ul></li></ul><ul class="menu"><li><div class="menu-title">Documentation</div><ul><li><a href="../changes.html" >Changes per version</a></li><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="../api/index.html">Javadocs</a></li><li><a >href="../building.html">Building JMeter and Add-Ons</a></li><li><a >href="http://wiki.apache.org/jmeter">JMeter Wiki</a></li><li><a >href="http://wiki.apache.org/jmeter/JMeterFAQ">FAQ >(Wiki)</a></li></ul></li></ul><ul class="menu"><li><div >class="menu-title">Tutorials (PDF format)</div><ul><li><a >href="../usermanual/jmeter_distributed_testing_step_by_step.pdf">Distributed >Testing</a></li><li><a >href="../usermanual/jmeter_proxy_step_by_step.pdf">Recording >Tests</a></li><li><a href="../usermanual/junitsampler_tutorial.pdf">JUnit >Sampler</a></li><li><a href="../us ermanual/jmeter_accesslog_sampler_step_by_step.pdf">Access Log Sampler</a></li><li><a href="../extending/jmeter_tutorial.pdf">Extending JMeter</a></li></ul></li></ul><ul class="menu"><li><div class="menu-title">Community</div><ul><li><a href="http://wiki.apache.org/jmeter/JMeterCommitters">Contributors</a></li><li><a href="../mail.html">Mailing Lists</a></li><li><a href="../svnindex.html">SVN Repositories</a></li></ul></li></ul><ul class="menu"><li><div class="menu-title">Foundation</div><ul><li><a href="http://www.apache.org/">ASF</a></li><li><a href="http://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a></li><li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li><li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li></ul></li></ul></div><div class="main" id="content"><ul class="pagelinks"><li><a href="functions.html">< Prev</a></li><li><a href="../index.html">Index</a></li><li><a href="hints_and_tips.html"> Next ></a></li></ul><div class="section"><h1 id="regex">20. Regular Expressions<a class="sectionlink" href="#regex" title="Link to here">¶</a></h1> +<div class="subsection"><h2>20.1 Overview<a class="sectionlink" href="#overview" title="Link to here">¶</a></h2> <p> - -JMeter includes the pattern matching software -<a href="http://jakarta.apache.org/oro/"> -Apache Jakarta ORO -</a> - - +JMeter includes the pattern matching software <a href="http://attic.apache.org/projects/jakarta-oro.html">Apache Jakarta ORO</a> <br> - - There is some documentation for this on the Jakarta web-site, for example - -<a href="http://jakarta.apache.org/oro/api/org/apache/oro/text/regex/package-summary.html"> - -a summary of the pattern matching characters -</a> - - +<a href="http://archimedes.fas.harvard.edu/scrapbook/jakarta-oro-2.0.6/docs/api/org/apache/oro/text/regex/package-summary.html"> +a summary of the pattern matching characters</a> </p> <p> - There is also documentation on an older incarnation of the product at - -<a href="http://www.savarese.org/oro/docs/OROMatcher/index.html"> -OROMatcher User's guide -</a> -, which might prove useful. - +<a href="http://www.savarese.org/oro/docs/OROMatcher/index.html">OROMatcher User's guide</a>, which might prove useful. </p> <p> - The pattern matching is very similar to the pattern matching in Perl. A full installation of Perl will include plenty of documentation on regular expressions - look for perlrequick, perlretut, perlre, perlreref. - </p> <p> - It is worth stressing the difference between "contains" and "matches", as used on the Response Assertion test element: - </p> <ul> - - <li> - "contains" means that the regular expression matched at least some part of the target, so 'alphabet' "contains" 'ph.b.' because the regular expression matches the substring 'phabe'. - </li> - - <li> - "matches" means that the regular expression matched the whole target. So 'alphabet' is "matched" by 'al.*t'. - </li> - - </ul> -<p> -In this case, it is equivalent to wrapping the regular expression in ^ and $, viz '^al.*t$'. - +<p>In this case, it is equivalent to wrapping the regular expression in ^ and $, viz '^al.*t$'. </p> -<p> -However, this is not always the case. +<p>However, this is not always the case. For example, the regular expression 'alp|.lp.*' is "contained" in 'alphabet', but does not match 'alphabet'. - </p> -<p> -Why? Because when the pattern matcher finds the sequence 'alp' in 'alphabet', it stops trying any other combinations - and 'alp' is not the same as 'alphabet', as it does not include 'habet'. - +<p>Why? Because when the pattern matcher finds the sequence 'alp' in 'alphabet', it stops trying any other combinations - and 'alp' is not the same as 'alphabet', as it does not include 'habet'. </p> <p> - Note: unlike Perl, there is no need to (i.e. do not) enclose the regular expression in //. - </p> <p> - So how does one use the modifiers ismx etc if there is no trailing /? -The solution is to use -<i> -extended regular expressions -</i> -, i.e. /abc/i becomes (?i)abc. -See also -<a href="#placement"> -Placement of modifiers -</a> - below. - +The solution is to use <i>extended regular expressions</i>, i.e. /abc/i becomes (?i)abc. +See also <a href="#placement">Placement of modifiers</a> below. </p> -</blockquote> -</td></tr> -<tr><td><br></td></tr> -</table> -<table border="0" cellspacing="0" cellpadding="2" width="100%"> -<tr><td bgcolor="#828DA6"> -<font color="#ffffff" face="arial,helvetica,sanserif"> -<a name="examples"><strong>20.2 Examples</strong></a> -<a class="sectionlink" href="#examples" title="Link to here">¶</a></font> -</td></tr> -<tr><td> -<blockquote> -<h3> -Extract single string -</h3> +</div> +<div class="subsection"><h2>20.2 Examples<a class="sectionlink" href="#examples" title="Link to here">¶</a></h2> +<h3>Extract single string</h3> <p> - Suppose you want to match the following portion of a web-page: - <br> - - - -<code> -name="file" value="readme.txt"> -</code> - - +<span class="code">name="file" value="readme.txt"></span> <br> - - -and you want to extract -<code> -readme.txt -</code> -. - +and you want to extract <span class="code">readme.txt</span>. <br> - - A suitable regular expression would be: - <br> - - - -<code> -name="file" value="(.+?)"> -</code> - - +<span class="code">name="file" value="(.+?)"></span> <p> - The special characters above are: - </p> - - <ul> - - -<li> -( and ) - these enclose the portion of the match string to be returned -</li> - - -<li> -. - match any character -</li> - - -<li> -+ - one or more times -</li> - - -<li> -? - don't be greedy, i.e. stop when first match succeeds -</li> - - +<li>( and ) - these enclose the portion of the match string to be returned</li> +<li>. - match any character</li> +<li>+ - one or more times</li> +<li>? - don't be greedy, i.e. stop when first match succeeds</li> </ul> - - <p> - -Note: without the ?, the .+ would continue past the first -<code> -"> -</code> - -until it found the last possible -<code> -"> -</code> - - which is probably not what was intended. - +Note: without the ?, the .+ would continue past the first <span class="code">"></span> +until it found the last possible <span class="code">"></span> - which is probably not what was intended. </p> - - <p> - Note: although the above expression works, it's more efficient to use the following expression: - <br> - - - -<code> -name="file" value="([^"]+)"> -</code> - -where +<span class="code">name="file" value="([^"]+)"></span> +where<br> +[^"] - means match anything except "<br> +In this case, the matching engine can stop looking as soon as it sees the first <span class="code">"</span>, +whereas in the previous case the engine has to check that it has found <span class="code">"></span> rather than say <span class="code">" ></span>. +</p> +<h3>Extract multiple strings</h3> +<p> +Suppose you want to match the following portion of a web-page:<br> +<span class="code">name="file.name" value="readme.txt"</span> +and you want to extract both <span class="code">file.name</span> and <span class="code">readme.txt</span>. <br> - - -[^"] - means match anything except " -<br> - - -In this case, the matching engine can stop looking as soon as it sees the first -<code> -" -</code> -, -whereas in the previous case the engine has to check that it has found -<code> -"> -</code> - rather than say -<code> -" > -</code> -. - -</p> - - -<h3> -Extract multiple strings -</h3> - - -<p> - -Suppose you want to match the following portion of a web-page: -<br> - - - -<code> -name="file.name" value="readme.txt" -</code> - -and you want to extract both -<code> -file.name -</code> - and -<code> -readme.txt -</code> -. - -<br> - - A suitable reqular expression would be: - <br> - - - -<code> -name="([^"]+)" value="([^"]+)" -</code> - - +<span class="code">name="([^"]+)" value="([^"]+)"</span> <br> - - This would create 2 groups, which could be used in the JMeter Regular Expression Extractor template as $1$ and $2$. - </p> - - <p> - The JMeter Regex Extractor saves the values of the groups in additional variables. - </p> - - <p> - For example, assume: - </p> - - <ul> - - -<li> -Reference Name: MYREF -</li> - - -<li> -Regex: name="(.+?)" value="(.+?)" -</li> - - -<li> -Template: $1$$2$ -</li> - - +<li>Reference Name: MYREF</li> +<li>Regex: name="(.+?)" value="(.+?)"</li> +<li>Template: $1$$2$</li> </ul> - - +<div class="clear"></div><div class="note">Do not enclose the regular expression in / /</div><div class="clear"></div> <p> -<table border="1" bgcolor="#bbbb00" width="50%" cellspacing="0" cellpadding="2"> -<tr><td>Do not enclose the regular expression in / / -</td></tr> -</table> -</p> - - -<p> - The following variables would be set: - </p> - - <ul> - - -<li> -MYREF: file.namereadme.txt -</li> - - -<li> -MYREF_g0: name="file.name" value="readme.txt" -</li> - - -<li> -MYREF_g1: file.name -</li> - - -<li> -MYREF_g2: readme.txt -</li> - - +<li>MYREF: file.namereadme.txt</li> +<li>MYREF_g0: name="file.name" value="readme.txt"</li> +<li>MYREF_g1: file.name</li> +<li>MYREF_g2: readme.txt</li> </ul> - These variables can be referred to later on in the JMeter test plan, as ${MYREF}, ${MYREF_g1} etc - </p> -</blockquote> -</td></tr> -<tr><td><br></td></tr> -</table> -<table border="0" cellspacing="0" cellpadding="2" width="100%"> -<tr><td bgcolor="#828DA6"> -<font color="#ffffff" face="arial,helvetica,sanserif"> -<a name="line_mode"><strong>20.3 Line mode</strong></a> -<a class="sectionlink" href="#line_mode" title="Link to here">¶</a></font> -</td></tr> -<tr><td> -<blockquote> -<p> -The pattern matching behaves in various slightly different ways, +</div> +<div class="subsection"><h2>20.3 Line mode<a class="sectionlink" href="#line_mode" title="Link to here">¶</a></h2> +<p>The pattern matching behaves in various slightly different ways, depending on the setting of the multi-line and single-line modifiers. Note that the single-line and multi-line operators have nothing to do with each other; they can be specified independently. - </p> -<h3> -Single-line mode -</h3> +<h3>Single-line mode</h3> <p> - Single-line mode only affects how the '.' meta-character is interpreted. - </p> <p> - Default behaviour is that '.' matches any character except newline. In single-line mode, '.' also matches newline. - </p> -<h3> -Multi-line mode -</h3> -<p> +<h3>Multi-line mode</h3> +<p> Multi-line mode only affects how the meta-characters '^' and '$' are interpreted. - </p> <p> - Default behaviour is that '^' and '$' only match at the very beginning and end of the string. When Multi-line mode is used, the '^' metacharacter matches at the beginning of every line, -and the '$' metacharacter matches at the end of every line. -</p> -</blockquote> -</td></tr> -<tr><td><br></td></tr> -</table> -<table border="0" cellspacing="0" cellpadding="2" width="100%"> -<tr><td bgcolor="#828DA6"> -<font color="#ffffff" face="arial,helvetica,sanserif"> -<a name="meta_chars"><strong>20.4 Meta characters</strong></a> -<a class="sectionlink" href="#meta_chars" title="Link to here">¶</a></font> -</td></tr> -<tr><td> -<blockquote> -<p> +and the '$' metacharacter matches at the end of every line.</p> +</div> + +<div class="subsection"><h2>20.4 Meta characters<a class="sectionlink" href="#meta_chars" title="Link to here">¶</a></h2> +<p> Regular expressions use certain characters as meta characters - these characters have a special meaning to the RE engine. Such characters must be escaped by preceeding them with \ (backslash) in order to treat them as ordinary characters. Here is a list of the meta characters and their meaning (please check the ORO documentation if in doubt). - </p> <ul> - - -<li> -( ) - grouping -</li> - - -<li> -[ ] - character classes -</li> - - -<li> -{ } - repetition -</li> - - -<li> -* + ? - repetition -</li> - - -<li> -. - wild-card character -</li> - - -<li> -\ - escape character -</li> - - -<li> -| - alternatives -</li> - - -<li> -^ $ - start and end of string or line -</li> - - +<li>( ) - grouping</li> +<li>[ ] - character classes</li> +<li>{ } - repetition</li> +<li>* + ? - repetition</li> +<li>. - wild-card character</li> +<li>\ - escape character</li> +<li>| - alternatives</li> +<li>^ $ - start and end of string or line</li> </ul> -<p> -<table border="1" bgcolor="#bbbb00" width="50%" cellspacing="0" cellpadding="2"> -<tr><td> - -<p> -Please note that ORO does not support the \Q and \E meta-characters. +<div class="clear"></div><div class="note"> +<p>Please note that ORO does not support the \Q and \E meta-characters. [In other RE engines, these can be used to quote a portion of an RE so that the meta-characters stand for themselves.] -You can use function to do the equivalent, see -<a href="functions.html#__escapeOroRegexpChars"> -${__escapeOroRegexpChars(valueToEscape)} -</a> -. - -</p> - - -</td></tr> -</table> +You can use function to do the equivalent, see <a href="functions.html#__escapeOroRegexpChars">${__escapeOroRegexpChars(valueToEscape)}</a>. </p> +</div><div class="clear"></div> <p> - The following Perl5 extended regular expressions are supported by ORO. - <dl> - - -<dt> -(?#text) -</dt> - - -<dd> -An embedded comment causing text to be ignored. -</dd> - - -<dt> -(?:regexp) -</dt> - - -<dd> -Groups things like "()" but doesn't cause the group match to be saved. -</dd> - - -<dt> -(?=regexp) -</dt> - - -<dd> -A zero-width positive lookahead assertion. For example, \w+(?=\s) matches a word followed by whitespace, without including whitespace in the MatchResult. -</dd> - - -<dt> -(?!regexp) -</dt> - - -<dd> -A zero-width negative lookahead assertion. For example foo(?!bar) matches any occurrence of "foo" that isn't followed by "bar". Remember that this is a zero-width assertion, which means that a(?!b)d will match ad because a is followed by a character that is not b (the d) and a d follows the zero-width assertion. -</dd> - - -<dt> -(?imsx) -</dt> - - -<dd> -One or more embedded pattern-match modifiers. i enables case insensitivity, m enables multiline treatment of the input, s enables single line treatment of the input, and x enables extended whitespace comments. -</dd> - - +<dt>(?#text)</dt> +<dd>An embedded comment causing text to be ignored.</dd> +<dt>(?:regexp)</dt> +<dd>Groups things like "()" but doesn't cause the group match to be saved.</dd> +<dt>(?=regexp)</dt> +<dd>A zero-width positive lookahead assertion. For example, \w+(?=\s) matches a word followed by whitespace, without including whitespace in the MatchResult.</dd> +<dt>(?!regexp)</dt> +<dd>A zero-width negative lookahead assertion. For example foo(?!bar) matches any occurrence of "foo" that isn't followed by "bar". Remember that this is a zero-width assertion, which means that a(?!b)d will match ad because a is followed by a character that is not b (the d) and a d follows the zero-width assertion.</dd> +<dt>(?imsx)</dt> +<dd>One or more embedded pattern-match modifiers. i enables case insensitivity, m enables multiline treatment of the input, s enables single line treatment of the input, and x enables extended whitespace comments.</dd> </dl> +<b>Note that <span class="code">(?<=regexp)</span> - lookbehind - is not supported.</b> +</p> +</div> -<b> -Note that -<code> -(?<=regexp) -</code> - - lookbehind - is not supported. -</b> - - -</p> -</blockquote> -</td></tr> -<tr><td><br></td></tr> -</table> -<table border="0" cellspacing="0" cellpadding="2" width="100%"> -<tr><td bgcolor="#828DA6"> -<font color="#ffffff" face="arial,helvetica,sanserif"> -<a name="placement"><strong>20.5 Placement of modifiers</strong></a> -<a class="sectionlink" href="#placement" title="Link to here">¶</a></font> -</td></tr> -<tr><td> -<blockquote> +<div class="subsection"><h2>20.5 Placement of modifiers<a class="sectionlink" href="#placement" title="Link to here">¶</a></h2> <p> - Modifiers can be placed anywhere in the regex, and apply from that point onwards. [A bug in ORO means that they cannot be used at the very end of the regex. However they would have no effect there anyway.] - </p> <p> - The single-line (?s) and multi-line (?m) modifiers are normally placed at the start of the regex. - </p> <p> - The ignore-case modifier (?i) may be usefully applied to just part of a regex, for example: - <pre> - Match ExAct case or (?i)ArBiTrARY(?-i) case - </pre> - - </p> -</blockquote> -</td></tr> -<tr><td><br></td></tr> -</table> -</blockquote> -</p> -</td></tr> -<tr><td><br></td></tr> -</table> -<table border="0" cellspacing="0" cellpadding="2" width="100%"> -<tr><td bgcolor="#525D76"> -<font color="#ffffff" face="arial,helvetica,sanserif"> -<a name="testing_expressions"><strong>20.6 Testing Regular Expressions</strong></a><a class="sectionlink" href="#testing_expressions" title="Link to here">¶</a></font> -</td></tr> -<tr><td> -<blockquote> +</div> +</div><div class="section"><h1 id="testing_expressions">20.6 Testing Regular Expressions<a class="sectionlink" href="#testing_expressions" title="Link to here">¶</a></h1> <p> - -Since JMeter 2.4, the listener -<a href="component_reference.html#View_Results_Tree"> -View Results Tree -</a> - +Since JMeter 2.4, the listener <a href="component_reference.html#View_Results_Tree">View Results Tree</a> include a RegExp Tester to test regular expressions directly on sampler response data. - </p> <p> - -There is a -<a href="http://jakarta.apache.org/oro/demo.html"> -demo -</a> - applet for Apache JMeter ORO. - +There is a <a href="http://www.regexplanet.com/advanced/java/index.html">Website</a> to test Java Regular expressions. </p> <p> - Another approach is to use a simple test plan to test the regular expressions. The Java Request sampler can be used to generate a sample, or the HTTP Sampler can be used to load a file. Add a Debug Sampler and a Tree View Listener and changes to the regular expression can be tested quickly, without needing to access any external servers. - </p> -</blockquote> -</p> -</td></tr> -<tr><td><br></td></tr> -</table> -<br> -<table> -<tr> -<td bgcolor="#525D76"> -<div align="right"><a href="index.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Index</font></a></div> -</td> -<td bgcolor="#525D76"> -<div align="right"><a href="hints_and_tips.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Next</font></a></div> -</td> -<td bgcolor="#525D76"> -<div align="right"><a href="functions.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Prev</font></a></div> -</td> -</tr> -</table> -</td> -</tr> -<tr><td colspan="2"> -<hr noshade size="1"/> -</td></tr> -<tr><td colspan="2"> -<div align="center"><font color="#525D76" size="-1"><em> -Copyright © 1999-2015, Apache Software Foundation -</em></font></div> -</td></tr> -<tr><td colspan="2"> -<div align="center"><font color="#525D76" size="-1"> -Apache, Apache JMeter, JMeter, the Apache feather, and the Apache JMeter logo are -trademarks of the Apache Software Foundation. -</font> -</div> -</td></tr> -</table> -</body> -</html> -<!-- end the processing --> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +</div><ul class="pagelinks"><li><a href="functions.html">< Prev</a></li><li><a href="../index.html">Index</a></li><li><a href="hints_and_tips.html">Next ></a></li></ul></div><div class="footer"><div class="copyright"> + Copyright © + 1999 – + 2015 + , 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></body></html> \ No newline at end of file
