update test and build scripts
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import os
|
||||
|
||||
import numpy as np
|
||||
import pytest
|
||||
|
||||
|
||||
@pytest.mark.slow
|
||||
def test_vnormal_longrun_no_outlier_jumps(sensor_factory, available_backends):
|
||||
preferred = os.getenv("ORISYS_LONGRUN_BACKEND", "cupy")
|
||||
backend = preferred if preferred in available_backends else "cpu"
|
||||
|
||||
frames = int(os.getenv("ORISYS_LONGRUN_FRAMES", "1200"))
|
||||
ratio_limit = float(os.getenv("ORISYS_LONGRUN_MAX_P99_P95_RATIO", "6.0"))
|
||||
|
||||
sensor = sensor_factory(backend=backend)
|
||||
deltas = []
|
||||
prev = None
|
||||
try:
|
||||
for _ in range(frames):
|
||||
img = sensor.get_img()
|
||||
assert img is not None
|
||||
sensor.compute_deformation(check_motion=False)
|
||||
(vnormal,) = sensor.read_info(sensor.info.VNORMAL)
|
||||
assert np.isfinite(vnormal).all()
|
||||
|
||||
if prev is not None:
|
||||
deltas.append(float(np.mean(np.abs(vnormal - prev))))
|
||||
prev = vnormal.copy()
|
||||
finally:
|
||||
sensor.disconnect()
|
||||
|
||||
if len(deltas) < 30:
|
||||
pytest.skip("Not enough frames to evaluate stability.")
|
||||
|
||||
p95 = float(np.percentile(deltas, 95))
|
||||
p99 = float(np.percentile(deltas, 99))
|
||||
ratio = p99 / (p95 + 1e-9)
|
||||
assert ratio < ratio_limit, (
|
||||
f"Long-run jump risk detected on {backend}: p99/p95={ratio:.3f} "
|
||||
f"(limit={ratio_limit})."
|
||||
)
|
||||
Reference in New Issue
Block a user