You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by fs...@apache.org on 2017/01/07 13:22:30 UTC

svn commit: r1777783 - in /jmeter/trunk/xdocs: images/screenshots/ usermanual/

Author: fschumacher
Date: Sat Jan  7 13:22:30 2017
New Revision: 1777783

URL: http://svn.apache.org/viewvc?rev=1777783&view=rev
Log:
Convert pdf tutorials to xml.

Added:
    jmeter/trunk/xdocs/images/screenshots/add-recording-controller.png   (with props)
    jmeter/trunk/xdocs/images/screenshots/add-request-defaults.png   (with props)
    jmeter/trunk/xdocs/images/screenshots/add-results-tree.png   (with props)
    jmeter/trunk/xdocs/images/screenshots/add-script-recorder.png   (with props)
    jmeter/trunk/xdocs/images/screenshots/add-summary-report.png   (with props)
    jmeter/trunk/xdocs/images/screenshots/add-threadgroup.png   (with props)
    jmeter/trunk/xdocs/images/screenshots/example-recording.png   (with props)
    jmeter/trunk/xdocs/images/screenshots/example-running.png   (with props)
    jmeter/trunk/xdocs/images/screenshots/example-summary-report.png   (with props)
    jmeter/trunk/xdocs/images/screenshots/example-thread-group.png   (with props)
    jmeter/trunk/xdocs/images/screenshots/firefox-configure-proxy.png   (with props)
    jmeter/trunk/xdocs/images/screenshots/firefox-network-settings.png   (with props)
    jmeter/trunk/xdocs/images/screenshots/specify-url-pattern.png   (with props)
    jmeter/trunk/xdocs/usermanual/include_controller_tutorial.xml
    jmeter/trunk/xdocs/usermanual/jmeter_proxy_step_by_step.xml
    jmeter/trunk/xdocs/usermanual/junitsampler_tutorial.xml

Added: jmeter/trunk/xdocs/images/screenshots/add-recording-controller.png
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/add-recording-controller.png?rev=1777783&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jmeter/trunk/xdocs/images/screenshots/add-recording-controller.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jmeter/trunk/xdocs/images/screenshots/add-request-defaults.png
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/add-request-defaults.png?rev=1777783&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jmeter/trunk/xdocs/images/screenshots/add-request-defaults.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jmeter/trunk/xdocs/images/screenshots/add-results-tree.png
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/add-results-tree.png?rev=1777783&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jmeter/trunk/xdocs/images/screenshots/add-results-tree.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jmeter/trunk/xdocs/images/screenshots/add-script-recorder.png
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/add-script-recorder.png?rev=1777783&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jmeter/trunk/xdocs/images/screenshots/add-script-recorder.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jmeter/trunk/xdocs/images/screenshots/add-summary-report.png
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/add-summary-report.png?rev=1777783&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jmeter/trunk/xdocs/images/screenshots/add-summary-report.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jmeter/trunk/xdocs/images/screenshots/add-threadgroup.png
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/add-threadgroup.png?rev=1777783&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jmeter/trunk/xdocs/images/screenshots/add-threadgroup.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jmeter/trunk/xdocs/images/screenshots/example-recording.png
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/example-recording.png?rev=1777783&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jmeter/trunk/xdocs/images/screenshots/example-recording.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jmeter/trunk/xdocs/images/screenshots/example-running.png
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/example-running.png?rev=1777783&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jmeter/trunk/xdocs/images/screenshots/example-running.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jmeter/trunk/xdocs/images/screenshots/example-summary-report.png
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/example-summary-report.png?rev=1777783&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jmeter/trunk/xdocs/images/screenshots/example-summary-report.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jmeter/trunk/xdocs/images/screenshots/example-thread-group.png
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/example-thread-group.png?rev=1777783&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jmeter/trunk/xdocs/images/screenshots/example-thread-group.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jmeter/trunk/xdocs/images/screenshots/firefox-configure-proxy.png
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/firefox-configure-proxy.png?rev=1777783&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jmeter/trunk/xdocs/images/screenshots/firefox-configure-proxy.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jmeter/trunk/xdocs/images/screenshots/firefox-network-settings.png
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/firefox-network-settings.png?rev=1777783&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jmeter/trunk/xdocs/images/screenshots/firefox-network-settings.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jmeter/trunk/xdocs/images/screenshots/specify-url-pattern.png
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/specify-url-pattern.png?rev=1777783&view=auto
==============================================================================
Binary file - no diff available.

