def test_lock_multiple_matches(self):
"""Lock a resource, parameters matching more then one result.
* Validates the DB initial state.
* Locks a resource using parameters that match more than one resource,
using resource client.
* Validates only one resource returned.
* Validates the returned resource is now marked as locked.
* Validates there is still 1 available resource with same parameters.
"""
common_parameters = {'ip_address': "1.1.1.1"}
resources_num = DemoResourceData.objects.filter(owner="",
**common_parameters).count()
self.assertEquals(resources_num, 2, "Expected 2 available "
"resources with parameters %r in DB found %d"
% (common_parameters, resources_num))
descriptor = Descriptor(DemoResource, **common_parameters)
resources = self.client._lock_resources(descriptors=[descriptor],
timeout=self.LOCK_TIMEOUT)
resources_num = len(resources)
self.assertEquals(resources_num, 1, "Expected list with 1 "
"resource in it but found %d" % resources_num)
locked_resource_name = resources[0].name
resources_num = descriptor.type.DATA_CLASS.objects.filter(~Q(owner=""),
name=locked_resource_name).count()
self.assertEquals(resources_num, 1, "Expected 1 locked "
"resource with name %r in DB, found %d"
% (locked_resource_name, resources_num))
resources_num = descriptor.type.DATA_CLASS.objects.filter(owner="",
**common_parameters).count()
self.assertGreaterEqual(resources_num, 1, "Expected at least 1 "
"available resource with the same parameters "
"in DB found %d" % resources_num)
评论列表
文章目录