diff options
Diffstat (limited to 'functest')
24 files changed, 182 insertions, 152 deletions
diff --git a/functest/ci/download_images.sh b/functest/ci/download_images.sh index f3fdef2e..f3fdef2e 100644..100755 --- a/functest/ci/download_images.sh +++ b/functest/ci/download_images.sh diff --git a/functest/ci/run_tests.py b/functest/ci/run_tests.py index 95353c87..9b64a0ce 100755 --- a/functest/ci/run_tests.py +++ b/functest/ci/run_tests.py @@ -1,4 +1,4 @@ -#!/usr/bin/python -u +#!/usr/bin/env python # # Author: Jose Lausuch (jose.lausuch@ericsson.com) # @@ -221,7 +221,7 @@ class Runner(object): try: if kwargs['test']: self.source_rc_file() - logger.error(kwargs['test']) + logger.debug("Test args: %s", kwargs['test']) if _tiers.get_tier(kwargs['test']): self.run_tier(_tiers.get_tier(kwargs['test'])) elif _tiers.get_test(kwargs['test']): diff --git a/functest/ci/testcases.yaml b/functest/ci/testcases.yaml index 10587f26..8222df10 100644 --- a/functest/ci/testcases.yaml +++ b/functest/ci/testcases.yaml @@ -266,7 +266,6 @@ tiers: testcases: - case_name: promise - enabled: false project_name: promise criteria: 100 blocking: false diff --git a/functest/cli/commands/cli_os.py b/functest/cli/commands/cli_os.py index e54eb423..5e6e1109 100644 --- a/functest/cli/commands/cli_os.py +++ b/functest/cli/commands/cli_os.py @@ -67,9 +67,8 @@ class CliOpenStack(object): if installer_ip is None: click.echo("The environment variable 'INSTALLER_IP' is not" "defined. Please export it") - cmd = ("%s/releng/utils/fetch_os_creds.sh -d %s -i %s -a %s" - % (CONST.__getattribute__('dir_repos'), - self.openstack_creds, + cmd = ("fetch_os_creds.sh -d %s -i %s -a %s" + % (self.openstack_creds, installer_type, installer_ip)) click.echo("Fetching credentials from installer node '%s' with IP=%s.." diff --git a/functest/core/feature.py b/functest/core/feature.py index 140c9bb2..d53eb7d0 100644 --- a/functest/core/feature.py +++ b/functest/core/feature.py @@ -7,7 +7,7 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 -"""Define the parent class of all Functest Features. +"""Define the parent classes of all Functest Features. Feature is considered as TestCase offered by Third-party. It offers helpers to run any python method or any bash command. diff --git a/functest/core/pytest_suite_runner.py b/functest/core/pytest_suite_runner.py deleted file mode 100644 index efcef7b6..00000000 --- a/functest/core/pytest_suite_runner.py +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright (c) 2015 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 -# -# http://www.apache.org/licenses/LICENSE-2.0 - -# pylint: disable=missing-docstring - -from __future__ import division - -import logging -import time -import unittest - -import six - -from functest.core import testcase - - -class PyTestSuiteRunner(testcase.TestCase): - """ - This superclass is designed to execute pre-configured unittest.TestSuite() - objects - """ - - def __init__(self, **kwargs): - super(PyTestSuiteRunner, self).__init__(**kwargs) - self.suite = None - self.logger = logging.getLogger(__name__) - - def run(self, **kwargs): - """ - Starts test execution from the functest framework - """ - try: - name = kwargs["name"] - try: - self.suite = unittest.TestLoader().loadTestsFromName(name) - except ImportError: - self.logger.error("Can not import %s", name) - return testcase.TestCase.EX_RUN_ERROR - except KeyError: - pass - self.start_time = time.time() - stream = six.StringIO() - result = unittest.TextTestRunner( - stream=stream, verbosity=2).run(self.suite) - self.logger.debug("\n\n%s", stream.getvalue()) - self.stop_time = time.time() - self.details = {"failures": result.failures, - "errors": result.errors} - try: - self.result = 100 * ( - (result.testsRun - (len(result.failures) + - len(result.errors))) / - result.testsRun) - return testcase.TestCase.EX_OK - except ZeroDivisionError: - self.logger.error("No test has been run") - return testcase.TestCase.EX_RUN_ERROR diff --git a/functest/core/unit.py b/functest/core/unit.py new file mode 100644 index 00000000..515a2080 --- /dev/null +++ b/functest/core/unit.py @@ -0,0 +1,89 @@ +#!/usr/bin/env python + +# Copyright (c) 2016 Cable Television Laboratories, Inc. and others. +# +# 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 +# http://www.apache.org/licenses/LICENSE-2.0 + +"""Define the parent class to run unittest.TestSuite as TestCase.""" + +from __future__ import division + +import logging +import time +import unittest + +import six + +from functest.core import testcase + +__author__ = ("Steven Pisarski <s.pisarski@cablelabs.com>, " + "Cedric Ollivier <cedric.ollivier@orange.com>") + + +class Suite(testcase.TestCase): + """Base model for running unittest.TestSuite.""" + + __logger = logging.getLogger(__name__) + + def __init__(self, **kwargs): + super(Suite, self).__init__(**kwargs) + self.suite = None + + def run(self, **kwargs): + """Run the test suite. + + It allows running any unittest.TestSuite and getting its + execution status. + + By default, it runs the suite defined as instance attribute. + It can be overriden by passing name as arg. It must + conform with TestLoader.loadTestsFromName(). + + It sets the following attributes required to push the results + to DB: + + * result, + * start_time, + * stop_time, + * details. + + Args: + kwargs: Arbitrary keyword arguments. + + Returns: + TestCase.EX_OK if any TestSuite has been run, + TestCase.EX_RUN_ERROR otherwise. + """ + try: + name = kwargs["name"] + try: + self.suite = unittest.TestLoader().loadTestsFromName(name) + except ImportError: + self.__logger.error("Can not import %s", name) + return testcase.TestCase.EX_RUN_ERROR + except KeyError: + pass + try: + assert self.suite + self.start_time = time.time() + stream = six.StringIO() + result = unittest.TextTestRunner( + stream=stream, verbosity=2).run(self.suite) + self.__logger.debug("\n\n%s", stream.getvalue()) + self.stop_time = time.time() + self.details = {"failures": result.failures, + "errors": result.errors} + self.result = 100 * ( + (result.testsRun - (len(result.failures) + + len(result.errors))) / + result.testsRun) + return testcase.TestCase.EX_OK + except AssertionError: + self.__logger.error("No suite is defined") + return testcase.TestCase.EX_RUN_ERROR + except ZeroDivisionError: + self.__logger.error("No test has been run") + return testcase.TestCase.EX_RUN_ERROR diff --git a/functest/opnfv_tests/features/barometer.py b/functest/opnfv_tests/features/barometer.py index cbfe7d9a..e210f333 100644 --- a/functest/opnfv_tests/features/barometer.py +++ b/functest/opnfv_tests/features/barometer.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/functest/opnfv_tests/mano/orchestra.py b/functest/opnfv_tests/mano/orchestra.py index dea26efc..955f82ce 100644 --- a/functest/opnfv_tests/mano/orchestra.py +++ b/functest/opnfv_tests/mano/orchestra.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/functest/opnfv_tests/openstack/rally/rally.py b/functest/opnfv_tests/openstack/rally/rally.py index 86ec3558..e362fd4d 100644 --- a/functest/opnfv_tests/openstack/rally/rally.py +++ b/functest/opnfv_tests/openstack/rally/rally.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # # Copyright (c) 2015 All rights reserved # This program and the accompanying materials diff --git a/functest/opnfv_tests/openstack/snaps/snaps_test_runner.py b/functest/opnfv_tests/openstack/snaps/snaps_test_runner.py index be0e5fe6..5e39946d 100644 --- a/functest/opnfv_tests/openstack/snaps/snaps_test_runner.py +++ b/functest/opnfv_tests/openstack/snaps/snaps_test_runner.py @@ -7,7 +7,7 @@ import logging -from functest.core.pytest_suite_runner import PyTestSuiteRunner +from functest.core import unit from functest.opnfv_tests.openstack.snaps import snaps_utils from functest.utils import functest_utils from functest.utils.constants import CONST @@ -16,7 +16,7 @@ from snaps.openstack import create_flavor from snaps.openstack.tests import openstack_tests -class SnapsTestRunner(PyTestSuiteRunner): +class SnapsTestRunner(unit.Suite): """ This test executes the SNAPS Python Tests """ diff --git a/functest/opnfv_tests/openstack/tempest/conf_utils.py b/functest/opnfv_tests/openstack/tempest/conf_utils.py index 556a41d4..15365ccf 100644 --- a/functest/opnfv_tests/openstack/tempest/conf_utils.py +++ b/functest/opnfv_tests/openstack/tempest/conf_utils.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # # Copyright (c) 2015 All rights reserved # This program and the accompanying materials diff --git a/functest/opnfv_tests/openstack/tempest/tempest.py b/functest/opnfv_tests/openstack/tempest/tempest.py index 233ceb48..65d9f1fa 100644 --- a/functest/opnfv_tests/openstack/tempest/tempest.py +++ b/functest/opnfv_tests/openstack/tempest/tempest.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # # Copyright (c) 2015 All rights reserved # This program and the accompanying materials @@ -148,7 +148,7 @@ class TempestCommon(testcase.TestCase): first_pos = line.index("UUID=") + len("UUID=") last_pos = line.index(") for deployment") self.VERIFICATION_ID = line[first_pos:last_pos] - logger.debug('Verication UUID: %s' % self.VERIFICATION_ID) + logger.debug('Verification UUID: %s', self.VERIFICATION_ID) f_stdout.write(line) p.wait() diff --git a/functest/opnfv_tests/openstack/vping/vping_base.py b/functest/opnfv_tests/openstack/vping/vping_base.py index 42fcebf4..7f568821 100644 --- a/functest/opnfv_tests/openstack/vping/vping_base.py +++ b/functest/opnfv_tests/openstack/vping/vping_base.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # # Copyright (c) 2015 All rights reserved # This program and the accompanying materials diff --git a/functest/opnfv_tests/openstack/vping/vping_ssh.py b/functest/opnfv_tests/openstack/vping/vping_ssh.py index 0ad77402..6ac0d676 100755 --- a/functest/opnfv_tests/openstack/vping/vping_ssh.py +++ b/functest/opnfv_tests/openstack/vping/vping_ssh.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # # Copyright (c) 2015 All rights reserved # This program and the accompanying materials diff --git a/functest/opnfv_tests/openstack/vping/vping_userdata.py b/functest/opnfv_tests/openstack/vping/vping_userdata.py index 8ea9be84..b69b3955 100755 --- a/functest/opnfv_tests/openstack/vping/vping_userdata.py +++ b/functest/opnfv_tests/openstack/vping/vping_userdata.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # # Copyright (c) 2015 All rights reserved # This program and the accompanying materials diff --git a/functest/opnfv_tests/sdn/onos/sfc/sfc.py b/functest/opnfv_tests/sdn/onos/sfc/sfc.py index 0155d24d..a2dd7e9a 100755 --- a/functest/opnfv_tests/sdn/onos/sfc/sfc.py +++ b/functest/opnfv_tests/sdn/onos/sfc/sfc.py @@ -1,4 +1,4 @@ -# !/usr/bin/python +#!/usr/bin/env python # # Copyright (c) CREATED5 All rights reserved # This program and the accompanying materials diff --git a/functest/opnfv_tests/sdn/onos/sfc/sfc_onos.py b/functest/opnfv_tests/sdn/onos/sfc/sfc_onos.py index 1101f239..4e93c133 100644 --- a/functest/opnfv_tests/sdn/onos/sfc/sfc_onos.py +++ b/functest/opnfv_tests/sdn/onos/sfc/sfc_onos.py @@ -100,8 +100,10 @@ class SfcOnos(object): self.ip_pool = 0 self.vm_public_ip = [] self.vm_public_id = [] - self.cirros_username = CONST.openstack_image_username - self.cirros_password = CONST.openstack_image_password + self.cirros_username = CONST.__getattribute__( + 'openstack_image_username') + self.cirros_password = CONST.__getattribute__( + 'openstack_image_password') self.net_id1 = 0 self.vm = [] self.address = 0 @@ -115,7 +117,7 @@ class SfcOnos(object): data = ('{"auth": {"tenantName": "admin", "passwordCredentials":' '{ "username": "admin", "password": "console"}}}') headers = {"Accept": "application/json"} - response = requests.post(url, headers=headers, data=data) + response = requests.post(url, headers=headers, data=data) if (response.status_code == OK): json1_data = json.loads(response.content) self.logger.debug(response.status_code) @@ -135,12 +137,12 @@ class SfcOnos(object): if self.admin_state_up != '': Dicdata['admin_state_up'] = self.admin_state_up Dicdata = {'network': Dicdata} - data = json.dumps(Dicdata, indent=4) + data = json.dumps(Dicdata, indent=4) url = 'http://%s:9696/%s/networks' % (self.neutron_hostname, self.osver) headers = {"Accept": "application/json", "X-Auth-Token": self.token_id} - response = requests.post(url, headers=headers, data=data) + response = requests.post(url, headers=headers, data=data) if (response.status_code == CREATED): self.logger.debug(response.status_code) self.logger.debug(response.content) @@ -170,7 +172,7 @@ class SfcOnos(object): self.osver) headers = {"Accept": "application/json", "X-Auth-Token": self.token_id} - response = requests.post(url, headers=headers, data=data) + response = requests.post(url, headers=headers, data=data) if (response.status_code == CREATED): self.logger.debug(response.status_code) @@ -203,7 +205,7 @@ class SfcOnos(object): self.osver) headers = {"Accept": "application/json", "X-Auth-Token": self.token_id} - response = requests.post(url, headers=headers, data=data) + response = requests.post(url, headers=headers, data=data) if (response.status_code == CREATED): self.logger.debug(response.status_code) @@ -222,8 +224,9 @@ class SfcOnos(object): """Creation of Instance, using firewall image.""" url = ("http://%s:9292/v2/images?" "name=TestSfcVm" % (self.glance_hostname)) - headers = {"Accept": "application/json", "Content-Type": "application/\ - octet-stream", "X-Auth-Token": self.token_id} + headers = {"Accept": "application/json", + "Content-Type": "application/octet-stream", + "X-Auth-Token": self.token_id} response = requests.get(url, headers=headers) if (response.status_code == OK): self.logger.debug(response.status_code) @@ -273,7 +276,7 @@ class SfcOnos(object): self.tenant_id) headers = {"Accept": "application/json", "Content-Type": "application/json", "X-Auth-Token": self.token_id} - response = requests.post(url, headers=headers, data=data) + response = requests.post(url, headers=headers, data=data) if (response.status_code == ACCEPTED): self.logger.debug(response.status_code) self.logger.debug(response.content) @@ -295,8 +298,8 @@ class SfcOnos(object): for y in range(0, 3): url = ("http://%s:8774/v2.1/servers/" "detail?name=vm" + str(y)) % (self.neutron_hostname) - headers = {"Accept": "application/json", "X-Auth-Token": - self.token_id} + headers = {"Accept": "application/json", + "X-Auth-Token": self.token_id} response = requests.get(url, headers=headers) if (response.status_code == OK): self.logger.debug(response.status_code) @@ -332,7 +335,7 @@ class SfcOnos(object): self.osver) headers = {"Accept": "application/json", "X-Auth-Token": self.token_id} - response = requests.post(url, headers=headers, data=data) + response = requests.post(url, headers=headers, data=data) if (response.status_code == CREATED): info = ("Creation of Port Pair PP" + str(p) + " is successful") @@ -380,7 +383,7 @@ class SfcOnos(object): self.osver)) headers = {"Accept": "application/json", "X-Auth-Token": self.token_id} - response = requests.post(url, headers=headers, data=data) + response = requests.post(url, headers=headers, data=data) if (response.status_code == CREATED): info = ("Creation of Port Group PG" + str(p) + "is successful") @@ -431,7 +434,7 @@ class SfcOnos(object): self.osver)) headers = {"Accept": "application/json", "X-Auth-Token": self.token_id} - response = requests.post(url, headers=headers, data=data) + response = requests.post(url, headers=headers, data=data) if (response.status_code == CREATED): json1_data = json.loads(response.content) self.flow_class_if = json1_data['flow_classifier']['id'] @@ -462,7 +465,7 @@ class SfcOnos(object): headers = {"Accept": "application/json", "Content-Type": "application/json", "X-Auth-Token": self.token_id} - response = requests.post(url, headers=headers, data=data) + response = requests.post(url, headers=headers, data=data) if (response.status_code == CREATED): self.logger.debug("Creation of PORT CHAIN is successful") json1_data = json.loads(response.content) @@ -476,7 +479,7 @@ class SfcOnos(object): time.sleep(5) response = requests.get('http://' + self.onos_hostname + ':8181/onos/v1/flows', - auth=("karaf", "karaf")) + auth=("karaf", "karaf")) if (response.status_code == OK): self.logger.debug("Flow is successfully Queries") json1_data = json.loads(response.content) @@ -505,7 +508,7 @@ class SfcOnos(object): self.osver) headers = {"Accept": "application/json", "X-Auth-Token": self.token_id} - response = requests.post(url, headers=headers, data=data) + response = requests.post(url, headers=headers, data=data) if (response.status_code == CREATED): self.logger.debug(response.status_code) self.logger.debug(response.content) @@ -548,7 +551,7 @@ class SfcOnos(object): self.router_id)) headers = {"Accept": "application/json", "X-Auth-Token": self.token_id} - response = requests.put(url, headers=headers, data=data) + response = requests.put(url, headers=headers, data=data) if (response.status_code == OK): self.logger.debug(response.status_code) self.logger.debug(response.content) @@ -570,7 +573,7 @@ class SfcOnos(object): self.router_id) headers = {"Accept": "application/json", "X-Auth-Token": self.token_id} - response = requests.put(url, headers=headers, data=data) + response = requests.put(url, headers=headers, data=data) if (response.status_code == OK): self.logger.debug(response.status_code) self.logger.debug(response.content) @@ -590,7 +593,7 @@ class SfcOnos(object): "os-floating-ips" % (self.nova_hostname)) headers = {"Accept": "application/json", "X-Auth-Token": self.token_id} - response = requests.post(url, headers=headers, data=data) + response = requests.post(url, headers=headers, data=data) if (response.status_code == OK): self.logger.debug(response.status_code) self.logger.debug(response.content) @@ -614,7 +617,7 @@ class SfcOnos(object): headers = {"Accept": "application/json", "X-Auth-Token": self.token_id} - response = requests.post(url, headers=headers, data=data) + response = requests.post(url, headers=headers, data=data) if(response.status_code == ACCEPTED): self.logger.debug(response.status_code) self.logger.debug(response.content) @@ -631,12 +634,12 @@ class SfcOnos(object): s = pxssh.pxssh() hostname = self.vm_public_ip[0] - s.login(hostname, self.cirros_username, self.cirros_password) + s.login(hostname, self.cirros_username, self.cirros_password) s.sendline("ping -c 5 " + str(self.port_ip[2])) s.prompt() # match the prompt - ping_re = re.search("transmitted.*received", s.before).group() - x = re.split('\s+', ping_re) + ping_re = re.search("transmitted.*received", s.before).group() + x = re.split('\s+', ping_re) if (x[1] >= "1"): self.logger.info("Ping is Successfull") else: @@ -645,7 +648,7 @@ class SfcOnos(object): def vm1(queue1): s = pxssh.pxssh() hostname = self.vm_public_ip[1] - s.login(hostname, self.cirros_username, self.cirros_password) + s.login(hostname, self.cirros_username, self.cirros_password) s.sendline('sudo ./firewall') s.prompt() output_pack = s.before @@ -676,7 +679,7 @@ class SfcOnos(object): if result0 == 0 and result1 == 0: time.sleep(300) queue1 = Queue() - p1 = Process(target=vm1, args=(queue1, )) + p1 = Process(target=vm1, args=(queue1, )) p1.start() p2 = Process(target=vm0) p2.start() @@ -703,7 +706,7 @@ class SfcOnos(object): """Check the PC SF Map Stats in the ONOS.""" response = requests.get('http://' + self.onos_hostname + ':8181/onos/vtn/portChainSfMap/' + - self.PC_id, auth=("karaf", "karaf")) + self.PC_id, auth=("karaf", "karaf")) if (response.status_code == OK): self.logger.info("portChainSfMap is successfully Queries") return(response.status_code) @@ -761,7 +764,7 @@ class SfcOnos(object): def deletePortPair(self): """Deletion of Portpair.""" - for p in range(1, 2): + for p in range(1, 2): url = ("http://%s:9696/%s/sfc/" "port_pairs/%s" % (self.neutron_hostname, self.osver, @@ -819,7 +822,7 @@ class SfcOnos(object): self.router_id)) headers = {"Accept": "application/json", "X-Auth-Token": self.token_id} - response = requests.put(url, headers=headers, data=data) + response = requests.put(url, headers=headers, data=data) if (response.status_code == OK): self.logger.debug(response.status_code) self.logger.debug(response.content) @@ -833,14 +836,14 @@ class SfcOnos(object): self.router_id)) headers = {"Accept": "application/json", "X-Auth-Token": self.token_id} - response = requests.put(url, headers=headers, data=data) + response = requests.put(url, headers=headers, data=data) if (response.status_code == OK): url = ("http://%s:9696/%s/" "routers/%s" % (self.neutron_hostname, self.osver, self.router_id)) - headers = {"Accept": "application/json", "X-Auth-Token": - self.token_id} + headers = {"Accept": "application/json", + "X-Auth-Token": self.token_id} response = requests.delete(url, headers=headers) if (response.status_code == NO_CONTENT): self.logger.debug(response.status_code) diff --git a/functest/opnfv_tests/sdn/onos/teston/adapters/foundation.py b/functest/opnfv_tests/sdn/onos/teston/adapters/foundation.py index 25421d40..f9eee7af 100644 --- a/functest/opnfv_tests/sdn/onos/teston/adapters/foundation.py +++ b/functest/opnfv_tests/sdn/onos/teston/adapters/foundation.py @@ -26,7 +26,8 @@ class Foundation(object): def __init__(self): # currentpath = os.getcwd() - currentpath = '%s/sdn/onos/teston/ci' % CONST.dir_functest_data + currentpath = ('{0}/sdn/onos/teston/ci' + .format(CONST.__getattribute__('dir_functest_data'))) self.cipath = currentpath self.logdir = os.path.join(currentpath, 'log') self.workhome = currentpath[0: currentpath.rfind('opnfv_tests') - 1] @@ -55,22 +56,25 @@ class Foundation(object): Get Default Parameters value """ self.Result_DB = ft_utils.get_db_url() - self.masterusername = CONST.ONOS_onosbench_username - self.masterpassword = CONST.ONOS_onosbench_password - self.agentusername = CONST.ONOS_onoscli_username - self.agentpassword = CONST.ONOS_onoscli_password - self.runtimeout = CONST.ONOS_runtimeout - self.OCT = CONST.ONOS_environment_OCT - self.OC1 = CONST.ONOS_environment_OC1 - self.OC2 = CONST.ONOS_environment_OC2 - self.OC3 = CONST.ONOS_environment_OC3 - self.OCN = CONST.ONOS_environment_OCN - self.OCN2 = CONST.ONOS_environment_OCN2 - self.installer_master = CONST.ONOS_environment_installer_master + self.masterusername = CONST.__getattribute__('ONOS_onosbench_username') + self.masterpassword = CONST.__getattribute__('ONOS_onosbench_password') + self.agentusername = CONST.__getattribute__('ONOS_onoscli_username') + self.agentpassword = CONST.__getattribute__('ONOS_onoscli_password') + self.runtimeout = CONST.__getattribute__('ONOS_runtimeout') + self.OCT = CONST.__getattribute__('ONOS_environment_OCT') + self.OC1 = CONST.__getattribute__('ONOS_environment_OC1') + self.OC2 = CONST.__getattribute__('ONOS_environment_OC2') + self.OC3 = CONST.__getattribute__('ONOS_environment_OC3') + self.OCN = CONST.__getattribute__('ONOS_environment_OCN') + self.OCN2 = CONST.__getattribute__('ONOS_environment_OCN2') + self.installer_master = CONST.__getattribute__( + 'ONOS_environment_installer_master') self.installer_master_username = ( - CONST.ONOS_environment_installer_master_username) + CONST.__getattribute__( + 'ONOS_environment_installer_master_username')) self.installer_master_password = ( - CONST.ONOS_environment_installer_master_password) + CONST.__getattribute__( + 'ONOS_environment_installer_master_password')) self.hosts = [self.OC1, self.OCN, self.OCN2] self.localhost = self.OCT diff --git a/functest/opnfv_tests/vnf/ims/clearwater.py b/functest/opnfv_tests/vnf/ims/clearwater.py index 32c6dc5c..33ed352d 100644 --- a/functest/opnfv_tests/vnf/ims/clearwater.py +++ b/functest/opnfv_tests/vnf/ims/clearwater.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # coding: utf8 ####################################################################### # diff --git a/functest/opnfv_tests/vnf/ims/orchestrator_cloudify.py b/functest/opnfv_tests/vnf/ims/orchestrator_cloudify.py index 4ceeb25f..0cdfcb3f 100644 --- a/functest/opnfv_tests/vnf/ims/orchestrator_cloudify.py +++ b/functest/opnfv_tests/vnf/ims/orchestrator_cloudify.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # coding: utf8 ####################################################################### # diff --git a/functest/tests/unit/cli/commands/test_cli_os.py b/functest/tests/unit/cli/commands/test_cli_os.py index 7ab4ddc3..b551ee4d 100644 --- a/functest/tests/unit/cli/commands/test_cli_os.py +++ b/functest/tests/unit/cli/commands/test_cli_os.py @@ -70,9 +70,8 @@ class CliOpenStackTesting(unittest.TestCase): mock_ftutils_execute): CONST.__setattr__('INSTALLER_TYPE', self.installer_type) CONST.__setattr__('INSTALLER_IP', self.installer_ip) - cmd = ("%s/releng/utils/fetch_os_creds.sh -d %s -i %s -a %s" - % (CONST.__getattribute__('dir_repos'), - self.openstack_creds, + cmd = ("fetch_os_creds.sh -d %s -i %s -a %s" + % (self.openstack_creds, self.installer_type, self.installer_ip)) self.cli_os.openstack_creds = self.openstack_creds @@ -93,9 +92,8 @@ class CliOpenStackTesting(unittest.TestCase): mock_ftutils_execute): CONST.__setattr__('INSTALLER_TYPE', None) CONST.__setattr__('INSTALLER_IP', self.installer_ip) - cmd = ("%s/releng/utils/fetch_os_creds.sh -d %s -i %s -a %s" - % (CONST.__getattribute__('dir_repos'), - self.openstack_creds, + cmd = ("fetch_os_creds.sh -d %s -i %s -a %s" + % (self.openstack_creds, None, self.installer_ip)) self.cli_os.openstack_creds = self.openstack_creds @@ -121,9 +119,8 @@ class CliOpenStackTesting(unittest.TestCase): installer_ip = None CONST.__setattr__('INSTALLER_TYPE', installer_type) CONST.__setattr__('INSTALLER_IP', installer_ip) - cmd = ("%s/releng/utils/fetch_os_creds.sh -d %s -i %s -a %s" - % (CONST.__getattribute__('dir_repos'), - self.openstack_creds, + cmd = ("fetch_os_creds.sh -d %s -i %s -a %s" + % (self.openstack_creds, installer_type, installer_ip)) self.cli_os.openstack_creds = self.openstack_creds diff --git a/functest/tests/unit/core/test_pytest_suite_runner.py b/functest/tests/unit/core/test_unit.py index f317cdea..79c4e7d7 100644 --- a/functest/tests/unit/core/test_pytest_suite_runner.py +++ b/functest/tests/unit/core/test_unit.py @@ -12,26 +12,29 @@ import unittest import mock -from functest.core import pytest_suite_runner +from functest.core import unit from functest.core import testcase class PyTestSuiteRunnerTesting(unittest.TestCase): def setUp(self): - self.psrunner = pytest_suite_runner.PyTestSuiteRunner() + self.psrunner = unit.Suite() + self.psrunner.suite = "foo" @mock.patch('unittest.TestLoader') def _test_run(self, mock_class=None, result=mock.Mock(), status=testcase.TestCase.EX_OK): - with mock.patch('functest.core.pytest_suite_runner.' - 'unittest.TextTestRunner.run', + with mock.patch('functest.core.unit.unittest.TextTestRunner.run', return_value=result): self.assertEqual(self.psrunner.run(), status) mock_class.assert_not_called() def test_check_suite_null(self): - self.assertEqual(self.psrunner.suite, None) + self.assertEqual(unit.Suite().suite, None) + self.psrunner.suite = None + self._test_run(result=mock.Mock(), + status=testcase.TestCase.EX_RUN_ERROR) def test_run_no_ut(self): mock_result = mock.Mock(testsRun=0, errors=[], failures=[]) @@ -78,8 +81,7 @@ class PyTestSuiteRunnerTesting(unittest.TestCase): failures=[]) mock_obj = mock.Mock() mock_class.side_effect = mock_obj - with mock.patch('functest.core.pytest_suite_runner.' - 'unittest.TextTestRunner.run', + with mock.patch('functest.core.unit.unittest.TextTestRunner.run', return_value=mock_result): self.assertEqual(self.psrunner.run(name='foo'), testcase.TestCase.EX_OK) diff --git a/functest/tests/unit/utils/test_functest_utils.py b/functest/tests/unit/utils/test_functest_utils.py index 218f7f72..12604c1a 100644 --- a/functest/tests/unit/utils/test_functest_utils.py +++ b/functest/tests/unit/utils/test_functest_utils.py @@ -452,9 +452,8 @@ class FunctestUtilsTesting(unittest.TestCase): mock_logger_info.assert_called_once_with(msg_exec) mopen.assert_called_once_with(self.output_file, "w") - @mock.patch('functest.utils.functest_utils.logger.info') - def test_execute_command_args_missing_with_success(self, mock_logger_info, - ): + @mock.patch('sys.stdout') + def test_execute_command_args_missing_with_success(self, stdout=None): with mock.patch('functest.utils.functest_utils.subprocess.Popen') \ as mock_subproc_open: @@ -476,9 +475,8 @@ class FunctestUtilsTesting(unittest.TestCase): output_file=None) self.assertEqual(resp, 0) - @mock.patch('functest.utils.functest_utils.logger.error') - def test_execute_command_args_missing_with_error(self, mock_logger_error, - ): + @mock.patch('sys.stdout') + def test_execute_command_args_missing_with_error(self, stdout=None): with mock.patch('functest.utils.functest_utils.subprocess.Popen') \ as mock_subproc_open: |