aboutsummaryrefslogtreecommitdiffstats
path: root/functest/core
diff options
context:
space:
mode:
Diffstat (limited to 'functest/core')
-rw-r--r--[-rwxr-xr-x]functest/core/pytest_suite_runner.py0
-rw-r--r--functest/core/testcase_base.py47
-rw-r--r--functest/core/vnf_base.py12
3 files changed, 43 insertions, 16 deletions
diff --git a/functest/core/pytest_suite_runner.py b/functest/core/pytest_suite_runner.py
index 1eed92b5..1eed92b5 100755..100644
--- a/functest/core/pytest_suite_runner.py
+++ b/functest/core/pytest_suite_runner.py
diff --git a/functest/core/testcase_base.py b/functest/core/testcase_base.py
index 838b6398..ec46bc64 100644
--- a/functest/core/testcase_base.py
+++ b/functest/core/testcase_base.py
@@ -9,6 +9,7 @@
import os
+from functest.utils.constants import CONST
import functest.utils.functest_logger as ft_logger
import functest.utils.functest_utils as ft_utils
@@ -17,7 +18,7 @@ class TestcaseBase(object):
EX_OK = os.EX_OK
EX_RUN_ERROR = os.EX_SOFTWARE
- EX_PUSH_TO_DB_ERROR = os.EX_SOFTWARE - 1
+ EX_PUBLISH_RESULT_FAILED = os.EX_SOFTWARE - 1
EX_TESTCASE_FAILED = os.EX_SOFTWARE - 2
logger = ft_logger.Logger(__name__).getLogger()
@@ -43,21 +44,45 @@ class TestcaseBase(object):
self.logger.error("Run must be implemented")
return TestcaseBase.EX_RUN_ERROR
- def push_to_db(self):
+ def publish_report(self):
+ if "RESULTS_STORE" in os.environ:
+ CONST.results_test_db_url = os.environ['RESULTS_STORE']
+
try:
assert self.project_name
assert self.case_name
assert self.criteria
assert self.start_time
assert self.stop_time
- if ft_utils.push_results_to_db(
- self.project_name, self.case_name, self.start_time,
- self.stop_time, self.criteria, self.details):
- self.logger.info("The results were successfully pushed to DB")
- return TestcaseBase.EX_OK
+ if CONST.results_test_db_url.lower().startswith(
+ ("http://", "https://")):
+ self.push_to_db()
+ elif CONST.results_test_db_url.lower().startswith("file://"):
+ self.write_to_file()
else:
- self.logger.error("The results cannot be pushed to DB")
- return TestcaseBase.EX_PUSH_TO_DB_ERROR
+ self.logger.error("Please check parameter test_db_url and "
+ "OS environ variable RESTULTS_STORE")
+ return TestcaseBase.EX_PUBLISH_RESULT_FAILED
except Exception:
- self.logger.exception("The results cannot be pushed to DB")
- return TestcaseBase.EX_PUSH_TO_DB_ERROR
+ self.logger.exception("The results cannot be stored")
+ return TestcaseBase.EX_PUBLISH_RESULT_FAILED
+
+ def write_to_file(self):
+ if ft_utils.write_results_to_file(
+ self.project_name, self.case_name, self.start_time,
+ self.stop_time, self.criteria, self.details):
+ self.logger.info("The results were successfully written to a file")
+ return TestcaseBase.EX_OK
+ else:
+ self.logger.error("write results to a file failed")
+ return TestcaseBase.EX_PUBLISH_RESULT_FAILED
+
+ def push_to_db(self):
+ if ft_utils.push_results_to_db(
+ self.project_name, self.case_name, self.start_time,
+ self.stop_time, self.criteria, self.details):
+ self.logger.info("The results were successfully pushed to DB")
+ return TestcaseBase.EX_OK
+ else:
+ self.logger.error("The results cannot be pushed to DB")
+ return TestcaseBase.EX_PUBLISH_RESULT_FAILED
diff --git a/functest/core/vnf_base.py b/functest/core/vnf_base.py
index 99520494..4d019858 100644
--- a/functest/core/vnf_base.py
+++ b/functest/core/vnf_base.py
@@ -35,6 +35,7 @@ class VnfOnBoardingBase(base.TestcaseBase):
self.details['orchestrator'] = {}
self.details['vnf'] = {}
self.details['test_vnf'] = {}
+ self.images = {}
try:
self.tenant_name = CONST.__getattribute__(
'vnf_{}_tenant_name'.format(self.case_name))
@@ -44,7 +45,7 @@ class VnfOnBoardingBase(base.TestcaseBase):
raise Exception("Unknown VNF case=" + self.case_name)
try:
- self.tenant_images = CONST.__getattribute__(
+ self.images = CONST.__getattribute__(
'vnf_{}_tenant_images'.format(self.case_name))
except:
self.logger.warn("No tenant image defined for this VNF")
@@ -152,14 +153,15 @@ class VnfOnBoardingBase(base.TestcaseBase):
self.logger.info("Update OpenStack creds informations")
self.creds.update({
- "username": self.tenant_name,
- "password": self.tenant_name,
"tenant": self.tenant_name,
})
- self.glance_client = os_utils.get_glance_client(self.creds)
self.neutron_client = os_utils.get_neutron_client(self.creds)
self.nova_client = os_utils.get_nova_client(self.creds)
-
+ self.creds.update({
+ "username": self.tenant_name,
+ "password": self.tenant_name,
+ })
+ self.glance_client = os_utils.get_glance_client(self.creds)
self.logger.info("Upload some OS images if it doesn't exist")
temp_dir = os.path.join(self.data_dir, "tmp/")