Skip to content

Commit fb2e67b

Browse files
authored
Change future value behavior of message state (Azure#22949)
* Change future value behavior * more tests * test active
1 parent 287f928 commit fb2e67b

File tree

2 files changed

+53
-6
lines changed

2 files changed

+53
-6
lines changed

sdk/servicebus/azure-servicebus/azure/servicebus/_common/message.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -971,18 +971,19 @@ def dead_letter_source(self):
971971

972972
@property
973973
def message_state(self):
974-
# type: () -> ServiceBusMessageState
974+
# type: () -> int
975975
"""
976976
Defaults to Active. Represents the message state of the message. Can be Active, Deferred.
977977
or Scheduled.
978978
979-
:rtype: ~azure.servicebus.ServiceBusMessageState
979+
:rtype: int
980980
"""
981981
try:
982982
message_state = self._raw_amqp_message.annotations.get(MESSAGE_STATE_NAME)
983-
if not message_state:
984-
return ServiceBusMessageState.ACTIVE
985-
return ServiceBusMessageState(message_state)
983+
try:
984+
return ServiceBusMessageState(message_state)
985+
except ValueError:
986+
return ServiceBusMessageState.ACTIVE if not message_state else message_state
986987
except AttributeError:
987988
return ServiceBusMessageState.ACTIVE
988989

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

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import uamqp
22
from datetime import datetime, timedelta
3-
from azure.servicebus import ServiceBusMessage, ServiceBusReceivedMessage
3+
from azure.servicebus import ServiceBusMessage, ServiceBusReceivedMessage, ServiceBusMessageState
44
from azure.servicebus._common.constants import (
55
_X_OPT_PARTITION_KEY,
66
_X_OPT_VIA_PARTITION_KEY,
@@ -56,6 +56,52 @@ def test_servicebus_received_message_repr():
5656
assert "content_type=None, correlation_id=None, to=None, reply_to=None, reply_to_session_id=None, subject=None,"
5757
assert "partition_key=r_key, scheduled_enqueue_time_utc" in repr_str
5858

59+
def test_servicebus_received_message_state():
60+
uamqp_received_message = uamqp.message.Message(
61+
body=b'data',
62+
annotations={
63+
b"x-opt-message-state": 3
64+
},
65+
properties=uamqp.message.MessageProperties()
66+
)
67+
received_message = ServiceBusReceivedMessage(uamqp_received_message, receiver=None)
68+
assert received_message.message_state == 3
69+
70+
uamqp_received_message = uamqp.message.Message(
71+
body=b'data',
72+
annotations={
73+
b"x-opt-message-state": 1
74+
},
75+
properties=uamqp.message.MessageProperties()
76+
)
77+
received_message = ServiceBusReceivedMessage(uamqp_received_message, receiver=None)
78+
assert received_message.message_state == ServiceBusMessageState.DEFERRED
79+
80+
uamqp_received_message = uamqp.message.Message(
81+
body=b'data',
82+
annotations={
83+
},
84+
properties=uamqp.message.MessageProperties()
85+
)
86+
received_message = ServiceBusReceivedMessage(uamqp_received_message, receiver=None)
87+
assert received_message.message_state == ServiceBusMessageState.ACTIVE
88+
89+
uamqp_received_message = uamqp.message.Message(
90+
body=b'data',
91+
properties=uamqp.message.MessageProperties()
92+
)
93+
received_message = ServiceBusReceivedMessage(uamqp_received_message, receiver=None)
94+
assert received_message.message_state == ServiceBusMessageState.ACTIVE
95+
96+
uamqp_received_message = uamqp.message.Message(
97+
body=b'data',
98+
annotations={
99+
b"x-opt-message-state": 0
100+
},
101+
properties=uamqp.message.MessageProperties()
102+
)
103+
received_message = ServiceBusReceivedMessage(uamqp_received_message, receiver=None)
104+
assert received_message.message_state == ServiceBusMessageState.ACTIVE
59105

60106
def test_servicebus_received_message_repr_with_props():
61107
uamqp_received_message = uamqp.message.Message(

0 commit comments

Comments
 (0)