technology overview

1. HTML-FORM → Quarkus-Backend:

Die Parameter und Dateien werden vom Html-Form über MultipartFormDataInput zum Quarkus-Backend geschickt. Files werden dann in der Datenbank gespeichert. Abschließend wird das abgegebene Projekt und die für das Testen benötigten Files in dem "project-under-test" gespeichert.

2. LeoCode-Backend→Testing-API:

Über Kafka wird die Abgabe an die Testing API geschickt. Genauer wird die Abgabe über den "submission-input" channel weitergeschickt. In der Testing-API wird es dann für Jenkins vorbereitet und dann damit auch weitergegeben.

3. Testing-API → Jenkins:

Jenkins wird per REST API angesprochen und bekommt den Pfad der zu testenden Dateien übergeben. Jenkins führt im Anschluss die Tests aus.

4. Jenkins → Testing-API:

Das Ergebnis von den Tests wird in der Submission Klasse im Result-Feld gespeichert.

5. Testing-API → LeoCode-Backend:

Das Backend bekommt das gesamte, vollständig geprüfte Projekt über Kafka wieder zurück. Dies geschieht im "submission-result" channel.

6. Testing-API → Frontend:

In den Endpoints ist ebenso ein "submission-result", worüber Neuheiten an das Frontend übergeben werden.

7. Kafka → Testing-Api

Das Submission-Objekt wird an die Testing-Api weitergeben.

8. Testing-Api → Kafka

Das Ergebnis der ausgeführten Tests wird von der Testing-Api zurückgeliefert.

9. Kafka → Backend

Die Testergebnisse werden zurück an das Backend übergeben.

10. Backend → Kafka

Hier werden die wichtigen Files/Infos übergeben die für die Tests benötigt werden.