feat(scheduler-allocator-runner): runner plan and claim search (task 3.2)

The runner tries the plugin's plans in order and claims one distinct host
per bucket, with parjob's rollback and claim snapshots, nslots/nhosts per
candidate, a growable claims buffer and malformed-plan skipping. It
clears alloc_req.host before every candidate so each short host gets its
pend reasons (Req 3.6/3.7). Result assembly follows in task 3.3; until
then a satisfied plan's claims are released and the attempt pends.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Rongsong Shen 2026-09-30 09:12:01 +00:00
parent d9ef983014
commit 0c011f784e
Signed by untrusted user: rshen
GPG key ID: 80533536B0EB651C
4 changed files with 1080 additions and 14 deletions

View file

@ -1756,6 +1756,18 @@ sched_alloc_runner_test = executable(
link_args: ['-Wl,--wrap=make_pendreason'],
install: false)
# scheduler-allocator-runner task 3.2 (Req 2.3, 3.1-3.8, 5.5, 5.7): the
# runner's plan and claim search with rollback, same white-box stack as
# above. xvec_dup is wrapped to fail a claim snapshot; the claims-buffer
# realloc is replaced inside the test file (alloc_runner.c only).
sched_alloc_runner_search_test = executable(
'sched_alloc_runner_search_test',
['test_alloc_runner_search.c'],
include_directories:[incdir],
dependencies: [scheduler_test_deps],
link_args: ['-Wl,--wrap=xvec_dup'],
install: false)
# Task 3.2 (scheduler-allocation spec, Req 9.1): the dedicated pre/post-
# rewrap host-selection EQUIVALENCE proof for seqjob_allocator.c's
# my_alloc() -- fixture states task 3.1's own smoke test does not cover
@ -2031,6 +2043,9 @@ test('scheduler alloc equivalence parjob test',
# Leak detection stays on: every fixture tears down its ctx and core.
test('scheduler alloc runner test',
sched_alloc_runner_test, suite: 'scheduler')
# Leak detection stays on: every fixture tears down its ctx and core.
test('scheduler alloc runner search test',
sched_alloc_runner_search_test, suite: 'scheduler')
test('scheduler seqjob rewrap equivalence test',
sched_seqjob_rewrap_equivalence_test, suite: 'scheduler',
env: ['ASAN_OPTIONS=detect_leaks=0'])