From 254ddd7d314bc4dac039e9156d848f0bda1ddd43 Mon Sep 17 00:00:00 2001 From: jaguililla Date: Mon, 23 Sep 2024 22:32:17 +0200 Subject: [PATCH] Add Gatling stress test :wip --- .mvn/parent.xml | 15 +++++++++- pom.xml | 4 ++- .../appointments/GatlingSimulation.java | 28 +++++++++++++++++++ 3 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 src/test/java/com/github/jaguililla/appointments/GatlingSimulation.java diff --git a/.mvn/parent.xml b/.mvn/parent.xml index ca142ed..a921e1f 100644 --- a/.mvn/parent.xml +++ b/.mvn/parent.xml @@ -34,7 +34,6 @@ ${openapi.package}.client ${project.groupId}/${project.artifactId} docker.io - verify undertow ui @@ -44,6 +43,8 @@ 0.8.12 1.3.0 + 3.12.0 + 4.9.6 @@ -103,6 +104,12 @@ kafka test + + io.gatling.highcharts + gatling-charts-highcharts + ${gatling.version} + test + @@ -237,6 +244,12 @@ + + + io.gatling + gatling-maven-plugin + ${gatling.maven.version} + diff --git a/pom.xml b/pom.xml index b23163e..0b7e91c 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,9 @@ ${openapi.package}.client undertow ui - deploy + + com.github.jaguililla.appointments.GatlingSimulation + diff --git a/src/test/java/com/github/jaguililla/appointments/GatlingSimulation.java b/src/test/java/com/github/jaguililla/appointments/GatlingSimulation.java new file mode 100644 index 0000000..8145e78 --- /dev/null +++ b/src/test/java/com/github/jaguililla/appointments/GatlingSimulation.java @@ -0,0 +1,28 @@ +package com.github.jaguililla.appointments; + +import static io.gatling.javaapi.core.CoreDsl.*; +import static io.gatling.javaapi.http.HttpDsl.*; + +import io.gatling.javaapi.core.*; +import io.gatling.javaapi.http.*; + +public class GatlingSimulation extends Simulation { + + String baseUrl = "http://localhost:18080"; + + ChainBuilder appointmentsCrud = exec( + http("Create").post("/appointments").check(status().is(201)), + pause(1), + http("Read").get("/appointments").check(status().is(200)), + pause(1), + http("Delete").delete("/appointments").check(status().is(200)), + pause(1) + ); + + HttpProtocolBuilder httpProtocol = http.baseUrl(baseUrl); + ScenarioBuilder users = scenario("Appointments").exec(appointmentsCrud); + + { + setUp(users.injectOpen(rampUsers(10).during(10))).protocols(httpProtocol); + } +}