Skip to content

Commit

Permalink
fix(config_parser): Keep queue old names for default queue type
Browse files Browse the repository at this point in the history
  • Loading branch information
phijor committed Jan 26, 2021
1 parent 4fd746a commit 2ffad69
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 8 deletions.
9 changes: 8 additions & 1 deletion metricq_manager/config_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,13 @@ def _queue_name_parts(self, unique: bool):
# itself with a changed queue type then gets assigned the newly declared
# queue. Of course, the old queue still exists and needs to be deleted
# manually.
yield self.queue_type().to_string()
#
# For backwards compatibility, we only include the queue type if it is
# different from the default queue type, which in the past was only
# available queue type. This way, all clients that do not declare a
# special queue type keep the old queue names.
queue_type = self.queue_type()
if queue_type != QueueType.default():
yield self.queue_type().to_string()

yield self.role
30 changes: 23 additions & 7 deletions tests/test_config_parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,19 +134,35 @@ def test_parse_invalid_queue_type(config_value):


@pytest.mark.parametrize(
("default", "unique", "queue_name"),
("default", "unique", "queue_name", "queue_type"),
[
(OVERRIDE_CLIENT_TOKEN, True, OVERRIDE_CLIENT_TOKEN),
(OVERRIDE_CLIENT_TOKEN, False, OVERRIDE_CLIENT_TOKEN),
(None, False, f"{DEFAULT_CLIENT_TOKEN}-classic-test"),
(None, True, f"{DEFAULT_CLIENT_TOKEN}-{FIXED_UUID.hex}-classic-test"),
(OVERRIDE_CLIENT_TOKEN, True, OVERRIDE_CLIENT_TOKEN, QueueType.default()),
(OVERRIDE_CLIENT_TOKEN, False, OVERRIDE_CLIENT_TOKEN, QueueType.default()),
(None, False, f"{DEFAULT_CLIENT_TOKEN}-quorum-test", QueueType.QUORUM),
(
None,
True,
f"{DEFAULT_CLIENT_TOKEN}-{FIXED_UUID.hex}-test",
QueueType.default(),
),
(None, False, f"{DEFAULT_CLIENT_TOKEN}-quorum-test", QueueType.QUORUM),
(
None,
True,
f"{DEFAULT_CLIENT_TOKEN}-{FIXED_UUID.hex}-quorum-test",
QueueType.QUORUM,
),
],
)
def test_queue_name(default, unique, queue_name, mocker: MockerFixture):
def test_queue_name(
default, unique, queue_name, queue_type: QueueType, mocker: MockerFixture
):
mocker.patch("metricq_manager.config_parser.uuid4", lambda: FIXED_UUID)

config_parser = ConfigParser(
config={}, role="test", client_token=DEFAULT_CLIENT_TOKEN
config=x_metricq({"test-queue-type": queue_type.to_string()}),
role="test",
client_token=DEFAULT_CLIENT_TOKEN,
)

assert config_parser.queue_name(unique=unique, default=default) == queue_name
Expand Down

0 comments on commit 2ffad69

Please sign in to comment.