def handle(self, *args, **options): rabbit_classes = ["queues"] if options["all"]: rabbit_classes = ["queues", "exchanges"] api_url = getattr(settings, "BROKER_API_URL") delete_rabbit_objects(api_url, rabbit_classes=rabbit_classes, force=options["force"])
def test_delete_rabbit_objects(self, mock_get_all_rabbitmq_objects): example_api = "https://example/api" example_vhost = "abcd_vhost" example_queues = [ { "name": "queue1", "consumers": 0, "messages": 0, "vhost": example_vhost }, { "name": "queue2", "consumers": 1, "messages": 1, "vhost": example_vhost }, ] example_exchanges = [ { "name": "exchange1", "vhost": example_vhost }, { "name": "exchange2", "vhost": example_vhost }, ] return_values = { "queues": example_queues, "exchanges": example_exchanges } mock_get_all_rabbitmq_objects.side_effect = lambda api, rabbit_class: return_values[ rabbit_class] # Deletes only the empty queue with requests_mock.Mocker() as requests_mocker: requests_mocker.delete( f"{example_api}/queues/{example_vhost}/{example_queues[0]['name']}" ) delete_rabbit_objects(example_api) mock_get_all_rabbitmq_objects.assert_called_once_with( example_api, "queues") self.assertEquals(requests_mocker.call_count, 1) mock_get_all_rabbitmq_objects.reset_mock() # Deletes only the empty queue and exchanges with requests_mock.Mocker() as requests_mocker: requests_mocker.delete( f"{example_api}/queues/{example_vhost}/{example_queues[0]['name']}" ) requests_mocker.delete( f"{example_api}/exchanges/{example_vhost}/{example_exchanges[0]['name']}" ) requests_mocker.delete( f"{example_api}/exchanges/{example_vhost}/{example_exchanges[1]['name']}" ) delete_rabbit_objects(example_api, rabbit_classes=["queues", "exchanges"]) mock_get_all_rabbitmq_objects.assert_has_calls( [call(example_api, "queues"), call(example_api, "exchanges")]) self.assertEquals(requests_mocker.call_count, 3) mock_get_all_rabbitmq_objects.reset_mock() # Deletes all queues with requests_mock.Mocker() as requests_mocker: requests_mocker.delete( f"{example_api}/queues/{example_vhost}/{example_queues[0]['name']}" ) requests_mocker.delete( f"{example_api}/queues/{example_vhost}/{example_queues[1]['name']}" ) delete_rabbit_objects(example_api, force=True) mock_get_all_rabbitmq_objects.assert_called_once_with( example_api, "queues") self.assertEquals(requests_mocker.call_count, 2) mock_get_all_rabbitmq_objects.reset_mock()
def clean_up_queues_task(): """Deletes all of the queues that don't have any consumers or messages""" api_url = getattr(settings, "BROKER_API_URL") delete_rabbit_objects(api_url, rabbit_classes=["queues", "exchanges"])