<!DOCTYPE HTML>
<html lang="en">
<head>
<!-- Generated by javadoc (17) -->
<title>JavaSamplerClient (Apache JMeter dist API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="description" content="declaration: package: org.apache.jmeter.protocol.java.sampler, interface: JavaSamplerClient">
<meta name="generator" content="javadoc/ClassWriterImpl">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.1.min.js"></script>
<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
</head>
<body class="class-declaration-page">
<script type="text/javascript">var evenRowColor = "even-row-color";
var oddRowColor = "odd-row-color";
var tableTab = "table-tab";
var activeTableTab = "active-table-tab";
var pathtoroot = "../../../../../../";
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<div class="flex-box">
<header role="banner" class="flex-header">
<nav role="navigation">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="top-nav" id="navbar-top">
<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
<div class="about-language"><b>Apache JMeter</b></div>
<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
<li><a href="../../../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="nav-bar-cell1-rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html#class">Help</a></li>
</ul>
</div>
<div class="sub-nav">
<div>
<ul class="sub-nav-list">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-summary">Method</a></li>
</ul>
<ul class="sub-nav-list">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Constr&nbsp;|&nbsp;</li>
<li><a href="#method-detail">Method</a></li>
</ul>
</div>
<div class="nav-list-search"><label for="search-input">SEARCH:</label>
<input type="text" id="search-input" value="search" disabled="disabled">
<input type="reset" id="reset-button" value="reset" disabled="disabled">
</div>
</div>
<!-- ========= END OF TOP NAVBAR ========= -->
<span class="skip-nav" id="skip-navbar-top"></span></nav>
</header>
<div class="flex-content">
<main role="main">
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">org.apache.jmeter.protocol.java.sampler</a></div>
<h1 title="Interface JavaSamplerClient" class="title">Interface JavaSamplerClient</h1>
</div>
<section class="class-description" id="class-description">
<dl class="notes">
<dt>All Known Implementing Classes:</dt>
<dd><code><a href="AbstractJavaSamplerClient.html" title="class in org.apache.jmeter.protocol.java.sampler">AbstractJavaSamplerClient</a></code>, <code><a href="../test/JavaTest.html" title="class in org.apache.jmeter.protocol.java.test">JavaTest</a></code>, <code><a href="../test/SleepTest.html" title="class in org.apache.jmeter.protocol.java.test">SleepTest</a></code></dd>
</dl>
<hr>
<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">JavaSamplerClient</span></div>
<div class="block">This interface defines the interactions between the JavaSampler and external
 Java programs which can be executed by JMeter. Any Java class which wants to
 be executed as a JMeter test must implement this interface (either directly
 or indirectly through AbstractJavaSamplerClient).
 <p>
 JMeter will create one instance of a JavaSamplerClient implementation for
 each user/thread in the test. Additional instances may be created for
 internal use by JMeter (for example, to find out what parameters are
 supported by the client).
 <p>
 When the test is started, setupTest() will be called on each thread's
 JavaSamplerClient instance to initialize the client. Then runTest() will be
 called for each iteration of the test. Finally, teardownTest() will be called
 to allow the client to do any necessary clean-up.
 <p>
 The JMeter JavaSampler GUI allows a list of parameters to be defined for the
 test. These are passed to the various test methods through the
 <a href="JavaSamplerContext.html" title="class in org.apache.jmeter.protocol.java.sampler"><code>JavaSamplerContext</code></a>. A list of default parameters can be defined
 through the getDefaultParameters() method. These parameters and any default
 values associated with them will be shown in the GUI. Users can add other
 parameters as well.
 <p>
 When possible, Java tests should extend <a href="AbstractJavaSamplerClient.html" title="class in org.apache.jmeter.protocol.java.sampler"><code>AbstractJavaSamplerClient</code></a> rather than implementing JavaSamplerClient
 directly. This should protect your tests from future changes to the
 interface. While it may be necessary to make changes to the JavaSamplerClient
 interface from time to time (therefore requiring changes to any
 implementations of this interface), we intend to make this abstract class
 provide reasonable default implementations of any new methods so that
 subclasses do not necessarily need to be updated for new versions.
 Implementing JavaSamplerClient directly will continue to be supported for
 cases where extending this class is not possible (for example, when the
 client class is already a subclass of some other class).
 <p>
 See <a href="../test/SleepTest.html" title="class in org.apache.jmeter.protocol.java.test"><code>SleepTest</code></a> for an example of
 how to implement this interface.</div>
</section>
<section class="summary">
<ul class="summary-list">
<!-- ========== METHOD SUMMARY =========== -->
<li>
<section class="method-summary" id="method-summary">
<h2>Method Summary</h2>
<div id="method-summary-table">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
<div id="method-summary-table.tabpanel" role="tabpanel">
<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
<div class="table-header col-first">Modifier and Type</div>
<div class="table-header col-second">Method</div>
<div class="table-header col-last">Description</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../../../config/Arguments.html" title="class in org.apache.jmeter.config">Arguments</a></code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getDefaultParameters()" class="member-name-link">getDefaultParameters</a>()</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Provide a list of parameters which this test supports.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../../../samplers/SampleResult.html" title="class in org.apache.jmeter.samplers">SampleResult</a></code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#runTest(org.apache.jmeter.protocol.java.sampler.JavaSamplerContext)" class="member-name-link">runTest</a><wbr>(<a href="JavaSamplerContext.html" title="class in org.apache.jmeter.protocol.java.sampler">JavaSamplerContext</a>&nbsp;context)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Perform a single sample for each iteration.</div>
</div>
<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#setupTest(org.apache.jmeter.protocol.java.sampler.JavaSamplerContext)" class="member-name-link">setupTest</a><wbr>(<a href="JavaSamplerContext.html" title="class in org.apache.jmeter.protocol.java.sampler">JavaSamplerContext</a>&nbsp;context)</code></div>
<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Do any initialization required by this client.</div>
</div>
<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#teardownTest(org.apache.jmeter.protocol.java.sampler.JavaSamplerContext)" class="member-name-link">teardownTest</a><wbr>(<a href="JavaSamplerContext.html" title="class in org.apache.jmeter.protocol.java.sampler">JavaSamplerContext</a>&nbsp;context)</code></div>
<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
<div class="block">Do any clean-up required by this test at the end of a test run.</div>
</div>
</div>
</div>
</div>
</section>
</li>
</ul>
</section>
<section class="details">
<ul class="details-list">
<!-- ============ METHOD DETAIL ========== -->
<li>
<section class="method-details" id="method-detail">
<h2>Method Details</h2>
<ul class="member-list">
<li>
<section class="detail" id="setupTest(org.apache.jmeter.protocol.java.sampler.JavaSamplerContext)">
<h3>setupTest</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">setupTest</span><wbr><span class="parameters">(<a href="JavaSamplerContext.html" title="class in org.apache.jmeter.protocol.java.sampler">JavaSamplerContext</a>&nbsp;context)</span></div>
<div class="block">Do any initialization required by this client. It is generally
 recommended to do any initialization such as getting parameter values in
 the setupTest method rather than the runTest method in order to add as
 little overhead as possible to the test.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>context</code> - the context to run with. This provides access to
            initialization parameters.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="runTest(org.apache.jmeter.protocol.java.sampler.JavaSamplerContext)">
<h3>runTest</h3>
<div class="member-signature"><span class="return-type"><a href="../../../samplers/SampleResult.html" title="class in org.apache.jmeter.samplers">SampleResult</a></span>&nbsp;<span class="element-name">runTest</span><wbr><span class="parameters">(<a href="JavaSamplerContext.html" title="class in org.apache.jmeter.protocol.java.sampler">JavaSamplerContext</a>&nbsp;context)</span></div>
<div class="block">Perform a single sample for each iteration. This method returns a
 <code>SampleResult</code> object. <code>SampleResult</code> has many
 fields which can be used. At a minimum, the test should use
 <code>SampleResult.sampleStart</code> and
 <code>SampleResult.sampleEnd</code>to set the time that the test
 required to execute. It is also a good idea to set the sampleLabel and
 the successful flag.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>context</code> - the context to run with. This provides access to
            initialization parameters.</dd>
<dt>Returns:</dt>
<dd>a SampleResult giving the results of this sample.</dd>
<dt>See Also:</dt>
<dd>
<ul class="see-list-long">
<li><a href="../../../samplers/SampleResult.html#sampleStart()"><code>SampleResult.sampleStart()</code></a></li>
<li><a href="../../../samplers/SampleResult.html#sampleEnd()"><code>SampleResult.sampleEnd()</code></a></li>
<li><a href="../../../samplers/SampleResult.html#setSuccessful(boolean)"><code>SampleResult.setSuccessful(boolean)</code></a></li>
<li><a href="../../../samplers/SampleResult.html#setSampleLabel(java.lang.String)"><code>SampleResult.setSampleLabel(String)</code></a></li>
</ul>
</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="teardownTest(org.apache.jmeter.protocol.java.sampler.JavaSamplerContext)">
<h3>teardownTest</h3>
<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">teardownTest</span><wbr><span class="parameters">(<a href="JavaSamplerContext.html" title="class in org.apache.jmeter.protocol.java.sampler">JavaSamplerContext</a>&nbsp;context)</span></div>
<div class="block">Do any clean-up required by this test at the end of a test run.</div>
<dl class="notes">
<dt>Parameters:</dt>
<dd><code>context</code> - the context to run with. This provides access to
            initialization parameters.</dd>
</dl>
</section>
</li>
<li>
<section class="detail" id="getDefaultParameters()">
<h3>getDefaultParameters</h3>
<div class="member-signature"><span class="return-type"><a href="../../../config/Arguments.html" title="class in org.apache.jmeter.config">Arguments</a></span>&nbsp;<span class="element-name">getDefaultParameters</span>()</div>
<div class="block">Provide a list of parameters which this test supports. Any parameter
 names and associated values returned by this method will appear in the
 GUI by default so the user doesn't have to remember the exact names. The
 user can add other parameters which are not listed here. If this method
 returns null then no parameters will be listed. If the value for some
 parameter is null then that parameter will be listed in the GUI with an
 empty value.</div>
<dl class="notes">
<dt>Returns:</dt>
<dd>a specification of the parameters used by this test which should
         be listed in the GUI, or null if no parameters should be listed.</dd>
</dl>
</section>
</li>
</ul>
</section>
</li>
</ul>
</section>
<!-- ========= END OF CLASS DATA ========= -->
</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &copy; 1998-2024 Apache Software Foundation. All Rights Reserved.</small></p>
</footer>
</div>
</div>
</body>
</html>
