Achieving non-linear user ramping

I am testing an application that because of the nature of how it will be used, there will be spikes of activity. For example, starting as early as 10 minutes before the half hour, to as late as a minute or two before the half hour, users will start to arrive. It will likely be a normal distribution, with a few trickling in at the beginning, growing exponentially, and then leveling off, then falling off again almost as fast as they arrived.

I can imagine accomplishing that behavior by starting all 3,000 users at the same time, and then the first thing the user does is a pause that has a normal distribution between 0 seconds and 8 minutes, centered around 4 minutes. (Thinking about this is what prompted my question about pauses a moment ago).

However, here’s what Gatling will graph: The number of active users will immediately jump up really high, then slowly fall off. Whereas, the activity will show the desired bell curve. Gatling will appear schizophrenic, and users who do not understand what was done to accomplish the behavior pattern will be confused.

I’m not a big fan of confusing the people I’m trying to inform. So I’d prefer to model the usage pattern via the injection model.

It LOOKS as though the heavisideUsers(nbUsers) over(duration) syntax might do the trick. But I’m not sure, because the link shows a graph with a zero-width step. Technically, what I want is more along the lines of a Sigmoid function ( If what the heavisideUsers() injector’s “smooth approximation” ends up being like a sigmoid curve, then I’m happy.

Here’s the question: Does heavisideUsers() enable an injection model that starts slow, gets faster and faster, and then falls off again, much like a standard distribution? If not, can you offer a more detailed explanation of how it works?


Yep, that’s it: