Fix pylint errors in several utils modules
authorCédric Ollivier <cedric.ollivier@orange.com>
Fri, 26 Jan 2018 13:29:01 +0000 (14:29 +0100)
committerCédric Ollivier <cedric.ollivier@orange.com>
Fri, 26 Jan 2018 17:14:28 +0000 (18:14 +0100)
All utils which are moving to xtesting are now fixed.
It remains OpenStack and Functest utils (+ the related unit tests)
which doesn't move to the new package.

Change-Id: If13c627c8444c62d5c6bf9c8057d6413aa0e56c7
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
functest/tests/unit/utils/test_functest_utils.py
functest/utils/config.py
functest/utils/constants.py
functest/utils/functest_utils.py
tox.ini

index 4438c6a..218d03c 100644 (file)
 # 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("======================="
index f4749a7..050f12a 100644 (file)
@@ -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)
index 75c97c7..cb3ea78 100644 (file)
@@ -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)
index 1e88dad..c149185 100644 (file)
@@ -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 08b24e0..251ca26 100644 (file)
--- 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]