Skip to content

Commit 5cf3b46

Browse files
authored
[ServiceBus] unskip complete message over diff recvr test for uamqp (#37192)
* unskip + fix failing * remove whitespace * fix failing tests * bump asyncio sleep for complete test * only time/asyncio sleep if uamqp * missing await * remove uamqp from dev reqs
1 parent 66ccfb8 commit 5cf3b46

File tree

5 files changed

+67
-56
lines changed

5 files changed

+67
-56
lines changed

sdk/servicebus/azure-servicebus/dev_requirements.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,4 @@
44
azure-mgmt-servicebus~=8.0.0
55
aiohttp>=3.0
66
websocket-client
7-
azure-mgmt-resource<=16.0.0
8-
uamqp
7+
azure-mgmt-resource<=16.0.0

sdk/servicebus/azure-servicebus/tests/async_tests/test_queues_async.py

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2965,29 +2965,30 @@ async def test_state_deferred_async(self, uamqp_transport, *, servicebus_namespa
29652965
@pytest.mark.parametrize("uamqp_transport", uamqp_transport_params, ids=uamqp_transport_ids)
29662966
@ArgPasserAsync()
29672967
async def test_queue_complete_message_on_different_receiver_async(self, uamqp_transport, *, servicebus_namespace_connection_string=None, servicebus_queue=None, **kwargs):
2968-
# Skipping if uamqp: This bug will not be fixed in uamqp.
2969-
if not uamqp_transport:
2970-
async with ServiceBusClient.from_connection_string(
2971-
servicebus_namespace_connection_string, uamqp_transport=uamqp_transport) as sb_client:
2972-
sender = sb_client.get_queue_sender(servicebus_queue.name)
2973-
receiver1 = sb_client.get_queue_receiver(servicebus_queue.name)
2974-
receiver2 = sb_client.get_queue_receiver(servicebus_queue.name)
2975-
2976-
async with sender, receiver1, receiver2:
2977-
await sender.send_messages([ServiceBusMessage('test') for _ in range(5)])
2978-
received_msgs = []
2979-
# the amount of messages returned by receive call is not stable, especially in live tests
2980-
# of different os platforms, this is why a while loop is used here to receive the specific
2981-
# amount of message we want to receive
2982-
while len(received_msgs) < 5:
2983-
# start receives on the first receiver and complete them on the other one.
2984-
# the messages should settle over the management of the second receiver.
2985-
for msg in await receiver1.receive_messages(max_message_count=10, max_wait_time=5):
2986-
await receiver2.complete_message(msg)
2987-
received_msgs.append(msg)
2988-
2989-
assert len(received_msgs) == 5
2990-
2991-
messages_in_queue = await receiver1.peek_messages()
2992-
2993-
assert len(messages_in_queue) == 0
2968+
async with ServiceBusClient.from_connection_string(
2969+
servicebus_namespace_connection_string, uamqp_transport=uamqp_transport) as sb_client:
2970+
sender = sb_client.get_queue_sender(servicebus_queue.name)
2971+
receiver1 = sb_client.get_queue_receiver(servicebus_queue.name)
2972+
receiver2 = sb_client.get_queue_receiver(servicebus_queue.name)
2973+
2974+
async with sender, receiver1, receiver2:
2975+
await sender.send_messages([ServiceBusMessage('test') for _ in range(5)])
2976+
received_msgs = []
2977+
# the amount of messages returned by receive call is not stable, especially in live tests
2978+
# of different os platforms, this is why a while loop is used here to receive the specific
2979+
# amount of message we want to receive
2980+
while len(received_msgs) < 5:
2981+
# start receives on the first receiver and complete them on the other one.
2982+
# the messages should settle over the management of the second receiver.
2983+
for msg in await receiver1.receive_messages(max_message_count=10, max_wait_time=5):
2984+
await receiver2.complete_message(msg)
2985+
received_msgs.append(msg)
2986+
2987+
assert len(received_msgs) == 5
2988+
2989+
if uamqp_transport:
2990+
# wait to make sure message completed, since uamqp is taking longer in the CI
2991+
await asyncio.sleep(20)
2992+
messages_in_queue = await receiver1.peek_messages()
2993+
2994+
assert len(messages_in_queue) == 0

sdk/servicebus/azure-servicebus/tests/async_tests/test_sb_client_async.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -688,7 +688,12 @@ async def test_custom_endpoint_connection_verify_exception_async(self,
688688
uamqp_transport=uamqp_transport
689689
)
690690
async with client:
691-
with pytest.raises(ServiceBusConnectionError):
691+
if not uamqp_transport:
692+
error = ServiceBusConnectionError
693+
else:
694+
# if uamqp, catches an "Authorization timeout" error and raises ServiceBusError
695+
error = ServiceBusError
696+
with pytest.raises(error):
692697
async with client.get_queue_sender(servicebus_queue.name) as sender:
693698
await sender.send_messages(ServiceBusMessage("foo"))
694699

sdk/servicebus/azure-servicebus/tests/test_queues.py

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3381,29 +3381,30 @@ def test_state_deferred(self, uamqp_transport, *, servicebus_namespace=None, ser
33813381
@pytest.mark.parametrize("uamqp_transport", uamqp_transport_params, ids=uamqp_transport_ids)
33823382
@ArgPasser()
33833383
def test_queue_complete_message_on_different_receiver(self, uamqp_transport, *, servicebus_namespace_connection_string=None, servicebus_queue=None, **kwargs):
3384-
# Skipping if uamqp: This bug will not be fixed in uamqp.
3385-
if not uamqp_transport:
3386-
with ServiceBusClient.from_connection_string(
3387-
servicebus_namespace_connection_string, uamqp_transport=uamqp_transport) as sb_client:
3388-
sender = sb_client.get_queue_sender(servicebus_queue.name)
3389-
receiver1 = sb_client.get_queue_receiver(servicebus_queue.name)
3390-
receiver2 = sb_client.get_queue_receiver(servicebus_queue.name)
3391-
3392-
with sender, receiver1, receiver2:
3393-
sender.send_messages([ServiceBusMessage('test') for _ in range(5)])
3394-
received_msgs = []
3395-
# the amount of messages returned by receive call is not stable, especially in live tests
3396-
# of different os platforms, this is why a while loop is used here to receive the specific
3397-
# amount of message we want to receive
3398-
while len(received_msgs) < 5:
3399-
# start receives on the first receiver and complete them on the other one.
3400-
# the messages should settle over the management of the second receiver.
3401-
for msg in receiver1.receive_messages(max_message_count=10, max_wait_time=5):
3402-
receiver2.complete_message(msg)
3403-
received_msgs.append(msg)
3404-
3405-
assert len(received_msgs) == 5
3406-
3407-
messages_in_queue = receiver1.peek_messages()
3408-
3409-
assert len(messages_in_queue) == 0
3384+
with ServiceBusClient.from_connection_string(
3385+
servicebus_namespace_connection_string, uamqp_transport=uamqp_transport) as sb_client:
3386+
sender = sb_client.get_queue_sender(servicebus_queue.name)
3387+
receiver1 = sb_client.get_queue_receiver(servicebus_queue.name)
3388+
receiver2 = sb_client.get_queue_receiver(servicebus_queue.name)
3389+
3390+
with sender, receiver1, receiver2:
3391+
sender.send_messages([ServiceBusMessage('test') for _ in range(5)])
3392+
received_msgs = []
3393+
# the amount of messages returned by receive call is not stable, especially in live tests
3394+
# of different os platforms, this is why a while loop is used here to receive the specific
3395+
# amount of message we want to receive
3396+
while len(received_msgs) < 5:
3397+
# start receives on the first receiver and complete them on the other one.
3398+
# the messages should settle over the management of the second receiver.
3399+
for msg in receiver1.receive_messages(max_message_count=10, max_wait_time=5):
3400+
receiver2.complete_message(msg)
3401+
received_msgs.append(msg)
3402+
3403+
assert len(received_msgs) == 5
3404+
3405+
if uamqp_transport:
3406+
# wait to make sure message completed, since uamqp is taking longer in the CI
3407+
time.sleep(10)
3408+
messages_in_queue = receiver1.peek_messages()
3409+
3410+
assert len(messages_in_queue) == 0

sdk/servicebus/azure-servicebus/tests/test_sb_client.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -716,7 +716,12 @@ def test_custom_endpoint_connection_verify_exception(self,
716716
uamqp_transport=uamqp_transport
717717
)
718718
with client:
719-
with pytest.raises(ServiceBusConnectionError):
719+
if not uamqp_transport:
720+
error = ServiceBusConnectionError
721+
else:
722+
# if uamqp, catches an "Authorization timeout" error and raises ServiceBusError
723+
error = ServiceBusError
724+
with pytest.raises(error):
720725
with client.get_queue_sender(servicebus_queue.name) as sender:
721726
sender.send_messages(ServiceBusMessage("foo"))
722727

0 commit comments

Comments
 (0)