Skip to content

Commit

Permalink
Merge pull request Azure#7 from yunhaoling/sbt2-mgmt-test
Browse files Browse the repository at this point in the history
[ServiceBus] Add ListQueueRuntimeInfo, GetQueueRuntimeInfo Test And Generalize "list" related tests
  • Loading branch information
yunhaoling authored Jun 5, 2020
2 parents c4ae178 + 2e8e6ca commit 2964b85
Show file tree
Hide file tree
Showing 4 changed files with 439 additions and 138 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@
from devtools_testutils import AzureMgmtTestCase, CachedResourceGroupPreparer
from servicebus_preparer import CachedServiceBusNamespacePreparer, CachedServiceBusQueuePreparer, ServiceBusQueuePreparer

from utilities import (
AsyncMgmtQueueListTestHelper,
AsyncMgmtQueueListRuntimeInfoTestHelper,
run_test_async_mgmt_list_with_parameters,
run_test_async_mgmt_list_with_negative_parameters
)

class ServiceBusManagementClientQueueAsyncTests(AzureMgmtTestCase):
@CachedResourceGroupPreparer(name_prefix='servicebustest')
Expand Down Expand Up @@ -67,46 +73,7 @@ async def test_async_mgmt_queue_list_with_special_chars(self, servicebus_namespa
@CachedServiceBusNamespacePreparer(name_prefix='servicebustest')
async def test_async_mgmt_queue_list_with_parameters(self, servicebus_namespace_connection_string):
sb_mgmt_client = ServiceBusManagementClient.from_connection_string(servicebus_namespace_connection_string)

queues = await sb_mgmt_client.list_queues(skip=5, max_count=10)
assert len(queues) == 0

for i in range(20):
await sb_mgmt_client.create_queue("queue{}".format(i))

queues = await sb_mgmt_client.list_queues()
assert len(queues) == 20

all_queues = sorted(["queue{}".format(i) for i in range(20)])

queues = await sb_mgmt_client.list_queues(skip=5, max_count=10)
correct_set = all_queues[5:15]
assert len(queues) == 10
for queue in queues:
correct_set.remove(queue.queue_name)
assert len(correct_set) == 0

correct_set = all_queues[15:20]
queues = await sb_mgmt_client.list_queues(skip=15, max_count=100)
assert len(queues) == 5
for queue in queues:
correct_set.remove(queue.queue_name)
assert len(correct_set) == 0

queues = await sb_mgmt_client.list_queues(max_count=0)
assert len(queues) == 0

queues = await sb_mgmt_client.list_queues(skip=0, max_count=0)
assert len(queues) == 0

cnt = 20
for i in range(20):
await sb_mgmt_client.delete_queue(all_queues[i])
cnt -= 1
assert len(await sb_mgmt_client.list_queues()) == cnt

queues = await sb_mgmt_client.list_queues()
assert len(queues) == 0
await run_test_async_mgmt_list_with_parameters(AsyncMgmtQueueListTestHelper(sb_mgmt_client))

@CachedResourceGroupPreparer(name_prefix='servicebustest')
@CachedServiceBusNamespacePreparer(name_prefix='servicebustest')
Expand Down Expand Up @@ -142,35 +109,7 @@ async def test_async_mgmt_queue_list_with_negative_credential(self, servicebus_n
@CachedServiceBusNamespacePreparer(name_prefix='servicebustest')
async def test_async_mgmt_queue_list_with_negative_parameters(self, servicebus_namespace_connection_string):
sb_mgmt_client = ServiceBusManagementClient.from_connection_string(servicebus_namespace_connection_string)

queues = await sb_mgmt_client.list_queues()
assert len(queues) == 0

with pytest.raises(HttpResponseError):
await sb_mgmt_client.list_queues(skip=-1)

with pytest.raises(HttpResponseError):
await sb_mgmt_client.list_queues(max_count=-1)

with pytest.raises(HttpResponseError):
await sb_mgmt_client.list_queues(skip=-1, max_count=-1)

await sb_mgmt_client.create_queue("test_queue")
queues = await sb_mgmt_client.list_queues()
assert len(queues) == 1 and queues[0].queue_name == "test_queue"

with pytest.raises(HttpResponseError):
await sb_mgmt_client.list_queues(skip=-1)

with pytest.raises(HttpResponseError):
await sb_mgmt_client.list_queues(max_count=-1)

with pytest.raises(HttpResponseError):
await sb_mgmt_client.list_queues(skip=-1, max_count=-1)

await sb_mgmt_client.delete_queue("test_queue")
queues = await sb_mgmt_client.list_queues()
assert len(queues) == 0
await run_test_async_mgmt_list_with_negative_parameters(AsyncMgmtQueueListTestHelper(sb_mgmt_client))

@CachedResourceGroupPreparer(name_prefix='servicebustest')
@CachedServiceBusNamespacePreparer(name_prefix='servicebustest')
Expand Down Expand Up @@ -236,3 +175,89 @@ async def test_async_mgmt_queue_delete_negtive(self, servicebus_namespace_connec

with pytest.raises(ValueError):
await sb_mgmt_client.delete_queue(queue_name=None)

@CachedResourceGroupPreparer(name_prefix='servicebustest')
@CachedServiceBusNamespacePreparer(name_prefix='servicebustest')
async def test_async_mgmt_queue_list_runtime_info_basic(self, servicebus_namespace_connection_string):
sb_mgmt_client = ServiceBusManagementClient.from_connection_string(servicebus_namespace_connection_string)
queues = await sb_mgmt_client.list_queues()
queues_infos = await sb_mgmt_client.list_queues_runtime_info()

assert len(queues) == len(queues_infos) == 0

await sb_mgmt_client.create_queue("test_queue")

queues = await sb_mgmt_client.list_queues()
queues_infos = await sb_mgmt_client.list_queues_runtime_info()

assert len(queues) == 1 and len(queues_infos) == 1

assert queues[0].queue_name == queues_infos[0].queue_name == "test_queue"
assert queues_infos[0].created_at and queues_infos[0].created_at == queues[0].created_at

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.message_count == 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

await sb_mgmt_client.delete_queue("test_queue")
queues_infos = await sb_mgmt_client.list_queues_runtime_info()
assert len(queues_infos) == 0

@CachedResourceGroupPreparer(name_prefix='servicebustest')
@CachedServiceBusNamespacePreparer(name_prefix='servicebustest')
async def test_async_mgmt_queue_list_runtime_info_with_negative_parameters(self, servicebus_namespace_connection_string):
sb_mgmt_client = ServiceBusManagementClient.from_connection_string(servicebus_namespace_connection_string)
await run_test_async_mgmt_list_with_negative_parameters(AsyncMgmtQueueListRuntimeInfoTestHelper(sb_mgmt_client))

@CachedResourceGroupPreparer(name_prefix='servicebustest')
@CachedServiceBusNamespacePreparer(name_prefix='servicebustest')
async def test_async_mgmt_queue_list_runtime_info_with_parameters(self, servicebus_namespace_connection_string):
sb_mgmt_client = ServiceBusManagementClient.from_connection_string(servicebus_namespace_connection_string)
await run_test_async_mgmt_list_with_parameters(AsyncMgmtQueueListRuntimeInfoTestHelper(sb_mgmt_client))

@CachedResourceGroupPreparer(name_prefix='servicebustest')
@CachedServiceBusNamespacePreparer(name_prefix='servicebustest')
async def test_async_mgmt_queue_get_runtime_info_basic(self, servicebus_namespace_connection_string):
sb_mgmt_client = ServiceBusManagementClient.from_connection_string(servicebus_namespace_connection_string)

await sb_mgmt_client.create_queue("test_queue")
queue_runtime_info = await sb_mgmt_client.get_queue_runtime_info("test_queue")

assert queue_runtime_info
assert queue_runtime_info.queue_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.message_count == 0

assert queue_runtime_info.message_count_details
assert queue_runtime_info.message_count_details.active_message_count == 0
assert queue_runtime_info.message_count_details.dead_letter_message_count == 0
assert queue_runtime_info.message_count_details.transfer_dead_letter_message_count == 0
assert queue_runtime_info.message_count_details.transfer_message_count == 0
assert queue_runtime_info.message_count_details.scheduled_message_count == 0
await sb_mgmt_client.delete_queue("test_queue")

@CachedResourceGroupPreparer(name_prefix='servicebustest')
@CachedServiceBusNamespacePreparer(name_prefix='servicebustest')
async def test_async_mgmt_queue_get_runtime_info_negative(self, servicebus_namespace_connection_string):
sb_mgmt_client = ServiceBusManagementClient.from_connection_string(servicebus_namespace_connection_string)
with pytest.raises(ValueError):
await sb_mgmt_client.get_queue_runtime_info(None)

with pytest.raises(ValueError):
await sb_mgmt_client.get_queue_runtime_info("")

with pytest.raises(ResourceNotFoundError):
await sb_mgmt_client.get_queue_runtime_info("non_existing_queue")
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
#-------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
#-------------------------------------------------------------------------
import pytest

from azure.core.exceptions import HttpResponseError


class AsyncMgmtListTestHelperInterface(object):
def __init__(self, mgmt_client):
self.sb_mgmt_client = mgmt_client

async def list_resource_method(self, skip=0, max_count=100):
pass

async def create_resource_method(self, name):
pass

async def delete_resource_by_name_method(self, name):
pass

async def get_resource_name(self, resource):
pass


class AsyncMgmtQueueListTestHelper(AsyncMgmtListTestHelperInterface):
async def list_resource_method(self, skip=0, max_count=100):
return await self.sb_mgmt_client.list_queues(skip=skip, max_count=max_count)

async def create_resource_method(self, name):
await self.sb_mgmt_client.create_queue(name)

async def delete_resource_by_name_method(self, name):
await self.sb_mgmt_client.delete_queue(name)

async def get_resource_name(self, queue):
return queue.queue_name


class AsyncMgmtQueueListRuntimeInfoTestHelper(AsyncMgmtListTestHelperInterface):
async def list_resource_method(self, skip=0, max_count=100):
return await self.sb_mgmt_client.list_queues_runtime_info(skip=skip, max_count=max_count)

async def create_resource_method(self, name):
await self.sb_mgmt_client.create_queue(name)

async def delete_resource_by_name_method(self, name):
await self.sb_mgmt_client.delete_queue(name)

async def get_resource_name(self, queue_info):
return queue_info.queue_name


async def run_test_async_mgmt_list_with_parameters(test_helper):
result = await test_helper.list_resource_method()
assert len(result) == 0

resources_names = []
for i in range(20):
await test_helper.create_resource_method("test_resource{}".format(i))
resources_names.append("test_resource{}".format(i))

result = await test_helper.list_resource_method()
assert len(result) == 20

sorted_resources_names = sorted(resources_names)

result = await test_helper.list_resource_method(skip=5, max_count=10)
expected_result = sorted_resources_names[5:15]
assert len(result) == 10
for item in result:
expected_result.remove(await test_helper.get_resource_name(item))
assert len(expected_result) == 0

result = await test_helper.list_resource_method(max_count=0)
assert len(result) == 0

queues = await test_helper.list_resource_method(skip=0, max_count=0)
assert len(queues) == 0

cnt = 20
for name in resources_names:
await test_helper.delete_resource_by_name_method(name)
cnt -= 1
assert len(await test_helper.list_resource_method()) == cnt

assert cnt == 0

result = await test_helper.list_resource_method()
assert len(result) == 0


async def run_test_async_mgmt_list_with_negative_parameters(test_helper):
result = await test_helper.list_resource_method()
assert len(result) == 0

with pytest.raises(HttpResponseError):
await test_helper.list_resource_method(skip=-1)

with pytest.raises(HttpResponseError):
await test_helper.list_resource_method(max_count=-1)

with pytest.raises(HttpResponseError):
await test_helper.list_resource_method(skip=-1, max_count=-1)

await test_helper.create_resource_method("test_resource")
result = await test_helper.list_resource_method()
assert len(result) == 1 and (await test_helper.get_resource_name(result[0])) == "test_resource"

with pytest.raises(HttpResponseError):
await test_helper.list_resource_method(skip=-1)

with pytest.raises(HttpResponseError):
await test_helper.list_resource_method(max_count=-1)

with pytest.raises(HttpResponseError):
await test_helper.list_resource_method(skip=-1, max_count=-1)

await test_helper.delete_resource_by_name_method("test_resource")
result = await test_helper.list_resource_method()
assert len(result) == 0

Loading

0 comments on commit 2964b85

Please sign in to comment.