<!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: Building a Simple Database Test Plan</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="https://fonts.googleapis.com/css?family=Merriweather:400normal" rel="stylesheet" type="text/css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="../css/new-style.css">
<link rel="apple-touch-icon-precomposed" href="../images/apple-touch-icon.png">
<link rel="icon" href="../images/favicon.png">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="../images/mstile-144x144.png">
<meta name="theme-color" content="#ffffff">
</head>
<body role="document">
<a href="#content" class="hidden">Main content</a>
<div class="header">
<!--
            APACHE LOGO
          -->
<div>
<a href="https://www.apache.org"><img title="Apache Software Foundation" class="asf-logo logo" src="../images/asf-logo.svg" alt="Logo ASF"></a>
</div>
<!--
              PROJECT LOGO
            -->
<div>
<a href="https://jmeter.apache.org/"><img class="logo" src="../images/logo.svg" alt="Apache JMeter"></a>
</div>
<div class="banner">
<a href="https://www.apache.org/events/current-event.html"><img src="https://www.apache.org/events/current-event-234x60.png" alt="Current Apache event teaser"></a>
<div class="clear"></div>
</div>
</div>
<div class="nav">
<ul class="menu">
<li onClick="return true">
<div class="menu-title">About</div>
<ul>
<li>
<a href="../index.html">Overview</a>
</li>
<li>
<a href="https://www.apache.org/licenses/">License</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Download</div>
<ul>
<li>
<a href="../download_jmeter.cgi">Download Releases</a>
</li>
<li>
<a href="../changes.html">Release Notes</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Documentation</div>
<ul>
<li>
<a href="../usermanual/get-started.html">Get Started</a>
</li>
<li>
<a href="../usermanual/index.html">User Manual</a>
</li>
<li>
<a href="../usermanual/best-practices.html">Best Practices</a>
</li>
<li>
<a href="../usermanual/component_reference.html">Component Reference</a>
</li>
<li>
<a href="../usermanual/functions.html">Functions Reference</a>
</li>
<li>
<a href="../usermanual/properties_reference.html">Properties Reference</a>
</li>
<li>
<a href="../changes_history.html">Change History</a>
</li>
<li>
<a href="../api/index.html">Javadocs</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/Home">JMeter Wiki</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterFAQ">FAQ (Wiki)</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Tutorials</div>
<ul>
<li>
<a href="../usermanual/jmeter_distributed_testing_step_by_step.html">Distributed Testing</a>
</li>
<li>
<a href="../usermanual/jmeter_proxy_step_by_step.html">Recording Tests</a>
</li>
<li>
<a href="../usermanual/junitsampler_tutorial.html">JUnit Sampler</a>
</li>
<li>
<a href="../usermanual/jmeter_accesslog_sampler_step_by_step.html">Access Log Sampler</a>
</li>
<li>
<a href="../usermanual/jmeter_tutorial.html">Extending JMeter</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Community</div>
<ul>
<li>
<a href="../issues.html">Issue Tracking</a>
</li>
<li>
<a href="https://www.apache.org/security/">Security</a>
</li>
<li>
<a href="../mail.html">Mailing Lists</a>
</li>
<li>
<a href="../svnindex.html">Source Repositories</a>
</li>
<li>
<a href="../building.html">Building and Contributing</a>
</li>
<li>
<a href="https://projects.apache.org/project.html?jmeter">Project info at Apache</a>
</li>
<li>
<a href="https://cwiki.apache.org/confluence/display/JMETER/JMeterCommitters">Contributors</a>
</li>
</ul>
</li>
</ul>
<ul class="menu">
<li onClick="return true">
<div class="menu-title">Foundation</div>
<ul>
<li>
<a href="https://www.apache.org/">The Apache Software Foundation (ASF)</a>
</li>
<li>
<a href="https://www.apache.org/foundation/getinvolved.html">Get Involved in the ASF</a>
</li>
<li>
<a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
</li>
<li>
<a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
</ul>
</li>
</ul>
</div>
<div class="main" id="content">
<div class="social-media">
<ul class="social-media-links">
<li class="twitter">
<a href="https://twitter.com/ApacheJMeter" title="Follow us on Twitter"><i class="fa fa-twitter" aria-hidden="true"></i>Twitter</a>
</li>
<li class="github">
<a href="https://github.com/apache/jmeter" title="Fork us on github"><i class="fa fa-github" aria-hidden="true"></i>github</a>
</li>
</ul>
</div>
<ul class="pagelinks">
<li>
<a href="build-adv-web-test-plan.html">&lt; Prev</a>
</li>
<li>
<a href="../index.html">Index</a>
</li>
<li>
<a href="build-ftp-test-plan.html">Next &gt;</a>
</li>
</ul>
<div class="section">
<h1 id="building">6. Building a Database Test Plan<a class="sectionlink" href="#building" title="Link to here">&para;</a>
</h1>

<p>In this section, you will learn how to create a basic
<a href="build-test-plan.html">Test Plan</a> to test a database server.
You will create fifty users that send 2 SQL requests to the database server.
Also, you will tell the users to run their tests 100 times. So, the total number
of requests is (50 users) x (2 requests) x (repeat 100 times) = 10'000 JDBC requests.
To construct the Test Plan, you will use the following elements:
<a href="test_plan.html#thread_group">Thread Group</a>,
<a href="../usermanual/component_reference.html#JDBC_Request">JDBC Request</a>, <a href="../usermanual/component_reference.html#Summary_Report">Summary Report</a>.</p>


<div class="clear"></div>
<div class="note">This example uses the MySQL database driver.
To use this driver, its containing <span class="code">.jar</span> file (ex. <span class="code">mysql-connector-java-X.X.X-bin.jar</span>) must be copied to the JMeter
<span class="code">./lib</span> directory (see <a href="get-started.html#classpath">JMeter's Classpath</a>
for more details).</div>
<div class="clear"></div>


</div>
<div class="section">
<h1 id="adding_users">6.1 Adding Users<a class="sectionlink" href="#adding_users" title="Link to here">&para;</a>
</h1>

<p>The first step you want to do with every JMeter Test Plan is to add a
<a href="test_plan.html#thread_group">Thread Group</a> element. The Thread Group
tells JMeter the number of users you want to simulate, how often the users should
send requests, and how many requests they should send.</p>


<p>Go ahead and add the ThreadGroup element by first selecting the Test Plan,
clicking your right mouse button to get the <span class="code">Add</span> menu, and then select
<span class="menuchoice"><span class="guimenuitem">Add</span>&nbsp;&rarr;&nbsp;<span class="guimenuitem">ThreadGroup</span></span>.</p>


<p>You should now see the Thread Group element under Test Plan. If you do not
see the element, then <em>expand</em> the Test Plan tree by clicking on the
Test Plan element.</p>


<p>Next, you need to modify the default properties. Select the Thread Group element
in the tree, if you have not already selected it. You should now see the Thread
Group Control Panel in the right section of the JMeter window (see Figure 6.1
below)</p>


<figure>
<a href="../images/screenshots/jdbctest/threadgroup1.png"><img src="../images/screenshots/jdbctest/threadgroup1.png" width="" height="" alt="
Figure 6.1. Thread Group with Default Values"></a>
<figcaption>
Figure 6.1. Thread Group with Default Values</figcaption>
</figure>


<p>Start by providing a more descriptive name for our Thread Group. In the name
field, enter <span class="code">JDBC Users</span>.</p>


<div class="clear"></div>
<div class="note">You will need a valid database, database table, and user-level access to that
table. In the example shown here, the database is '<span class="code">cloud</span>' and the table name is
'<span class="code">vm_instance</span>'.</div>
<div class="clear"></div>


<p>Next, increase the number of users to <span class="code">50</span>.</p>


<p>In the next field, the Ramp-Up Period, leave the value of <span class="code">10</span>
seconds.  This property tells JMeter how long to delay between starting each
user. For example, if you enter a Ramp-Up Period of 10 seconds, JMeter will
finish starting all of your users by the end of the 10 seconds.  So, if we have
50 users and a 10 second Ramp-Up Period, then the delay between starting users
would be 200 milliseconds (10 seconds / 50 users = 0.2 second per user).  If you set the
value to 0, then JMeter will immediately start all of your users.</p>


<p>Finally, enter a value of <span class="code">100</span> in
the Loop Count field.  This property tells JMeter how many times to repeat your
test. To have JMeter repeatedly run your Test Plan, select the Forever
checkbox.</p>


<div class="clear"></div>
<div class="note">In most applications, you have to manually accept
changes you make in a Control Panel.  However, in JMeter, the Control Panel
automatically accepts your changes as you make them.  If you change the
name of an element, the tree will be updated with the new text after you
leave the Control Panel (for example, when selecting another tree element).</div>
<div class="clear"></div>


