Greetings Spencer de Mars
In parrot/util there's
* RequestDistribution: A function specifying the time to arrival of the next request, used to control the request rate. Instances include
* UniformDistribution: Sends requests at a uniform rate
* PoissonProcess: Sends requests at approximatly constant rate randomly varying using a poisson process. This is the default.
* SinusoidalPoissonProcess: Like PoissonProcess but varying the rate sinusoidally.
* SlowStartPoissionProcess: Same as PoissonProcess but starting with a gradual ramp from initial rate to final rate. It will then hold steady at the final rate until time runs out.
Would SlowStartPoissionProcess fill the bill?
Here's an example of using SlowStartPoissionProcess
duration = 30
timeUnit = "MINUTES"
imports = """
import com.twitter.conversions.time._
import com.twitter.parrot.util.SlowStartPoissonProcess"""
createDistribution = "createDistribution = { rate => new SlowStartPoissonProcess(rate, (duration/2).minutes) }"
There's another distribution,
* InfiniteRampPoissonProcess: a two staged ramped distribution. Ideal for services that need a warm-up period before ramping up. The rate continues to increase until time runs out.
however it isn't on github. It will be eventually. I could mail it to you if you like. I don't really like it much because I would rather someone implemented a way of sequencing distributions. So InfiniteRampPoissonProcess would be a sequence of [ramp,ramp,flat].