>The annotations could be used for scanning for TestPlan elements on
startup, too.

I remember we have discussed it, however, it sounds like a different
feature.
Of course, some level of code generation might help, however, I have no use
cases for it now.

>Maybe start with a global org.apache.jmeter.experimental.dsl
package/module name

I think experimental works better with annotations like @OptIn(Experimental)
If you put experimental into a package name, you can't remove it without
breaking the usages.

A single .dsl. package would help indeed, so users could import
jmeter.dsl.* and use the functions rather than import every package or
class individually.
On the other hand, the users won't be able to unimport features they do not
need

> Kotlin has a very similar string template format to JMeter, is there a
good way to distinguish those, or guard the JMeter ones?

That is indeed a problem.
I've idea what would work the best to resolve it.
Changing syntax to %{..} might work.
Changing syntax to explicit expr("__javaScript(...)") might work as well.
Making variables explicit might work as well. For instance, we can declare
"variable holder", and pass it to regex extractor, and later use it for
retrieving the result.
That would reduce the number of cases where $ is needed in the test plan as
every use of $ is basically a place for hidden error like "use of undefined
variable", and so on

> It seems, that `aggregateReport` has its parameters given by a closure
(is that the right name?) , while `http` per positional parameter. Is
this a Kotlin feature, that we can mix those, or is it only a first
example and showing different ways of settings parameters on the elements?

Kotlin has positioned parameters, it has named parameters, parameters can
have default values (even computed values based on other parameters), and
the final lambda can be outside of the parenthesis.

>And a completely other construction site: Currently JMeter uses a global
context, which could trip off users of the dsl, when they want to
execute plans in parallel. Would this be worse, than now?

Do you mean static context when running the plan?

Vladimir

Reply via email to