// Contract tests for the hardware media smoke harness. // // Scope: inspect `scripts/manual/run_hardware_media_smoke.sh`. // Why: hardware acceleration regressions are expensive to debug in the lab, so // the manual proof script must stay artifact-backed, hardware-first, and safe // to run without mutating Theia's USB gadget state. const HARDWARE_SMOKE: &str = include_str!(concat!( env!("CARGO_MANIFEST_DIR"), "/scripts/manual/run_hardware_media_smoke.sh" )); #[test] fn hardware_media_smoke_stays_manual_and_artifact_backed() { for marker in [ "Manual: local/remote hardware media smoke evidence; not part of CI.", "summary_json: ${SUMMARY_JSON}", "summary_txt: ${SUMMARY_TXT}", "upstream-hevc-nvenc.hevc", "upstream-hevc-cuda-frame.png", "downstream-h264-nvenc.h264", "downstream-h264-cuda-frame.png", "audio-aac-roundtrip.wav", "audio-aac-roundtrip-rms.json", ] { assert!( HARDWARE_SMOKE.contains(marker), "hardware smoke harness should preserve artifact marker {marker}" ); } } #[test] fn hardware_media_smoke_uses_accelerated_video_paths() { for marker in [ "hevc_nvenc", "h264_nvenc", "hevc_cuvid", "h264_cuvid", "vah264dec", "vulkanh264dec", "v4l2slh264dec", "v4l2slh265dec", "LESAVKA_ALLOW_VULKAN_H264_DECODER", "no sudo, no systemctl, no UVC gadget reset", ] { assert!( HARDWARE_SMOKE.contains(marker), "hardware smoke harness should include hardware/safety marker {marker}" ); } for forbidden in [ "x264enc", "x265enc", "avdec_h264", "avdec_h265", "openh264dec", "decodebin", "LESAVKA_ALLOW_SOFTWARE_VIDEO=1", "LESAVKA_FORCE_GADGET_REBUILD", ] { assert!( !HARDWARE_SMOKE.contains(forbidden), "hardware smoke harness should not depend on {forbidden}" ); } } #[test] fn hardware_media_smoke_has_optional_non_mutating_theia_probe() { for marker in [ "LESAVKA_RUN_REMOTE_MEDIA_SMOKE", "LESAVKA_SERVER_HOST", "no service/gadget mutation", "set LESAVKA_RUN_REMOTE_MEDIA_SMOKE=1", "gst-inspect-1.0 v4l2slh265dec", ] { assert!( HARDWARE_SMOKE.contains(marker), "remote smoke probe should preserve marker {marker}" ); } }