diff --git a/build.gradle b/build.gradle index d8ae2b5..1cf7871 100644 --- a/build.gradle +++ b/build.gradle @@ -28,7 +28,10 @@ tasks.withType(io.gatling.gradle.GatlingRunTask) { "-Dsteps=${findProperty('steps') ?: '2'}", "-DstepDuration=${findProperty('stepDuration') ?: '30'}", "-DconcurrentUsers=${findProperty('concurrentUsers') ?: '3'}", - "-Dduration=${findProperty('duration') ?: '300'}" + "-Dduration=${findProperty('duration') ?: '300'}", + "-DbaselineUsers=${findProperty('baselineUsers') ?: '2'}", + "-DbaselineDuration=${findProperty('baselineDuration') ?: '20'}", + "-DspikeUsers=${findProperty('spikeUsers') ?: '15'}" ] } diff --git a/src/gatling/scala/simulations/SpikeTestSimulation.scala b/src/gatling/scala/simulations/SpikeTestSimulation.scala new file mode 100644 index 0000000..0795c51 --- /dev/null +++ b/src/gatling/scala/simulations/SpikeTestSimulation.scala @@ -0,0 +1,26 @@ +package simulations + +import base.BaseSimulation +import endpoints.BoardEndpoints +import io.gatling.core.Predef._ + +import scala.concurrent.duration._ + +class SpikeTestSimulation extends BaseSimulation { + + private val baselineUsers = sys.props.getOrElse("baselineUsers", "2").toInt + private val baselineDuration = sys.props.getOrElse("baselineDuration", "20").toInt + private val spikeUsers = sys.props.getOrElse("spikeUsers", "15").toInt + + setUp( + BoardEndpoints.all.map { endpoint => + scenarioFromEndpoint(endpoint) + .inject( + constantUsersPerSec(baselineUsers).during(baselineDuration.seconds), + atOnceUsers(spikeUsers), + nothingFor(5.seconds), + constantUsersPerSec(baselineUsers).during(baselineDuration.seconds) + ) + }: _* + ).protocols(httpProtocol) +}