示例#1
0
    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())
示例#2
0
    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
示例#3
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)
示例#4
0
    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
示例#5
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)
示例#6
0
 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)
示例#7
0
    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
示例#8
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)
示例#9
0
    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")
示例#10
0
    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)
示例#11
0
    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)
示例#12
0
    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)
示例#13
0
    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('')
示例#14
0
    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)
示例#15
0
 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))
示例#16
0
    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")
示例#17
0
    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)
示例#18
0
 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)
示例#19
0
    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)
示例#20
0
 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
示例#21
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'
示例#22
0
    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)
示例#23
0
 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)
示例#25
0
    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=''))
示例#26
0
    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)
示例#27
0
    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")
示例#28
0
    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)
示例#29
0
    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
示例#30
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