Files
hms-mediaengine/TEST_REPORT.md
T
HMS MediaEngine Agent c4574927fd Phase 1: Cluster-Fundament – Nachrichten, Registry, Paarung, Discovery
- hms_cluster: ClusterMessage (§6.5: Pflichtfelder, Sequenzen, Revisionen,
  execute_at, Trace-ID), CommandTracker (idempotent, vorwärts-only:
  accepted->armed->executed/failed)
- NodeRegistry: online/degraded/stale/offline über Schwellen, UI-Kategorien
  discovered/paired/unknown/incompatible/offline, Doppel-Node-ID blockiert,
  IP-Wechsel erhaelt node_id (§6.3, §6.5)
- Pairing: PIN (TTL 120s, Versuchslimit), Fingerprint (SHA-256 gruppiert),
  Token nur als Hash, Scopes read/control/content_sync/admin, Ablauf +
  sofortiger Widerruf (§6.3, §27.1, ADR-0010)
- Discovery-Modell: _hmsmedia._tcp.local. TXT ohne Secrets, Capability-
  Digest, persistente manuelle Fallback-Liste (ADR-0009)
- ADR-0009 (mDNS + Fallback) und ADR-0010 (Paarung) dokumentiert
- 25 Unit-Tests; Gesamtsuite 183 Tests gruen, Ruff gruen
2026-09-11 01:06:26 +02:00

60 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TEST REPORT
Testberichte gemäß PLAN.md §32. Jeder Eintrag: Testdatum, Commit, Hardware/OS/Treiber, Ergebnisse, offene Abweichungen.
## Automatisierte Tests (Entwicklungsumgebung)
| Datum | Commit | Plattform | Ergebnis |
| --- | --- | --- | --- |
| 2026-09-11 | 0922cc1 (initiale Phase-0-Grundlage) | Kali-Linux-Container, Python 3.13.14, uv, CPU-only | **121 passed** (Unit + Integration), Ruff 0 Fehler |
Testumfang und Ergebnis der Phase-0-Grundlage (alle grün):
- `tests/unit/test_protocol.py` IPC-Envelope, length-prefixed MessagePack-Framing, Idempotenz (10 Tests)
- `tests/unit/test_parameter_engine.py` Prioritäten, LTP/HTP, Release, Frame-Snapshot, Revision-Konflikt (11 Tests)
- `tests/unit/test_artnet_packets.py` ArtDMX/ArtPoll/ArtPollReply gegen offizielle Spezifikation (22 Tests)
- `tests/unit/test_adaptive_quality.py` Hysterese, eine Stufe je Intervall, Mindesthaltezeit, kein Pumpen (8 Tests)
- `tests/unit/test_plugin_manifest.py` Manifest-/ZIP-Validierung, Pfadsicherheit, DMX-Slot-Limit (16 Tests)
- `tests/unit/test_domain_ids.py` stabile Node-ID ohne IP/Hostname-Abhängigkeit (6 Tests)
- `tests/unit/test_fixture_generator.py` Master32/Layer64-Kanallisten (8 Tests)
- `tests/unit/test_pipelines.py` Renderer-Pipeline-Definitionen D3D11/Dev-GL (7 Tests)
- `tests/unit/test_dmx_mapping.py` RisingEdge, 16-Bit-Decoder, Signalverlust-Policies, CONSOLE-Priorität (10 Tests)
- `tests/unit/test_capabilities.py` Tier-Vergabe nur nach Messwerten, kein Fake (6 Tests)
- `tests/unit/test_portable_paths.py` portable Pfade, GStreamer-Environment (5 Tests)
- `tests/integration/test_control_server.py` REST-Health, Commands, Revision-Konflikt, Idempotenz, WebSocket (12 Tests)
- `tests/integration/test_artnet_receiver.py` echter Loopback-UDP-Empfang, ArtPollReply als Media Server, Allowlist (3 Tests)
- `tests/unit/test_persistence.py` WAL/FK/PRAGMA, Migrationen mit Backup, Altdaten, Projekte, Settings, Plugin-Status (18 Tests)
- `tests/unit/test_supervisor.py` echte Kindprozesse: Start/Stop, Crash-Restart, Crashloop, Recovery-Markierung, Environment (10 Tests)
- `tests/unit/test_cluster.py` ClusterMessage/CommandTracker, NodeRegistry-Health/Kategorien, Paarung PIN/Fingerprint/Token/Widerruf, Discovery-TXT, manuelle Liste (25 Tests)
- `tests/integration/test_ipc_connection.py` echter TCP-Loopback, kein Mock (9 Tests)
Werkzeug-Rauchtests: Fixture-CSVs (32/64 Kanäle, 8×64=512) generiert;
Renderer-Dry-Run gibt korrekte D3D11-Pipeline aus; alle JSON-Schemas und
Plugin-Manifeste parsebar; Plugin-Validierung der Beispielplugins fehlerfrei.
## Performancewerte (Gate-0-Messungen)
**Status: ausstehend.** Gate-0-Messungen sind ausschließlich auf Referenz-Windows-Hardware gültig (PLAN.md §29.7, §33). Zu messen:
- D3D11-Hardwaredecode aktiv (kein Software-Decoder) für H.264-Testclip
- GPU-Residenz: `D3D11Memory` von Decoder bis `d3d11videosink` ohne regulären CPU-Rundweg
- Framezeit p50/p95/p99 bei 1080p60 (Mini-PC) und 4K60 (`DESKTOP_FULL`)
- DMX→sichtbarer Frame: p95 ≤ 2 Frames
- Adaptive-Quality-Wechsel (3 Blur-Stufen) atomar ohne Semantikänderung/Stall
## Art-Net-Hardwaretest
Ausstehend Emulator (`tools/artnet_emulator`) bereit; Test gegen echtes Lichtpult in Phase 4 (Gate 4).
## Portabilitätstest
Ausstehend saubere Windows-VM ohne Python/Node/GStreamer, kein Admin (PLAN.md §29.6). Onefolder-Build nach Packaging-ADR (ADR-0005).
## Soak-Zeit
Ausstehend 4 h Desktop / 2 h Pi gemäß §25.125.3.
## Offene Abweichungen
- Entwicklungsumgebung ist ein CPU-only-Linux-Container: keine D3D11-, Display- oder Art-Net-Hardwaremessung möglich. Kein Ergebnis in diesem Report darf als Hardwarenachweis gewertet werden.