diff --git a/src/ska_tango_base/base/component_manager.py b/src/ska_tango_base/base/component_manager.py index 824c994f0a92dcaba38266e7745b824bbec9f035..273569035fdfea0c39c687dcf31bf30f7cd55ec6 100644 --- a/src/ska_tango_base/base/component_manager.py +++ b/src/ska_tango_base/base/component_manager.py @@ -54,6 +54,9 @@ class BaseComponentManager: manager """ self.op_state_model = op_state_model + self._max_queue_size = kwargs.get("max_queue_size", 0) + self._num_workers = kwargs.get("num_workers", 0) + self._push_change_event = kwargs.get("push_change_event", None) self._queue_manager = self.create_queue_manager() def start_communicating(self): @@ -216,7 +219,13 @@ class BaseComponentManager: :return: The queue manager. :rtype: QueueManager """ - return QueueManager(max_queue_size=0, num_workers=0) + logger = getattr(self, "logger", None) + return QueueManager( + max_queue_size=self._max_queue_size, + num_workers=self._num_workers, + logger=logger, + push_change_event=self._push_change_event, + ) def enqueue( self, diff --git a/src/ska_tango_base/base/reference_component_manager.py b/src/ska_tango_base/base/reference_component_manager.py index 8a8f94e33f543212c84592e0123a5f4f307dc185..b830eb84a35f4563eedf6246d69ca8a58770b2cd 100644 --- a/src/ska_tango_base/base/reference_component_manager.py +++ b/src/ska_tango_base/base/reference_component_manager.py @@ -5,11 +5,8 @@ It is provided for explanatory purposes, and to support testing of this package. """ import functools -import logging -from typing import Optional, Callable -from ska_tango_base.base import BaseComponentManager, OpStateModel -from ska_tango_base.base.task_queue_manager import QueueManager +from ska_tango_base.base import BaseComponentManager from ska_tango_base.control_model import PowerMode from ska_tango_base.faults import ComponentFault @@ -392,51 +389,3 @@ class ReferenceBaseComponentManager(BaseComponentManager): This is a callback hook. """ self.op_state_model.perform_action("component_fault") - - -class QueueWorkerComponentManager(ReferenceBaseComponentManager): - """A component manager that configures the queue manager.""" - - def __init__( - self, - op_state_model: Optional[OpStateModel], - logger: logging.Logger, - max_queue_size: int, - num_workers: int, - push_change_event: Optional[Callable], - *args, - **kwargs - ): - """Component manager that configures the queue. - - :param op_state_model: The ops state model - :type op_state_model: OpStateModel - :param logger: Logger to use - :type logger: logging.Logger - :param max_queue_size: The size of the queue - :type max_queue_size: int - :param num_workers: The number of workers - :type num_workers: int - :param push_change_event: A method that will be called when attributes are updated - :type push_change_event: Callable - """ - self.logger = logger - self.max_queue_size = max_queue_size - self.num_workers = num_workers - self.push_change_event = push_change_event - super().__init__(op_state_model, *args, logger=logger, **kwargs) - - def create_queue_manager(self) -> QueueManager: - """Create a QueueManager. - - Create the QueueManager with the queue configured as needed. - - :return: The queue manager - :rtype: QueueManager - """ - return QueueManager( - max_queue_size=self.max_queue_size, - num_workers=self.num_workers, - logger=self.logger, - push_change_event=self.push_change_event, - ) diff --git a/tests/long_running_tasks/reference_base_device.py b/tests/long_running_tasks/reference_base_device.py index 329d1c54e8652add3617931b6ae347bdbe6ba4bb..47a67578dc41c0219fb0cba68f034938b73b7269 100644 --- a/tests/long_running_tasks/reference_base_device.py +++ b/tests/long_running_tasks/reference_base_device.py @@ -14,7 +14,9 @@ import tango from tango.server import command, device_property from tango import DebugIt -from ska_tango_base.base.reference_component_manager import QueueWorkerComponentManager +from ska_tango_base.base.reference_component_manager import ( + ReferenceBaseComponentManager, +) from ska_tango_base.base.base_device import SKABaseDevice from ska_tango_base.base.task_queue_manager import ResultCode from ska_tango_base.commands import ResponseCommand @@ -234,7 +236,7 @@ class AsyncBaseDevice(LongRunningCommandBaseTestDevice): def create_component_manager(self: SKABaseDevice): """Create the component manager with a queue manager that has workers.""" - return QueueWorkerComponentManager( + return ReferenceBaseComponentManager( op_state_model=self.op_state_model, logger=self.logger, max_queue_size=20, diff --git a/tests/long_running_tasks/test_task_queue_manager.py b/tests/long_running_tasks/test_task_queue_manager.py index f20b0e56df428ff6591fb4c31d8e4d26e692b659..fd764c2608c348486529acb86ddd96a82c0ae53c 100644 --- a/tests/long_running_tasks/test_task_queue_manager.py +++ b/tests/long_running_tasks/test_task_queue_manager.py @@ -10,7 +10,9 @@ from ska_tango_base.base.task_queue_manager import ( TaskResult, TaskState, ) -from ska_tango_base.base.reference_component_manager import QueueWorkerComponentManager +from ska_tango_base.base.reference_component_manager import ( + ReferenceBaseComponentManager, +) from ska_tango_base.commands import BaseCommand logger = logging.getLogger(__name__) @@ -396,7 +398,7 @@ class TestQueueManagerExit: ) ) - cm = QueueWorkerComponentManager( + cm = ReferenceBaseComponentManager( op_state_model=None, logger=logger, max_queue_size=10, @@ -458,7 +460,7 @@ class TestQueueManagerExit: @pytest.mark.timeout(5) def test_exit_stop(self, stop_task): """Test stopping exit.""" - cm = QueueWorkerComponentManager( + cm = ReferenceBaseComponentManager( op_state_model=None, logger=logger, max_queue_size=5, @@ -486,7 +488,7 @@ class TestQueueManagerExit: @pytest.mark.timeout(5) def test_delete_queue(self, slow_task, stop_task, abort_task): """Test deleting the queue.""" - cm = QueueWorkerComponentManager( + cm = ReferenceBaseComponentManager( op_state_model=None, logger=logger, max_queue_size=8, @@ -514,7 +516,7 @@ class TestComponentManager: def test_init(self): """Test that we can init the component manager.""" - cm = QueueWorkerComponentManager( + cm = ReferenceBaseComponentManager( op_state_model=None, logger=logger, max_queue_size=0,