From 43d59f5429ca39e241ec84ffe6b050ed096f70e7 Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Wed, 17 Sep 2025 13:29:32 -0400 Subject: [PATCH 1/2] delete queues for integration --- .../tests/integration/test_sensor_watcher.py | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/st2reactor/tests/integration/test_sensor_watcher.py b/st2reactor/tests/integration/test_sensor_watcher.py index b7991dab42..a5e9a371fb 100644 --- a/st2reactor/tests/integration/test_sensor_watcher.py +++ b/st2reactor/tests/integration/test_sensor_watcher.py @@ -34,10 +34,13 @@ def setUpClass(cls): def setUp(self): super().setUp() # pre-condition: Make sure there is no test pollution + # Delete any leftover queues from previous failed test runs + self._delete_sensor_watcher_amqp_queues(queue_name="st2.sensor.watch.covfefe") + + # Verify queues are deleted sw_queues = self._get_sensor_watcher_amqp_queues( queue_name="st2.sensor.watch.covfefe" ) - # TODO: Maybe just delete any leftover queues from previous failed test runs. self.assertTrue(len(sw_queues) == 0) def test_sensor_watch_queue_gets_deleted_on_stop(self): @@ -82,3 +85,22 @@ def _list_amqp_queues(): def _get_sensor_watcher_amqp_queues(self, queue_name): all_queues = self._list_amqp_queues() return set([q_name for q_name in all_queues if queue_name in q_name]) + + def _delete_sensor_watcher_amqp_queues(self, queue_name): + """ + Delete all queues containing the specified queue_name pattern. + + :param string queue_name: Pattern to match in queue names + :returns: None + """ + # Get all queues matching the pattern + queues_to_delete = self._get_sensor_watcher_amqp_queues(queue_name=queue_name) + + if not queues_to_delete: + return + + # Create a rabbit client and delete each queue + rabbit_client = Client("localhost:15672", "guest", "guest") + for queue in queues_to_delete: + # Use default vhost "/" + rabbit_client.delete_queue("/", queue) From 2ea0433b9217a1bca5ea736dba7ab5924cc11e67 Mon Sep 17 00:00:00 2001 From: guzzijones12 Date: Thu, 18 Sep 2025 11:02:04 -0400 Subject: [PATCH 2/2] centralize rabbit client --- .../tests/integration/test_sensor_watcher.py | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/st2reactor/tests/integration/test_sensor_watcher.py b/st2reactor/tests/integration/test_sensor_watcher.py index a5e9a371fb..f21c6aafeb 100644 --- a/st2reactor/tests/integration/test_sensor_watcher.py +++ b/st2reactor/tests/integration/test_sensor_watcher.py @@ -35,11 +35,14 @@ def setUp(self): super().setUp() # pre-condition: Make sure there is no test pollution # Delete any leftover queues from previous failed test runs - self._delete_sensor_watcher_amqp_queues(queue_name="st2.sensor.watch.covfefe") + self.rabbit_client = self._get_client() + self._delete_sensor_watcher_amqp_queues( + queue_name="st2.sensor.watch.covfefe", rabbit_client=self.rabbit_client + ) # Verify queues are deleted sw_queues = self._get_sensor_watcher_amqp_queues( - queue_name="st2.sensor.watch.covfefe" + queue_name="st2.sensor.watch.covfefe", rabbit_client=self.rabbit_client ) self.assertTrue(len(sw_queues) == 0) @@ -58,7 +61,7 @@ def delete_handler(sensor_db): ) sensor_watcher.start() sw_queues = self._get_sensor_watcher_amqp_queues( - queue_name="st2.sensor.watch.covfefe" + queue_name="st2.sensor.watch.covfefe", rabbit_client=self.rabbit_client ) start = monotonic() @@ -66,41 +69,51 @@ def delete_handler(sensor_db): while not done: concurrency.sleep(0.01) sw_queues = self._get_sensor_watcher_amqp_queues( - queue_name="st2.sensor.watch.covfefe" + queue_name="st2.sensor.watch.covfefe", rabbit_client=self.rabbit_client ) done = len(sw_queues) > 0 or ((monotonic() - start) < 5) sensor_watcher.stop() sw_queues = self._get_sensor_watcher_amqp_queues( - queue_name="st2.sensor.watch.covfefe" + queue_name="st2.sensor.watch.covfefe", rabbit_client=self.rabbit_client ) self.assertTrue(len(sw_queues) == 0) - @staticmethod - def _list_amqp_queues(): + def _get_client(self): rabbit_client = Client("localhost:15672", "guest", "guest") + return rabbit_client + + def _list_amqp_queues(self, rabbit_client): + """ + :param rabbit_client: Client + """ queues = [q["name"] for q in rabbit_client.get_queues()] return queues - def _get_sensor_watcher_amqp_queues(self, queue_name): - all_queues = self._list_amqp_queues() + def _get_sensor_watcher_amqp_queues(self, queue_name, rabbit_client): + """ + :param rabbit_client: Client + """ + all_queues = self._list_amqp_queues(rabbit_client) return set([q_name for q_name in all_queues if queue_name in q_name]) - def _delete_sensor_watcher_amqp_queues(self, queue_name): + def _delete_sensor_watcher_amqp_queues(self, queue_name, rabbit_client): """ Delete all queues containing the specified queue_name pattern. :param string queue_name: Pattern to match in queue names + :param rabbit_client: Client :returns: None """ # Get all queues matching the pattern - queues_to_delete = self._get_sensor_watcher_amqp_queues(queue_name=queue_name) + queues_to_delete = self._get_sensor_watcher_amqp_queues( + queue_name=queue_name, rabbit_client=rabbit_client + ) if not queues_to_delete: return # Create a rabbit client and delete each queue - rabbit_client = Client("localhost:15672", "guest", "guest") for queue in queues_to_delete: # Use default vhost "/" rabbit_client.delete_queue("/", queue)