Move tenant usage tests into misc policy actions file

Move tenant usage tests into test_server_misc_policy_actions_rbac.py
to further increase gate stability and decrease gate run time.

The number of calls to create_test_server() should be minimized
for RBAC testing because we don't do too much modification to the
resources that are created -- only what's necessary to trigger the
API action corresponding to the RBAC policy under test. Further,
minimizing such calls reduces the risk of spinning up too many servers
concurrently in our gates: the source of various gate failures as
limited resources lead to server faults being raised.

Change-Id: Ib104c08a5fa1708a829e5f91a587df6ba9c08ee0
Partial-Bug: #1699415
This commit is contained in:
Felipe Monteiro 2017-07-07 04:56:36 +01:00
parent 25569dc76b
commit 4047a19265
3 changed files with 25 additions and 57 deletions

View File

@ -37,7 +37,9 @@ class BaseV2ComputeRbacTest(compute_base.BaseV2ComputeTest):
super(BaseV2ComputeRbacTest, cls).setup_clients()
cls.auth_provider = cls.os_primary.auth_provider
cls.rbac_utils = rbac_utils.RbacUtils(cls)
cls.hosts_client = cls.os_primary.hosts_client
cls.tenant_usages_client = cls.os_primary.tenant_usages_client
@classmethod
def resource_setup(cls):

View File

@ -210,12 +210,34 @@ class MiscPolicyActionsRbacTest(rbac_base.BaseV2ComputeRbacTest):
def test_show_server_usage(self):
"""Test show server usage, part of os-server-usage.
TODO(felipemonteiro): Once multiple policy test is supported, this
TODO(felipemonteiro): Once multiple policy testing is supported, this
test can be combined with the generic test for showing a server.
"""
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.servers_client.show_server(self.server_id)
@test.requires_ext(extension='os-simple-tenant-usage', service='compute')
@rbac_rule_validation.action(
service="nova",
rule="os_compute_api:os-simple-tenant-usage:list")
@decorators.idempotent_id('2aef094f-0452-4df6-a66a-0ec22a92b16e')
def test_list_simple_tenant_usages(self):
"""Test list tenant usages, part of os-simple-tenant-usage."""
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.tenant_usages_client.list_tenant_usages()
@test.requires_ext(extension='os-simple-tenant-usage', service='compute')
@rbac_rule_validation.action(
service="nova",
rule="os_compute_api:os-simple-tenant-usage:show")
@decorators.idempotent_id('fe7eacda-15c4-4bf7-93ef-1091c4546a9d')
def test_show_simple_tenant_usage(self):
"""Test show tenant usage, part of os-simple-tenant-usage."""
tenant_id = self.auth_provider.credentials.tenant_id
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.tenant_usages_client.show_tenant_usage(tenant_id=tenant_id)
@testtools.skipUnless(CONF.compute_feature_enabled.suspend,
"Suspend compute feature is not available.")
@decorators.idempotent_id('b775930f-237c-431c-83ae-d33ed1b9700b')

View File

@ -1,56 +0,0 @@
# Copyright 2017 AT&T Corporation.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from tempest.lib import decorators
from tempest import test
from patrole_tempest_plugin import rbac_rule_validation
from patrole_tempest_plugin.tests.api.compute import rbac_base
class SimpleTenantUsageRbacTest(rbac_base.BaseV2ComputeRbacTest):
@classmethod
def setup_clients(cls):
super(SimpleTenantUsageRbacTest, cls).setup_clients()
cls.tenant_usages_client = cls.os_primary.tenant_usages_client
@classmethod
def skip_checks(cls):
super(SimpleTenantUsageRbacTest, cls).skip_checks()
if not test.is_extension_enabled('os-simple-tenant-usage', 'compute'):
msg = ("%s skipped as os-simple-tenant-usage not "
"enabled." % cls.__name__)
raise cls.skipException(msg)
@rbac_rule_validation.action(
service="nova",
rule="os_compute_api:os-simple-tenant-usage:list")
@decorators.idempotent_id('2aef094f-0452-4df6-a66a-0ec22a92b16e')
def test_simple_tenant_usage_list(self):
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.tenant_usages_client.list_tenant_usages()
@rbac_rule_validation.action(
service="nova",
rule="os_compute_api:os-simple-tenant-usage:show")
@decorators.idempotent_id('fe7eacda-15c4-4bf7-93ef-1091c4546a9d')
def test_simple_tenant_usage_show(self):
# A server must be created in order for usage activity to exist; else
# the validation method in the API call throws an error.
self.create_test_server(wait_until='ACTIVE')['id']
tenant_id = self.auth_provider.credentials.tenant_id
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.tenant_usages_client.show_tenant_usage(tenant_id=tenant_id)