@@ -34,10 +34,16 @@ def setUpClass(cls):
3434 def setUp (self ):
3535 super ().setUp ()
3636 # pre-condition: Make sure there is no test pollution
37+ # Delete any leftover queues from previous failed test runs
38+ self .rabbit_client = self ._get_client ()
39+ self ._delete_sensor_watcher_amqp_queues (
40+ queue_name = "st2.sensor.watch.covfefe" , rabbit_client = self .rabbit_client
41+ )
42+
43+ # Verify queues are deleted
3744 sw_queues = self ._get_sensor_watcher_amqp_queues (
38- queue_name = "st2.sensor.watch.covfefe"
45+ queue_name = "st2.sensor.watch.covfefe" , rabbit_client = self . rabbit_client
3946 )
40- # TODO: Maybe just delete any leftover queues from previous failed test runs.
4147 self .assertTrue (len (sw_queues ) == 0 )
4248
4349 def test_sensor_watch_queue_gets_deleted_on_stop (self ):
@@ -55,30 +61,59 @@ def delete_handler(sensor_db):
5561 )
5662 sensor_watcher .start ()
5763 sw_queues = self ._get_sensor_watcher_amqp_queues (
58- queue_name = "st2.sensor.watch.covfefe"
64+ queue_name = "st2.sensor.watch.covfefe" , rabbit_client = self . rabbit_client
5965 )
6066
6167 start = monotonic ()
6268 done = False
6369 while not done :
6470 concurrency .sleep (0.01 )
6571 sw_queues = self ._get_sensor_watcher_amqp_queues (
66- queue_name = "st2.sensor.watch.covfefe"
72+ queue_name = "st2.sensor.watch.covfefe" , rabbit_client = self . rabbit_client
6773 )
6874 done = len (sw_queues ) > 0 or ((monotonic () - start ) < 5 )
6975
7076 sensor_watcher .stop ()
7177 sw_queues = self ._get_sensor_watcher_amqp_queues (
72- queue_name = "st2.sensor.watch.covfefe"
78+ queue_name = "st2.sensor.watch.covfefe" , rabbit_client = self . rabbit_client
7379 )
7480 self .assertTrue (len (sw_queues ) == 0 )
7581
76- @staticmethod
77- def _list_amqp_queues ():
82+ def _get_client (self ):
7883 rabbit_client = Client ("localhost:15672" , "guest" , "guest" )
84+ return rabbit_client
85+
86+ def _list_amqp_queues (self , rabbit_client ):
87+ """
88+ :param rabbit_client: Client
89+ """
7990 queues = [q ["name" ] for q in rabbit_client .get_queues ()]
8091 return queues
8192
82- def _get_sensor_watcher_amqp_queues (self , queue_name ):
83- all_queues = self ._list_amqp_queues ()
93+ def _get_sensor_watcher_amqp_queues (self , queue_name , rabbit_client ):
94+ """
95+ :param rabbit_client: Client
96+ """
97+ all_queues = self ._list_amqp_queues (rabbit_client )
8498 return set ([q_name for q_name in all_queues if queue_name in q_name ])
99+
100+ def _delete_sensor_watcher_amqp_queues (self , queue_name , rabbit_client ):
101+ """
102+ Delete all queues containing the specified queue_name pattern.
103+
104+ :param string queue_name: Pattern to match in queue names
105+ :param rabbit_client: Client
106+ :returns: None
107+ """
108+ # Get all queues matching the pattern
109+ queues_to_delete = self ._get_sensor_watcher_amqp_queues (
110+ queue_name = queue_name , rabbit_client = rabbit_client
111+ )
112+
113+ if not queues_to_delete :
114+ return
115+
116+ # Create a rabbit client and delete each queue
117+ for queue in queues_to_delete :
118+ # Use default vhost "/"
119+ rabbit_client .delete_queue ("/" , queue )
0 commit comments