Merge "Display queue sizes along with queues"
This commit is contained in:
commit
b80f032d1a
|
@ -96,19 +96,19 @@ def check_queues(args):
|
|||
Return those queues to the user."""
|
||||
queue_depth = (action_get('queue-depth'))
|
||||
vhost = (action_get('vhost'))
|
||||
result = []
|
||||
# rabbitmqctl's output contains lines we don't want, such as
|
||||
# 'Listing queues ..' and '...done.', which may vary by release.
|
||||
# Actual queue results *should* always look like 'test\t0'
|
||||
queue_pattern = re.compile('.*\t[0-9]*')
|
||||
queue_pattern = re.compile(r"^(.*)\t([0-9]+$)")
|
||||
try:
|
||||
queues = check_output(['rabbitmqctl', 'list_queues',
|
||||
'-p', vhost]).decode('utf-8').split('\n')
|
||||
result = list({queue: size for (queue, size) in
|
||||
[i.split('\t') for i in queues
|
||||
if re.search(queue_pattern, i)]
|
||||
if int(size) >= queue_depth})
|
||||
|
||||
queue_lines = check_output(
|
||||
['rabbitmqctl', 'list_queues', '-q', '-p', vhost]
|
||||
).decode('utf-8').splitlines()
|
||||
filtered = filter(
|
||||
None, # filter out empty records
|
||||
map(lambda line: queue_pattern.findall(line), queue_lines))
|
||||
queues = [(queue, int(size)) for [[queue, size]] in filtered]
|
||||
result = {queue: size for queue, size in queues if size >= queue_depth}
|
||||
action_set({'output': result, 'outcome': 'Success'})
|
||||
except CalledProcessError as e:
|
||||
action_set({'output': e.output})
|
||||
|
|
|
@ -78,7 +78,10 @@ class ClusterStatusTestCase(CharmTestCase):
|
|||
|
||||
|
||||
class CheckQueuesTestCase(CharmTestCase):
|
||||
TEST_QUEUE_RESULT = b'Listing queues ...\ntest\t0\ntest\t0\n""'
|
||||
TEST_QUEUE_RESULTS = [
|
||||
b'Listing queues ...\ntest\t0\ntest\t0\n',
|
||||
b'name\tmessage\ntest\t0\ntest\t0\n',
|
||||
]
|
||||
|
||||
def dummy_action_get(self, key):
|
||||
action_values = {"queue-depth": -1, "vhost": "/"}
|
||||
|
@ -91,24 +94,28 @@ class CheckQueuesTestCase(CharmTestCase):
|
|||
|
||||
def test_check_queues(self):
|
||||
self.action_get.side_effect = self.dummy_action_get
|
||||
self.check_output.return_value = self.TEST_QUEUE_RESULT
|
||||
|
||||
actions.check_queues([])
|
||||
self.check_output.assert_called_once_with(['rabbitmqctl',
|
||||
'list_queues',
|
||||
'-p', "/"])
|
||||
self.action_set.assert_called()
|
||||
for queue_res in self.TEST_QUEUE_RESULTS:
|
||||
with self.subTest(queue_res=queue_res):
|
||||
self.check_output.return_value = queue_res
|
||||
actions.check_queues([])
|
||||
self.check_output.assert_called_once_with(
|
||||
['rabbitmqctl', 'list_queues', '-q', '-p', '/'],
|
||||
)
|
||||
self.check_output.reset_mock()
|
||||
self.action_set.assert_called_once_with(
|
||||
{'outcome': 'Success', 'output': {'test': 0}}
|
||||
)
|
||||
self.action_set.reset_mock()
|
||||
|
||||
def test_check_queues_execption(self):
|
||||
self.action_get.side_effect = self.dummy_action_get
|
||||
self.check_output.return_value = self.TEST_QUEUE_RESULT
|
||||
|
||||
self.check_output.side_effect = actions.CalledProcessError(1,
|
||||
"Failure")
|
||||
self.check_output.side_effect = actions.CalledProcessError(
|
||||
1, "Failure"
|
||||
)
|
||||
actions.check_queues([])
|
||||
self.check_output.assert_called_once_with(['rabbitmqctl',
|
||||
'list_queues',
|
||||
'-p', '/'])
|
||||
self.check_output.assert_called_once_with(
|
||||
['rabbitmqctl', 'list_queues', '-q', '-p', '/']
|
||||
)
|
||||
|
||||
|
||||
class ListUnconsumedQueuesTestCase(CharmTestCase):
|
||||
|
|
Loading…
Reference in New Issue