Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to write a JMeter test for Java Request

Tags:

java

jmeter

I need to do load testing on in memory databases.

I want to use JMeter and am under the impression I need to write a class that implements JavaSamplerClient.

I simply have no idea where to start. What the JMeter website has to offer helps me very little. This is my first time doing something like this and I have been lost for days!

So maybe you can help by explaining like the basics of how my class should be set out? Packages I might need to import? Because whenever I try to tell it to implement JavaSamplerClient I get an error.

Also maybe a brief summary on how it all works? Like is a method run as many times as specified in JMeter? Or what is actually happening here?

like image 574
Ree Avatar asked Apr 25 '14 07:04

Ree


People also ask

Can we write Java code in JMeter?

JMeter enables writing Java code using a non-strict mode when the data type does not need to be specified, or by strict mode when creating variables (because variables require specifying the data type). The strict mode is fully compatible with the rules for creating and initializing variables in Java.

What is Java request in JMeter?

In JMeter, 'Java Request Defaults' is used to set default parameters to pass them into Java Request. Java Request Defaults config element is added under the Test Plan. The parameter values can be overridden using Java Request.

How do I create a request in JMeter?

To add an HTTP Request, add a Thread Group, and then right-click on Thread Group -> Add -> Sampler -> HTTP Request (see figure 1).


2 Answers

To use Java Request in JMeter you must create a Java class that inherits from JavaSamplerClient. To do that, you must download two jar files and add them to classpath if you are working with Eclipse. This two jar files are ApacheJMeter_core.jar and ApacheJMeter_java.jar An your class will look like that:

import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
public class javaRequest extends AbstractJavaSamplerClient {

        @Override
        public void setupTest(JavaSamplerContext context){
        // TODO Auto-generated method stub

        super.setupTest(context);
        }
        @Override
        public Arguments getDefaultParameters() {
        // TODO Auto-generated method stub  


        }
        @Override
        public SampleResult runTest(JavaSamplerContext arg0) {
            // TODO Auto-generated method stub

            SampleResult result = new SampleResult();

                boolean success = true;

                result.sampleStart();

                // Write your test code here.

                //


                result.sampleEnd();

                result.setSuccessful(success);

                return result;

        }
        @Override
        public void teardownTest(JavaSamplerContext context){
            // TODO Auto-generated method stub
            driver.quit();
            String verificationErrorString = verificationErrors.toString();
            if (!"".equals(verificationErrorString)) {
                fail(verificationErrorString);
                System.out.println(verificationErrorString); 
            }
            super.teardownTest(context);
        }
}

For more informations you can visit this link http://www.javacodegeeks.com/2012/05/apache-jmeter-load-test-whatever-you.html/comment-page-1/#comment-8288 and this page too How to use CSV Data Set with junit request test in jmeter

like image 149
Imen CHOK Avatar answered Oct 03 '22 17:10

Imen CHOK


Your custom class needs either implement JavaSamplerClient or to extend AbstractSamplerClient.

The absolute minimum is runTest() method implementation.

I'd recommend to look into sources for existing JavaTest and SleepTest Java Request samplers:

  • /src/protocol/java/org/apache/jmeter/protocol/java/test/JavaTest.java
  • /src/protocol/java/org/apache/jmeter/protocol/java/test/SleepTest.java

Sources are available from JMeter download page

Or there is a couple of guides which have example of simple working Java Requests.

See

  1. Beanshell vs JSR223 vs Java JMeter Scripting comparison benchmark - for something very basic like generating large random string
  2. WebSocket Testing With Apache JMeter - for fully functional Websocket client implementation via Java Request

After compiling your classes package it to .jar and drop to /lib/ext folder of your JMeter installation. Your class should be available from Java Request drop down.

Hope this helps.

like image 27
Dmitri T Avatar answered Oct 03 '22 17:10

Dmitri T