LoadTestEnvironment
Beschreibung
Dieses Repository kontrolliert die CMI Lasttest Umgebung und setzt sich hierbei aus mehreren Komponenten zusammen.
- Einer Pipeline in
.github/workflows/loadtests.yml
,
die die gewählten Testszenarien in der Azure Umgebung laufen lässt - Ein CLI, das die Umgebung für die gewählten Testfälle vorbereitet und gleichzeitig als CLient der Tests fungiert.
- Testfälle im
.yml
format, die von der CLI ausgeführt werden
und deren Metriken in eine Datenbank der Azure Umgebung gelogged werden
Umgebung
Diese Lasttestumgebung ähnelt einer realistischen Umgebung eines Kunden.
Die ServicePrincipals sollen dazu dienen, die virtuellen Maschinen
zu starten (vorerst optional).
Github Agents sind mittlerweile dazu in der Lage, auf private VNets zuzugreifen.
ApplikationsServer 1
Auf dem ersten Applikationsserver laufen der CMI Server Service und mglw. noch weitere exotische Services ( zB der Cdws ).
Die Version des CMI Server wird durch den MetaStack verwaltet.
Der Webserver ( Caddy ) wird von diesem ebenfalls verwaltet und gestartet.
ApplikationsServer 2
Auf dem 2. Applikationsserver laufen dedizierte CMI Webservices,
die ebenfalls Ziel eines Lasttests sein können.
Ein essentieller Service ist hierbei der STS3,
in dem die TestAkteure mittels ClientCredentialsBackendUser hinterlegt sind.
LasttestServer
Der LasttestServer soll eine gewünschte Anzahl an Stress
auf den ApplikationsServern erzeugen.
Hierzu wird der LiveDataProfiler herangezogen,
da die Probleme im CMI System zumeist auf den GarbageCollector zurückzuführen sind.
Die Menge des Stress wird als Parameter in der Github Action hinterlegt.
DbServer
Der DbServer hält die Datenbanken der CMI Server, sowie die Metriken,
die durch die Lasttests erzeugt wurden.
Diese Metriken sollen in Zukunft mittels PowerBI ausgewertet werden.
Github Action
Die Lasttests werden über eine GithubAction ausgeführt.
Diese Action wird zum Einen als Nightly ausgeführt,
soll allerdings auch manuell ausgeführt werden können.
Während der manuellen Ausführung sollen diverse Parameter gesetzt werden.