Need a special scenario configuration for Capacity Planning benchmarks

Hi Gatling team,

I have a special use case (but I am pretty sure I am not the only guy with this need :wink: ) which is currently very difficult to implement with Gatling today.

This use case is mainly for Capacity Planning benchmarks to progressively and gradually increase the number of concurrent users during a benchmark to be able to find the maximum number of concurrent users which can be managed by a given infrastructure with an acceptable Response Time.

Here is an example of what I have in mind :

Execute this scenario with a maximum of 10 000 concurrent users and to reach this number of users, start 100 more users each 3 minutes with a ramp of 30 seconds.
When the 10 000 concurrent users are started, keep running for 3 minutes then stop.

which could be translated in Gatling DSL with something like :

List(scn.configure.users(10000).step(100, 3m, 30s).protocolConfig(httpConf))

what is your opinion on that ? do you think it is technically feasible ? do you have another proposal ?

Thanks

Frédéric

Hi Frédéric,

Actually, you can do it using Scala for the moment :

(for(i ← 1 to 100) yield scn.configure.users(100).delay(180*i).ramp(30)).toList

It will generate a list of 100 scenario configurations that will be executed each 180s (3mns).

Concerning the DSL change, it might be part of the whole ramp improvements that we had in our heads.

I think the easiest way should be : scn.configure.users(10000).steps(100).delay(3m).ramp(30s).protocolConfig(httpConf)

WDYT ?

Cheers,

Romain

Hi Fred,

I see that you had a talk with Arnaud :wink:

As I explained to Arnaud, the main issue is with the DSL design. Once we’ll have all agreed on its shape, implementation should be quite easy.

While I perfectly understand your need, I’d like to get a more generic API that would let us build any users and/or rates shape.

For example, what you propose doesn’t provide a solution for overloading tests (have a huge load, then return to a normal one and see if your system can return to a safe state).
Another example: some people are more interested in a rate injection: 5 users/sec for 10 minutes, then 10 users/sec for 20 mins, etc


You also propose that users have a lifetime. I’d like to have more feedback on this from other users.

Steph

BTW: There’s already an issue for this: https://github.com/excilys/gatling/issues/693, I’ll add a link to this thread.

2012/10/18 Romain Sertelon <romain@sertelon.fr>

I have added a comment with a new proposal in the related issue.
Thanks for your time

Frédéric