Tvaroh Tvaroh - 27 days ago 10
Scala Question

Gatling scenario with 10 requests per hour (less that 1 rps)

I need to write Gatling scenario that will mimic real users interaction. It's supposed to issue some requests occasionally, e.g. 10 per hour per user (total 20 users).

From what I see in the docs,

constantUsersPerSec
accepts double but it's rounded while
reachRps
in throttling deals only with seconds. So, not way to have less than 1 rps.

It is possible to write such scenario using Gatling?

Answer

So your scenario seems like "for 2 hours, send a request every 6 minutes" or "at a constant rate of 10 users per hour during 2 hours ...".

Option 1

The constantUsersPerSec is internally rounded to int after multiplying it to the number of seconds of the duration. So the duration should be chosen with respect to the rate, so that the result is greater than 1.

In your case,

def perHour(rate : Double): Double = rate / 3600

constantUsersPerSec(perHour(10)) during(2 hours)

This would result in

10/3600 users * (2 * 60 * 60) seconds = 20 users

Option 2

via injection steps

setUp(
  scn.inject(
    atOnceUsers(1),
    nothingFor(6 minutes),
    atOnceUsers(1),
    nothingFor(6 minutes),
    //... and so forth...
  )
)

or produce the injection steps in a second method

def injections(): List[InjectionStep] = List(...)

setUp(scn.inject(injections : _*))
Comments