Releases: abstracta/jmeter-java-dsl
1.21
You can now use simpleController to apply timers, listeners, assertions, configs, pre- and post-processors to parts of a test plan!
Check the updated user guide section for more details.
Thanks to @ben-norton-anaplan for the contribution and @FakeLogin @andy-tarr for helping with design decisions.
Additionally, bridge service now supports deserializing properties which require multiple invocation of property methods (like rampUp in threadGroup).
1.20
Now is possible to properly parse enums properties sent to bridge service. This is necessary to add support for regex extractor features in .Net DSL.
1.19
You can now automatically stop test plan execution when collected metrics condition is met!
Check the new user guide.
Thanks to @mikeliucc, @kirillyu and Woweyn and Ivan Smolin from Discord asking for this feature support.
Additionally:
AzureEnginenow automatically uploads JMeter DSL artifacts to Azure Load Testing test when needed.- Fix
jsr223Samplernaming.
1.18
AzureEngine now automatically uploads csvDataSet and httpSampler files to Azure Load Testing!
Additionally you can now:
- Set name of test run
- Configure monitored resources (application components)
- Specify to split CSVs between engines.
You can check the updated Azure user guide section.
Thanks to @mikeliucc for requesting these features.
Finally, AzureLoadTesting updates of test plan has been fixed due to previously incorrect test plan validation check logic, and some minor fixes have been included in user guide & exception thrown by thread groups when using iterations after ramping threads.
Thanks to @mikeliucc and @pjcalvo for pointing for the potential improvements.
1.17
datadogListener now adds provided tags to generated logs and syncrhonizedTimer has been added to allow sending batches of simultaneous requests to services under test.
Thanks to @rsiatka and @uddirulz for requesting these features!
1.16
You can now easily integrate Selenium scripts in your performance scripts!
Check the new user guide section.
Additionally, now is simpler to use jsonAssertion().equalsTo() with any value (no need to pass always string), and equalsToJson has been added to allow asserting for raw Json values.
Check the updated jsonAssertion user guide section and methods Java docs. Included changes also avoid some inconsistencies while switching between JMESPath and JSONPath.
WARNING: if you already use jsonAssertion().equalsTo(), since it's behavior has changed in this version, you might need to adapt your test plan for this new version. In particular if you used something like jsonAssertion("prop").equalsTo("${var}") to assert an integer property, you will need to change it to jsonAssertion("prop").equalsToJson("${var}").
1.15
You can now use jsonAssertion to more easily do assertions of JSON responses!
Check the new user guide section.
Thanks to @mikeliucc for asking for this feature.
1.14
All lambdas execution performance are now improved and also an option for running custom Java code in BlazeMeter is provided!
Performance Comparison Details
Charts show total test plan execution time in milliseconds for the given number of threads and iterations.
For the biggest test (500 threads and 10k iterations each) we got at last test 34x less time difference for post processors from base test comparing 1.14 to 1.13, and 20x for conditions.
Tests were ran in MacBook Pro, 2.6GHz 6-Core Intel Core i7, 16GB, OpenJDK 1.8.0_352.
Post Processor Tests
Base
testPlan(
threadGroup(threads, iterations,
dummySampler("OK")
)
)Groovy
testPlan(
threadGroup(threads, iterations,
dummySampler("OK"),
jsr223PostProcessor("vars.putObject(\"TEST\", 1 + 1)")
)
)Jexl
testPlan(
threadGroup(threads, iterations,
dummySampler("OK"),
jsr223PostProcessor("vars.putObject(\"TEST\", 1 + 1)")
.language("jexl")
)
)Lambda 1.13 & 1.14
testPlan(
threadGroup(threads, iterations,
dummySampler("OK"),
jsr223PostProcessor(s -> s.vars.putObject("TEST", 1 + 1))
)
)Condition Tests
Base
testPlan(
threadGroup(threads, iterations,
dummySampler("OK")
)
)Constant
testPlan(
threadGroup(threads, iterations,
ifController("true",
dummySampler("OK")
)
)
)Groovy
testPlan(
threadGroup(threads, iterations,
ifController("${__groovy(vars.get('test')==null)}",
dummySampler("OK")
)
)
)Jexl
testPlan(
threadGroup(threads, iterations,
ifController("${__jexl2(vars.get('test')==null)}",
dummySampler("OK")
)
)
)Lambda 1.13 & 14
testPlan(
threadGroup(threads, iterations,
ifController(s -> s.vars.get("test")==null,
dummySampler("OK")
)
)
)And here is a new user guide section with instructions to run lambda tests with BlazeMeterEngine and standalone JMeter.
Thanks to @rsiatka and @polarnik for pointing out the performance penalties Java lambdas had and @cspriya for asking about running java code in BlazeMeter.
Additionally, thanks to @mikeliucc for pointing out a typo that we fixed in this release.
1.13
You can now use datadogListener to send your test plan metrics to DataDog, thanks to @uddirulz request!
You can check more details in the new user guide section.
Additionally, jmeter-java-dsl-bridge module has been created to ease generation of DSLs in other languages. Stay tuned for updates in this regard :).
1.12.1
This version fixes thread group duration calculation when using complex jmeter expressions.
Additionally, this version simplifies jmx2dsl conversions of thread groups using JMeter expressions, sacrificing a little on accuracy in favor of simplicity and maintainability of generated DSL code.
Thanks to @uddirulz who reported the issue.