summaryrefslogtreecommitdiff
path: root/test/monkey9p.py
Commit message (Collapse)AuthorAge
* The 9P monkey does not count a file watch's notice as a failed write's msgGabriel Schneider5 days
| | | | | | | | | | | | Seed 121 flagged a refused write to pane 2's dirty file because a `msg 3 <file> deleted on disk (Save writes it again)` arrived in the same window. That notice was from an earlier host rm of pane 3's file, said whenever the watch noticed it. It did not reproduce on replay, since it depends on when the watch fires. The one-failure rule now leaves out the watch's deleted-on-disk and changed-on-disk notices. Any other msg with a failed write still fails the rule. Co-Authored-By: Claude Opus 5.5 <[email protected]>
* The 9P monkey lets a failed write's op log a msg when another of its Twrites ↵Gabriel Schneider5 days
| | | | | | | | succeeded A ctl line cut across Twrites runs a piece a Twrite: in seed 109, "Save Pl" ran Save and said so, and the next piece, "acem", was refused. one_failure_rule took the msg as the failed write's. It now flags a msg only when no Twrite of the op succeeded. Co-Authored-By: Claude Opus 5.5 <[email protected]>
* The 9P monkey allows a look's misses to each Twrite that succeeded, not to ↵Gabriel Schneider5 days
| | | | | | | | none when one failed A look line written a byte a Twrite is a look a byte, each its own write logging its own miss; when its last byte was a control character that one write failed, and the oracle dropped every miss allowance on the path, so seed 51 failed with 21 errs for 1 refused write. Allowances are now counted over the Twrites that succeeded (and an hwrite's only once it has). Co-Authored-By: Claude Opus 5.5 <[email protected]>
* The 9P monkey's one-failure rule is a write's: a refused open, create or ↵Gabriel Schneider5 days
| | | | | | | | remove, or a write to pane/new, must log no err The coordinator's reading of fs.md, now documented (slnyzzps): only a write or truncation logs its reason; a refused open (pane/new's and an OTRUNC one included), create or remove is its Rerror alone, and so is a write to pane/new. The oracle allowed an err or none for those, and required one for a refused pane/new open. Co-Authored-By: Claude Opus 5.5 <[email protected]>
* The 9P monkey counts the lines a write runs as the tree does: a short ↵Gabriel Schneider5 days
| | | | | | | | write's unended tail is a line of its own Since round 24 (uwzuqzxp), a write to a lines file shorter than a Twrite holds is whole, as acme takes each write, so a look line written a byte a Twrite is as many looks as bytes, each missing with its own err. one_failure_rule still split the data on newlines whole, allowed one err, and failed the fixed smoke seed (20260929 step 607, size 20 6 written in bytes to look: 7 errs). served_lines models the tree's write (tree.zig) and has a self-check run at start. Co-Authored-By: Claude Opus 5.5 <[email protected]>
* A 9P monkey drives random requests at a throwaway session and checks the ↵Gabriel Schneider5 days
documented rules test/monkey9p.py starts pardes --detach with its own HOME, XDG dirs and runtime dir, speaks raw 9P (test/ninep.py) with a timeout on every reply and Tflush for held reads, and after each seeded operation checks that pardes is alive, the one-failure rule over a marker-delimited log window (with and without a follower), /index against /pane, and chunked against whole reads. Every run writes a replayable ops log; a failure is saved with its seed and step, shrunk by delta debugging over replays, and the run goes on in a fresh session. Teardown makes the fuzzer a subreaper and kills every process carrying the session's token. zig build monkey-9p -- --seed N --steps M | --replay F | --shrink F; a 150-step fixed-seed smoke run is part of fs-test. Co-Authored-By: Claude Opus 5.5 <[email protected]>