prometheus + load-testing

This commit is contained in:
PxlLoewe
2025-06-28 16:05:44 -07:00
parent 246ce0ce22
commit 453cf9a414
20 changed files with 8171 additions and 404 deletions

24
tests/aircrafts.js Normal file
View File

@@ -0,0 +1,24 @@
import http from "k6/http";
import { check, sleep } from "k6";
export const options = {
vus: 10, // virtuelle Nutzer gleichzeitig
duration: "30s", // Testdauer
};
export default function () {
const res = http.get("https://dispatch.premiumag.de/api/aircrafts");
const res2 = http.get("https://dispatch.premiumag.de/api/dispatcher");
check(res, {
"Status Piloten ist 200": (r) => r.status === 200,
"Antwort enthält Daten": (r) => r.body && r.body.length > 1,
});
check(res2, {
"Status Dispatcher ist 200": (r) => r.status === 200,
"Antwort enthält Daten": (r) => r.body && r.body.length > 1,
});
sleep(1); // optional, Wartezeit zwischen Requests
}

16
tests/package.json Normal file
View File

@@ -0,0 +1,16 @@
{
"name": "tests",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"packageManager": "pnpm@10.12.1",
"devDependencies": {
"artillery": "^2.0.23"
}
}

40
tests/pilotenWS.yml Normal file
View File

@@ -0,0 +1,40 @@
config:
target: "http://localhost:3002" # URL des Dispatch-Servers
phases:
- name: "0->50 in 10 min"
duration: "10m"
arrivalRate: 0
rampTo: 50
- name: "keep 50 for 20 min"
duration: "20m"
arrivalRate: 50
- name: "50->0 in 10 min"
duration: "10m"
arrivalRate: 50
rampTo: 0
engines:
socketio: {}
socketio:
transport: "websocket"
query: "uid=c69741db-af39-499c-8367-8d2b38531b9c" # Beispiel UID, kann angepasst werden
scenarios:
- engine: socketio
flow:
- emit:
channel: "connect-pilot"
data:
logoffTime: "14:00"
stationId: "1"
debug: true
- waitFor:
event: "aircraft-update"
timeout: 10000
assign: "aircraftData"
- log: "Empfangenes aircraft-update Event: {{ aircraftData }}"
- function: |
// In JavaScript kannst du jetzt die id extrahieren und in session speichern
const aircraftData = JSON.parse(JSON.stringify(session.vars.aircraftData));
session.vars.aircraftId = aircraftData.id;
return session;
- log: "Aircraft ID gespeichert: {{ aircraftId }}"