Skip to content

feat: port rickshaw Perl scripts to Python3#804

Merged
k-rister merged 3 commits into
masterfrom
python-port-foundation
Apr 29, 2026
Merged

feat: port rickshaw Perl scripts to Python3#804
k-rister merged 3 commits into
masterfrom
python-port-foundation

Conversation

@k-rister
Copy link
Copy Markdown
Contributor

Summary

  • Add rickshaw_lib/ with schema_fixup.py for JSON schema migration
  • Add rickshaw-post-process-tools.py — Python3 port of tool post-processing
  • Add rickshaw-post-process-bench.py — Python3 port of benchmark post-processing
  • Add rickshaw-gen-docs.py — Python3 port of OpenSearch document generation
  • Add rickshaw-run.py — Python3 port of the main orchestrator (3,019 lines Perl → 2,045 lines Python)
  • Temporary DO_NOT_MERGE commit symlinks Perl names to Python versions for CI testing

Uses toolbox Python extensions (fileio, logging, run, parallel, roadblock, json) merged in perftool-incubator/toolbox#110.

Key design decisions

  • rickshaw-run.py uses a RunState class encapsulating all global state
  • ThreadPoolExecutor replaces Perl threads for endpoint validation
  • subprocess.Popen replaces Perl fork() for endpoint deployment
  • Native toolbox.roadblock.do_roadblock() replaces shelling out to roadblocker.py
  • perl_s_regex() helper converts Perl s/// regexes (with $1 backrefs) to Python re.sub()

Test plan

  • fio benchmark: single benchmark, 3 iterations, random test order — verified against Perl gold master
  • uperf+iperf benchmark: multi-benchmark, 4 clients/servers — verified against Perl gold master
  • CI integration tests (this PR, via symlink DO_NOT_MERGE commit)

🤖 Generated with Claude Code

k-rister and others added 3 commits April 27, 2026 09:49
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>
@k-rister k-rister self-assigned this Apr 28, 2026
@k-rister k-rister requested a review from a team April 28, 2026 14:32
@project-crucible-tracking project-crucible-tracking Bot moved this from Queued to In Progress in Crucible Tracking Apr 28, 2026
@k-rister k-rister force-pushed the python-port-foundation branch from 15fd246 to de1b5af Compare April 28, 2026 15:35
@k-rister k-rister marked this pull request as ready for review April 28, 2026 15:35
@k-rister k-rister merged commit c11b453 into master Apr 29, 2026
346 of 348 checks passed
@k-rister k-rister deleted the python-port-foundation branch April 29, 2026 14:25
@github-project-automation github-project-automation Bot moved this from In Progress to Done in Crucible Tracking Apr 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants