pallet_remark/
benchmarking.rs1#![cfg(feature = "runtime-benchmarks")]
21
22use super::*;
23use alloc::vec;
24use frame_benchmarking::v2::*;
25use frame_system::{EventRecord, Pallet as System, RawOrigin};
26
27#[cfg(test)]
28use crate::Pallet as Remark;
29
30fn assert_last_event<T: Config>(generic_event: <T as Config>::RuntimeEvent) {
31 let events = System::<T>::events();
32 let system_event: <T as frame_system::Config>::RuntimeEvent = generic_event.into();
33 let EventRecord { event, .. } = &events[events.len() - 1];
34 assert_eq!(event, &system_event);
35}
36
37#[benchmarks]
38mod benchmarks {
39 use super::*;
40
41 #[benchmark]
42 fn store(l: Linear<1, { 1024 * 1024 }>) {
43 let caller: T::AccountId = whitelisted_caller();
44
45 #[extrinsic_call]
46 _(RawOrigin::Signed(caller.clone()), vec![0u8; l as usize]);
47
48 assert_last_event::<T>(
49 Event::Stored {
50 sender: caller,
51 content_hash: sp_io::hashing::blake2_256(&vec![0u8; l as usize]).into(),
52 }
53 .into(),
54 );
55 }
56
57 impl_benchmark_test_suite!(Remark, crate::mock::new_test_ext(), crate::mock::Test);
58}