85 lines
2.4 KiB
Rust
85 lines
2.4 KiB
Rust
// 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}"
|
|
);
|
|
}
|
|
}
|