Skip to content

Plugins Usage

You can use most JMeter plugins in OctoPerf. No installation is required since we will automatically download the plugins files for you from https://jmeter-plugins.org.

Warning

If your test is run from a location with no access to https://jmeter-plugins.org make sure to manually provide the plugin files using OctoPerf Files manager. Check the JMX import page for more info about this.

Default plugins

OctoPerf executes JMeter containers that already have the Standard set of plugins installed.

Often used plugins/Controllers

The purpose of this section is to list some commonly used plugins or controllers that are not directly available in OctoPerf and provide JMX examples that you can import.

When required, you will also find some recommendations on how to make these plugins work inside OctoPerf.

Parallel controller

The parallel controller works exactly like a Container but instead of executing every children sequentially, it will execute them all concurrently. This plugin is especially useful when dealing with lots of resources, or processes that happen in parallel instead of sequentially.

Example

You can download a JMX example and upload it in OctoPerf.

This plugin has two modes:

  • Parent sample ON: The parallel controller will display its response time (=the response time of its slowest child),
  • Parent sample OFF: Each child will have its individual response time displayed.

Warning

Due to a limitation in how JMeter reports response times, it is not possible to get both, you must chose one or the other.

Also, this plugin doesn't work well with parent containers. The only way to get its response time taken into account in the parent container is to have it as the first child, otherwise the parent container is bugged:

parallel

Runtime controller

This controller is not a plugin but since it is not part of OctoPerf's set of logic actions, this is the perfect place to share an example.

The idea here is to execute a loop for a given amount of time. This can be useful to execute operations for the duration of the test and have some end-of-test operations after. Similarly to other tools using init and end blocks.

Example

You can download a JMX example and upload it in OctoPerf.

Dummy sampler

The dummy sampler plugin allows you to emulate a request/response and set its response time, response code and/or response message. This is a good way to store custom metrics in your test results. Also when you are debugging/creating custom scripts you can use it to test various behaviors quickly.

Example

You can download a JMX example and upload it in OctoPerf.

Websockets

Testing a websocket application can be complex, which is why we've covered this subject in a dedicated blog post.

HTTP2

When using JMeter's HTTP2 Plugin, you may encounter the following issue:

java.util.concurrent.ExecutionException: java.lang.IllegalStateException: No Client ALPNProcessors!
    at org.eclipse.jetty.util.FuturePromise.get(FuturePromise.java:139)
...
Caused by: java.lang.IllegalStateException: No Client ALPNProcessors!
    at org.eclipse.jetty.alpn.client.ALPNClientConnectionFactory.<init>(ALPNClientConnectionFactory.java:54)
    at org.eclipse.jetty.http2.client.HTTP2Client.lambda$doStart$1(HTTP2Client.java:160)
....
    ... 1 more
    Suppressed: java.lang.IllegalStateException: org.eclipse.jetty.alpn.openjdk8.client.OpenJDK8ClientALPNProcessor@2eb39ac9 not applicable for java 11.0.12
        at org.eclipse.jetty.alpn.openjdk8.client.OpenJDK8ClientALPNProcessor.init(OpenJDK8ClientALPNProcessor.java:50)
        at org.eclipse.jetty.alpn.client.ALPNClientConnectionFactory.<init>(ALPNClientConnectionFactory.java:74)
        ... 8 more

As we use Java JDK11+ on our load generators, to run tests that simulate HTTP2 request you need to:

  1. upload the jar into the Project Files,
  2. Create a before-test.sh which deletes the JDK8 APLN client jar:
#!/usr/bin/env bash
rm -f "${JMETER_HOME}/lib/jetty-alpn-openjdk8-*"
  1. upload the before-test.sh to project files,
  2. Download the Java Jetty APLN Client Jar 9.4.xx which is the same version as other jetty jars within your ${JMETER_HOME}/lib/ext folder,
  3. upload the client jar to your project files.