<p>See Figure 6.2 for the completed JDBC Users Thread Group.</p>


<figure>
<a href="../images/screenshots/jdbctest/threadgroup2.png"><img src="../images/screenshots/jdbctest/threadgroup2.png" width="" height="" alt="
Figure 6.2. JDBC Users Thread Group"></a>
<figcaption>
Figure 6.2. JDBC Users Thread Group</figcaption>
</figure>


</div>
<div class="section">
<h1 id="adding_requests">6.2 Adding JDBC Requests<a class="sectionlink" href="#adding_requests" title="Link to here">&para;</a>
</h1>

<p>Now that we have defined our users, it is time to define the tasks that they
will be performing.  In this section, you will specify the JDBC requests to
perform.</p>


<p>Begin by selecting the <span class="code">JDBC Users</span> element. Click your right mouse button
to get the <b>Add</b> menu, and then select <span class="menuchoice"><span class="guimenuitem">Add</span>&nbsp;&rarr;&nbsp;<span class="guimenuitem">Config Element</span>&nbsp;&rarr;&nbsp;<span class="guimenuitem">JDBC Connection Configuration</span></span>.
Then, select this new element to view its Control Panel (see Figure 6.3).</p>


<p>Set up the following fields (these assume we will be using a MySQL database called '<span class="code">cloud</span>'):</p>

<ul>

<li>Variable name (here: <span class="code">myDatabase</span>) bound to pool. This needs to uniquely identify the configuration. It is used by the JDBC Sampler to identify the configuration to be used.</li>

<li>Database URL: <span class="code">jdbc:mysql://ipOfTheServer:3306/cloud</span>
</li>

<li>JDBC Driver class: <span class="code">com.mysql.jdbc.Driver</span>
</li>

<li>Username: <em>the username of database</em>
</li>

<li>Password: <em>password for the username</em>
</li>

</ul>

<p>The other fields on the screen can be left as the defaults.</p>

<p>JMeter creates a database connection pool with the configuration settings as specified in the Control Panel.
The pool is referred to in JDBC Requests in the '<span class="code">Variable Name</span>' field.
Several different JDBC Configuration elements can be used, but they must have unique names.
Every JDBC Request must refer to a JDBC Configuration pool.
More than one JDBC Request can refer to the same pool.
</p>

<figure>
<a href="../images/screenshots/jdbctest/jdbc-config.png"><img src="../images/screenshots/jdbctest/jdbc-config.png" width="" height="" alt="
Figure 6.3. JDBC Configuration"></a>
<figcaption>
Figure 6.3. JDBC Configuration</figcaption>
</figure>


<p>Selecting the JDBC Users element again. Click your right mouse button
to get the <b>Add</b> menu, and then select <span class="menuchoice"><span class="guimenuitem">Add</span>&nbsp;&rarr;&nbsp;<span class="guimenuitem">Sampler</span>&nbsp;&rarr;&nbsp;<span class="guimenuitem">JDBC Request</span></span>.
Then, select this new element to view its Control Panel (see Figure 6.4).</p>


<figure>
<a href="../images/screenshots/jdbctest/JDBCRequest.png"><img src="../images/screenshots/jdbctest/JDBCRequest.png" width="" height="" alt="
Figure 6.4. JDBC Request"></a>
<figcaption>
Figure 6.4. JDBC Request</figcaption>
</figure>


<p>In our Test Plan, we will make two JDBC requests. The first one is for
select all 'Running' VM instances, and the second is to select 'Expunging' VM instance (obviously you should
change these to examples appropriate for your particular database). These
are illustrated below.</p>


<div class="clear"></div>
<div class="note">JMeter sends requests in the order that you add them to the tree.</div>
<div class="clear"></div>


<p>Start by editing the following properties (see Figure 6.5):
<ul>

<li>Change the Name to '<span class="code">VM Running</span>'.</li>

<li>Enter the Pool Name: '<span class="code">myDatabase</span>' (same as in the configuration element)</li>

<li>Enter the SQL Query String field.</li>

<li>Enter the Parameter values field with '<span class="code">Running</span>' value.</li>

<li>Enter the Parameter types with '<span class="code">VARCHAR</span>'.</li>

</ul>

</p>


