from functest.core import TestCasesBase
import functest.utils.functest_logger as ft_logger
import functest.utils.openstack_utils as op_utils
+import functest.utils.functest_constants as ft_constants
class ODLResultVisitor(ResultVisitor):
class ODLTestCases(TestCasesBase.TestCasesBase):
- repos = "/home/opnfv/repos/"
- odl_test_repo = repos + "odl_test/"
- neutron_suite_dir = odl_test_repo + "csit/suites/openstack/neutron/"
- basic_suite_dir = odl_test_repo + "csit/suites/integration/basic/"
- res_dir = '/home/opnfv/functest/results/odl/'
+ repos = ft_constants.REPOS_DIR
+ odl_test_repo = os.path.join(repos, "odl_test")
+ neutron_suite_dir = os.path.join(odl_test_repo,
+ "csit/suites/openstack/neutron")
+ basic_suite_dir = os.path.join(odl_test_repo,
+ "csit/suites/integration/basic")
+ res_dir = os.path.join(ft_constants.FUNCTEST_RESULTS_DIR, "odl")
+
logger = ft_logger.Logger("opendaylight").getLogger()
def __init__(self):
@classmethod
def set_robotframework_vars(cls, odlusername="admin", odlpassword="admin"):
- odl_variables_files = cls.odl_test_repo + 'csit/variables/Variables.py'
+ odl_variables_files = os.path.join(cls.odl_test_repo,
+ 'csit/variables/Variables.py')
try:
for line in fileinput.input(odl_variables_files,
inplace=True):
return False
def parse_results(self):
- result = ExecutionResult(self.res_dir + 'output.xml')
+ output_dir = os.path.join(self.res_dir, 'output.xml')
+ result = ExecutionResult(output_dir)
visitor = ODLResultVisitor()
result.visit(visitor)
self.criteria = result.suite.status
self.details = {}
self.details['description'] = result.suite.name
self.details['tests'] = visitor.get_data()
+ return self.criteria
def main(self, **kwargs):
dirs = [self.basic_suite_dir, self.neutron_suite_dir]
self.logger.exception(
"Cannot create {}".format(self.res_dir))
return self.EX_RUN_ERROR
- stdout_file = self.res_dir + 'stdout.txt'
+ stdout_file = os.path.join(self.res_dir, 'stdout.txt')
+ output_dir = os.path.join(self.res_dir, 'output.xml')
with open(stdout_file, 'w+') as stdout:
robot.run(*dirs, variable=variables,
- output=self.res_dir + 'output.xml',
+ output=output_dir,
log='NONE',
report='NONE',
stdout=stdout)
self.logger.info("\n" + stdout.read())
self.logger.info("ODL results were successfully generated")
try:
- self.parse_results()
+ test_res = self.parse_results()
self.logger.info("ODL results were successfully parsed")
+ if test_res is not "PASS":
+ return self.EX_RUN_ERROR
except RobotError as e:
self.logger.error("Run tests before publishing: %s" %
e.message)
kwargs['odlrestconfport'] = '8181'
kwargs['odlusername'] = 'admin'
kwargs['odlpassword'] = 'admin'
- installer_type = None
- if 'INSTALLER_TYPE' in os.environ:
- installer_type = os.environ['INSTALLER_TYPE']
- kwargs['osusername'] = os.environ['OS_USERNAME']
- kwargs['ostenantname'] = os.environ['OS_TENANT_NAME']
- kwargs['ospassword'] = os.environ['OS_PASSWORD']
+
+ installer_type = ft_constants.CI_INSTALLER_TYPE
+ kwargs['osusername'] = ft_constants.OS_USERNAME
+ kwargs['ostenantname'] = ft_constants.OS_TENANT_NAME
+ kwargs['ospassword'] = ft_constants.OS_PASSWORD
+
if installer_type == 'fuel':
kwargs['odlwebport'] = '8282'
elif installer_type == 'apex':
- kwargs['odlip'] = os.environ['SDN_CONTROLLER_IP']
+ if ft_constants.SDN_CONTROLLER_IP is None:
+ return self.EX_RUN_ERROR
+ kwargs['odlip'] = ft_constants.SDN_CONTROLLER_IP
kwargs['odlwebport'] = '8181'
elif installer_type == 'joid':
- kwargs['odlip'] = os.environ['SDN_CONTROLLER']
+ if ft_constants.SDN_CONTROLLER is None:
+ return self.EX_RUN_ERROR
+ kwargs['odlip'] = ft_constants.SDN_CONTROLLER
elif installer_type == 'compass':
kwargs['odlwebport'] = '8181'
else:
- kwargs['odlip'] = os.environ['SDN_CONTROLLER_IP']
+ if ft_constants.SDN_CONTROLLER_IP is None:
+ return self.EX_RUN_ERROR
+ kwargs['odlip'] = ft_constants.SDN_CONTROLLER_IP
except KeyError as e:
self.logger.error("Cannot run ODL testcases. "
"Please check env var: "
return self.main(**kwargs)
+
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('-k', '--keystoneip',
from functest.core import TestCasesBase
from functest.opnfv_tests.Controllers.ODL import OpenDaylightTesting
+from functest.utils import functest_constants as ft_constants
class ODLTestCasesTesting(unittest.TestCase):
_odl_password = "admin"
def setUp(self):
- for var in ("INSTALLER_TYPE", "SDN_CONTROLLER", "SDN_CONTROLLER_IP"):
- if var in os.environ:
- del os.environ[var]
- os.environ["OS_USERNAME"] = self._os_username
- os.environ["OS_PASSWORD"] = self._os_password
- os.environ["OS_TENANT_NAME"] = self._os_tenantname
+ ft_constants.OS_USERNAME = self._os_username
+ ft_constants.OS_PASSWORD = self._os_password
+ ft_constants.OS_TENANT_NAME = self._os_tenantname
self.test = OpenDaylightTesting.ODLTestCases()
@mock.patch('fileinput.input', side_effect=Exception())
def _test_main(self, status, *args):
kwargs = self._get_main_kwargs()
self.assertEqual(self.test.main(**kwargs), status)
+ odl_res_dir = OpenDaylightTesting.ODLTestCases.res_dir
if len(args) > 0:
- args[0].assert_called_once_with(
- OpenDaylightTesting.ODLTestCases.res_dir)
+ args[0].assert_called_once_with(odl_res_dir)
if len(args) > 1:
variable = ['KEYSTONE:{}'.format(self._keystone_ip),
'NEUTRON:{}'.format(self._neutron_ip),
'ODL_SYSTEM_IP:{}'.format(self._sdn_controller_ip),
'PORT:{}'.format(self._odl_webport),
'RESTCONFPORT:{}'.format(self._odl_restconfport)]
+ output_file = os.path.join(odl_res_dir, 'output.xml')
args[1].assert_called_once_with(
OpenDaylightTesting.ODLTestCases.basic_suite_dir,
OpenDaylightTesting.ODLTestCases.neutron_suite_dir,
log='NONE',
- output=OpenDaylightTesting.ODLTestCases.res_dir + 'output.xml',
+ output=output_file,
report='NONE',
stdout=mock.ANY,
variable=variable)
if len(args) > 2:
- args[2].assert_called_with(
- OpenDaylightTesting.ODLTestCases.res_dir + 'stdout.txt')
+ stdout_file = os.path.join(odl_res_dir, 'stdout.txt')
+ args[2].assert_called_with(stdout_file)
def _test_main_missing_keyword(self, key):
kwargs = self._get_main_kwargs(key)
def test_main(self, *args):
with mock.patch.object(self.test, 'set_robotframework_vars',
return_value=True), \
- mock.patch.object(self.test, 'parse_results'):
+ mock.patch.object(self.test, 'parse_results',
+ return_value="PASS"):
self._test_main(TestCasesBase.TestCasesBase.EX_OK, *args)
@mock.patch('os.remove')
def test_main_makedirs_oserror17(self, *args):
with mock.patch.object(self.test, 'set_robotframework_vars',
return_value=True), \
- mock.patch.object(self.test, 'parse_results'):
+ mock.patch.object(self.test, 'parse_results',
+ return_value="PASS"):
self._test_main(TestCasesBase.TestCasesBase.EX_OK, *args)
@mock.patch('os.remove')
def test_main_testcases_in_failure(self, *args):
with mock.patch.object(self.test, 'set_robotframework_vars',
return_value=True), \
- mock.patch.object(self.test, 'parse_results'):
+ mock.patch.object(self.test, 'parse_results',
+ return_value="PASS"):
self._test_main(TestCasesBase.TestCasesBase.EX_OK, *args)
@mock.patch('os.remove', side_effect=OSError)
def test_main_remove_oserror(self, *args):
with mock.patch.object(self.test, 'set_robotframework_vars',
return_value=True), \
- mock.patch.object(self.test, 'parse_results'):
+ mock.patch.object(self.test, 'parse_results',
+ return_value="PASS"):
self._test_main(TestCasesBase.TestCasesBase.EX_OK, *args)
def _test_run_missing_env_var(self, var):
- del os.environ[var]
+ if var == 'OS_USERNAME':
+ ft_constants.OS_USERNAME = None
+ elif var == 'OS_PASSWORD':
+ ft_constants.OS_PASSWORD = None
+ elif var == 'OS_TENANT_NAME':
+ ft_constants.OS_TENANT_NAME = None
+
self.assertEqual(self.test.run(),
TestCasesBase.TestCasesBase.EX_RUN_ERROR)
self._test_run_missing_env_var("OS_TENANT_NAME")
def test_run_main_false(self):
- os.environ["SDN_CONTROLLER_IP"] = self._sdn_controller_ip
+ ft_constants.CI_INSTALLER_TYPE = None
+ ft_constants.SDN_CONTROLLER_IP = self._sdn_controller_ip
self._test_run(TestCasesBase.TestCasesBase.EX_RUN_ERROR,
odlip=self._sdn_controller_ip,
odlwebport=self._odl_webport)
def test_run_main_exception(self):
- os.environ["SDN_CONTROLLER_IP"] = self._sdn_controller_ip
+ ft_constants.CI_INSTALLER_TYPE = None
+ ft_constants.SDN_CONTROLLER_IP = self._sdn_controller_ip
with self.assertRaises(Exception):
self._test_run(status=TestCasesBase.TestCasesBase.EX_RUN_ERROR,
exception=Exception(),
def test_run_missing_sdn_controller_ip(self):
with mock.patch('functest.utils.openstack_utils.get_keystone_client',
return_value=self._get_fake_keystone_client()):
+ ft_constants.CI_INSTALLER_TYPE = None
+ ft_constants.SDN_CONTROLLER_IP = None
self.assertEqual(self.test.run(),
TestCasesBase.TestCasesBase.EX_RUN_ERROR)
def test_run_without_installer_type(self):
- os.environ["SDN_CONTROLLER_IP"] = self._sdn_controller_ip
+ ft_constants.SDN_CONTROLLER_IP = self._sdn_controller_ip
+ ft_constants.CI_INSTALLER_TYPE = None
self._test_run(TestCasesBase.TestCasesBase.EX_OK,
odlip=self._sdn_controller_ip,
odlwebport=self._odl_webport)
def test_run_fuel(self):
- os.environ["INSTALLER_TYPE"] = "fuel"
+ ft_constants.CI_INSTALLER_TYPE = "fuel"
self._test_run(TestCasesBase.TestCasesBase.EX_OK,
odlip=self._neutron_ip, odlwebport='8282')
def test_run_apex_missing_sdn_controller_ip(self):
with mock.patch('functest.utils.openstack_utils.get_keystone_client',
return_value=self._get_fake_keystone_client()):
- os.environ["INSTALLER_TYPE"] = "apex"
+ ft_constants.CI_INSTALLER_TYPE = "apex"
+ ft_constants.SDN_CONTROLLER_IP = None
self.assertEqual(self.test.run(),
TestCasesBase.TestCasesBase.EX_RUN_ERROR)
def test_run_apex(self):
- os.environ["SDN_CONTROLLER_IP"] = self._sdn_controller_ip
- os.environ["INSTALLER_TYPE"] = "apex"
+ ft_constants.SDN_CONTROLLER_IP = self._sdn_controller_ip
+ ft_constants.CI_INSTALLER_TYPE = "apex"
self._test_run(TestCasesBase.TestCasesBase.EX_OK,
odlip=self._sdn_controller_ip, odlwebport='8181')
def test_run_joid_missing_sdn_controller(self):
with mock.patch('functest.utils.openstack_utils.get_keystone_client',
return_value=self._get_fake_keystone_client()):
- os.environ["INSTALLER_TYPE"] = "joid"
+ ft_constants.CI_INSTALLER_TYPE = "joid"
+ ft_constants.SDN_CONTROLLER = None
self.assertEqual(self.test.run(),
TestCasesBase.TestCasesBase.EX_RUN_ERROR)
def test_run_joid(self):
- os.environ["SDN_CONTROLLER"] = self._sdn_controller_ip
- os.environ["INSTALLER_TYPE"] = "joid"
+ ft_constants.SDN_CONTROLLER = self._sdn_controller_ip
+ ft_constants.CI_INSTALLER_TYPE = "joid"
self._test_run(TestCasesBase.TestCasesBase.EX_OK,
odlip=self._sdn_controller_ip,
odlwebport=self._odl_webport)
def test_run_compass(self, *args):
- os.environ["INSTALLER_TYPE"] = "compass"
+ ft_constants.CI_INSTALLER_TYPE = "compass"
self._test_run(TestCasesBase.TestCasesBase.EX_OK,
odlip=self._neutron_ip, odlwebport='8181')