feat(scheduler-sim-repl-verbosity): task 2.1 - RED-phase Round Rollup tests

Adds 7 tests in a new test_repl_round_rollup.c covering per-round
decision summaries, collapsing of repetitive rounds, and the shared
repl_round_collapse_flush() entry point (Requirements 2.1-2.4, 3.1-3.4,
3.6). repl_round_collapse_flush() itself is not yet implemented (task
2.2) - build fails at link time, confirming RED.

Split into its own file rather than the originally-planned
test_repl_execution_control.c: that file was already at the project's
800-line cap before this task, and landing these tests there would
have pushed it to 1563 lines. design.md's File Structure Plan is
corrected accordingly (mirrors the existing test_repl_snapshot_params.c
/test_repl_breakpoints_inspection.c split in this same file family).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YAWMhfRJFnmmnG8h97yUDd
This commit is contained in:
Rongsong Shen 2026-09-02 09:40:46 +00:00
parent e6c670194f
commit 0c6ccb0324
No known key found for this signature in database
GPG key ID: 5BCDAAE0123E9FE2
4 changed files with 1058 additions and 2 deletions

View file

@ -901,6 +901,36 @@ sched_repl_execution_control_test = executable(
dependencies: [scheduler_test_deps, libedit_dep],
install: false)
# Contract test for the interactive simulation REPL's Round Rollup
# component (scheduler-sim-repl-verbosity spec, task 2.1, Requirements 2
# and 3 "per-round decision summary"/"collapsing repetitive rounds"): a
# round with at least one decision produces a summary naming decision
# counts and affected jobids; idle or identical-outcome consecutive rounds
# collapse into a single range notification; and the shared
# repl_round_collapse_flush() entry point is exercised directly (a safe
# no-op when nothing is active) and indirectly (flushed before a structural
# event/replay-complete banner). Same white-box #include pattern as
# sched_repl_execution_control_test above (core.c, core_clock.c,
# core_events.c, core_session.c, decision.c, plugin.c,
# plugins/builtin_fcfs.c, recording.c, recording_session.c, sim.c,
# sim_loop.c, sim_record.c, sim_verify.c,
# snapshot.c/snapshot_wire.c/snapshot_load.c, repl.c, repl_break.c,
# repl_info.c, repl_params.c). Split into its own file rather than appended
# to test_repl_execution_control.c -- that file was already 936 lines
# (pre-existing, over this project's 800-line cap on its own), and this
# task's own tests (seven forked-child, real-stdout-capture fixtures plus
# their own fork/capture helper pair) would have pushed it to 1563 lines,
# past the ~1000-line threshold this exact spec family already treats as a
# split trigger (see sched_repl_snapshot_params_test's own comment below
# for the precedent). See design.md's "**Correction (post-review, task
# 2.1)**" note.
sched_repl_round_rollup_test = executable(
'sched_repl_round_rollup_test',
['test_repl_round_rollup.c'],
include_directories:[incdir],
dependencies: [scheduler_test_deps, libedit_dep],
install: false)
# Contract test for the interactive simulation REPL's breakpoint and
# state-inspection slice (scheduler-core spec, task 12.2, Req 5 AC 22
# "Breakpoints"/"State inspection"): setting a breakpoint on a specific
@ -1351,6 +1381,9 @@ test('scheduler sim e2e original motivation test',
test('scheduler repl execution control test',
sched_repl_execution_control_test, suite: 'scheduler',
env: ['ASAN_OPTIONS=detect_leaks=0'])
test('scheduler repl round rollup test',
sched_repl_round_rollup_test, suite: 'scheduler',
env: ['ASAN_OPTIONS=detect_leaks=0'])
test('scheduler repl breakpoints inspection test',
sched_repl_breakpoints_inspection_test, suite: 'scheduler',
env: ['ASAN_OPTIONS=detect_leaks=0'])

File diff suppressed because it is too large Load diff