We have made a major step toward full JMeter support.
Until now, OctoPerf supported only a limited subset of JMeter features.
Many customers were asking to extend the JMeter support to fit their own needs.
We had to find an elegant solution to fit all needs without compromising simplicity of use.
JMeter can be easily extended by creating your own plugins.
There are numerous open-source JMeter plugins which greatly increase JMeter capabilities.
Supporting each plugin by implementing it one by one wasn’t even an option: it’s simply too much work for little added value.
Then came the idea of a generic support by mirroring the JMX content.
OctoPerf now supports all JMeter features, including custom JMeter plugin through Generic Test Elements.
Any custom JMeter element is converted to a generic JMeter action which can be edited in the Web UI.
JMX Import
A sample JMX containing a Counter JMeter test element can be downloaded here.
This test element is now supported by OctoPerf thanks to generic actions.
So when importing this JMeter project, it’s converted into a Generic action.
Generic action virtual user
Generic actions configuration reflects the configuration being stored in the JMX.
Editing Generic actions configuration is equivalent to editing the JMX directly.
The Virtual User loops over the OctoPerf’s blog pages using the Counter test element and a While action.
To ensure that this Generic action runs fine, we must validate the Virtual User execution:
Validate vu generic action
When validating a user with generic actions, OctoPerf warns you to make sure that we take extra care while using imported JMeter test elements.
When it’s done, we can see that the pages request was executed several time on various URLs.
Get request loop
The screenshot above shows all the request executions.
Editing Generic Actions
A generic action is, like any other action, visible while editing a Virtual User.
Counter config generic action
Unlike other actions, generic actions cannot be added to a Virtual User.
Since they are only available after importing a JMeter JMX file, you can only duplicate existing ones.
Generic actions configuration
Generic actions can be edited, copied or removed.
As OctoPerf is not aware of the data contained in each generic action, you can only edit existing properties like:
- String, number or boolean values can be updated,
- List elements can be duplicated and edited.
Due to the structure of JMX projects, adding attributes to an exiting generic action has been disabled.
JMeter Custom Plugins
You can now use custom JMeter plugins:
JMeter custom JAR files are automatically installed on JMeter load generators.
Analysis Results
Any JMeter plugin which produces a JMeter SampleResult will be seen as a container in test results.
When a JMeter test element produces a JMeter:
Technical Thoughts
Our backend had dependencies on JMeter to parse JMX projects during JMX import.
This led to a Dependency Hell between JMeter dependencies and our own.
By implementing our own JMX parser to support generic actions, we could get ride of JMeter dependencies inside our backend.
Every new feature is a reason to improve the existing codebase to ease maintenance and speed up future developments.
Conclusion
Full JMeter support is both a challenging and exciting feature.
While our competitors focus on helping people to understand how JMeter works, we focus on handling the difficulty on our side and deliver a smooth JMeter experience.
On the other side, advanced users like JMeter’s customizability.
By providing the best of both worlds, we hope to deliver a smooth JMeter experience while pleasing everyone.
Have a custom plugin and want to scale? Try OctoPerf now!