JMX Scripts Successfully Executed Locally with the RTE 2.1 Plugin Fail in Blazemeter Which Currently Uses RTE 3.1 Plugin

book

Article ID: 205472

calendar_today

Updated On:

Products

BlazeMeter

Issue/Introduction

Even when the RTE 2.1.1 plugin is uploaded to a JMX Performance test, jmeter continues to use the 3.1 version of the RTE plugin.

 

The following can be seen in the jmeter.log showing that the 2.1 version of the RTE plugin uploaded to the test is not used.  The JMX script fails in BlazeMeter, but runs successfully when executed locally with the 2.1 version of the RTE plugin:

at com.blazemeter.jmeter.rte.core.wait.ConditionWaiter.await(ConditionWaiter.java:55) ~[jmeter-bzm-rte-3.1.jar:?]

Cause

JMeter will use the latest version of a plugin when multiple versions are available.

Environment

Release : SAAS

Component : BLAZEMETER PERFORMANCE TESTING

Resolution

The taurus-cloud image prior to the 1.20.98 release contained a copy of the 2.1.1 version of the RTE Plugin jar file in the lib/ext directory of each of the available jmeter installations in the container.  Starting with the 1.20.98 version of the taurus-cloud image, these were replaced with the 3.1 version of the RTE plugin.  Jmeter does pick up and use the 3.1 version of the RTE plugin even when the 2.1 version is uploaded with the JMX script in the test.

There are 2 options to resolving this issue when running JMeter tests from BlazeMeter in the cloud or on any On-Premise Locations (OPLs) that are using taurus-cloud versions 1.20.98 or later:

Option 1 (Recommended/Preferred):
Correct the JMX script in a local instance of jmeter replacing the 2.1 version of the RTE plugin with the 3.1 version so that the JMX script runs successfully with the newer version of the plugin.  Once the test runs successfully with the 3.1 version of the RTE plugin, upload the JMX script to the test in BlazeMeter.

Option 2:
Create a taurus YML script configured to execute the JMX script, include a shellexec section that deletes the current jmeter-bzm-rte-3.1.jar file from the jmeter lib/ext directory and put a copy of the jmeter-bzm-rte-2.1.jar file that is upload to the test in the same directory before taurus runs the JMX script.  Here is a sample YML code section to replace the 3.1 version of RTE plugin with the 2.1 version uploaded to the test in the jmeter 5.2.1 directory (the jmeter version that is automatically selected when running a jmeter test on your OPL):

services:
- module: shellexec
  prepare:
  - rm -rf /shared/.bzt/jmeter-taurus/5.2.1/lib/ext/jmeter-bzm-rte-3.1.jar
  - mv /tmp/artifacts/jmeter-bzm-rte-2.1.jar /shared/.bzt/jmeter-taurus/5.2.1/lib/ext/jmeter-bzm-rte-2.1.jar

This option requires the creation of an additional script (the taurus YML) that needs to be uploaded to the test and made the active script.  It will require changes if the version of the RTE plugin is upgraded in a future release and if the test needs to be configured to use a specific version of jmeter, then it will be necessary to configure the version of jmeter that should be used in the taurus YML file and make sure that the RTE 3.1 jar file is replaced in the correct jmeter directory in the taurus-cloud pod/image when the test runs.  The script will also need to be modified if/when the auto selected jmeter version changes from 5.2.1 to a different version in a future release of the taurus-cloud image.