Skip to content

Check the allocator contract once and flatten the test suite - #75

Open
fpedd wants to merge 17 commits into
cpp-core-cleanupfrom
tests-ci-cleanup
Open

fpedd wants to merge 17 commits into
cpp-core-cleanupfrom
tests-ci-cleanup

Conversation

@fpedd

@fpedd fpedd commented Sep 29, 2026 •

Copy link
Copy Markdown
Owner

One contract test over the allocator registry replaces the empty, single, disjoint, stacking, validity, determinism, input-order and pin tests that were copied into every allocator file. test_properties keeps only its metamorphic relations with small budgets, integration tests that repeated unit coverage are dropped, and the analysis, validation, IO, allocate and plot tests are flattened into plain parametrized tables without ids, taking the suite from about 990 to 590 test functions and about 3100 fewer lines at unchanged line coverage. The contract runs every allocator on the exact-fit tiling, pinwheel and concurrent-tiling instances, and omni keeps its input-order invariance checks and its check against the best single greedy order on random and high-contention instances.

The stress harness stays and now runs: its fuzz sweep passed misspelled budget names and swallowed the TypeError, so the search allocators silently ran their seconds-scale defaults. Budget names are exact and a wrong one raises, the iteration-bounded searchers run without a timeout so repeats must match exactly, only minimalloc may be skipped (any other allocator that fails to build or raises fails the run), and the nightly stress job runs fuzz.py --deep and oracles.py and uploads the fuzz results. The plotting scripts share one helper module, and artifacts go to tmp_path instead of the repository tree.

CI: notebooks run in the PR examples job and example 05 nightly, the test job runs in parallel with work stealing, the redundant build job and clang-format install are gone, fourteen ruff ignores that no longer fire are removed, and numpy leaves the all extra since no module imports it. Stacked on #74.

fpedd added 17 commits October 17, 2026 15:03
The fuzz sweep passed misspelled budget names (generations, iterations) and swallowed the TypeError, so the search allocators silently ran their seconds-scale defaults. Budget names are now exact and a wrong one raises; the iteration-bounded searchers run without a timeout, so repeats must match exactly, and only deadline-bound supermalloc is exempt. The optimality oracle skips minimalloc when it is not installed instead of crashing. The nightly stress job installs minimalloc and runs fuzz.py --deep and oracles.py.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant