test(scheduler-core): add core contract test for full push-go-drain-end cycle (task 4.6)
Adds test_core_full_cycle.c: drives xce_core_push_events() -> xce_core_go() -> decision drain -> xce_core_end_session() end-to-end against a real picker pthread (running the real xce_job_picker_iface_t hooks on a test-local stub picker) and a main-thread stand-in allocator, since sched_allocator() is xce_scheduler_t*-coupled and out of pure-core scope. Proves both preconditions (core_go reentrancy, push_events mid-session) reject against a genuinely active session and recover once it ends. Closes out group 4 (Foundation: Scheduler Core Extraction) -- tasks 4.1-4.6 all complete. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019dw5WnN3DXStaEaPYfACU1
This commit is contained in:
parent
c5432f7786
commit
19d8df3532
3 changed files with 768 additions and 1 deletions
|
|
@ -276,6 +276,26 @@ sched_core_clock_test = executable(
|
|||
dependencies: [scheduler_test_deps],
|
||||
install: false)
|
||||
|
||||
# Core contract test for the full push-events -> start-session ->
|
||||
# drain-decisions -> end-session cycle (scheduler-core spec, task 4.6, Req 5
|
||||
# AC 1 / AC 2), against a real picker thread + a stand-in allocator (this
|
||||
# test's own driver thread) driving a minimal stub picker plugin through
|
||||
# xce_core_push_events()/xce_core_go()/xce_core_end_session() end to end --
|
||||
# also proving, mid-cycle against a GENUINELY active session, both the
|
||||
# reentrant xce_core_go() rejection (Req 5 AC 5) and the xce_core_push_events()
|
||||
# -EBUSY rejection (Req 5 AC 8) compose correctly with the rest of the
|
||||
# cycle. Same white-box #include pattern as test_core_events.c/
|
||||
# test_core_session.c (pulls ../src/core.c, ../src/core_events.c,
|
||||
# ../src/core_session.c, ../src/core_clock.c, and ../src/decision.c into
|
||||
# this TU) -- see the test's own header comment for the allocator-thread-
|
||||
# vs-direct-jbuf-drain design call.
|
||||
sched_core_full_cycle_test = executable(
|
||||
'sched_core_full_cycle_test',
|
||||
['test_core_full_cycle.c'],
|
||||
include_directories:[incdir],
|
||||
dependencies: [scheduler_test_deps],
|
||||
install: false)
|
||||
|
||||
# Register as meson tests so `meson test --suite scheduler` runs them all.
|
||||
# detect_leaks=0 matches the suite convention (fixtures are not torn down).
|
||||
test('scheduler test', scheduler_test, suite: 'scheduler',
|
||||
|
|
@ -321,3 +341,6 @@ test('scheduler core session test',
|
|||
test('scheduler core clock test',
|
||||
sched_core_clock_test, suite: 'scheduler',
|
||||
env: ['ASAN_OPTIONS=detect_leaks=0'])
|
||||
test('scheduler core full cycle test',
|
||||
sched_core_full_cycle_test, suite: 'scheduler',
|
||||
env: ['ASAN_OPTIONS=detect_leaks=0'])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue