mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 10:31:03 +00:00
Fix XCM Weights on Westend (#4066)
* found issue * fix up * remove printlns
This commit is contained in:
@@ -49,3 +49,21 @@ fn call_size() {
|
||||
If the limit is too strong, maybe consider increase the limit to 300.",
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn sanity_check_teleport_assets_weight() {
|
||||
// This test sanity checks that at least 50 teleports can exist in a block.
|
||||
// Usually when XCM runs into an issue, it will return a weight of `Weight::MAX`,
|
||||
// so this test will certainly ensure that this problem does not occur.
|
||||
use frame_support::dispatch::GetDispatchInfo;
|
||||
let weight = pallet_xcm::Call::<Runtime>::teleport_assets {
|
||||
dest: Box::new(xcm::VersionedMultiLocation::V1(MultiLocation::here())),
|
||||
beneficiary: Box::new(xcm::VersionedMultiLocation::V1(MultiLocation::here())),
|
||||
assets: Box::new((Concrete(MultiLocation::here()), Fungible(200_000)).into()),
|
||||
fee_asset_item: 0,
|
||||
}
|
||||
.get_dispatch_info()
|
||||
.weight;
|
||||
|
||||
assert!(weight * 50 < BlockWeights::get().max_block);
|
||||
}
|
||||
|
||||
@@ -31,7 +31,9 @@ trait WeighMultiAssets {
|
||||
fn weigh_multi_assets(&self, balances_weight: Weight) -> Weight;
|
||||
}
|
||||
|
||||
// TODO wild case
|
||||
// Westend only knows about one asset, the balances pallet.
|
||||
const MAX_ASSETS: u32 = 1;
|
||||
|
||||
impl WeighMultiAssets for MultiAssetFilter {
|
||||
fn weigh_multi_assets(&self, balances_weight: Weight) -> Weight {
|
||||
match self {
|
||||
@@ -44,7 +46,7 @@ impl WeighMultiAssets for MultiAssetFilter {
|
||||
AssetTypes::Unknown => Weight::MAX,
|
||||
})
|
||||
.fold(0, |acc, x| acc.saturating_add(x)),
|
||||
_ => Weight::MAX,
|
||||
Self::Wild(_) => (MAX_ASSETS as Weight).saturating_mul(balances_weight),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user