Skip to content

test(bench): 33 of 40 benchmark harness test modules never run in CI; two are already broken #1679

Closed

Description

@DecisionNerd

Problem

Only 7 of the 40 benchmark-harness test modules in benchmarks/tests/ run in CI. They are the test_progressive_* and test_qualification_operator modules, named in the rust-tests job of .github/workflows/test.yml. No workflow, Makefile target or scripts/ci runner names the other 33, including tests.test_benchexec_authority, the BenchExec boundary that the benchmark policy relies on. Unittest discovery doesn't find them either, because benchmarks/tests has no __init__.py.

Two of the unrun modules are already broken on main (edc91bc9e). I ran each module with cd benchmarks && PYTHONPATH=harness uv run --locked python -m unittest tests.<module> and an ext4 TMPDIR: 38 of 40 modules pass, 453 tests in total.

  • test_smoke, a real regression: test_checked_in_fixtures_are_discoverable fails with RuntimeError: fixture has no schema: g500-ladder-qualification.schema.json. docs: move evidence out of the tree, prune orphan dev docs, give ADRs a lifecycle (#1625) #1628 (2eee7a075, 2026-09-29) moved that JSON Schema into benchmarks/schemas/. graphforge_bench.smoke.discover_fixtures requires every *.json under each fixture directory to have a top-level "schema" key, but a JSON Schema document has $schema/$id instead. The check was never run, so the move went unnoticed.
  • test_measurement_tools: fails to import with ModuleNotFoundError: No module named 'pytest'. The module imports pytest, but the benchmarks project's locked environment does not provide it.

Scope

  1. Run every benchmarks/tests/test_*.py module in the CI Gate. Either use an explicit list checked by a policy assertion that fails when a module is missing from it, or an importable package with discovery. A new module must not be able to escape CI silently.
  2. Fix both failures at their root:
    • make discover_fixtures treat JSON Schema documents correctly, or move the schema back, whichever is actually right;
    • make test_measurement_tools runnable in the locked environment, or remove its dependency on pytest.
  3. Keep the benchmark measurement policy (scripts/ci/benchmark-measurement-policy.py) passing.

Acceptance criteria

  • The CI Gate log shows all benchmarks/tests modules running and passing, with a test count of at least 453.
  • Adding a new benchmarks/tests/test_*.py without wiring it fails a repository policy check (show it with a mutation), or is picked up automatically.
  • test_smoke and test_measurement_tools pass, with the root cause of each fixed; neither is skipped.
Per-module local results (module | tests run)
test_benchexec_authority|Ran 13
test_esc_readiness|Ran 5
test_fly_adapter|Ran 16
test_fly_tiny_qualification|Ran 21
test_gdc_contracts|Ran 18
test_gdc_finbench_transaction|Ran 12
test_gdc_graphalytics|Ran 14
test_gdc_measurement_policy|Ran 6
test_gdc_snb_bi|Ran 18
test_gdc_snb_interactive|Ran 9
test_gdc_spb_inventory|Ran 5
test_hybrid_cgroup_v2|Ran 5
test_ingestion_attribution|Ran 10
test_ladder_bundle_ingest|Ran 5
test_ladder_retention|Ran 14
test_lifecycle_growth|Ran 9
test_lifecycle_runtime|Ran 3
test_local_admission|Ran 14
test_measurement_tools|Ran 1
test_native_ladder_bundle|Ran 9
test_native_ladder_controller|Ran 15
test_parity_gate|Ran 12
test_parquet_root_1286|Ran 2
test_progressive_esc|Ran 9
test_progressive_fly_transport|Ran 22
test_progressive_host_run|Ran 16
test_progressive_ladder_qualification|Ran 5
test_progressive_profile_queries|Ran 2
test_progressive_provider_attempt|Ran 22
test_progressive_provider_plan|Ran 12
test_progressive_provider_run|Ran 16
test_progressive_qualification|Ran 17
test_progressive_recovery_lease|Ran 6
test_progressive_run|Ran 35
test_progressive_storage_qualification|Ran 12
test_qualification_operator|Ran 10
test_region_diagnostics|Ran 4
test_rust_graph|Ran 11
test_scale_parity|Ran 10
test_smoke|Ran 8

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingci-cdCI/CD configuration changes

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions