Flowtable concurrent fuzz#1581
Draft
daniel-noland wants to merge 8 commits into
Draft
Conversation
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Sergey Matov <sergey.matov@githedgehog.com>
So bolero x model-checker suites can drive the same scheduler portfolio and 4 MiB-stack config as #[concurrency::test] instead of hand-rolling a Runner with shuttle's defaults. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
One source of truth for the stack size; the per-shape Runner was silently using shuttle's ~60 KiB default. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
A single harness covers both the thread sanitizer and the shuttle portfolio. Normalizing at generation keeps two threads inserting, so PCT always sees real concurrency and no shape is skipped. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Only the fuzz harness ever called it, and it cannot run under shuttle (DashMap::retain holds a real shard lock across a yield point). Also switches two reshard-test asserts to assert_eq! for clippy. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
new_with_status delegates to new instead of duplicating fields; the FlowStatus generator rejects out-of-range bytes rather than aliasing them to Detached.
Exposes the TypeGenerator impls without each consumer opting in.
sergeymatov
reviewed
Jun 3, 2026
| /// insert. Used by the bolero-driven concurrent-fuzz tests to seed flows in | ||
| /// any of the four legal states. | ||
| #[must_use] | ||
| pub fn new_with_status(flowkey: FlowKey, expires_at: Instant, status: FlowStatus) -> Self { |
Contributor
There was a problem hiding this comment.
I see you moved this code but seems it's not needed (not belong to fuzzer anymore)
sergeymatov
requested changes
Jun 3, 2026
| /// a single direct run on the std backend (real OS threads — build with | ||
| /// `just test sanitize=thread`), or the full portfolio under shuttle. | ||
| #[test] | ||
| fn stress_test_concurrency_model() { |
Contributor
There was a problem hiding this comment.
Oh, I see. So we have a new abstraction on top that defines what runs, and how it's scheduled defines under the tests
| /// Drain all stale (Expired / Cancelled / deadline-passed Active) entries from the table. | ||
| /// | ||
| /// Returns the number of entries removed. | ||
| pub fn drain_stale(&self) -> usize { |
Contributor
There was a problem hiding this comment.
Thanks for removing that
With new layout of fuzzer it's not needed anymore Signed-off-by: Sergey Matov <sergey.matov@githedgehog.com>
4f99e4c to
0ba4a4f
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is a temp placeholder while I discuss with @sergeymatov. Ignore for now if you aren't @sergeymatov