Skip to content

Commit

Permalink
Merge pull request #46 from eduardoklosowski/msg-commands
Browse files Browse the repository at this point in the history
Implements "msg receive" and "msg purge" commands
  • Loading branch information
eduardoklosowski authored Sep 6, 2024
2 parents b6c7294 + ffdc26f commit 16ecc83
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 1 deletion.
8 changes: 8 additions & 0 deletions docs/cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,11 @@ Esse comando recebe o nome de um tópico SNS, uma mensagem e opcionalmente seus
### `msg send <queue_name> <message>`

Esse comando recebe o nome de uma fila Amazon SQS e uma mensagem, e executa o envio dessa mensagem para a fila no serviço configurado da AWS.

### `msg receive [--batch-size=1] [--wait-seconds=0] <queue_name>`

Esse comando recebe o nome de uma fila Amazon SQS, e recupera mensagens dela, removendo-as logo em seguinda. O parâmetro `--batch-size` define a quantidade máxima de mensagens que serão recuperadas, e o parâmetro `--wait-seconds` define a quantidade de tempo máximo que o cliente esperará por mensagens.

### `msg purge <queue_name>`

Esse comando recebe o nome de uma fila Amazon SQS, e remove todas as mensagens presentes nela.
7 changes: 7 additions & 0 deletions src/qldebugger/actions/message.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,3 +70,10 @@ def delete_messages(*, queue_name: str, messages: 'ReceiveMessageResultTypeDef')
],
)
logger.info('Deleted %d messages from %r queue', len(messages['Messages']), queue_name)


def purge_messages(*, queue_name: str) -> None:
sqs = get_client('sqs')
queue_url = sqs.get_queue_url(QueueName=queue_name)['QueueUrl']
logger.info('Purging messages of %r queue...', queue_name)
sqs.purge_queue(QueueUrl=queue_url)
21 changes: 21 additions & 0 deletions src/qldebugger/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,3 +120,24 @@ def msg_publish(topic_name: str, message: str, attributes: Mapping[str, 'Message
def msg_send(queue_name: str, message: str) -> None:
load_config(CONFIG_FILENAME)
actions.message.send_message(queue_name=queue_name, message=message)


@msg.command('receive')
@click.argument('queue_name')
@click.option('--batch-size', default=1, type=int, show_default=True)
@click.option('--wait-seconds', default=0, type=int, show_default=True)
def msg_receive(queue_name: str, batch_size: int, wait_seconds: int) -> None:
load_config(CONFIG_FILENAME)
messages = actions.message.receive_message(
queue_name=queue_name, batch_size=batch_size, maximum_batching_window=wait_seconds
)
for message in messages['Messages']:
click.echo(repr(message.get('Body')))
actions.message.delete_messages(queue_name=queue_name, messages=messages)


@msg.command('purge')
@click.argument('queue_name')
def msg_purge(queue_name: str) -> None:
load_config(CONFIG_FILENAME)
actions.message.purge_messages(queue_name=queue_name)
17 changes: 16 additions & 1 deletion tests/qldebugger/actions/test_message.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

import pytest

from qldebugger.actions.message import delete_messages, publish_message, receive_message, send_message
from qldebugger.actions.message import delete_messages, publish_message, purge_messages, receive_message, send_message
from tests.utils import randstr

if TYPE_CHECKING:
Expand Down Expand Up @@ -156,3 +156,18 @@ def test_run(self, mock_get_client: Mock) -> None:
for message in messages['Messages']
],
)


class TestPurgeMessages:
@patch('qldebugger.actions.message.get_client')
def test_run(self, mock_get_client: Mock) -> None:
queue_name = randstr()
queue_url = randstr()

mock_get_client.return_value.get_queue_url.return_value = {'QueueUrl': queue_url}

purge_messages(queue_name=queue_name)

mock_get_client.assert_called_once_with('sqs')
mock_get_client.return_value.get_queue_url.assert_called_once_with(QueueName=queue_name)
mock_get_client.return_value.purge_queue.assert_called_once_with(QueueUrl=queue_url)

0 comments on commit 16ecc83

Please sign in to comment.