IBMCEPH-17498: register Elbencho as a CBT benchmark - #359
Conversation
ScopeThe diff matches the Jira ticket and PR description. Story 2 requires registering Elbencho as a benchmark class with factory integration, workload storage, and validation — all present. The Code Review[P1] [P2] [P2] [P2] [P3] [P3] SecurityCredential handling in tests: The test fixture SummaryThe registration is solid and the factory bypass logic is correct. The P1 issue around |
7e64adb to
89776a3
Compare
c6bd7e0 to
550e5d4
Compare
686da24 to
6463326
Compare
…are factory bypass Add benchmark/elbencho.py (Elbencho class), wire it into benchmarkfactory.py with _WORKLOADS_BENCHMARKS guard to prevent all_configs() Cartesian expansion, and cover both with 25 unit tests in tests/test_bm_elbencho.py. Signed-off-by: Kenan Al-Shamie <kenan.al-shamie@ibm.com> Assisted-by: Bob 2.0
This was added to elbencho as part of the integration work, during which it was realised that this kind of validation also suits hsbench due to it also being a package external to tools included with Linux Assisted-by: Bob 2.0 Signed-off-by: Kenan Al-Shamie <kenan.al-shamie@ibm.com>
6463326 to
f0c2812
Compare

Jira: IBMCEPH-17498 | Epic: IBMCEPH-15080 — Story 2 of 11
This is the foundation story for Elbencho S3 support in CBT. It does one thing: makes
elbencho:a valid benchmark in a YAML test plan, on par with fio, radosbench, etc. However, this is incomplete; I've intentionally opted for making this work incremental to allow for more focus during reviews and better handling of requirements, especially since I'm new to this codebase and tool.The only non-trivial decision here is how the factory handles Elbencho's config. Most benchmarks take scalar parameters and the factory Cartesian-expands any list values into separate runs through
benchmarkfactory.py. Elbencho works differently — its iteration axes live inside a workloads dict that the class owns. A new guard inbenchmarkfactory.pyprevents the factory from expanding those lists and breaking that structure by checking for a particular function in theelbencho.py(and all other tools') class. This sets the pattern for any future benchmark that uses the same workloads model.The run loop itself (the three-tier blocksize → threads → iodepth iteration and pdsh execution) is Story 3 and comes in the next PR. The
_run_workloads()method here is a stub.25 unit tests cover the construction, validation, and factory bypass behaviour.
Regarding the Pull Conquest review below
This is the result of an IBM tool that I developed for the watsonX challenge. It's a configurable & semi-automated AI code review tool using
bob -p,pythonand vanillahtml,js, andcss. It takes context from Jira tickets and Github PRs automatically from the commit stringIBMCEPH-etc. If you'd like to learn more about it feel free to reach out to me on Slack.