TPS as scenario input parameter

hi guys,

is this possible to setup for the scenario the desired “transaction per seconds” and go from that ? And then gatling decides how many users should is use to achieve this TPS.

Thanks,
Yuri

Hi,

Starting from upcoming 2M4 (feature is already available in master), you can use throttling in order to shape the desired RPS profile.
See https://github.com/excilys/gatling/blob/master/gatling-core/src/main/scala/io/gatling/core/controller/throttle/ThrottlingSupport.scala

However, you’re still in charge of providing enough users to achieve the expected load.

Cheers,

Stéphane

Hmm, any plans to borrow the ‘rampup using think time’ idea?
Then all you need is to have the scripter specify how much load per user he or she desires to ramp up to…

That’s more or less the same thing, except that at this time think time/pauses are not automatically disabled and that’s up to the user.

In any case, you have to provide enough users (ie a given user can’t exceed more rps than its pace with 0 think time).

Throttling sounds like you have some limit in place that can be hit, but isn’t so much used to steer the load as it is used to put an upper bound on it. That really isn’t the same thing.

The rampup by thinktime code doesn’t exactly disable the think time either. Load calculations determine the proper think time, and simply stop sleeping once the calculations yield zero. Which they may or may not do, depending on the responsetime and target load.
I don’t know how much pause time you are going to use in that case, but I can’t think of a single value that makes sense other than zero if it worked like our algorithm does.

Regarding providing enough users - yes, that is a requirement here too. You would simply set up x users, set up some max tps value at the start and let the tt code handle the rest, though. No user based rampup any more.

I’ve disabled set up pauses when using throttling. Compared to what you propose, that’s more a matter of semantics and implementation details, the result will be the same.

Cheers,

Stéphane

How would you use that interface?

I don’t understand your question.

Well, you linked the throttlingsupport.scala code, but with my level of fluency in Scala (can sort of read, but really have no idea how things fit together), it isn’t quite clear to me how someone who was building a test would actually use that. What would code using this interface look like? How would the resulting load profile look?

Ah, OK.

This DSL is quite similar to the inject one.
You’ll be able to shape rps the way you want (even if current built ins only let you build linear shapes).

The throttle method is available on both simulation (global level) and scenario (ie per population/user profile).

ex: .throttle(reachRps(100) in(20 seconds), holdFor(5 minutes), reachRps(0) in(20 seconds))

Clear?

Yes. That is what I meant :slight_smile: