summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--functest/ci/run_tests.py7
-rwxr-xr-xfunctest/ci/testcases.yaml12
-rw-r--r--functest/core/TestCasesBase.py1
-rwxr-xr-xfunctest/opnfv_tests/features/domino.py34
-rw-r--r--functest/opnfv_tests/features/sdnvpn.py15
-rw-r--r--functest/utils/openstack_tacker.py55
6 files changed, 69 insertions, 55 deletions
diff --git a/functest/ci/run_tests.py b/functest/ci/run_tests.py
index da9d28a91..66d5881de 100644
--- a/functest/ci/run_tests.py
+++ b/functest/ci/run_tests.py
@@ -140,10 +140,9 @@ def run_test(test, tier_name):
cls = getattr(module, run_dict['class'])
test_case = cls()
result = test_case.run()
-
- if result != TestCasesBase.TestCasesBase.EX_SKIP and \
- GlobalVariables.REPORT_FLAG:
- test_case.push_to_db()
+ if (result == TestCasesBase.TestCasesBase.EX_OK and
+ GlobalVariables.REPORT_FLAG):
+ result = test_case.push_to_db()
except ImportError:
logger.exception("Cannot import module {}".format(
run_dict['module']))
diff --git a/functest/ci/testcases.yaml b/functest/ci/testcases.yaml
index ffdfa51ec..d483e589e 100755
--- a/functest/ci/testcases.yaml
+++ b/functest/ci/testcases.yaml
@@ -185,18 +185,6 @@ tiers:
installer: '(fuel)|(compass)'
scenario: 'multisite'
-
- name: domino
- criteria: 'status == "PASS"'
- blocking: false
- description: >-
- Test suite for template distribution based on Domino
- dependencies:
- installer: 'joid'
- scenario: ''
- run:
- module: 'functest.opnfv_tests.features.domino'
- class: 'DominoTests'
- -
name: odl-sfc
criteria: 'status == "PASS"'
blocking: false
diff --git a/functest/core/TestCasesBase.py b/functest/core/TestCasesBase.py
index e1c002d46..ac2010718 100644
--- a/functest/core/TestCasesBase.py
+++ b/functest/core/TestCasesBase.py
@@ -19,7 +19,6 @@ class TestCasesBase(object):
EX_OK = os.EX_OK
EX_RUN_ERROR = os.EX_SOFTWARE
EX_PUSH_TO_DB_ERROR = os.EX_SOFTWARE - 1
- EX_SKIP = os.EX_SOFTWARE - 2
logger = ft_logger.Logger(__name__).getLogger()
diff --git a/functest/opnfv_tests/features/domino.py b/functest/opnfv_tests/features/domino.py
index 942b474f7..4d882e15d 100755
--- a/functest/opnfv_tests/features/domino.py
+++ b/functest/opnfv_tests/features/domino.py
@@ -20,60 +20,56 @@ import sys
import time
from functest.core import TestCasesBase
+import functest.utils.functest_constants as ft_constants
import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
-import functest.utils.functest_constants as ft_constants
-class DominoTests(TestCasesBase.TestCasesBase):
+class DominoCases(TestCasesBase.TestCasesBase):
+ DOMINO_REPO = \
+ ft_constants.DOMINO_REPO_DIR
+ RESULTS_DIR = \
+ ft_constants.FUNCTEST_RESULTS_DIR
logger = ft_logger.Logger("domino").getLogger()
def __init__(self):
- super(DominoTests, self).__init__()
+ super(DominoCases, self).__init__()
self.project_name = "domino"
self.case_name = "domino-multinode"
def main(self, **kwargs):
- cmd = ('cd %s && ./tests/run_multinode.sh' %
- ft_constants.DOMINO_REPO_DIR)
- log_file = os.path.join(
- ft_constants.FUNCTEST_RESULTS_DIR, "domino.log")
+ cmd = 'cd %s && ./tests/run_multinode.sh' % self.DOMINO_REPO
+ log_file = os.path.join(self.RESULTS_DIR, "domino.log")
start_time = time.time()
ret = ft_utils.execute_command(cmd,
output_file=log_file)
stop_time = time.time()
- duration = round(stop_time - start_time, 1)
- if ret == 0 and duration > 1:
+ if ret == 0:
self.logger.info("domino OK")
status = 'PASS'
- elif ret == 0 and duration <= 1:
- self.logger.info("domino TEST SKIPPED")
- status = 'SKIP'
else:
self.logger.info("domino FAILED")
status = "FAIL"
# report status only if tests run (FAIL OR PASS)
- if status is not "SKIP":
- self.criteria = status
- self.start_time = start_time
- self.stop_time = stop_time
- self.details = {}
+ self.criteria = status
+ self.start_time = start_time
+ self.stop_time = stop_time
+ self.details = {}
def run(self):
kwargs = {}
return self.main(**kwargs)
-
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument("-r", "--report",
help="Create json result file",
action="store_true")
args = vars(parser.parse_args())
- domino = DominoTests()
+ domino = DominoCases()
try:
result = domino.main(**args)
if result != TestCasesBase.TestCasesBase.EX_OK:
diff --git a/functest/opnfv_tests/features/sdnvpn.py b/functest/opnfv_tests/features/sdnvpn.py
index 567b5fbc0..1c07fe147 100644
--- a/functest/opnfv_tests/features/sdnvpn.py
+++ b/functest/opnfv_tests/features/sdnvpn.py
@@ -41,23 +41,18 @@ class SdnVpnTests(TestCasesBase.TestCasesBase):
output_file=log_file)
stop_time = time.time()
- duration = round(stop_time - start_time, 1)
- if ret == 0 and duration > 1:
+ if ret == 0:
self.logger.info("%s OK" % self.case_name)
status = 'PASS'
- elif ret == 0 and duration <= 1:
- self.logger.info("%s TEST SKIPPED" % self.case_name)
- status = 'SKIP'
else:
self.logger.info("%s FAILED" % self.case_name)
status = "FAIL"
# report status only if tests run (FAIL OR PASS)
- if status is not "SKIP":
- self.criteria = status
- self.start_time = start_time
- self.stop_time = stop_time
- self.details = {}
+ self.criteria = status
+ self.start_time = start_time
+ self.stop_time = stop_time
+ self.details = {}
def run(self):
kwargs = {}
diff --git a/functest/utils/openstack_tacker.py b/functest/utils/openstack_tacker.py
index 3e0c9cf45..3a6a34d41 100644
--- a/functest/utils/openstack_tacker.py
+++ b/functest/utils/openstack_tacker.py
@@ -15,7 +15,7 @@
from tackerclient.v1_0 import client as tackerclient
import functest.utils.functest_logger as ft_logger
import functest.utils.openstack_utils as os_utils
-import yaml
+import time
logger = ft_logger.Logger("tacker_utils").getLogger()
@@ -33,6 +33,7 @@ def get_id_from_name(tacker_client, resource_type, resource_name):
req_params = {'fields': 'id', 'name': resource_name}
endpoint = '/{0}s'.format(resource_type)
resp = tacker_client.get(endpoint, params=req_params)
+ endpoint = endpoint.replace('-', '_')
return resp[endpoint[1:]][0]['id']
except Exception, e:
logger.error("Error [get_id_from_name(tacker_client, "
@@ -53,7 +54,7 @@ def get_sfc_id(tacker_client, sfc_name):
def get_sfc_classifier_id(tacker_client, sfc_clf_name):
- return get_id_from_name(tacker_client, 'sfc_classifier', sfc_clf_name)
+ return get_id_from_name(tacker_client, 'sfc-classifier', sfc_clf_name)
def list_vnfds(tacker_client, verbose=False):
@@ -72,11 +73,13 @@ def create_vnfd(tacker_client, tosca_file=None):
vnfd_body = {}
if tosca_file is not None:
with open(tosca_file) as tosca_fd:
- vnfd_body = yaml.safe_load(tosca_fd)
- return tacker_client.create_vnfd(body=vnfd_body)
+ vnfd_body = tosca_fd.read()
+ logger.error(vnfd_body)
+ return tacker_client.create_vnfd(
+ body={"vnfd": {"attributes": {"vnfd": vnfd_body}}})
except Exception, e:
- logger.error("Error [create_vnfd(tacker_client, '%s')]: %s"
- % (tosca_file, e))
+ logger.exception("Error [create_vnfd(tacker_client, '%s')]: %s"
+ % (tosca_file, e))
return None
@@ -126,6 +129,38 @@ def create_vnf(tacker_client, vnf_name, vnfd_id=None, vnfd_name=None):
return None
+def wait_for_vnf(tacker_client, vnf_id=None, vnf_name=None):
+ try:
+ _id = None
+ if vnf_id is not None:
+ _id = vnf_id
+ elif vnf_name is not None:
+ while _id is None:
+ try:
+ _id = get_vnf_id(tacker_client, vnf_name)
+ except:
+ logger.error("Bazinga")
+ else:
+ raise Exception('You must specify vnf_id or vnf_name')
+ while True:
+ vnf = [v for v in list_vnfs(tacker_client, verbose=True)['vnfs']
+ if v['id'] == _id]
+ vnf = vnf[0]
+ logger.info('Waiting for vnf {0}'.format(str(vnf)))
+ if vnf['status'] == 'ERROR':
+ raise Exception('Error when booting vnf %s' % _id)
+ elif vnf['status'] == 'PENDING_CREATE':
+ time.sleep(3)
+ continue
+ else:
+ break
+ return _id
+ except Exception, e:
+ logger.error("error [wait_for_vnf(tacker_client, '%s', '%s')]: %s"
+ % (vnf_id, vnf_name, e))
+ return None
+
+
def delete_vnf(tacker_client, vnf_id=None, vnf_name=None):
try:
vnf = vnf_id
@@ -224,11 +259,13 @@ def create_sfc_classifier(tacker_client, sfc_clf_name, sfc_id=None,
else:
if sfc_name is None:
raise Exception('You need to provide an SFC id or name')
- sfc_clf_body['sfc']['chain'] = get_sfc_id(tacker_client, sfc_name)
+ sfc_clf_body['sfc_classifier']['chain'] = get_sfc_id(
+ tacker_client, sfc_name)
return tacker_client.create_sfc_classifier(body=sfc_clf_body)
except Exception, e:
- logger.error("error [create_sfc_classifier(tacker_client, '%s', '%s', "
- "'%s')]: %s" % (sfc_clf_name, sfc_id, sfc_name, match, e))
+ logger.error("error [create_sfc_classifier(tacker_client, '%s', '%s',"
+ " '%s', '%s')]: '%s'"
+ % (sfc_clf_name, sfc_id, sfc_name, str(match), e))
return None