diff --git a/docker/worker/test_verwaltung.py b/docker/worker/test_verwaltung.py deleted file mode 100644 index d83d099..0000000 --- a/docker/worker/test_verwaltung.py +++ /dev/null @@ -1,123 +0,0 @@ -"""Tests des Verwaltungsfensters — nur die Logik, nicht die Oberfläche. - -Die Oberfläche selbst (tkinter) ist ausgenommen; geprüft wird, was das Fenster -ANZEIGT: Zustand des Workers, Aufgabentexte, Log-Ausschnitt. -""" - -import verwaltung - - -# --- Was Rippy über diesen Worker weiß -------------------------------------- - - -CAPS = {"workers": [ - {"name": "rippy-hauptworker", "online": True, "encoders": ["cpu-x265"], - "info": {"cpu_kerne": "4"}}, - {"name": "tobisnicerpc", "online": False, "encoders": ["cpu-x265", "vce"], - "info": {"cpu_modell": "AMD Ryzen 7 9700X", "cpu_kerne": "16", - "cpu_simd": "avx512f"}}, -]} - - -def test_zustand_findet_den_eigenen_worker(): - z = verwaltung.worker_zustand(CAPS, "tobisnicerpc") - assert z["bekannt"] is True - assert z["online"] is False - assert z["encoders"] == ["cpu-x265", "vce"] - assert z["info"]["cpu_simd"] == "avx512f" - - -def test_zustand_bei_unbekanntem_worker(): - z = verwaltung.worker_zustand(CAPS, "gibt-es-nicht") - assert z == {"bekannt": False, "online": False, "encoders": [], "info": {}} - - -def test_zustand_ohne_antwort_von_rippy(): - """Rippy nicht erreichbar → das Fenster muss trotzdem etwas sagen können.""" - assert verwaltung.worker_zustand(None, "x")["bekannt"] is False - assert verwaltung.worker_zustand({}, "x")["bekannt"] is False - - -# --- Die Statuszeile -------------------------------------------------------- - - -def test_status_nennt_das_wirkliche_problem(): - """Drei Lagen, drei klare Sätze — nicht ein „unbekannt" für alles.""" - unbekannt = verwaltung.worker_zustand(CAPS, "gibt-es-nicht") - text, farbe = verwaltung.status_text(unbekannt, None) - assert "kennt diesen Worker nicht" in text - assert farbe == verwaltung.ROSE - - offline = verwaltung.worker_zustand(CAPS, "tobisnicerpc") - text, farbe = verwaltung.status_text(offline, None) - assert "NICHT erreichbar" in text - assert farbe == verwaltung.ROSE - - online = verwaltung.worker_zustand(CAPS, "rippy-hauptworker") - text, farbe = verwaltung.status_text(online, None) - assert "bereit" in text - assert farbe == verwaltung.EMERALD - - -def test_status_zeigt_den_laufenden_job(): - online = verwaltung.worker_zustand(CAPS, "rippy-hauptworker") - job = {"title": "Akira", "status": "transcoding", "progress": 42, - "eta_text": "noch ca. 3 h 07 min"} - text, farbe = verwaltung.status_text(online, job) - assert "Akira" in text and "42 %" in text and "3 h 07 min" in text - assert farbe == verwaltung.AMBER - - -# --- Aufgabenliste ---------------------------------------------------------- - - -def test_job_text_uebersetzt_die_status_woerter(): - """„transcoding" sagt einem Nicht-Entwickler nichts.""" - assert verwaltung.job_text( - {"title": "Akira", "status": "transcoding", "progress": 7} - ) == "Akira — komprimiert, 7 %" - assert verwaltung.job_text( - {"title": "Alien", "status": "completed"}) == "Alien — fertig" - assert verwaltung.job_text( - {"title": "Alien", "status": "failed"}) == "Alien — Fehler" - assert verwaltung.job_text( - {"title": "Alien", "status": "pending"}) == "Alien — wartet" - - -def test_job_text_ohne_titel_nimmt_die_kurze_id(): - text = verwaltung.job_text( - {"id": "95afdc89-2426-4d44", "status": "failed"}) - assert text == "95afdc89 — Fehler" - - -def test_job_text_haengt_keine_restzeit_an_fertige_jobs(): - text = verwaltung.job_text( - {"title": "X", "status": "completed", "progress": 100, - "eta_text": "noch ca. 5 min"}) - assert "5 min" not in text - assert "%" not in text - - -# --- Log-Ausschnitt --------------------------------------------------------- - - -def test_letzte_zeilen_schneidet_hinten_ab(): - import io as _io - - inhalt = "\n".join(f"Zeile {i}" for i in range(500)) - zeilen = verwaltung.letzte_zeilen( - "egal", anzahl=5, oeffnen=lambda p: _io.StringIO(inhalt)) - assert zeilen == ["Zeile 495", "Zeile 496", "Zeile 497", "Zeile 498", "Zeile 499"] - - -def test_letzte_zeilen_ohne_datei_ist_leer(): - def kaputt(p): - raise OSError("keine Datei") - - assert verwaltung.letzte_zeilen("gibts-nicht", oeffnen=kaputt) == [] - - -def test_hole_ohne_adresse_fragt_nicht(): - """Ohne RIPPY_TRAY_HOST darf nichts versucht werden — sonst hängt das - Fenster beim Öffnen am Timeout.""" - assert verwaltung.hole("/jobs", host="") is None