test(scheduler-core): guard core scheduling loop against ordering-logic regressions (task 2.5)
Task 2.4 already made sched_job_picker() delegate entirely to the picker interface with zero direct queue/job traversal, satisfying Req 1 AC 1/AC 7 as a byproduct. This adds a source-text regression test locking that property in place: asserts sched_job_picker()'s body contains none of the forbidden direct-traversal symbols and does contain the expected picker-interface call sites.
This commit is contained in:
parent
7ee9a16f53
commit
9d91d470b4
3 changed files with 265 additions and 1 deletions
|
|
@ -134,6 +134,27 @@ sched_picker_wiring_test = executable('sched_picker_wiring_test',
|
|||
dependencies: [scheduler_test_deps],
|
||||
install: false)
|
||||
|
||||
# Regression guard for the core scheduling loop boundary (scheduler-core
|
||||
# spec, task 2.5, Req 1 AC 1 / AC 7): "the core loop calls only
|
||||
# picker->next_job() ... no project/queue/job iteration or ordering logic
|
||||
# remains in the loop itself." Does NOT #include scheduler.c (that file's
|
||||
# external dependency surface is why test_picker_wiring.c's own header
|
||||
# comment already ruled out driving sched_job_picker() directly) -- instead
|
||||
# it reads scheduler.c's real on-disk text at test run time and mechanically
|
||||
# checks sched_job_picker()'s body for required picker-interface call sites
|
||||
# and absent direct-traversal symbols. XCE_SCHEDULER_C_PATH bakes in the
|
||||
# absolute path via meson.current_source_dir() so the check has no
|
||||
# dependency on the test's cwd at run time.
|
||||
sched_picker_core_loop_boundary_test = executable(
|
||||
'sched_picker_core_loop_boundary_test',
|
||||
['test_picker_core_loop_boundary.c'],
|
||||
include_directories:[incdir],
|
||||
dependencies: [scheduler_test_deps],
|
||||
c_args: ['-DXCE_SCHEDULER_C_PATH="'
|
||||
+ (meson.current_source_dir() / '..' / 'src' / 'scheduler.c')
|
||||
+ '"'],
|
||||
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',
|
||||
|
|
@ -158,3 +179,6 @@ test('scheduler picker fcfs session test', sched_picker_fcfs_session_test, suite
|
|||
env: ['ASAN_OPTIONS=detect_leaks=0'])
|
||||
test('scheduler picker wiring test', sched_picker_wiring_test, suite: 'scheduler',
|
||||
env: ['ASAN_OPTIONS=detect_leaks=0'])
|
||||
test('scheduler picker core loop boundary test',
|
||||
sched_picker_core_loop_boundary_test, suite: 'scheduler',
|
||||
env: ['ASAN_OPTIONS=detect_leaks=0'])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue