async def test_async_mgmt_subscription_update_invalid(self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusAdministrationClient.from_connection_string(servicebus_namespace_connection_string) await clear_topics(mgmt_service) topic_name = "dfjfj" subscription_name = "kwqxc" try: topic_description = await mgmt_service.create_topic(topic_name) subscription_description = await mgmt_service.create_subscription(topic_name, subscription_name) # handle a null update properly. with pytest.raises(AttributeError): await mgmt_service.update_subscription(topic_name, None) # handle an invalid type update properly. with pytest.raises(AttributeError): await mgmt_service.update_subscription(topic_name, Exception("test")) # change the name to a topic that doesn't exist; should fail. subscription_description.name = "iewdm" with pytest.raises(HttpResponseError): await mgmt_service.update_subscription(topic_name, subscription_description) subscription_description.name = subscription_name # change the name to a topic with an invalid name exist; should fail. subscription_description.name = '' with pytest.raises(msrest.exceptions.ValidationError): await mgmt_service.update_subscription(topic_name, subscription_description) subscription_description.name = topic_name # change to a setting with an invalid value; should still fail. subscription_description.lock_duration = datetime.timedelta(days=25) with pytest.raises(HttpResponseError): await mgmt_service.update_subscription(topic_name, subscription_description) subscription_description.lock_duration = datetime.timedelta(minutes=5) finally: await mgmt_service.delete_subscription(topic_name, subscription_name) await mgmt_service.delete_topic(topic_name)
async def test_async_mgmt_queue_delete_negtive( self, servicebus_namespace_connection_string): mgmt_service = ServiceBusAdministrationClient.from_connection_string( servicebus_namespace_connection_string) await clear_queues(mgmt_service) await mgmt_service.create_queue("test_queue") queues = await async_pageable_to_list(mgmt_service.list_queues()) assert len(queues) == 1 await mgmt_service.delete_queue("test_queue") queues = await async_pageable_to_list(mgmt_service.list_queues()) assert len(queues) == 0 with pytest.raises(ResourceNotFoundError): await mgmt_service.delete_queue("test_queue") with pytest.raises(ResourceNotFoundError): await mgmt_service.delete_queue("non_existing_queue") with pytest.raises(ValueError): await mgmt_service.delete_queue("") with pytest.raises(TypeError): await mgmt_service.delete_queue(queue_name=None)
async def test_async_mgmt_topic_delete( self, servicebus_namespace_connection_string): mgmt_service = ServiceBusAdministrationClient.from_connection_string( servicebus_namespace_connection_string) await clear_topics(mgmt_service) await mgmt_service.create_topic('test_topic') topics = await async_pageable_to_list(mgmt_service.list_topics()) assert len(topics) == 1 await mgmt_service.create_topic('txt/.-_123') topics = await async_pageable_to_list(mgmt_service.list_topics()) assert len(topics) == 2 description = await mgmt_service.get_topic('test_topic') await mgmt_service.delete_topic(description.name) topics = await async_pageable_to_list(mgmt_service.list_topics()) assert len(topics) == 1 and topics[0].name == 'txt/.-_123' description = await mgmt_service.get_topic('txt/.-_123') await mgmt_service.delete_topic(description.name) topics = await async_pageable_to_list(mgmt_service.list_topics()) assert len(topics) == 0
async def test_mgmt_queue_async_update_dict_success( self, servicebus_namespace_connection_string, servicebus_namespace, **kwargs): mgmt_service = ServiceBusAdministrationClient.from_connection_string( servicebus_namespace_connection_string) await clear_queues(mgmt_service) queue_name = "fjruid" queue_description = await mgmt_service.create_queue(queue_name) queue_description_dict = dict(queue_description) try: # Try updating one setting. queue_description_dict["lock_duration"] = datetime.timedelta( minutes=2) await mgmt_service.update_queue(queue_description_dict) queue_description = await mgmt_service.get_queue(queue_name) assert queue_description.lock_duration == datetime.timedelta( minutes=2) # Now try updating all settings. queue_description_dict = dict(queue_description) queue_description_dict["auto_delete_on_idle"] = datetime.timedelta( minutes=10) queue_description_dict[ "dead_lettering_on_message_expiration"] = True queue_description_dict[ "default_message_time_to_live"] = datetime.timedelta( minutes=11) queue_description_dict[ "duplicate_detection_history_time_window"] = datetime.timedelta( minutes=12) queue_description_dict["enable_batched_operations"] = True queue_description_dict["enable_express"] = True #queue_description_dict["enable_partitioning"] = True # Cannot be changed after creation queue_description_dict["lock_duration"] = datetime.timedelta( seconds=13) queue_description_dict["max_delivery_count"] = 14 queue_description_dict["max_size_in_megabytes"] = 3072 queue_description_dict[ "forward_to"] = "sb://{}.servicebus.windows.net/{}".format( servicebus_namespace.name, queue_name) queue_description_dict[ "forward_dead_lettered_messages_to"] = "sb://{}.servicebus.windows.net/{}".format( servicebus_namespace.name, queue_name) #queue_description_dict["requires_duplicate_detection"] = True # Read only #queue_description_dict["requires_session"] = True # Cannot be changed after creation await mgmt_service.update_queue(queue_description_dict) queue_description = await mgmt_service.get_queue(queue_name) assert queue_description.auto_delete_on_idle == datetime.timedelta( minutes=10) assert queue_description.dead_lettering_on_message_expiration == True assert queue_description.default_message_time_to_live == datetime.timedelta( minutes=11) assert queue_description.duplicate_detection_history_time_window == datetime.timedelta( minutes=12) assert queue_description.enable_batched_operations == True assert queue_description.enable_express == True #assert queue_description.enable_partitioning == True assert queue_description.lock_duration == datetime.timedelta( seconds=13) assert queue_description.max_delivery_count == 14 assert queue_description.max_size_in_megabytes == 3072 assert queue_description.forward_to.endswith( ".servicebus.windows.net/{}".format(queue_name)) # Note: We endswith to avoid the fact that the servicebus_namespace_name is replacered locally but not in the properties bag, and still test this. assert queue_description.forward_dead_lettered_messages_to.endswith( ".servicebus.windows.net/{}".format(queue_name)) #assert queue_description.requires_duplicate_detection == True #assert queue_description.requires_session == True finally: await mgmt_service.delete_queue(queue_name)
async def test_async_mgmt_queue_update_success( self, servicebus_namespace_connection_string, servicebus_namespace, **kwargs): mgmt_service = ServiceBusAdministrationClient.from_connection_string( servicebus_namespace_connection_string) await clear_queues(mgmt_service) queue_name = "ewuidfj" topic_name = "dkfjaks" queue_description = await mgmt_service.create_queue(queue_name) await mgmt_service.create_topic(topic_name) try: # Try updating one setting. queue_description.lock_duration = datetime.timedelta(minutes=2) await mgmt_service.update_queue(queue_description) queue_description = await mgmt_service.get_queue(queue_name) assert queue_description.lock_duration == datetime.timedelta( minutes=2) # Update forwarding settings with entity name. queue_description.forward_to = topic_name queue_description.forward_dead_lettered_messages_to = topic_name await mgmt_service.update_queue(queue_description) queue_description = await mgmt_service.get_queue(queue_name) assert queue_description.forward_dead_lettered_messages_to.endswith( ".servicebus.windows.net/{}".format(topic_name)) assert queue_description.forward_to.endswith( ".servicebus.windows.net/{}".format(topic_name)) # Update forwarding settings with None. queue_description.forward_to = None queue_description.forward_dead_lettered_messages_to = None await mgmt_service.update_queue(queue_description) queue_description = await mgmt_service.get_queue(queue_name) assert queue_description.forward_dead_lettered_messages_to is None assert queue_description.forward_to is None # Now try updating all settings. queue_description.auto_delete_on_idle = datetime.timedelta( minutes=10) queue_description.dead_lettering_on_message_expiration = True queue_description.default_message_time_to_live = datetime.timedelta( minutes=11) queue_description.duplicate_detection_history_time_window = datetime.timedelta( minutes=12) queue_description.enable_batched_operations = True queue_description.enable_express = True #queue_description.enable_partitioning = True # Cannot be changed after creation queue_description.lock_duration = datetime.timedelta(seconds=13) queue_description.max_delivery_count = 14 queue_description.max_size_in_megabytes = 3072 queue_description.forward_to = "sb://{}.servicebus.windows.net/{}".format( servicebus_namespace.name, queue_name) queue_description.forward_dead_lettered_messages_to = "sb://{}.servicebus.windows.net/{}".format( servicebus_namespace.name, queue_name) #queue_description.requires_duplicate_detection = True # Read only #queue_description.requires_session = True # Cannot be changed after creation await mgmt_service.update_queue(queue_description) queue_description = await mgmt_service.get_queue(queue_name) assert queue_description.auto_delete_on_idle == datetime.timedelta( minutes=10) assert queue_description.dead_lettering_on_message_expiration == True assert queue_description.default_message_time_to_live == datetime.timedelta( minutes=11) assert queue_description.duplicate_detection_history_time_window == datetime.timedelta( minutes=12) assert queue_description.enable_batched_operations == True assert queue_description.enable_express == True #assert queue_description.enable_partitioning == True assert queue_description.lock_duration == datetime.timedelta( seconds=13) assert queue_description.max_delivery_count == 14 assert queue_description.max_size_in_megabytes == 3072 assert queue_description.forward_to.endswith( ".servicebus.windows.net/{}".format(queue_name)) # Note: We endswith to avoid the fact that the servicebus_namespace_name is replacered locally but not in the properties bag, and still test this. assert queue_description.forward_dead_lettered_messages_to.endswith( ".servicebus.windows.net/{}".format(queue_name)) #assert queue_description.requires_duplicate_detection == True #assert queue_description.requires_session == True queue_description.auto_delete_on_idle = "PT10M1S" queue_description.default_message_time_to_live = "PT11M2S" queue_description.duplicate_detection_history_time_window = "PT12M3S" await mgmt_service.update_queue(queue_description) queue_description = await mgmt_service.get_queue(queue_name) assert queue_description.auto_delete_on_idle == datetime.timedelta( minutes=10, seconds=1) assert queue_description.default_message_time_to_live == datetime.timedelta( minutes=11, seconds=2) assert queue_description.duplicate_detection_history_time_window == datetime.timedelta( minutes=12, seconds=3) finally: await mgmt_service.delete_queue(queue_name) await mgmt_service.delete_topic(topic_name) mgmt_service.close()
async def test_async_mgmt_queue_create_with_queue_description( self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusAdministrationClient.from_connection_string( servicebus_namespace_connection_string) await clear_queues(mgmt_service) queue_name = "dkldf" queue_name_2 = "vjiqjx" topic_name = "aghadh" await mgmt_service.create_topic(topic_name) await mgmt_service.create_queue( queue_name, auto_delete_on_idle=datetime.timedelta(minutes=10), dead_lettering_on_message_expiration=True, default_message_time_to_live=datetime.timedelta(minutes=11), duplicate_detection_history_time_window=datetime.timedelta( minutes=12), forward_dead_lettered_messages_to=topic_name, forward_to=topic_name, enable_batched_operations=True, enable_express=True, enable_partitioning=True, lock_duration=datetime.timedelta(seconds=13), max_delivery_count=14, max_size_in_megabytes=3072, #requires_duplicate_detection=True, requires_session=True) await mgmt_service.create_queue( queue_name_2, auto_delete_on_idle="PT10M1S", dead_lettering_on_message_expiration=True, default_message_time_to_live="PT11M2S", duplicate_detection_history_time_window="PT12M3S", enable_batched_operations=True, enable_express=True, enable_partitioning=True, forward_dead_lettered_messages_to=topic_name, forward_to=topic_name, lock_duration="PT13S", max_delivery_count=14, max_size_in_megabytes=3072, requires_session=True) try: queue = await mgmt_service.get_queue(queue_name) assert queue.name == queue_name assert queue.auto_delete_on_idle == datetime.timedelta(minutes=10) assert queue.dead_lettering_on_message_expiration == True assert queue.default_message_time_to_live == datetime.timedelta( minutes=11) assert queue.duplicate_detection_history_time_window == datetime.timedelta( minutes=12) assert queue.enable_batched_operations == True assert queue.forward_dead_lettered_messages_to.endswith( ".servicebus.windows.net/{}".format(topic_name)) assert queue.forward_to.endswith( ".servicebus.windows.net/{}".format(topic_name)) assert queue.enable_express == True assert queue.enable_partitioning == True assert queue.lock_duration == datetime.timedelta(seconds=13) assert queue.max_delivery_count == 14 assert queue.max_size_in_megabytes % 3072 == 0 #assert queue.requires_duplicate_detection == True assert queue.requires_session == True queue2 = await mgmt_service.get_queue(queue_name_2) assert queue2.name == queue_name_2 assert queue2.auto_delete_on_idle == datetime.timedelta(minutes=10, seconds=1) assert queue2.dead_lettering_on_message_expiration == True assert queue2.default_message_time_to_live == datetime.timedelta( minutes=11, seconds=2) assert queue2.duplicate_detection_history_time_window == datetime.timedelta( minutes=12, seconds=3) assert queue2.enable_batched_operations == True assert queue2.enable_express == True assert queue2.enable_partitioning == True assert queue2.forward_dead_lettered_messages_to.endswith( ".servicebus.windows.net/{}".format(topic_name)) assert queue2.forward_to.endswith( ".servicebus.windows.net/{}".format(topic_name)) assert queue2.lock_duration == datetime.timedelta(seconds=13) assert queue2.max_delivery_count == 14 assert queue2.max_size_in_megabytes % 3072 == 0 assert queue2.requires_session == True finally: await mgmt_service.delete_queue(queue_name) await mgmt_service.delete_queue(queue_name_2) await mgmt_service.delete_topic(topic_name) await mgmt_service.close()
async def test_async_mgmt_rule_create(self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusAdministrationClient.from_connection_string(servicebus_namespace_connection_string) await clear_topics(mgmt_service) topic_name = "topic_testaddf" subscription_name = "sub_testkkk" rule_name_1 = 'test_rule_1' rule_name_2 = 'test_rule_2' rule_name_3 = 'test_rule_3' rule_name_4 = 'test_rule_4' correlation_fitler = CorrelationRuleFilter(correlation_id='testcid', properties={ "key_string": "str1", "key_int": 2, "key_long": INT32_MAX_VALUE + 3, "key_bool": False, "key_datetime": datetime(2020, 7, 5, 11, 12, 13), "key_duration": timedelta(days=1, hours=2, minutes=3) }) sql_rule_action = SqlRuleAction(sql_expression="SET Priority = @param", parameters={ "@param": datetime(2020, 7, 5, 11, 12, 13), }) sql_filter = SqlRuleFilter("Priority = @param1", parameters={ "@param1": "str1", }) bool_filter = TrueRuleFilter() try: await mgmt_service.create_topic(topic_name) await mgmt_service.create_subscription(topic_name, subscription_name) await mgmt_service.create_rule(topic_name, subscription_name, rule_name_1, filter=correlation_fitler, action=sql_rule_action) rule_desc = await mgmt_service.get_rule(topic_name, subscription_name, rule_name_1) rule_properties = rule_desc.filter.properties assert type(rule_desc.filter) == CorrelationRuleFilter assert rule_desc.filter.correlation_id == 'testcid' assert rule_desc.action.sql_expression == "SET Priority = @param" assert rule_desc.action.parameters["@param"] == datetime(2020, 7, 5, 11, 12, 13) assert rule_properties["key_string"] == "str1" assert rule_properties["key_int"] == 2 assert rule_properties["key_long"] == INT32_MAX_VALUE + 3 assert rule_properties["key_bool"] is False assert rule_properties["key_datetime"] == datetime(2020, 7, 5, 11, 12, 13) assert rule_properties["key_duration"] == timedelta(days=1, hours=2, minutes=3) await mgmt_service.create_rule(topic_name, subscription_name, rule_name_2, filter=sql_filter) rule_desc = await mgmt_service.get_rule(topic_name, subscription_name, rule_name_2) assert type(rule_desc.filter) == SqlRuleFilter assert rule_desc.filter.sql_expression == "Priority = @param1" assert rule_desc.filter.parameters["@param1"] == "str1" await mgmt_service.create_rule(topic_name, subscription_name, rule_name_3, filter=bool_filter) rule_desc = await mgmt_service.get_rule(topic_name, subscription_name, rule_name_3) assert type(rule_desc.filter) == TrueRuleFilter await mgmt_service.create_rule(topic_name, subscription_name, rule_name_4) rule_desc = await mgmt_service.get_rule(topic_name, subscription_name, rule_name_4) assert type(rule_desc.filter) == TrueRuleFilter finally: await mgmt_service.delete_rule(topic_name, subscription_name, rule_name_1) await mgmt_service.delete_rule(topic_name, subscription_name, rule_name_2) await mgmt_service.delete_rule(topic_name, subscription_name, rule_name_3) await mgmt_service.delete_rule(topic_name, subscription_name, rule_name_4) await mgmt_service.delete_subscription(topic_name, subscription_name) await mgmt_service.delete_topic(topic_name)
async def test_async_mgmt_queue_premium_create_with_queue_description( self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusAdministrationClient.from_connection_string( servicebus_namespace_connection_string) await clear_queues(mgmt_service) queue_name = "dkldf" queue_name_2 = "vjiqjx" queue_name_3 = "rekocd" await mgmt_service.create_queue( queue_name, auto_delete_on_idle=datetime.timedelta(minutes=10), dead_lettering_on_message_expiration=True, default_message_time_to_live=datetime.timedelta(minutes=11), duplicate_detection_history_time_window=datetime.timedelta( minutes=12), enable_batched_operations=True, # enable_express=True, # enable_partitioning=True, lock_duration=datetime.timedelta(seconds=13), max_delivery_count=14, max_size_in_megabytes=3072, # requires_duplicate_detection=True, requires_session=True, max_message_size_in_kilobytes=12345) await mgmt_service.create_queue( queue_name_2, auto_delete_on_idle="PT10M1S", dead_lettering_on_message_expiration=True, default_message_time_to_live="PT11M2S", duplicate_detection_history_time_window="PT12M3S", enable_batched_operations=True, lock_duration="PT13S", max_delivery_count=14, max_size_in_megabytes=3072, requires_session=True ) # default max_message_size_in_kilobytes is 1024 with pytest.raises(HttpResponseError): await mgmt_service.create_queue( queue_name_3, max_message_size_in_kilobytes=1023 # min allowed is 1024 ) with pytest.raises(HttpResponseError): await mgmt_service.create_queue( queue_name_3, max_message_size_in_kilobytes=102401 # max allowed is 102400 ) try: queue = await mgmt_service.get_queue(queue_name) assert queue.name == queue_name assert queue.auto_delete_on_idle == datetime.timedelta(minutes=10) assert queue.dead_lettering_on_message_expiration == True assert queue.default_message_time_to_live == datetime.timedelta( minutes=11) assert queue.duplicate_detection_history_time_window == datetime.timedelta( minutes=12) assert queue.enable_batched_operations == True # assert queue.enable_express == True # assert queue.enable_partitioning == True assert queue.lock_duration == datetime.timedelta(seconds=13) assert queue.max_delivery_count == 14 assert queue.max_size_in_megabytes % 3072 == 0 # assert queue.requires_duplicate_detection == True assert queue.requires_session == True assert queue.max_message_size_in_kilobytes == 12345 queue_2 = await mgmt_service.get_queue(queue_name_2) assert queue_2.name == queue_name_2 assert queue_2.auto_delete_on_idle == datetime.timedelta( minutes=10, seconds=1) assert queue_2.dead_lettering_on_message_expiration == True assert queue_2.default_message_time_to_live == datetime.timedelta( minutes=11, seconds=2) assert queue_2.duplicate_detection_history_time_window == datetime.timedelta( minutes=12, seconds=3) assert queue_2.enable_batched_operations == True assert queue_2.lock_duration == datetime.timedelta(seconds=13) assert queue_2.max_delivery_count == 14 assert queue_2.max_size_in_megabytes % 3072 == 0 assert queue_2.requires_session == True assert queue_2.max_message_size_in_kilobytes == 1024 queue_2.max_message_size_in_kilobytes = 54321 await mgmt_service.update_queue(queue_2) queue_2_new = await mgmt_service.get_queue(queue_name_2) assert queue_2_new.max_message_size_in_kilobytes == 54321 finally: await mgmt_service.delete_queue(queue_name) await mgmt_service.delete_queue(queue_name_2) await mgmt_service.close()
def __init__(self, arguments): super().__init__(arguments) connection_string = self.get_from_env( "AZURE_SERVICEBUS_CONNECTION_STRING") self.async_mgmt_client = ServiceBusAdministrationClient.from_connection_string( connection_string)
async def test_async_mgmt_rule_list_and_delete( self, servicebus_namespace_connection_string): mgmt_service = ServiceBusAdministrationClient.from_connection_string( servicebus_namespace_connection_string) await clear_topics(mgmt_service) topic_name = "topic_testaddf" subscription_name = "sub_testkkk" rule_name_1 = 'test_rule_1' rule_name_2 = 'test_rule_2' rule_name_3 = 'test_rule_3' sql_filter_1 = SqlRuleFilter("Priority = 'low'") sql_filter_2 = SqlRuleFilter("Priority = 'middle'") sql_filter_3 = SqlRuleFilter("Priority = 'high'") try: await mgmt_service.create_topic(topic_name) await mgmt_service.create_subscription(topic_name, subscription_name) rules = await async_pageable_to_list( mgmt_service.list_rules(topic_name, subscription_name)) assert len(rules) == 1 # by default there is a True filter await mgmt_service.create_rule(topic_name, subscription_name, rule_name_1, filter=sql_filter_1) await mgmt_service.create_rule(topic_name, subscription_name, rule_name_2, filter=sql_filter_2) await mgmt_service.create_rule(topic_name, subscription_name, rule_name_3, filter=sql_filter_3) rules = await async_pageable_to_list( mgmt_service.list_rules(topic_name, subscription_name)) assert len(rules) == 3 + 1 await mgmt_service.delete_rule(topic_name, subscription_name, rule_name_2) rules = await async_pageable_to_list( mgmt_service.list_rules(topic_name, subscription_name)) assert len(rules) == 2 + 1 assert rules[0].name == "$Default" assert rules[1].name == rule_name_1 assert type(rules[1].filter) == SqlRuleFilter assert rules[1].filter.sql_expression == "Priority = 'low'" assert rules[2].name == rule_name_3 assert type(rules[2].filter) == SqlRuleFilter assert rules[2].filter.sql_expression == "Priority = 'high'" await mgmt_service.delete_rule(topic_name, subscription_name, rule_name_1) await mgmt_service.delete_rule(topic_name, subscription_name, rule_name_3) rules = await async_pageable_to_list( mgmt_service.list_rules(topic_name, subscription_name)) assert len(rules) == 1 finally: await mgmt_service.delete_subscription(topic_name, subscription_name) await mgmt_service.delete_topic(topic_name)
async def test_async_mgmt_queue_list_with_parameters(self, servicebus_namespace_connection_string): pytest.skip("start_idx and max_count are currently removed, they might come back in the future.") mgmt_service = ServiceBusAdministrationClient.from_connection_string(servicebus_namespace_connection_string) await run_test_async_mgmt_list_with_parameters(AsyncMgmtQueueListTestHelper(mgmt_service))
async def test_async_mgmt_subscription_update_success( self, servicebus_namespace_connection_string, servicebus_namespace, **kwargs): mgmt_service = ServiceBusAdministrationClient.from_connection_string( servicebus_namespace_connection_string) await clear_topics(mgmt_service) topic_name = "fjrui" subscription_name = "eqkovc" try: topic_description = await mgmt_service.create_topic(topic_name) subscription_description = await mgmt_service.create_subscription( topic_description.name, subscription_name) # Try updating one setting. subscription_description.lock_duration = datetime.timedelta( minutes=2) await mgmt_service.update_subscription(topic_description.name, subscription_description) subscription_description = await mgmt_service.get_subscription( topic_name, subscription_name) assert subscription_description.lock_duration == datetime.timedelta( minutes=2) # Now try updating all settings. subscription_description.auto_delete_on_idle = datetime.timedelta( minutes=10) subscription_description.dead_lettering_on_message_expiration = True subscription_description.default_message_time_to_live = datetime.timedelta( minutes=11) subscription_description.lock_duration = datetime.timedelta( seconds=12) subscription_description.max_delivery_count = 14 # topic_description.enable_partitioning = True # Cannot be changed after creation # topic_description.requires_session = True # Cannot be changed after creation await mgmt_service.update_subscription(topic_description.name, subscription_description) subscription_description = await mgmt_service.get_subscription( topic_description.name, subscription_name) assert subscription_description.auto_delete_on_idle == datetime.timedelta( minutes=10) assert subscription_description.dead_lettering_on_message_expiration == True assert subscription_description.default_message_time_to_live == datetime.timedelta( minutes=11) assert subscription_description.max_delivery_count == 14 assert subscription_description.lock_duration == datetime.timedelta( seconds=12) # assert topic_description.enable_partitioning == True # assert topic_description.requires_session == True # Finally, test forward_to (separately, as it changes auto_delete_on_idle when you enable it.) subscription_description.forward_to = "sb://{}.servicebus.windows.net/{}".format( servicebus_namespace.name, topic_name) subscription_description.forward_dead_lettered_messages_to = "sb://{}.servicebus.windows.net/{}".format( servicebus_namespace.name, topic_name) await mgmt_service.update_subscription(topic_description.name, subscription_description) subscription_description = await mgmt_service.get_subscription( topic_description.name, subscription_name) # Note: We endswith to avoid the fact that the servicebus_namespace_name is replacered locally but not in the properties bag, and still test this. assert subscription_description.forward_to.endswith( ".servicebus.windows.net/{}".format(topic_name)) assert subscription_description.forward_dead_lettered_messages_to.endswith( ".servicebus.windows.net/{}".format(topic_name)) finally: await mgmt_service.delete_subscription(topic_name, subscription_name) await mgmt_service.delete_topic(topic_name)
async def test_mgmt_topic_async_update_dict_success(self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusAdministrationClient.from_connection_string(servicebus_namespace_connection_string) await clear_topics(mgmt_service) topic_name = "fjruid" try: topic_description = await mgmt_service.create_topic(topic_name) topic_description_dict = dict(topic_description) # Try updating one setting. topic_description_dict["default_message_time_to_live"] = datetime.timedelta(minutes=2) await mgmt_service.update_topic(topic_description_dict) topic_description = await mgmt_service.get_topic(topic_name) assert topic_description.default_message_time_to_live == datetime.timedelta(minutes=2) # Now try updating all settings. topic_description_dict = dict(topic_description) topic_description_dict["auto_delete_on_idle"] = datetime.timedelta(minutes=10) topic_description_dict["default_message_time_to_live"] = datetime.timedelta(minutes=11) topic_description_dict["duplicate_detection_history_time_window"] = datetime.timedelta(minutes=12) topic_description_dict["enable_batched_operations"] = True topic_description_dict["enable_express"] = True # topic_description_dict["enable_partitioning"] = True # Cannot be changed after creation topic_description_dict["max_size_in_megabytes"] = 3072 # topic_description_dict["requires_duplicate_detection"] = True # Read only # topic_description_dict["requires_session"] = True # Cannot be changed after creation topic_description_dict["support_ordering"] = True await mgmt_service.update_topic(topic_description_dict) topic_description = await mgmt_service.get_topic(topic_name) assert topic_description.auto_delete_on_idle == datetime.timedelta(minutes=10) assert topic_description.default_message_time_to_live == datetime.timedelta(minutes=11) assert topic_description.duplicate_detection_history_time_window == datetime.timedelta(minutes=12) assert topic_description.enable_batched_operations == True assert topic_description.enable_express == True # assert topic_description.enable_partitioning == True assert topic_description.max_size_in_megabytes == 3072 # assert topic_description.requires_duplicate_detection == True # assert topic_description.requires_session == True assert topic_description.support_ordering == True # updating all settings with keyword arguments. await mgmt_service.update_topic( dict(topic_description), auto_delete_on_idle=datetime.timedelta(minutes=14), default_message_time_to_live=datetime.timedelta(minutes=15), duplicate_detection_history_time_window=datetime.timedelta(minutes=16), enable_batched_operations=False, enable_express=False, max_size_in_megabytes=2048, support_ordering=False ) topic_description = await mgmt_service.get_topic(topic_name) assert topic_description.auto_delete_on_idle == datetime.timedelta(minutes=14) assert topic_description.default_message_time_to_live == datetime.timedelta(minutes=15) assert topic_description.duplicate_detection_history_time_window == datetime.timedelta(minutes=16) assert topic_description.enable_batched_operations == False assert topic_description.enable_express == False # assert topic_description.enable_partitioning == True assert topic_description.max_size_in_megabytes == 2048 # assert topic_description.requires_duplicate_detection == True # assert topic_description.requires_session == True assert topic_description.support_ordering == False finally: await mgmt_service.delete_topic(topic_name) await mgmt_service.close()
async def test_async_mgmt_topic_premium_create_with_topic_description(self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusAdministrationClient.from_connection_string(servicebus_namespace_connection_string) await clear_topics(mgmt_service) topic_name = "iweidk" topic_name_2 = "dkozq" topic_name_3 = "rekocd" try: await mgmt_service.create_topic( topic_name=topic_name, auto_delete_on_idle=datetime.timedelta(minutes=10), default_message_time_to_live=datetime.timedelta(minutes=11), duplicate_detection_history_time_window=datetime.timedelta(minutes=12), enable_batched_operations=True, max_size_in_megabytes=3072, max_message_size_in_kilobytes=12345 ) topic = await mgmt_service.get_topic(topic_name) assert topic.name == topic_name assert topic.auto_delete_on_idle == datetime.timedelta(minutes=10) assert topic.default_message_time_to_live == datetime.timedelta(minutes=11) assert topic.duplicate_detection_history_time_window == datetime.timedelta(minutes=12) assert topic.enable_batched_operations assert topic.max_size_in_megabytes % 3072 == 0 assert topic.max_message_size_in_kilobytes == 12345 await mgmt_service.create_topic( topic_name=topic_name_2, auto_delete_on_idle="PT10M", default_message_time_to_live="PT11M", duplicate_detection_history_time_window="PT12M", enable_batched_operations=True, max_size_in_megabytes=3072 ) topic_2 = await mgmt_service.get_topic(topic_name_2) assert topic_2.name == topic_name_2 assert topic_2.auto_delete_on_idle == datetime.timedelta(minutes=10) assert topic_2.default_message_time_to_live == datetime.timedelta(minutes=11) assert topic_2.duplicate_detection_history_time_window == datetime.timedelta(minutes=12) assert topic_2.enable_batched_operations assert topic_2.max_size_in_megabytes % 3072 == 0 assert topic_2.max_message_size_in_kilobytes == 1024 with pytest.raises(HttpResponseError): await mgmt_service.create_topic( topic_name=topic_name_3, max_message_size_in_kilobytes=1023 ) with pytest.raises(HttpResponseError): await mgmt_service.create_topic( topic_name=topic_name_3, max_message_size_in_kilobytes=102401 ) topic_2.max_message_size_in_kilobytes = 54321 await mgmt_service.update_topic(topic_2) topic_2_new = await mgmt_service.get_topic(topic_name_2) assert topic_2_new.max_message_size_in_kilobytes == 54321 finally: await mgmt_service.delete_topic(topic_name) await mgmt_service.delete_topic(topic_name_2)
async def test_async_mgmt_topic_update_success( self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusAdministrationClient.from_connection_string( servicebus_namespace_connection_string) await clear_topics(mgmt_service) topic_name = "fjrui" try: topic_description = await mgmt_service.create_topic(topic_name) # Try updating one setting. topic_description.default_message_time_to_live = datetime.timedelta( minutes=2) await mgmt_service.update_topic(topic_description) topic_description = await mgmt_service.get_topic(topic_name) assert topic_description.default_message_time_to_live == datetime.timedelta( minutes=2) # Now try updating all settings. topic_description.auto_delete_on_idle = datetime.timedelta( minutes=10) topic_description.default_message_time_to_live = datetime.timedelta( minutes=11) topic_description.duplicate_detection_history_time_window = datetime.timedelta( minutes=12) topic_description.enable_batched_operations = True topic_description.enable_express = True # topic_description.enable_partitioning = True # Cannot be changed after creation topic_description.max_size_in_megabytes = 3072 # topic_description.requires_duplicate_detection = True # Read only # topic_description.requires_session = True # Cannot be changed after creation topic_description.support_ordering = True await mgmt_service.update_topic(topic_description) topic_description = await mgmt_service.get_topic(topic_name) assert topic_description.auto_delete_on_idle == datetime.timedelta( minutes=10) assert topic_description.default_message_time_to_live == datetime.timedelta( minutes=11) assert topic_description.duplicate_detection_history_time_window == datetime.timedelta( minutes=12) assert topic_description.enable_batched_operations == True assert topic_description.enable_express == True # assert topic_description.enable_partitioning == True assert topic_description.max_size_in_megabytes == 3072 # assert topic_description.requires_duplicate_detection == True # assert topic_description.requires_session == True assert topic_description.support_ordering == True topic_description.auto_delete_on_idle = "PT10M1S" topic_description.default_message_time_to_live = "PT11M2S" topic_description.duplicate_detection_history_time_window = "PT12M3S" await mgmt_service.update_topic(topic_description) topic_description = await mgmt_service.get_topic(topic_name) assert topic_description.auto_delete_on_idle == datetime.timedelta( minutes=10, seconds=1) assert topic_description.default_message_time_to_live == datetime.timedelta( minutes=11, seconds=2) assert topic_description.duplicate_detection_history_time_window == datetime.timedelta( minutes=12, seconds=3) finally: await mgmt_service.delete_topic(topic_name)