aboutsummaryrefslogtreecommitdiffstats
path: root/functest/opnfv_tests/openstack
diff options
context:
space:
mode:
Diffstat (limited to 'functest/opnfv_tests/openstack')
-rw-r--r--functest/opnfv_tests/openstack/rally/blacklist.txt1
-rw-r--r--functest/opnfv_tests/openstack/rally/rally.py7
-rw-r--r--functest/opnfv_tests/openstack/refstack_client/refstack_client.py49
-rw-r--r--functest/opnfv_tests/openstack/snaps/snaps_utils.py13
-rw-r--r--functest/opnfv_tests/openstack/tempest/conf_utils.py15
-rw-r--r--functest/opnfv_tests/openstack/tempest/tempest.py46
6 files changed, 40 insertions, 91 deletions
diff --git a/functest/opnfv_tests/openstack/rally/blacklist.txt b/functest/opnfv_tests/openstack/rally/blacklist.txt
index 0623368d8..cdb5be663 100644
--- a/functest/opnfv_tests/openstack/rally/blacklist.txt
+++ b/functest/opnfv_tests/openstack/rally/blacklist.txt
@@ -48,6 +48,7 @@ scenario:
# panko in the deployment. This is not currently fulfilled
# Ref: https://docs.openstack.org/releasenotes/ceilometer/ocata.html
- 'CeilometerEvents..*'
+ - 'CeilometerTraits..*'
functionality:
-
diff --git a/functest/opnfv_tests/openstack/rally/rally.py b/functest/opnfv_tests/openstack/rally/rally.py
index fdef8bed0..2042b2d15 100644
--- a/functest/opnfv_tests/openstack/rally/rally.py
+++ b/functest/opnfv_tests/openstack/rally/rally.py
@@ -42,6 +42,10 @@ class RallyBase(testcase.OSGCTestCase):
CONST.__getattribute__('dir_functest_images'),
GLANCE_IMAGE_FILENAME)
GLANCE_IMAGE_FORMAT = CONST.__getattribute__('openstack_image_disk_format')
+ GLANCE_IMAGE_EXTRA_PROPERTIES = {}
+ if hasattr(CONST, 'openstack_extra_properties'):
+ GLANCE_IMAGE_EXTRA_PROPERTIES = CONST.__getattribute__(
+ 'openstack_extra_properties')
FLAVOR_NAME = "m1.tiny"
RALLY_DIR = pkg_resources.resource_filename(
@@ -462,7 +466,8 @@ class RallyBase(testcase.OSGCTestCase):
self.image_exists, self.image_id = os_utils.get_or_create_image(
self.GLANCE_IMAGE_NAME,
self.GLANCE_IMAGE_PATH,
- self.GLANCE_IMAGE_FORMAT)
+ self.GLANCE_IMAGE_FORMAT,
+ self.GLANCE_IMAGE_EXTRA_PROPERTIES)
if self.image_id is None:
raise Exception("Failed to get or create image '%s'" %
self.GLANCE_IMAGE_NAME)
diff --git a/functest/opnfv_tests/openstack/refstack_client/refstack_client.py b/functest/opnfv_tests/openstack/refstack_client/refstack_client.py
index 17e024666..42befe221 100644
--- a/functest/opnfv_tests/openstack/refstack_client/refstack_client.py
+++ b/functest/opnfv_tests/openstack/refstack_client/refstack_client.py
@@ -1,6 +1,7 @@
#!/usr/bin/env python
+
# Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
-# matthew.lijun@huawei.com wangwulin@huawei.com
+#
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
@@ -10,7 +11,6 @@
from __future__ import division
-
import argparse
import logging
import os
@@ -28,7 +28,9 @@ from functest.opnfv_tests.openstack.refstack_client.tempest_conf \
from functest.opnfv_tests.openstack.tempest import conf_utils
from functest.utils.constants import CONST
import functest.utils.functest_utils as ft_utils
-import functest.utils.openstack_utils as os_utils
+
+__author__ = ("Matthew Li <matthew.lijun@huawei.com>,"
+ "Linda Wang <wangwulin@huawei.com>")
# logging configuration """
LOGGER = logging.getLogger(__name__)
@@ -77,7 +79,7 @@ class RefstackClient(testcase.TestCase):
"""Run default defcore sys command."""
options = ["-v"] if not self.insecure else ["-v", self.insecure]
cmd = (["refstack-client", "test", "-c", self.confpath] +
- options + ["--test-list", self.defcorelist])
+ options + ["--test-list", self.defcorelist])
LOGGER.info("Starting Refstack_defcore test case: '%s'.", cmd)
with open(os.path.join(conf_utils.REFSTACK_RESULTS_DIR,
@@ -211,45 +213,6 @@ class RefstackClient(testcase.TestCase):
return res
- def create_snapshot(self):
- """
- Run the Tempest cleanup utility to initialize OS state.
- For details, see https://docs.openstack.org/tempest/latest/cleanup.html
-
- :return: TestCase.EX_OK
- """
- LOGGER.info("Initializing the saved state of the OpenStack deployment")
-
- # Make sure that Tempest is configured
- if not self.tempestconf:
- self.generate_conf()
-
- try:
- os_utils.init_tempest_cleanup(
- self.tempestconf.DEPLOYMENT_DIR, 'tempest.conf',
- os.path.join(conf_utils.REFSTACK_RESULTS_DIR,
- "tempest-cleanup-init.log"))
- except Exception as err:
- LOGGER.error(str(err))
- return testcase.TestCase.EX_RUN_ERROR
-
- return super(RefstackClient, self).create_snapshot()
-
- def clean(self):
- """
- Run the Tempest cleanup utility to delete and destroy OS resources.
- For details, see https://docs.openstack.org/tempest/latest/cleanup.html
- """
- LOGGER.info("Destroying the resources created for tempest")
-
- os_utils.perform_tempest_cleanup(
- self.tempestconf.DEPLOYMENT_DIR, 'tempest.conf',
- os.path.join(conf_utils.REFSTACK_RESULTS_DIR,
- "tempest-cleanup.log")
- )
-
- return super(RefstackClient, self).clean()
-
class RefstackClientParser(object): # pylint: disable=too-few-public-methods
"""Command line argument parser helper."""
diff --git a/functest/opnfv_tests/openstack/snaps/snaps_utils.py b/functest/opnfv_tests/openstack/snaps/snaps_utils.py
index 309f9db16..956b104ac 100644
--- a/functest/opnfv_tests/openstack/snaps/snaps_utils.py
+++ b/functest/opnfv_tests/openstack/snaps/snaps_utils.py
@@ -5,7 +5,7 @@
#
# http://www.apache.org/licenses/LICENSE-2.0
-from snaps.openstack.utils import neutron_utils
+from snaps.openstack.utils import neutron_utils, nova_utils
def get_ext_net_name(os_creds):
@@ -17,3 +17,14 @@ def get_ext_net_name(os_creds):
neutron = neutron_utils.neutron_client(os_creds)
ext_nets = neutron_utils.get_external_networks(neutron)
return ext_nets[0].name
+
+
+def get_active_compute_cnt(os_creds):
+ """
+ Returns the number of active compute servers
+ :param: os_creds: an instance of snaps OSCreds object
+ :return: the number of active compute servers
+ """
+ nova = nova_utils.nova_client(os_creds)
+ computes = nova_utils.get_availability_zone_hosts(nova, zone_name='nova')
+ return len(computes)
diff --git a/functest/opnfv_tests/openstack/tempest/conf_utils.py b/functest/opnfv_tests/openstack/tempest/conf_utils.py
index 2cdc2cf64..4202df625 100644
--- a/functest/opnfv_tests/openstack/tempest/conf_utils.py
+++ b/functest/opnfv_tests/openstack/tempest/conf_utils.py
@@ -119,18 +119,21 @@ def backup_tempest_config(conf_file):
"""
Copy config file to tempest results directory
"""
+ if not os.path.exists(TEMPEST_RESULTS_DIR):
+ os.makedirs(TEMPEST_RESULTS_DIR)
shutil.copyfile(conf_file,
os.path.join(TEMPEST_RESULTS_DIR, 'tempest.conf'))
def configure_tempest(deployment_dir, image_id=None, flavor_id=None,
- mode=None):
+ compute_cnt=None):
"""
Calls rally verify and updates the generated tempest.conf with
given parameters
"""
conf_file = configure_verifier(deployment_dir)
- configure_tempest_update_params(conf_file, image_id, flavor_id)
+ configure_tempest_update_params(conf_file, image_id, flavor_id,
+ compute_cnt)
def configure_tempest_defcore(deployment_dir, image_id, flavor_id,
@@ -186,8 +189,8 @@ def generate_test_accounts_file(tenant_id):
yaml.dump(accounts_list, f, default_flow_style=False)
-def configure_tempest_update_params(tempest_conf_file,
- image_id=None, flavor_id=None):
+def configure_tempest_update_params(tempest_conf_file, image_id=None,
+ flavor_id=None, compute_cnt=1):
"""
Add/update needed parameters into tempest.conf file
"""
@@ -210,6 +213,10 @@ def configure_tempest_update_params(tempest_conf_file,
config.set('compute', 'flavor_ref', flavor_id)
if FLAVOR_ID_ALT is not None:
config.set('compute', 'flavor_ref_alt', FLAVOR_ID_ALT)
+ if compute_cnt > 1:
+ # enable multinode tests
+ config.set('compute', 'min_compute_nodes', compute_cnt)
+
config.set('identity', 'region', 'RegionOne')
if os_utils.is_keystone_v3():
auth_version = 'v3'
diff --git a/functest/opnfv_tests/openstack/tempest/tempest.py b/functest/opnfv_tests/openstack/tempest/tempest.py
index b8a4e9adc..19200142d 100644
--- a/functest/opnfv_tests/openstack/tempest/tempest.py
+++ b/functest/opnfv_tests/openstack/tempest/tempest.py
@@ -20,10 +20,10 @@ import time
import yaml
from functest.core import testcase
+from functest.opnfv_tests.openstack.snaps import snaps_utils
from functest.opnfv_tests.openstack.tempest import conf_utils
from functest.utils.constants import CONST
import functest.utils.functest_utils as ft_utils
-import functest.utils.openstack_utils as os_utils
from snaps.openstack import create_flavor
from snaps.openstack.create_flavor import FlavorSettings, OpenStackFlavor
@@ -234,11 +234,13 @@ class TempestCommon(testcase.TestCase):
if not os.path.exists(conf_utils.TEMPEST_RESULTS_DIR):
os.makedirs(conf_utils.TEMPEST_RESULTS_DIR)
resources = self.resources.create()
+ compute_cnt = snaps_utils.get_active_compute_cnt(
+ self.resources.os_creds)
conf_utils.configure_tempest(
self.DEPLOYMENT_DIR,
image_id=resources.get("image_id"),
flavor_id=resources.get("flavor_id"),
- mode=self.MODE)
+ compute_cnt=compute_cnt)
self.generate_test_list(self.VERIFIER_REPO_DIR)
self.apply_tempest_blacklist()
self.run_verifier_tests()
@@ -253,46 +255,6 @@ class TempestCommon(testcase.TestCase):
self.stop_time = time.time()
return res
- def create_snapshot(self):
- """
- Run the Tempest cleanup utility to initialize OS state.
-
- :return: TestCase.EX_OK
- """
- logger.info("Initializing the saved state of the OpenStack deployment")
-
- if not os.path.exists(conf_utils.TEMPEST_RESULTS_DIR):
- os.makedirs(conf_utils.TEMPEST_RESULTS_DIR)
-
- # Make sure that the verifier is configured
- conf_utils.configure_verifier(self.DEPLOYMENT_DIR)
-
- try:
- os_utils.init_tempest_cleanup(
- self.DEPLOYMENT_DIR, 'tempest.conf',
- os.path.join(conf_utils.TEMPEST_RESULTS_DIR,
- "tempest-cleanup-init.log"))
- except Exception as err:
- logger.error(str(err))
- return testcase.TestCase.EX_RUN_ERROR
-
- return super(TempestCommon, self).create_snapshot()
-
- def clean(self):
- """
- Run the Tempest cleanup utility to delete and destroy OS resources
- created by Tempest.
- """
- logger.info("Destroying the resources created for refstack")
-
- os_utils.perform_tempest_cleanup(
- self.DEPLOYMENT_DIR, 'tempest.conf',
- os.path.join(conf_utils.TEMPEST_RESULTS_DIR,
- "tempest-cleanup.log")
- )
-
- return super(TempestCommon, self).clean()
-
class TempestSmokeSerial(TempestCommon):