0
votes

For my scenario I want to combine few samples into one to show output as login ( instead of showing all 4,5 samples involved in login). My test plan has Onceonly controllers for login and logout users. Once the users are logged in, we want to loop through different data (iterations) Once all the iterations are done users should logout.

My overall testplan is like this.

Testplan
--ThreadGroup
     OnlyOnceController 
            --LoginTransactionController
                      LoginSample1
                      LoginSample2
                      LoginSample3
     Loop Controller
            --Action1transactionController
                       Action1sample1
                       Action1sample2
                       Action1sample3
            --Action2transactionController
                       Action2sample1
                       Action2sample2
            --Action3trasactitonController
                       Action3sample1
                       Action3sample2
    OnlyOnceController
            --LogoutTransactionController
                       Logoutsample1
                       logoutsample2

I used transactioncontrollers inside loop controller.

When I trigger run with say 30 users (threadcount) and loop count =10, then in view result tree I am noticing that that all users finish one transaction controller and then move to other transaction controller together and then going to next loop.Is this because I used transaction controllers inside a loop controller?

But I want once the user login it should move on to next next samples without waiting for others. Is it right way to use transaction controller for my requirement?

Is there any other way to achieve this?

Thread group config

LoginTransactionController
LoginTransactionController
LoginTransactionController
.
.
Action1transactionController
Action1transactionController
Action1transactionController
.
.
.
30times
Action2transactionController
Action2transactionController
Action2transactionController
.
.
.
30times
Action3trasactitonController
Action3trasactitonController
Action3trasactitonController
.
.
.
30times

Then it is going to second iteration.

1

1 Answers

0
votes
  1. JMeter threads (virtual users) are absolutely independent, a virtual user will not "wait" for the others (unless you use Inter-Thread Communication Plugin)
  2. JMeter virtual users execute Samplers upside down as fast as they can. Transaction Controller is nothing more than a "virtual sampler" which simply sums the response time of its children, it doesn't have any impact on the execution order

You can temporarily add a __threadNum() function and ${__jm__Loop Controller__idx} pre-defined variable, this way you will see which virtual user is doing at every moment of your test

enter image description here