rendezVous is not working as expected within repeat

Hey Guys,

I am using ‘rendezVous’ within ‘repeat’ and it’s working fine for 1st iteration but from 2nd iteration its not waiting for defined users in ‘rendezVous’ and code is being executed. Here is my scenario:

  1. Ramp-up users (e.g. 5 users)
  2. Repeat Step 3 to 5 for three times (using repeat(3))
  3. Wait until all the users ramped-up (using rendezVous(5))
  4. Execute the request (defined using exec())
  5. Pause for some random time (e.g. pause(10, 15))

Actual Result:

  1. For 1st iteration rendezVous waits for all the 5 users and then executes the request.
  2. From 2nd iteration rendezVous is not waiting for all the 5 users and request is being executed as and when user completes its pause time defined in 5th Step.

Below is code for reference:

class rendezVousWithinRepeat extends Simulation {
  val scn = scenario("rendezVous within repeat")
    .repeat(3) {
      rendezVous(5)
        .exec(
          http("/rendezVous-within-repeat/")
            .post("<application-end-point>")
            .header("Content-Type", "application/json")
            .body(ElFileBody(ProjectBaseDirectory + "/src/test/resources/bodies/data.json"))
            .check(status.is(201))
        )
        .pause(10, 20)
    }

  setUp(scn.inject(rampUsers(5) during (2 seconds)))
}

I did not find any success how to reset rendezVous state after completion of iteration.

Please help me.


Anyone please look into this.

rendezVous works as expected: buffer incoming users until limit is reached, then let go.

Thanks for your reply Stephane.

rendezVous is working as expected only for 1st iteration, not for all the remaining iterations. Please refer to attached screenshot for your reference.

There’s a difference between what you would like to have and “works as expected”, ie “works as designed/intended”.
Component works as expected here.
That it doesn’t behave the way you’d want is a different thing.

I’m not opposed to a behavior change to make rendezVous trigger again, but as it’s a behavior change, I would require sufficient demand from other users.
Of course, multiple requests from people from the same team/company doesn’t count.

Regards,

Thanks Stephane.

I think rendezVous should trigger again, as the behaviour of rendezVous should be always wait for defined number of users either if it is 1st iteration or multiple iterations. Throughout the test the behaviour of rendezVous should be same.

If we want to test an endpoint with particular users rate during some intervals then rendezVous should trigger again.

Anyways I have found an alternate solution as of now, but I will wait to see the behaviour change of rendezVous to achieve this type of testing.

Regards,
Raman