referrerpolicy=no-referrer-when-downgrade

snowbridge_pallet_system/
benchmarking.rs

1// SPDX-License-Identifier: Apache-2.0
2// SPDX-FileCopyrightText: 2023 Snowfork <hello@snowfork.com>
3//! Benchmarking setup for pallet-template
4use super::*;
5
6#[allow(unused)]
7use crate::Pallet as SnowbridgeControl;
8use frame_benchmarking::v2::*;
9use frame_system::RawOrigin;
10use snowbridge_core::eth;
11use snowbridge_outbound_queue_primitives::OperatingMode;
12use sp_runtime::SaturatedConversion;
13use xcm::prelude::*;
14
15#[benchmarks]
16mod benchmarks {
17	use super::*;
18
19	#[benchmark]
20	fn upgrade() -> Result<(), BenchmarkError> {
21		let impl_address = H160::repeat_byte(1);
22		let impl_code_hash = H256::repeat_byte(1);
23
24		// Assume 256 bytes passed to initializer
25		let params: Vec<u8> = (0..256).map(|_| 1u8).collect();
26
27		#[extrinsic_call]
28		_(
29			RawOrigin::Root,
30			impl_address,
31			impl_code_hash,
32			Some(Initializer { params, maximum_required_gas: 100000 }),
33		);
34
35		Ok(())
36	}
37
38	#[benchmark]
39	fn set_operating_mode() -> Result<(), BenchmarkError> {
40		#[extrinsic_call]
41		_(RawOrigin::Root, OperatingMode::RejectingOutboundMessages);
42
43		Ok(())
44	}
45
46	#[benchmark]
47	fn set_pricing_parameters() -> Result<(), BenchmarkError> {
48		let params = T::DefaultPricingParameters::get();
49
50		#[extrinsic_call]
51		_(RawOrigin::Root, params);
52
53		Ok(())
54	}
55
56	#[benchmark]
57	fn set_token_transfer_fees() -> Result<(), BenchmarkError> {
58		#[extrinsic_call]
59		_(RawOrigin::Root, 1, 1, eth(1));
60
61		Ok(())
62	}
63
64	#[benchmark]
65	fn register_token() -> Result<(), BenchmarkError> {
66		let caller: T::AccountId = whitelisted_caller();
67
68		let amount: BalanceOf<T> =
69			(10_000_000_000_000_u128).saturated_into::<u128>().saturated_into();
70
71		T::Token::mint_into(&caller, amount)?;
72
73		let relay_token_asset_id: Location = Location::parent();
74		let asset = Box::new(VersionedLocation::from(relay_token_asset_id));
75		let asset_metadata = AssetMetadata {
76			name: "wnd".as_bytes().to_vec().try_into().unwrap(),
77			symbol: "wnd".as_bytes().to_vec().try_into().unwrap(),
78			decimals: 12,
79		};
80
81		#[extrinsic_call]
82		_(RawOrigin::Root, asset, asset_metadata);
83
84		Ok(())
85	}
86
87	impl_benchmark_test_suite!(
88		SnowbridgeControl,
89		crate::mock::new_test_ext(true),
90		crate::mock::Test
91	);
92}