Development
Project
The Maven project will need to include a couple of jar files which can be found in the folder:
C:\tools\jakarta-jmeter-2.2\lib\ext
Maven 2
Install the JMeter jar files into the Maven repository:
cd C:\tools\jakarta-jmeter-2.2\lib\ext
mvn install:install-file -DgroupId=jakarta-jmeter -DartifactId=apachejmeter_core -Dversion=2.2 -Dfile=ApacheJMeter_core.jar -Dpackaging=jar -DgeneratePom=true
mvn install:install-file -DgroupId=jakarta-jmeter -DartifactId=apachejmeter_java -Dversion=2.2 -Dfile=ApacheJMeter_java.jar -Dpackaging=jar -DgeneratePom=true
Add the following dependencies to your pom.xml
:
<dependency>
<groupId>jakarta-jmeter</groupId>
<artifactId>apachejmeter_core</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>jakarta-jmeter</groupId>
<artifactId>apachejmeter_java</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>logkit</groupId>
<artifactId>logkit</artifactId>
<version>1.2</version>
</dependency>
The logkit
dependency is also required for JMeter.
Writing a Test
To test a java class you need to derive the test class from
AbstractJavaSamplerClient
and implement the runTest
function:
public final class MySampler extends AbstractJavaSamplerClient {
/*
* If you want to pass parameters to your class then implement this function to tell JMeter
* which parameters are valid.
* See notes in the next section for more information.
*/
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("repository-path", null);
return params;
}
public void setupTest(final JavaSamplerContext context) {
/*
* To get the parameter values...
*/
String repositoryPath = context.getParameter("repository-path");
}
public SampleResult runTest(final JavaSamplerContext context) {
SampleResult results = new SampleResult();
results.sampleStart();
// Do the work...
// If you want to do some logging...
getLogger().debug("this will appear in jmeter.log");
results.setSuccessful(true);
results.setSampleLabel("this will appear in a jmeter table");
results.sampleEnd();
return results;
}
public void teardownTest(final JavaSamplerContext context) {
}
}
Running the Test
Create the jar file and copy to:
C:\tools\jakarta-jmeter-2.1.1\lib\ext\
or
C:\tools\jakarta-jmeter-2.1.1\lib\
Start JMeter, Right click on Test Plan, Add Thread Group, right click on Thread Group, Add Sampler, Java Request. Your class should appear in the Classname drop down list.
If you want to pass parameters from JMeter to your class then do the following:
See the
getDefaultParameters
function in the previous section.Set-up the
User Defined Variables
:../images/user-defined-variables.gif
Set-up the “Java Request” parameters for your class:
../images/java-request-send-parameters.gif
Logging
JMeter
JMeter does not use log4j or commons logging.
The internal logging system is:
org.apache.log.Logger
This can be found in the jar file (Maven dependency format):
<dependency>
<groupId>logkit</groupId>
<artifactId>logkit</artifactId>
<version>1.2</version>
<scope>test</scope>
</dependency>
To write to the log:
getLogger().debug("Some information");
To change the logging level, add:
log_level.jmeter.protocol.java=DEBUG
to:
C:\tools\jakarta-jmeter-2.1.1\bin\jmeter.properties
The log file is:
C:\tools\jakarta-jmeter-2.1.1\bin\jmeter.log
Sample jmeter.properties
file.
../../misc/howto/jmeter/jmeter.properties
log4j
JMeter does not use log4j. Many of our applications do. To get log4j working:
Might not need to do this… check the application folder for the log file.
Change the command line in:
C:\tools\jakarta-jmeter-2.1.1\bin\jmeter.bat
Change the final line from:
%JM_START% %JM_LAUNCH% %JVM_ARGS% %ARGS% -jar ApacheJMeter.jar %JMETER_CMD_LINE_ARGS%
to:
%JM_START% %JM_LAUNCH% -Dlog4j.configuration=file:log4j.properties %JVM_ARGS% %ARGS% -jar ApacheJMeter.jar %JMETER_CMD_LINE_ARGS%
(Sample jmeter.bat
file):
../../misc/howto/jmeter/jmeter.bat
Copied a log4j.properties
to:
C:\tools\jakarta-jmeter-2.1.1\bin\log4j.properties
The log file appears in:
C:\tools\jakarta-jmeter-2.1.1\bin\logger.log