<figure>
<a href="../images/screenshots/jdbctest/JDBCRequest2.png"><img src="../images/screenshots/jdbctest/JDBCRequest2.png" width="" height="" alt="
Figure 6.5. JDBC Request for the first SQL request"></a>
<figcaption>
Figure 6.5. JDBC Request for the first SQL request</figcaption>
</figure>


<p>Next, add the second JDBC Request and edit the following properties (see
Figure 6.6):
<ul>

<li>Change the Name to '<span class="code">VM Expunging</span>'.</li>

<li>Change the value of Parameter values to '<span class="code">Expunging</span>'.</li>

</ul>

</p>


<figure>
<a href="../images/screenshots/jdbctest/JDBCRequest3.png"><img src="../images/screenshots/jdbctest/JDBCRequest3.png" width="" height="" alt="
Figure 6.6. JDBC Request for the second request"></a>
<figcaption>
Figure 6.6. JDBC Request for the second request</figcaption>
</figure>


</div>
<div class="section">
<h1 id="adding_listener">6.3 Adding a Listener to View/Store the Test Results<a class="sectionlink" href="#adding_listener" title="Link to here">&para;</a>
</h1>

<p>The final element you need to add to your Test Plan is a
<a href="component_reference.html#listeners">Listener</a>. This element is
responsible for storing all of the results of your JDBC requests in a file
and presenting the results.</p>


<p>Select the <i>JDBC Users</i> element and add a <a href="../usermanual/component_reference.html#Summary_Report">Summary Report</a>
listener (<span class="menuchoice"><span class="guimenuitem">Add</span>&nbsp;&rarr;&nbsp;<span class="guimenuitem">Listener</span>&nbsp;&rarr;&nbsp;<span class="guimenuitem">Summary Report</span></span>).</p>


<p>Save the test plan, and run the test with the menu
<span class="menuchoice"><span class="guimenuitem">Run</span>&nbsp;&rarr;&nbsp;<span class="guimenuitem">Start</span></span> or
<span class="keycombo"><span class="keysym">Ctrl</span>&nbsp;+&nbsp;<span class="keysym">R</span></span>

</p>


<p>The listener shows the results.</p>


<figure>
<a href="../images/screenshots/jdbctest/jdbc-results.png"><img src="../images/screenshots/jdbctest/jdbc-results.png" width="" height="" alt="
Figure 6.7. Graph results Listener"></a>
<figcaption>
Figure 6.7. Graph results Listener</figcaption>
</figure>


</div>
<ul class="pagelinks">
<li>
<a href="build-adv-web-test-plan.html">&lt; Prev</a>
</li>
<li>
<a href="../index.html">Index</a>
</li>
<li>
<a href="build-ftp-test-plan.html">Next &gt;</a>
</li>
</ul>
<div class="share-links">
      Share this page:
      <ul>
<li class="fb">
<a data-social-url="https://facebook.com/sharer/sharer.php?u=" title="Share on facebook"><i class="fa fa-facebook" aria-hidden="true"></i>share</a>
</li>
<li class="twitter">
<a data-social-url="https://twitter.com/intent/tweet?url=" title="Tweet on twitter"><i class="fa fa-twitter" aria-hidden="true"></i>tweet</a>
</li>
</ul>
</div>
<a href="#top" id="topButton">Go to top</a>
</div>
<div class="footer">
<div class="copyright">
            Copyright &copy;
            1999 &ndash;
            2020
            , Apache Software Foundation
          </div>
<div class="trademarks">Apache, Apache JMeter, JMeter, the Apache
            feather, and the Apache JMeter logo are
            trademarks of the
            Apache Software Foundation.
          </div>
</div>
<script>(function(){
            "use strict";
            // enable 'go to top' button functionality
            document.addEventListener('scroll', function() {
                if (document.body.scrollTop > 500 || document.documentElement.scrollTop > 500) {
                    document.getElementById("topButton").style.display = "block";
                } else {
                    document.getElementById("topButton").style.display = "none";
                }
            });
            // fill in the current location into social links on this page.
            var as = document.getElementsByTagName('a');
            var loc = document.location.href;
            if (!loc.toLowerCase().startsWith('http')) {
                return;
            }
            for (var i=0; i<as.length; i++) {
                var href = as[i].getAttribute('data-social-url');
                if (href !== null) {
                    as[i].href = href + encodeURIComponent(loc);
                }
            }
        })();</script>
</body>
</html>
