You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@jmeter.apache.org by Mark Kocken <mk...@gmail.com> on 2019/07/18 01:07:20 UTC

Unable to get thread group to loop

Good morning,

I have created a thread group that runs a number of REST calls.
As images get striped out I will try and recreate via text

My thread group is as follows

Deferred (Thread Group)
         Deferred Controller
               HTTP Cookie Manager
               SignOn (Http Request)
               CreatePDF (This runs the first REST API Call)
                       RegEx - TicketID (Extracts the ticketID from the
response

                 While Controller
                         GetTicket (This is the second REST Call that looks
for a response from the server and will continue if a CTH_DEFER_READY
response is found)
                        Constant Timer
                        RegEx - ResponseReady

                   GetReport (This runs the final REST call to retrieve the
completed report
                   SignOff

The thread group works perfectly however the issue that I am having is that
I cannot get the thread group to loop beyond a single iteration under the
Thread Properties.

I can use the "Number of Threads (Users): no problems. However when I want
to change the loop count above 1 the thread group runs once perfectly but
the second iteration only runs three of the threads
SignOn
CreatePDF
SignOff
It is completely ignoring the While Controllers.

What I wanted to do was loop the thread group forever and keep alive for a
duration of say 30 minutes using the scheduler.
Any ideas on why this would be happening?

Many thanks in advance
Mark








I have included 2 x while controllers that wait for a successful

Re: Unable to get thread group to loop

Posted by Scott Dean <ps...@ncsu.edu>.
Greetings!

Sounds like whatever the condition that the while loop evaluated is always
False after the first iteration.    From what I can tell from your
description, you are extracting the response to GetTicket into
ResponseReady but it is unclear CTH_DEFER_READY means that you want to exit
the loop or continue the loop when found.  Anyway, I suspect that whatever
test you are using as the condition of the While controller is not getting
reset between iterations.  Assuming it is dependent what gets extracted
from the GetTicket call and stored in ${ResponseReady}, after the first
iteration, the value of ${ResponseReady} is always going to be that which
causes the loop to exit.  Since the Regex Extractor that sets
${ReadyResponse} is INSIDE the LOOP, it will never get reset because the
While controller is evaluating the condition, finding the condition results
in "false", so the stuff inside never executes.

If this is the case, one option would be to make an initial call to
GetTicket (with associated Timer and Regex Extractor) BEFORE hitting the
While controller.  Something like this:

  Deferred (Thread Group)
         Deferred Controller
               HTTP Cookie Manager
               SignOn (Http Request)
               CreatePDF (This runs the first REST API Call)
                       RegEx - TicketID (Extracts the ticketID from
the response


*             GetTicket (This is the second REST Call that looks for a
response from the server and will continue if a CTH_DEFER_READY response is
found)                        Constant Timer                        RegEx -
ResponseReady   *
               While Controller
                          GetTicket (This is the second REST Call that
looks for a response from the server and will continue if a
CTH_DEFER_READY response is found)
                                  Constant Timer
                                  RegEx - ResponseReady

                   GetReport (This runs the final REST call to retrieve the
completed report
                   SignOff

Not very elegant but if it does what you need.....

Hope this helps!

-- Scott Dean
   North Carolina State University
   Raleigh, NC   USA

On Wed, Jul 17, 2019 at 9:07 PM Mark Kocken <mk...@gmail.com> wrote:

> Good morning,
>
> I have created a thread group that runs a number of REST calls.
> As images get striped out I will try and recreate via text
>
> My thread group is as follows
>
> Deferred (Thread Group)
>          Deferred Controller
>                HTTP Cookie Manager
>                SignOn (Http Request)
>                CreatePDF (This runs the first REST API Call)
>                        RegEx - TicketID (Extracts the ticketID from the
> response
>
>                  While Controller
>                          GetTicket (This is the second REST Call that looks
> for a response from the server and will continue if a CTH_DEFER_READY
> response is found)
>                         Constant Timer
>                         RegEx - ResponseReady
>
>                    GetReport (This runs the final REST call to retrieve the
> completed report
>                    SignOff
>
> The thread group works perfectly however the issue that I am having is that
> I cannot get the thread group to loop beyond a single iteration under the
> Thread Properties.
>
> I can use the "Number of Threads (Users): no problems. However when I want
> to change the loop count above 1 the thread group runs once perfectly but
> the second iteration only runs three of the threads
> SignOn
> CreatePDF
> SignOff
> It is completely ignoring the While Controllers.
>
> What I wanted to do was loop the thread group forever and keep alive for a
> duration of say 30 minutes using the scheduler.
> Any ideas on why this would be happening?
>
> Many thanks in advance
> Mark
>
>
>
>
>
>
>
>
> I have included 2 x while controllers that wait for a successful
>