Files
hms-mediaengine/TEST_REPORT.md
T
HMS MediaEngine Agent 75ca88ddbe Phase 3: Alle 24 Pflicht-Plugins (10 Generatoren + 14 Filter, §15.1/§15.2)
- 10 Generatoren mit Manifest + HLSL + GLSL + GLES je Plugin:
  solid, gradient, checker_grid, stripes_chaser, noise_clouds
  (AQ Octaves 2/3/5), plasma, wave_bars, shapes, drops_ripples,
  starfield (AQ 32/128/512 Partikel)
- 14 Filter mit Manifest + Shader je Backend:
  transform2d (keine AQ-Geometriereduktion), color_adjust,
  gradient_map, blur_sharpen (separabel 2-Pass, AQ 5/9/17 Samples),
  pixelate_quantize, mirror_tile, kaleidoscope, wave_displace
  (Noise adaptiv, Amount unverändert), rgb_split, glow_bloom
  (Kaskade 2/4/8), edge_emboss, vignette, strobe_pulse (Safety
  clamp 2 Hz, nie durch DMX allein freischaltbar), feedback_trails
  (Double-Buffer, Clear-Trigger, §15.3)
- Uniform-Vertrag §14.4 in allen 75 Shadern; Generatoren sampeln nie
  u_input_texture; alle Filter mit mix-0-Bypass (§15.3)
- 195 parametrisierte Plugin-Tests: Manifest/Backends/DMX-Slots<=8/
  AQ>=3 Varianten/Uniform-Satz/Vollstaendigkeit exakt 10+14
- Nachtraegliche Manifest-Fixes: AQ-Bloecke fuer 4 1-Pass-Filter,
  mix-Parameter fuer feedback_trails (Slot-Overlap vermieden)
- Gesamtsuite 506 gruen, Ruff gruen
2026-09-11 01:53:48 +02:00

74 lines
5.2 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)
- `tests/integration/test_state_sync_chain.py` State-Sync-Kette Store→IPC→Mirror ohne Mocks (4 Tests)
- `tests/unit/test_plugin_lifecycle.py` Lifecycle-Graph, Quarantäne, Show-Lock (14 Tests)
- `tests/unit/test_builtin_plugins.py` parametrisiert über alle 24 Pflicht-Plugins: Manifest, Backends, DMX-Slots ≤8, AQ ≥3 Varianten, Uniform-Vertrag, Generator-Sampling-Verbot, Filter-Mix-Bypass, Vollständigkeit 10+14 (195 Tests)
## Builtin-Plugin-Validierung (Phase 3)
**Alle 24 Pflicht-Plugins aus PLAN.md §15 validiert (ALL OK):**
- 10 Generatoren (§15.1): solid, gradient, checker_grid, stripes_chaser, noise_clouds, plasma, wave_bars, shapes, drops_ripples, starfield je Manifest + HLSL + GLSL + GLES, alle mit AQ-Varianten (z. B. noise_clouds: Octaves 2/3/5; starfield: 32/128/512 Partikel)
- 14 Filter (§15.2): transform2d, color_adjust, gradient_map, blur_sharpen (2-Pass separabel), pixelate_quantize, mirror_tile, kaleidoscope, wave_displace, rgb_split, glow_bloom, edge_emboss, vignette, strobe_pulse (Rate hart auf 2 Hz geklemmt, Safety-Doku), feedback_trails (Double-Buffer, Clear-Trigger)
- 25 HLSL-Dateien, 50 GLSL/GLES-Dateien, 24 Manifeste; alle semantisch identisch über d3d11/gl/gles (§12.6)
- Uniform-Vertrag §14.4 in jedem Shader geprüft; Generatoren sampeln nie die Eingabetextur; Filter mit mix-0-Bypass (§15.3)
**Hinweis (ADR-0008):** Shader-Kompilierung auf GPU und Golden Images sind Teil des Windows-Durchlaufs (§29.3); hier vorliegend: Manifest-/Struktur-/Konventions-Validierung.
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.