Hinter Web-Diensten steht h\xe4ufig eine Zusammenstellung verschiedener Komponenten wie Webserver, Datenbanken oder selbst entwickelter Software. Der Vortrag zeigt wie das Backend der Videokonferenzsoftware OpenTalk in Integrationstests verschiedene Szenarien mit unterschliedlichen Container-Kompositionen implementiert.\n\nUm ein Videokonferenzsystem auf Basis der Open-Source-Software [OpenTalk](https://opentalk.eu/) zur Verf\xfcgung zu stellen, werden verschiedene Komponenten verwendet, die h\xe4ufig in Containern laufen:\n\n- Die "Kernkomponente" [*OpenTalk Controller*](https://gitlab.opencode.de/opentalk/controller) (eine oder mehrere Instanzen davon)\n- Das [*OpenTalk Web-Frontend*](https://gitlab.opencode.de/opentalk/web-frontend)\n- [Janus](https://janus.conf.meetecho.com/) als WebRTC-Service\n- [PostgreSQL](https://www.postgresql.org/)-Datenbankservice\n- [RabbitMQ](https://www.rabbitmq.com/) zum Austausch von Nachrichten zwischen den Komponenten\n- [Redis](https://redis.io/) zur Speicherung der laufenden Videokonferenzen\n- OIDC-Provider, meist [Keycloak](https://www.keycloak.org/)\n- [*OpenTalk SMTP-Mailer*](https://gitlab.opencode.de/opentalk/smtp-mailer) zum Versand von Einladungs-Mails\n- [*OpenTalk Obelisk*](https://gitlab.opencode.de/opentalk/obelisk) als Dial-In-Service\n- [*OpenTalk Recorder*](https://gitlab.opencode.de/opentalk/recorder) zum Aufnehmen oder Streamen von Videokonferenzen\n\nF\xfcr die eigenen Komponenten waren bereits in weiten Teilen Unit-Tests vorhanden, die von der CI ausgef\xfchrt werden. Integrationstests, welche das Backend auf die korrekte Abarbeitung von Web-Requests und Websocket-Verbindungen in verschiedenen Szenarien pr\xfcfen, fehlten jedoch weitgehend.\n\nBeispiele f\xfcr solche Szenarien sind:\n\n- Simples Setup mit einem *OpenTalk Controller* und den Beispiel-Accounts *Alice*, *Bob*, *Charlie*, *Dave* und *Erin*\n- Komplexeres Setup mit mehreren *OpenTalk Controllern*\n- Ausfallsszenarien (z.B. nachstellen dass *RabbitMQ* w\xe4hrend des Betriebs ausf\xe4llt und wieder verf\xfcgbar wird)\n\nDer Vortrag skizziert, wie solch ein Integrationstest aussieht. Es wird gezeigt wie Szenarien aufgebaut sind und welche Methoden wir verwenden um den Code les- und wartbar zu halten. Ans\xe4tze die wir wieder verworfen oder ersetzt haben, werden kurz angeschnitten, und was wir daraus gelernt haben. \xdcber Technische und organisatorische H\xfcrden, die wir \xfcberwinden mussten oder noch \xfcberwinden m\xfcssen, wird klarerweise auch berichtet.\n\nDie gezeigten Code-Beispiele sind zum Gro\xdfteil in [Rust](https://www.rust-lang.org/), da der Backend-Teil von OpenTalk in Rust geschrieben ist. Wenngleich Kenntnis dieser Sprache von Vorteil ist, sind die Beispiele in einer Form gehalten, die auch ohne spezifisches Vorwissen gut genug verst\xe4ndlich sein sollte.\nabout this event: https://pretalx.linuxtage.at/glt24/talk/YQKPAS/