Bug 64820

Summary: Flow Control Action - Break current loop issues
Product: JMeter Reporter: eR@SeR <nalexic>
Component: MainAssignee: JMeter issues mailing list <issues>
Status: NEEDINFO ---    
Severity: enhancement    
Priority: P2    
Version: 5.3   
Target Milestone: JMETER_5.4   
Hardware: PC   
OS: All   
Attachments: jmx file

Description eR@SeR 2020-10-17 18:20:35 UTC
Created attachment 37505 [details]
jmx file


I noticed that Flow Control Action when Break current loop is checked has unexpected behavior:

1. When used in Loop, While or ForEach controllers which parent is Transaction controller, loop is properly stopped but results are doubled in Listeners. If Generate parent sample is checked or unchecked in Transaction controller, behavior is the same. Runtime controller might be affected too, but cannot be reproduced because of issue under point 2.

2. When used in Runtime controller only, Break current loop actually stops current thread. Last Dummy Sampler in TG2 is not executed.

Check provided jmx file for more info. TG1 point 1 and TG2 point 2.

Jmeter 5.3
Microsoft Windows 10 Enterprise 64-bit
java version "14.0.1" 2020-04-14

Note: There might be more issues for flow control action when Break current loop is used, so if you have time please investigate. Thank you.
Comment 1 Felix Schumacher 2020-11-29 12:32:51 UTC
The Runtime Controller is not a loop controller. The other controllers (Loop, While and ForEach) are. So it looks to me like the intended behaviour.

We could
 *) add documentation, to make it clearer (where and what?)
 *) change the behaviour (possibly breaking other test plans, that use this setup)
 *) add another flag/toggle to make the Runtime Controller behave like the looping ones

I am unsure, which one would be best, so it is probably better to start a discussion on the dev mailing list.

PS. please don't use third party components for minimal test plans, as it makes it harder for us to use them and decide if it affects JMeter components only. Instead of the Dummy Sampler I tend to use a JSR223 Sampler consisting of a simple String (which gets returned as the body with a 200-status). (Apart from this, I really liked the well structured test plan, that showed what you wanted. Thanks)
Comment 2 eR@SeR 2020-11-29 23:37:37 UTC

Thank you for your explanation about point 2. Btw, did you see/try the issue under point 1?

"*) add documentation, to make it clearer (where and what?)"

I agree.

"*) change the behaviour (possibly breaking other test plans, that use this setup)"

What did you mean by this? Can you give an example maybe?

"*) add another flag/toggle to make the Runtime Controller behave like the looping ones"

This would be really nice :) Also, I had scenarios where I wanted to finish the execution of all child samplers inside the Runtime controller even if the timer had expired. If you consider adding this feature, I can test it.

P.S. I didn't know that we should not provide any 3rd party components when creating a bug report. Maybe https://bz.apache.org/bugzilla/page.cgi?id=bug-writing.html or other rules page should be updated to state that.