b6d35f6faf
Updated 4763 files with dual copyright: - Parity Technologies (UK) Ltd. - Dijital Kurdistan Tech Institute
126 lines
4.2 KiB
Rust
126 lines
4.2 KiB
Rust
// This file is part of Bizinikiwi.
|
|
|
|
// Copyright (C) Parity Technologies (UK) Ltd. and Dijital Kurdistan Tech Institute
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
//! Benchmarks for Asset Conversion Tx Payment Pezpallet's transaction extension
|
|
|
|
extern crate alloc;
|
|
|
|
use super::*;
|
|
use crate::Pezpallet;
|
|
use pezframe_benchmarking::v2::*;
|
|
use pezframe_support::{
|
|
dispatch::{DispatchInfo, PostDispatchInfo},
|
|
pezpallet_prelude::*,
|
|
};
|
|
use pezframe_system::RawOrigin;
|
|
use pezsp_runtime::traits::{
|
|
AsSystemOriginSigner, AsTransactionAuthorizedOrigin, DispatchTransaction, Dispatchable,
|
|
};
|
|
|
|
#[benchmarks(where
|
|
T::RuntimeOrigin: AsTransactionAuthorizedOrigin,
|
|
T::RuntimeCall: Dispatchable<Info = DispatchInfo, PostInfo = PostDispatchInfo>,
|
|
BalanceOf<T>: Send + Sync + From<u64>,
|
|
T::AssetId: Send + Sync,
|
|
<T::RuntimeCall as Dispatchable>::RuntimeOrigin: AsSystemOriginSigner<T::AccountId> + Clone,
|
|
)]
|
|
mod benchmarks {
|
|
use super::*;
|
|
|
|
#[benchmark]
|
|
fn charge_asset_tx_payment_zero() {
|
|
let caller: T::AccountId = account("caller", 0, 0);
|
|
let ext: ChargeAssetTxPayment<T> = ChargeAssetTxPayment::from(0u64.into(), None);
|
|
let inner = pezframe_system::Call::remark { remark: alloc::vec![] };
|
|
let call = T::RuntimeCall::from(inner);
|
|
let info = DispatchInfo {
|
|
call_weight: Weight::zero(),
|
|
extension_weight: Weight::zero(),
|
|
class: DispatchClass::Normal,
|
|
pays_fee: Pays::No,
|
|
};
|
|
let post_info = PostDispatchInfo { actual_weight: None, pays_fee: Pays::No };
|
|
#[block]
|
|
{
|
|
assert!(ext
|
|
.test_run(RawOrigin::Signed(caller).into(), &call, &info, 0, 0, |_| Ok(post_info))
|
|
.unwrap()
|
|
.is_ok());
|
|
}
|
|
}
|
|
|
|
#[benchmark]
|
|
fn charge_asset_tx_payment_native() {
|
|
let caller: T::AccountId = account("caller", 0, 0);
|
|
let (fun_asset_id, _) = <T as Config>::BenchmarkHelper::create_asset_id_parameter(1);
|
|
<T as Config>::BenchmarkHelper::setup_balances_and_pool(fun_asset_id, caller.clone());
|
|
let ext: ChargeAssetTxPayment<T> = ChargeAssetTxPayment::from(10u64.into(), None);
|
|
let inner = pezframe_system::Call::remark { remark: alloc::vec![] };
|
|
let call = T::RuntimeCall::from(inner);
|
|
let info = DispatchInfo {
|
|
call_weight: Weight::from_parts(10, 0),
|
|
extension_weight: Weight::zero(),
|
|
class: DispatchClass::Operational,
|
|
pays_fee: Pays::Yes,
|
|
};
|
|
// Submit a lower post info weight to trigger the refund path.
|
|
let post_info =
|
|
PostDispatchInfo { actual_weight: Some(Weight::from_parts(5, 0)), pays_fee: Pays::Yes };
|
|
|
|
#[block]
|
|
{
|
|
assert!(ext
|
|
.test_run(RawOrigin::Signed(caller).into(), &call, &info, 0, 0, |_| Ok(post_info))
|
|
.unwrap()
|
|
.is_ok());
|
|
}
|
|
}
|
|
|
|
#[benchmark]
|
|
fn charge_asset_tx_payment_asset() {
|
|
let caller: T::AccountId = account("caller", 0, 0);
|
|
let (fun_asset_id, asset_id) = <T as Config>::BenchmarkHelper::create_asset_id_parameter(1);
|
|
<T as Config>::BenchmarkHelper::setup_balances_and_pool(fun_asset_id, caller.clone());
|
|
|
|
let tip = 10u64.into();
|
|
let ext: ChargeAssetTxPayment<T> = ChargeAssetTxPayment::from(tip, Some(asset_id));
|
|
let inner = pezframe_system::Call::remark { remark: alloc::vec![] };
|
|
let call = T::RuntimeCall::from(inner);
|
|
let info = DispatchInfo {
|
|
call_weight: Weight::from_parts(10, 0),
|
|
extension_weight: Weight::zero(),
|
|
class: DispatchClass::Operational,
|
|
pays_fee: Pays::Yes,
|
|
};
|
|
// Submit a lower post info weight to trigger the refund path.
|
|
let post_info =
|
|
PostDispatchInfo { actual_weight: Some(Weight::from_parts(5, 0)), pays_fee: Pays::Yes };
|
|
|
|
#[block]
|
|
{
|
|
assert!(ext
|
|
.test_run(RawOrigin::Signed(caller.clone()).into(), &call, &info, 0, 0, |_| Ok(
|
|
post_info
|
|
))
|
|
.unwrap()
|
|
.is_ok());
|
|
}
|
|
}
|
|
|
|
impl_benchmark_test_suite!(Pezpallet, crate::mock::new_test_ext(), crate::mock::Runtime);
|
|
}
|