mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-04-23 02:46:36 +00:00
feat(testing): add max_frames parameter to E2EHarness
Caps the iteration length (and the matching GT slice) when set, so CI tiers can stay fast on multi-thousand-frame sequences like EuRoC MH_01 (3682 frames ≈ 3+ hours at 3-5s/frame). Also useful for eyeballing a new adapter's first N frames before committing to a full run. Three new harness tests cover truncation, explicit None, and over-large limits. No change to existing adapters or downstream tests. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -35,3 +35,32 @@ async def test_harness_captures_ground_truth_as_enu():
|
||||
east_disp = result.ground_truth[-1, 0] - result.ground_truth[0, 0]
|
||||
# Allow 5% tolerance for the lat/lon → ENU conversion approximation
|
||||
assert abs(east_disp - 4.0) < 0.5
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_harness_max_frames_truncates_iteration():
|
||||
# Adapter says 10 frames; harness with max_frames=3 should stop at 3.
|
||||
adapter = SyntheticAdapter(num_frames=10, fps=5.0)
|
||||
harness = E2EHarness(adapter, max_frames=3)
|
||||
result = await harness.run()
|
||||
assert result.num_frames_submitted == 3
|
||||
# GT aligned to the same truncation so downstream metrics match lengths
|
||||
assert result.ground_truth.shape[0] == 3
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_harness_max_frames_none_runs_full():
|
||||
# Explicit None = no limit (same as omitting the parameter).
|
||||
adapter = SyntheticAdapter(num_frames=4, fps=5.0)
|
||||
harness = E2EHarness(adapter, max_frames=None)
|
||||
result = await harness.run()
|
||||
assert result.num_frames_submitted == 4
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_harness_max_frames_larger_than_dataset_is_harmless():
|
||||
# Limit above dataset size should not over-extend.
|
||||
adapter = SyntheticAdapter(num_frames=4, fps=5.0)
|
||||
harness = E2EHarness(adapter, max_frames=100)
|
||||
result = await harness.run()
|
||||
assert result.num_frames_submitted == 4
|
||||
|
||||
Reference in New Issue
Block a user