Skip to content

Commit

Permalink
Migrate pallet-timestamp benchmark to v2 (paritytech#6258)
Browse files Browse the repository at this point in the history
Part of:

- paritytech#6202

---------

Co-authored-by: Dónal Murray <[email protected]>
  • Loading branch information
2 people authored and mordamax committed Oct 29, 2024
1 parent 65ee481 commit b41419a
Showing 1 changed file with 40 additions and 20 deletions.
60 changes: 40 additions & 20 deletions substrate/frame/timestamp/src/benchmarking.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,43 +19,63 @@

#![cfg(feature = "runtime-benchmarks")]

use super::*;
use frame_benchmarking::v1::benchmarks;
use frame_support::{ensure, traits::OnFinalize};
use frame_benchmarking::{benchmarking::add_to_whitelist, v2::*};
use frame_support::traits::OnFinalize;
use frame_system::RawOrigin;
use sp_storage::TrackedStorageKey;

use crate::{Now, Pallet as Timestamp};
use crate::*;

const MAX_TIME: u32 = 100;

benchmarks! {
set {
#[benchmarks]
mod benchmarks {
use super::*;

#[benchmark]
fn set() {
let t = MAX_TIME;
// Ignore write to `DidUpdate` since it transient.
let did_update_key = crate::DidUpdate::<T>::hashed_key().to_vec();
frame_benchmarking::benchmarking::add_to_whitelist(TrackedStorageKey {
let did_update_key = DidUpdate::<T>::hashed_key().to_vec();
add_to_whitelist(TrackedStorageKey {
key: did_update_key,
reads: 0,
writes: 1,
whitelisted: false,
});
}: _(RawOrigin::None, t.into())
verify {
ensure!(Now::<T>::get() == t.into(), "Time was not set.");

#[extrinsic_call]
_(RawOrigin::None, t.into());

assert_eq!(Now::<T>::get(), t.into(), "Time was not set.");
}

on_finalize {
#[benchmark]
fn on_finalize() {
let t = MAX_TIME;
Timestamp::<T>::set(RawOrigin::None.into(), t.into())?;
ensure!(DidUpdate::<T>::exists(), "Time was not set.");
Pallet::<T>::set(RawOrigin::None.into(), t.into()).unwrap();
assert!(DidUpdate::<T>::exists(), "Time was not set.");

// Ignore read/write to `DidUpdate` since it is transient.
let did_update_key = crate::DidUpdate::<T>::hashed_key().to_vec();
frame_benchmarking::benchmarking::add_to_whitelist(did_update_key.into());
}: { Timestamp::<T>::on_finalize(t.into()); }
verify {
ensure!(!DidUpdate::<T>::exists(), "Time was not removed.");
let did_update_key = DidUpdate::<T>::hashed_key().to_vec();
add_to_whitelist(TrackedStorageKey {
key: did_update_key,
reads: 0,
writes: 1,
whitelisted: false,
});

#[block]
{
Pallet::<T>::on_finalize(t.into());
}

assert!(!DidUpdate::<T>::exists(), "Time was not removed.");
}

impl_benchmark_test_suite!(Timestamp, crate::mock::new_test_ext(), crate::mock::Test);
impl_benchmark_test_suite! {
Pallet,
mock::new_test_ext(),
mock::Test
}
}

0 comments on commit b41419a

Please sign in to comment.