mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 01:11:10 +00:00
@@ -1027,7 +1027,7 @@ macro_rules! decl_test_networks {
|
|||||||
use $crate::{Bounded, ProcessMessage, WeightMeter};
|
use $crate::{Bounded, ProcessMessage, WeightMeter};
|
||||||
use sp_core::Encode;
|
use sp_core::Encode;
|
||||||
while let Some((from_para_id, msg)) = $crate::UPWARD_MESSAGES.with(|b| b.borrow_mut().get_mut(Self::name()).unwrap().pop_front()) {
|
while let Some((from_para_id, msg)) = $crate::UPWARD_MESSAGES.with(|b| b.borrow_mut().get_mut(Self::name()).unwrap().pop_front()) {
|
||||||
let mut weight_meter = WeightMeter::max_limit();
|
let mut weight_meter = WeightMeter::new();
|
||||||
<$relay_chain>::ext_wrapper(|| {
|
<$relay_chain>::ext_wrapper(|| {
|
||||||
let _ = <$relay_chain as RelayChain>::MessageProcessor::process_message(
|
let _ = <$relay_chain as RelayChain>::MessageProcessor::process_message(
|
||||||
&msg[..],
|
&msg[..],
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ mod tests {
|
|||||||
|
|
||||||
// Errors if we stay below a weight limit of 1000.
|
// Errors if we stay below a weight limit of 1000.
|
||||||
for i in 0..10 {
|
for i in 0..10 {
|
||||||
let meter = &mut WeightMeter::from_limit((i * 10).into());
|
let meter = &mut WeightMeter::with_limit((i * 10).into());
|
||||||
let mut id = [0; 32];
|
let mut id = [0; 32];
|
||||||
assert_err!(
|
assert_err!(
|
||||||
Processor::process_message(msg, ORIGIN, meter, &mut id),
|
Processor::process_message(msg, ORIGIN, meter, &mut id),
|
||||||
@@ -120,7 +120,7 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Works with a limit of 1000.
|
// Works with a limit of 1000.
|
||||||
let meter = &mut WeightMeter::from_limit(1000.into());
|
let meter = &mut WeightMeter::with_limit(1000.into());
|
||||||
let mut id = [0; 32];
|
let mut id = [0; 32];
|
||||||
assert_ok!(Processor::process_message(msg, ORIGIN, meter, &mut id));
|
assert_ok!(Processor::process_message(msg, ORIGIN, meter, &mut id));
|
||||||
assert_eq!(meter.consumed(), 1000.into());
|
assert_eq!(meter.consumed(), 1000.into());
|
||||||
@@ -150,6 +150,6 @@ mod tests {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn process_raw(raw: &[u8]) -> Result<bool, ProcessMessageError> {
|
fn process_raw(raw: &[u8]) -> Result<bool, ProcessMessageError> {
|
||||||
Processor::process_message(raw, ORIGIN, &mut WeightMeter::max_limit(), &mut [0; 32])
|
Processor::process_message(raw, ORIGIN, &mut WeightMeter::new(), &mut [0; 32])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -324,7 +324,7 @@ macro_rules! decl_test_network {
|
|||||||
let mut _id = [0; 32];
|
let mut _id = [0; 32];
|
||||||
let r = <$relay_chain>::process_message(
|
let r = <$relay_chain>::process_message(
|
||||||
encoded.as_slice(), para_id,
|
encoded.as_slice(), para_id,
|
||||||
&mut $crate::WeightMeter::max_limit(),
|
&mut $crate::WeightMeter::new(),
|
||||||
&mut _id,
|
&mut _id,
|
||||||
);
|
);
|
||||||
match r {
|
match r {
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ impl<T: Config> Pallet<T> {
|
|||||||
_ => return Weight::zero(),
|
_ => return Weight::zero(),
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut meter = WeightMeter::max_limit();
|
let mut meter = WeightMeter::new();
|
||||||
|
|
||||||
if Self::process_core_count(&mut status) {
|
if Self::process_core_count(&mut status) {
|
||||||
meter.consume(T::WeightInfo::process_core_count(status.core_count.into()));
|
meter.consume(T::WeightInfo::process_core_count(status.core_count.into()));
|
||||||
|
|||||||
@@ -188,7 +188,7 @@ pub mod pallet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn on_idle(_: BlockNumberFor<T>, remaining_weight: Weight) -> Weight {
|
fn on_idle(_: BlockNumberFor<T>, remaining_weight: Weight) -> Weight {
|
||||||
let mut meter = WeightMeter::from_limit(remaining_weight);
|
let mut meter = WeightMeter::with_limit(remaining_weight);
|
||||||
if meter.try_consume(T::WeightInfo::empty_on_idle()).is_err() {
|
if meter.try_consume(T::WeightInfo::empty_on_idle()).is_err() {
|
||||||
return T::WeightInfo::empty_on_idle()
|
return T::WeightInfo::empty_on_idle()
|
||||||
}
|
}
|
||||||
@@ -197,7 +197,7 @@ pub mod pallet {
|
|||||||
Storage::<T>::get().saturating_mul_int(meter.remaining().proof_size());
|
Storage::<T>::get().saturating_mul_int(meter.remaining().proof_size());
|
||||||
let computation_weight_limit =
|
let computation_weight_limit =
|
||||||
Compute::<T>::get().saturating_mul_int(meter.remaining().ref_time());
|
Compute::<T>::get().saturating_mul_int(meter.remaining().ref_time());
|
||||||
let mut meter = WeightMeter::from_limit(Weight::from_parts(
|
let mut meter = WeightMeter::with_limit(Weight::from_parts(
|
||||||
computation_weight_limit,
|
computation_weight_limit,
|
||||||
proof_size_limit,
|
proof_size_limit,
|
||||||
));
|
));
|
||||||
|
|||||||
@@ -252,7 +252,7 @@ fn on_idle_weight_over_unity_is_close_enough_works() {
|
|||||||
fn waste_at_most_ref_time_weight_close_enough() {
|
fn waste_at_most_ref_time_weight_close_enough() {
|
||||||
new_test_ext().execute_with(|| {
|
new_test_ext().execute_with(|| {
|
||||||
let mut meter =
|
let mut meter =
|
||||||
WeightMeter::from_limit(Weight::from_parts(WEIGHT_REF_TIME_PER_SECOND, u64::MAX));
|
WeightMeter::with_limit(Weight::from_parts(WEIGHT_REF_TIME_PER_SECOND, u64::MAX));
|
||||||
// Over-spending fails defensively.
|
// Over-spending fails defensively.
|
||||||
Glutton::waste_at_most_ref_time(&mut meter);
|
Glutton::waste_at_most_ref_time(&mut meter);
|
||||||
|
|
||||||
@@ -269,7 +269,7 @@ fn waste_at_most_ref_time_weight_close_enough() {
|
|||||||
fn waste_at_most_proof_size_weight_close_enough() {
|
fn waste_at_most_proof_size_weight_close_enough() {
|
||||||
new_test_ext().execute_with(|| {
|
new_test_ext().execute_with(|| {
|
||||||
let mut meter =
|
let mut meter =
|
||||||
WeightMeter::from_limit(Weight::from_parts(u64::MAX, WEIGHT_PROOF_SIZE_PER_MB * 5));
|
WeightMeter::with_limit(Weight::from_parts(u64::MAX, WEIGHT_PROOF_SIZE_PER_MB * 5));
|
||||||
// Over-spending fails defensively.
|
// Over-spending fails defensively.
|
||||||
Glutton::waste_at_most_proof_size(&mut meter);
|
Glutton::waste_at_most_proof_size(&mut meter);
|
||||||
|
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ mod benchmarks {
|
|||||||
fn service_queue_base() {
|
fn service_queue_base() {
|
||||||
#[block]
|
#[block]
|
||||||
{
|
{
|
||||||
MessageQueue::<T>::service_queue(0.into(), &mut WeightMeter::max_limit(), Weight::MAX);
|
MessageQueue::<T>::service_queue(0.into(), &mut WeightMeter::new(), Weight::MAX);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,7 +89,7 @@ mod benchmarks {
|
|||||||
let page = PageOf::<T>::default();
|
let page = PageOf::<T>::default();
|
||||||
Pages::<T>::insert(&origin, 0, &page);
|
Pages::<T>::insert(&origin, 0, &page);
|
||||||
let mut book_state = single_page_book::<T>();
|
let mut book_state = single_page_book::<T>();
|
||||||
let mut meter = WeightMeter::max_limit();
|
let mut meter = WeightMeter::new();
|
||||||
let limit = Weight::MAX;
|
let limit = Weight::MAX;
|
||||||
|
|
||||||
#[block]
|
#[block]
|
||||||
@@ -108,7 +108,7 @@ mod benchmarks {
|
|||||||
page.remaining = 1.into();
|
page.remaining = 1.into();
|
||||||
Pages::<T>::insert(&origin, 0, &page);
|
Pages::<T>::insert(&origin, 0, &page);
|
||||||
let mut book_state = single_page_book::<T>();
|
let mut book_state = single_page_book::<T>();
|
||||||
let mut meter = WeightMeter::max_limit();
|
let mut meter = WeightMeter::new();
|
||||||
let limit = Weight::MAX;
|
let limit = Weight::MAX;
|
||||||
|
|
||||||
#[block]
|
#[block]
|
||||||
@@ -124,7 +124,7 @@ mod benchmarks {
|
|||||||
let mut page = page::<T>(&msg.clone());
|
let mut page = page::<T>(&msg.clone());
|
||||||
let mut book = book_for::<T>(&page);
|
let mut book = book_for::<T>(&page);
|
||||||
assert!(page.peek_first().is_some(), "There is one message");
|
assert!(page.peek_first().is_some(), "There is one message");
|
||||||
let mut weight = WeightMeter::max_limit();
|
let mut weight = WeightMeter::new();
|
||||||
|
|
||||||
#[block]
|
#[block]
|
||||||
{
|
{
|
||||||
@@ -158,7 +158,7 @@ mod benchmarks {
|
|||||||
#[benchmark]
|
#[benchmark]
|
||||||
fn bump_service_head() {
|
fn bump_service_head() {
|
||||||
setup_bump_service_head::<T>(0.into(), 10.into());
|
setup_bump_service_head::<T>(0.into(), 10.into());
|
||||||
let mut weight = WeightMeter::max_limit();
|
let mut weight = WeightMeter::new();
|
||||||
|
|
||||||
#[block]
|
#[block]
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -832,7 +832,7 @@ impl<T: Config> Pallet<T> {
|
|||||||
);
|
);
|
||||||
ensure!(!is_processed, Error::<T>::AlreadyProcessed);
|
ensure!(!is_processed, Error::<T>::AlreadyProcessed);
|
||||||
use MessageExecutionStatus::*;
|
use MessageExecutionStatus::*;
|
||||||
let mut weight_counter = WeightMeter::from_limit(weight_limit);
|
let mut weight_counter = WeightMeter::with_limit(weight_limit);
|
||||||
match Self::process_message_payload(
|
match Self::process_message_payload(
|
||||||
origin.clone(),
|
origin.clone(),
|
||||||
page_index,
|
page_index,
|
||||||
@@ -1150,7 +1150,7 @@ impl<T: Config> Pallet<T> {
|
|||||||
//loop around this origin
|
//loop around this origin
|
||||||
let starting_origin = ServiceHead::<T>::get().unwrap();
|
let starting_origin = ServiceHead::<T>::get().unwrap();
|
||||||
|
|
||||||
while let Some(head) = Self::bump_service_head(&mut WeightMeter::max_limit()) {
|
while let Some(head) = Self::bump_service_head(&mut WeightMeter::new()) {
|
||||||
ensure!(
|
ensure!(
|
||||||
BookStateFor::<T>::contains_key(&head),
|
BookStateFor::<T>::contains_key(&head),
|
||||||
"Service head must point to an existing book"
|
"Service head must point to an existing book"
|
||||||
@@ -1362,7 +1362,7 @@ impl<T: Config> ServiceQueues for Pallet<T> {
|
|||||||
fn service_queues(weight_limit: Weight) -> Weight {
|
fn service_queues(weight_limit: Weight) -> Weight {
|
||||||
// The maximum weight that processing a single message may take.
|
// The maximum weight that processing a single message may take.
|
||||||
let overweight_limit = weight_limit;
|
let overweight_limit = weight_limit;
|
||||||
let mut weight = WeightMeter::from_limit(weight_limit);
|
let mut weight = WeightMeter::with_limit(weight_limit);
|
||||||
|
|
||||||
let mut next = match Self::bump_service_head(&mut weight) {
|
let mut next = match Self::bump_service_head(&mut weight) {
|
||||||
Some(h) => h,
|
Some(h) => h,
|
||||||
@@ -1402,7 +1402,7 @@ impl<T: Config> ServiceQueues for Pallet<T> {
|
|||||||
weight_limit: Weight,
|
weight_limit: Weight,
|
||||||
(message_origin, page, index): Self::OverweightMessageAddress,
|
(message_origin, page, index): Self::OverweightMessageAddress,
|
||||||
) -> Result<Weight, ExecuteOverweightError> {
|
) -> Result<Weight, ExecuteOverweightError> {
|
||||||
let mut weight = WeightMeter::from_limit(weight_limit);
|
let mut weight = WeightMeter::with_limit(weight_limit);
|
||||||
if weight
|
if weight
|
||||||
.try_consume(
|
.try_consume(
|
||||||
T::WeightInfo::execute_overweight_page_removed()
|
T::WeightInfo::execute_overweight_page_removed()
|
||||||
|
|||||||
@@ -381,7 +381,7 @@ fn service_queue_bails() {
|
|||||||
// Not enough weight for `service_queue_base`.
|
// Not enough weight for `service_queue_base`.
|
||||||
build_and_execute::<Test>(|| {
|
build_and_execute::<Test>(|| {
|
||||||
set_weight("service_queue_base", 2.into_weight());
|
set_weight("service_queue_base", 2.into_weight());
|
||||||
let mut meter = WeightMeter::from_limit(1.into_weight());
|
let mut meter = WeightMeter::with_limit(1.into_weight());
|
||||||
|
|
||||||
assert_storage_noop!(MessageQueue::service_queue(0u32.into(), &mut meter, Weight::MAX));
|
assert_storage_noop!(MessageQueue::service_queue(0u32.into(), &mut meter, Weight::MAX));
|
||||||
assert!(meter.consumed().is_zero());
|
assert!(meter.consumed().is_zero());
|
||||||
@@ -389,7 +389,7 @@ fn service_queue_bails() {
|
|||||||
// Not enough weight for `ready_ring_unknit`.
|
// Not enough weight for `ready_ring_unknit`.
|
||||||
build_and_execute::<Test>(|| {
|
build_and_execute::<Test>(|| {
|
||||||
set_weight("ready_ring_unknit", 2.into_weight());
|
set_weight("ready_ring_unknit", 2.into_weight());
|
||||||
let mut meter = WeightMeter::from_limit(1.into_weight());
|
let mut meter = WeightMeter::with_limit(1.into_weight());
|
||||||
|
|
||||||
assert_storage_noop!(MessageQueue::service_queue(0u32.into(), &mut meter, Weight::MAX));
|
assert_storage_noop!(MessageQueue::service_queue(0u32.into(), &mut meter, Weight::MAX));
|
||||||
assert!(meter.consumed().is_zero());
|
assert!(meter.consumed().is_zero());
|
||||||
@@ -399,7 +399,7 @@ fn service_queue_bails() {
|
|||||||
set_weight("service_queue_base", 2.into_weight());
|
set_weight("service_queue_base", 2.into_weight());
|
||||||
set_weight("ready_ring_unknit", 2.into_weight());
|
set_weight("ready_ring_unknit", 2.into_weight());
|
||||||
|
|
||||||
let mut meter = WeightMeter::from_limit(3.into_weight());
|
let mut meter = WeightMeter::with_limit(3.into_weight());
|
||||||
assert_storage_noop!(MessageQueue::service_queue(0.into(), &mut meter, Weight::MAX));
|
assert_storage_noop!(MessageQueue::service_queue(0.into(), &mut meter, Weight::MAX));
|
||||||
assert!(meter.consumed().is_zero());
|
assert!(meter.consumed().is_zero());
|
||||||
});
|
});
|
||||||
@@ -426,7 +426,7 @@ fn service_page_works() {
|
|||||||
msgs -= process;
|
msgs -= process;
|
||||||
|
|
||||||
// Enough weight to process `process` messages.
|
// Enough weight to process `process` messages.
|
||||||
let mut meter = WeightMeter::from_limit(((2 + (3 + 1) * process) as u64).into_weight());
|
let mut meter = WeightMeter::with_limit(((2 + (3 + 1) * process) as u64).into_weight());
|
||||||
System::reset_events();
|
System::reset_events();
|
||||||
let (processed, status) =
|
let (processed, status) =
|
||||||
crate::Pallet::<Test>::service_page(&Here, &mut book, &mut meter, Weight::MAX);
|
crate::Pallet::<Test>::service_page(&Here, &mut book, &mut meter, Weight::MAX);
|
||||||
@@ -449,7 +449,7 @@ fn service_page_bails() {
|
|||||||
// Not enough weight for `service_page_base_completion`.
|
// Not enough weight for `service_page_base_completion`.
|
||||||
build_and_execute::<Test>(|| {
|
build_and_execute::<Test>(|| {
|
||||||
set_weight("service_page_base_completion", 2.into_weight());
|
set_weight("service_page_base_completion", 2.into_weight());
|
||||||
let mut meter = WeightMeter::from_limit(1.into_weight());
|
let mut meter = WeightMeter::with_limit(1.into_weight());
|
||||||
|
|
||||||
let (page, _) = full_page::<Test>();
|
let (page, _) = full_page::<Test>();
|
||||||
let mut book = book_for::<Test>(&page);
|
let mut book = book_for::<Test>(&page);
|
||||||
@@ -466,7 +466,7 @@ fn service_page_bails() {
|
|||||||
// Not enough weight for `service_page_base_no_completion`.
|
// Not enough weight for `service_page_base_no_completion`.
|
||||||
build_and_execute::<Test>(|| {
|
build_and_execute::<Test>(|| {
|
||||||
set_weight("service_page_base_no_completion", 2.into_weight());
|
set_weight("service_page_base_no_completion", 2.into_weight());
|
||||||
let mut meter = WeightMeter::from_limit(1.into_weight());
|
let mut meter = WeightMeter::with_limit(1.into_weight());
|
||||||
|
|
||||||
let (page, _) = full_page::<Test>();
|
let (page, _) = full_page::<Test>();
|
||||||
let mut book = book_for::<Test>(&page);
|
let mut book = book_for::<Test>(&page);
|
||||||
@@ -487,7 +487,7 @@ fn service_page_item_bails() {
|
|||||||
build_and_execute::<Test>(|| {
|
build_and_execute::<Test>(|| {
|
||||||
let _guard = StorageNoopGuard::default();
|
let _guard = StorageNoopGuard::default();
|
||||||
let (mut page, _) = full_page::<Test>();
|
let (mut page, _) = full_page::<Test>();
|
||||||
let mut weight = WeightMeter::from_limit(10.into_weight());
|
let mut weight = WeightMeter::with_limit(10.into_weight());
|
||||||
let overweight_limit = 10.into_weight();
|
let overweight_limit = 10.into_weight();
|
||||||
set_weight("service_page_item", 11.into_weight());
|
set_weight("service_page_item", 11.into_weight());
|
||||||
|
|
||||||
@@ -518,7 +518,7 @@ fn service_page_suspension_works() {
|
|||||||
Pages::<Test>::insert(Here, 0, page);
|
Pages::<Test>::insert(Here, 0, page);
|
||||||
|
|
||||||
// First we process 5 messages from this page.
|
// First we process 5 messages from this page.
|
||||||
let mut meter = WeightMeter::from_limit(5.into_weight());
|
let mut meter = WeightMeter::with_limit(5.into_weight());
|
||||||
let (_, status) =
|
let (_, status) =
|
||||||
crate::Pallet::<Test>::service_page(&Here, &mut book, &mut meter, Weight::MAX);
|
crate::Pallet::<Test>::service_page(&Here, &mut book, &mut meter, Weight::MAX);
|
||||||
|
|
||||||
@@ -534,7 +534,7 @@ fn service_page_suspension_works() {
|
|||||||
let (_, status) = crate::Pallet::<Test>::service_page(
|
let (_, status) = crate::Pallet::<Test>::service_page(
|
||||||
&Here,
|
&Here,
|
||||||
&mut book,
|
&mut book,
|
||||||
&mut WeightMeter::max_limit(),
|
&mut WeightMeter::new(),
|
||||||
Weight::MAX,
|
Weight::MAX,
|
||||||
);
|
);
|
||||||
assert_eq!(status, NoProgress);
|
assert_eq!(status, NoProgress);
|
||||||
@@ -546,7 +546,7 @@ fn service_page_suspension_works() {
|
|||||||
let (_, status) = crate::Pallet::<Test>::service_page(
|
let (_, status) = crate::Pallet::<Test>::service_page(
|
||||||
&Here,
|
&Here,
|
||||||
&mut book,
|
&mut book,
|
||||||
&mut WeightMeter::max_limit(),
|
&mut WeightMeter::new(),
|
||||||
Weight::MAX,
|
Weight::MAX,
|
||||||
);
|
);
|
||||||
assert_eq!(status, NoMore);
|
assert_eq!(status, NoMore);
|
||||||
@@ -564,7 +564,7 @@ fn bump_service_head_works() {
|
|||||||
|
|
||||||
// Bump 99 times.
|
// Bump 99 times.
|
||||||
for i in 0..99 {
|
for i in 0..99 {
|
||||||
let current = MessageQueue::bump_service_head(&mut WeightMeter::max_limit()).unwrap();
|
let current = MessageQueue::bump_service_head(&mut WeightMeter::new()).unwrap();
|
||||||
assert_eq!(current, [Here, There, Everywhere(0)][i % 3]);
|
assert_eq!(current, [Here, There, Everywhere(0)][i % 3]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -581,7 +581,7 @@ fn bump_service_head_bails() {
|
|||||||
setup_bump_service_head::<Test>(0.into(), 1.into());
|
setup_bump_service_head::<Test>(0.into(), 1.into());
|
||||||
|
|
||||||
let _guard = StorageNoopGuard::default();
|
let _guard = StorageNoopGuard::default();
|
||||||
let mut meter = WeightMeter::from_limit(1.into_weight());
|
let mut meter = WeightMeter::with_limit(1.into_weight());
|
||||||
assert!(MessageQueue::bump_service_head(&mut meter).is_none());
|
assert!(MessageQueue::bump_service_head(&mut meter).is_none());
|
||||||
assert_eq!(meter.consumed(), 0.into_weight());
|
assert_eq!(meter.consumed(), 0.into_weight());
|
||||||
});
|
});
|
||||||
@@ -591,7 +591,7 @@ fn bump_service_head_bails() {
|
|||||||
fn bump_service_head_trivial_works() {
|
fn bump_service_head_trivial_works() {
|
||||||
build_and_execute::<Test>(|| {
|
build_and_execute::<Test>(|| {
|
||||||
set_weight("bump_service_head", 2.into_weight());
|
set_weight("bump_service_head", 2.into_weight());
|
||||||
let mut meter = WeightMeter::max_limit();
|
let mut meter = WeightMeter::new();
|
||||||
|
|
||||||
assert_eq!(MessageQueue::bump_service_head(&mut meter), None, "Cannot bump");
|
assert_eq!(MessageQueue::bump_service_head(&mut meter), None, "Cannot bump");
|
||||||
assert_eq!(meter.consumed(), 2.into_weight());
|
assert_eq!(meter.consumed(), 2.into_weight());
|
||||||
@@ -616,7 +616,7 @@ fn bump_service_head_no_head_noops() {
|
|||||||
ServiceHead::<Test>::kill();
|
ServiceHead::<Test>::kill();
|
||||||
|
|
||||||
// Nothing happens.
|
// Nothing happens.
|
||||||
assert_storage_noop!(MessageQueue::bump_service_head(&mut WeightMeter::max_limit()));
|
assert_storage_noop!(MessageQueue::bump_service_head(&mut WeightMeter::new()));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -624,7 +624,7 @@ fn bump_service_head_no_head_noops() {
|
|||||||
fn service_page_item_consumes_correct_weight() {
|
fn service_page_item_consumes_correct_weight() {
|
||||||
build_and_execute::<Test>(|| {
|
build_and_execute::<Test>(|| {
|
||||||
let mut page = page::<Test>(b"weight=3");
|
let mut page = page::<Test>(b"weight=3");
|
||||||
let mut weight = WeightMeter::from_limit(10.into_weight());
|
let mut weight = WeightMeter::with_limit(10.into_weight());
|
||||||
let overweight_limit = 0.into_weight();
|
let overweight_limit = 0.into_weight();
|
||||||
set_weight("service_page_item", 2.into_weight());
|
set_weight("service_page_item", 2.into_weight());
|
||||||
|
|
||||||
@@ -648,7 +648,7 @@ fn service_page_item_consumes_correct_weight() {
|
|||||||
fn service_page_item_skips_perm_overweight_message() {
|
fn service_page_item_skips_perm_overweight_message() {
|
||||||
build_and_execute::<Test>(|| {
|
build_and_execute::<Test>(|| {
|
||||||
let mut page = page::<Test>(b"TooMuch");
|
let mut page = page::<Test>(b"TooMuch");
|
||||||
let mut weight = WeightMeter::from_limit(2.into_weight());
|
let mut weight = WeightMeter::with_limit(2.into_weight());
|
||||||
let overweight_limit = 0.into_weight();
|
let overweight_limit = 0.into_weight();
|
||||||
set_weight("service_page_item", 2.into_weight());
|
set_weight("service_page_item", 2.into_weight());
|
||||||
|
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ benchmarks! {
|
|||||||
let now = BlockNumberFor::<T>::from(BLOCK_NUMBER);
|
let now = BlockNumberFor::<T>::from(BLOCK_NUMBER);
|
||||||
IncompleteSince::<T>::put(now - One::one());
|
IncompleteSince::<T>::put(now - One::one());
|
||||||
}: {
|
}: {
|
||||||
Scheduler::<T>::service_agendas(&mut WeightMeter::max_limit(), now, 0);
|
Scheduler::<T>::service_agendas(&mut WeightMeter::new(), now, 0);
|
||||||
} verify {
|
} verify {
|
||||||
assert_eq!(IncompleteSince::<T>::get(), Some(now - One::one()));
|
assert_eq!(IncompleteSince::<T>::get(), Some(now - One::one()));
|
||||||
}
|
}
|
||||||
@@ -143,7 +143,7 @@ benchmarks! {
|
|||||||
fill_schedule::<T>(now, s)?;
|
fill_schedule::<T>(now, s)?;
|
||||||
let mut executed = 0;
|
let mut executed = 0;
|
||||||
}: {
|
}: {
|
||||||
Scheduler::<T>::service_agenda(&mut WeightMeter::max_limit(), &mut executed, now, now, 0);
|
Scheduler::<T>::service_agenda(&mut WeightMeter::new(), &mut executed, now, now, 0);
|
||||||
} verify {
|
} verify {
|
||||||
assert_eq!(executed, 0);
|
assert_eq!(executed, 0);
|
||||||
}
|
}
|
||||||
@@ -154,7 +154,7 @@ benchmarks! {
|
|||||||
let now = BLOCK_NUMBER.into();
|
let now = BLOCK_NUMBER.into();
|
||||||
let task = make_task::<T>(false, false, false, None, 0);
|
let task = make_task::<T>(false, false, false, None, 0);
|
||||||
// prevent any tasks from actually being executed as we only want the surrounding weight.
|
// prevent any tasks from actually being executed as we only want the surrounding weight.
|
||||||
let mut counter = WeightMeter::from_limit(Weight::zero());
|
let mut counter = WeightMeter::with_limit(Weight::zero());
|
||||||
}: {
|
}: {
|
||||||
let result = Scheduler::<T>::service_task(&mut counter, now, now, 0, true, task);
|
let result = Scheduler::<T>::service_task(&mut counter, now, now, 0, true, task);
|
||||||
} verify {
|
} verify {
|
||||||
@@ -172,7 +172,7 @@ benchmarks! {
|
|||||||
let now = BLOCK_NUMBER.into();
|
let now = BLOCK_NUMBER.into();
|
||||||
let task = make_task::<T>(false, false, false, Some(s), 0);
|
let task = make_task::<T>(false, false, false, Some(s), 0);
|
||||||
// prevent any tasks from actually being executed as we only want the surrounding weight.
|
// prevent any tasks from actually being executed as we only want the surrounding weight.
|
||||||
let mut counter = WeightMeter::from_limit(Weight::zero());
|
let mut counter = WeightMeter::with_limit(Weight::zero());
|
||||||
}: {
|
}: {
|
||||||
let result = Scheduler::<T>::service_task(&mut counter, now, now, 0, true, task);
|
let result = Scheduler::<T>::service_task(&mut counter, now, now, 0, true, task);
|
||||||
} verify {
|
} verify {
|
||||||
@@ -184,7 +184,7 @@ benchmarks! {
|
|||||||
let now = BLOCK_NUMBER.into();
|
let now = BLOCK_NUMBER.into();
|
||||||
let task = make_task::<T>(false, true, false, None, 0);
|
let task = make_task::<T>(false, true, false, None, 0);
|
||||||
// prevent any tasks from actually being executed as we only want the surrounding weight.
|
// prevent any tasks from actually being executed as we only want the surrounding weight.
|
||||||
let mut counter = WeightMeter::from_limit(Weight::zero());
|
let mut counter = WeightMeter::with_limit(Weight::zero());
|
||||||
}: {
|
}: {
|
||||||
let result = Scheduler::<T>::service_task(&mut counter, now, now, 0, true, task);
|
let result = Scheduler::<T>::service_task(&mut counter, now, now, 0, true, task);
|
||||||
} verify {
|
} verify {
|
||||||
@@ -196,7 +196,7 @@ benchmarks! {
|
|||||||
let now = BLOCK_NUMBER.into();
|
let now = BLOCK_NUMBER.into();
|
||||||
let task = make_task::<T>(true, false, false, None, 0);
|
let task = make_task::<T>(true, false, false, None, 0);
|
||||||
// prevent any tasks from actually being executed as we only want the surrounding weight.
|
// prevent any tasks from actually being executed as we only want the surrounding weight.
|
||||||
let mut counter = WeightMeter::from_limit(Weight::zero());
|
let mut counter = WeightMeter::with_limit(Weight::zero());
|
||||||
}: {
|
}: {
|
||||||
let result = Scheduler::<T>::service_task(&mut counter, now, now, 0, true, task);
|
let result = Scheduler::<T>::service_task(&mut counter, now, now, 0, true, task);
|
||||||
} verify {
|
} verify {
|
||||||
@@ -204,7 +204,7 @@ benchmarks! {
|
|||||||
|
|
||||||
// `execute_dispatch` when the origin is `Signed`, not counting the dispatable's weight.
|
// `execute_dispatch` when the origin is `Signed`, not counting the dispatable's weight.
|
||||||
execute_dispatch_signed {
|
execute_dispatch_signed {
|
||||||
let mut counter = WeightMeter::max_limit();
|
let mut counter = WeightMeter::new();
|
||||||
let origin = make_origin::<T>(true);
|
let origin = make_origin::<T>(true);
|
||||||
let call = T::Preimages::realize(&make_call::<T>(None)).unwrap().0;
|
let call = T::Preimages::realize(&make_call::<T>(None)).unwrap().0;
|
||||||
}: {
|
}: {
|
||||||
@@ -215,7 +215,7 @@ benchmarks! {
|
|||||||
|
|
||||||
// `execute_dispatch` when the origin is not `Signed`, not counting the dispatable's weight.
|
// `execute_dispatch` when the origin is not `Signed`, not counting the dispatable's weight.
|
||||||
execute_dispatch_unsigned {
|
execute_dispatch_unsigned {
|
||||||
let mut counter = WeightMeter::max_limit();
|
let mut counter = WeightMeter::new();
|
||||||
let origin = make_origin::<T>(false);
|
let origin = make_origin::<T>(false);
|
||||||
let call = T::Preimages::realize(&make_call::<T>(None)).unwrap().0;
|
let call = T::Preimages::realize(&make_call::<T>(None)).unwrap().0;
|
||||||
}: {
|
}: {
|
||||||
|
|||||||
@@ -318,7 +318,7 @@ pub mod pallet {
|
|||||||
impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {
|
impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {
|
||||||
/// Execute the scheduled calls
|
/// Execute the scheduled calls
|
||||||
fn on_initialize(now: BlockNumberFor<T>) -> Weight {
|
fn on_initialize(now: BlockNumberFor<T>) -> Weight {
|
||||||
let mut weight_counter = WeightMeter::from_limit(T::MaximumWeight::get());
|
let mut weight_counter = WeightMeter::with_limit(T::MaximumWeight::get());
|
||||||
Self::service_agendas(&mut weight_counter, now, u32::max_value());
|
Self::service_agendas(&mut weight_counter, now, u32::max_value());
|
||||||
weight_counter.consumed()
|
weight_counter.consumed()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ use sp_arithmetic::Perbill;
|
|||||||
/// use sp_weights::{Weight, WeightMeter};
|
/// use sp_weights::{Weight, WeightMeter};
|
||||||
///
|
///
|
||||||
/// // The weight is limited to (10, 0).
|
/// // The weight is limited to (10, 0).
|
||||||
/// let mut meter = WeightMeter::from_limit(Weight::from_parts(10, 0));
|
/// let mut meter = WeightMeter::with_limit(Weight::from_parts(10, 0));
|
||||||
/// // There is enough weight remaining for an operation with (6, 0) weight.
|
/// // There is enough weight remaining for an operation with (6, 0) weight.
|
||||||
/// assert!(meter.try_consume(Weight::from_parts(6, 0)).is_ok());
|
/// assert!(meter.try_consume(Weight::from_parts(6, 0)).is_ok());
|
||||||
/// assert_eq!(meter.remaining(), Weight::from_parts(4, 0));
|
/// assert_eq!(meter.remaining(), Weight::from_parts(4, 0));
|
||||||
@@ -51,13 +51,13 @@ pub struct WeightMeter {
|
|||||||
|
|
||||||
impl WeightMeter {
|
impl WeightMeter {
|
||||||
/// Creates [`Self`] from a limit for the maximal consumable weight.
|
/// Creates [`Self`] from a limit for the maximal consumable weight.
|
||||||
pub fn from_limit(limit: Weight) -> Self {
|
pub fn with_limit(limit: Weight) -> Self {
|
||||||
Self { consumed: Weight::zero(), limit }
|
Self { consumed: Weight::zero(), limit }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates [`Self`] with the maximal possible limit for the consumable weight.
|
/// Creates [`Self`] with the maximal possible limit for the consumable weight.
|
||||||
pub fn max_limit() -> Self {
|
pub fn new() -> Self {
|
||||||
Self::from_limit(Weight::MAX)
|
Self::with_limit(Weight::MAX)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The already consumed weight.
|
/// The already consumed weight.
|
||||||
@@ -84,7 +84,7 @@ impl WeightMeter {
|
|||||||
/// use sp_weights::{Weight, WeightMeter};
|
/// use sp_weights::{Weight, WeightMeter};
|
||||||
/// use sp_arithmetic::Perbill;
|
/// use sp_arithmetic::Perbill;
|
||||||
///
|
///
|
||||||
/// let mut meter = WeightMeter::from_limit(Weight::from_parts(10, 20));
|
/// let mut meter = WeightMeter::with_limit(Weight::from_parts(10, 20));
|
||||||
/// // Nothing consumed so far:
|
/// // Nothing consumed so far:
|
||||||
/// assert_eq!(meter.consumed_ratio(), Perbill::from_percent(0));
|
/// assert_eq!(meter.consumed_ratio(), Perbill::from_percent(0));
|
||||||
/// meter.consume(Weight::from_parts(5, 5));
|
/// meter.consume(Weight::from_parts(5, 5));
|
||||||
@@ -158,7 +158,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn weight_meter_remaining_works() {
|
fn weight_meter_remaining_works() {
|
||||||
let mut meter = WeightMeter::from_limit(Weight::from_parts(10, 20));
|
let mut meter = WeightMeter::with_limit(Weight::from_parts(10, 20));
|
||||||
|
|
||||||
assert!(meter.check_accrue(Weight::from_parts(5, 0)));
|
assert!(meter.check_accrue(Weight::from_parts(5, 0)));
|
||||||
assert_eq!(meter.consumed, Weight::from_parts(5, 0));
|
assert_eq!(meter.consumed, Weight::from_parts(5, 0));
|
||||||
@@ -175,7 +175,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn weight_meter_can_accrue_works() {
|
fn weight_meter_can_accrue_works() {
|
||||||
let meter = WeightMeter::from_limit(Weight::from_parts(1, 1));
|
let meter = WeightMeter::with_limit(Weight::from_parts(1, 1));
|
||||||
|
|
||||||
assert!(meter.can_accrue(Weight::from_parts(0, 0)));
|
assert!(meter.can_accrue(Weight::from_parts(0, 0)));
|
||||||
assert!(meter.can_accrue(Weight::from_parts(1, 1)));
|
assert!(meter.can_accrue(Weight::from_parts(1, 1)));
|
||||||
@@ -186,7 +186,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn weight_meter_check_accrue_works() {
|
fn weight_meter_check_accrue_works() {
|
||||||
let mut meter = WeightMeter::from_limit(Weight::from_parts(2, 2));
|
let mut meter = WeightMeter::with_limit(Weight::from_parts(2, 2));
|
||||||
|
|
||||||
assert!(meter.check_accrue(Weight::from_parts(0, 0)));
|
assert!(meter.check_accrue(Weight::from_parts(0, 0)));
|
||||||
assert!(meter.check_accrue(Weight::from_parts(1, 1)));
|
assert!(meter.check_accrue(Weight::from_parts(1, 1)));
|
||||||
@@ -199,7 +199,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn weight_meter_check_and_can_accrue_works() {
|
fn weight_meter_check_and_can_accrue_works() {
|
||||||
let mut meter = WeightMeter::max_limit();
|
let mut meter = WeightMeter::new();
|
||||||
|
|
||||||
assert!(meter.can_accrue(Weight::from_parts(u64::MAX, 0)));
|
assert!(meter.can_accrue(Weight::from_parts(u64::MAX, 0)));
|
||||||
assert!(meter.check_accrue(Weight::from_parts(u64::MAX, 0)));
|
assert!(meter.check_accrue(Weight::from_parts(u64::MAX, 0)));
|
||||||
@@ -219,7 +219,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn consumed_ratio_works() {
|
fn consumed_ratio_works() {
|
||||||
let mut meter = WeightMeter::from_limit(Weight::from_parts(10, 20));
|
let mut meter = WeightMeter::with_limit(Weight::from_parts(10, 20));
|
||||||
|
|
||||||
assert!(meter.check_accrue(Weight::from_parts(5, 0)));
|
assert!(meter.check_accrue(Weight::from_parts(5, 0)));
|
||||||
assert_eq!(meter.consumed_ratio(), Perbill::from_percent(50));
|
assert_eq!(meter.consumed_ratio(), Perbill::from_percent(50));
|
||||||
@@ -239,7 +239,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn try_consume_works() {
|
fn try_consume_works() {
|
||||||
let mut meter = WeightMeter::from_limit(Weight::from_parts(10, 0));
|
let mut meter = WeightMeter::with_limit(Weight::from_parts(10, 0));
|
||||||
|
|
||||||
assert!(meter.try_consume(Weight::from_parts(11, 0)).is_err());
|
assert!(meter.try_consume(Weight::from_parts(11, 0)).is_err());
|
||||||
assert!(meter.consumed().is_zero(), "No modification");
|
assert!(meter.consumed().is_zero(), "No modification");
|
||||||
@@ -253,7 +253,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn can_consume_works() {
|
fn can_consume_works() {
|
||||||
let mut meter = WeightMeter::from_limit(Weight::from_parts(10, 0));
|
let mut meter = WeightMeter::with_limit(Weight::from_parts(10, 0));
|
||||||
|
|
||||||
assert!(!meter.can_consume(Weight::from_parts(11, 0)));
|
assert!(!meter.can_consume(Weight::from_parts(11, 0)));
|
||||||
assert!(meter.consumed().is_zero(), "No modification");
|
assert!(meter.consumed().is_zero(), "No modification");
|
||||||
@@ -267,7 +267,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
#[cfg(debug_assertions)]
|
#[cfg(debug_assertions)]
|
||||||
fn consume_works() {
|
fn consume_works() {
|
||||||
let mut meter = WeightMeter::from_limit(Weight::from_parts(5, 10));
|
let mut meter = WeightMeter::with_limit(Weight::from_parts(5, 10));
|
||||||
|
|
||||||
meter.consume(Weight::from_parts(4, 0));
|
meter.consume(Weight::from_parts(4, 0));
|
||||||
assert_eq!(meter.remaining(), Weight::from_parts(1, 10));
|
assert_eq!(meter.remaining(), Weight::from_parts(1, 10));
|
||||||
@@ -281,7 +281,7 @@ mod tests {
|
|||||||
#[cfg(debug_assertions)]
|
#[cfg(debug_assertions)]
|
||||||
#[should_panic(expected = "Weight counter overflow")]
|
#[should_panic(expected = "Weight counter overflow")]
|
||||||
fn consume_defensive_fail() {
|
fn consume_defensive_fail() {
|
||||||
let mut meter = WeightMeter::from_limit(Weight::from_parts(10, 0));
|
let mut meter = WeightMeter::with_limit(Weight::from_parts(10, 0));
|
||||||
let _ = meter.consume(Weight::from_parts(11, 0));
|
let _ = meter.consume(Weight::from_parts(11, 0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user