aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--functest/tests/unit/utils/test_functest_utils.py12
-rw-r--r--functest/utils/config.py1
-rw-r--r--functest/utils/constants.py5
-rw-r--r--functest/utils/functest_utils.py92
-rw-r--r--tox.ini6
5 files changed, 56 insertions, 60 deletions
diff --git a/functest/tests/unit/utils/test_functest_utils.py b/functest/tests/unit/utils/test_functest_utils.py
index 4438c6a2..218d03c4 100644
--- a/functest/tests/unit/utils/test_functest_utils.py
+++ b/functest/tests/unit/utils/test_functest_utils.py
@@ -10,12 +10,12 @@
# pylint: disable=missing-docstring
import logging
-import pkg_resources
import os
import time
import unittest
import mock
+import pkg_resources
from six.moves import urllib
from functest.utils import functest_utils
@@ -147,8 +147,8 @@ class FunctestUtilsTesting(unittest.TestCase):
def cmd_readline(self):
return 'test_value\n'
- @mock.patch('functest.utils.functest_utils.logger.error')
- @mock.patch('functest.utils.functest_utils.logger.info')
+ @mock.patch('functest.utils.functest_utils.LOGGER.error')
+ @mock.patch('functest.utils.functest_utils.LOGGER.info')
def test_execute_command_args_present_with_error(self, mock_logger_info,
mock_logger_error):
with mock.patch('functest.utils.functest_utils.subprocess.Popen') \
@@ -178,7 +178,7 @@ class FunctestUtilsTesting(unittest.TestCase):
mopen.assert_called_once_with(self.output_file, "w")
mock_logger_error.assert_called_once_with(self.error_msg)
- @mock.patch('functest.utils.functest_utils.logger.info')
+ @mock.patch('functest.utils.functest_utils.LOGGER.info')
def test_execute_command_args_present_with_success(self, mock_logger_info,
):
with mock.patch('functest.utils.functest_utils.subprocess.Popen') \
@@ -255,7 +255,7 @@ class FunctestUtilsTesting(unittest.TestCase):
def _get_functest_config(self, var):
return var
- @mock.patch('functest.utils.functest_utils.logger.error')
+ @mock.patch('functest.utils.functest_utils.LOGGER.error')
def test_get_dict_by_test(self, mock_logger_error):
with mock.patch('six.moves.builtins.open', mock.mock_open()), \
mock.patch('functest.utils.functest_utils.yaml.safe_load') \
@@ -321,7 +321,7 @@ class FunctestUtilsTesting(unittest.TestCase):
resp = functest_utils.get_functest_yaml()
self.assertEqual(resp, self.file_yaml)
- @mock.patch('functest.utils.functest_utils.logger.info')
+ @mock.patch('functest.utils.functest_utils.LOGGER.info')
def test_print_separator(self, mock_logger_info):
functest_utils.print_separator()
mock_logger_info.assert_called_once_with("======================="
diff --git a/functest/utils/config.py b/functest/utils/config.py
index f4749a75..050f12a9 100644
--- a/functest/utils/config.py
+++ b/functest/utils/config.py
@@ -12,6 +12,7 @@ import six
class Config(object):
def __init__(self):
try:
+ # pylint: disable=bad-continuation
with open(pkg_resources.resource_filename(
'functest', 'ci/config_functest.yaml')) as yfile:
self.functest_yaml = yaml.safe_load(yfile)
diff --git a/functest/utils/constants.py b/functest/utils/constants.py
index 75c97c76..cb3ea787 100644
--- a/functest/utils/constants.py
+++ b/functest/utils/constants.py
@@ -1,12 +1,15 @@
#!/usr/bin/env python
+# pylint: disable=missing-docstring
+
import six
from functest.utils import config
from functest.utils import env
-class Constants(object):
+class Constants(object): # pylint: disable=too-few-public-methods
+
def __init__(self):
for attr_n, attr_v in six.iteritems(config.CONF.__dict__):
self.__setattr__(attr_n, attr_v)
diff --git a/functest/utils/functest_utils.py b/functest/utils/functest_utils.py
index 1e88dadb..c1491855 100644
--- a/functest/utils/functest_utils.py
+++ b/functest/utils/functest_utils.py
@@ -6,24 +6,25 @@
# 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
-#
-import functools
+
+# pylint: disable=missing-docstring
+
+from __future__ import print_function
import logging
import os
-import pkg_resources
import re
import shutil
import subprocess
import sys
-import time
+import pkg_resources
import dns.resolver
from six.moves import urllib
import yaml
from functest.utils import constants
-logger = logging.getLogger(__name__)
+LOGGER = logging.getLogger(__name__)
# ----------------------------------------------------------
@@ -53,8 +54,8 @@ def download_url(url, dest_path):
except (urllib.error.HTTPError, urllib.error.URLError):
return False
- with open(dest, 'wb') as f:
- shutil.copyfileobj(response, f)
+ with open(dest, 'wb') as lfile:
+ shutil.copyfileobj(response, lfile)
return True
@@ -72,13 +73,13 @@ def get_resolvconf_ns():
line = rconf.readline()
resolver = dns.resolver.Resolver()
while line:
- ip = re.search(r"\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b", line)
- if ip:
- resolver.nameservers = [ip.group(0)]
+ addr_ip = re.search(r"\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b", line)
+ if addr_ip:
+ resolver.nameservers = [addr_ip.group(0)]
try:
result = resolver.query('opnfv.org')[0]
if result != "":
- nameservers.append(ip.group())
+ nameservers.append(addr_ip.group())
except dns.exception.Timeout:
pass
line = rconf.readline()
@@ -109,49 +110,50 @@ def execute_command(cmd, info=False, error_msg="",
msg_exec = ("Executing command: '%s'" % cmd)
if verbose:
if info:
- logger.info(msg_exec)
+ LOGGER.info(msg_exec)
else:
- logger.debug(msg_exec)
- p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE,
- stderr=subprocess.STDOUT)
+ LOGGER.debug(msg_exec)
+ popen = subprocess.Popen(
+ cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
if output_file:
- f = open(output_file, "w")
- for line in iter(p.stdout.readline, b''):
+ ofd = open(output_file, "w")
+ for line in iter(popen.stdout.readline, b''):
if output_file:
- f.write(line)
+ ofd.write(line)
else:
line = line.replace('\n', '')
- print(line)
+ print (line)
sys.stdout.flush()
if output_file:
- f.close()
- p.stdout.close()
- returncode = p.wait()
+ ofd.close()
+ popen.stdout.close()
+ returncode = popen.wait()
if returncode != 0:
if verbose:
- logger.error(error_msg)
+ LOGGER.error(error_msg)
return returncode
def get_dict_by_test(testname):
+ # pylint: disable=bad-continuation
with open(pkg_resources.resource_filename(
- 'functest', 'ci/testcases.yaml')) as f:
- testcases_yaml = yaml.safe_load(f)
+ 'functest', 'ci/testcases.yaml')) as tyaml:
+ testcases_yaml = yaml.safe_load(tyaml)
for dic_tier in testcases_yaml.get("tiers"):
for dic_testcase in dic_tier['testcases']:
if dic_testcase['case_name'] == testname:
return dic_testcase
- logger.error('Project %s is not defined in testcases.yaml' % testname)
+ LOGGER.error('Project %s is not defined in testcases.yaml', testname)
return None
def get_criteria_by_test(testname):
- dict = get_dict_by_test(testname)
- if dict:
- return dict['criteria']
+ tdict = get_dict_by_test(testname)
+ if tdict:
+ return tdict['criteria']
return None
@@ -160,21 +162,20 @@ def get_criteria_by_test(testname):
# YAML UTILS
#
# -----------------------------------------------------------
-def get_parameter_from_yaml(parameter, file):
+def get_parameter_from_yaml(parameter, yfile):
"""
Returns the value of a given parameter in file.yaml
parameter must be given in string format with dots
Example: general.openstack.image_name
"""
- with open(file) as f:
- file_yaml = yaml.safe_load(f)
- f.close()
+ with open(yfile) as yfd:
+ file_yaml = yaml.safe_load(yfd)
value = file_yaml
for element in parameter.split("."):
value = value.get(element)
if value is None:
raise ValueError("The parameter %s is not defined in"
- " %s" % (parameter, file))
+ " %s" % (parameter, yfile))
return value
@@ -184,25 +185,12 @@ def get_functest_config(parameter):
def get_functest_yaml():
- with open(constants.CONST.__getattribute__('CONFIG_FUNCTEST_YAML')) as f:
- functest_yaml = yaml.safe_load(f)
- f.close()
+ # pylint: disable=bad-continuation
+ with open(constants.CONST.__getattribute__(
+ 'CONFIG_FUNCTEST_YAML')) as yaml_fd:
+ functest_yaml = yaml.safe_load(yaml_fd)
return functest_yaml
def print_separator():
- logger.info("==============================================")
-
-
-def timethis(func):
- """Measure the time it takes for a function to complete"""
- @functools.wraps(func)
- def timed(*args, **kwargs):
- ts = time.time()
- result = func(*args, **kwargs)
- te = time.time()
- elapsed = '{0}'.format(te - ts)
- logger.info('{f}(*{a}, **{kw}) took: {t} sec'.format(
- f=func.__name__, a=args, kw=kwargs, t=elapsed))
- return result, elapsed
- return timed
+ LOGGER.info("==============================================")
diff --git a/tox.ini b/tox.ini
index 08b24e0e..251ca26d 100644
--- a/tox.ini
+++ b/tox.ini
@@ -43,12 +43,16 @@ modules =
functest.tests.unit.odl
functest.tests.unit.vnf.router
functest.tests.unit.utils.test_decorators
+ functest.utils.config
functest.utils.decorators
+ functest.utils.constants
+ functest.utils.env
+ functest.utils.functest_utils
commands =
bash -c "\
pylint -f parseable --disable=locally-disabled functest | \
tee pylint.out | sed -ne '/Raw metrics/,//p'"
- pylint --disable=locally-disabled --reports=n --errors-only functest
+ pylint --reports=n --errors-only functest
pylint --disable=locally-disabled --reports=n {[testenv:pylint]modules}
[testenv:yamllint]