diff options
Diffstat (limited to 'functest')
-rw-r--r-- | functest/ci/logging.json | 58 | ||||
-rwxr-xr-x | functest/ci/prepare_env.py | 9 | ||||
-rwxr-xr-x | functest/ci/run_tests.py | 6 | ||||
-rwxr-xr-x | functest/ci/testcases.yaml | 4 | ||||
-rwxr-xr-x | functest/opnfv_tests/openstack/healthcheck/healthcheck.sh | 16 | ||||
-rwxr-xr-x | functest/opnfv_tests/sdn/odl/odl.py | 17 | ||||
-rwxr-xr-x[-rw-r--r--] | functest/opnfv_tests/vnf/aaa/aaa.py | 0 | ||||
-rw-r--r-- | functest/tests/unit/odl/test_odl.py | 30 | ||||
-rw-r--r-- | functest/tests/unit/test_logging.ini | 52 | ||||
-rw-r--r-- | functest/tests/unit/utils/test_openstack_tacker.py | 10 | ||||
-rwxr-xr-x[-rw-r--r--] | functest/utils/constants.py | 0 | ||||
-rw-r--r-- | functest/utils/openstack_tacker.py | 22 |
12 files changed, 138 insertions, 86 deletions
diff --git a/functest/ci/logging.json b/functest/ci/logging.json index 3f454e8f..2a2399d3 100644 --- a/functest/ci/logging.json +++ b/functest/ci/logging.json @@ -1,29 +1,29 @@ -{
- "version": 1,
- "disable_existing_loggers": false,
- "formatters": {
- "standard": {
- "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
- }
- },
- "handlers": {
- "console": {
- "level": "INFO",
- "class": "logging.StreamHandler",
- "formatter": "standard"
- },
- "file": {
- "level": "DEBUG",
- "class": "logging.FileHandler",
- "formatter": "standard",
- "filename": "/home/opnfv/functest/results/functest.log"
- }
- },
- "loggers": {
- "": {
- "handlers": ["console", "file"],
- "level": "DEBUG",
- "propagate": "yes"
- }
- }
-}
+{ + "version": 1, + "disable_existing_loggers": false, + "formatters": { + "standard": { + "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s" + } + }, + "handlers": { + "console": { + "level": "INFO", + "class": "logging.StreamHandler", + "formatter": "standard" + }, + "file": { + "level": "DEBUG", + "class": "logging.FileHandler", + "formatter": "standard", + "filename": "/home/opnfv/functest/results/functest.log" + } + }, + "loggers": { + "": { + "handlers": ["console", "file"], + "level": "DEBUG", + "propagate": "yes" + } + } +} diff --git a/functest/ci/prepare_env.py b/functest/ci/prepare_env.py index 8bbdf18b..b3e59020 100755 --- a/functest/ci/prepare_env.py +++ b/functest/ci/prepare_env.py @@ -261,6 +261,14 @@ def install_tempest(): error_msg="Problem while installing Tempest.") +def create_flavor(): + os_utils.get_or_create_flavor('m1.tiny', + '512', + '1', + '1', + public=True) + + def check_environment(): msg_not_active = "The Functest environment is not installed." if not os.path.isfile(CONST.env_active): @@ -290,6 +298,7 @@ def main(**kwargs): verify_deployment() install_rally() install_tempest() + create_flavor() with open(CONST.env_active, "w") as env_file: env_file.write("1") diff --git a/functest/ci/run_tests.py b/functest/ci/run_tests.py index ef080016..320102dd 100755 --- a/functest/ci/run_tests.py +++ b/functest/ci/run_tests.py @@ -148,7 +148,11 @@ def run_test(test, tier_name, testcases=None): module = importlib.import_module(run_dict['module']) cls = getattr(module, run_dict['class']) test_case = cls() - result = test_case.run() + try: + kwargs = run_dict['args'] + result = test_case.run(**kwargs) + except KeyError: + result = test_case.run() if result == testcase_base.TestcaseBase.EX_OK: if GlobalVariables.REPORT_FLAG: test_case.publish_report() diff --git a/functest/ci/testcases.yaml b/functest/ci/testcases.yaml index 0fffb901..12d791f0 100755 --- a/functest/ci/testcases.yaml +++ b/functest/ci/testcases.yaml @@ -99,6 +99,10 @@ tiers: run: module: 'functest.opnfv_tests.sdn.odl.odl' class: 'ODLTests' + args: + suites: + - /home/opnfv/repos/odl_test/csit/suites/integration/basic + - /home/opnfv/repos/odl_test/csit/suites/openstack/neutron - name: onos diff --git a/functest/opnfv_tests/openstack/healthcheck/healthcheck.sh b/functest/opnfv_tests/openstack/healthcheck/healthcheck.sh index 57aa0c70..7fa957c0 100755 --- a/functest/opnfv_tests/openstack/healthcheck/healthcheck.sh +++ b/functest/opnfv_tests/openstack/healthcheck/healthcheck.sh @@ -23,17 +23,17 @@ echo "">$LOG_FILE exec 1<>$LOG_FILE info () { - echo -e "$(date '+%Y-%m-%d %H:%M:%S,%3N') - healtcheck - INFO - " "$*" | tee -a $LOG_FILE 1>&2 + echo -e "$(date '+%Y-%m-%d %H:%M:%S,%3N') - healthcheck - INFO - " "$*" | tee -a $LOG_FILE 1>&2 } debug () { if [[ "${CI_DEBUG,,}" == "true" ]]; then - echo -e "$(date '+%Y-%m-%d %H:%M:%S,%3N') - healtcheck - DEBUG - " "$*" | tee -a $LOG_FILE 1>&2 + echo -e "$(date '+%Y-%m-%d %H:%M:%S,%3N') - healthcheck - DEBUG - " "$*" | tee -a $LOG_FILE 1>&2 fi } error () { - echo -e "$(date '+%Y-%m-%d %H:%M:%S,%3N') - healtcheck - ERROR - " "$*" | tee -a $LOG_FILE 1>&2 + echo -e "$(date '+%Y-%m-%d %H:%M:%S,%3N') - healthcheck - ERROR - " "$*" | tee -a $LOG_FILE 1>&2 exit 1 } @@ -125,16 +125,16 @@ kernel_img=$(cat ${YAML_FILE} | shyaml get-value healthcheck.kernel_image 2> /de ramdisk_img=$(cat ${YAML_FILE} | shyaml get-value healthcheck.ramdisk_image 2> /dev/null || true) extra_properties=$(cat ${YAML_FILE} | shyaml get-value healthcheck.extra_properties 2> /dev/null || true) -# Test if we need to create a 3part image +# Test if we need to create a 3party image if [ "X$kernel_img" != "X" ] then - img_id=$(glance image-create --name ${kernel_image} --disk-format aki \ + img_id=$(openstack image create ${kernel_image} --disk-format aki \ --container-format bare < ${kernel_img} | awk '$2 == "id" { print $4 }') extra_opts="--property kernel_id=${img_id}" if [ "X$ramdisk_img" != "X" ] then - img_id=$(glance image-create --name ${ramdisk_image} --disk-format ari \ + img_id=$(openstack image create ${ramdisk_image} --disk-format ari \ --container-format bare < ${ramdisk_img} | awk '$2 == "id" { print $4 }') extra_opts="$extra_opts --property ramdisk_id=${img_id}" fi @@ -152,10 +152,10 @@ fi debug "image extra_properties=${extra_properties}" -eval glance image-create --name ${image_1} --disk-format ${disk_format} --container-format bare \ +eval openstack image create ${image_1} --disk-format ${disk_format} --container-format bare \ ${extra_opts} < ${disk_img} debug "image '${image_1}' created." -eval glance image-create --name ${image_2} --disk-format ${disk_format} --container-format bare \ +eval openstack image create ${image_2} --disk-format ${disk_format} --container-format bare \ ${extra_opts} < ${disk_img} debug "image '${image_2}' created." info "... Glance OK!" diff --git a/functest/opnfv_tests/sdn/odl/odl.py b/functest/opnfv_tests/sdn/odl/odl.py index 339c305e..9502be93 100755 --- a/functest/opnfv_tests/sdn/odl/odl.py +++ b/functest/opnfv_tests/sdn/odl/odl.py @@ -54,6 +54,7 @@ class ODLTests(testcase_base.TestcaseBase): "csit/suites/openstack/neutron") basic_suite_dir = os.path.join(odl_test_repo, "csit/suites/integration/basic") + default_suites = [basic_suite_dir, neutron_suite_dir] res_dir = '/home/opnfv/functest/results/odl/' logger = ft_logger.Logger("opendaylight").getLogger() @@ -89,8 +90,7 @@ class ODLTests(testcase_base.TestcaseBase): self.details['description'] = result.suite.name self.details['tests'] = visitor.get_data() - def main(self, **kwargs): - dirs = [self.basic_suite_dir, self.neutron_suite_dir] + def main(self, suites=default_suites, **kwargs): try: odlusername = kwargs['odlusername'] odlpassword = kwargs['odlpassword'] @@ -117,7 +117,7 @@ class ODLTests(testcase_base.TestcaseBase): 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, + robot.run(*suites, variable=variables, output=output_dir, log='NONE', report='NONE', @@ -140,8 +140,13 @@ class ODLTests(testcase_base.TestcaseBase): else: return self.EX_RUN_ERROR - def run(self): + def run(self, **kwargs): try: + suites = self.default_suites + try: + suites = kwargs["suites"] + except KeyError: + pass keystone_url = op_utils.get_endpoint(service_type='identity') neutron_url = op_utils.get_endpoint(service_type='network') kwargs = {'keystoneip': urlparse.urlparse(keystone_url).hostname} @@ -178,7 +183,7 @@ class ODLTests(testcase_base.TestcaseBase): self.logger.exception("Cannot run ODL testcases.") return self.EX_RUN_ERROR - return self.main(**kwargs) + return self.main(suites, **kwargs) class ODLParser(): @@ -228,7 +233,7 @@ if __name__ == '__main__': parser = ODLParser() args = parser.parse_args(sys.argv[1:]) try: - result = odl.main(**args) + result = odl.main(ODLTests.default_suites, **args) if result != testcase_base.TestcaseBase.EX_OK: sys.exit(result) if args['pushtodb']: diff --git a/functest/opnfv_tests/vnf/aaa/aaa.py b/functest/opnfv_tests/vnf/aaa/aaa.py index f1c265f4..f1c265f4 100644..100755 --- a/functest/opnfv_tests/vnf/aaa/aaa.py +++ b/functest/opnfv_tests/vnf/aaa/aaa.py diff --git a/functest/tests/unit/odl/test_odl.py b/functest/tests/unit/odl/test_odl.py index 568fdc82..810b3592 100644 --- a/functest/tests/unit/odl/test_odl.py +++ b/functest/tests/unit/odl/test_odl.py @@ -346,6 +346,28 @@ class ODLTesting(unittest.TestCase): self.test.main = mock.Mock(return_value=status) self.assertEqual(self.test.run(), status) self.test.main.assert_called_once_with( + odl.ODLTests.default_suites, + keystoneip=self._keystone_ip, neutronip=self._neutron_ip, + odlip=odlip, odlpassword=self._odl_password, + odlrestconfport=odlrestconfport, + odlusername=self._odl_username, odlwebport=odlwebport, + ospassword=self._os_password, ostenantname=self._os_tenantname, + osusername=self._os_username) + + def _test_run_defining_multiple_suites( + self, suites, + status=testcase_base.TestcaseBase.EX_OK, + exception=None, odlip="127.0.0.3", odlwebport="8080", + odlrestconfport="8181"): + with mock.patch('functest.utils.openstack_utils.get_endpoint', + side_effect=self._fake_url_for): + if exception: + self.test.main = mock.Mock(side_effect=exception) + else: + self.test.main = mock.Mock(return_value=status) + self.assertEqual(self.test.run(suites=suites), status) + self.test.main.assert_called_once_with( + suites, keystoneip=self._keystone_ip, neutronip=self._neutron_ip, odlip=odlip, odlpassword=self._odl_password, odlrestconfport=odlrestconfport, @@ -394,6 +416,14 @@ class ODLTesting(unittest.TestCase): odlip=self._sdn_controller_ip, odlwebport=self._odl_webport) + def test_run_redefining_suites(self): + os.environ["SDN_CONTROLLER_IP"] = self._sdn_controller_ip + self._test_run_defining_multiple_suites( + [odl.ODLTests.basic_suite_dir], + testcase_base.TestcaseBase.EX_OK, + odlip=self._sdn_controller_ip, + odlwebport=self._odl_webport) + def test_run_fuel(self): os.environ["INSTALLER_TYPE"] = "fuel" self._test_run(testcase_base.TestcaseBase.EX_OK, diff --git a/functest/tests/unit/test_logging.ini b/functest/tests/unit/test_logging.ini index 3d5b947c..492767d1 100644 --- a/functest/tests/unit/test_logging.ini +++ b/functest/tests/unit/test_logging.ini @@ -1,27 +1,27 @@ -[loggers]
-keys=root,functest_logger
-
-[logger_root]
-level=DEBUG
-handlers=console
-
-[logger_functest_logger]
-level=DEBUG
-handlers=console
-qualname=functest.utils.functest_logger
-propagate=0
-
-[handlers]
-keys=console
-
-[handler_console]
-class=StreamHandler
-level=INFO
-formatter=standard
-args=(sys.stdout,)
-
-[formatters]
-keys=standard
-
-[formatter_standard]
+[loggers] +keys=root,functest_logger + +[logger_root] +level=DEBUG +handlers=console + +[logger_functest_logger] +level=DEBUG +handlers=console +qualname=functest.utils.functest_logger +propagate=0 + +[handlers] +keys=console + +[handler_console] +class=StreamHandler +level=INFO +formatter=standard +args=(sys.stdout,) + +[formatters] +keys=standard + +[formatter_standard] format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
\ No newline at end of file diff --git a/functest/tests/unit/utils/test_openstack_tacker.py b/functest/tests/unit/utils/test_openstack_tacker.py index a8330c0e..dc717258 100644 --- a/functest/tests/unit/utils/test_openstack_tacker.py +++ b/functest/tests/unit/utils/test_openstack_tacker.py @@ -146,8 +146,7 @@ class OSTackerTesting(unittest.TestCase): tosca_file=None) self.assertEqual(resp, self.createvnfd) - @mock.patch('functest.utils.openstack_tacker.logger.error') - def test_create_vnfd_default(self, mock_logger_error): + def test_create_vnfd_default(self): with mock.patch.object(self.tacker_client, 'create_vnfd', return_value=self.createvnfd), \ mock.patch('__builtin__.open', mock.mock_open(read_data='1')) \ @@ -155,16 +154,15 @@ class OSTackerTesting(unittest.TestCase): resp = openstack_tacker.create_vnfd(self.tacker_client, tosca_file=self.tosca_file) m.assert_called_once_with(self.tosca_file) - mock_logger_error.assert_called_once_with('1') self.assertEqual(resp, self.createvnfd) - @mock.patch('functest.utils.openstack_tacker.logger.exception') - def test_create_vnfd_exception(self, mock_logger_excep): + @mock.patch('functest.utils.openstack_tacker.logger.error') + def test_create_vnfd_exception(self, mock_logger_error): with mock.patch.object(self.tacker_client, 'create_vnfd', side_effect=Exception): resp = openstack_tacker.create_vnfd(self.tacker_client, tosca_file=self.tosca_file) - mock_logger_excep.assert_called_once_with(test_utils. + mock_logger_error.assert_called_once_with(test_utils. SubstrMatch("Error" " [create" "_vnfd(" diff --git a/functest/utils/constants.py b/functest/utils/constants.py index 2e8eb3f4..2e8eb3f4 100644..100755 --- a/functest/utils/constants.py +++ b/functest/utils/constants.py diff --git a/functest/utils/openstack_tacker.py b/functest/utils/openstack_tacker.py index f17b421e..c7ac89af 100644 --- a/functest/utils/openstack_tacker.py +++ b/functest/utils/openstack_tacker.py @@ -20,9 +20,9 @@ import time logger = ft_logger.Logger("tacker_utils").getLogger() -def get_tacker_client(): - creds_tacker = os_utils.get_credentials() - return tackerclient.Client(**creds_tacker) +def get_tacker_client(other_creds={}): + sess = os_utils.get_session(other_creds) + return tackerclient.Client(session=sess) # ********************************************* @@ -74,12 +74,12 @@ def create_vnfd(tacker_client, tosca_file=None): if tosca_file is not None: with open(tosca_file) as tosca_fd: vnfd_body = tosca_fd.read() - logger.error(vnfd_body) + logger.info('VNFD template:\n{0}'.format(vnfd_body)) return tacker_client.create_vnfd( body={"vnfd": {"attributes": {"vnfd": vnfd_body}}}) except Exception, e: - logger.exception("Error [create_vnfd(tacker_client, '%s')]: %s" - % (tosca_file, e)) + logger.error("Error [create_vnfd(tacker_client, '%s')]: %s" + % (tosca_file, e)) return None @@ -124,7 +124,8 @@ def create_vnf(tacker_client, vnf_name, vnfd_id=None, vnfd_name=None): vnf_body['vnf']['vnfd_id'] = get_vnfd_id(tacker_client, vnfd_name) return tacker_client.create_vnf(body=vnf_body) except Exception, e: - logger.error("error [create_vnf(tacker_client, '%s', '%s', '%s')]: %s" + logger.error("error [create_vnf(tacker_client," + " '%s', '%s', '%s')]: %s" % (vnf_name, vnfd_id, vnfd_name, e)) return None @@ -206,7 +207,8 @@ def create_sfc(tacker_client, sfc_name, for name in chain_vnf_names] return tacker_client.create_sfc(body=sfc_body) except Exception, e: - logger.error("error [create_sfc(tacker_client, '%s', '%s', '%s')]: %s" + logger.error("error [create_sfc(tacker_client," + " '%s', '%s', '%s')]: %s" % (sfc_name, chain_vnf_ids, chain_vnf_names, e)) return None @@ -263,8 +265,8 @@ def create_sfc_classifier(tacker_client, sfc_clf_name, sfc_id=None, 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')]: '%s'" + 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 |