Re-add deprecated --execution arg on benchmark pallet (#14567)

* Add DeferGuard::new

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Re-add deprecated 'execution' arg to benchmark pallet cmd.

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Extend tests

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

* Remove from tests

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>

---------

Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
This commit is contained in:
Oliver Tale-Yazdi
2023-07-13 19:41:56 +02:00
committed by GitHub
parent c4e880c155
commit ee0be2bab7
7 changed files with 34 additions and 7 deletions
@@ -39,7 +39,7 @@ async fn benchmark_block_works() {
.arg(base_dir.path()) .arg(base_dir.path())
.args(["--from", "1", "--to", "1"]) .args(["--from", "1", "--to", "1"])
.args(["--repeat", "1"]) .args(["--repeat", "1"])
.args(["--wasm-execution", "compiled"]) .args(["--wasm-execution=compiled"])
.status() .status()
.unwrap(); .unwrap();
@@ -39,6 +39,7 @@ fn benchmark_extrinsic(pallet: &str, extrinsic: &str) {
.args(&["--pallet", pallet, "--extrinsic", extrinsic]) .args(&["--pallet", pallet, "--extrinsic", extrinsic])
// Run with low repeats for faster execution. // Run with low repeats for faster execution.
.args(["--warmup=10", "--repeat=10", "--max-ext-per-block=10"]) .args(["--warmup=10", "--repeat=10", "--max-ext-per-block=10"])
.args(["--wasm-execution=compiled"])
.status() .status()
.unwrap(); .unwrap();
@@ -36,6 +36,7 @@ fn benchmark_overhead_works() {
.args(["--warmup", "10", "--repeat", "10"]) .args(["--warmup", "10", "--repeat", "10"])
.args(["--add", "100", "--mul", "1.2", "--metric", "p75"]) .args(["--add", "100", "--mul", "1.2", "--metric", "p75"])
.args(["--max-ext-per-block", "10"]) .args(["--max-ext-per-block", "10"])
.args(["--wasm-execution=compiled"])
.status() .status()
.unwrap(); .unwrap();
assert!(status.success()); assert!(status.success());
@@ -34,16 +34,20 @@ fn benchmark_pallet_works() {
} }
fn benchmark_pallet(steps: u32, repeat: u32, should_work: bool) { fn benchmark_pallet(steps: u32, repeat: u32, should_work: bool) {
let output = Command::new(cargo_bin("substrate")) let status = Command::new(cargo_bin("substrate"))
.args(["benchmark", "pallet", "--dev"]) .args(["benchmark", "pallet", "--dev"])
// Use the `addition` benchmark since is the fastest. // Use the `addition` benchmark since is the fastest.
.args(["--pallet", "frame-benchmarking", "--extrinsic", "addition"]) .args(["--pallet", "frame-benchmarking", "--extrinsic", "addition"])
.args(["--steps", &format!("{}", steps), "--repeat", &format!("{}", repeat)]) .args(["--steps", &format!("{}", steps), "--repeat", &format!("{}", repeat)])
.output() .args([
"--wasm-execution=compiled",
"--no-storage-info",
"--no-median-slopes",
"--no-min-squares",
"--heap-pages=4096",
])
.status()
.unwrap(); .unwrap();
if output.status.success() != should_work { assert_eq!(status.success(), should_work);
let log = String::from_utf8_lossy(&output.stderr).to_string();
panic!("Test failed:\n{}", log);
}
} }
+7
View File
@@ -25,6 +25,13 @@
#[must_use] #[must_use]
pub struct DeferGuard<F: FnOnce()>(pub Option<F>); pub struct DeferGuard<F: FnOnce()>(pub Option<F>);
impl<F: FnOnce()> DeferGuard<F> {
/// Creates a new `DeferGuard` with the given closure.
pub fn new(f: F) -> Self {
Self(Some(f))
}
}
impl<F: FnOnce()> Drop for DeferGuard<F> { impl<F: FnOnce()> Drop for DeferGuard<F> {
fn drop(&mut self) { fn drop(&mut self) {
self.0.take().map(|f| f()); self.0.take().map(|f| f());
@@ -147,6 +147,16 @@ impl PalletCmd {
<<<BB as BlockT>::Header as HeaderT>::Number as std::str::FromStr>::Err: std::fmt::Debug, <<<BB as BlockT>::Header as HeaderT>::Number as std::str::FromStr>::Err: std::fmt::Debug,
ExtraHostFunctions: sp_wasm_interface::HostFunctions, ExtraHostFunctions: sp_wasm_interface::HostFunctions,
{ {
let _d = self.execution.as_ref().map(|exec| {
// We print the warning at the end, since there is often A LOT of output.
sp_core::defer::DeferGuard::new(move || {
log::warn!(
target: LOG_TARGET,
"⚠️ Argument `--execution` is deprecated. Its value of `{exec}` has on effect.",
)
})
});
if let Some(output_path) = &self.output { if let Some(output_path) = &self.output {
if !output_path.is_dir() && output_path.file_name().is_none() { if !output_path.is_dir() && output_path.file_name().is_none() {
return Err("Output file or path is invalid!".into()) return Err("Output file or path is invalid!".into())
@@ -150,6 +150,10 @@ pub struct PalletCmd {
)] )]
pub wasmtime_instantiation_strategy: WasmtimeInstantiationStrategy, pub wasmtime_instantiation_strategy: WasmtimeInstantiationStrategy,
/// DEPRECATED: This argument has no effect.
#[arg(long = "execution")]
pub execution: Option<String>,
/// Limit the memory the database cache can use. /// Limit the memory the database cache can use.
#[arg(long = "db-cache", value_name = "MiB", default_value_t = 1024)] #[arg(long = "db-cache", value_name = "MiB", default_value_t = 1024)]
pub database_cache_size: u32, pub database_cache_size: u32,