Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: pop bench overhead benchmarking #432

Open
wants to merge 235 commits into
base: chungquantin/feat-pop_bench_command
Choose a base branch
from

Conversation

chungquantin
Copy link
Collaborator

@chungquantin chungquantin commented Mar 3, 2025

This PR is a part of a large PR #424. It implements the pop bench overhead command.

Screenshot 2025-03-06 at 19 12 52

Deliverables

  • Prompt to select runtime
  • Prompt to select genesis builder
  • Prompt to input the directory path of weight files
  • Skip interactive UI feature

How to test the PR?

Run the below command to test the feature quickly

pop bench overhead --warmup=1 --repeat=1

There is a new command flag provided to skip the interactive UI

pop bench overhead --warmup=1 --repeat=1 -i

chungquantin and others added 10 commits March 10, 2025 17:05
* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* fix: runtime path test

* refactor: feature gating for benchmarking feature

* chore: remove unused argument

* fix: comment

* chore: rename `bench` file

* chore: rename `bench` file

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* feat: list and select runtimes

* chore: remove unused code

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* chore: removed duplicate code

* chore: remove spinner

* chore: clippy warning

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: reorder imports

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: revert mod.rs

* feat: select genesis builder

* refactor: test helpers

* chore: remove output display

* chore: update parse genesis builder comment

* feat: list benchmark pallets & extrinsics

* feat: list pallets and extrinsics

* feat: refactor pallet mod and add parameter menu

* fix: locate runtime and help command

* chore: clippy warning

* chore: display error message on binary check

* fix: comment

* refactor: separate pallet logic from entry file

* chore: add and hide global genesis_builder

* fix: clippy warnings and benchmark tests

* refactor: flatten PalletCmd to add extra arguments

* feat: select and update parameter menu