Propchange: jmeter/trunk/xdocs/images/screenshots/specify-url-pattern.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: jmeter/trunk/xdocs/usermanual/include_controller_tutorial.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/include_controller_tutorial.xml?rev=1777783&view=auto
==============================================================================
--- jmeter/trunk/xdocs/usermanual/include_controller_tutorial.xml (added)
+++ jmeter/trunk/xdocs/usermanual/include_controller_tutorial.xml Sat Jan  7 13:22:30 2017
@@ -0,0 +1,103 @@
+<?xml version="1.0"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!DOCTYPE document[
+<!ENTITY sect-num '42'>
+<!ENTITY hellip   "&#x02026;" >
+]>
+
+<document prev="best-practices.html" next="component_reference.html" id="$Id$">
+
+<properties>
+  <author email="dev@jmeter.apache.org">JMeter developers</author>
+  <title>Include Controller Tutorial</title>
+</properties>
+
+<body>
+
+<section name="&sect-num;. Include Controller Tutorial" anchor="include">
+<p>
+This is a short tutorial explaining the basics of the Include Controller. The Include Controller
+provides an easy way to include modules in a test plan. It is different than the Module Controller
+in a couple of ways.
+</p>
+
+<ul>
+<li>the Include Controller loads a simple controller with all it's samples, where as the Module
+    Controller can use any controller</li>
+<li>the Include Controller doesn't use the workbench</li>
+<li>the Module Controller doesn't load from a file</li>
+<li>the Include Controller loads the module at runtime and doesn't display the contents of the
+    Simple Controller</li>
+</ul>
+
+<p>
+There are a couple of reasons why one might want to use the include controller.
+</p>
+
+<ul>
+  <li>Break a test plan into reusable modules</li>
+  <li>Reduce the cost of maintaining test plans</li>
+  <li>Reduce duplication of common process</li>
+</ul>
+
+<p>
+For example, say you need to test an application that requires login. If each test plan had the login requests,
+a change in the login process would require updating all test plans. By making the login a module, all other
+test plans can reuse it. When the login process changes, the change is made to the module and all other test
+plans get the change. One limitation of the current implementation is the contents of the module are only
+loaded at runtime, so users can't view or edit the contents of an included module.
+</p>
+
+<figure width="417" height="130" image="includecontroller.png">Include Controller</figure>
+
+<p>
+The Include Controller has two properties. The <code>name</code> and the <code>filename</code>. The <code>name</code>
+is the descriptive name for the controller in the test plan. The <code>filename</code> is the name of the <code>.jmx</code> file.
+</p>
+
+<subsection name="&sect-num;.1 Step-by-step" anchor="step-by-step">
+
+<ol>
+  <li>Start JMeter</li>
+  <li>Select the workbench</li>
+  <li><menuchoice>
+        <guimenuitem>Add</guimenuitem>
+        <guimenuitem>Logic Controller</guimenuitem>
+        <guimenuitem>Simple Controller</guimenuitem>
+      </menuchoice>
+  </li>
+  <li>Enter <code>module1</code> in the name</li>
+  <li>Now add one or more samples to the controller</li>
+  <li>Once the samples are added, right click on <code>module1</code></li>
+  <li>Select <code>save as</code> and save it as <code>module1.jmx</code></li>
+</ol>
+
+</subsection>
+
+<p>
+<code>module1.jmx</code> can now be used with any test plan. The Include Controller hasn't been tested
+with other controllers as the root element. If you need to use other controllers, use a Simple Controller
+as the root and add other controllers to it.
+</p>
+
+</section>
+
+</body>
+
+</document>

Added: jmeter/trunk/xdocs/usermanual/jmeter_proxy_step_by_step.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/jmeter_proxy_step_by_step.xml?rev=1777783&view=auto
==============================================================================
--- jmeter/trunk/xdocs/usermanual/jmeter_proxy_step_by_step.xml (added)
+++ jmeter/trunk/xdocs/usermanual/jmeter_proxy_step_by_step.xml Sat Jan  7 13:22:30 2017
@@ -0,0 +1,236 @@
+<?xml version="1.0"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!DOCTYPE document[
+<!ENTITY sect-num '42'>
+<!ENTITY hellip   "&#x02026;" >
+]>
+
+<document next="junitsampler_tutorial.html" id="$Id$">
+
+<properties>
+  <author email="dev@jmeter.apache.org">JMeter developers</author>
+  <title>Apache JMeter HTTP(S) Test Script Recorder</title>
+</properties>
+
+<body>
+
+<section name="&sect-num;. Apache JMeter HTTP(S) Test Script Recorder" anchor="script-recorder">
+
+<p>
+This tutorial attempts to explain the exact steps for recording HTTP/HTTPS. For those new to JMeter, one easy way to create a test plan is to use the Recorder.
+</p>
+
+<subsection name="&sect-num;.1 JMeter configuration" anchor="configuration">
+
+<p>
+Since JMeter 2.10, recording has been improved to better handle embedded resources and creation of certificates on the fly.
+To enable these features, JMeter uses <code>keytool</code> utility (available in JRE/JDK) so you need to ensure your
+configuration is correct, read <a href="https://wiki.apache.org/jmeter/TestRecording210">this wiki page before starting.</a>
+</p>
+
+</subsection>
+
+<subsection name="&sect-num;.2 Basic Instructions" anchor="basic-instructions">
+
+<ol>
+  <li>Go to <code>JMETER_HOME/bin</code> and start JMeter with <code>jmeterw.cmd</code> on Windows
+      and <code>jmeter</code> on Linux/Unix</li>
+  <li>Select <code>Test Plan</code> on the tree</li>
+  <li>Right click on the <code>Test Plan</code> and add a new thread group:
+      <menuchoice>
+        <guimenuitem>Add</guimenuitem>
+        <guimenuitem>Threads (Users)</guimenuitem>
+        <guimenuitem>Thread Group</guimenuitem>
+      </menuchoice>
+      <figure width="676" height="233" image="add-threadgroup.png">Add Thread Group</figure>
+  </li>
+  <li>Select the Thread Group</li>
+  <li>Right click 
+      <menuchoice>
+        <guimenuitem>Add</guimenuitem>
+        <guimenuitem>Config Element</guimenuitem>
+        <guimenuitem>HTTP Request Defaults</guimenuitem>
+      </menuchoice>
+      <figure width="810" height="340" image="add-request-defaults.png">Add HTTP Request Defaults</figure>
+  </li>
+  <li>In new HTTP Request Defaults element:
+    <dl>
+      <dt><code>Server name</code></dt><dd>enter <code>example.com</code></dd>
+      <dt><code>Path</code></dt><dd>leave blank</dd>
+    </dl>
+    <figure width="879" height="469" image="http-config/http-request-defaults.png">HTTP Request Defaults dialog</figure>
+  </li>
+  <li>Right click on the <code>Thread Group</code> and add a recording controller:
+      <menuchoice>
+        <guimenuitem>Add</guimenuitem>
+        <guimenuitem>Logic Controller</guimenuitem>
+        <guimenuitem>Recording Controller</guimenuitem>
+      </menuchoice>
+    <figure width="766" height="332" image="add-recording-controller.png">Add Recording Controller</figure>
+  </li>
+  <li>Next, select <code>WorkBench</code></li>
+  <li>Right click on <code>WorkBench</code> and add the recorder:
+      <menuchoice>
+        <guimenuitem>Add</guimenuitem>
+        <guimenuitem>Non-Test Elements</guimenuitem>
+        <guimenuitem>HTTP(S) Test Script Recorder</guimenuitem>
+      </menuchoice>
+    <figure width="738" height="222" image="add-script-recorder.png">Add HTTP(S) Test Script Recorder</figure>
+  </li>
+  <li>On <code>HTTP(S) Test Script Recorder</code>, click the <code>Add</code> button in <code>URL Patterns to Include</code>.
+      This will create a blank entry; enter <code>.*\.html</code>.
+    <figure width="703" height="271" image="specify-url-pattern.png">Add URL pattern</figure>
+  </li>
+  <li>Right click on <code>HTTP(S) Test Script Recorder</code> and add a listener:
+      <menuchoice>
+        <guimenuitem>Add</guimenuitem>
+        <guimenuitem>Listener</guimenuitem>
+        <guimenuitem>View Results Tree</guimenuitem>
+      </menuchoice>
+    <figure width="782" height="605" image="add-results-tree.png">Add a View Results Tree</figure>
+  </li>
+  <li>Return to <code>HTTP(S) Test Script Recorder</code>, and click the <code>Start</code> button at the bottom.</li>
+</ol>
+
+<p>
+This will start the JMeter proxy server which is used to intercept the browser requests.
+A file called <code>ApacheJMeterTemporaryRootCA.crt</code> will be generated in <code>jmeter/bin</code>
+folder. Install this certificate in your browser, if you don't know how to do it,
+read <a href="component_reference.html#HTTP%28S%29_Test_Script_Recorder">Installing the JMeter CA certificate for HTTPS recording</a>
+</p>
+
+</subsection>
+
+<subsection name="&sect-num;.3 Configure your browser to use the JMeter Proxy" anchor="configue-browser">
+
+<p>
+At this point, JMeter's proxy is running. For this exercise, we will use Iceweasel/Firefox
+to view some pages on the JMeter website.
+</p>
+
+<ol>
+  <li>Start Iceweasel/Firefox, but do not close JMeter.</li>
+  <li>From the tool bar, click 
+      <menuchoice>
+        <guimenuitem>Edit</guimenuitem>
+        <guimenuitem>Preferences</guimenuitem>
+      </menuchoice> (or 
+      <menuchoice>
+        <guimenuitem>Tools</guimenuitem>
+        <guimenuitem>Preferences</guimenuitem>
+      </menuchoice> or type <code>about:preferences#advanced</code>
+      as URL). This should bring up the options.
+    <figure width="914" height="566" image="firefox-network-settings.png">Firefox Advanced Settings</figure>
+  </li>
+  <li>Select the <code>Advanced</code> tab, and <code>Network</code> tab</li>
+  <li>Click <code>Settings</code> button near the top.</li>
+  <li>On the new pop-up, check <code>Manual proxy configuration</code>. The address and
+      port fields should be enabled now.
+    <dl>
+      <dt><code>Address</code></dt><dd>enter <code>localhost</code> or the IP address of your system</dd>
+      <dt><code>Port</code></dt><dd>enter <code>8888</code>.</dd>
+    </dl>
+    <figure width="532" height="240" image="firefox-configure-proxy.png">Firefox Proxy Settings</figure>
+  </li>
+  <li>Check <code>Use this proxy server for all protocols</code></li>
+  <li>Click <code>OK</code> button. This should return you to the browser</li>
+</ol>
+
+</subsection>
+
+<subsection name="&sect-num;.4 Record your navigation" anchor="navigation-recording">
+
+<ol>
+  <li>With your browser, in the <code>Address</code> bar at the top, enter <code>http://example.com/index.html</code> (replace <code>example.com</code> with your websites address).
+  and hit the <code>enter</code> key.</li>
+  <li>Click on a few links on your sites pages.</li>
+  <li>Close your browser and bring up the JMeter window.</li>
+</ol>
+
+<p>
+Expand the Thread Group and there should be several samplers. At this point, the test plan can
+be saved as is.
+<note>If you forget to add default HTTP Request settings, you will have to manually
+delete the server name, and port.</note>
+</p>
+
+<figure width="258" height="194" image="example-recording.png">Recording Example</figure>
+<p>
+In this sample, there aren't any default request parameters. If a particular request parameter
+is required by all pages, the request defaults is where one would add the entries.
+</p>
+
+<ol>
+  <li>Select <code>Thread Group</code></li>
+  <li>Right click 
+      <menuchoice>
+        <guimenuitem>Add</guimenuitem>
+        <guimenuitem>Listener</guimenuitem>
+        <guimenuitem>Summary Report</guimenuitem>
+      </menuchoice> to add an summary listener.
+      <figure width="775" height="446" image="add-summary-report.png">Add Summary Report</figure>
+  </li>
+  <li>The Summary Listener will show some basic statistics.</li>
+  <li>Select <code>Thread Group</code> and change a few defaults:
+    <dl>
+      <dt><code>Number of Threads</code></dt><dd>enter <code>5</code></dd>
+      <dt><code>Ramp-Up Period</code></dt><dd>do not change</dd>
+      <dt><code>Loop Count</code></dt><dd>enter <code>100</code></dd>
+    </dl>
+    <figure width="357" height="288" image="example-thread-group.png">Configure Thread Group</figure>
+  </li>
+</ol>
+
+</subsection>
+
+<subsection name="&sect-num;.5 Start the test" anchor="test-start">
+
+<p>
+At this point, we are ready to run our test plan and see what happens. Save the test plan. When you're
+ready to run the test, there are two ways:
+</p>
+
+<p>
+Either use the menu and select
+  <menuchoice>
+    <guimenuitem>Run</guimenuitem>
+    <guimenuitem>Start</guimenuitem>
+  </menuchoice>
+or use the keyboard and press <keycombo><keysym>Ctrl</keysym><keysym>R</keysym></keycombo>
+</p>
+
+<p>
+  Before you start the test, select <code>Summary Report</code>. As the test runs, the statistics will change
+  until the test is done. At the end of the test, the summary report should look like this.
+  <figure width="984" height="220" image="example-summary-report.png">Example Summary Report</figure>
+</p>
+
+
+<p>
+  While the test is running, in the upper right-hand corner, there should be a green circle. When the test is done, the circle should be grey.
+  <figure width="132" height="39" image="example-running.png">Example Running</figure>
+</p>
+
+</subsection>
+
+</section>
+
+</body>
+
+</document>

Added: jmeter/trunk/xdocs/usermanual/junitsampler_tutorial.xml
URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/junitsampler_tutorial.xml?rev=1777783&view=auto
==============================================================================
--- jmeter/trunk/xdocs/usermanual/junitsampler_tutorial.xml (added)
+++ jmeter/trunk/xdocs/usermanual/junitsampler_tutorial.xml Sat Jan  7 13:22:30 2017
@@ -0,0 +1,239 @@
+<?xml version="1.0"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!DOCTYPE document[
+<!ENTITY sect-num '42'>
+<!ENTITY hellip   "&#x02026;" >
+]>
+
+<document prev="jmeter_proxy_step_by_step.html" id="$Id$">
+
+<properties>
+  <author email="dev@jmeter.apache.org">JMeter developers</author>
+  <title>JUnit Sampler Tutorial</title>
+</properties>
+
+<body>
+
+<section name="&sect-num;. JUnit Sampler Tutorial" anchor="junit">
+
+<p>
+This tutorial attempts to explain the basic design, functionality and usage of the new JUnit Sampler for JMeter.
+The sampler was introduced in version 2.1.2 release of JMeter. Earlier releases do not have the sampler.
+</p>
+
+<subsection name="&sect-num;.1 Design" anchor="design">
+
+<p>
+The current implementation supports standard JUnit convention and extensions, like <code>oneTimeSetUp</code>
+and <code>oneTimeTearDown</code>. Other features can be added on request. The sampler works like the JavaSampler
+with some differences.
+</p>
+
+<ul>
+  <li>Rather than use JMeter's test interface, it scans the jar files for classes extending JUnit's
+      <code>TestCase</code> class. This means any class or subclass.</li>
+  <li>JUnit test jar files are copied to <code>jmeter/lib/junit</code> instead of
+      <code>jmeter/lib</code></li>
+  <li>JUnit sampler does not use name/value pairs for configuration. The sampler assumes
+      <code>setUp</code> and <code>tearDown</code> will configure the test correctly.
+      <note>Note: <code>setUp</code> and <code>tearDown</code> methods must be declared <code>public</code>,
+       so that JMeter can use it.</note>
+  </li>
+  <li>The sampler measures the elapsed time only for the test method and does not include
+      <code>setUp</code> and <code>tearDown</code>.
+  </li>
+  <li>Each time the test method is called, JMeter will pass the result to the listeners.</li>
+  <li>Support for <code>oneTimeSetUp</code> and <code>oneTimeTearDown</code> is done as a method.
+      Since JMeter is multi-threaded, we cannot call <code>oneTimeSetUp</code>/<code>oneTimeTearDown</code>
+      the same way maven does it.</li>
+  <li>The sampler reports unexpected exceptions as errors.</li>
+</ul>
+
+</subsection>
+
+<subsection name="&sect-num;.2 Functionality" anchor="functionality">
+
+<p>
+Here is a description of the functionality.
+</p>
+
+<dl>
+  <dt>Name</dt><dd>name for the sample. This is the same as all JMeter samplers.</dd>
+  <dt>Package Filter</dt><dd>provides a way to filter the classes by package name.</dd>
+  <dt>Classname</dt><dd>the name of the class to test. The sampler will scan the jar files in
+      <code>jmeter/lib/ext</code> and <code>jmeter/lib/junit</code> for classes extending
+      JUnit's <code>TestCase</code>.</dd>
+  <dt>Constructor String</dt><dd>a string to pass to the string constructor of the test class.</dd>
+  <dt>Test Method</dt><dd>the name of the method to test in the sampler.</dd>
+  <dt>Success message</dt><dd>a descriptive message indicating what success means.</dd>
+  <dt>Success code</dt><dd>an unique code indicating the test was successful.</dd>
+  <dt>Failure message</dt><dd>a descriptive message indicating what failure means.</dd>
+  <dt>Failure code</dt><dd>an unique code indicating the test failed</dd>
+  <dt>Error message</dt><dd>a description for errors</dd>
+  <dt>Error code</dt><dd>some code for errors. Does not need to be unique</dd>
+  <dt>Do not call <code>setUp</code> and <code>tearDown</code></dt><dd>set the sampler not
+      to call <code>setUp</code> and <code>tearDown</code>. By default, <code>setUp</code> and
+      <code>tearDown</code> should be called. Not calling those methods could affect the test and
+      make it inaccurate. This option should be used with caution.
+      <note>If the selected method is <code>oneTimeSetUp</code> or <code>oneTimeTearDown</code>,
+      this option should be checked.</note></dd>
+  <dt>Append assertion error</dt><dd>By default, the sampler will not append the assert failures
+      to the failure message. To see the message in the result tree, check the option.</dd>
+  <dt>Append runtime exception</dt><dd>By default, the sampler will not append the exceptions
+      to the failure message. To see the stacktrace, check the option</dd>
+</dl>
+
+<figure width="397" height="536" image="junit_sampler.png">JUnit Request</figure>
+
+<p>
+The current implementation of the sampler will try to create an instance using the string constructor
+first. If the test class does not declare a string constructor, the sampler will look for an empty
+constructor. Example below:
+</p>
+
+<example title="Constructor Examples" anchor="constructor-examples">
+Empty Constructor:
+<source>
+public class myTestCase {
+  public myTestCase() {}
+}
+</source>
+
+String Constructor:
+<source>
+public class myTestCase {
+  public myTestCase(String text) {
+    super(text);
+  }
+}
+</source>
+</example>
+
+<p>
+By default, JMeter will provide some default values for the success/failure code and message.
+Users should define a set of unique success and failure codes and use them uniformly across all tests.
+</p>
+
+</subsection>
+
+<subsection name="&sect-num;.3 Usage" anchor="usage">
+
+<p>
+Here is a short step-by-step.
+</p>
+
+<ol>
+  <li>Write your JUnit test and jar the classes</li>
+  <li>Copy and paste the jar files into <code>jmeter/lib/junit</code> directory</li>
+  <li>Start JMeter</li>
+  <li>Select <code>Test Plan</code></li>
+  <li>Right click
+     <menuchoice>
+       <guimenuitem>Add</guimenuitem>
+       <guimenuitem>Thread Group</guimenuitem>
+     </menuchoice></li>
+  <li>Select <code>Thread Group</code></li>
+  <li>Right click
+      <menuchoice>
+        <guimenuitem>Add</guimenuitem>
+        <guimenuitem>Sampler</guimenuitem>
+        <guimenuitem>JUnit Request</guimenuitem>
+      </menuchoice></li>
+  <li>Enter <code>my unit test</code> in the name</li>
+  <li>Enter the package of your JUnit test</li>
+  <li>Select the class you want to test</li>
+  <li>Select a method to test</li>
+  <li>Enter <code>test successful</code> in success message</li>
+  <li>Enter <code>1000</code> in success code</li>
+  <li>Enter <code>test failed</code> in failure message</li>
+  <li>Enter <code>0001</code> in failure code</li>
+  <li>Select the Thread Group</li>
+  <li>Right click
+      <menuchoice>
+        <guimenuitem>Add</guimenuitem>
+        <guimenuitem>Listener</guimenuitem>
+        <guimenuitem>View Results Tree</guimenuitem>
+      </menuchoice></li>
+</ol>
+
+<p>
+One benefit of the JUnit sampler is it allows the user to select any method from a variety
+of unit tests to create a test plan. This should reduce the amount of code an user needs to
+write to create a variety of test scenarios. From a basic set of test methods, different
+sequences and tests can be created using JMeter's GUI.
+</p>
+
+<p>
+For example:
+</p>
+
+<p>
+Test Plan1
+<source>
+TestCase1.testImportCustomer
+TestCase2.testUpdateRandomCustomer
+TestCase1.testSelect100
+TestCase2.testUpdateOrder
+TestCase1.testSelect1000
+</source>
+</p>
+
+<p>
+TestPlan2
+<source>
+TestCase1.testImportCustomer
+TestCase1.testSelect100
+TestCase1.testSelect1000
+TestCase2.testAdd100Customers
+</source>
+</p>
+
+</subsection>
+
+<subsection name="&sect-num;.4 General Guidelines" anchor="guidelines">
+
+<p>
+Here are some general guidelines for writing JUnit tests so they work well with JMeter. Since JMeter
+runs multi-threaded, it is important to keep certain things in mind.
+</p>
+
+<ul>
+  <li>Write the <code>setUp</code> and <code>tearDown</code> methods so they are thread safe. This
+      generally means avoid using static members.</li>
+  <li>Make the test methods discrete units of work and not long sequences of actions. By keeping
+      the test method to a discrete operation, it makes it easier to combine test methods to create
+      new test plans.</li>
+  <li>Avoid making test methods depend on each other. Since JMeter allows arbitrary sequencing of
+      test methods, the runtime behavior is different than the default JUnit behavior.</li>
+  <li>If a test method is configurable, be careful about where the properties are stored. Reading
+      the properties from the Jar file is recommended.</li>
+  <li>Each sampler creates an instance of the test class, so write your test so the setup happens
+      in <code>oneTimeSetUp</code> and <code>oneTimeTearDown</code>.</li>
+  <li>If you select a class and no methods show up, it means the sampler had a problem creating an
+      instance of the test class. The best way to debug this is to add some <code>System.out</code>
+      to your class constructor and see what is happening.</li>
+</ul>
+
+</subsection>
+
+</section>
+
+</body>
+
+</document>