tempest: migrate api and scnario tests from tempest
tempest: use ceilometer client manager instead of tempest one
This patch replaces client manager used in base test class from tempest
one to ceilometer dedicated manager which only has clients necessary to
specific ceilometer test cases.
The conflicts in config parameter are solved by adding '_plugin' in
paramter names as suffix.
This patch also includes the following changes in tempest.
- Ie99bbbe7655138c4c3ecae69ae0b361198a9651d
- I340d96c27f0e906df5b8a109494920e9cd3b21d1
- I14e16a1a7d9813b324ee40545c07f0e88fb637b7
Closes-Bug: 1549424
Depends-On: Ifc29617743b76b01eb6cd30a375cf47b56e4f635
Implements: blueprint tempest-plugin
Change-Id: Ifbe3152c486ddba79bb851c0ec3097213975f95c
diff --git a/ceilometer/tests/tempest/api/base.py b/ceilometer/tests/tempest/api/base.py
index 938bc88..103a123 100644
--- a/ceilometer/tests/tempest/api/base.py
+++ b/ceilometer/tests/tempest/api/base.py
@@ -13,27 +13,43 @@
import time
from oslo_utils import timeutils
-from tempest_lib import exceptions as lib_exc
-
from tempest.common import compute
from tempest.common.utils import data_utils
from tempest import config
from tempest import exceptions
+from tempest.lib import exceptions as lib_exc
import tempest.test
+from ceilometer.tests.tempest.service import client
+
+
CONF = config.CONF
+class ClientManager(client.Manager):
+
+ load_clients = [
+ 'servers_client',
+ 'compute_networks_client',
+ 'compute_floating_ips_client',
+ 'flavors_client',
+ 'image_client',
+ 'image_client_v2',
+ 'telemetry_client',
+ ]
+
+
class BaseTelemetryTest(tempest.test.BaseTestCase):
"""Base test case class for all Telemetry API tests."""
credentials = ['primary']
+ client_manager = ClientManager
@classmethod
def skip_checks(cls):
super(BaseTelemetryTest, cls).skip_checks()
- if not CONF.service_available.ceilometer:
+ if not CONF.service_available.ceilometer_plugin:
raise cls.skipException("Ceilometer support is required")
@classmethod
@@ -44,11 +60,11 @@
@classmethod
def setup_clients(cls):
super(BaseTelemetryTest, cls).setup_clients()
- cls.telemetry_client = cls.os.telemetry_client
- cls.servers_client = cls.os.servers_client
- cls.flavors_client = cls.os.flavors_client
- cls.image_client = cls.os.image_client
- cls.image_client_v2 = cls.os.image_client_v2
+ cls.telemetry_client = cls.os_primary.telemetry_client
+ cls.servers_client = cls.os_primary.servers_client
+ cls.flavors_client = cls.os_primary.flavors_client
+ cls.image_client = cls.os_primary.image_client
+ cls.image_client_v2 = cls.os_primary.image_client_v2
@classmethod
def resource_setup(cls):
@@ -67,7 +83,7 @@
def create_server(cls):
tenant_network = cls.get_tenant_network()
body, server = compute.create_test_server(
- cls.os,
+ cls.os_primary,
tenant_network=tenant_network,
name=data_utils.rand_name('ceilometer-instance'),
wait_until='ACTIVE')
@@ -75,10 +91,11 @@
return body
@classmethod
- def create_image(cls, client):
- body = client.create_image(
- data_utils.rand_name('image'), container_format='bare',
- disk_format='raw', visibility='private')
+ def create_image(cls, client, **kwargs):
+ body = client.create_image(name=data_utils.rand_name('image'),
+ container_format='bare',
+ disk_format='raw',
+ **kwargs)
# TODO(jswarren) Move ['image'] up to initial body value assignment
# once both v1 and v2 glance clients include the full response
# object.