From 427ed920d00601a2bf715a51409a8d32d86a1ada Mon Sep 17 00:00:00 2001 From: Leon Hermann Date: Tue, 5 May 2026 17:17:38 +0200 Subject: [PATCH] feat: NCS-62, NCS-64 Endurance Test, Spike Test (#6) Added two new types of tests --------- Co-authored-by: LQ63 Reviewed-on: https://git.janis-eccarius.de/NowChess/Gatlin/pulls/6 --- build.gradle | 7 ++++- .../scala/endpoints/BoardEndpoints.scala | 6 ++--- .../simulations/EnduranceTestSimulation.scala | 22 ++++++++++++++++ .../simulations/SpikeTestSimulation.scala | 26 +++++++++++++++++++ 4 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 src/gatling/scala/simulations/EnduranceTestSimulation.scala create mode 100644 src/gatling/scala/simulations/SpikeTestSimulation.scala diff --git a/build.gradle b/build.gradle index 6c1e75e..1cf7871 100644 --- a/build.gradle +++ b/build.gradle @@ -26,7 +26,12 @@ tasks.withType(io.gatling.gradle.GatlingRunTask) { "-DstartUsers=${findProperty('startUsers') ?: '2'}", "-DusersIncrement=${findProperty('usersIncrement') ?: '2'}", "-Dsteps=${findProperty('steps') ?: '2'}", - "-DstepDuration=${findProperty('stepDuration') ?: '30'}" + "-DstepDuration=${findProperty('stepDuration') ?: '30'}", + "-DconcurrentUsers=${findProperty('concurrentUsers') ?: '3'}", + "-Dduration=${findProperty('duration') ?: '300'}", + "-DbaselineUsers=${findProperty('baselineUsers') ?: '2'}", + "-DbaselineDuration=${findProperty('baselineDuration') ?: '20'}", + "-DspikeUsers=${findProperty('spikeUsers') ?: '15'}" ] } diff --git a/src/gatling/scala/endpoints/BoardEndpoints.scala b/src/gatling/scala/endpoints/BoardEndpoints.scala index ae2057b..71ba204 100644 --- a/src/gatling/scala/endpoints/BoardEndpoints.scala +++ b/src/gatling/scala/endpoints/BoardEndpoints.scala @@ -6,9 +6,9 @@ object BoardEndpoints { val createGame: Endpoint = Endpoint( name = "Create Game", - method = "POST", - path = "/api/board/game/", - expectedStatus = 201 + method = "GET", + path = "/api/account/official-bots/", + // expectedStatus = 200 ) val all: List[Endpoint] = List(createGame) diff --git a/src/gatling/scala/simulations/EnduranceTestSimulation.scala b/src/gatling/scala/simulations/EnduranceTestSimulation.scala new file mode 100644 index 0000000..e3a4868 --- /dev/null +++ b/src/gatling/scala/simulations/EnduranceTestSimulation.scala @@ -0,0 +1,22 @@ +package simulations + +import base.BaseSimulation +import endpoints.BoardEndpoints +import io.gatling.core.Predef._ + +import scala.concurrent.duration._ + +class EnduranceTestSimulation extends BaseSimulation { + + private val concurrentUsers = sys.props.getOrElse("concurrentUsers", "3").toInt + private val duration = sys.props.getOrElse("duration", "300").toInt + + setUp( + BoardEndpoints.all.map { endpoint => + scenarioFromEndpoint(endpoint) + .inject( + constantConcurrentUsers(concurrentUsers).during(duration.seconds) + ) + }: _* + ).protocols(httpProtocol) +} 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) +}