Monday 22 May 2023

Call one sampler (HTTP) from another sampler (JSR223) in JMeter | Jmeter Sampler Integration

 Yes, it is possible to call one sampler (HTTP) from another sampler (JSR223) in JMeter. JMeter provides flexibility to customize and control the flow of your test plan using various components, including JSR223 samplers.

To call an HTTP sampler from a JSR223 sampler, you can use the JMeter API within the JSR223 sampler code. Here's an example of how you can achieve this:

1. Add a JSR223 Sampler to your test plan.
2. Choose the appropriate language (e.g., Groovy) for the JSR223 sampler.
3. Write your custom code in the script area of the JSR223 sampler to call the HTTP sampler using the Jmeter API.



Groovy Code:

import org.apache.jmeter.protocol.http.sampler.HTTPSampleResult;
import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy;

// Get the HTTP sampler by its name
def httpSampler = ctx.getCurrentSampler().getThreadContext().getVariables().getObject("HTTPSamplerProxy")

// Make sure the HTTP sampler is not null
if (httpSampler != null) {
    // Execute the HTTP sampler
    def httpResult = httpSampler.sample()
    
    // You can access the response code, response message, and other details from the HTTP result
    int responseCode = httpResult.getResponseCode()
    String responseMessage = httpResult.getResponseMessage()
    
    // Process the HTTP result as needed
    // ...
}

In the above example, we obtain the HTTP sampler using the `getObject()` method from the JMeter `ThreadContext` and then execute the HTTP sampler using the `sample()` method. You can access and process the response details according to your requirements.

Please make sure you have properly configured and added the HTTP sampler to your test plan before using it within the JSR223 sampler. Remember to replace the language-specific code (`groovy` in this example) if you choose a different language for your JSR223 sampler.