From 1f1553a73d6c04e2022e73a6f84beecfaf04df67 Mon Sep 17 00:00:00 2001 From: Daniel Shiposha Date: Fri, 16 Sep 2022 13:57:28 +0000 Subject: [PATCH] fix: scheduler benchmarks --- --- a/pallets/scheduler/src/benchmarking.rs +++ b/pallets/scheduler/src/benchmarking.rs @@ -50,6 +50,13 @@ const BLOCK_NUMBER: u32 = 2; +fn make_scheduled_id(src: u32) -> ScheduledId { + let slice_id: [u8; 4] = src.encode().try_into().unwrap(); + let mut id: [u8; 16] = [0; 16]; + id[..4].clone_from_slice(&slice_id); + id +} + /// Add `n` named items to the schedule. /// /// For `resolved`: @@ -79,10 +86,7 @@ false => None, }; - let slice_id: [u8; 4] = i.encode().try_into().unwrap(); - let mut id: [u8; 16] = [0; 16]; - id[..4].clone_from_slice(&slice_id); - + let id = make_scheduled_id(i); let origin = frame_system::RawOrigin::Signed(caller.clone()).into(); Scheduler::::do_schedule_named(id, t, period, 0, origin, call_or_hash)?; } @@ -202,7 +206,7 @@ id[..4].clone_from_slice(&slice_id); let when = BLOCK_NUMBER.into(); let periodic = Some((T::BlockNumber::one(), 100)); - let priority = 0; + let priority = None; // Essentially a no-op call. let inner_call = frame_system::Call::set_storage { items: vec![] }.into(); let call = Box::new(CallOrHashOf::::Value(inner_call)); @@ -220,7 +224,8 @@ let origin: RawOrigin = frame_system::RawOrigin::Signed(caller.clone()); let s in 1 .. T::MaxScheduledPerBlock::get(); let when = BLOCK_NUMBER.into(); - let id = 0.encode().try_into().unwrap_or([0; MAX_TASK_ID_LENGTH_IN_BYTES as usize]); + let idx = s - 1; + let id = make_scheduled_id(idx); fill_schedule::(when, s, true, Some(false))?; }: _(origin, id) verify { @@ -230,10 +235,26 @@ ); // Removed schedule is NONE ensure!( - Agenda::::get(when)[0].is_none(), + Agenda::::get(when)[idx as usize].is_none(), "didn't remove from schedule" ); } + change_named_priority { + let origin: RawOrigin = frame_system::RawOrigin::Root; + let s in 1 .. T::MaxScheduledPerBlock::get(); + let when = BLOCK_NUMBER.into(); + let idx = s - 1; + let id = make_scheduled_id(idx); + let priority = 42; + fill_schedule::(when, s, true, Some(false))?; + }: _(origin, id, priority) + verify { + ensure!( + Agenda::::get(when)[idx as usize].clone().unwrap().priority == priority, + "didn't change the priority" + ); + } + impl_benchmark_test_suite!(Scheduler, crate::mock::new_test_ext(), crate::mock::Test); } -- gitstuff