Skip to content

Releases: abstracta/jmeter-java-dsl

1.21

14 Sep 14:21

Choose a tag to compare

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

30 Aug 14:27

Choose a tag to compare

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

22 Aug 20:14

Choose a tag to compare

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:

  • AzureEngine now automatically uploads JMeter DSL artifacts to Azure Load Testing test when needed.
  • Fix jsr223Sampler naming.

1.18

04 Aug 17:57

Choose a tag to compare

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

20 Jul 15:14

Choose a tag to compare

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

19 Jul 17:30

Choose a tag to compare

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

14 Jul 18:29

Choose a tag to compare

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

13 Jul 21:57

Choose a tag to compare

All lambdas execution performance are now improved and also an option for running custom Java code in BlazeMeter is provided!

Performance Comparison Details image image

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

05 Jul 20:27

Choose a tag to compare

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

22 Jun 17:17

Choose a tag to compare

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.