Skip to content

Conversation

@chungquantin
Copy link
Contributor

@chungquantin chungquantin commented Feb 11, 2025

Features

  • Add a new pop-cli command bench to benchmark pallets & parachain.
  • Integrates with frame-benchmarking-cli as a subcommand.
  • Run benchmarking on pallets without node binary required. Only runtime needed, inspired by FRAME Omni Bencher.
  • Locate the runtime WASM binary in the project and trigger runtime build - PR: feat: benchmark existing runtime binary and select policy, presets #411
  • Select runtime, genesis builder policy and genesis config preset. If there is no preset available for the runtime, throws error before running the frame-benchmarking-cli command. feat: add genesis preset check #422
  • Nice to have: Support both benchmarking with chain spec and runtime. FRAME Omni Bencher only support benchmarking with runtime wasm. This addition enhances the user experience by allowing the developers to provide either the chain spec file path or the runtime wasm file.

How to test?

Use the below command in your pop-cli project to benchmark the base_parachain.wasm.

cargo run -- bench pallet --runtime=./crates/pop-cli/test-resources/base_parachain.wasm --pallet=pallet_timestamp --extrinsic= --output=./weights.rs

Or run a command pop bench pallet

Benchmarking completed successfully

Benchmark a pallet or parachain

Usage: pop bench
       pop bench <COMMAND>

Commands:
  pallet  Benchmark the extrinsics of FRAME Pallets
  help    Print this message or the help of the given subcommand(s)

To run benchmarking, builds the parachain runtime and specify the runtime path with --runtime

┌   Pop CLI : Benchmarking your pallets
│
▲  NOTE: the `pop bench pallet` is not yet battle tested - double check the results.
│
▲  NOTE: this may take some time...
│
[2025-02-12T17:27:41Z INFO  pallet_collator_selection::pallet] assembling new collators for new session 0 at #0
[2025-02-12T17:27:41Z INFO  pallet_collator_selection::pallet] assembling new collators for new session 1 at #0
[2025-02-12T17:27:42Z INFO  polkadot_sdk_frame::benchmark::pallet] Loading WASM from file
[2025-02-12T17:27:57Z INFO  polkadot_sdk_frame::benchmark::pallet] [  0 % ] Starting benchmark: pallet_timestamp::set
[2025-02-12T17:27:57Z INFO  polkadot_sdk_frame::benchmark::pallet] [ 50 % ] Starting benchmark: pallet_timestamp::on_finalize
Pallet: "pallet_timestamp", Extrinsic: "set", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========
Storage: `Timestamp::Now` (r:1 w:1)
Proof: `Timestamp::Now` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`)
Storage: `Aura::CurrentSlot` (r:1 w:0)
Proof: `Aura::CurrentSlot` (`max_values`: Some(1), `max_size`: Some(8), added: 503, mode: `MaxEncodedLen`)

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=       97
              µs

Reads = 2
Writes = 1
Recorded proof Size = 86

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=       97
              µs

Reads = 2
Writes = 1
Recorded proof Size = 86

Pallet: "pallet_timestamp", Extrinsic: "on_finalize", Lowest values: [], Highest values: [], Steps: 50, Repeat: 20
Raw Storage Info
========

Median Slopes Analysis
========
-- Extrinsic Time --

Model:
Time ~=       46
              µs

Reads = 0
Writes = 0
Recorded proof Size = 57

Min Squares Analysis
========
-- Extrinsic Time --

Model:
Time ~=       46
              µs

Reads = 0
Writes = 0
Recorded proof Size = 57

⚙  Weight file is generated to ./weights.rs
│
└  Benchmark completed successfully!

Failed with error

┌   Pop CLI : Benchmarking your pallets
│
▲  NOTE: the `pop bench pallet` is not yet battle tested - double check the results.
│
▲  NOTE: this may take some time...
│
└  Failed to run benchmarking: No such file or directory (os error 2)
└  Benchmark completed successfully!

[sc-2881]

@chungquantin chungquantin force-pushed the chungquantin/feat-pop_bench branch from 5c891b5 to 8f82fde Compare February 11, 2025 09:13
@codecov
Copy link

codecov bot commented Feb 11, 2025

Codecov Report

Attention: Patch coverage is 72.09302% with 36 lines in your changes missing coverage. Please review.

Project coverage is 75.33%. Comparing base (68ec6d5) to head (9d7c1b7).

Files with missing lines Patch % Lines
crates/pop-cli/src/commands/bench/mod.rs 76.19% 12 Missing and 13 partials ⚠️
crates/pop-cli/src/common/prompt.rs 64.28% 0 Missing and 5 partials ⚠️
crates/pop-cli/src/main.rs 0.00% 5 Missing ⚠️
crates/pop-cli/src/commands/mod.rs 0.00% 1 Missing ⚠️
@@                           Coverage Diff                           @@
##           chungquantin/feat-pop_bench_command     #407      +/-   ##
=======================================================================
- Coverage                                75.34%   75.33%   -0.01%     
=======================================================================
  Files                                       64       67       +3     
  Lines                                    13973    14074     +101     
  Branches                                 13973    14074     +101     
=======================================================================
+ Hits                                     10528    10603      +75     
- Misses                                    2098     2116      +18     
- Partials                                  1347     1355       +8     
Files with missing lines Coverage Δ
crates/pop-cli/src/commands/call/chain.rs 74.82% <ø> (+0.17%) ⬆️
crates/pop-cli/src/commands/call/contract.rs 80.53% <ø> (+0.23%) ⬆️
crates/pop-parachains/src/bench.rs 100.00% <100.00%> (ø)
crates/pop-cli/src/commands/mod.rs 24.61% <0.00%> (-0.39%) ⬇️
crates/pop-cli/src/common/prompt.rs 64.28% <64.28%> (ø)
crates/pop-cli/src/main.rs 40.50% <0.00%> (-2.74%) ⬇️
crates/pop-cli/src/commands/bench/mod.rs 76.19% <76.19%> (ø)

@chungquantin
Copy link
Contributor Author

@AlexD10S CI fails but the PR is good for a review.

Copy link
Collaborator

@AlexD10S AlexD10S left a comment

Choose a reason for hiding this comment

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

Great work! The implementation is clean, and I love seeing how you're already handling the UI testing.

I’ve left some comments on areas for improvement, along with a couple of additional tests that could help improve coverage.

One refactor I want to see: In the rest of the commands, we typically separate the core logic (handled in pop_contracts or pop_parachain) from the "frontend logic" (pop-cli crate). In this PR, the logic is just cmd.run_with_spec, but it might be worth following the same approach by adding a generate_benchmarks(cmd) function in pop_parachain crate to handle this logic.

@chungquantin chungquantin self-assigned this Feb 13, 2025
@chungquantin chungquantin added the ready-for-final-review The PR is ready for final review label Feb 13, 2025
chungquantin added a commit that referenced this pull request Mar 25, 2025
* 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 faf3ce5889bffc547e840b692be64e96b6da67da.

* 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

* feat: build parachain with `runtime-benchmark` feature

* chore: 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

* 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

* 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

* feat: pallet benchmarking interactive UI (#420)

* 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 faf3ce5889bffc547e840b692be64e96b6da67da.

* 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 refact…
chungquantin added a commit that referenced this pull request Mar 25, 2025