Split up XML and JSON testing.
This adds a new boolean config option to compute, 'use_xml'. If enabled tests will run with XML where applicable. Otherwise the tests will only run with JSON. Implements bp split-xml-json-tests Change-Id: I139dac23194b3abdf26a0d3622461942478facb5
This commit is contained in:
@@ -310,3 +310,10 @@ build_timeout = 120
|
||||
|
||||
# Status change wait interval
|
||||
build_interval = 1
|
||||
|
||||
[general]
|
||||
#This section contains configuration options that are used for all of tempest
|
||||
#that are not specific to a single project or API
|
||||
|
||||
#Use xml containe for tests that support both JSON and XML?
|
||||
use_xml = False
|
||||
|
||||
@@ -141,8 +141,7 @@ class Manager(object):
|
||||
Top level manager for OpenStack Compute clients
|
||||
"""
|
||||
|
||||
def __init__(self, username=None, password=None, tenant_name=None,
|
||||
interface='json'):
|
||||
def __init__(self, username=None, password=None, tenant_name=None):
|
||||
"""
|
||||
We allow overriding of the credentials used within the various
|
||||
client classes managed by the Manager object. Left as None, the
|
||||
@@ -159,6 +158,10 @@ class Manager(object):
|
||||
self.username = username or self.config.compute.username
|
||||
self.password = password or self.config.compute.password
|
||||
self.tenant_name = tenant_name or self.config.compute.tenant_name
|
||||
if self.config.general.use_xml:
|
||||
interface = 'xml'
|
||||
else:
|
||||
interface = 'json'
|
||||
|
||||
if None in (self.username, self.password, self.tenant_name):
|
||||
msg = ("Missing required credentials. "
|
||||
@@ -229,12 +232,11 @@ class AdminManager(Manager):
|
||||
managed client objects
|
||||
"""
|
||||
|
||||
def __init__(self, interface='json'):
|
||||
def __init__(self):
|
||||
conf = config.TempestConfig()
|
||||
super(AdminManager, self).__init__(conf.compute_admin.username,
|
||||
conf.compute_admin.password,
|
||||
conf.compute_admin.tenant_name,
|
||||
interface=interface)
|
||||
conf.compute_admin.tenant_name)
|
||||
|
||||
|
||||
class ServiceManager(object):
|
||||
@@ -257,12 +259,11 @@ class IdentityManager(Manager):
|
||||
managed client objects
|
||||
"""
|
||||
|
||||
def __init__(self, interface='json'):
|
||||
def __init__(self):
|
||||
conf = config.TempestConfig()
|
||||
super(IdentityManager, self).__init__(conf.identity_admin.username,
|
||||
conf.identity_admin.password,
|
||||
conf.identity_admin.tenant_name,
|
||||
interface)
|
||||
conf.identity_admin.tenant_name)
|
||||
|
||||
|
||||
class IdentityNaManager(Manager):
|
||||
@@ -272,9 +273,8 @@ class IdentityNaManager(Manager):
|
||||
managed client objects
|
||||
"""
|
||||
|
||||
def __init__(self, interface='json'):
|
||||
def __init__(self):
|
||||
conf = config.TempestConfig()
|
||||
super(IdentityNaManager, self).__init__(conf.compute.username,
|
||||
conf.compute.password,
|
||||
conf.compute.tenant_name,
|
||||
interface)
|
||||
conf.compute.tenant_name)
|
||||
|
||||
@@ -461,6 +461,20 @@ def register_boto_opts(conf):
|
||||
for opt in BotoConfig:
|
||||
conf.register_opt(opt, group='boto')
|
||||
|
||||
general_group = cfg.OptGroup(name='general', title='General Tempest Options')
|
||||
|
||||
GeneralOpts = [
|
||||
cfg.BoolOpt('use_xml',
|
||||
default=False,
|
||||
help="Use xml for the container format"),
|
||||
]
|
||||
|
||||
|
||||
def register_general_opts(conf):
|
||||
conf.register_group(general_group)
|
||||
for opt in GeneralOpts:
|
||||
conf.register_opt(opt, group='general')
|
||||
|
||||
|
||||
# TODO(jaypipes): Move this to a common utils (not data_utils...)
|
||||
def singleton(cls):
|
||||
@@ -518,6 +532,7 @@ class TempestConfig:
|
||||
register_volume_opts(cfg.CONF)
|
||||
register_object_storage_opts(cfg.CONF)
|
||||
register_boto_opts(cfg.CONF)
|
||||
register_general_opts(cfg.CONF)
|
||||
self.compute = cfg.CONF.compute
|
||||
self.compute_admin = cfg.CONF['compute-admin']
|
||||
self.identity = cfg.CONF.identity
|
||||
@@ -528,3 +543,4 @@ class TempestConfig:
|
||||
self.volume = cfg.CONF.volume
|
||||
self.object_storage = cfg.CONF['object-storage']
|
||||
self.boto = cfg.CONF.boto
|
||||
self.general = cfg.CONF.general
|
||||
|
||||
@@ -19,9 +19,12 @@ import nose
|
||||
from nose.plugins.attrib import attr
|
||||
import unittest2 as unittest
|
||||
|
||||
from tempest import config
|
||||
from tempest.tests import compute
|
||||
from tempest.tests.compute import base
|
||||
|
||||
CONF = config.TempestConfig()
|
||||
|
||||
|
||||
class FlavorsAdminTestBase(object):
|
||||
|
||||
@@ -68,12 +71,12 @@ class FlavorsAdminTestBase(object):
|
||||
self.assertEqual(flavor['rxtx_factor'], self.rxtx)
|
||||
self.assertEqual(flavor['OS-FLV-EXT-DATA:ephemeral'],
|
||||
self.ephemeral)
|
||||
if self._interface == "xml":
|
||||
if CONF.general.use_xml:
|
||||
XMLNS_OS_FLV_ACCESS = "http://docs.openstack.org/compute/ext/"\
|
||||
"flavor_access/api/v2"
|
||||
key = "{" + XMLNS_OS_FLV_ACCESS + "}is_public"
|
||||
self.assertEqual(flavor[key], "True")
|
||||
if self._interface == "json":
|
||||
else:
|
||||
self.assertEqual(flavor['os-flavor-access:is_public'], True)
|
||||
|
||||
#Verify flavor is retrieved
|
||||
@@ -164,12 +167,12 @@ class FlavorsAdminTestBase(object):
|
||||
self.assertEqual(flavor['swap'], '')
|
||||
self.assertEqual(int(flavor['rxtx_factor']), 1)
|
||||
self.assertEqual(int(flavor['OS-FLV-EXT-DATA:ephemeral']), 0)
|
||||
if self._interface == "xml":
|
||||
if CONF.general.use_xml:
|
||||
XMLNS_OS_FLV_ACCESS = "http://docs.openstack.org/compute/ext/"\
|
||||
"flavor_access/api/v2"
|
||||
key = "{" + XMLNS_OS_FLV_ACCESS + "}is_public"
|
||||
self.assertEqual(flavor[key], "True")
|
||||
if self._interface == "json":
|
||||
else:
|
||||
self.assertEqual(flavor['os-flavor-access:is_public'], True)
|
||||
|
||||
#Verify flavor is retrieved
|
||||
@@ -241,23 +244,11 @@ class FlavorsAdminTestBase(object):
|
||||
self.client.wait_for_resource_deletion(self.new_flavor_id)
|
||||
|
||||
|
||||
class FlavorsAdminTestXML(base.BaseComputeAdminTestXML,
|
||||
base.BaseComputeTestXML,
|
||||
FlavorsAdminTestBase):
|
||||
class FlavorsAdminTest(base.BaseComputeAdminTest, base.BaseCompTest,
|
||||
FlavorsAdminTestBase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(FlavorsAdminTestXML, cls).setUpClass()
|
||||
base.BaseComputeTestXML.setUpClass()
|
||||
FlavorsAdminTestBase.setUpClass(cls)
|
||||
|
||||
|
||||
class FlavorsAdminTestJSON(base.BaseComputeAdminTestJSON,
|
||||
base.BaseComputeTestJSON,
|
||||
FlavorsAdminTestBase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(FlavorsAdminTestJSON, cls).setUpClass()
|
||||
base.BaseComputeTestJSON.setUpClass()
|
||||
super(FlavorsAdminTest, cls).setUpClass()
|
||||
base.BaseCompTest.setUpClass()
|
||||
FlavorsAdminTestBase.setUpClass(cls)
|
||||
|
||||
@@ -19,10 +19,10 @@ from nose.plugins.attrib import attr
|
||||
|
||||
from tempest import exceptions
|
||||
from tempest.services.compute.admin.json import quotas_client as adm_quotas
|
||||
from tempest.tests.compute.base import BaseComputeTest
|
||||
from tempest.tests.compute.base import BaseCompTest
|
||||
|
||||
|
||||
class QuotasTest(BaseComputeTest):
|
||||
class QuotasTest(BaseCompTest):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
|
||||
@@ -26,8 +26,7 @@ from tempest.common.utils.data_utils import rand_name
|
||||
from tempest import config
|
||||
from tempest import exceptions
|
||||
|
||||
__all__ = ['BaseComputeTest', 'BaseComputeTestJSON', 'BaseComputeTestXML',
|
||||
'BaseComputeAdminTestJSON', 'BaseComputeAdminTestXML']
|
||||
__all__ = ['BaseCompTest', 'BaseComputeAdminTest']
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
@@ -46,10 +45,9 @@ class BaseCompTest(unittest.TestCase):
|
||||
username, tenant_name, password = creds
|
||||
os = clients.Manager(username=username,
|
||||
password=password,
|
||||
tenant_name=tenant_name,
|
||||
interface=cls._interface)
|
||||
tenant_name=tenant_name)
|
||||
else:
|
||||
os = clients.Manager(interface=cls._interface)
|
||||
os = clients.Manager()
|
||||
|
||||
cls.os = os
|
||||
cls.servers_client = os.servers_client
|
||||
@@ -78,7 +76,7 @@ class BaseCompTest(unittest.TestCase):
|
||||
"""
|
||||
Returns an instance of the Identity Admin API client
|
||||
"""
|
||||
os = clients.IdentityManager(interface=cls._interface)
|
||||
os = clients.IdentityManager()
|
||||
admin_client = os.admin_client
|
||||
return admin_client
|
||||
|
||||
@@ -227,23 +225,6 @@ class BaseCompTest(unittest.TestCase):
|
||||
time.sleep(self.build_interval)
|
||||
|
||||
|
||||
class BaseComputeTestJSON(BaseCompTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = "json"
|
||||
super(BaseComputeTestJSON, cls).setUpClass()
|
||||
|
||||
# NOTE(danms): For transition, keep the old name active as JSON
|
||||
BaseComputeTest = BaseComputeTestJSON
|
||||
|
||||
|
||||
class BaseComputeTestXML(BaseCompTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = "xml"
|
||||
super(BaseComputeTestXML, cls).setUpClass()
|
||||
|
||||
|
||||
class BaseComputeAdminTest(unittest.TestCase):
|
||||
|
||||
"""Base test case class for all Compute Admin API tests."""
|
||||
@@ -260,18 +241,4 @@ class BaseComputeAdminTest(unittest.TestCase):
|
||||
"in configuration.")
|
||||
raise nose.SkipTest(msg)
|
||||
|
||||
cls.os = clients.AdminManager(interface=cls._interface)
|
||||
|
||||
|
||||
class BaseComputeAdminTestJSON(BaseComputeAdminTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = "json"
|
||||
super(BaseComputeAdminTestJSON, cls).setUpClass()
|
||||
|
||||
|
||||
class BaseComputeAdminTestXML(BaseComputeAdminTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = "xml"
|
||||
super(BaseComputeAdminTestXML, cls).setUpClass()
|
||||
cls.os = clients.AdminManager()
|
||||
|
||||
@@ -137,19 +137,9 @@ class FlavorsTestBase(object):
|
||||
9999)
|
||||
|
||||
|
||||
class FlavorsTestXML(base.BaseComputeTestXML,
|
||||
FlavorsTestBase):
|
||||
class FlavorsTest(base.BaseCompTest, FlavorsTestBase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(FlavorsTestXML, cls).setUpClass()
|
||||
cls.client = cls.flavors_client
|
||||
|
||||
|
||||
class FlavorsTestJSON(base.BaseComputeTestJSON,
|
||||
FlavorsTestBase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(FlavorsTestJSON, cls).setUpClass()
|
||||
super(FlavorsTest, cls).setUpClass()
|
||||
cls.client = cls.flavors_client
|
||||
|
||||
@@ -205,25 +205,13 @@ class FloatingIPsTestBase(object):
|
||||
' with out passing floating IP should raise BadRequest')
|
||||
|
||||
|
||||
class FloatingIPsTestJSON(base.BaseComputeTestJSON, FloatingIPsTestBase):
|
||||
class FloatingIPsTest(base.BaseCompTest, FloatingIPsTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(FloatingIPsTestJSON, cls).setUpClass()
|
||||
super(FloatingIPsTest, cls).setUpClass()
|
||||
FloatingIPsTestBase.setUpClass(cls)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
FloatingIPsTestBase.tearDownClass(cls)
|
||||
super(FloatingIPsTestJSON, cls).tearDownClass()
|
||||
|
||||
|
||||
class FloatingIPsTestXML(base.BaseComputeTestXML, FloatingIPsTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(FloatingIPsTestXML, cls).setUpClass()
|
||||
FloatingIPsTestBase.setUpClass(cls)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
FloatingIPsTestBase.tearDownClass(cls)
|
||||
super(FloatingIPsTestXML, cls).tearDownClass()
|
||||
super(FloatingIPsTest, cls).tearDownClass()
|
||||
|
||||
@@ -99,27 +99,13 @@ class FloatingIPDetailsTestBase(object):
|
||||
'nonexistant floating IP')
|
||||
|
||||
|
||||
class FloatingIPDetailsTestJSON(base.BaseComputeTestJSON,
|
||||
FloatingIPDetailsTestBase):
|
||||
class FloatingIPDetailsTest(base.BaseCompTest, FloatingIPDetailsTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(FloatingIPDetailsTestJSON, cls).setUpClass()
|
||||
super(FloatingIPDetailsTest, cls).setUpClass()
|
||||
FloatingIPDetailsTestBase.setUpClass(cls)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
FloatingIPDetailsTestBase.tearDownClass(cls)
|
||||
super(FloatingIPDetailsTestJSON, cls).tearDownClass()
|
||||
|
||||
|
||||
class FloatingIPDetailsTestXML(base.BaseComputeTestXML,
|
||||
FloatingIPDetailsTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(FloatingIPDetailsTestXML, cls).setUpClass()
|
||||
FloatingIPDetailsTestBase.setUpClass(cls)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
FloatingIPDetailsTestBase.tearDownClass(cls)
|
||||
super(FloatingIPDetailsTestXML, cls).tearDownClass()
|
||||
super(FloatingIPDetailsTest, cls).tearDownClass()
|
||||
|
||||
@@ -19,10 +19,10 @@ from nose.plugins.attrib import attr
|
||||
|
||||
from tempest.common.utils.data_utils import rand_name
|
||||
from tempest import exceptions
|
||||
from tempest.tests.compute.base import BaseComputeTest
|
||||
from tempest.tests.compute.base import BaseCompTest
|
||||
|
||||
|
||||
class ImagesMetadataTest(BaseComputeTest):
|
||||
class ImagesMetadataTest(BaseCompTest):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
|
||||
@@ -213,40 +213,13 @@ class ImagesTestBase(object):
|
||||
"exceeds 35 character ID length limit")
|
||||
|
||||
|
||||
class ImagesTestJSON(base.BaseComputeTestJSON,
|
||||
ImagesTestBase):
|
||||
class ImagesTest(base.BaseCompTest, ImagesTestBase):
|
||||
def tearDown(self):
|
||||
ImagesTestBase.tearDown(self)
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ImagesTestJSON, cls).setUpClass()
|
||||
cls.client = cls.images_client
|
||||
cls.servers_client = cls.servers_client
|
||||
|
||||
cls.image_ids = []
|
||||
|
||||
if compute.MULTI_USER:
|
||||
if cls.config.compute.allow_tenant_isolation:
|
||||
creds = cls._get_isolated_creds()
|
||||
username, tenant_name, password = creds
|
||||
cls.alt_manager = clients.Manager(username=username,
|
||||
password=password,
|
||||
tenant_name=tenant_name)
|
||||
else:
|
||||
# Use the alt_XXX credentials in the config file
|
||||
cls.alt_manager = clients.AltManager()
|
||||
cls.alt_client = cls.alt_manager.images_client
|
||||
|
||||
|
||||
class ImagesTestXML(base.BaseComputeTestXML,
|
||||
ImagesTestBase):
|
||||
def tearDown(self):
|
||||
ImagesTestBase.tearDown(self)
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ImagesTestXML, cls).setUpClass()
|
||||
super(ImagesTest, cls).setUpClass()
|
||||
cls.client = cls.images_client
|
||||
cls.servers_client = cls.servers_client
|
||||
|
||||
|
||||
@@ -187,43 +187,14 @@ class ImagesOneServerTestBase(object):
|
||||
self.assertRaises(exceptions.NotFound, self.client.get_image, image_id)
|
||||
|
||||
|
||||
class ImagesOneServerTestJSON(base.BaseComputeTestJSON,
|
||||
ImagesOneServerTestBase):
|
||||
class ImagesOneServerTest(base.BaseCompTest, ImagesOneServerTestBase):
|
||||
|
||||
def tearDown(self):
|
||||
ImagesOneServerTestBase.tearDown(self)
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ImagesOneServerTestJSON, cls).setUpClass()
|
||||
cls.client = cls.images_client
|
||||
cls.servers_client = cls.servers_client
|
||||
cls.server = cls.create_server()
|
||||
|
||||
cls.image_ids = []
|
||||
|
||||
if compute.MULTI_USER:
|
||||
if cls.config.compute.allow_tenant_isolation:
|
||||
creds = cls._get_isolated_creds()
|
||||
username, tenant_name, password = creds
|
||||
cls.alt_manager = clients.Manager(username=username,
|
||||
password=password,
|
||||
tenant_name=tenant_name)
|
||||
else:
|
||||
# Use the alt_XXX credentials in the config file
|
||||
cls.alt_manager = clients.AltManager()
|
||||
cls.alt_client = cls.alt_manager.images_client
|
||||
|
||||
|
||||
class ImagesOneServerTestXML(base.BaseComputeTestXML,
|
||||
ImagesOneServerTestBase):
|
||||
|
||||
def tearDown(self):
|
||||
ImagesOneServerTestBase.tearDown(self)
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ImagesOneServerTestXML, cls).setUpClass()
|
||||
super(ImagesOneServerTest, cls).setUpClass()
|
||||
cls.client = cls.images_client
|
||||
cls.servers_client = cls.servers_client
|
||||
cls.server = cls.create_server()
|
||||
|
||||
@@ -24,7 +24,7 @@ from tempest import whitebox
|
||||
|
||||
|
||||
@attr(type='whitebox')
|
||||
class ImagesWhiteboxTest(whitebox.ComputeWhiteboxTest, base.BaseComputeTest):
|
||||
class ImagesWhiteboxTest(whitebox.ComputeWhiteboxTest, base.BaseCompTest):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
|
||||
@@ -20,10 +20,10 @@ from nose.plugins.attrib import attr
|
||||
from tempest.common.utils.data_utils import parse_image_id
|
||||
from tempest.common.utils.data_utils import rand_name
|
||||
from tempest import exceptions
|
||||
from tempest.tests.compute.base import BaseComputeTest
|
||||
from tempest.tests.compute.base import BaseCompTest
|
||||
|
||||
|
||||
class ListImageFiltersTest(BaseComputeTest):
|
||||
class ListImageFiltersTest(BaseCompTest):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
|
||||
@@ -20,10 +20,10 @@ from nose.plugins.attrib import attr
|
||||
from tempest.common.utils.data_utils import parse_image_id
|
||||
from tempest.common.utils.data_utils import rand_name
|
||||
from tempest import exceptions
|
||||
from tempest.tests.compute.base import BaseComputeTest
|
||||
from tempest.tests.compute.base import BaseCompTest
|
||||
|
||||
|
||||
class ListImagesTest(BaseComputeTest):
|
||||
class ListImagesTest(BaseCompTest):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
|
||||
@@ -20,8 +20,7 @@ import unittest2 as unittest
|
||||
|
||||
from tempest.common.utils.data_utils import rand_name
|
||||
from tempest import exceptions
|
||||
from tempest.tests.compute.base import BaseComputeTestJSON
|
||||
from tempest.tests.compute.base import BaseComputeTestXML
|
||||
from tempest.tests.compute.base import BaseCompTest
|
||||
|
||||
|
||||
class KeyPairsTestBase(object):
|
||||
@@ -222,15 +221,8 @@ class KeyPairsTestBase(object):
|
||||
self.fail('invalid name')
|
||||
|
||||
|
||||
class KeyPairsTestXML(BaseComputeTestXML, KeyPairsTestBase):
|
||||
class KeyPairsTest(BaseCompTest, KeyPairsTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(KeyPairsTestXML, cls).setUpClass()
|
||||
cls.client = cls.keypairs_client
|
||||
|
||||
|
||||
class KeyPairsTestJSON(BaseComputeTestJSON, KeyPairsTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(KeyPairsTestJSON, cls).setUpClass()
|
||||
super(KeyPairsTest, cls).setUpClass()
|
||||
cls.client = cls.keypairs_client
|
||||
|
||||
@@ -20,7 +20,7 @@ import unittest2 as unittest
|
||||
from tempest.tests.compute import base
|
||||
|
||||
|
||||
class AbsoluteLimitsTest(object):
|
||||
class AbsoluteLimitsTestBase(object):
|
||||
|
||||
@staticmethod
|
||||
def setUpClass(cls):
|
||||
@@ -50,17 +50,8 @@ class AbsoluteLimitsTest(object):
|
||||
% ', '.join(ele for ele in missing_elements))
|
||||
|
||||
|
||||
class AbsoluteLimitsTestJSON(base.BaseComputeTestJSON,
|
||||
AbsoluteLimitsTest):
|
||||
class AbsoluteLimitsTest(base.BaseCompTest, AbsoluteLimitsTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(AbsoluteLimitsTestJSON, cls).setUpClass()
|
||||
AbsoluteLimitsTest.setUpClass(cls)
|
||||
|
||||
|
||||
class AbsoluteLimitsTestXML(base.BaseComputeTestXML,
|
||||
AbsoluteLimitsTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(AbsoluteLimitsTestXML, cls).setUpClass()
|
||||
AbsoluteLimitsTest.setUpClass(cls)
|
||||
super(AbsoluteLimitsTest, cls).setUpClass()
|
||||
AbsoluteLimitsTestBase.setUpClass(cls)
|
||||
|
||||
@@ -22,7 +22,7 @@ from tempest import exceptions
|
||||
from tempest.tests.compute import base
|
||||
|
||||
|
||||
class SecurityGroupRulesTest(object):
|
||||
class SecurityGroupRulesTestBase(object):
|
||||
|
||||
@staticmethod
|
||||
def setUpClass(cls):
|
||||
@@ -244,17 +244,8 @@ class SecurityGroupRulesTest(object):
|
||||
'with nonexistant rule id')
|
||||
|
||||
|
||||
class SecurityGroupRulesTestJSON(base.BaseComputeTestJSON,
|
||||
SecurityGroupRulesTest):
|
||||
class SecurityGroupRulesTest(base.BaseCompTest, SecurityGroupRulesTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(SecurityGroupRulesTestJSON, cls).setUpClass()
|
||||
SecurityGroupRulesTest.setUpClass(cls)
|
||||
|
||||
|
||||
class SecurityGroupRulesTestXML(base.BaseComputeTestXML,
|
||||
SecurityGroupRulesTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(SecurityGroupRulesTestXML, cls).setUpClass()
|
||||
SecurityGroupRulesTest.setUpClass(cls)
|
||||
super(SecurityGroupRulesTest, cls).setUpClass()
|
||||
SecurityGroupRulesTestBase.setUpClass(cls)
|
||||
|
||||
@@ -22,7 +22,7 @@ from tempest import exceptions
|
||||
from tempest.tests.compute import base
|
||||
|
||||
|
||||
class SecurityGroupsTest(object):
|
||||
class SecurityGroupsTestBase(object):
|
||||
|
||||
@staticmethod
|
||||
def setUpClass(cls):
|
||||
@@ -298,17 +298,8 @@ class SecurityGroupsTest(object):
|
||||
self.assertEqual(202, resp.status)
|
||||
|
||||
|
||||
class SecurityGroupsTestJSON(base.BaseComputeTestJSON,
|
||||
SecurityGroupsTest):
|
||||
class SecurityGroupsTest(base.BaseCompTest, SecurityGroupsTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(SecurityGroupsTestJSON, cls).setUpClass()
|
||||
SecurityGroupsTest.setUpClass(cls)
|
||||
|
||||
|
||||
class SecurityGroupsTestXML(base.BaseComputeTestXML,
|
||||
SecurityGroupsTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(SecurityGroupsTestXML, cls).setUpClass()
|
||||
SecurityGroupsTest.setUpClass(cls)
|
||||
super(SecurityGroupsTest, cls).setUpClass()
|
||||
SecurityGroupsTestBase.setUpClass(cls)
|
||||
|
||||
@@ -23,7 +23,7 @@ from tempest import exceptions
|
||||
from tempest.tests.compute import base
|
||||
|
||||
|
||||
class ConsoleOutputTest(object):
|
||||
class ConsoleOutputTestBase(object):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(self, cls):
|
||||
@@ -87,28 +87,13 @@ class ConsoleOutputTest(object):
|
||||
|
||||
|
||||
@attr(type='smoke')
|
||||
class ConsoleOutputTestJSON(base.BaseComputeTestJSON,
|
||||
ConsoleOutputTest):
|
||||
class ConsoleOutputTest(base.BaseCompTest, ConsoleOutputTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ConsoleOutputTestJSON, cls).setUpClass()
|
||||
ConsoleOutputTest.setUpClass(cls)
|
||||
super(ConsoleOutputTest, cls).setUpClass()
|
||||
ConsoleOutputTestBase.setUpClass(cls)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
ConsoleOutputTest.tearDownClass(cls)
|
||||
super(ConsoleOutputTestJSON, cls).tearDownClass()
|
||||
|
||||
|
||||
@attr(type='smoke')
|
||||
class ConsoleOutputTestXML(base.BaseComputeTestXML,
|
||||
ConsoleOutputTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ConsoleOutputTestXML, cls).setUpClass()
|
||||
ConsoleOutputTest.setUpClass(cls)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
ConsoleOutputTest.tearDownClass(cls)
|
||||
super(ConsoleOutputTestXML, cls).tearDownClass()
|
||||
ConsoleOutputTestBase.tearDownClass(cls)
|
||||
super(ConsoleOutputTest, cls).tearDownClass()
|
||||
|
||||
@@ -29,7 +29,7 @@ from tempest.tests import compute
|
||||
from tempest.tests.compute import base
|
||||
|
||||
|
||||
class ServersTest(object):
|
||||
class ServersTestBase(object):
|
||||
|
||||
run_ssh = tempest.config.TempestConfig().compute.run_ssh
|
||||
|
||||
@@ -122,8 +122,7 @@ class ServersTest(object):
|
||||
|
||||
|
||||
@attr(type='positive')
|
||||
class ServersTestAutoDisk(base.BaseComputeTestJSON,
|
||||
ServersTest):
|
||||
class ServersTestAutoDisk(base.BaseCompTest, ServersTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
if not compute.DISK_CONFIG_ENABLED:
|
||||
@@ -131,17 +130,16 @@ class ServersTestAutoDisk(base.BaseComputeTestJSON,
|
||||
raise nose.SkipTest(msg)
|
||||
super(ServersTestAutoDisk, cls).setUpClass()
|
||||
cls.disk_config = 'AUTO'
|
||||
ServersTest.setUpClass(cls)
|
||||
ServersTestBase.setUpClass(cls)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
ServersTest.tearDownClass(cls)
|
||||
ServersTestBase.tearDownClass(cls)
|
||||
super(ServersTestAutoDisk, cls).tearDownClass()
|
||||
|
||||
|
||||
@attr(type='positive')
|
||||
class ServersTestManualDisk(base.BaseComputeTestJSON,
|
||||
ServersTest):
|
||||
class ServersTestManualDisk(base.BaseCompTest, ServersTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
if not compute.DISK_CONFIG_ENABLED:
|
||||
@@ -149,39 +147,23 @@ class ServersTestManualDisk(base.BaseComputeTestJSON,
|
||||
raise nose.SkipTest(msg)
|
||||
super(ServersTestManualDisk, cls).setUpClass()
|
||||
cls.disk_config = 'MANUAL'
|
||||
ServersTest.setUpClass(cls)
|
||||
ServersTestBase.setUpClass(cls)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
ServersTest.tearDownClass(cls)
|
||||
ServersTestBase.tearDownClass(cls)
|
||||
super(ServersTestManualDisk, cls).tearDownClass()
|
||||
|
||||
|
||||
@attr(type='smoke')
|
||||
class ServersTestJSON(base.BaseComputeTestJSON,
|
||||
ServersTest):
|
||||
class ServersTest(base.BaseCompTest, ServersTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ServersTestJSON, cls).setUpClass()
|
||||
super(ServersTest, cls).setUpClass()
|
||||
cls.disk_config = None
|
||||
ServersTest.setUpClass(cls)
|
||||
ServersTestBase.setUpClass(cls)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
ServersTest.tearDownClass(cls)
|
||||
super(ServersTestJSON, cls).tearDownClass()
|
||||
|
||||
|
||||
@attr(type='smoke')
|
||||
class ServersTestXML(base.BaseComputeTestXML,
|
||||
ServersTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ServersTestXML, cls).setUpClass()
|
||||
cls.disk_config = None
|
||||
ServersTest.setUpClass(cls)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
ServersTest.tearDownClass(cls)
|
||||
super(ServersTestXML, cls).tearDownClass()
|
||||
ServersTestBase.tearDownClass(cls)
|
||||
super(ServersTest, cls).tearDownClass()
|
||||
|
||||
@@ -22,10 +22,10 @@ import unittest2 as unittest
|
||||
from tempest.common.utils.data_utils import rand_name
|
||||
from tempest import exceptions
|
||||
from tempest.tests import compute
|
||||
from tempest.tests.compute.base import BaseComputeTest
|
||||
from tempest.tests.compute.base import BaseCompTest
|
||||
|
||||
|
||||
class TestServerDiskConfig(BaseComputeTest):
|
||||
class TestServerDiskConfig(BaseCompTest):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
|
||||
@@ -27,7 +27,7 @@ from tempest.tests.compute import base
|
||||
from tempest.tests import utils
|
||||
|
||||
|
||||
class ListServerFiltersTest(object):
|
||||
class ListServerFiltersTestBase(object):
|
||||
|
||||
@staticmethod
|
||||
def setUpClass(cls):
|
||||
@@ -204,27 +204,13 @@ class ListServerFiltersTest(object):
|
||||
return min_detail
|
||||
|
||||
|
||||
class ListServerFiltersTestJSON(base.BaseComputeTestJSON,
|
||||
ListServerFiltersTest):
|
||||
class ListServerFiltersTest(base.BaseCompTest, ListServerFiltersTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ListServerFiltersTestJSON, cls).setUpClass()
|
||||
ListServerFiltersTest.setUpClass(cls)
|
||||
super(ListServerFiltersTest, cls).setUpClass()
|
||||
ListServerFiltersTestBase.setUpClass(cls)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
super(ListServerFiltersTestJSON, cls).tearDownClass()
|
||||
ListServerFiltersTest.tearDownClass(cls)
|
||||
|
||||
|
||||
class ListServerFiltersTestXML(base.BaseComputeTestXML,
|
||||
ListServerFiltersTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ListServerFiltersTestXML, cls).setUpClass()
|
||||
ListServerFiltersTest.setUpClass(cls)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
super(ListServerFiltersTestXML, cls).tearDownClass()
|
||||
ListServerFiltersTest.tearDownClass(cls)
|
||||
super(ListServerFiltersTest, cls).tearDownClass()
|
||||
ListServerFiltersTestBase.tearDownClass(cls)
|
||||
|
||||
@@ -25,10 +25,10 @@ from tempest import clients
|
||||
from tempest.common.utils.data_utils import rand_name
|
||||
from tempest import exceptions
|
||||
from tempest.tests import compute
|
||||
from tempest.tests.compute.base import BaseComputeTest
|
||||
from tempest.tests.compute.base import BaseCompTest
|
||||
|
||||
|
||||
class ListServersNegativeTest(BaseComputeTest):
|
||||
class ListServersNegativeTest(BaseCompTest):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
|
||||
@@ -193,10 +193,9 @@ class ServerActionsTestBase(object):
|
||||
' be allowed')
|
||||
|
||||
|
||||
class ServerActionsTestXML(base.BaseComputeTestXML,
|
||||
ServerActionsTestBase):
|
||||
class ServerActionsTest(base.BaseCompTest, ServerActionsTestBase):
|
||||
def setUp(self):
|
||||
super(ServerActionsTestXML, self).setUp()
|
||||
super(ServerActionsTest, self).setUp()
|
||||
# Check if the server is in a clean state after test
|
||||
try:
|
||||
self.client.wait_for_server_status(self.server_id, 'ACTIVE')
|
||||
@@ -212,7 +211,7 @@ class ServerActionsTestXML(base.BaseComputeTestXML,
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ServerActionsTestXML, cls).setUpClass()
|
||||
super(ServerActionsTest, cls).setUpClass()
|
||||
cls.client = cls.servers_client
|
||||
cls.name = rand_name('server')
|
||||
resp, server = cls.create_server_with_extras(cls.name,
|
||||
@@ -225,39 +224,4 @@ class ServerActionsTestXML(base.BaseComputeTestXML,
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
cls.clear_servers()
|
||||
super(ServerActionsTestXML, cls).tearDownClass()
|
||||
|
||||
|
||||
class ServerActionsTestJSON(base.BaseComputeTestJSON,
|
||||
ServerActionsTestBase):
|
||||
def setUp(self):
|
||||
super(ServerActionsTestJSON, self).setUp()
|
||||
# Check if the server is in a clean state after test
|
||||
try:
|
||||
self.client.wait_for_server_status(self.server_id, 'ACTIVE')
|
||||
except exceptions:
|
||||
# Rebuild server if something happened to it during a test
|
||||
self.clear_servers()
|
||||
resp, server = self.create_server_with_extras(self.name,
|
||||
self.image_ref,
|
||||
self.flavor_ref)
|
||||
self.server_id = server['id']
|
||||
self.password = server['adminPass']
|
||||
self.client.wait_for_server_status(self.server_id, 'ACTIVE')
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ServerActionsTestJSON, cls).setUpClass()
|
||||
cls.client = cls.servers_client
|
||||
cls.name = rand_name('server')
|
||||
resp, server = cls.create_server_with_extras(cls.name,
|
||||
cls.image_ref,
|
||||
cls.flavor_ref)
|
||||
cls.server_id = server['id']
|
||||
cls.password = server['adminPass']
|
||||
cls.client.wait_for_server_status(cls.server_id, 'ACTIVE')
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
cls.clear_servers()
|
||||
super(ServerActionsTestJSON, cls).tearDownClass()
|
||||
super(ServerActionsTest, cls).tearDownClass()
|
||||
|
||||
@@ -19,10 +19,10 @@ from nose.plugins.attrib import attr
|
||||
|
||||
from tempest.common.utils.data_utils import rand_name
|
||||
from tempest import exceptions
|
||||
from tempest.tests.compute.base import BaseComputeTest
|
||||
from tempest.tests.compute.base import BaseCompTest
|
||||
|
||||
|
||||
class ServerAddressesTest(BaseComputeTest):
|
||||
class ServerAddressesTest(BaseCompTest):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
|
||||
@@ -19,10 +19,10 @@ from nose.plugins.attrib import attr
|
||||
|
||||
from tempest.common.utils.data_utils import rand_name
|
||||
from tempest import exceptions
|
||||
from tempest.tests.compute.base import BaseComputeTest
|
||||
from tempest.tests.compute.base import BaseCompTest
|
||||
|
||||
|
||||
class ServerMetadataTest(BaseComputeTest):
|
||||
class ServerMetadataTest(BaseCompTest):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
|
||||
@@ -78,21 +78,9 @@ class ServerPersonalityTestBase(object):
|
||||
self.client.delete_server(server['id'])
|
||||
|
||||
|
||||
class ServerPersonalityTestXML(base.BaseComputeTestXML,
|
||||
ServerPersonalityTestBase):
|
||||
class ServerPersonalityTest(base.BaseCompTest, ServerPersonalityTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = "xml"
|
||||
super(ServerPersonalityTestXML, cls).setUpClass()
|
||||
cls.client = cls.servers_client
|
||||
cls.user_client = cls.limits_client
|
||||
|
||||
|
||||
class ServerPersonalityTestJSON(base.BaseComputeTestJSON,
|
||||
ServerPersonalityTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = "json"
|
||||
super(ServerPersonalityTestJSON, cls).setUpClass()
|
||||
super(ServerPersonalityTest, cls).setUpClass()
|
||||
cls.client = cls.servers_client
|
||||
cls.user_client = cls.limits_client
|
||||
|
||||
@@ -156,10 +156,10 @@ class ServersTestBase(object):
|
||||
self.assertEqual('204', resp['status'])
|
||||
|
||||
|
||||
class ServersTestJSON(base.BaseComputeTestJSON, ServersTestBase):
|
||||
class ServersTest(base.BaseCompTest, ServersTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ServersTestJSON, cls).setUpClass()
|
||||
super(ServersTest, cls).setUpClass()
|
||||
cls.client = cls.servers_client
|
||||
|
||||
def tearDown(self):
|
||||
@@ -169,20 +169,4 @@ class ServersTestJSON(base.BaseComputeTestJSON, ServersTestBase):
|
||||
# memory
|
||||
self.clear_servers()
|
||||
|
||||
super(ServersTestJSON, self).tearDown()
|
||||
|
||||
|
||||
class ServersTestXML(base.BaseComputeTestXML, ServersTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ServersTestXML, cls).setUpClass()
|
||||
cls.client = cls.servers_client
|
||||
|
||||
def tearDown(self):
|
||||
# clean up any remaining servers and wait for them to fully
|
||||
# delete. This is done because delete calls are async, and if
|
||||
# deletes are running slow we could very well overrun system
|
||||
# memory
|
||||
self.clear_servers()
|
||||
|
||||
super(ServersTestXML, self).tearDown()
|
||||
super(ServersTest, self).tearDown()
|
||||
|
||||
@@ -24,10 +24,10 @@ import unittest2 as unittest
|
||||
from tempest import clients
|
||||
from tempest.common.utils.data_utils import rand_name
|
||||
from tempest import exceptions
|
||||
from tempest.tests.compute.base import BaseComputeTest
|
||||
from tempest.tests.compute.base import BaseCompTest
|
||||
|
||||
|
||||
class ServersNegativeTest(BaseComputeTest):
|
||||
class ServersNegativeTest(BaseCompTest):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
|
||||
@@ -25,10 +25,10 @@ from tempest.common.utils.data_utils import parse_image_id
|
||||
from tempest.common.utils.data_utils import rand_name
|
||||
from tempest import exceptions
|
||||
from tempest.tests import compute
|
||||
from tempest.tests.compute.base import BaseComputeTest
|
||||
from tempest.tests.compute.base import BaseCompTest
|
||||
|
||||
|
||||
class AuthorizationTest(BaseComputeTest):
|
||||
class AuthorizationTest(BaseCompTest):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
|
||||
@@ -30,17 +30,9 @@ class ExtensionsTestBase(object):
|
||||
self.assertEqual(200, resp.status)
|
||||
|
||||
|
||||
class ExtensionsTestJSON(base.BaseComputeTest, ExtensionsTestBase):
|
||||
class ExtensionsTest(base.BaseCompTest):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ExtensionsTestJSON, cls).setUpClass()
|
||||
cls.client = cls.extensions_client
|
||||
|
||||
|
||||
class ExtensionsTestXML(base.BaseComputeTestXML, ExtensionsTestBase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ExtensionsTestXML, cls).setUpClass()
|
||||
super(ExtensionsTest, cls).setUpClass()
|
||||
cls.client = cls.extensions_client
|
||||
|
||||
@@ -31,7 +31,7 @@ from tempest.tests.compute import base
|
||||
|
||||
|
||||
@attr(category='live-migration')
|
||||
class LiveBlockMigrationTest(base.BaseComputeTest):
|
||||
class LiveBlockMigrationTest(base.BaseCompTest):
|
||||
|
||||
live_migration_available = (
|
||||
config.TempestConfig().compute.live_migration_available)
|
||||
|
||||
@@ -17,10 +17,10 @@
|
||||
|
||||
from nose.plugins.attrib import attr
|
||||
|
||||
from tempest.tests.compute.base import BaseComputeTest
|
||||
from tempest.tests.compute.base import BaseCompTest
|
||||
|
||||
|
||||
class QuotasTest(BaseComputeTest):
|
||||
class QuotasTest(BaseCompTest):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
|
||||
@@ -107,17 +107,8 @@ class AttachVolumeTest(object):
|
||||
self._delete(server['id'], volume['id'])
|
||||
|
||||
|
||||
class TestAttachVolumeJSON(base.BaseComputeTestJSON,
|
||||
AttachVolumeTest):
|
||||
class TestAttachVolume(base.BaseCompTest, AttachVolumeTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(TestAttachVolumeJSON, cls).setUpClass()
|
||||
AttachVolumeTest.setUpClass(cls)
|
||||
|
||||
|
||||
class TestAttachVolumeXML(base.BaseComputeTestXML,
|
||||
AttachVolumeTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(TestAttachVolumeXML, cls).setUpClass()
|
||||
super(TestAttachVolume, cls).setUpClass()
|
||||
AttachVolumeTest.setUpClass(cls)
|
||||
|
||||
@@ -28,7 +28,7 @@ class VolumesGetTestBase(object):
|
||||
# CREATE, GET, DELETE Volume
|
||||
volume = None
|
||||
try:
|
||||
v_name = rand_name('Volume-%s-') % self._interface
|
||||
v_name = rand_name('Volume-')
|
||||
metadata = {'Type': 'work'}
|
||||
#Create volume
|
||||
resp, volume = self.client.create_volume(size=1,
|
||||
@@ -95,17 +95,8 @@ class VolumesGetTestBase(object):
|
||||
self.client.wait_for_resource_deletion(volume['id'])
|
||||
|
||||
|
||||
class VolumesGetTestXML(base.BaseComputeTestXML, VolumesGetTestBase):
|
||||
class VolumesGetTest(base.BaseCompTest, VolumesGetTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = "xml"
|
||||
super(VolumesGetTestXML, cls).setUpClass()
|
||||
cls.client = cls.volumes_extensions_client
|
||||
|
||||
|
||||
class VolumesGetTestJSON(base.BaseComputeTestJSON, VolumesGetTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = "json"
|
||||
super(VolumesGetTestJSON, cls).setUpClass()
|
||||
super(VolumesGetTest, cls).setUpClass()
|
||||
cls.client = cls.volumes_extensions_client
|
||||
|
||||
@@ -62,57 +62,10 @@ class VolumesTestBase(object):
|
||||
for m_vol in missing_volumes))
|
||||
|
||||
|
||||
class VolumesTestXML(base.BaseComputeTestXML, VolumesTestBase):
|
||||
class VolumesTest(base.BaseCompTest, VolumesTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = 'xml'
|
||||
super(VolumesTestXML, cls).setUpClass()
|
||||
cls.client = cls.volumes_extensions_client
|
||||
# Create 3 Volumes
|
||||
cls.volume_list = list()
|
||||
cls.volume_id_list = list()
|
||||
for i in range(3):
|
||||
v_name = rand_name('volume')
|
||||
metadata = {'Type': 'work'}
|
||||
v_name += cls._interface
|
||||
try:
|
||||
resp, volume = cls.client.create_volume(size=1,
|
||||
display_name=v_name,
|
||||
metadata=metadata)
|
||||
cls.client.wait_for_volume_status(volume['id'], 'available')
|
||||
resp, volume = cls.client.get_volume(volume['id'])
|
||||
cls.volume_list.append(volume)
|
||||
cls.volume_id_list.append(volume['id'])
|
||||
except Exception:
|
||||
if cls.volume_list:
|
||||
# We could not create all the volumes, though we were able
|
||||
# to create *some* of the volumes. This is typically
|
||||
# because the backing file size of the volume group is
|
||||
# too small. So, here, we clean up whatever we did manage
|
||||
# to create and raise a SkipTest
|
||||
for volume in cls.volume_list:
|
||||
cls.client.delete_volume(volume)
|
||||
msg = ("Failed to create ALL necessary volumes to run "
|
||||
"test. This typically means that the backing file "
|
||||
"size of the nova-volumes group is too small to "
|
||||
"create the 3 volumes needed by this test case")
|
||||
raise nose.SkipTest(msg)
|
||||
raise
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
# Delete the created Volumes
|
||||
for volume in cls.volume_list:
|
||||
resp, _ = cls.client.delete_volume(volume['id'])
|
||||
cls.client.wait_for_resource_deletion(volume['id'])
|
||||
super(VolumesTestXML, cls).tearDownClass()
|
||||
|
||||
|
||||
class VolumesTestJSON(base.BaseComputeTestJSON, VolumesTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = 'json'
|
||||
super(VolumesTestJSON, cls).setUpClass()
|
||||
super(VolumesTest, cls).setUpClass()
|
||||
cls.client = cls.volumes_extensions_client
|
||||
# Create 3 Volumes
|
||||
cls.volume_list = []
|
||||
@@ -120,7 +73,6 @@ class VolumesTestJSON(base.BaseComputeTestJSON, VolumesTestBase):
|
||||
for i in range(3):
|
||||
v_name = rand_name('volume-%s')
|
||||
metadata = {'Type': 'work'}
|
||||
v_name += cls._interface
|
||||
try:
|
||||
resp, volume = cls.client.create_volume(size=1,
|
||||
display_name=v_name,
|
||||
@@ -151,4 +103,4 @@ class VolumesTestJSON(base.BaseComputeTestJSON, VolumesTestBase):
|
||||
for volume in cls.volume_list:
|
||||
resp, _ = cls.client.delete_volume(volume['id'])
|
||||
cls.client.wait_for_resource_deletion(volume['id'])
|
||||
super(VolumesTestJSON, cls).tearDownClass()
|
||||
super(VolumesTest, cls).tearDownClass()
|
||||
|
||||
@@ -124,19 +124,8 @@ class VolumesNegativeTestBase(object):
|
||||
resp, volume = self.client.delete_volume('')
|
||||
|
||||
|
||||
class VolumesNegativeTestXML(base.BaseComputeTestXML,
|
||||
VolumesNegativeTestBase):
|
||||
class VolumesNegativeTest(base.BaseCompTest, VolumesNegativeTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = "xml"
|
||||
super(VolumesNegativeTestXML, cls).setUpClass()
|
||||
cls.client = cls.volumes_extensions_client
|
||||
|
||||
|
||||
class VolumesNegativeTestJSON(base.BaseComputeTestJSON,
|
||||
VolumesNegativeTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = "json"
|
||||
super(VolumesNegativeTestJSON, cls).setUpClass()
|
||||
super(VolumesNegativeTest, cls).setUpClass()
|
||||
cls.client = cls.volumes_extensions_client
|
||||
|
||||
@@ -100,21 +100,10 @@ class RolesTestBase(object):
|
||||
self.client.delete_role(role1_id)
|
||||
|
||||
|
||||
class RolesTestJSON(base.BaseIdentityAdminTestJSON,
|
||||
RolesTestBase):
|
||||
|
||||
class RolesTest(base.BaseIdentityAdminTest, RolesTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(RolesTestJSON, cls).setUpClass()
|
||||
RolesTestBase.setUpClass(cls)
|
||||
|
||||
|
||||
class RolesTestXML(base.BaseIdentityAdminTestXML,
|
||||
RolesTestBase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(RolesTestXML, cls).setUpClass()
|
||||
super(RolesTest, cls).setUpClass()
|
||||
RolesTestBase.setUpClass(cls)
|
||||
|
||||
|
||||
@@ -264,17 +253,8 @@ class UserRolesTestBase(RolesTestBase):
|
||||
tenant['id'], 'junk-role-aabbcc11')
|
||||
|
||||
|
||||
class UserRolesTestJSON(RolesTestJSON,
|
||||
UserRolesTestBase):
|
||||
class UserRolesTest(RolesTest, UserRolesTestBase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(UserRolesTestJSON, cls).setUpClass()
|
||||
|
||||
|
||||
class UserRolesTestXML(RolesTestXML,
|
||||
UserRolesTestBase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(UserRolesTestXML, cls).setUpClass()
|
||||
super(UserRolesTest, cls).setUpClass()
|
||||
|
||||
@@ -18,9 +18,12 @@
|
||||
import nose
|
||||
|
||||
from tempest.common.utils.data_utils import rand_name
|
||||
from tempest import config
|
||||
from tempest import exceptions
|
||||
from tempest.tests.identity import base
|
||||
|
||||
CONF = config.TempestConfig()
|
||||
|
||||
|
||||
class ServicesTestBase(object):
|
||||
|
||||
@@ -65,15 +68,9 @@ class ServicesTestBase(object):
|
||||
service_data['id'])
|
||||
|
||||
|
||||
class ServicesTestJSON(base.BaseIdentityAdminTestJSON, ServicesTestBase):
|
||||
class ServicesTest(base.BaseIdentityAdminTest, ServicesTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ServicesTestJSON, cls).setUpClass()
|
||||
|
||||
|
||||
class ServicesTestXML(base.BaseIdentityAdminTestXML,
|
||||
ServicesTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ServicesTestXML, cls).setUpClass()
|
||||
raise nose.SkipTest("Skipping until Bug #1061738 resolved")
|
||||
super(ServicesTest, cls).setUpClass()
|
||||
if CONF.general.use_xml:
|
||||
raise nose.SkipTest("Skipping until Bug #1061738 resolved")
|
||||
|
||||
@@ -274,16 +274,8 @@ class TenantsTestBase(object):
|
||||
self.data.tenants.remove(tenant)
|
||||
|
||||
|
||||
class TenantsTestJSON(base.BaseIdentityAdminTestJSON,
|
||||
TenantsTestBase):
|
||||
class TenantsTest(base.BaseIdentityAdminTest, TenantsTestBase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(TenantsTestJSON, cls).setUpClass()
|
||||
|
||||
|
||||
class TenantsTestXML(base.BaseIdentityAdminTestXML, TenantsTestBase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(TenantsTestXML, cls).setUpClass()
|
||||
super(TenantsTest, cls).setUpClass()
|
||||
|
||||
@@ -329,14 +329,7 @@ class UsersTestBase(object):
|
||||
'tenant ids %s' % fail)
|
||||
|
||||
|
||||
class UsersTestJSON(base.BaseIdentityAdminTestJSON,
|
||||
UsersTestBase):
|
||||
class UsersTest(base.BaseIdentityAdminTest, UsersTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(UsersTestJSON, cls).setUpClass()
|
||||
|
||||
|
||||
class UsersTestXML(base.BaseIdentityAdminTestXML, UsersTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(UsersTestXML, cls).setUpClass()
|
||||
super(UsersTest, cls).setUpClass()
|
||||
|
||||
@@ -26,7 +26,7 @@ class BaseIdAdminTest(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
os = clients.IdentityManager(interface=cls._interface)
|
||||
os = clients.IdentityManager()
|
||||
cls.client = os.admin_client
|
||||
cls.token_client = os.token_client
|
||||
|
||||
@@ -35,7 +35,7 @@ class BaseIdAdminTest(unittest.TestCase):
|
||||
|
||||
cls.data = DataGenerator(cls.client)
|
||||
|
||||
os = clients.IdentityNaManager(interface=cls._interface)
|
||||
os = clients.IdentityNaManager()
|
||||
cls.non_admin_client = os.admin_client
|
||||
|
||||
@classmethod
|
||||
@@ -69,20 +69,10 @@ class BaseIdAdminTest(unittest.TestCase):
|
||||
return role[0]
|
||||
|
||||
|
||||
class BaseIdentityAdminTestJSON(BaseIdAdminTest):
|
||||
class BaseIdentityAdminTest(BaseIdAdminTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = "json"
|
||||
super(BaseIdentityAdminTestJSON, cls).setUpClass()
|
||||
|
||||
BaseIdentityAdminTest = BaseIdentityAdminTestJSON
|
||||
|
||||
|
||||
class BaseIdentityAdminTestXML(BaseIdAdminTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = "xml"
|
||||
super(BaseIdentityAdminTestXML, cls).setUpClass()
|
||||
super(BaseIdentityAdminTest, cls).setUpClass()
|
||||
|
||||
|
||||
class DataGenerator(object):
|
||||
|
||||
@@ -42,26 +42,15 @@ class BaseVolumeAdminTest(BaseVolumeTest):
|
||||
"in configuration.")
|
||||
raise nose.SkipTest(msg)
|
||||
|
||||
if cls.config.general.use_xml:
|
||||
cls.client = volumes_types_xml_client.\
|
||||
VolumeTypesClient(cls.config, cls.adm_user, cls.adm_pass,
|
||||
cls.auth_url, cls.adm_tenant)
|
||||
else:
|
||||
cls.client = volume_types_json_client.\
|
||||
VolumeTypesClientJSON(cls.config, cls.adm_user, cls.adm_pass,
|
||||
cls.auth_url, cls.adm_tenant)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
super(BaseVolumeAdminTest, cls).tearDownClass()
|
||||
|
||||
|
||||
class BaseVolumeAdminTestJSON(BaseVolumeAdminTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = "json"
|
||||
super(BaseVolumeAdminTestJSON, cls).setUpClass()
|
||||
cls.client = volume_types_json_client.\
|
||||
VolumeTypesClientJSON(cls.config, cls.adm_user, cls.adm_pass,
|
||||
cls.auth_url, cls.adm_tenant)
|
||||
|
||||
|
||||
class BaseVolumeAdminTestXML(BaseVolumeAdminTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = "xml"
|
||||
super(BaseVolumeAdminTestXML, cls).setUpClass()
|
||||
cls.client = volume_types_xml_client.\
|
||||
VolumeTypesClientXML(cls.config, cls.adm_user, cls.adm_pass,
|
||||
cls.auth_url, cls.adm_tenant)
|
||||
|
||||
@@ -23,8 +23,7 @@ from nose.tools import raises
|
||||
|
||||
from tempest.common.utils.data_utils import rand_name
|
||||
from tempest import exceptions
|
||||
from tempest.tests.volume.admin.base import BaseVolumeAdminTestJSON
|
||||
from tempest.tests.volume.admin.base import BaseVolumeAdminTestXML
|
||||
from tempest.tests.volume.admin.base import BaseVolumeAdminTest
|
||||
|
||||
|
||||
class ExtraSpecsNegativeTestBase():
|
||||
@@ -136,29 +135,14 @@ class ExtraSpecsNegativeTestBase():
|
||||
str(uuid.uuid4()))
|
||||
|
||||
|
||||
class ExtraSpecsNegativeTestXML(BaseVolumeAdminTestXML,
|
||||
ExtraSpecsNegativeTestBase):
|
||||
class ExtraSpecsNegativeTest(BaseVolumeAdminTest, ExtraSpecsNegativeTestBase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ExtraSpecsNegativeTestXML, cls).setUpClass()
|
||||
super(ExtraSpecsNegativeTest, cls).setUpClass()
|
||||
ExtraSpecsNegativeTestBase.setUpClass(cls)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
super(ExtraSpecsNegativeTestXML, cls).tearDownClass()
|
||||
ExtraSpecsNegativeTestBase.tearDownClass(cls)
|
||||
|
||||
|
||||
class ExtraSpecsNegativeTestJSON(BaseVolumeAdminTestJSON,
|
||||
ExtraSpecsNegativeTestBase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(ExtraSpecsNegativeTestJSON, cls).setUpClass()
|
||||
ExtraSpecsNegativeTestBase.setUpClass(cls)
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
super(ExtraSpecsNegativeTestJSON, cls).tearDownClass()
|
||||
super(ExtraSpecsNegativeTest, cls).tearDownClass()
|
||||
ExtraSpecsNegativeTestBase.tearDownClass(cls)
|
||||
|
||||
@@ -22,8 +22,7 @@ from nose.plugins.attrib import attr
|
||||
from nose.tools import raises
|
||||
|
||||
from tempest import exceptions
|
||||
from tempest.tests.volume.admin.base import BaseVolumeAdminTestJSON
|
||||
from tempest.tests.volume.admin.base import BaseVolumeAdminTestXML
|
||||
from tempest.tests.volume.admin.base import BaseVolumeAdminTest
|
||||
|
||||
|
||||
class VolumeTypesNegativeTestBase():
|
||||
@@ -60,17 +59,9 @@ class VolumeTypesNegativeTestBase():
|
||||
self.client.delete_volume_type(str(uuid.uuid4()))
|
||||
|
||||
|
||||
class VolumesTypesNegativeTestXML(BaseVolumeAdminTestXML,
|
||||
VolumeTypesNegativeTestBase):
|
||||
class VolumesTypesNegativeTest(BaseVolumeAdminTest,
|
||||
VolumeTypesNegativeTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(VolumesTypesNegativeTestXML, cls).setUpClass()
|
||||
VolumeTypesNegativeTestBase.setUpClass(cls)
|
||||
|
||||
|
||||
class VolumesTypesNegativeTestJSON(BaseVolumeAdminTestJSON,
|
||||
VolumeTypesNegativeTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(VolumesTypesNegativeTestJSON, cls).setUpClass()
|
||||
super(VolumesTypesNegativeTest, cls).setUpClass()
|
||||
VolumeTypesNegativeTestBase.setUpClass(cls)
|
||||
|
||||
@@ -146,17 +146,3 @@ class BaseVolumeTest(unittest.TestCase):
|
||||
condition()
|
||||
return
|
||||
time.sleep(self.build_interval)
|
||||
|
||||
|
||||
class BaseVolumeTestJSON(BaseVolumeTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = "json"
|
||||
super(BaseVolumeTestJSON, cls).setUpClass()
|
||||
|
||||
|
||||
class BaseVolumeTestXML(BaseVolumeTest):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = "xml"
|
||||
super(BaseVolumeTestXML, cls).setUpClass()
|
||||
|
||||
@@ -95,17 +95,8 @@ class VolumesGetTestBase(object):
|
||||
self.client.wait_for_resource_deletion(volume['id'])
|
||||
|
||||
|
||||
class VolumesGetTestXML(base.BaseVolumeTestXML, VolumesGetTestBase):
|
||||
class VolumesGetTest(base.BaseVolumeTest, VolumesGetTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = "xml"
|
||||
super(VolumesGetTestXML, cls).setUpClass()
|
||||
cls.client = cls.volumes_client
|
||||
|
||||
|
||||
class VolumesGetTestJSON(base.BaseVolumeTestJSON, VolumesGetTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = "json"
|
||||
super(VolumesGetTestJSON, cls).setUpClass()
|
||||
super(VolumesGetTest, cls).setUpClass()
|
||||
cls.client = cls.volumes_client
|
||||
|
||||
@@ -59,11 +59,10 @@ class VolumesListTestBase(object):
|
||||
for m_vol in missing_vols))
|
||||
|
||||
|
||||
class VolumeListTestXML(base.BaseVolumeTestXML, VolumesListTestBase):
|
||||
class VolumeListTest(base.BaseVolumeTest, VolumesListTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = 'xml'
|
||||
super(VolumeListTestXML, cls).setUpClass()
|
||||
super(VolumeListTest, cls).setUpClass()
|
||||
cls.client = cls.volumes_client
|
||||
|
||||
# Create 3 test volumes
|
||||
@@ -103,51 +102,4 @@ class VolumeListTestXML(base.BaseVolumeTestXML, VolumesListTestBase):
|
||||
for volid in cls.volume_id_list:
|
||||
resp, _ = cls.client.delete_volume(volid)
|
||||
cls.client.wait_for_resource_deletion(volid)
|
||||
super(VolumeListTestXML, cls).tearDownClass()
|
||||
|
||||
|
||||
class VolumeListTestJSON(base.BaseVolumeTestJSON, VolumesListTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls._interface = 'json'
|
||||
super(VolumeListTestJSON, cls).setUpClass()
|
||||
cls.client = cls.volumes_client
|
||||
|
||||
# Create 3 test volumes
|
||||
cls.volume_list = []
|
||||
cls.volume_id_list = []
|
||||
for i in range(3):
|
||||
v_name = rand_name('volume')
|
||||
metadata = {'Type': 'work'}
|
||||
try:
|
||||
resp, volume = cls.client.create_volume(size=1,
|
||||
display_name=v_name,
|
||||
metadata=metadata)
|
||||
cls.client.wait_for_volume_status(volume['id'], 'available')
|
||||
resp, volume = cls.client.get_volume(volume['id'])
|
||||
cls.volume_list.append(volume)
|
||||
cls.volume_id_list.append(volume['id'])
|
||||
except Exception:
|
||||
if cls.volume_list:
|
||||
# We could not create all the volumes, though we were able
|
||||
# to create *some* of the volumes. This is typically
|
||||
# because the backing file size of the volume group is
|
||||
# too small. So, here, we clean up whatever we did manage
|
||||
# to create and raise a SkipTest
|
||||
for volid in cls.volume_id_list:
|
||||
cls.client.delete_volume(volid)
|
||||
cls.client.wait_for_resource_deletion(volid)
|
||||
msg = ("Failed to create ALL necessary volumes to run "
|
||||
"test. This typically means that the backing file "
|
||||
"size of the nova-volumes group is too small to "
|
||||
"create the 3 volumes needed by this test case")
|
||||
raise nose.SkipTest(msg)
|
||||
raise
|
||||
|
||||
@classmethod
|
||||
def tearDownClass(cls):
|
||||
# Delete the created volumes
|
||||
for volid in cls.volume_id_list:
|
||||
resp, _ = cls.client.delete_volume(volid)
|
||||
cls.client.wait_for_resource_deletion(volid)
|
||||
super(VolumeListTestJSON, cls).tearDownClass()
|
||||
super(VolumeListTest, cls).tearDownClass()
|
||||
|
||||
@@ -114,16 +114,8 @@ class VolumesNegativeTestBase(object):
|
||||
resp, volume = self.client.delete_volume('')
|
||||
|
||||
|
||||
class VolumesNegativeTestXML(base.BaseVolumeTestXML, VolumesNegativeTestBase):
|
||||
class VolumesNegativeTest(base.BaseVolumeTest, VolumesNegativeTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(VolumesNegativeTestXML, cls).setUpClass()
|
||||
cls.client = cls.volumes_client
|
||||
|
||||
|
||||
class VolumesNegativeTestJSON(base.BaseVolumeTestJSON,
|
||||
VolumesNegativeTestBase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
super(VolumesNegativeTestJSON, cls).setUpClass()
|
||||
super(VolumesNegativeTest, cls).setUpClass()
|
||||
cls.client = cls.volumes_client
|
||||
|
||||
Reference in New Issue
Block a user