difftreelog
fix build node with benchmarks
in: master
7 files changed
Cargo.lockdiffbeforeafterboth--- a/Cargo.lock
+++ b/Cargo.lock
@@ -6536,6 +6536,7 @@
"sp-runtime",
"sp-session",
"sp-std",
+ "sp-storage",
"sp-transaction-pool",
"sp-version",
"staging-xcm",
Cargo.tomldiffbeforeafterboth--- a/Cargo.toml
+++ b/Cargo.toml
@@ -170,6 +170,7 @@
sp-staking = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
sp-state-machine = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
sp-std = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
+sp-storage = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
sp-timestamp = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
sp-tracing = { git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
sp-transaction-pool = { default-features = false, git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" }
node/cli/src/command.rsdiffbeforeafterboth--- a/node/cli/src/command.rs
+++ b/node/cli/src/command.rs
@@ -354,30 +354,38 @@
}
#[cfg(feature = "runtime-benchmarks")]
Some(Subcommand::Benchmark(cmd)) => {
+ use frame_benchmarking_cli::{BenchmarkCmd, SUBSTRATE_REFERENCE_HARDWARE};
use polkadot_cli::Block;
- use frame_benchmarking_cli::{BenchmarkCmd, SUBSTRATE_REFERENCE_HARDWARE};
+ use sp_io::SubstrateHostFunctions;
+
let runner = cli.create_runner(cmd)?;
// Switch on the concrete benchmark sub-command-
match cmd {
BenchmarkCmd::Pallet(cmd) => {
- runner.sync_run(|config| cmd.run::<Block, DefaultRuntimeExecutor>(config))
+ runner.sync_run(|config| cmd.run::<Block, SubstrateHostFunctions>(config))
}
BenchmarkCmd::Block(cmd) => runner.sync_run(|config| {
let partials = new_partial::<
+ opal_runtime::Runtime,
+ opal_runtime::RuntimeApi,
+ OpalRuntimeExecutor,
_,
- default_runtime::RuntimeApi,
- DefaultRuntimeExecutor,
- _,
- >(&config, crate::service::parachain_build_import_queue)?;
+ >(
+ &config,
+ crate::service::parachain_build_import_queue::<opal_runtime::Runtime, _, _>,
+ )?;
cmd.run(partials.client)
}),
BenchmarkCmd::Storage(cmd) => runner.sync_run(|config| {
let partials = new_partial::<
+ opal_runtime::Runtime,
+ opal_runtime::RuntimeApi,
+ OpalRuntimeExecutor,
_,
- default_runtime::RuntimeApi,
- DefaultRuntimeExecutor,
- _,
- >(&config, crate::service::parachain_build_import_queue)?;
+ >(
+ &config,
+ crate::service::parachain_build_import_queue::<opal_runtime::Runtime, _, _>,
+ )?;
let db = partials.backend.expose_db();
let storage = partials.backend.expose_storage();
pallets/collator-selection/Cargo.tomldiffbeforeafterboth--- a/pallets/collator-selection/Cargo.toml
+++ b/pallets/collator-selection/Cargo.toml
@@ -14,7 +14,7 @@
[dependencies]
log = { workspace = true }
parity-scale-codec = { workspace = true }
-rand = { version = "0.8.5", default-features = false }
+rand = { version = "0.8.5", default-features = false, features = ["std_rng"] }
scale-info = { workspace = true }
serde = { workspace = true }
pallets/unique/src/benchmarking.rsdiffbeforeafterboth1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617#![cfg(feature = "runtime-benchmarks")]1819use frame_benchmarking::v2::{account, benchmarks, BenchmarkError};20use frame_support::traits::{fungible::Balanced, tokens::Precision, Get};21use frame_system::RawOrigin;22use pallet_common::{23 benchmarking::{create_data, create_u16_data},24 erc::CrossAccountId,25 Config as CommonConfig,26};27use sp_std::vec;28use sp_runtime::DispatchError;29use up_data_structs::{30 CollectionId, CollectionLimits, CollectionMode, MAX_COLLECTION_DESCRIPTION_LENGTH,31 MAX_COLLECTION_NAME_LENGTH, MAX_TOKEN_PREFIX_LENGTH,32};3334use super::*;35use crate::Pallet;3637const SEED: u32 = 1;3839fn create_collection_helper<T: Config>(40 owner: T::AccountId,41 mode: CollectionMode,42) -> Result<CollectionId, DispatchError> {43 let _ = <T as CommonConfig>::Currency::deposit(44 &owner,45 T::CollectionCreationPrice::get(),46 Precision::Exact,47 )48 .unwrap();49 let col_name = create_u16_data::<{ MAX_COLLECTION_NAME_LENGTH }>();50 let col_desc = create_u16_data::<{ MAX_COLLECTION_DESCRIPTION_LENGTH }>();51 let token_prefix = create_data::<{ MAX_TOKEN_PREFIX_LENGTH }>();52 <Pallet<T>>::create_collection(53 RawOrigin::Signed(owner).into(),54 col_name,55 col_desc,56 token_prefix,57 mode,58 )?;59 Ok(<pallet_common::CreatedCollectionCount<T>>::get())60}61pub fn create_nft_collection<T: Config>(62 owner: T::AccountId,63) -> Result<CollectionId, DispatchError> {64 create_collection_helper::<T>(owner, CollectionMode::NFT)65}6667#[benchmarks]68mod benchmarks {69 use super::*;7071 #[benchmark]72 fn create_collection() -> Result<(), BenchmarkError> {73 let col_name = create_u16_data::<{ MAX_COLLECTION_NAME_LENGTH }>();74 let col_desc = create_u16_data::<{ MAX_COLLECTION_DESCRIPTION_LENGTH }>();75 let token_prefix = create_data::<{ MAX_TOKEN_PREFIX_LENGTH }>();76 let mode: CollectionMode = CollectionMode::NFT;77 let caller: T::AccountId = account("caller", 0, SEED);78 let _ = <T as CommonConfig>::Currency::deposit(79 &caller,80 T::CollectionCreationPrice::get(),81 Precision::Exact,82 )83 .unwrap();8485 #[extrinsic_call]86 _(87 RawOrigin::Signed(caller.clone()),88 col_name,89 col_desc,90 token_prefix,91 mode,92 );9394 assert_eq!(95 <pallet_common::CollectionById<T>>::get(CollectionId(1))96 .unwrap()97 .owner,98 caller99 );100101 Ok(())102 }103104 #[benchmark]105 fn destroy_collection() -> Result<(), BenchmarkError> {106 let caller: T::AccountId = account("caller", 0, SEED);107 let collection = create_nft_collection::<T>(caller.clone())?;108109 #[extrinsic_call]110 _(RawOrigin::Signed(caller.clone()), collection);111112 Ok(())113 }114115 #[benchmark]116 fn add_to_allow_list() -> Result<(), BenchmarkError> {117 let caller: T::AccountId = account("caller", 0, SEED);118 let allowlist_account: T::AccountId = account("admin", 0, SEED);119 let collection = create_nft_collection::<T>(caller.clone())?;120121 #[extrinsic_call]122 _(123 RawOrigin::Signed(caller.clone()),124 collection,125 T::CrossAccountId::from_sub(allowlist_account),126 );127128 Ok(())129 }130131 #[benchmark]132 fn remove_from_allow_list() -> Result<(), BenchmarkError> {133 let caller: T::AccountId = account("caller", 0, SEED);134 let allowlist_account: T::AccountId = account("admin", 0, SEED);135 let collection = create_nft_collection::<T>(caller.clone())?;136 <Pallet<T>>::add_to_allow_list(137 RawOrigin::Signed(caller.clone()).into(),138 collection,139 T::CrossAccountId::from_sub(allowlist_account.clone()),140 )?;141142 #[extrinsic_call]143 _(144 RawOrigin::Signed(caller.clone()),145 collection,146 T::CrossAccountId::from_sub(allowlist_account),147 );148149 Ok(())150 }151152 #[benchmark]153 fn change_collection_owner() -> Result<(), BenchmarkError> {154 let caller: T::AccountId = account("caller", 0, SEED);155 let collection = create_nft_collection::<T>(caller.clone())?;156 let new_owner: T::AccountId = account("admin", 0, SEED);157158 #[extrinsic_call]159 _(RawOrigin::Signed(caller.clone()), collection, new_owner);160161 Ok(())162 }163164 #[benchmark]165 fn add_collection_admin() -> Result<(), BenchmarkError> {166 let caller: T::AccountId = account("caller", 0, SEED);167 let collection = create_nft_collection::<T>(caller.clone())?;168 let new_admin: T::AccountId = account("admin", 0, SEED);169170 #[extrinsic_call]171 _(172 RawOrigin::Signed(caller.clone()),173 collection,174 T::CrossAccountId::from_sub(new_admin),175 );176177 Ok(())178 }179180 #[benchmark]181 fn remove_collection_admin() -> Result<(), BenchmarkError> {182 let caller: T::AccountId = account("caller", 0, SEED);183 let collection = create_nft_collection::<T>(caller.clone())?;184 let new_admin: T::AccountId = account("admin", 0, SEED);185 <Pallet<T>>::add_collection_admin(186 RawOrigin::Signed(caller.clone()).into(),187 collection,188 T::CrossAccountId::from_sub(new_admin.clone()),189 )?;190191 #[extrinsic_call]192 _(193 RawOrigin::Signed(caller.clone()),194 collection,195 T::CrossAccountId::from_sub(new_admin),196 );197198 Ok(())199 }200201 #[benchmark]202 fn set_collection_sponsor() -> Result<(), BenchmarkError> {203 let caller: T::AccountId = account("caller", 0, SEED);204 let collection = create_nft_collection::<T>(caller.clone())?;205206 #[extrinsic_call]207 _(208 RawOrigin::Signed(caller.clone()),209 collection,210 caller.clone(),211 );212213 Ok(())214 }215216 #[benchmark]217 fn confirm_sponsorship() -> Result<(), BenchmarkError> {218 let caller: T::AccountId = account("caller", 0, SEED);219 let collection = create_nft_collection::<T>(caller.clone())?;220 <Pallet<T>>::set_collection_sponsor(221 RawOrigin::Signed(caller.clone()).into(),222 collection,223 caller.clone(),224 )?;225226 #[extrinsic_call]227 _(RawOrigin::Signed(caller.clone()), collection);228229 Ok(())230 }231232 #[benchmark]233 fn remove_collection_sponsor() -> Result<(), BenchmarkError> {234 let caller: T::AccountId = account("caller", 0, SEED);235 let collection = create_nft_collection::<T>(caller.clone())?;236 <Pallet<T>>::set_collection_sponsor(237 RawOrigin::Signed(caller.clone()).into(),238 collection,239 caller.clone(),240 )?;241 <Pallet<T>>::confirm_sponsorship(RawOrigin::Signed(caller.clone()).into(), collection)?;242243 #[extrinsic_call]244 _(RawOrigin::Signed(caller.clone()), collection);245246 Ok(())247 }248249 #[benchmark]250 fn set_transfers_enabled_flag() -> Result<(), BenchmarkError> {251 let caller: T::AccountId = account("caller", 0, SEED);252 let collection = create_nft_collection::<T>(caller.clone())?;253254 #[extrinsic_call]255 _(RawOrigin::Signed(caller.clone()), collection, false);256257 Ok(())258 }259260 #[benchmark]261 fn set_collection_limits() -> Result<(), BenchmarkError> {262 let caller: T::AccountId = account("caller", 0, SEED);263 let collection = create_nft_collection::<T>(caller.clone())?;264265 let cl = CollectionLimits {266 account_token_ownership_limit: Some(0),267 sponsored_data_size: Some(0),268 token_limit: Some(1),269 sponsor_transfer_timeout: Some(0),270 sponsor_approve_timeout: None,271 owner_can_destroy: Some(true),272 owner_can_transfer: Some(true),273 sponsored_data_rate_limit: None,274 transfers_enabled: Some(true),275 };276277 #[extrinsic_call]278 set_collection_limits(RawOrigin::Signed(caller.clone()), collection, cl);279280 Ok(())281 }282283 #[benchmark]284 fn force_repair_collection() -> Result<(), BenchmarkError> {285 let caller: T::AccountId = account("caller", 0, SEED);286 let collection = create_nft_collection::<T>(caller)?;287288 #[extrinsic_call]289 _(RawOrigin::Root, collection);290291 Ok(())292 }293}1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617#![cfg(feature = "runtime-benchmarks")]1819use frame_benchmarking::v2::{account, benchmarks, BenchmarkError};20use frame_support::traits::{fungible::Balanced, tokens::Precision, Get};21use frame_system::RawOrigin;22use pallet_common::{23 benchmarking::{create_data, create_u16_data},24 erc::CrossAccountId,25 Config as CommonConfig,26};27use sp_runtime::DispatchError;28use sp_std::vec;29use up_data_structs::{30 CollectionId, CollectionLimits, CollectionMode, MAX_COLLECTION_DESCRIPTION_LENGTH,31 MAX_COLLECTION_NAME_LENGTH, MAX_TOKEN_PREFIX_LENGTH,32};3334use super::*;35use crate::Pallet;3637const SEED: u32 = 1;3839fn create_collection_helper<T: Config>(40 owner: T::AccountId,41 mode: CollectionMode,42) -> Result<CollectionId, DispatchError> {43 let _ = <T as CommonConfig>::Currency::deposit(44 &owner,45 T::CollectionCreationPrice::get(),46 Precision::Exact,47 )48 .unwrap();49 let col_name = create_u16_data::<{ MAX_COLLECTION_NAME_LENGTH }>();50 let col_desc = create_u16_data::<{ MAX_COLLECTION_DESCRIPTION_LENGTH }>();51 let token_prefix = create_data::<{ MAX_TOKEN_PREFIX_LENGTH }>();52 <Pallet<T>>::create_collection(53 RawOrigin::Signed(owner).into(),54 col_name,55 col_desc,56 token_prefix,57 mode,58 )?;59 Ok(<pallet_common::CreatedCollectionCount<T>>::get())60}61pub fn create_nft_collection<T: Config>(62 owner: T::AccountId,63) -> Result<CollectionId, DispatchError> {64 create_collection_helper::<T>(owner, CollectionMode::NFT)65}6667#[benchmarks]68mod benchmarks {69 use super::*;7071 #[benchmark]72 fn create_collection() -> Result<(), BenchmarkError> {73 let col_name = create_u16_data::<{ MAX_COLLECTION_NAME_LENGTH }>();74 let col_desc = create_u16_data::<{ MAX_COLLECTION_DESCRIPTION_LENGTH }>();75 let token_prefix = create_data::<{ MAX_TOKEN_PREFIX_LENGTH }>();76 let mode: CollectionMode = CollectionMode::NFT;77 let caller: T::AccountId = account("caller", 0, SEED);78 let _ = <T as CommonConfig>::Currency::deposit(79 &caller,80 T::CollectionCreationPrice::get(),81 Precision::Exact,82 )83 .unwrap();8485 #[extrinsic_call]86 _(87 RawOrigin::Signed(caller.clone()),88 col_name,89 col_desc,90 token_prefix,91 mode,92 );9394 assert_eq!(95 <pallet_common::CollectionById<T>>::get(CollectionId(1))96 .unwrap()97 .owner,98 caller99 );100101 Ok(())102 }103104 #[benchmark]105 fn destroy_collection() -> Result<(), BenchmarkError> {106 let caller: T::AccountId = account("caller", 0, SEED);107 let collection = create_nft_collection::<T>(caller.clone())?;108109 #[extrinsic_call]110 _(RawOrigin::Signed(caller.clone()), collection);111112 Ok(())113 }114115 #[benchmark]116 fn add_to_allow_list() -> Result<(), BenchmarkError> {117 let caller: T::AccountId = account("caller", 0, SEED);118 let allowlist_account: T::AccountId = account("admin", 0, SEED);119 let collection = create_nft_collection::<T>(caller.clone())?;120121 #[extrinsic_call]122 _(123 RawOrigin::Signed(caller.clone()),124 collection,125 T::CrossAccountId::from_sub(allowlist_account),126 );127128 Ok(())129 }130131 #[benchmark]132 fn remove_from_allow_list() -> Result<(), BenchmarkError> {133 let caller: T::AccountId = account("caller", 0, SEED);134 let allowlist_account: T::AccountId = account("admin", 0, SEED);135 let collection = create_nft_collection::<T>(caller.clone())?;136 <Pallet<T>>::add_to_allow_list(137 RawOrigin::Signed(caller.clone()).into(),138 collection,139 T::CrossAccountId::from_sub(allowlist_account.clone()),140 )?;141142 #[extrinsic_call]143 _(144 RawOrigin::Signed(caller.clone()),145 collection,146 T::CrossAccountId::from_sub(allowlist_account),147 );148149 Ok(())150 }151152 #[benchmark]153 fn change_collection_owner() -> Result<(), BenchmarkError> {154 let caller: T::AccountId = account("caller", 0, SEED);155 let collection = create_nft_collection::<T>(caller.clone())?;156 let new_owner: T::AccountId = account("admin", 0, SEED);157158 #[extrinsic_call]159 _(RawOrigin::Signed(caller.clone()), collection, new_owner);160161 Ok(())162 }163164 #[benchmark]165 fn add_collection_admin() -> Result<(), BenchmarkError> {166 let caller: T::AccountId = account("caller", 0, SEED);167 let collection = create_nft_collection::<T>(caller.clone())?;168 let new_admin: T::AccountId = account("admin", 0, SEED);169170 #[extrinsic_call]171 _(172 RawOrigin::Signed(caller.clone()),173 collection,174 T::CrossAccountId::from_sub(new_admin),175 );176177 Ok(())178 }179180 #[benchmark]181 fn remove_collection_admin() -> Result<(), BenchmarkError> {182 let caller: T::AccountId = account("caller", 0, SEED);183 let collection = create_nft_collection::<T>(caller.clone())?;184 let new_admin: T::AccountId = account("admin", 0, SEED);185 <Pallet<T>>::add_collection_admin(186 RawOrigin::Signed(caller.clone()).into(),187 collection,188 T::CrossAccountId::from_sub(new_admin.clone()),189 )?;190191 #[extrinsic_call]192 _(193 RawOrigin::Signed(caller.clone()),194 collection,195 T::CrossAccountId::from_sub(new_admin),196 );197198 Ok(())199 }200201 #[benchmark]202 fn set_collection_sponsor() -> Result<(), BenchmarkError> {203 let caller: T::AccountId = account("caller", 0, SEED);204 let collection = create_nft_collection::<T>(caller.clone())?;205206 #[extrinsic_call]207 _(208 RawOrigin::Signed(caller.clone()),209 collection,210 caller.clone(),211 );212213 Ok(())214 }215216 #[benchmark]217 fn confirm_sponsorship() -> Result<(), BenchmarkError> {218 let caller: T::AccountId = account("caller", 0, SEED);219 let collection = create_nft_collection::<T>(caller.clone())?;220 <Pallet<T>>::set_collection_sponsor(221 RawOrigin::Signed(caller.clone()).into(),222 collection,223 caller.clone(),224 )?;225226 #[extrinsic_call]227 _(RawOrigin::Signed(caller.clone()), collection);228229 Ok(())230 }231232 #[benchmark]233 fn remove_collection_sponsor() -> Result<(), BenchmarkError> {234 let caller: T::AccountId = account("caller", 0, SEED);235 let collection = create_nft_collection::<T>(caller.clone())?;236 <Pallet<T>>::set_collection_sponsor(237 RawOrigin::Signed(caller.clone()).into(),238 collection,239 caller.clone(),240 )?;241 <Pallet<T>>::confirm_sponsorship(RawOrigin::Signed(caller.clone()).into(), collection)?;242243 #[extrinsic_call]244 _(RawOrigin::Signed(caller.clone()), collection);245246 Ok(())247 }248249 #[benchmark]250 fn set_transfers_enabled_flag() -> Result<(), BenchmarkError> {251 let caller: T::AccountId = account("caller", 0, SEED);252 let collection = create_nft_collection::<T>(caller.clone())?;253254 #[extrinsic_call]255 _(RawOrigin::Signed(caller.clone()), collection, false);256257 Ok(())258 }259260 #[benchmark]261 fn set_collection_limits() -> Result<(), BenchmarkError> {262 let caller: T::AccountId = account("caller", 0, SEED);263 let collection = create_nft_collection::<T>(caller.clone())?;264265 let cl = CollectionLimits {266 account_token_ownership_limit: Some(0),267 sponsored_data_size: Some(0),268 token_limit: Some(1),269 sponsor_transfer_timeout: Some(0),270 sponsor_approve_timeout: None,271 owner_can_destroy: Some(true),272 owner_can_transfer: Some(true),273 sponsored_data_rate_limit: None,274 transfers_enabled: Some(true),275 };276277 #[extrinsic_call]278 set_collection_limits(RawOrigin::Signed(caller.clone()), collection, cl);279280 Ok(())281 }282283 #[benchmark]284 fn force_repair_collection() -> Result<(), BenchmarkError> {285 let caller: T::AccountId = account("caller", 0, SEED);286 let collection = create_nft_collection::<T>(caller)?;287288 #[extrinsic_call]289 _(RawOrigin::Root, collection);290291 Ok(())292 }293}runtime/common/runtime_apis.rsdiffbeforeafterboth--- a/runtime/common/runtime_apis.rs
+++ b/runtime/common/runtime_apis.rs
@@ -569,7 +569,8 @@
fn dispatch_benchmark(
config: frame_benchmarking::BenchmarkConfig
) -> Result<Vec<frame_benchmarking::BenchmarkBatch>, sp_runtime::RuntimeString> {
- use frame_benchmarking::{Benchmarking, BenchmarkBatch, add_benchmark, TrackedStorageKey};
+ use frame_benchmarking::{Benchmarking, BenchmarkBatch, add_benchmark};
+ use sp_storage::TrackedStorageKey;
let allowlist: Vec<TrackedStorageKey> = vec![
// Total Issuance
runtime/opal/Cargo.tomldiffbeforeafterboth--- a/runtime/opal/Cargo.toml
+++ b/runtime/opal/Cargo.toml
@@ -136,6 +136,7 @@
'sp-runtime/std',
'sp-session/std',
'sp-std/std',
+ 'sp-storage/std',
'sp-transaction-pool/std',
'sp-version/std',
'staging-xcm-builder/std',
@@ -279,6 +280,7 @@
sp-runtime = { workspace = true }
sp-session = { workspace = true }
sp-std = { workspace = true }
+sp-storage = { workspace = true }
sp-transaction-pool = { workspace = true }
sp-version = { workspace = true }
staging-xcm = { workspace = true }