* feat: add genesis preset check (#422)

* feat: add genesis preset check

* feat: update_genesis_preset

* refactor: constant name & add tests for preset

* refactor: get_runtime_path

* chore: rebase

* chore: rebase

* refactor: code order

* chore: rebase

* chore: reformat

* chore: reformat

* chore: reformat

* refactor: test files

* chore: rebase

* chore: reformat

* chore: reformat

* chore: clippy warning

* chore: rebase

* chore: reformat

* chore: reformat

* chore: rebase

* chore: clippy warning

* feat: enter runtime path manually

* refactor: list presets instead of manual input

* feat: default to `none` if no presets found

* refactor: build project test instead of runtime

* chore: rebase

* chore: reformat

* chore: reformat

* chore: rebase

* fix: rebase

* feat: `pop bench pallet` logic implementation (#407)

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: revert mod.rs

* feat: add bench subcommand

* chore: revert mod.rs

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: revert mod.rs

* feat: add bench subcommand

* chore: revert mod.rs

* chore: revert changes

* feat: benchmark existing runtime binary and select policy, presets (#411)

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* fix: runtime path test

* refactor: feature gating for benchmarking feature

* chore: remove unused argument

* fix: comment

* chore: rename `bench` file

* chore: rename `bench` file

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* feat: list and select runtimes

* chore: remove unused code

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* chore: removed duplicate code

* chore: remove spinner

* chore: clippy warning

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: reorder imports

* feat: select genesis builder

* refactor: test helpers

* chore: remove output display

* chore: update parse genesis builder comment

* fix: locate runtime and help command

* chore: clippy warning

* chore: display error message on binary check

* fix: comment

* feat: add genesis preset check (#422)

* feat: add genesis preset check

* feat: update_genesis_preset

* refactor: constant name & add tests for preset

* refactor: get_runtime_path

* refactor: code order

* refactor: test files

* chore: clippy warning

* refactor: list presets instead of manual input

* feat: default to `none` if no presets found

* refactor: build project test instead of runtime

* feat: update menu to confirm the boolean option

* refactor: separate pallet logic from entry file (#421)

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* fix: runtime path test

* refactor: feature gating for benchmarking feature

* chore: remove unused argument

* fix: comment

* chore: rename `bench` file

* chore: rename `bench` file

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* feat: list and select runtimes

* chore: remove unused code

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* chore: removed duplicate code

* chore: remove spinner

* chore: clippy warning

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: reorder imports

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: revert mod.rs

* feat: select genesis builder

* refactor: test helpers

* chore: remove output display

* chore: update parse genesis builder comment

* fix: locate runtime and help command

* chore: clippy warning

* chore: display error message on binary check

* fix: comment

* feat: add genesis preset check (#422)

* feat: add genesis preset check

* feat: update_genesis_preset

* refactor: constant name & add tests for preset

* refactor: get_runtime_path

* refactor: code order

* refactor: test files

* chore: clippy warning

* refactor: list presets instead of manual input

* feat: default to `none` if no presets found

* refactor: build project test instead of runtime

* chore: rebase

* chore: reformat

* chore: reformat

* chore: rebase

* chore: rebase

* feat: add print command method

* feat: add excluded pallets and print command

* refactor: move methods to pop-parachains

* refactor: get runtime arguments & genesis disabled

* chore: fix tests and new tests for runtime input

* chore: add tests for search pallets & extrinsics

* chore: add tests for select pallet & extrinsics

* chore: remove fuzzy search crate and fix stdout err

* chore: remove guard drop

* chore: clippy warnings

* fix: stdio override

* refactor: load pallets from subwasm

* chore: revert changes made to load pallets

This reverts commit faf3ce5.

* chore: remove stdio-overide crate and add alternatives

* chore: add print to debug CI

* feat: add code to source omni bencher (#428)

* feat: add code to source omni bencher

* chore: add tests for sourcing binaries

* feat: download omni-bencher binary if not exist

* chore: remove println!

* chore: fix tests

* refactor: PalletCmd to BenchmarkPallet

* feat: select single pallet

* chore: test ensure pallet registry

* feat: add output file

* chore: resolve clippy warnings

* refactor: shared methods with other commands

* chore: clippy warning of direct ToString impl

* chore: add public module document

* chore: clippy warning of `current_preset`

* chore: set `RUST_LOG` to original value

* refactor: display with `--skip` argument

* chore: remove `which` crate and implement with cmd

* fix: test of display()

* refactor: get_mock_runtime

* chore: test for inputting output file

* chore: test for list, fix binary run

* feat: `pop bench pallet` logic implementation (#407)

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: revert mod.rs

* feat: add bench subcommand

* chore: revert mod.rs

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: revert mod.rs

* feat: add bench subcommand

* chore: revert mod.rs

* chore: revert changes

* feat: benchmark existing runtime binary and select policy, presets (#411)

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* fix: runtime path test

* refactor: feature gating for benchmarking feature

* chore: remove unused argument

* fix: comment

* chore: rename `bench` file

* chore: rename `bench` file

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* feat: list and select runtimes

* chore: remove unused code

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* chore: removed duplicate code

* chore: remove spinner

* chore: clippy warning

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: reorder imports

* feat: select genesis builder

* refactor: test helpers

* chore: remove output display

* chore: update parse genesis builder comment

* fix: locate runtime and help command

* chore: clippy warning

* chore: display error message on binary check

* fix: comment

* feat: add genesis preset check (#422)

* feat: add genesis preset check

* feat: update_genesis_preset

* refactor: constant name & add tests for preset

* refactor: get_runtime_path

* refactor: code order

* refactor: test files

* chore: clippy warning

* refactor: list presets instead of manual input

* feat: default to `none` if no presets found

* refactor: build project test instead of runtime

* refactor: separate pallet logic from entry file (#421)

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* fix: runtime path test

* refactor: feature gating for benchmarking feature

* chore: remove unused argument

* fix: comment

* chore: rename `bench` file

* chore: rename `bench` file

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* feat: list and select runtimes

* chore: remove unused code

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* chore: removed duplicate code

* chore: remove spinner

* chore: clippy warning

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: reorder imports

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: revert mod.rs

* feat: select genesis builder

* refactor: test helpers

* chore: remove output display

* chore: update parse genesis builder comment

* fix: locate runtime and help command

* chore: clippy warning

* chore: display error message on binary check

* fix: comment

* feat: add genesis preset check (#422)

* feat: add genesis preset check

* feat: update_genesis_preset

* refactor: constant name & add tests for preset

* refactor: get_runtime_path

* refactor: code order

* refactor: test files

* chore: clippy warning

* refactor: list presets instead of manual input

* feat: default to `none` if no presets found

* refactor: build project test instead of runtime

* chore: rebase

* chore: reformat

* chore: reformat

* chore: rebase

* chore: rebase

* chore: update cargo.lock

* feat: add the filter mode to cli

* chore: rebase

* chore: revert cargo.lock and add more ignore

* chore: update cargo-deny-action@v2

* chore: revert relay.rs changes

* chore: remove vulnerabilities by upgrade zombienet

* chore: rebase

* chore: clippy warning

* chore: revert not relevant changes

* chore: rebase to add filter mode

* feat: update parachain templates (#297)

* feat: include new parachain template and remove old one for Parity

* fix: tests

* fix: order in test

* fix: export PATH

* chore: bump zombienet-sdk version

* fix: remove parity evm

* fix: missing changes

* fix: parse collator and parachain-template-node without path for spawn

* chore: remove set PATH

* refactor: functionality and test

* refactor: prefix for external templates

* fix: deprecate old command for generating parity contracts template

* test: update configure_works test to test new functionality

* test: fix unit tests templates

* fix: show deprecation message and fixes

* docs: improve comments

* refactor: nitpicks in parachain description

* fix: logic for substrate-contracts-node without path in config file

* feat: support v3.0.0 of OpenZeppelin templates

* docs: improve template docs and comments

* test: improve comments for clarity

* fix: support different profiles when path is not specified

* refactor: code improvements

* refactor: improve import

* fix: remove onboard.rs empty file (#433)

* chore: update cargo-deny-action@v2 (#439)

* chore: update cargo-deny-action@v2

* chore: revert cargo.lock and add more ignore

* fix: docker missing toolchain

* chore: revert relay.rs changes

* chore: remove vulnerabilities by upgrade zombienet

* feat: `pop bench pallet` logic implementation (#407)

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: revert mod.rs

* feat: add bench subcommand

* chore: revert mod.rs

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: revert mod.rs

* feat: add bench subcommand

* chore: revert mod.rs

* chore: revert changes

* feat: benchmark existing runtime binary and select policy, presets (#411)

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* fix: runtime path test

* refactor: feature gating for benchmarking feature

* chore: remove unused argument

* fix: comment

* chore: rename `bench` file

* chore: rename `bench` file

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* feat: list and select runtimes

* chore: remove unused code

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* chore: removed duplicate code

* chore: remove spinner

* chore: clippy warning

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: reorder imports

* feat: select genesis builder

* refactor: test helpers

* chore: remove output display

* chore: update parse genesis builder comment

* fix: locate runtime and help command

* chore: clippy warning

* chore: display error message on binary check

* fix: comment

* feat: add genesis preset check (#422)

* feat: add genesis preset check

* feat: update_genesis_preset

* refactor: constant name & add tests for preset

* refactor: get_runtime_path

* refactor: code order

* refactor: test files

* chore: clippy warning

* refactor: list presets instead of manual input

* feat: default to `none` if no presets found

* refactor: build project test instead of runtime

* refactor: separate pallet logic from entry file (#421)

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* fix: runtime path test

* refactor: feature gating for benchmarking feature

* chore: remove unused argument

* fix: comment

* chore: rename `bench` file

* chore: rename `bench` file

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* feat: list and select runtimes

* chore: remove unused code

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* chore: removed duplicate code

* chore: remove spinner

* chore: clippy warning

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: reorder imports

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: revert mod.rs

* feat: select genesis builder

* refactor: test helpers

* chore: remove output display

* chore: update parse genesis builder comment

* fix: locate runtime and help command

* chore: clippy warning

* chore: display error message on binary check

* fix: comment

* feat: add genesis preset check (#422)

* feat: add genesis preset check

* feat: update_genesis_preset

* refactor: constant name & add tests for preset

* refactor: get_runtime_path

* refactor: code order

* refactor: test files

* chore: clippy warning

* refactor: list presets instead of manual input

* feat: default to `none` if no presets found

* refactor: build project test instead of runtime

* chore: rebase

* chore: reformat

* chore: reformat

* chore: rebase

* chore: rebase

* chore: update cargo.lock

* feat: add the filter mode to cli

* chore: rebase

* chore: revert cargo.lock and add more ignore

* chore: update cargo-deny-action@v2

* chore: revert relay.rs changes

* chore: remove vulnerabilities by upgrade zombienet

* chore: rebase

* chore: clippy warning

* chore: revert not relevant changes

---------

Co-authored-by: Alex Bean <[email protected]>

* chore: update cargo-deny-action@v2 (#439)

* chore: update cargo-deny-action@v2

* chore: revert cargo.lock and add more ignore

* fix: docker missing toolchain

* chore: revert relay.rs changes

* chore: remove vulnerabilities by upgrade zombienet

* feat: `pop bench pallet` logic implementation (#407)

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: revert mod.rs

* feat: add bench subcommand

* chore: revert mod.rs

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* chore: rename `bench` file

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: revert mod.rs

* feat: add bench subcommand

* chore: revert mod.rs

* chore: revert changes

* feat: benchmark existing runtime binary and select policy, presets (#411)

* feat: add bench subcommand

* feat: integrates frame-benchmarking-cli

* refactor: PalletCmd run with spec

* feat: set RUST_LOG=info for benchmarking display

* feat: add CLI messages and tests

* feat: add benchmark runtime wasm test

* chore: fix comment

* fix: operator cannot be applied to type

* chore: display error and refactor test file

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* fix: runtime path test

* refactor: feature gating for benchmarking feature

* chore: remove unused argument

* fix: comment

* chore: rename `bench` file

* chore: rename `bench` file

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* feat: list and select runtimes

* chore: remove unused code

* feat: auto detect wasm blob and build runtime

* feat: build runtime wasm blob

* refactor: build binary path method

* chore: removed duplicate code

* chore: remove spinner

* chore: clippy warning

* chore: clippy warning

* refactor: parachain feature in bench command

* chore: reorder imports

* feat: select genesis builder

* refactor: test helpers

* chore: remove output display

* chore: update parse genesis builder comment

* fix: locate runtime and help command

* chore: clippy warning

* chore: display error message on binary check

* fix: comment

* feat: add genesis preset check (#422)

* feat: add genesis preset check

* feat: update_genesis_preset

* refactor: constant name & add tests for preset

* refactor: get_runtime_path

* refactor: code order

* refactor: test files

* chore: clippy warning

* refactor: list presets instead of manual input

* feat: default to `none` if no presets found

* refactor: build project test instead of runtime

* chore: rebase

* chore: rebase

* chore: revert cargo.lock and add more ignore

* chore: update cargo-deny-action@v2

* chore: revert relay.rs changes

* chore: remove vulnerabilities by upgrade zombienet

* chore: rebase

* chore: revert not relevant changes

* fix: expect_select missing filter_mode

* refactor: fuzzy search pallets and extrinsics with `filter_mode` (#442)

* refactor: use filter_mode to fuzzy search pallets

* chore: update cargo-deny-action@v2

* chore: rebase

* chore: revert not relevant changes

* chore: delete conflicting file

* feat: add confirm input to extrinsics selection

* chore: test for `get_relative_or_absolute_path`

* refactor: remove methods only used once

* refactor: get arguments `ok_or_else`

* refactor: `TryFrom<String>` for genesis builder

* chore: comments

* chore: return error if  is not provided

* fix: unit tests adapt to new changes

* chore: ensure runtime binary exists test

* chore: clippy warning

* chore: apply suggestions & test for menu

* chore: remove weights.rs

* chore: fix test to log single line command

---------

Co-authored-by: Alex Bean <[email protected]>
Base automatically changed from chungquantin/feat-pallet_bench_ui to chungquantin/feat-pop_bench_command March 10, 2025 10:34
@chungquantin chungquantin force-pushed the chungquantin/feat-pop_bench_command branch from 3b008a2 to 55b619d Compare March 11, 2025 15:19
@chungquantin chungquantin requested a review from Daanvdplas March 12, 2025 08:57
Copy link
Collaborator

@Daanvdplas Daanvdplas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some comments and open questions:

  • The final command would be great to output here as well.
  • I see a lot of flags that can be used but none of them appear in the interactive UI?
  • What is your view on tests regarding all those flags, the tests right now are very minimal which leaves a lot of room for bugs.
  • I tried pop bench overhead --warmup=1 --repeat=1 -i --runtime runtime/testnet/:
Screenshot 2025-03-12 at 09 58 48 I have no idea what I'm doing wrong.

In general I think the tests need some attention, most probably for the entire benchmark feature. See for example the tests for building a spec:

@chungquantin
Copy link
Collaborator Author

chungquantin commented Mar 12, 2025

@Daanvdplas

The final command would be great to output here as well.

Resolved in: #3b0e48f

Screenshot 2025-03-12 at 18 14 52

I see a lot of flags that can be used but none of them appear in the interactive UI?

As defined in the spec, we only have interactive UI for pallet benchmarking because there are a lot of works needed to cover all params of other commands like storage, overhead and machine. The second point would be these commands are not used frequently compared to the main command pop bench pallet. The goal is to keep non-frequent commands' implementation minimal as possible.

What is your view on tests regarding all those flags, the tests right now are very minimal which leaves a lot of room for bugs.

I don't cover tests for those flags because the logic of the implementation is simply passing arguments to the method cmd.run_with_default_builder_and_spec provided by OverheadCmd in frame-benchmarking-cli. They are supposed to be tested by the frame-benchmarking-cli not in pop-cli.

I tried pop bench overhead --warmup=1 --repeat=1 -i --runtime runtime/testnet/:

--runtime only accepts path to the runtime WASM binary, not directory. It is checked inside the OverheadCmd from frame-benchmarking-cli. I am not sure if this is something we need to handle in our code because that behaviour is expected. User is expected to provide the direct path to the WASM binary (same applied for frame-omni-bencher) or keep it empty so we find it for them.

@chungquantin chungquantin requested a review from Daanvdplas March 12, 2025 11:19
Copy link
Collaborator

@Daanvdplas Daanvdplas left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I left a reaction and I am also curious why we are not outputting the command by default. Other than that good to go!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ready-for-final-review The PR is ready for final review
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants