mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-28 00:28:01 +00:00
pallet-message-queue: add queue pausing (#14318)
* pallet-message-queue: add queue pausing Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Fix build Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> * Remove check Otherwise it would not start servicing queues that started paused and became unpaused afterwards. Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> --------- Signed-off-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
This commit is contained in:
committed by
GitHub
parent
2119c80225
commit
4249643df2
@@ -84,6 +84,7 @@ impl Config for Test {
|
||||
type MessageProcessor = RecordingMessageProcessor;
|
||||
type Size = u32;
|
||||
type QueueChangeHandler = RecordingQueueChangeHandler;
|
||||
type QueuePausedQuery = MockedQueuePauser;
|
||||
type HeapSize = HeapSize;
|
||||
type MaxStale = MaxStale;
|
||||
type ServiceWeight = ServiceWeight;
|
||||
@@ -154,7 +155,8 @@ impl crate::weights::WeightInfo for MockedWeightInfo {
|
||||
|
||||
parameter_types! {
|
||||
pub static MessagesProcessed: Vec<(Vec<u8>, MessageOrigin)> = vec![];
|
||||
pub static SuspendedQueues: Vec<MessageOrigin> = vec![];
|
||||
/// Queues that should return `Yield` upon being processed.
|
||||
pub static YieldingQueues: Vec<MessageOrigin> = vec![];
|
||||
}
|
||||
|
||||
/// A message processor which records all processed messages into [`MessagesProcessed`].
|
||||
@@ -205,7 +207,7 @@ impl ProcessMessage for RecordingMessageProcessor {
|
||||
/// Processed a mocked message. Messages that end with `badformat`, `corrupt`, `unsupported` or
|
||||
/// `yield` will fail with an error respectively.
|
||||
fn processing_message(msg: &[u8], origin: &MessageOrigin) -> Result<(), ProcessMessageError> {
|
||||
if SuspendedQueues::get().contains(&origin) {
|
||||
if YieldingQueues::get().contains(&origin) {
|
||||
return Err(ProcessMessageError::Yield)
|
||||
}
|
||||
|
||||
@@ -270,6 +272,17 @@ impl OnQueueChanged<MessageOrigin> for RecordingQueueChangeHandler {
|
||||
}
|
||||
}
|
||||
|
||||
parameter_types! {
|
||||
pub static PausedQueues: Vec<MessageOrigin> = vec![];
|
||||
}
|
||||
|
||||
pub struct MockedQueuePauser;
|
||||
impl QueuePausedQuery<MessageOrigin> for MockedQueuePauser {
|
||||
fn is_paused(id: &MessageOrigin) -> bool {
|
||||
PausedQueues::get().contains(id)
|
||||
}
|
||||
}
|
||||
|
||||
/// Create new test externalities.
|
||||
///
|
||||
/// Is generic since it is used by the unit test, integration tests and benchmarks.
|
||||
@@ -287,6 +300,12 @@ where
|
||||
ext
|
||||
}
|
||||
|
||||
/// Run this closure in test externalities.
|
||||
pub fn test_closure<R>(f: impl FnOnce() -> R) -> R {
|
||||
let mut ext = new_test_ext::<Test>();
|
||||
ext.execute_with(f)
|
||||
}
|
||||
|
||||
/// Set the weight of a specific weight function.
|
||||
pub fn set_weight(name: &str, w: Weight) {
|
||||
MockedWeightInfo::set_weight::<Test>(name, w);
|
||||
|
||||
Reference in New Issue
Block a user