64 lines
2.3 KiB
Markdown
64 lines
2.3 KiB
Markdown
# Test Runner Scheduling
|
|
|
|
Status: optional test-runner roadmap.
|
|
|
|
The stable baseline is metadata-first case registration, explicit skips, structured filters, JSON
|
|
output, process sharding, resource-aware shard policy, fixture setup timing, and shared fixtures for
|
|
selected low-risk lanes. Serial execution remains the default; `--jobs N` is explicit.
|
|
|
|
|
|
## Shared Fixture Expansion
|
|
|
|
Migrate only low-risk cases into shared app/offscreen or shared GPU fixtures:
|
|
|
|
1. clear-color tests;
|
|
2. simple nonblank point, pixel, image, mesh, and sphere smokes;
|
|
3. single-frame render-and-capture cases;
|
|
4. cases independent of first-app construction semantics.
|
|
|
|
Keep isolated until audited:
|
|
|
|
1. app creation and destruction;
|
|
2. resize and recreate;
|
|
3. descriptor refresh and resource lifetime;
|
|
4. query/readback steady-state paths;
|
|
5. failure-path and device-lost tests;
|
|
6. GLFW, presentation, external surfaces, video, filesystem, environment, and log-capture tests.
|
|
|
|
|
|
## Skip And Fixture Rules
|
|
|
|
Replace ad-hoc availability exits with explicit skip predicates or `tst_skip(ctx, reason)` when
|
|
tests are touched.
|
|
|
|
Setup code must:
|
|
|
|
1. run skip predicates before allocation;
|
|
2. clean up before returning skipped; or
|
|
3. rely on runner-owned fixtures whose lifecycle is independent of per-case teardown.
|
|
|
|
|
|
## Future Scheduling Work
|
|
|
|
1. record resource capacities for CPU, GPU, GLFW, video, and exclusive/global resources;
|
|
2. keep `TST_RES_GPU` distinct from shared GPU fixture eligibility;
|
|
3. add in-process workers only for explicitly `TST_ISOLATION_THREAD_SAFE` tests;
|
|
4. keep Vulkan, GLFW, app, canvas, video, environment, and process-global tests out of thread
|
|
workers until they have explicit contracts;
|
|
5. preserve deterministic output and JSON summaries;
|
|
6. include fixture scope, shard/worker index, slow groups, and setup-time amortization in reports.
|
|
|
|
|
|
## Validation
|
|
|
|
Runner scheduling changes should cover:
|
|
|
|
1. `git diff --check`;
|
|
2. build every touched runner target;
|
|
3. `--list`, `--list-groups`, resource filters, isolation filters, exact filters, and `--json`;
|
|
4. representative CPU passes and graphics-unavailable skip paths;
|
|
5. aggregate summaries matching child JSON records when sharding is involved.
|
|
|
|
Shared GPU fixture work should also capture timing before/after, keep the original isolated lane
|
|
green, and run Vulkan validation smoke when ownership changes.
|