From 59156c4c0e626f6a403b5b91f29326c04a8d0bfc Mon Sep 17 00:00:00 2001 From: Yaroslav Bolyukin Date: Fri, 24 Mar 2023 08:54:34 +0000 Subject: [PATCH] feat(foreign-asset): enable PoV benchmarking --- --- a/pallets/foreign-assets/src/benchmarking.rs +++ b/pallets/foreign-assets/src/benchmarking.rs @@ -24,15 +24,21 @@ use xcm::VersionedMultiLocation; use xcm::v3::Junctions::X1; use frame_support::traits::Currency; -use sp_std::boxed::Box; +use sp_std::{vec::Vec, boxed::Box}; + +fn bounded>>(slice: &[u8]) -> T { + T::try_from(slice.to_vec()) + .map_err(|_| "slice doesn't fit") + .unwrap() +} benchmarks! { register_foreign_asset { let owner: T::AccountId = account("user", 0, 1); let location: VersionedMultiLocation = VersionedMultiLocation::from(X1(Parachain(1000))); let metadata: AssetMetadata<<::Currency as Currency<::AccountId>>::Balance> = AssetMetadata{ - name: "name".into(), - symbol: "symbol".into(), + name: bounded(b"name"), + symbol: bounded(b"symbol"), decimals: 18, minimal_balance: 1u32.into() }; @@ -47,14 +53,14 @@ let owner: T::AccountId = account("user", 0, 1); let location: VersionedMultiLocation = VersionedMultiLocation::from(X1(Parachain(2000))); let metadata: AssetMetadata<<::Currency as Currency<::AccountId>>::Balance> = AssetMetadata{ - name: "name".into(), - symbol: "symbol".into(), + name: bounded(b"name"), + symbol: bounded(b"symbol"), decimals: 18, minimal_balance: 1u32.into() }; let metadata2: AssetMetadata<<::Currency as Currency<::AccountId>>::Balance> = AssetMetadata{ - name: "name2".into(), - symbol: "symbol2".into(), + name: bounded(b"name2"), + symbol: bounded(b"symbol2"), decimals: 18, minimal_balance: 1u32.into() }; --- a/pallets/foreign-assets/src/lib.rs +++ b/pallets/foreign-assets/src/lib.rs @@ -190,10 +190,13 @@ type WeightInfo: WeightInfo; } - #[derive(Clone, Eq, PartialEq, RuntimeDebug, Encode, Decode, TypeInfo)] + pub type AssetName = BoundedVec>; + pub type AssetSymbol = BoundedVec>; + + #[derive(Clone, Eq, PartialEq, RuntimeDebug, Encode, Decode, TypeInfo, MaxEncodedLen)] pub struct AssetMetadata { - pub name: Vec, - pub symbol: Vec, + pub name: AssetName, + pub symbol: AssetSymbol, pub decimals: u8, pub minimal_balance: Balance, } -- gitstuff