diff --git a/pallets/quota/src/benchmarking.rs b/pallets/quota/src/benchmarking.rs index 587ff9cc52a65bdf7649df14aabf77979c6f3cb8..cd1a584fb2f3eeefff4b9caae5b8ad715574bc8c 100644 --- a/pallets/quota/src/benchmarking.rs +++ b/pallets/quota/src/benchmarking.rs @@ -34,17 +34,41 @@ benchmarks! { } queue_refund { let account: T::AccountId = account("Alice", 1, 1); + let dummy_refund = Refund { + account: account.clone(), + identity: 0u32.into(), + amount: 20u64.into(), + }; let refund = Refund { account, identity: 1u32.into(), amount: 10u64.into(), }; - }: { Pallet::<T>::queue_refund(refund) } + // Complexity is bound to MAX_QUEUD_REFUNDS where an insertion is O(n-1) + for i in 0..MAX_QUEUED_REFUNDS-1 { + Pallet::<T>::queue_refund(dummy_refund.clone()) + } + }: { Pallet::<T>::queue_refund(refund.clone()) } + verify { + assert_eq!(RefundQueue::<T>::get().last(), Some(refund).as_ref()); + assert_eq!(RefundQueue::<T>::get().len() as u32, MAX_QUEUED_REFUNDS); + } spend_quota { - let idty_id = 1u32; - let amount = 1u64; + let idty_id: IdtyId<T> = 1u32.into(); + let amount = 2u64; + IdtyQuota::<T>::insert( + idty_id, + Quota { + last_use: T::BlockNumber::zero(), + amount: 10u64.into(), + }, + ); }: { Pallet::<T>::spend_quota(idty_id.into(), amount.into()) } - try_refund { + verify { + // Initially 10, updated to 11, minus 2 + assert_eq!(IdtyQuota::<T>::get(idty_id).unwrap().amount, 9u64.into()); + } + /*try_refund { let account: T::AccountId = account("Alice", 1, 1); let refund = Refund { account, @@ -60,5 +84,5 @@ benchmarks! { amount: 10u64.into(), }; let amount = 5u64.into(); - }: { Pallet::<T>::do_refund(refund, amount) } + }: { Pallet::<T>::do_refund(refund, amount) }*/ }