feat(Gatlin): Setup
Added Gatlin Setup and a test "test".
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
gatling {
|
||||
http {
|
||||
# Disable Google Analytics telemetry
|
||||
enableGA = false
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration>
|
||||
|
||||
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{HH:mm:ss.SSS} [%-5level] %logger{15} - %msg%n%rEx</pattern>
|
||||
</encoder>
|
||||
<immediateFlush>false</immediateFlush>
|
||||
</appender>
|
||||
|
||||
<!-- uncomment and set to DEBUG to log all failing HTTP requests -->
|
||||
<!-- uncomment and set to TRACE to log all HTTP requests -->
|
||||
<!--<logger name="io.gatling.http.engine.response" level="TRACE" />-->
|
||||
|
||||
<root level="WARN">
|
||||
<appender-ref ref="CONSOLE" />
|
||||
</root>
|
||||
|
||||
</configuration>
|
||||
@@ -0,0 +1,26 @@
|
||||
package base
|
||||
|
||||
import io.gatling.core.Predef._
|
||||
import io.gatling.http.Predef._
|
||||
import io.gatling.http.protocol.HttpProtocolBuilder
|
||||
|
||||
/**
|
||||
* Base class for all simulations.
|
||||
*
|
||||
* Reads runtime configuration from JVM system properties set by Gradle:
|
||||
* -Dtarget.baseUrl=... (via -PbaseUrl=... on the Gradle command line)
|
||||
* -Dgatling.authToken=... (via -PauthToken=... or env GATLING_AUTH_TOKEN)
|
||||
*/
|
||||
abstract class BaseSimulation extends Simulation {
|
||||
|
||||
protected val baseUrl: String =
|
||||
sys.props.getOrElse("target.baseUrl", "http://localhost:8080")
|
||||
|
||||
private val authToken: String =
|
||||
sys.props.getOrElse("gatling.authToken", "")
|
||||
|
||||
protected val httpProtocol: HttpProtocolBuilder = http
|
||||
.baseUrl(baseUrl)
|
||||
.header("Authorization", s"Bearer $authToken")
|
||||
.header("Accept", "application/json")
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package simulations
|
||||
|
||||
import base.BaseSimulation
|
||||
import io.gatling.core.Predef._
|
||||
import io.gatling.http.Predef._
|
||||
|
||||
/**
|
||||
* Smoke test: verifies the cluster is reachable and the bearer token is accepted.
|
||||
*
|
||||
* Runs a single virtual user that hits GET /healthz and asserts:
|
||||
* - HTTP 200
|
||||
* - Response time under 2 000 ms
|
||||
*
|
||||
* Use this as a reference when writing new simulations.
|
||||
*
|
||||
* Run:
|
||||
* ./gradlew gatlingRun -PbaseUrl=http://<cluster-service> -PauthToken=<token>
|
||||
*/
|
||||
class SmokeTestSimulation extends BaseSimulation {
|
||||
|
||||
private val healthzPath: String =
|
||||
sys.props.getOrElse("healthz.path", "/healthz")
|
||||
|
||||
private val scn = scenario("Smoke Test")
|
||||
.exec(
|
||||
http(s"GET $healthzPath")
|
||||
.get(healthzPath)
|
||||
.check(status.is(200))
|
||||
.check(responseTimeInMillis.lte(2000))
|
||||
)
|
||||
|
||||
setUp(
|
||||
scn.inject(atOnceUsers(1))
|
||||
).protocols(httpProtocol)
|
||||
}
|
||||
Reference in New Issue
Block a user