feat: port rickshaw Perl scripts to Python3#804
Merged
Conversation
Creates the rickshaw_lib package with a port of the Perl rickshaw::fixup module. This is the foundation for the incremental Perl to Python3 port of the rickshaw-* scripts. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add Python3 versions of rickshaw-post-process-tools, rickshaw-post-process-bench, and rickshaw-gen-docs. Uses toolbox libraries for logging, parallel execution, file I/O, and JSON handling. Output files are xz-compressed to match add-run.js expectations. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Complete Python3 rewrite of the main orchestrator script (3,019 lines Perl to 2,000 lines Python). Uses RunState class for global state, ThreadPoolExecutor for endpoint validation, subprocess.Popen for endpoint deployment, and toolbox.roadblock for native roadblock calls. Tested end-to-end with fio (single benchmark, 3 iterations, random test order) and uperf+iperf (multi-benchmark, 4 clients/servers). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
15fd246 to
de1b5af
Compare
atheurer
approved these changes
Apr 29, 2026
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.
Summary
rickshaw_lib/withschema_fixup.pyfor JSON schema migrationrickshaw-post-process-tools.py— Python3 port of tool post-processingrickshaw-post-process-bench.py— Python3 port of benchmark post-processingrickshaw-gen-docs.py— Python3 port of OpenSearch document generationrickshaw-run.py— Python3 port of the main orchestrator (3,019 lines Perl → 2,045 lines Python)DO_NOT_MERGEcommit symlinks Perl names to Python versions for CI testingUses
toolboxPython extensions (fileio,logging,run,parallel,roadblock,json) merged in perftool-incubator/toolbox#110.Key design decisions
rickshaw-run.pyuses aRunStateclass encapsulating all global stateThreadPoolExecutorreplaces Perl threads for endpoint validationsubprocess.Popenreplaces Perlfork()for endpoint deploymenttoolbox.roadblock.do_roadblock()replaces shelling out toroadblocker.pyperl_s_regex()helper converts Perls///regexes (with$1backrefs) to Pythonre.sub()Test plan
DO_NOT_MERGEcommit)🤖 Generated with Claude Code