snowbridge_pallet_outbound_queue/
benchmarking.rs1use super::*;
4
5use bridge_hub_common::AggregateMessageOrigin;
6use codec::Encode;
7use frame_benchmarking::v2::*;
8use snowbridge_core::ChannelId;
9use snowbridge_outbound_queue_primitives::v1::{Command, Initializer};
10use sp_core::{H160, H256};
11
12#[allow(unused_imports)]
13use crate::Pallet as OutboundQueue;
14
15#[benchmarks(
16 where
17 <T as Config>::MaxMessagePayloadSize: Get<u32>,
18)]
19mod benchmarks {
20 use super::*;
21
22 #[benchmark]
24 fn do_process_message() -> Result<(), BenchmarkError> {
25 let enqueued_message = QueuedMessage {
26 id: H256::zero(),
27 channel_id: ChannelId::from([1; 32]),
28 command: Command::Upgrade {
29 impl_address: H160::zero(),
30 impl_code_hash: H256::zero(),
31 initializer: Some(Initializer {
32 params: [7u8; 256].into_iter().collect(),
33 maximum_required_gas: 200_000,
34 }),
35 },
36 };
37 let origin = AggregateMessageOrigin::Snowbridge([1; 32].into());
38 let encoded_enqueued_message = enqueued_message.encode();
39
40 #[block]
41 {
42 let _ = OutboundQueue::<T>::do_process_message(origin, &encoded_enqueued_message);
43 }
44
45 assert_eq!(MessageLeaves::<T>::decode_len().unwrap(), 1);
46
47 Ok(())
48 }
49
50 #[benchmark]
52 fn commit() -> Result<(), BenchmarkError> {
53 for i in 0..T::MaxMessagesPerBlock::get() {
55 let leaf_data: [u8; 1] = [i as u8];
56 let leaf = <T as Config>::Hashing::hash(&leaf_data);
57 MessageLeaves::<T>::append(leaf);
58 }
59
60 #[block]
61 {
62 OutboundQueue::<T>::commit();
63 }
64
65 Ok(())
66 }
67
68 #[benchmark]
70 fn commit_single() -> Result<(), BenchmarkError> {
71 let leaf = <T as Config>::Hashing::hash(&[100; 1]);
72 MessageLeaves::<T>::append(leaf);
73
74 #[block]
75 {
76 OutboundQueue::<T>::commit();
77 }
78
79 Ok(())
80 }
81
82 impl_benchmark_test_suite!(OutboundQueue, crate::mock::new_tester(), crate::mock::Test,);
83}