holdFor

Hi,

I have the following:
version: 2.0.0-SNAPSHOT

setUp(scn.inject(atOnceUsers(numUsers)).throttle(reachRps(20) in (40 seconds),holdFor(1000 seconds))

.protocols(httpConf)

I am expecting the rps to ramp up from 0 to 20 in 40 seconds, then to remain constant at 20 rps for 1000 seconds.

What is happening is after the initial ramp the rps resets to 0 and it ramps up again over 40 seconds, leading to a saw profile over time.

Is my config/understanding wrong or is there a defect?

Thanks,

Alex

Looks like a bug…

I haven’t been able to reproduce.
Could it be that it’s your system under test that chokes?

What’s numUsers value?

thanks, large - 100000. no particular rationale, just large to let the test run on and on. if there’s a better/proper way let me know

Try setting a more reasonable value. I’m not sure if that’s the real problem, but you’re flooding the system with way too many virtual users that won’t get any chance to work (100.000 users for 20rps top).

30 should be plenty enough for reaching 20rps.

ok thanks, each user (currently) sends 1 request, the test only lasts 11 seconds in this case with 30 in atOnceUsers.
I will need to run soak tests for 48 hours
the assumption with an open workload model is that there is an arrival rate, and the users keep arriving at that rate (could be variable) until the test ends

2014-04-11 16:59:22 11s elapsed

---- get pseudo-random sequence of images --------------------------------------

[##########################################################################]100%

waiting: 0 / running: 0 / done:30

I tried

setUp(scn.inject(constantUsersPerSec(21).during(1000 seconds)).throttle(reachRps(20) in (40 seconds),holdFor(1000 seconds))

but it still resets to 0rps every 40 seconds

tried

setUp(scn.inject(constantUsersPerSec(5).during(1000 seconds))

roughly every 90 seconds

I don’t really understand the difference between inject with throttle and just inject.

I need an arrival rate for an open workload model, which seems to be provided by inject, and if implemented reliably shouldn’t need a “throttle”? what do you think

thanks,

Alex

Hi Stephane,
… fortunately it turns out I was loosing requests at the serverside which has been fixed - so it is looking good. The following works well.

scn.inject(rampUsersPerSec(1) to (20) during (10 seconds),constantUsersPerSec(20).during(1 minute))

thanks for your swift reply in any case earlier.

Thanks,

Alex

I’m very happy with this outcome, honestly, I couldn’t find out how this could go this wrong.

Anyway, this feature is quite new and there’s room for improvement. Starting a huge bunch of virtual users and then throttling them very hard should be that harmful (profile is distorted), and it would be great that the tool could infer the number of users.

Next version maybe.

Thanks for your feedback!

Stéphane