difftreelog
Foreign assets benchmark
in: master
8 files changed
Makefilediffbeforeafterboth--- a/Makefile
+++ b/Makefile
@@ -128,5 +128,9 @@
bench-rmrk-equip:
make _bench PALLET=proxy-rmrk-equip
+.PHONY: bench-foreign-assets
+bench-foreign-assets:
+ make _bench PALLET=foreign-assets
+
.PHONY: bench
-bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-scheduler bench-rmrk-core bench-rmrk-equip
+bench: bench-evm-migration bench-unique bench-structure bench-fungible bench-refungible bench-nonfungible bench-scheduler bench-rmrk-core bench-rmrk-equip bench-foreign-assets
pallets/foreign-assets/Cargo.tomldiffbeforeafterboth1[package]2name = "pallet-foreign-assets"3version = "0.1.0"4license = "GPLv3"5edition = "2021"67[dependencies]8log = { version = "0.4.16", default-features = false }9serde = { version = "1.0.136", optional = true }10scale-info = { version = "2.0.1", default-features = false, features = ["derive"] }11codec = { package = "parity-scale-codec", version = "3.0.0", default-features = false }12sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27", default-features = false }13sp-std = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27", default-features = false }14frame-support = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27", default-features = false }15frame-system = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27", default-features = false }16up-data-structs = { default-features = false, path = '../../primitives/data-structs' }17pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27", default-features = false }18pallet-common = { default-features = false, path = '../common' }19pallet-fungible = { default-features = false, path = '../fungible' }20xcm = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.27", default-features = false }21xcm-builder = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.27", default-features = false }22xcm-executor = { git = "https://github.com/paritytech/polkadot", branch = "release-v0.9.27", default-features = false }23#orml-tokens = { git = 'https://github.com/UniqueNetwork/open-runtime-module-library', branch = 'unique-polkadot-v0.9.24', version = "0.4.1-dev", default-features = false }24orml-tokens = { git = "https://github.com/open-web3-stack/open-runtime-module-library", branch = "polkadot-v0.9.27", version = "0.4.1-dev", default-features = false }25#git = "https://github.com/open-web3-stack/open-runtime-module-library"26#branch = "polkadot-v0.9.27"2728[dev-dependencies]29serde_json = "1.0.68"30hex = { version = "0.4" }31sp-core = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }32sp-io = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }33pallet-timestamp = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }34pallet-balances = { git = "https://github.com/paritytech/substrate", branch = "polkadot-v0.9.27" }3536[features]37default = ["std"]38std = [39 "serde",40 "log/std",41 "codec/std",42 "scale-info/std",43 "sp-runtime/std",44 "sp-std/std",45 "frame-support/std",46 "frame-system/std",47 "up-data-structs/std",48 "pallet-common/std",49 "pallet-balances/std",50 "pallet-fungible/std",51 "orml-tokens/std"52]53try-runtime = ["frame-support/try-runtime"]pallets/foreign-assets/src/benchmarking.rsdiffbeforeafterboth--- /dev/null
+++ b/pallets/foreign-assets/src/benchmarking.rs
@@ -0,0 +1,76 @@
+// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.
+// This file is part of Unique Network.
+
+// Unique Network is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Unique Network is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.
+
+#![allow(missing_docs)]
+
+use super::{Config, Pallet};
+use frame_benchmarking::{benchmarks, account};
+use frame_system::RawOrigin;
+use crate::AssetMetadata;
+use crate::Pallet as ForeignAssets;
+use xcm::opaque::latest::Junction::Parachain;
+use xcm::VersionedMultiLocation;
+use frame_support::{
+ traits::{Currency},
+};
+use sp_std::boxed::Box;
+
+benchmarks! {
+ register_foreign_asset {
+ let origin: RawOrigin<T::AccountId> = frame_system::RawOrigin::Root;
+ let owner: T::AccountId = account("user", 0, 1);
+ let location: VersionedMultiLocation = VersionedMultiLocation::from(Parachain(1000).into());
+ let metadata: AssetMetadata<<<T as Config>::Currency as Currency<<T as frame_system::Config>::AccountId>>::Balance> = AssetMetadata{
+ name: "name".into(),
+ symbol: "symbol".into(),
+ decimals: 18,
+ minimal_balance: 1u32.into()
+ };
+ let mut balance: <<T as Config>::Currency as Currency<<T as frame_system::Config>::AccountId>>::Balance =
+ 4_000_000_000u32.into();
+ balance = balance * balance;
+ <T as Config>::Currency::make_free_balance_be(&owner,
+ balance);
+ }: {
+ ForeignAssets::<T>::register_foreign_asset(origin.into(), owner, Box::new(location), Box::new(metadata))?
+ }
+
+ update_foreign_asset {
+ let origin: RawOrigin<T::AccountId> = frame_system::RawOrigin::Root;
+ let owner: T::AccountId = account("user", 0, 1);
+ let location: VersionedMultiLocation = VersionedMultiLocation::from(Parachain(2000).into());
+ let metadata: AssetMetadata<<<T as Config>::Currency as Currency<<T as frame_system::Config>::AccountId>>::Balance> = AssetMetadata{
+ name: "name".into(),
+ symbol: "symbol".into(),
+ decimals: 18,
+ minimal_balance: 1u32.into()
+ };
+ let metadata2: AssetMetadata<<<T as Config>::Currency as Currency<<T as frame_system::Config>::AccountId>>::Balance> = AssetMetadata{
+ name: "name2".into(),
+ symbol: "symbol2".into(),
+ decimals: 18,
+ minimal_balance: 1u32.into()
+ };
+ let mut balance: <<T as Config>::Currency as Currency<<T as frame_system::Config>::AccountId>>::Balance =
+ 4_000_000_000u32.into();
+ balance = balance * balance;
+ <T as Config>::Currency::make_free_balance_be(&owner, balance);
+ ForeignAssets::<T>::register_foreign_asset(origin.clone().into(), owner, Box::new(location.clone()), Box::new(metadata))?;
+
+ }: {
+ ForeignAssets::<T>::update_foreign_asset(origin.into(), 0, Box::new(location), Box::new(metadata2))?
+ }
+}
pallets/foreign-assets/src/lib.rsdiffbeforeafterboth--- a/pallets/foreign-assets/src/lib.rs
+++ b/pallets/foreign-assets/src/lib.rs
@@ -124,6 +124,9 @@
mod impl_fungibles;
mod weights;
+#[cfg(feature = "runtime-benchmarks")]
+mod benchmarking;
+
pub use module::*;
pub use weights::WeightInfo;
@@ -303,7 +306,7 @@
let data: CreateCollectionData<T::AccountId> = CreateCollectionData {
name: name.try_into().unwrap(),
description: description.try_into().unwrap(),
- mode: CollectionMode::Fungible(18),
+ mode: CollectionMode::Fungible(md.decimals),
..Default::default()
};
runtime/common/runtime_apis.rsdiffbeforeafterboth--- a/runtime/common/runtime_apis.rs
+++ b/runtime/common/runtime_apis.rs
@@ -653,6 +653,10 @@
#[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]
list_benchmark!(list, extra, pallet_proxy_rmrk_equip, RmrkEquip);
+ #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]
+ list_benchmark!(list, extra, pallet_foreign_assets, ForeignAssets);
+
+
// list_benchmark!(list, extra, pallet_evm_coder_substrate, EvmCoderSubstrate);
let storage_info = AllPalletsReversedWithSystemFirst::storage_info();
@@ -708,6 +712,9 @@
#[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]
add_benchmark!(params, batches, pallet_proxy_rmrk_equip, RmrkEquip);
+ #[cfg(not(any(feature = "unique-runtime", feature = "quartz-runtime")))]
+ add_benchmark!(params, batches, pallet_foreign_assets, ForeignAssets);
+
// add_benchmark!(params, batches, pallet_evm_coder_substrate, EvmCoderSubstrate);
if batches.is_empty() { return Err("Benchmark not found for this pallet.".into()) }
runtime/opal/Cargo.tomldiffbeforeafterboth--- a/runtime/opal/Cargo.toml
+++ b/runtime/opal/Cargo.toml
@@ -35,6 +35,7 @@
'pallet-nonfungible/runtime-benchmarks',
'pallet-proxy-rmrk-core/runtime-benchmarks',
'pallet-proxy-rmrk-equip/runtime-benchmarks',
+ 'pallet-foreign-assets/runtime-benchmarks',
'pallet-unique/runtime-benchmarks',
'pallet-inflation/runtime-benchmarks',
'pallet-unique-scheduler/runtime-benchmarks',
runtime/quartz/Cargo.tomldiffbeforeafterboth--- a/runtime/quartz/Cargo.toml
+++ b/runtime/quartz/Cargo.toml
@@ -36,6 +36,7 @@
'pallet-proxy-rmrk-core/runtime-benchmarks',
'pallet-proxy-rmrk-equip/runtime-benchmarks',
'pallet-unique/runtime-benchmarks',
+ 'pallet-foreign-assets/runtime-benchmarks',
'pallet-inflation/runtime-benchmarks',
'pallet-unique-scheduler/runtime-benchmarks',
'pallet-xcm/runtime-benchmarks',
runtime/unique/Cargo.tomldiffbeforeafterboth--- a/runtime/unique/Cargo.toml
+++ b/runtime/unique/Cargo.toml
@@ -36,6 +36,7 @@
'pallet-proxy-rmrk-core/runtime-benchmarks',
'pallet-proxy-rmrk-equip/runtime-benchmarks',
'pallet-unique/runtime-benchmarks',
+ 'pallet-foreign-assets/runtime-benchmarks',
'pallet-inflation/runtime-benchmarks',
'pallet-unique-scheduler/runtime-benchmarks',
'pallet-xcm/runtime-benchmarks',