def test_mgmt_queue_list_with_negative_credential( self, servicebus_namespace, servicebus_namespace_key_name, servicebus_namespace_primary_key): # invalid_conn_str = 'Endpoint=sb://invalid.servicebus.windows.net/;SharedAccessKeyName=invalid;SharedAccessKey=invalid' # mgmt_service = ServiceBusManagementClient.from_connection_string(invalid_conn_str) # with pytest.raises(ServiceRequestError): # list(mgmt_service.list_queues()) # TODO: This negative test makes replay test fail. Need more investigation. Live test has no problem. invalid_conn_str = 'Endpoint=sb://{}.servicebus.windows.net/;SharedAccessKeyName=invalid;SharedAccessKey=invalid'.format( servicebus_namespace.name) mgmt_service = ServiceBusManagementClient.from_connection_string( invalid_conn_str) with pytest.raises(HttpResponseError): list(mgmt_service.list_queues()) # fully_qualified_namespace = 'invalid.servicebus.windows.net' # mgmt_service = ServiceBusManagementClient( # fully_qualified_namespace, # credential=ServiceBusSharedKeyCredential(servicebus_namespace_key_name, servicebus_namespace_primary_key) # ) # with pytest.raises(ServiceRequestError): # list(mgmt_service.list_queues()) fully_qualified_namespace = servicebus_namespace.name + '.servicebus.windows.net' mgmt_service = ServiceBusManagementClient( fully_qualified_namespace, credential=ServiceBusSharedKeyCredential("invalid", "invalid")) with pytest.raises(HttpResponseError): list(mgmt_service.list_queues())
def test_mgmt_queue_list_basic(self, servicebus_namespace_connection_string, servicebus_namespace, servicebus_namespace_key_name, servicebus_namespace_primary_key): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) clear_queues(mgmt_service) queues = list(mgmt_service.list_queues()) assert len(queues) == 0 mgmt_service.create_queue("test_queue") queues = list(mgmt_service.list_queues()) assert len(queues) == 1 and queues[0].name == "test_queue" mgmt_service.delete_queue("test_queue") queues = list(mgmt_service.list_queues()) assert len(queues) == 0 fully_qualified_namespace = servicebus_namespace.name + '.servicebus.windows.net' mgmt_service = ServiceBusManagementClient( fully_qualified_namespace, credential=ServiceBusSharedKeyCredential( servicebus_namespace_key_name, servicebus_namespace_primary_key)) queues = list(mgmt_service.list_queues()) assert len(queues) == 0 mgmt_service.create_queue("test_queue") queues = list(mgmt_service.list_queues()) assert len(queues) == 1 and queues[0].name == "test_queue" mgmt_service.delete_queue("test_queue") queues = list(mgmt_service.list_queues()) assert len(queues) == 0
def test_mgmt_subscription_get_runtime_info_basic( self, servicebus_namespace_connection_string): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) clear_topics(mgmt_service) topic_name = 'dcvxqa' subscription_name = 'xvazzag' mgmt_service.create_topic(topic_name) mgmt_service.create_subscription(topic_name, subscription_name) sub_runtime_info = mgmt_service.get_subscription_runtime_info( topic_name, subscription_name) assert sub_runtime_info assert sub_runtime_info.name == subscription_name assert sub_runtime_info.created_at is not None assert sub_runtime_info.accessed_at is not None assert sub_runtime_info.updated_at is not None assert sub_runtime_info.message_count_details assert sub_runtime_info.message_count_details.active_message_count == 0 assert sub_runtime_info.message_count_details.dead_letter_message_count == 0 assert sub_runtime_info.message_count_details.transfer_dead_letter_message_count == 0 assert sub_runtime_info.message_count_details.transfer_message_count == 0 assert sub_runtime_info.message_count_details.scheduled_message_count == 0 mgmt_service.delete_subscription(topic_name, subscription_name) mgmt_service.delete_topic(topic_name)
def test_mgmt_topic_list_runtime_info( self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) clear_topics(mgmt_service) topics = list(mgmt_service.list_topics()) topics_infos = list(mgmt_service.list_topics_runtime_info()) assert len(topics) == len(topics_infos) == 0 mgmt_service.create_topic("test_topic") topics = list(mgmt_service.list_topics()) topics_infos = list(mgmt_service.list_topics_runtime_info()) assert len(topics) == 1 and len(topics_infos) == 1 assert topics[0].name == topics_infos[0].name == "test_topic" info = topics_infos[0] assert info.accessed_at is not None assert info.updated_at is not None assert info.subscription_count is 0 assert info.message_count_details assert info.message_count_details.active_message_count == 0 assert info.message_count_details.dead_letter_message_count == 0 assert info.message_count_details.transfer_dead_letter_message_count == 0 assert info.message_count_details.transfer_message_count == 0 assert info.message_count_details.scheduled_message_count == 0 mgmt_service.delete_topic("test_topic") topics_infos = list(mgmt_service.list_topics_runtime_info()) assert len(topics_infos) == 0
def test_mgmt_rule_create_duplicate(self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) clear_topics(mgmt_service) topic_name = "dqkodq" subscription_name = 'kkaqo' rule_name = 'rule' sql_filter = SqlRuleFilter("Priority = 'low'") try: mgmt_service.create_topic(topic_name) mgmt_service.create_subscription(topic_name, subscription_name) mgmt_service.create_rule(topic_name, subscription_name, rule_name, filter=sql_filter) with pytest.raises(ResourceExistsError): mgmt_service.create_rule(topic_name, subscription_name, rule_name, filter=sql_filter) finally: mgmt_service.delete_rule(topic_name, subscription_name, rule_name) mgmt_service.delete_subscription(topic_name, subscription_name) mgmt_service.delete_topic(topic_name)
def test_mgmt_subscription_create_with_subscription_description(self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusManagementClient.from_connection_string(servicebus_namespace_connection_string) clear_topics(mgmt_service) topic_name = "iweidk" subscription_name = "kdosako" try: mgmt_service.create_topic(topic_name) mgmt_service.create_subscription( topic_name, name=subscription_name, auto_delete_on_idle=datetime.timedelta(minutes=10), dead_lettering_on_message_expiration=True, default_message_time_to_live=datetime.timedelta(minutes=11), enable_batched_operations=True, lock_duration=datetime.timedelta(seconds=13), max_delivery_count=14, requires_session=True ) subscription = mgmt_service.get_subscription(topic_name, subscription_name) assert subscription.name == subscription_name assert subscription.auto_delete_on_idle == datetime.timedelta(minutes=10) assert subscription.dead_lettering_on_message_expiration == True assert subscription.default_message_time_to_live == datetime.timedelta(minutes=11) assert subscription.enable_batched_operations == True assert subscription.lock_duration == datetime.timedelta(seconds=13) assert subscription.max_delivery_count == 14 assert subscription.requires_session == True finally: mgmt_service.delete_subscription(topic_name, subscription_name) mgmt_service.delete_topic(topic_name)
def test_mgmt_queue_list_runtime_info_basic( self, servicebus_namespace_connection_string): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) clear_queues(mgmt_service) queues = list(mgmt_service.list_queues()) queues_infos = list(mgmt_service.list_queues_runtime_info()) assert len(queues) == len(queues_infos) == 0 mgmt_service.create_queue("test_queue") queues = list(mgmt_service.list_queues()) queues_infos = list(mgmt_service.list_queues_runtime_info()) assert len(queues) == 1 and len(queues_infos) == 1 assert queues[0].name == queues_infos[0].name == "test_queue" info = queues_infos[0] assert info.size_in_bytes == 0 assert info.accessed_at is not None assert info.updated_at is not None assert info.total_message_count == 0 assert info.active_message_count == 0 assert info.dead_letter_message_count == 0 assert info.transfer_dead_letter_message_count == 0 assert info.transfer_message_count == 0 assert info.scheduled_message_count == 0 mgmt_service.delete_queue("test_queue") queues_infos = list(mgmt_service.list_queues_runtime_info()) assert len(queues_infos) == 0
def test_mgmt_topic_create_with_topic_description( self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) clear_topics(mgmt_service) topic_name = "iweidk" try: mgmt_service.create_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, enable_express=True, enable_partitioning=True, enable_subscription_partitioning=True, is_anonymous_accessible=True, max_size_in_megabytes=3072) topic = 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.enable_express assert topic.enable_partitioning assert topic.enable_subscription_partitioning assert topic.is_anonymous_accessible assert topic.max_size_in_megabytes % 3072 == 0 finally: mgmt_service.delete_topic(topic_name)
def test_mgmt_queue_get_runtime_info_basic( self, servicebus_namespace_connection_string): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) clear_queues(mgmt_service) mgmt_service.create_queue("test_queue") try: queue_runtime_info = mgmt_service.get_queue_runtime_info( "test_queue") assert queue_runtime_info assert queue_runtime_info.name == "test_queue" assert queue_runtime_info.size_in_bytes == 0 assert queue_runtime_info.created_at is not None assert queue_runtime_info.accessed_at is not None assert queue_runtime_info.updated_at is not None assert queue_runtime_info.total_message_count == 0 assert queue_runtime_info.active_message_count == 0 assert queue_runtime_info.dead_letter_message_count == 0 assert queue_runtime_info.transfer_dead_letter_message_count == 0 assert queue_runtime_info.transfer_message_count == 0 assert queue_runtime_info.scheduled_message_count == 0 finally: mgmt_service.delete_queue("test_queue")
def test_mgmt_subscription_delete(self, servicebus_namespace_connection_string): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) clear_topics(mgmt_service) topic_name = 'test_topicgda' subscription_name_1 = 'test_sub1da' subscription_name_2 = 'test_sub2gcv' mgmt_service.create_topic(topic_name) mgmt_service.create_subscription(topic_name, subscription_name_1) subscriptions = list(mgmt_service.list_subscriptions(topic_name)) assert len(subscriptions) == 1 mgmt_service.create_subscription(topic_name, subscription_name_2) subscriptions = list(mgmt_service.list_subscriptions(topic_name)) assert len(subscriptions) == 2 description = mgmt_service.get_subscription(topic_name, subscription_name_1) mgmt_service.delete_subscription(topic_name, description) subscriptions = list(mgmt_service.list_subscriptions(topic_name)) assert len(subscriptions ) == 1 and subscriptions[0].name == subscription_name_2 mgmt_service.delete_subscription(topic_name, subscription_name_2) subscriptions = list(mgmt_service.list_subscriptions(topic_name)) assert len(subscriptions) == 0 mgmt_service.delete_topic(topic_name)
def test_mgmt_queue_update_success(self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) clear_queues(mgmt_service) queue_name = "fjrui" queue_description = mgmt_service.create_queue(queue_name) try: # Try updating one setting. queue_description.lock_duration = datetime.timedelta(minutes=2) mgmt_service.update_queue(queue_description) queue_description = mgmt_service.get_queue(queue_name) assert queue_description.lock_duration == datetime.timedelta( minutes=2) # 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.is_anonymous_accessible = True queue_description.lock_duration = datetime.timedelta(seconds=13) queue_description.max_delivery_count = 14 queue_description.max_size_in_megabytes = 3072 #queue_description.requires_duplicate_detection = True # Read only #queue_description.requires_session = True # Cannot be changed after creation queue_description.support_ordering = True mgmt_service.update_queue(queue_description) queue_description = 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.is_anonymous_accessible == 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.requires_duplicate_detection == True #assert queue_description.requires_session == True assert queue_description.support_ordering == True finally: mgmt_service.delete_queue(queue_name)
def test_mgmt_rule_list_and_delete(self, servicebus_namespace_connection_string): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) 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'") rule_1 = RuleDescription(name=rule_name_1, filter=sql_filter_1) rule_2 = RuleDescription(name=rule_name_2, filter=sql_filter_2) rule_3 = RuleDescription(name=rule_name_3, filter=sql_filter_3) try: mgmt_service.create_topic(topic_name) mgmt_service.create_subscription(topic_name, subscription_name) rules = list(mgmt_service.list_rules(topic_name, subscription_name)) assert len(rules) == 1 # by default there is a True filter mgmt_service.create_rule(topic_name, subscription_name, rule_1) mgmt_service.create_rule(topic_name, subscription_name, rule_2) mgmt_service.create_rule(topic_name, subscription_name, rule_3) rules = list(mgmt_service.list_rules(topic_name, subscription_name)) assert len(rules) == 3 + 1 mgmt_service.delete_rule(topic_name, subscription_name, rule_name_2) rules = 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'" mgmt_service.delete_rule(topic_name, subscription_name, rule_name_1) mgmt_service.delete_rule(topic_name, subscription_name, rule_name_3) rules = list(mgmt_service.list_rules(topic_name, subscription_name)) assert len(rules) == 1 finally: mgmt_service.delete_subscription(topic_name, subscription_name) mgmt_service.delete_topic(topic_name)
def test_mgmt_queue_create_with_invalid_name(self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusManagementClient.from_connection_string(servicebus_namespace_connection_string) with pytest.raises(msrest.exceptions.ValidationError): mgmt_service.create_queue(Exception()) with pytest.raises(msrest.exceptions.ValidationError): mgmt_service.create_queue('')
def test_mgmt_queue_create_duplicate( self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) queue_name = "rtofdk" mgmt_service.create_queue(queue_name) with pytest.raises(ResourceExistsError): mgmt_service.create_queue(queue_name)
def test_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 = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) run_test_mgmt_list_with_parameters( MgmtQueueListTestHelper(mgmt_service))
def test_mgmt_queue_get_runtime_info_negative(self, servicebus_namespace_connection_string): mgmt_service = ServiceBusManagementClient.from_connection_string(servicebus_namespace_connection_string) with pytest.raises(msrest.exceptions.ValidationError): mgmt_service.get_queue_runtime_info(None) with pytest.raises(msrest.exceptions.ValidationError): mgmt_service.get_queue_runtime_info("") with pytest.raises(ResourceNotFoundError): mgmt_service.get_queue_runtime_info("non_existing_queue")
def test_mgmt_topic_update_success(self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) clear_topics(mgmt_service) topic_name = "fjrui" try: topic_description = mgmt_service.create_topic(topic_name) # Try updating one setting. topic_description.default_message_time_to_live = datetime.timedelta( minutes=2) mgmt_service.update_topic(topic_description) topic_description = 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.is_anonymous_accessible = True 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 mgmt_service.update_topic(topic_description) topic_description = 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.is_anonymous_accessible == 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 finally: mgmt_service.delete_topic(topic_name)
def test_mgmt_topic_create_duplicate( self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) clear_topics(mgmt_service) topic_name = "dqkodq" try: mgmt_service.create_topic(topic_name) with pytest.raises(ResourceExistsError): mgmt_service.create_topic(topic_name) finally: mgmt_service.delete_topic(topic_name)
def test_mgmt_subscription_update_success( self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) clear_topics(mgmt_service) topic_name = "fjrui" subscription_name = "eqkovc" try: topic_description = mgmt_service.create_topic(topic_name) subscription_description = mgmt_service.create_subscription( topic_description, subscription_name) # Try updating one setting. subscription_description.lock_duration = datetime.timedelta( minutes=2) mgmt_service.update_subscription(topic_description, subscription_description) subscription_description = 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 mgmt_service.update_subscription(topic_description, subscription_description) subscription_description = mgmt_service.get_subscription( topic_description, 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: mgmt_service.delete_subscription(topic_name, subscription_name) mgmt_service.delete_topic(topic_name)
def test_mgmt_queue_list_with_special_chars(self, servicebus_namespace_connection_string): # Queue names can contain letters, numbers, periods (.), hyphens (-), underscores (_), and slashes (/), up to 260 characters. Queue names are also case-insensitive. queue_name = 'txt/.-_123' mgmt_service = ServiceBusManagementClient.from_connection_string(servicebus_namespace_connection_string) clear_queues(mgmt_service) queues = list(mgmt_service.list_queues()) assert len(queues) == 0 mgmt_service.create_queue(queue_name) queues = list(mgmt_service.list_queues()) assert len(queues) == 1 and queues[0].name == queue_name mgmt_service.delete_queue(queue_name) queues = list(mgmt_service.list_queues()) assert len(queues) == 0
def test_mgmt_queue_create_by_name(self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) queue_name = "queue_testaddf" created_at = utc_now() mgmt_service.create_queue(queue_name) queue = mgmt_service.get_queue(queue_name) assert queue.queue_name == queue_name assert queue.entity_availability_status == 'Available' assert queue.status == 'Active'
def test_mgmt_rule_update_invalid(self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) clear_topics(mgmt_service) topic_name = "fjrui" subscription_name = "eqkovc" rule_name = 'rule' sql_filter = SqlRuleFilter("Priority = 'low'") try: topic_description = mgmt_service.create_topic(topic_name) subscription_description = mgmt_service.create_subscription( topic_name, subscription_name) mgmt_service.create_rule(topic_name, subscription_name, rule_name, filter=sql_filter) rule_desc = mgmt_service.get_rule(topic_name, subscription_name, rule_name) # handle a null update properly. with pytest.raises(AttributeError): mgmt_service.update_rule(topic_name, subscription_name, None) # handle an invalid type update properly. with pytest.raises(AttributeError): mgmt_service.update_rule(topic_name, subscription_name, Exception("test")) # change the name to a topic that doesn't exist; should fail. rule_desc.name = "iewdm" with pytest.raises(HttpResponseError): mgmt_service.update_rule(topic_name, subscription_description, rule_desc) rule_desc.name = rule_name # change the name to a topic with an invalid name exist; should fail. rule_desc.name = '' with pytest.raises(msrest.exceptions.ValidationError): mgmt_service.update_rule(topic_name, subscription_description, rule_desc) rule_desc.name = rule_name finally: mgmt_service.delete_rule(topic_name, subscription_name, rule_name) mgmt_service.delete_subscription(topic_name, subscription_name) mgmt_service.delete_topic(topic_name)
def test_mgmt_queue_create_by_name(self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusManagementClient.from_connection_string(servicebus_namespace_connection_string) clear_queues(mgmt_service) queue_name = "queue_testaddf" mgmt_service.create_queue(queue_name) created_at = utc_now() try: queue = mgmt_service.get_queue(queue_name) assert queue.name == queue_name assert queue.entity_availability_status == 'Available' assert queue.status == 'Active' # assert created_at < queue.created_at < utc_now() + datetime.timedelta(minutes=10) # TODO: Should be created_at_utc for consistency with dataplane. finally: mgmt_service.delete_queue(queue_name)
def test_mgmt_queue_create_with_queue_description( self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) clear_queues(mgmt_service) queue_name = "iweidk" #TODO: Why don't we have an input model (queueOptions? as superclass of QueueDescription?) and output model to not show these params? #TODO: This fails with the following: E msrest.exceptions.DeserializationError: Find several XML 'prefix:DeadLetteringOnMessageExpiration' where it was not expected .tox\whl\lib\site-packages\msrest\serialization.py:1262: DeserializationError mgmt_service.create_queue( QueueDescription( name=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, is_anonymous_accessible=True, lock_duration=datetime.timedelta(seconds=13), max_delivery_count=14, max_size_in_megabytes=3072, #requires_duplicate_detection=True, requires_session=True, support_ordering=True)) try: queue = 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.is_anonymous_accessible == True assert queue.lock_duration == datetime.timedelta(seconds=13) assert queue.max_delivery_count == 14 assert queue.max_size_in_megabytes % 3072 == 0 # TODO: In my local test, I don't see a multiple of the input number. To confirm #assert queue.requires_duplicate_detection == True assert queue.requires_session == True assert queue.support_ordering == True finally: mgmt_service.delete_queue(queue_name)
def test_mgmt_queue_create_with_invalid_name( self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) with pytest.raises(TypeError): mgmt_service.create_queue(Exception()) with pytest.raises(ValueError): mgmt_service.create_queue(QueueDescription(queue_name=Exception())) with pytest.raises(ValueError): mgmt_service.create_queue('') with pytest.raises(ValueError): mgmt_service.create_queue(QueueDescription(queue_name=''))
def test_mgmt_topic_create_by_name(self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) clear_topics(mgmt_service) topic_name = "topic_testaddf" try: mgmt_service.create_topic(topic_name) topic = mgmt_service.get_topic(topic_name) assert topic.name == topic_name assert topic.entity_availability_status == 'Available' assert topic.status == 'Active' finally: mgmt_service.delete_topic(topic_name)
def test_mgmt_topic_get_runtime_info_basic( self, servicebus_namespace_connection_string): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) clear_topics(mgmt_service) mgmt_service.create_topic("test_topic") topic_runtime_info = mgmt_service.get_topic_runtime_info("test_topic") assert topic_runtime_info assert topic_runtime_info.name == "test_topic" assert topic_runtime_info.created_at is not None assert topic_runtime_info.accessed_at is not None assert topic_runtime_info.updated_at is not None assert topic_runtime_info.size_in_bytes == 0 assert topic_runtime_info.subscription_count is 0 assert topic_runtime_info.scheduled_message_count == 0 mgmt_service.delete_topic("test_topic")
def test_mgmt_rule_update_success(self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) clear_topics(mgmt_service) topic_name = "fjrui" subscription_name = "eqkovc" rule_name = 'rule' sql_filter = SqlRuleFilter("Priority = 'low'") try: topic_description = mgmt_service.create_topic(topic_name) subscription_description = mgmt_service.create_subscription( topic_description, subscription_name) mgmt_service.create_rule(topic_name, subscription_name, rule_name, filter=sql_filter) rule_desc = mgmt_service.get_rule(topic_name, subscription_name, rule_name) assert type(rule_desc.filter) == SqlRuleFilter assert rule_desc.filter.sql_expression == "Priority = 'low'" correlation_fitler = CorrelationRuleFilter( correlation_id='testcid') sql_rule_action = SqlRuleAction( sql_expression="SET Priority = 'low'") rule_desc.filter = correlation_fitler rule_desc.action = sql_rule_action mgmt_service.update_rule(topic_description, subscription_description, rule_desc) rule_desc = mgmt_service.get_rule(topic_name, subscription_name, rule_name) assert type(rule_desc.filter) == CorrelationRuleFilter assert rule_desc.filter.correlation_id == 'testcid' assert rule_desc.action.sql_expression == "SET Priority = 'low'" finally: mgmt_service.delete_rule(topic_name, subscription_name, rule_name) mgmt_service.delete_subscription(topic_name, subscription_name) mgmt_service.delete_topic(topic_name)
def test_mgmt_queue_delete_one_and_check_not_existing(self, servicebus_namespace_connection_string): mgmt_service = ServiceBusManagementClient.from_connection_string(servicebus_namespace_connection_string) clear_queues(mgmt_service) for i in range(10): mgmt_service.create_queue("queue{}".format(i)) delete_idx = 0 to_delete_queue_name = "queue{}".format(delete_idx) mgmt_service.delete_queue(to_delete_queue_name) queue_names = [queue.name for queue in list(mgmt_service.list_queues())] assert len(queue_names) == 9 and to_delete_queue_name not in queue_names for name in queue_names: mgmt_service.delete_queue(name) queues = list(mgmt_service.list_queues()) assert len(queues) == 0
def test_mgmt_topic_list(self, servicebus_namespace_connection_string, **kwargs): mgmt_service = ServiceBusManagementClient.from_connection_string( servicebus_namespace_connection_string) clear_topics(mgmt_service) topics = list(mgmt_service.list_topics()) assert len(topics) == 0 mgmt_service.create_topic("test_topic_1") mgmt_service.create_topic("test_topic_2") topics = list(mgmt_service.list_topics()) assert len(topics) == 2 assert topics[0].name == "test_topic_1" assert topics[1].name == "test_topic_2" mgmt_service.delete_topic("test_topic_1") mgmt_service.delete_topic("test_topic_2") topics = list(mgmt_service.list_topics()) assert len(topics) == 0