fix: only pause if queue is not empty

This commit is contained in:
wakonig_k 2023-03-10 11:00:25 +01:00
parent 577eea552e
commit deca3d1d77
3 changed files with 20 additions and 3 deletions

View File

@ -139,7 +139,8 @@ class QueueManager:
def set_abort(self, scanID=None, queue="primary", parameter: dict = None) -> None:
"""abort the scan and remove it from the queue. This will leave the queue in a paused state after the cleanup"""
self.queues[queue].status = ScanQueueStatus.PAUSED
if self.queues[queue].queue:
self.queues[queue].status = ScanQueueStatus.PAUSED
self.queues[queue].worker_status = InstructionQueueStatus.STOPPED
# self.queues[queue].remove_queue_item(scanID=scanID)

View File

@ -778,7 +778,7 @@ class RoundScanFlySim(ScanBase):
def __init__(self, *args, parameter=None, **kwargs):
"""
A scan following a round shell-like pattern.
A fly scan following a round shell-like pattern.
Args:
*args: motor1, motor2, inner ring, outer ring, number of rings, number of positions in the first ring

View File

@ -106,14 +106,30 @@ def test_set_continue():
def test_set_abort():
queue_manager = get_queuemanager()
queue_manager.producer.message_sent = []
msg = BECMessage.ScanQueueMessage(
scan_type="mv",
parameter={"args": {"samx": (1,)}, "kwargs": {}},
queue="primary",
metadata={"RID": "something"},
)
queue_manager.queues = {"primary": ScanQueue(queue_manager, InstructionQueueMock)}
queue_manager.add_to_queue(scan_queue="primary", msg=msg)
queue_manager.set_abort(queue="primary")
assert queue_manager.queues["primary"].status == ScanQueueStatus.PAUSED
assert len(queue_manager.producer.message_sent) == 1
assert len(queue_manager.producer.message_sent) == 2
assert (
queue_manager.producer.message_sent[0].get("queue") == MessageEndpoints.scan_queue_status()
)
def test_set_abort_with_empty_queue():
queue_manager = get_queuemanager()
queue_manager.producer.message_sent = []
queue_manager.set_abort(queue="primary")
assert queue_manager.queues["primary"].status == ScanQueueStatus.RUNNING
assert len(queue_manager.producer.message_sent) == 0
def test_set_clear_sends_message():
queue_manager = get_queuemanager()
queue_manager.producer.message_sent = []