Am 20.11.21 um 12:46 schrieb Vladimir Sitnikov:
>> Do you have a rough idea, what the dsl would look like, or how the
>> elements get mapped/detected to be a part of the dsl?
> Commonly used elements have to be mapped manually for consistency reasons.
> There might be a generic (string-like) approach to allow fine-tuning.

I wondered, whether we could add annotations and a annotations processor
to generate code/classes, that could be used to setup dsl components.
The annotations could be used for scanning for TestPlan elements on
startup, too.

>
>> Could you elaborate a bit more on your plan, or would the extra module
>> be really an add-on?
> I am not sure yet.
> It might be that it would be good enough to keep the dsl classes side by
> side with the corresponding elements.
> In other words, creating a module for a couple of classes might not be that
> justified.

When we try to get our code into modules, it might be a good idea to
have this sorted out, before (but that should not let us keep from
experimenting).

Maybe start with a global org.apache.jmeter.experimental.dsl
package/module name, and mash everything in there for a start?

>
>> Do you have a rough idea, what the dsl would look like
> Something behind the lines of
>
> val plan = testPlan {
>     aggregateReport {
>         outputFile = File("...")
>     }
>     openModelThreadGroup {
>         schedule {
>             rate(50.0 / second)
>             random_arrivals(10.minutes)
>         }
>         transaction("hello") {
>             http("http://hello.example";)
>             http("http://world.example";)
>         }
>     }
> }
>
> println(plan.toJxm())
> plan.execute()

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

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?

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?

Felix

>
> Vladimir
>

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

Reply via email to