|
|
|
@@ -27,22 +27,22 @@ use sp_core::blake2_256;
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn mocked_weight_works() {
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
assert!(<Test as Config>::WeightInfo::service_queue_base().is_zero());
|
|
|
|
|
});
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
set_weight("service_queue_base", Weight::MAX);
|
|
|
|
|
assert_eq!(<Test as Config>::WeightInfo::service_queue_base(), Weight::MAX);
|
|
|
|
|
});
|
|
|
|
|
// The externalities reset it.
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
assert!(<Test as Config>::WeightInfo::service_queue_base().is_zero());
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn enqueue_within_one_page_works() {
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
MessageQueue::enqueue_message(msg("a"), Here);
|
|
|
|
|
MessageQueue::enqueue_message(msg("b"), Here);
|
|
|
|
@@ -77,7 +77,7 @@ fn enqueue_within_one_page_works() {
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn queue_priority_retains() {
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
assert_ring(&[]);
|
|
|
|
|
MessageQueue::enqueue_message(msg("a"), Everywhere(1));
|
|
|
|
@@ -108,11 +108,13 @@ fn queue_priority_retains() {
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn queue_priority_reset_once_serviced() {
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
MessageQueue::enqueue_message(msg("a"), Everywhere(1));
|
|
|
|
|
MessageQueue::enqueue_message(msg("b"), Everywhere(2));
|
|
|
|
|
MessageQueue::enqueue_message(msg("c"), Everywhere(3));
|
|
|
|
|
MessageQueue::do_try_state().unwrap();
|
|
|
|
|
println!("{}", MessageQueue::debug_info());
|
|
|
|
|
// service head is 1, it will process a, leaving service head at 2. it also processes b and
|
|
|
|
|
// empties queue 2, so service head will end at 3.
|
|
|
|
|
assert_eq!(MessageQueue::service_queues(2.into_weight()), 2.into_weight());
|
|
|
|
@@ -135,7 +137,7 @@ fn queue_priority_reset_once_serviced() {
|
|
|
|
|
#[test]
|
|
|
|
|
fn service_queues_basic_works() {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
MessageQueue::enqueue_messages(vec![msg("a"), msg("ab"), msg("abc")].into_iter(), Here);
|
|
|
|
|
MessageQueue::enqueue_messages(vec![msg("x"), msg("xy"), msg("xyz")].into_iter(), There);
|
|
|
|
|
assert_eq!(QueueChanges::take(), vec![(Here, 3, 6), (There, 3, 6)]);
|
|
|
|
@@ -159,13 +161,14 @@ fn service_queues_basic_works() {
|
|
|
|
|
assert_eq!(MessageQueue::service_queues(Weight::MAX), 2.into_weight());
|
|
|
|
|
assert_eq!(MessagesProcessed::take(), vec![(vmsg("xy"), There), (vmsg("xyz"), There)]);
|
|
|
|
|
assert_eq!(QueueChanges::take(), vec![(There, 0, 0)]);
|
|
|
|
|
MessageQueue::do_try_state().unwrap();
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn service_queues_failing_messages_works() {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
set_weight("service_page_item", 1.into_weight());
|
|
|
|
|
MessageQueue::enqueue_message(msg("badformat"), Here);
|
|
|
|
|
MessageQueue::enqueue_message(msg("corrupt"), Here);
|
|
|
|
@@ -211,7 +214,7 @@ fn service_queues_failing_messages_works() {
|
|
|
|
|
#[test]
|
|
|
|
|
fn service_queues_suspension_works() {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
MessageQueue::enqueue_messages(vec![msg("a"), msg("b"), msg("c")].into_iter(), Here);
|
|
|
|
|
MessageQueue::enqueue_messages(vec![msg("x"), msg("y"), msg("z")].into_iter(), There);
|
|
|
|
|
MessageQueue::enqueue_messages(
|
|
|
|
@@ -266,7 +269,7 @@ fn service_queues_suspension_works() {
|
|
|
|
|
#[test]
|
|
|
|
|
fn reap_page_permanent_overweight_works() {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
// Create 10 pages more than the stale limit.
|
|
|
|
|
let n = (MaxStale::get() + 10) as usize;
|
|
|
|
|
for _ in 0..n {
|
|
|
|
@@ -306,7 +309,7 @@ fn reaping_overweight_fails_properly() {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
assert_eq!(MaxStale::get(), 2, "The stale limit is two");
|
|
|
|
|
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
// page 0
|
|
|
|
|
MessageQueue::enqueue_message(msg("weight=4"), Here);
|
|
|
|
|
MessageQueue::enqueue_message(msg("a"), Here);
|
|
|
|
@@ -376,7 +379,7 @@ fn reaping_overweight_fails_properly() {
|
|
|
|
|
#[test]
|
|
|
|
|
fn service_queue_bails() {
|
|
|
|
|
// Not enough weight for `service_queue_base`.
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
set_weight("service_queue_base", 2.into_weight());
|
|
|
|
|
let mut meter = WeightMeter::from_limit(1.into_weight());
|
|
|
|
|
|
|
|
|
@@ -384,7 +387,7 @@ fn service_queue_bails() {
|
|
|
|
|
assert!(meter.consumed().is_zero());
|
|
|
|
|
});
|
|
|
|
|
// Not enough weight for `ready_ring_unknit`.
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
set_weight("ready_ring_unknit", 2.into_weight());
|
|
|
|
|
let mut meter = WeightMeter::from_limit(1.into_weight());
|
|
|
|
|
|
|
|
|
@@ -392,7 +395,7 @@ fn service_queue_bails() {
|
|
|
|
|
assert!(meter.consumed().is_zero());
|
|
|
|
|
});
|
|
|
|
|
// Not enough weight for `service_queue_base` and `ready_ring_unknit`.
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
set_weight("service_queue_base", 2.into_weight());
|
|
|
|
|
set_weight("ready_ring_unknit", 2.into_weight());
|
|
|
|
|
|
|
|
|
@@ -407,7 +410,7 @@ fn service_page_works() {
|
|
|
|
|
use super::integration_test::Test; // Run with larger page size.
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
use PageExecutionStatus::*;
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
set_weight("service_page_base_completion", 2.into_weight());
|
|
|
|
|
set_weight("service_page_item", 3.into_weight());
|
|
|
|
|
|
|
|
|
@@ -444,7 +447,7 @@ fn service_page_works() {
|
|
|
|
|
#[test]
|
|
|
|
|
fn service_page_bails() {
|
|
|
|
|
// Not enough weight for `service_page_base_completion`.
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
set_weight("service_page_base_completion", 2.into_weight());
|
|
|
|
|
let mut meter = WeightMeter::from_limit(1.into_weight());
|
|
|
|
|
|
|
|
|
@@ -461,7 +464,7 @@ fn service_page_bails() {
|
|
|
|
|
assert!(meter.consumed().is_zero());
|
|
|
|
|
});
|
|
|
|
|
// Not enough weight for `service_page_base_no_completion`.
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
set_weight("service_page_base_no_completion", 2.into_weight());
|
|
|
|
|
let mut meter = WeightMeter::from_limit(1.into_weight());
|
|
|
|
|
|
|
|
|
@@ -481,7 +484,7 @@ fn service_page_bails() {
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn service_page_item_bails() {
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
let _guard = StorageNoopGuard::default();
|
|
|
|
|
let (mut page, _) = full_page::<Test>();
|
|
|
|
|
let mut weight = WeightMeter::from_limit(10.into_weight());
|
|
|
|
@@ -508,7 +511,7 @@ fn service_page_suspension_works() {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
use PageExecutionStatus::*;
|
|
|
|
|
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
let (page, mut msgs) = full_page::<Test>();
|
|
|
|
|
assert!(msgs >= 10, "pre-condition: need at least 10 msgs per page");
|
|
|
|
|
let mut book = book_for::<Test>(&page);
|
|
|
|
@@ -556,14 +559,8 @@ fn service_page_suspension_works() {
|
|
|
|
|
#[test]
|
|
|
|
|
fn bump_service_head_works() {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
// Create a ready ring with three queues.
|
|
|
|
|
BookStateFor::<Test>::insert(Here, empty_book::<Test>());
|
|
|
|
|
knit(&Here);
|
|
|
|
|
BookStateFor::<Test>::insert(There, empty_book::<Test>());
|
|
|
|
|
knit(&There);
|
|
|
|
|
BookStateFor::<Test>::insert(Everywhere(0), empty_book::<Test>());
|
|
|
|
|
knit(&Everywhere(0));
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
build_triple_ring();
|
|
|
|
|
|
|
|
|
|
// Bump 99 times.
|
|
|
|
|
for i in 0..99 {
|
|
|
|
@@ -579,9 +576,9 @@ fn bump_service_head_works() {
|
|
|
|
|
/// `bump_service_head` does nothing when called with an insufficient weight limit.
|
|
|
|
|
#[test]
|
|
|
|
|
fn bump_service_head_bails() {
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
set_weight("bump_service_head", 2.into_weight());
|
|
|
|
|
setup_bump_service_head::<Test>(0.into(), 10.into());
|
|
|
|
|
setup_bump_service_head::<Test>(0.into(), 1.into());
|
|
|
|
|
|
|
|
|
|
let _guard = StorageNoopGuard::default();
|
|
|
|
|
let mut meter = WeightMeter::from_limit(1.into_weight());
|
|
|
|
@@ -592,7 +589,7 @@ fn bump_service_head_bails() {
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn bump_service_head_trivial_works() {
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
set_weight("bump_service_head", 2.into_weight());
|
|
|
|
|
let mut meter = WeightMeter::max_limit();
|
|
|
|
|
|
|
|
|
@@ -605,22 +602,15 @@ fn bump_service_head_trivial_works() {
|
|
|
|
|
assert_eq!(ServiceHead::<Test>::get().unwrap(), 1.into(), "Bumped the head");
|
|
|
|
|
assert_eq!(meter.consumed(), 4.into_weight());
|
|
|
|
|
|
|
|
|
|
assert_eq!(MessageQueue::bump_service_head(&mut meter), None, "Cannot bump");
|
|
|
|
|
assert_eq!(MessageQueue::bump_service_head(&mut meter), Some(1.into()), "Its a ring");
|
|
|
|
|
assert_eq!(meter.consumed(), 6.into_weight());
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn bump_service_head_no_head_noops() {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
// Create a ready ring with three queues.
|
|
|
|
|
BookStateFor::<Test>::insert(Here, empty_book::<Test>());
|
|
|
|
|
knit(&Here);
|
|
|
|
|
BookStateFor::<Test>::insert(There, empty_book::<Test>());
|
|
|
|
|
knit(&There);
|
|
|
|
|
BookStateFor::<Test>::insert(Everywhere(0), empty_book::<Test>());
|
|
|
|
|
knit(&Everywhere(0));
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
build_triple_ring();
|
|
|
|
|
|
|
|
|
|
// But remove the service head.
|
|
|
|
|
ServiceHead::<Test>::kill();
|
|
|
|
@@ -632,7 +622,7 @@ fn bump_service_head_no_head_noops() {
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn service_page_item_consumes_correct_weight() {
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
let mut page = page::<Test>(b"weight=3");
|
|
|
|
|
let mut weight = WeightMeter::from_limit(10.into_weight());
|
|
|
|
|
let overweight_limit = 0.into_weight();
|
|
|
|
@@ -656,7 +646,7 @@ fn service_page_item_consumes_correct_weight() {
|
|
|
|
|
/// `service_page_item` skips a permanently `Overweight` message and marks it as `unprocessed`.
|
|
|
|
|
#[test]
|
|
|
|
|
fn service_page_item_skips_perm_overweight_message() {
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
let mut page = page::<Test>(b"TooMuch");
|
|
|
|
|
let mut weight = WeightMeter::from_limit(2.into_weight());
|
|
|
|
|
let overweight_limit = 0.into_weight();
|
|
|
|
@@ -695,7 +685,7 @@ fn service_page_item_skips_perm_overweight_message() {
|
|
|
|
|
#[test]
|
|
|
|
|
fn peek_index_works() {
|
|
|
|
|
use super::integration_test::Test; // Run with larger page size.
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
// Fill a page with messages.
|
|
|
|
|
let (mut page, msgs) = full_page::<Test>();
|
|
|
|
|
let msg_enc_len = ItemHeader::<<Test as Config>::Size>::max_encoded_len() + 4;
|
|
|
|
@@ -716,7 +706,7 @@ fn peek_index_works() {
|
|
|
|
|
#[test]
|
|
|
|
|
fn peek_first_and_skip_first_works() {
|
|
|
|
|
use super::integration_test::Test; // Run with larger page size.
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
// Fill a page with messages.
|
|
|
|
|
let (mut page, msgs) = full_page::<Test>();
|
|
|
|
|
|
|
|
|
@@ -739,7 +729,7 @@ fn peek_first_and_skip_first_works() {
|
|
|
|
|
#[test]
|
|
|
|
|
fn note_processed_at_pos_works() {
|
|
|
|
|
use super::integration_test::Test; // Run with larger page size.
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
let (mut page, msgs) = full_page::<Test>();
|
|
|
|
|
|
|
|
|
|
for i in 0..msgs {
|
|
|
|
@@ -775,7 +765,7 @@ fn note_processed_at_pos_idempotent() {
|
|
|
|
|
#[test]
|
|
|
|
|
fn is_complete_works() {
|
|
|
|
|
use super::integration_test::Test; // Run with larger page size.
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
let (mut page, msgs) = full_page::<Test>();
|
|
|
|
|
assert!(msgs > 3, "Boring");
|
|
|
|
|
let msg_enc_len = ItemHeader::<<Test as Config>::Size>::max_encoded_len() + 4;
|
|
|
|
@@ -931,8 +921,9 @@ fn page_from_message_max_len_works() {
|
|
|
|
|
#[test]
|
|
|
|
|
fn sweep_queue_works() {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
build_triple_ring();
|
|
|
|
|
QueueChanges::take();
|
|
|
|
|
|
|
|
|
|
let book = BookStateFor::<Test>::get(Here);
|
|
|
|
|
assert!(book.begin != book.end);
|
|
|
|
@@ -967,9 +958,8 @@ fn sweep_queue_works() {
|
|
|
|
|
#[test]
|
|
|
|
|
fn sweep_queue_wraps_works() {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
BookStateFor::<Test>::insert(Here, empty_book::<Test>());
|
|
|
|
|
knit(&Here);
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
build_ring::<Test>(&[Here]);
|
|
|
|
|
|
|
|
|
|
MessageQueue::sweep_queue(Here);
|
|
|
|
|
let book = BookStateFor::<Test>::get(Here);
|
|
|
|
@@ -980,14 +970,14 @@ fn sweep_queue_wraps_works() {
|
|
|
|
|
#[test]
|
|
|
|
|
fn sweep_queue_invalid_noops() {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
assert_storage_noop!(MessageQueue::sweep_queue(Here));
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn footprint_works() {
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
let origin = MessageOrigin::Here;
|
|
|
|
|
let (page, msgs) = full_page::<Test>();
|
|
|
|
|
let book = book_for::<Test>(&page);
|
|
|
|
@@ -1005,7 +995,7 @@ fn footprint_works() {
|
|
|
|
|
/// The footprint of an invalid queue is the default footprint.
|
|
|
|
|
#[test]
|
|
|
|
|
fn footprint_invalid_works() {
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
let origin = MessageOrigin::Here;
|
|
|
|
|
assert_eq!(MessageQueue::footprint(origin), Default::default());
|
|
|
|
|
})
|
|
|
|
@@ -1015,7 +1005,7 @@ fn footprint_invalid_works() {
|
|
|
|
|
#[test]
|
|
|
|
|
fn footprint_on_swept_works() {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
let mut book = empty_book::<Test>();
|
|
|
|
|
book.message_count = 3;
|
|
|
|
|
book.size = 10;
|
|
|
|
@@ -1031,7 +1021,7 @@ fn footprint_on_swept_works() {
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn execute_overweight_works() {
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
set_weight("bump_service_head", 1.into_weight());
|
|
|
|
|
set_weight("service_queue_base", 1.into_weight());
|
|
|
|
|
set_weight("service_page_base_completion", 1.into_weight());
|
|
|
|
@@ -1091,7 +1081,7 @@ fn execute_overweight_works() {
|
|
|
|
|
fn permanently_overweight_book_unknits() {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
set_weight("bump_service_head", 1.into_weight());
|
|
|
|
|
set_weight("service_queue_base", 1.into_weight());
|
|
|
|
|
set_weight("service_page_base_completion", 1.into_weight());
|
|
|
|
@@ -1128,7 +1118,7 @@ fn permanently_overweight_book_unknits() {
|
|
|
|
|
fn permanently_overweight_book_unknits_multiple() {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
set_weight("bump_service_head", 1.into_weight());
|
|
|
|
|
set_weight("service_queue_base", 1.into_weight());
|
|
|
|
|
set_weight("service_page_base_completion", 1.into_weight());
|
|
|
|
@@ -1167,7 +1157,7 @@ fn permanently_overweight_book_unknits_multiple() {
|
|
|
|
|
fn ready_but_empty_does_not_panic() {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
BookStateFor::<Test>::insert(Here, empty_book::<Test>());
|
|
|
|
|
BookStateFor::<Test>::insert(There, empty_book::<Test>());
|
|
|
|
|
|
|
|
|
@@ -1187,7 +1177,7 @@ fn ready_but_empty_does_not_panic() {
|
|
|
|
|
fn ready_but_perm_overweight_does_not_panic() {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
MessageQueue::enqueue_message(msg("weight=9"), Here);
|
|
|
|
|
assert_eq!(MessageQueue::service_queues(8.into_weight()), 0.into_weight());
|
|
|
|
|
assert_ring(&[]);
|
|
|
|
@@ -1207,7 +1197,7 @@ fn ready_but_perm_overweight_does_not_panic() {
|
|
|
|
|
fn ready_ring_knit_basic_works() {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
BookStateFor::<Test>::insert(Here, empty_book::<Test>());
|
|
|
|
|
|
|
|
|
|
for i in 0..10 {
|
|
|
|
@@ -1227,7 +1217,7 @@ fn ready_ring_knit_basic_works() {
|
|
|
|
|
fn ready_ring_knit_and_unknit_works() {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
// Place three queues into the storage.
|
|
|
|
|
BookStateFor::<Test>::insert(Here, empty_book::<Test>());
|
|
|
|
|
BookStateFor::<Test>::insert(There, empty_book::<Test>());
|
|
|
|
@@ -1261,7 +1251,7 @@ fn enqueue_message_works() {
|
|
|
|
|
let max_msg_per_page = <Test as Config>::HeapSize::get() as u64 /
|
|
|
|
|
(ItemHeader::<<Test as Config>::Size>::max_encoded_len() as u64 + 1);
|
|
|
|
|
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
// Enqueue messages which should fill three pages.
|
|
|
|
|
let n = max_msg_per_page * 3;
|
|
|
|
|
for i in 1..=n {
|
|
|
|
@@ -1291,7 +1281,7 @@ fn enqueue_messages_works() {
|
|
|
|
|
let max_msg_per_page = <Test as Config>::HeapSize::get() as u64 /
|
|
|
|
|
(ItemHeader::<<Test as Config>::Size>::max_encoded_len() as u64 + 1);
|
|
|
|
|
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
// Enqueue messages which should fill three pages.
|
|
|
|
|
let n = max_msg_per_page * 3;
|
|
|
|
|
let msgs = vec![msg("a"); n as usize];
|
|
|
|
@@ -1320,7 +1310,7 @@ fn enqueue_messages_works() {
|
|
|
|
|
#[test]
|
|
|
|
|
fn service_queues_suspend_works() {
|
|
|
|
|
use MessageOrigin::*;
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
MessageQueue::enqueue_messages(vec![msg("a"), msg("ab"), msg("abc")].into_iter(), Here);
|
|
|
|
|
MessageQueue::enqueue_messages(vec![msg("x"), msg("xy"), msg("xyz")].into_iter(), There);
|
|
|
|
|
assert_eq!(QueueChanges::take(), vec![(Here, 3, 6), (There, 3, 6)]);
|
|
|
|
@@ -1387,7 +1377,7 @@ fn service_queues_suspend_works() {
|
|
|
|
|
/// Tests that manual overweight execution on a suspended queue errors with `QueueSuspended`.
|
|
|
|
|
#[test]
|
|
|
|
|
fn execute_overweight_respects_suspension() {
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
let origin = MessageOrigin::Here;
|
|
|
|
|
MessageQueue::enqueue_message(msg("weight=5"), origin);
|
|
|
|
|
// Mark the message as permanently overweight.
|
|
|
|
@@ -1433,7 +1423,7 @@ fn execute_overweight_respects_suspension() {
|
|
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
|
fn service_queue_suspension_ready_ring_works() {
|
|
|
|
|
test_closure(|| {
|
|
|
|
|
build_and_execute::<Test>(|| {
|
|
|
|
|
let origin = MessageOrigin::Here;
|
|
|
|
|
PausedQueues::set(vec![origin]);
|
|
|
|
|
MessageQueue::enqueue_message(msg("weight=5"), origin);
|
|
|
|
|