Automated Testing of Code Snippets
Ziel
Erhöhung des Vertrauens in die Korrektheit und Aktualität in die Dokumentation durch automatisiertes, regelmäßiges Testen von Code-Beispielen.
Ausgestaltung
- Nicht alle Code-Beispiele können und sollen automatisiert getestet werden; manche Beispiel sind zu "klein", nur bedingt sinnvoll zu verifizieren
- Abgrenzung zu System Regression Testing; kein Monitoring; keine Performance
- Rein Funktional
- Welche Beispiele wollen wir testen?
- Besser: Welche Beispiele können(!) wir testen
- Markierung und Extraktion dieser Beispiele
- Option1: Beispiele in separaten Files halten und in die MD-Files einbinden via Snippets
- Option2: Extraktions-Skript schreiben (evtl. Markierungen erfinden)
- CI-CD-Pipeline: Wie kommt man auf
login.hpc.tu-dresden.de
?- Gibt es überhaupt einen solchen Login?
- Oder würde man von der wiki-vm immer per
scp example.sh alpha.hpc.tu-dresden.de:/tmp/ && ssh alpha.hpc.tu-dresden.de sbatch --test-only /tmp/example.sh
ausführen? - Alternative1: gitlab-runner auf jedem Zielsystem (Wer kümmert sich um deren Funktionalität?)
- Alternative2: Jacamar; ungünstig, weil das immer gleich Slurm-Jobs generiert
Vorgehen
- Fork des Repositories erstellen
-
.gitlab-ci.yml
kopieren - CI-CD-Pipeline erweitern und testen
Was kann man damit testen?
- Slurm:
sbatch --test-only snippet.sh
- Damit können wir die Slurm-Parameter prüfen
- Keine Aussage über Job-spezifische Attribute (z.B. Job-Id, Warte- und Laufzeit, allokierte Knoten, etc.)
- Sicherheit, weil
read-only
!
- Module
#!/bin/bash
#SBATCH [...]
module purge
module load Foo/12.0
./exe
- Ja, man wird hier einen Fehler für den Aufruf von
exe
bekommen, aber, ob die Module korrekt geladen wurden, sieht man auch