Skip to content

Commit 5ceedca

Browse files
author
DanielePalaia
committed
improved arguments management during declare_queue
1 parent ca3c9e6 commit 5ceedca

File tree

5 files changed

+60
-34
lines changed

5 files changed

+60
-34
lines changed

examples/getting_started/main.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
ExchangeSpecification,
55
Message,
66
QueueType,
7-
QuorumQueueSpecification,
87
StreamSpecification,
98
exchange_address,
109
)

rabbitmq_amqp_python_client/management.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import logging
22
import uuid
3-
from typing import Any, Optional
3+
from typing import Any, Optional, Union
44

55
from .address_helper import (
66
binding_path_with_exchange_queue,
@@ -130,19 +130,20 @@ def declare_exchange(
130130

131131
def declare_queue(
132132
self,
133-
queue_specification: (
134-
ClassicQueueSpecification | QuorumQueueSpecification | StreamSpecification
135-
),
136-
) -> ClassicQueueSpecification | QuorumQueueSpecification | StreamSpecification:
133+
queue_specification: Union[
134+
ClassicQueueSpecification, QuorumQueueSpecification, StreamSpecification
135+
],
136+
) -> Union[
137+
ClassicQueueSpecification, QuorumQueueSpecification, StreamSpecification
138+
]:
137139
logger.debug("declare_queue operation called")
138140

139-
if (
140-
type(queue_specification) is ClassicQueueSpecification
141-
or type(queue_specification) is QuorumQueueSpecification
141+
if isinstance(queue_specification, ClassicQueueSpecification) or isinstance(
142+
queue_specification, QuorumQueueSpecification
142143
):
143144
body = self._declare_queue(queue_specification)
144145

145-
elif type(queue_specification) is StreamSpecification:
146+
elif isinstance(queue_specification, StreamSpecification):
146147
body = self._declare_stream(queue_specification)
147148

148149
path = queue_address(queue_specification.name)

rabbitmq_amqp_python_client/queues.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ class QuorumQueueSpecification(QueueSpecification):
3939
class StreamSpecification:
4040
name: str
4141
queue_type: QueueType = QueueType.stream
42-
max_len_bytes: Optional[str] = None
43-
max_time_retention: Optional[str] = None
44-
max_segment_size_in_bytes: Optional[str] = None
42+
max_len_bytes: Optional[int] = None
43+
max_time_retention: Optional[int] = None
44+
max_segment_size_in_bytes: Optional[int] = None
4545
filter_size: Optional[int] = None
4646
initial_group_size: Optional[int] = None
4747
leader_locator: Optional[str] = None

tests/test_management.py

Lines changed: 45 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
from rabbitmq_amqp_python_client import (
22
BindingSpecification,
3+
ClassicQueueSpecification,
34
Connection,
45
ExchangeSpecification,
5-
QueueSpecification,
66
QueueType,
7+
QuorumQueueSpecification,
8+
StreamSpecification,
79
)
810
from rabbitmq_amqp_python_client.exceptions import (
911
ValidationCodeException,
@@ -35,9 +37,7 @@ def test_declare_purge_delete_queue() -> None:
3537
queue_name = "my_queue"
3638
management = connection.management()
3739

38-
queue_info = management.declare_queue(
39-
QueueSpecification(name=queue_name, queue_type=QueueType.quorum)
40-
)
40+
queue_info = management.declare_queue(QuorumQueueSpecification(name=queue_name))
4141

4242
assert queue_info.name == queue_name
4343

@@ -59,9 +59,7 @@ def test_bind_exchange_to_queue() -> None:
5959

6060
management.declare_exchange(ExchangeSpecification(name=exchange_name, arguments={}))
6161

62-
management.declare_queue(
63-
QueueSpecification(name=queue_name, queue_type=QueueType.quorum)
64-
)
62+
management.declare_queue(QuorumQueueSpecification(name=queue_name))
6563

6664
binding_exchange_queue_path = management.bind(
6765
BindingSpecification(
@@ -98,9 +96,8 @@ def test_queue_info_with_validations() -> None:
9896
queue_name = "test_queue_info_with_validation"
9997
management = connection.management()
10098

101-
queue_specification = QueueSpecification(
99+
queue_specification = QuorumQueueSpecification(
102100
name=queue_name,
103-
queue_type=QueueType.quorum,
104101
)
105102
management.declare_queue(queue_specification)
106103

@@ -122,16 +119,15 @@ def test_queue_precondition_fail() -> None:
122119
queue_name = "test-queue_precondition_fail"
123120
management = connection.management()
124121

125-
queue_specification = QueueSpecification(
126-
name=queue_name, queue_type=QueueType.quorum, is_auto_delete=False
122+
queue_specification = QuorumQueueSpecification(
123+
name=queue_name, is_auto_delete=False
127124
)
128125
management.declare_queue(queue_specification)
129126

130127
management.declare_queue(queue_specification)
131128

132-
queue_specification = QueueSpecification(
129+
queue_specification = QuorumQueueSpecification(
133130
name=queue_name,
134-
queue_type=QueueType.quorum,
135131
is_auto_delete=True,
136132
)
137133

@@ -152,7 +148,7 @@ def test_declare_classic_queue() -> None:
152148
queue_name = "test-declare_classic_queue"
153149
management = connection.management()
154150

155-
queue_specification = QueueSpecification(
151+
queue_specification = QuorumQueueSpecification(
156152
name=queue_name,
157153
queue_type=QueueType.classic,
158154
is_auto_delete=False,
@@ -165,14 +161,14 @@ def test_declare_classic_queue() -> None:
165161
management.delete_queue(queue_name)
166162

167163

168-
def test_declare_queue_with_args() -> None:
164+
def test_declare_classic_queue_with_args() -> None:
169165
connection = Connection("amqp://guest:guest@localhost:5672/")
170166
connection.dial()
171167

172168
queue_name = "test-queue_with_args"
173169
management = connection.management()
174170

175-
queue_specification = QueueSpecification(
171+
queue_specification = ClassicQueueSpecification(
176172
name=queue_name,
177173
queue_type=QueueType.classic,
178174
is_auto_delete=False,
@@ -201,3 +197,36 @@ def test_declare_queue_with_args() -> None:
201197
)
202198

203199
management.delete_queue(queue_name)
200+
201+
202+
def test_declare_stream_with_args() -> None:
203+
connection = Connection("amqp://guest:guest@localhost:5672/")
204+
connection.dial()
205+
206+
stream_name = "test-stream_with_args"
207+
management = connection.management()
208+
209+
stream_specification = StreamSpecification(
210+
name=stream_name,
211+
max_len_bytes=1000000000,
212+
max_time_retention=10000000,
213+
max_segment_size_in_bytes=100000000,
214+
filter_size=1000,
215+
initial_group_size=3,
216+
leader_locator="node1",
217+
)
218+
219+
stream_info = management.declare_queue(stream_specification)
220+
221+
assert stream_specification.name == stream_info.name
222+
assert stream_specification.max_len_bytes == stream_info.max_len_bytes
223+
assert stream_specification.max_time_retention == stream_info.max_time_retention
224+
assert (
225+
stream_specification.max_segment_size_in_bytes
226+
== stream_info.max_segment_size_in_bytes
227+
)
228+
assert stream_specification.filter_size == stream_info.filter_size
229+
assert stream_specification.initial_group_size == stream_info.initial_group_size
230+
assert stream_specification.leader_locator == stream_info.leader_locator
231+
232+
management.delete_queue(stream_name)

tests/test_publisher.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
from rabbitmq_amqp_python_client import (
22
Connection,
33
Message,
4-
QueueSpecification,
5-
QueueType,
4+
QuorumQueueSpecification,
65
)
76

87

@@ -13,9 +12,7 @@ def test_bind_exchange_to_queue() -> None:
1312
queue_name = "test-queue"
1413
management = connection.management()
1514

16-
management.declare_queue(
17-
QueueSpecification(name=queue_name, queue_type=QueueType.quorum)
18-
)
15+
management.declare_queue(QuorumQueueSpecification(name=queue_name))
1916

2017
raised = False
2118

0 commit comments

Comments
 (0)