Skip to content

Commit 6959f6f

Browse files
author
DanielePalaia
committed
adding tests
1 parent a9af1cd commit 6959f6f

File tree

2 files changed

+70
-26
lines changed

2 files changed

+70
-26
lines changed

tests/http_requests.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,13 @@ def get_connections_names() -> list:
1515
return connection_names
1616

1717

18-
def delete_connections(connection_names: []) -> int:
18+
def delete_connections(connection_names: []) -> None:
1919
for connection_name in connection_names:
2020
request = (
2121
"http://guest:guest@localhost:15672/api/connections/"
2222
+ urllib.parse.quote(connection_name)
2323
)
24-
response = requests.delete(request, auth=HTTPBasicAuth("guest", "guest"))
25-
print("response code" + str(response))
26-
return response.status_code
24+
requests.delete(request, auth=HTTPBasicAuth("guest", "guest"))
2725

2826

2927
def delete_all_connections() -> None:

tests/test_publisher.py

Lines changed: 68 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,14 @@
55
ArgumentOutOfRangeException,
66
BindingSpecification,
77
Connection,
8+
ConnectionClosed,
89
ExchangeSpecification,
910
Message,
1011
QuorumQueueSpecification,
1112
)
1213

1314
from .http_requests import delete_all_connections
1415

15-
disconnected = False
16-
17-
18-
def on_disconnected():
19-
20-
print("disconnected")
21-
global disconnected
22-
disconnected = True
23-
2416

2517
def test_publish_queue(connection: Connection) -> None:
2618

@@ -143,31 +135,85 @@ def test_publish_purge(connection: Connection) -> None:
143135
assert message_purged == 20
144136

145137

146-
def test_disconnection() -> None:
147-
connection = Connection(
138+
def test_disconnection_reconnection() -> None:
139+
disconnected = False
140+
reconnected = False
141+
generic_exception_raised = False
142+
publisher = None
143+
queue_name = "test-queue"
144+
connection_test = None
145+
146+
time.sleep(60)
147+
148+
def on_disconnected():
149+
150+
nonlocal publisher
151+
nonlocal queue_name
152+
nonlocal connection_test
153+
154+
# reconnect
155+
if connection_test is not None:
156+
connection_test = Connection("amqp://guest:guest@localhost:5672/")
157+
connection_test.dial()
158+
159+
if publisher is not None:
160+
publisher = connection_test.publisher("/queues/" + queue_name)
161+
162+
nonlocal reconnected
163+
reconnected = True
164+
165+
connection_test = Connection(
148166
"amqp://guest:guest@localhost:5672/", on_disconnection_handler=on_disconnected
149167
)
150-
connection.dial()
168+
connection_test.dial()
151169
# delay
152-
time.sleep(10)
153-
messages_to_publish = 20
170+
time.sleep(5)
171+
messages_to_publish = 10000
154172
queue_name = "test-queue"
155-
management = connection.management()
173+
management = connection_test.management()
156174

157175
management.declare_queue(QuorumQueueSpecification(name=queue_name))
158176

159-
try:
160-
publisher = connection.publisher("/queues/" + queue_name)
177+
management.close()
178+
179+
publisher = connection_test.publisher("/queues/" + queue_name)
180+
while True:
181+
161182
for i in range(messages_to_publish):
162183
if i == 5:
163184
# simulate a disconnection
164185
delete_all_connections()
165-
publisher.publish(Message(body="test"))
186+
try:
187+
publisher.publish(Message(body="test"))
166188

167-
except Exception:
168-
pass
189+
except ConnectionClosed:
190+
disconnected = True
191+
continue
192+
193+
except Exception:
194+
generic_exception_raised = True
195+
196+
break
197+
198+
publisher.close()
199+
200+
# cleanup, we need to create a new connection as the previous one
201+
# was closed by the test
202+
203+
connection_test = Connection("amqp://guest:guest@localhost:5672/")
204+
connection_test.dial()
205+
206+
management = connection_test.management()
207+
208+
# purge the queue and check number of published messages
209+
message_purged = management.purge_queue(queue_name)
210+
211+
management.delete_queue(queue_name)
212+
management.close()
169213

170-
connection.close()
214+
connection_test.close()
171215

172-
global disconnected
216+
assert generic_exception_raised is False
173217
assert disconnected is True
218+
assert reconnected is True
219+
assert message_purged == messages_to_publish - 1

0 commit comments

Comments
 (0)