Move the proj to python3 25/68325/16
authorPanagiotis Karalis <panos.pkaralis@gmail.com>
Wed, 7 Aug 2019 07:46:52 +0000 (10:46 +0300)
committerDan Xu <xudan16@huawei.com>
Mon, 16 Sep 2019 06:45:00 +0000 (06:45 +0000)
The aim of this patch is to upgrade python version
of this project from python2 to python3.

Signed-off-by: Panagiotis Karalis <panos.pkaralis@gmail.com>
Change-Id: I3d3ef01176fda1b23a0542a24625be2f3368c40e

22 files changed:
docker/Dockerfile
docker/Dockerfile.aarch64.patch
docker/Dockerfile.centos7
dovetail/cli/commands/cli_testcase.py
dovetail/container.py
dovetail/parser.py
dovetail/report.py
dovetail/run.py
dovetail/test_runner.py
dovetail/testcase.py
dovetail/tests/unit/cli/commands/test_cli_testcase.py
dovetail/tests/unit/test_parser.py
dovetail/tests/unit/test_report.py
dovetail/tests/unit/test_run.py
dovetail/tests/unit/test_test_runner.py
dovetail/tests/unit/test_testcase.py
dovetail/tests/unit/utils/test_dovetail_utils.py
dovetail/utils/dovetail_config.py
dovetail/utils/dovetail_logger.py
dovetail/utils/dovetail_utils.py
etc/conf/bottlenecks_config.yml
tox.ini

index 56ca1ea..6d6a7db 100644 (file)
@@ -25,14 +25,16 @@ RUN \
         libssl-dev \
         libffi-dev \
         vim \
-        python-dev \
-        python-pip \
+        python3-dev \
+        python3-pip \
         --no-install-recommends \
 && \
     rm -rf /var/lib/apt/lists/*
 
-RUN pip install -U setuptools wheel
+RUN pip3 install -U setuptools wheel
 
+ENV LC_ALL C.UTF-8
+ENV LANG C.UTF-8
 ENV HOME /home/opnfv
 ENV REPOS_DIR ${HOME}/dovetail
 ENV API_DIR ${REPOS_DIR}/dovetail/api
@@ -46,11 +48,11 @@ RUN \
     (cd /tmp/dovetail && \
         git fetch --tags https://gerrit.opnfv.org/gerrit/dovetail $BRANCH && \
         git checkout FETCH_HEAD && \
-        pip install .) \
+        pip3 install .) \
 && \
     rm -rf /tmp/dovetail \
 && \
-    ln -s /usr/local/lib/python2.7/dist-packages/dovetail ${REPOS_DIR}/dovetail
+    ln -s /usr/local/lib/python3.6/dist-packages/dovetail ${REPOS_DIR}/dovetail
 
 RUN \
     git clone https://github.com/swagger-api/swagger-ui.git \
index 68f002c..ecde81f 100644 (file)
@@ -32,9 +32,9 @@ index c5239db..b4fd9f7 100644
  RUN \
      apt-get update \
 @@ -17,21 +25,11 @@ RUN \
-         python-dev \
-         python-mock \
-         python-pip \
+         python3-dev \
+         python3-mock \
+         python3-pip \
 -        apt-transport-https \
          wget \
 +        sudo \
@@ -59,10 +59,10 @@ index c5239db..b4fd9f7 100644
  RUN \
      mkdir -p ${REPOS_DIR} \
  && \
-+    pip install -U setuptools --upgrade \
++    pip3 install -U setuptools --upgrade \
 +&& \
-+    pip install -U wheel \
++    pip3 install -U wheel \
 +&& \
      git config --global http.sslVerify false \
  && \
-     pip install git+https://git.opnfv.org/dovetail@$BRANCH#egg=dovetail \
+     pip3 install git+https://git.opnfv.org/dovetail@$BRANCH#egg=dovetail \
index 258b939..f9b944f 100644 (file)
@@ -14,7 +14,7 @@ LABEL version="0.1" description="OPNFV Dovetail Docker Container"
 ARG BRANCH=master
 
 RUN yum update -y && yum install -y sudo iproute epel-release && \
-        yum install -y python-pip git docker && \
+        yum install -y python3-pip git docker && \
         sed -ie 's/requiretty/!requiretty/g' /etc/sudoers
 
 ENV HOME /home/opnfv
@@ -23,9 +23,9 @@ WORKDIR /home/opnfv
 
 RUN git config --global http.sslVerify false && \
     git clone --depth 1 -b $BRANCH https://git.opnfv.org/dovetail ${REPOS_DIR} && \
-    pip install -U pip && \
-    pip install -r ${REPOS_DIR}/requirements.txt && \
-    pip install -e . && \
+    pip3 install -U pip3 && \
+    pip3 install -r ${REPOS_DIR}/requirements.txt && \
+    pip3 install -e . && \
     mkdir -p ${REPOS_DIR}/results
 
 WORKDIR ${REPOS_DIR}/dovetail
index 2725c89..6711381 100644 (file)
@@ -82,7 +82,7 @@ class CliTestcase(object):
             os.path.join(os.path.dirname(__file__),
                          os.pardir, os.pardir))
 
-        cmd = ("python %s/run.py"
+        cmd = ("python3 %s/run.py"
                " %s" % (repo_dir, options))
         dt_utils.exec_cmd(cmd, exit_on_error=True,
                           exec_msg_on=False, info=True)
index 71cb412..ec9b1fb 100644 (file)
@@ -12,9 +12,9 @@
 import docker
 import sys
 
-import utils.dovetail_logger as dt_logger
-import utils.dovetail_utils as dt_utils
-from utils.dovetail_config import DovetailConfig as dt_cfg
+import dovetail.utils.dovetail_logger as dt_logger
+import dovetail.utils.dovetail_utils as dt_utils
+from dovetail.utils.dovetail_config import DovetailConfig as dt_cfg
 
 
 class Container(object):
index 55ba6b8..e0935ad 100644 (file)
@@ -11,9 +11,9 @@
 import jinja2
 
 
-import utils.dovetail_logger as dt_logger
-import utils.dovetail_utils as dt_utils
-from utils.dovetail_config import DovetailConfig as dt_cfg
+import dovetail.utils.dovetail_logger as dt_logger
+import dovetail.utils.dovetail_utils as dt_utils
+from dovetail.utils.dovetail_config import DovetailConfig as dt_cfg
 
 
 class Parser(object):
index 25c34a2..d40303e 100644 (file)
@@ -20,11 +20,11 @@ import datetime
 import tarfile
 import time
 
-import utils.dovetail_logger as dt_logger
+import dovetail.utils.dovetail_logger as dt_logger
 
-from utils.dovetail_config import DovetailConfig as dt_cfg
-import utils.dovetail_utils as dt_utils
-from testcase import Testcase
+from dovetail.utils.dovetail_config import DovetailConfig as dt_cfg
+import dovetail.utils.dovetail_utils as dt_utils
+from dovetail.testcase import Testcase
 
 
 class Report(object):
index 193efbc..c528191 100755 (executable)
@@ -19,15 +19,15 @@ import uuid
 
 import click
 
-from container import Container
+from dovetail.container import Container
 from dovetail import constants
-from parser import Parser
-import report as dt_report
-import test_runner as dt_test_runner
-import testcase as dt_testcase
-from utils.dovetail_config import DovetailConfig as dt_cfg
-import utils.dovetail_logger as dt_logger
-import utils.dovetail_utils as dt_utils
+from dovetail.parser import Parser
+import dovetail.report as dt_report
+import dovetail.test_runner as dt_test_runner
+import dovetail.testcase as dt_testcase
+from dovetail.utils.dovetail_config import DovetailConfig as dt_cfg
+import dovetail.utils.dovetail_logger as dt_logger
+import dovetail.utils.dovetail_utils as dt_utils
 
 EXIT_RUN_FAILED = 2
 
index 44233e1..97367db 100644 (file)
@@ -14,11 +14,11 @@ import jinja2
 import jinja2.meta
 import yaml
 
-from container import Container
+from dovetail.container import Container
 from dovetail import constants
-from utils.dovetail_config import DovetailConfig as dt_cfg
-import utils.dovetail_utils as dt_utils
-import utils.dovetail_logger as dt_logger
+from dovetail.utils.dovetail_config import DovetailConfig as dt_cfg
+import dovetail.utils.dovetail_utils as dt_utils
+import dovetail.utils.dovetail_logger as dt_logger
 
 
 class Runner(object):
index 3856b13..b07a878 100644 (file)
@@ -13,11 +13,11 @@ import os
 import yaml
 
 from dovetail import constants
-from parser import Parser
-from test_runner import TestRunnerFactory
-from utils.dovetail_config import DovetailConfig as dt_cfg
-import utils.dovetail_logger as dt_logger
-import utils.dovetail_utils as dt_utils
+from dovetail.parser import Parser
+from dovetail.test_runner import TestRunnerFactory
+from dovetail.utils.dovetail_config import DovetailConfig as dt_cfg
+import dovetail.utils.dovetail_logger as dt_logger
+import dovetail.utils.dovetail_utils as dt_utils
 
 
 class Testcase(object):
@@ -25,7 +25,7 @@ class Testcase(object):
     logger = None
 
     def __init__(self, testcase_yaml):
-        self.testcase = testcase_yaml.values()[0]
+        self.testcase = list(testcase_yaml.values())[0]
         self.testcase['passed'] = 'FAIL'
         self.cmds = []
         self.sub_testcase_status = {}
@@ -197,10 +197,11 @@ class Testcase(object):
             for testcase_file in files:
                 with open(os.path.join(root, testcase_file)) as f:
                     testcase_yaml = yaml.safe_load(f)
-                    case_type = testcase_yaml.values()[0]['validate']['type']
+                    case_type = \
+                        list(testcase_yaml.values())[0]['validate']['type']
                     testcase = TestcaseFactory.create(case_type, testcase_yaml)
                     if testcase is not None:
-                        cls.testcase_list[next(testcase_yaml.iterkeys())] = \
+                        cls.testcase_list[next(iter(testcase_yaml.keys()))] = \
                             testcase
                     else:
                         cls.logger.error('Failed to create test case: {}'
index 2a1feb6..324db64 100644 (file)
@@ -34,7 +34,7 @@ class CliTestcaseTesting(unittest.TestCase):
         testcase.run(options)
 
         mock_path.dirname.assert_called_once()
-        cmd = 'python %s/run.py %s' % (repo_dir, options)
+        cmd = 'python3 %s/run.py %s' % (repo_dir, options)
         mock_utils.exec_cmd.assert_called_once_with(
             cmd, exit_on_error=True, exec_msg_on=False, info=True)
 
@@ -60,7 +60,7 @@ class CliTestcaseTesting(unittest.TestCase):
         mock_click.echo.assert_called_once_with(
             'testcase %s not exist or not supported' % testcase_name)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.cli.commands.cli_testcase.constants')
     @patch('os.path')
     @patch('dovetail.cli.commands.cli_testcase.click')
@@ -85,7 +85,7 @@ class CliTestcaseTesting(unittest.TestCase):
         mock_path.isfile.assert_called_once_with(testcase_whole_path)
         mock_click.echo.assert_called_once_with(file_data)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.cli.commands.cli_testcase.constants')
     @patch('os.path')
     @patch('dovetail.cli.commands.cli_testcase.click')
index acfd25c..4f16477 100644 (file)
@@ -39,28 +39,28 @@ class TestParser(unittest.TestCase):
 
     def test_parser_cmd(self, mock_logger):
         """Test whether the command is correctly parsed."""
-        mock_cmd = "python /functest/ci/run_tests.py "\
+        mock_cmd = "python3 /functest/ci/run_tests.py "\
                    "-t {{validate_testcase}} -r"
         with open(os.path.join(self.test_path, 'test_testcase.yaml')) as f:
             mock_testcase_yaml = yaml.safe_load(f)
         MockTestcase = type('Testcase', (object,), {})
         mock_testcase = MockTestcase()
-        mock_testcase.testcase = mock_testcase_yaml.values()[0]
+        mock_testcase.testcase = list(mock_testcase_yaml.values())[0]
         output = parser.Parser.parse_cmd(mock_cmd, mock_testcase)
-        expected_output = ("python /functest/ci/run_tests.py -t "
+        expected_output = ("python3 /functest/ci/run_tests.py -t "
                            "tempest_smoke_serial -r")
         self.assertEqual(expected_output, output)
 
     def test_parser_cmd_fail(self, mock_logger):
         """Test whether the command is correctly parsed."""
-        mock_cmd = "python /functest/ci/run_tests.py "\
+        mock_cmd = "python3 /functest/ci/run_tests.py "\
                    "-t {{validate_testcase}} -r"
         mock_testcase_yaml = {}
         MockTestcase = type('Testcase', (object,), {})
         mock_testcase = MockTestcase()
         mock_testcase.testcase = mock_testcase_yaml.values()
         output = parser.Parser.parse_cmd(mock_cmd, mock_testcase)
-        expected_output = ("python /functest/ci/run_tests.py -t "
+        expected_output = ("python3 /functest/ci/run_tests.py -t "
                            "None -r")
         self.assertEqual(expected_output, output)
 
index f89d0e4..fe6530c 100644 (file)
@@ -460,7 +460,7 @@ class ReportTesting(unittest.TestCase):
         report.logger.info.assert_called_once_with(expected)
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.json')
     @patch('dovetail.report.os.path')
     @patch('dovetail.report.dt_cfg')
@@ -483,7 +483,7 @@ class ReportTesting(unittest.TestCase):
         mock_json.dumps.assert_called_once_with('results')
         file_obj.write.assert_called_once_with('results text\n')
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.json')
     @patch('dovetail.report.os.path')
     @patch('dovetail.report.dt_cfg')
@@ -640,7 +640,7 @@ class ReportTesting(unittest.TestCase):
             'Result file not found: {}'.format(file_path))
         self.assertEqual(None, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.json')
     @patch('dovetail.report.dt_cfg')
     @patch('dovetail.report.dt_utils')
@@ -695,7 +695,7 @@ class ReportTesting(unittest.TestCase):
         testcase_obj.name.assert_called_once_with()
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.json')
     @patch('dovetail.report.dt_cfg')
     @patch('dovetail.report.dt_utils')
@@ -750,7 +750,7 @@ class ReportTesting(unittest.TestCase):
         testcase_obj.name.assert_called_once_with()
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.json.loads')
     @patch('dovetail.report.dt_cfg')
     @patch('dovetail.report.dt_utils')
@@ -841,7 +841,7 @@ class ReportTesting(unittest.TestCase):
             'Result file not found: {}'.format(file_path))
         self.assertEqual(None, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.json.loads')
     @patch('dovetail.report.dt_utils')
     @patch('dovetail.report.os.path')
@@ -883,7 +883,7 @@ class ReportTesting(unittest.TestCase):
         testcase_obj.set_results.assert_called_once_with(expected)
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.json.loads')
     @patch('dovetail.report.dt_utils')
     @patch('dovetail.report.os.path')
@@ -942,7 +942,7 @@ class ReportTesting(unittest.TestCase):
             'Result file not found: {}'.format(file_path))
         self.assertEqual(None, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.json.loads')
     @patch('dovetail.report.os.path')
     def test_bottlenecks_crawler_crawl_pass(self, mock_path, mock_loads,
@@ -970,7 +970,7 @@ class ReportTesting(unittest.TestCase):
         testcase_obj.set_results.assert_called_once_with(expected)
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.json.loads')
     @patch('dovetail.report.os.path')
     def test_bottlenecks_crawler_crawl_fail(self, mock_path, mock_loads,
@@ -998,7 +998,7 @@ class ReportTesting(unittest.TestCase):
         testcase_obj.set_results.assert_called_once_with(expected)
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.json.loads')
     @patch('dovetail.report.os.path')
     def test_bottlenecks_crawler_crawl_key_error(self, mock_path, mock_loads,
@@ -1036,7 +1036,7 @@ class ReportTesting(unittest.TestCase):
         mock_path.exists.assert_called_once_with(file_path)
         self.assertEqual(None, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.os.path')
     def test_shell_crawler_crawl_exception(self, mock_path, mock_open):
         mock_path.exists.return_value = True
@@ -1050,7 +1050,7 @@ class ReportTesting(unittest.TestCase):
         mock_open.assert_called_once_with(file_path, 'r')
         self.assertEqual(None, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.json.load')
     @patch('dovetail.report.os.path')
     def test_shell_crawler_crawl(self, mock_path, mock_load,
@@ -1121,7 +1121,7 @@ class ReportTesting(unittest.TestCase):
             'Result file not found: {}'.format(file_path))
         self.assertEqual(None, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.os.path')
     def test_onapvvp_crawler_crawl_pass(self, mock_path,
                                         mock_open):
@@ -1143,7 +1143,7 @@ class ReportTesting(unittest.TestCase):
         testcase_obj.set_results.assert_called_once_with(expected)
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.os.path')
     def test_onapvvp_crawler_crawl_fail(self, mock_path,
                                         mock_open):
@@ -1165,7 +1165,7 @@ class ReportTesting(unittest.TestCase):
         testcase_obj.set_results.assert_called_once_with(expected)
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.os.path')
     def test_onapvvp_crawler_crawl_value_exception(self, mock_path,
                                                    mock_open):
@@ -1189,7 +1189,7 @@ class ReportTesting(unittest.TestCase):
         testcase_obj.set_results.assert_called_once_with(expected)
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.os.path')
     def test_onapvvp_crawler_crawl_key_exception(self, mock_path,
                                                  mock_open):
@@ -1213,7 +1213,7 @@ class ReportTesting(unittest.TestCase):
         testcase_obj.set_results.assert_called_once_with(expected)
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.json.loads')
     @patch('dovetail.report.os.path')
     def test_onapvtp_crawler_crawl_pass(self, mock_path, mock_loads,
@@ -1243,7 +1243,7 @@ class ReportTesting(unittest.TestCase):
         testcase_obj.set_results.assert_called_once_with(expected)
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.json.loads')
     @patch('dovetail.report.os.path')
     def test_onapvtp_crawler_crawl_fail(self, mock_path, mock_loads,
@@ -1273,7 +1273,7 @@ class ReportTesting(unittest.TestCase):
         testcase_obj.set_results.assert_called_once_with(expected)
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.json.loads')
     @patch('dovetail.report.os.path')
     def test_onapvtp_crawler_crawl_no_criteria(self, mock_path, mock_loads,
@@ -1305,7 +1305,7 @@ class ReportTesting(unittest.TestCase):
         testcase_obj.set_results.assert_called_once_with(expected)
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.json.loads')
     @patch('dovetail.report.os.path')
     def test_onapvtp_crawler_crawl_exception(self, mock_path, mock_loads,
@@ -1337,7 +1337,7 @@ class ReportTesting(unittest.TestCase):
         testcase_obj.set_results.assert_called_once_with(expected)
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.json.loads')
     @patch('dovetail.report.os.path')
     def test_onapvtp_crawler_crawl_value_error(self, mock_path, mock_loads,
@@ -1604,7 +1604,7 @@ class ReportTesting(unittest.TestCase):
 
     @patch('dovetail.report.dt_cfg')
     @patch('dovetail.report.os.path')
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.os.getenv')
     def test_get_checksum_tosca(self, mock_env, mock_open, mock_path,
                                 mock_config):
@@ -1625,7 +1625,7 @@ class ReportTesting(unittest.TestCase):
     @patch('dovetail.report.dt_cfg')
     @patch('dovetail.report.os.path')
     @patch('dovetail.report.os.walk')
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.report.os.getenv')
     def test_get_checksum_heat(self, mock_env, mock_open, mock_walk, mock_path,
                                mock_config):
index b2d618a..c1e3711 100644 (file)
@@ -490,7 +490,7 @@ class RunTesting(unittest.TestCase):
             'Test area area is not defined.')
         self.assertEqual(None, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.run.os')
     @patch('dovetail.run.json')
     @patch('dovetail.run.uuid')
@@ -582,7 +582,7 @@ class RunTesting(unittest.TestCase):
         mock_get_result.assert_called_once_with()
         self.assertEqual(expected.code, 0)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.run.json')
     @patch('dovetail.run.os')
     @patch('dovetail.run.uuid')
index 4bf9713..3cb2753 100644 (file)
@@ -499,7 +499,7 @@ class TestRunnerTesting(unittest.TestCase):
              'result_dir': 'three'},
             result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.test_runner.json')
     @patch('dovetail.test_runner.dt_cfg')
     @patch('dovetail.test_runner.dt_utils')
@@ -544,7 +544,7 @@ class TestRunnerTesting(unittest.TestCase):
              'pass': 'FAIL'})
         file_obj.write.assert_called_once_with(dump_obj)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.test_runner.dt_cfg')
     @patch('dovetail.test_runner.dt_utils')
     @patch('dovetail.test_runner.os.path')
index fc949fe..81a8de3 100644 (file)
@@ -248,7 +248,7 @@ class TestcaseTesting(unittest.TestCase):
             'Test case: {} post_condition is empty.'.format(testcase.name()))
         self.assertEqual(False, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.testcase.os.path')
     @patch('dovetail.testcase.dt_cfg')
     @patch.object(tcase.Testcase, 'sub_testcase')
@@ -274,7 +274,7 @@ class TestcaseTesting(unittest.TestCase):
             'Save test cases to {}'.format(file_path))
         self.assertEqual(file_path, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.testcase.os.path')
     @patch('dovetail.testcase.dt_cfg')
     @patch.object(tcase.Testcase, 'sub_testcase')
@@ -351,7 +351,7 @@ class TestcaseTesting(unittest.TestCase):
             result = testcase.increase_retry()
         self.assertEqual(42, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.testcase.yaml')
     @patch('dovetail.testcase.os')
     @patch('dovetail.testcase.TestcaseFactory')
@@ -378,7 +378,7 @@ class TestcaseTesting(unittest.TestCase):
         mock_factory.create.assert_called_once_with('value', yaml_dict)
         self.assertEqual(runner_obj, tcase.Testcase.get('key'))
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.testcase.yaml')
     @patch('dovetail.testcase.os')
     @patch('dovetail.testcase.TestcaseFactory')
@@ -624,7 +624,7 @@ class TestcaseTesting(unittest.TestCase):
 
         self.assertEqual(None, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('dovetail.testcase.yaml')
     @patch('dovetail.testcase.os')
     @patch('dovetail.testcase.constants')
index 2635fb6..5b403a5 100644 (file)
@@ -27,7 +27,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         pass
 
     @patch('sys.stdout')
-    @patch('__builtin__.print')
+    @patch('builtins.print')
     def test_exec_log_no_verbose(self, mock_print, mock_stdout):
         dovetail_utils.exec_log(verbose=False, logger=None, msg='',
                                 level='info', flush=True)
@@ -36,7 +36,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         mock_stdout.flush.assert_not_called()
 
     @patch('sys.stdout')
-    @patch('__builtin__.print')
+    @patch('builtins.print')
     def test_exec_log_no_logger_flush(self, mock_print, mock_stdout):
         message = 'message'
 
@@ -47,7 +47,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         mock_stdout.flush.assert_called_once()
 
     @patch('sys.stdout')
-    @patch('__builtin__.print')
+    @patch('builtins.print')
     def test_exec_log_no_logger_no_flush(self, mock_print, mock_stdout):
         message = 'message'
 
@@ -134,7 +134,7 @@ class DovetailUtilsTesting(unittest.TestCase):
                                              .format(file_path))
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('os.path', autospec=True)
     def test_read_plain_file(self, mock_path, mock_open):
         file_path = 'known_file'
@@ -149,7 +149,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         mock_open.assert_called_once_with(file_path, 'r')
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('os.path', autospec=True)
     def test_read_plain_file_raised_exception(self, mock_path, mock_open):
         logger = Mock()
@@ -182,7 +182,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         self.assertEqual(expected, result)
 
     @patch('yaml.safe_load')
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('os.path', autospec=True)
     def test_read_yaml_file(self, mock_path, mock_open, mock_load):
         file_obj = Mock()
@@ -200,7 +200,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         mock_load.assert_called_once_with(file_obj)
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('os.path', autospec=True)
     def test_read_yaml_file_raised_exception(self, mock_path, mock_open):
         logger = Mock()
@@ -235,7 +235,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         self.assertEqual(expected, result)
 
     @patch('yaml.safe_load')
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('os.path', autospec=True)
     def test_get_hosts_info_not_yaml(self, mock_path, mock_open, mock_load):
         file_path = 'file_path'
@@ -260,7 +260,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         self.assertEqual(expected, result)
 
     @patch('yaml.safe_load')
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('os.path', autospec=True)
     def test_get_hosts_info_no_hosts_info(self, mock_path, mock_open,
                                           mock_load):
@@ -287,7 +287,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         self.assertEqual(expected, result)
 
     @patch('yaml.safe_load')
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('os.path', autospec=True)
     def test_get_hosts_info_no_hostname(self, mock_path, mock_open, mock_load):
         file_path = 'file_path'
@@ -310,7 +310,7 @@ class DovetailUtilsTesting(unittest.TestCase):
 
     @patch('dovetail.utils.dovetail_utils.add_hosts_info')
     @patch('yaml.safe_load')
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('os.path', autospec=True)
     def test_get_hosts_info_no_valid_hostname(self, mock_path, mock_open,
                                               mock_load, mock_fn):
@@ -331,13 +331,13 @@ class DovetailUtilsTesting(unittest.TestCase):
         mock_path.isfile.assert_called_once_with(file_complete_name)
         mock_open.assert_called_once_with(file_complete_name)
         mock_load.assert_called_once_with(file_obj)
-        mock_fn.assert_called_once_with(hosts_info.keys()[0],
-                                        hosts_info.values()[0])
+        mock_fn.assert_called_once_with(list(hosts_info.keys())[0],
+                                        list(hosts_info.values())[0])
         self.assertEqual(expected, result)
 
     @patch('dovetail.utils.dovetail_utils.add_hosts_info')
     @patch('yaml.safe_load')
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('os.path', autospec=True)
     def test_get_hosts_info(self, mock_path, mock_open, mock_load, mock_fn):
         file_path = 'file_path'
@@ -430,7 +430,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         date = '2018-08-10 05:12:27'
         logger = Mock()
 
-        expected = '0m0s'
+        expected = '0.0m0s'
         result = dovetail_utils.get_duration(date, date, logger)
 
         self.assertEqual(expected, result)
@@ -533,7 +533,7 @@ class DovetailUtilsTesting(unittest.TestCase):
 
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('os.environ')
     def test_source_env(self, mock_env, mock_open):
         file_path = 'file_path'
@@ -587,7 +587,7 @@ class DovetailUtilsTesting(unittest.TestCase):
             [call("Don't support this Docker server version. "
                   "Docker server should be updated to at least 1.12.3.")])
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('os.path')
     @patch('os.listdir')
     @patch('json.load')
@@ -619,7 +619,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         file_obj.write.assert_called_once_with(file_content_str)
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('os.path')
     @patch('os.listdir')
     def test_combine_files_read_exception(self, mock_listdir, mock_path,
@@ -642,7 +642,7 @@ class DovetailUtilsTesting(unittest.TestCase):
             'Failed to read file {}.'.format(file_complete_name))
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('os.path')
     @patch('os.listdir')
     @patch('json.load')
@@ -678,7 +678,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         self.assertEqual(expected, result)
 
     @patch('json.dump')
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('os.path')
     @patch('dovetail.utils.dovetail_utils.check_https_enabled')
     @patch('os.getenv')
@@ -797,7 +797,7 @@ class DovetailUtilsTesting(unittest.TestCase):
             .format(services_exception_msg))
         self.assertEqual(expected, result)
 
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('os.path')
     @patch('dovetail.utils.dovetail_utils.check_https_enabled')
     @patch('os.getenv')
@@ -1029,7 +1029,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         self.assertEqual(expected, result)
 
     @patch('os.path')
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('yaml.safe_load')
     def test_get_inventory_password(self, mock_load, mock_open, mock_path):
         name = 'name'
@@ -1068,7 +1068,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         self.assertEqual(expected, result)
 
     @patch('os.path')
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('yaml.safe_load')
     def test_get_inventory_key_filename(self, mock_load, mock_open, mock_path):
         name = 'name'
@@ -1112,7 +1112,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         self.assertEqual(expected, result)
 
     @patch('os.path')
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('yaml.safe_load')
     def test_get_inventory_other(self, mock_load, mock_open, mock_path):
         name = 'name'
@@ -1145,7 +1145,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         self.assertEqual(expected, result)
 
     @patch('os.path')
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     @patch('yaml.safe_load')
     def test_get_inventory_keyerror(self, mock_load, mock_open, mock_path):
         name = 'name'
@@ -1176,7 +1176,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         self.assertEqual(expected, result)
 
     @patch('os.path')
-    @patch('__builtin__.open')
+    @patch('builtins.open')
     def test_get_inventory_exception(self, mock_open, mock_path):
         inventory_file_name = 'inventory'
         pod_file_name = 'pod'
@@ -1251,7 +1251,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         subp_stdout.close.assert_called_once_with()
         subprocess_obj.wait.assert_called_once_with()
         mock_getenv.assert_called_once_with('DEBUG')
-        mock_bar.assert_called_once_with(1)
+        mock_bar.assert_called_once_with(1)
         self.assertEqual(expected, result)
 
     @patch('sys.exit')
@@ -1286,6 +1286,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         log_calls = [
             call(verbose, logger, "Executing command: '%s'" % cmd, 'debug'),
             call(verbose, logger, cmd_output, 'debug', True),
+            call(verbose, logger, '', 'debug', True),
             call(verbose, logger, "The command '%s' failed." % cmd, 'error')]
         mock_log.assert_has_calls(log_calls)
         mock_open.assert_called_once_with(cmd, shell=True, stdout=mock_pipe,
@@ -1294,7 +1295,7 @@ class DovetailUtilsTesting(unittest.TestCase):
         subp_stdout.close.assert_called_once_with()
         subprocess_obj.wait.assert_called_once_with()
         mock_getenv.assert_called_once_with('DEBUG')
-        mock_bar.assert_called_once_with(1)
+        mock_bar.assert_called_once_with(1)
         mock_exit.assert_called_once_with(1)
 
     @patch('os.path', autospec=True)
index 1d13c69..98be8e6 100644 (file)
@@ -25,7 +25,7 @@ class DovetailConfig(object):
         path = os.path.join(conf_path, cls.dovetail_config['cli_file_name'])
         with open(path) as f:
             cmd_yml = yaml.safe_load(f)
-            cls.dovetail_config['cli'] = cmd_yml[cmd_yml.keys()[0]]
+            cls.dovetail_config['cli'] = cmd_yml[list(cmd_yml.keys())[0]]
 
     # update dovetail_config dict with the giving path.
     # if path is in the dovetail_config dict, its value will be replaced.
index e22ef4d..7c00a25 100644 (file)
@@ -26,7 +26,7 @@ import logging
 import os
 import sys
 
-from dovetail_config import DovetailConfig as dt_cfg
+from dovetail.utils.dovetail_config import DovetailConfig as dt_cfg
 
 
 class Logger(object):
index aee6dc2..9259b03 100644 (file)
@@ -23,8 +23,8 @@ import python_hosts
 import docker
 
 from dovetail import constants
-from dovetail_config import DovetailConfig as dt_cfg
-from openstack_utils import OS_Utils
+from dovetail.utils.dovetail_config import DovetailConfig as dt_cfg
+from dovetail.utils.openstack_utils import OS_Utils
 
 
 def exec_log(verbose, logger, msg, level, flush=False):
@@ -80,12 +80,12 @@ def exec_cmd(cmd, logger=None, exit_on_error=False, info=False,
 # walkthrough the object, yield path and value
 
 # dual python 2/3 compatibility, inspired by the "six" library
-string_types = (str, unicode) if str is bytes else (str, bytes)
-# iteritems = lambda mapping: getattr(mapping, 'iteritems', mapping.items)()
+string_types = (str, 'unicode') if str is bytes else (str, bytes)
+# items = lambda mapping: getattr(mapping, 'items', mapping.items)()
 
 
-def iteritems(mapping):
-    return getattr(mapping, 'iteritems', mapping.items)()
+def items(mapping):
+    return getattr(mapping, 'items', mapping.items)()
 
 
 def objwalk(obj, path=(), memo=None):
@@ -93,7 +93,7 @@ def objwalk(obj, path=(), memo=None):
         memo = set()
     iterator = None
     if isinstance(obj, Mapping):
-        iterator = iteritems
+        iterator = items
     elif isinstance(obj, (Sequence, Set)) and not isinstance(obj,
                                                              string_types):
         iterator = enumerate
@@ -332,7 +332,7 @@ def get_hosts_info(logger=None):
             logger.error('There is no key hosts_info in file {}'
                          .format(hosts_config_file))
             return hosts_config
-        for ip, hostnames in hosts_info.iteritems():
+        for ip, hostnames in hosts_info.items():
             if not hostnames:
                 continue
             add_hosts_info(ip, hostnames)
index bd5e106..13b7fd8 100644 (file)
@@ -49,7 +49,7 @@ bottlenecks:
   pre_condition:
     - 'cp {{images_dir}}/ubuntu-16.04-server-cloudimg-amd64-disk1.img {{image_file}}'
   cmds:
-    - 'python /home/opnfv/bottlenecks/testsuites/run_testsuite.py testcase {{validate_testcase}} False'
+    - 'python3 /home/opnfv/bottlenecks/testsuites/run_testsuite.py testcase {{validate_testcase}} False'
   post_condition:
     - 'mkdir -p {{result_dir}}'
     - 'cp /tmp/bottlenecks.log {{result_dir}}'
diff --git a/tox.ini b/tox.ini
index 1fb696a..b8efce6 100644 (file)
--- a/tox.ini
+++ b/tox.ini
@@ -12,14 +12,14 @@ minversion = 2.5
 skipsdist = True
 envlist =
     pep8,
-    py27,
+    py35,
     docs,
     docs-linkcheck
 
 [testenv]
-basepython=python2
+basepython=python3.5
 usedevelop = True
-install_command = pip install -U {opts} {packages}
+install_command = pip3 install -U {opts} {packages}
 deps = -r{toxinidir}/requirements.txt
        -r{toxinidir}/test-requirements.txt
 commands =
@@ -59,7 +59,7 @@ deps = -rdocs/requirements.txt
 commands = sphinx-build -b linkcheck -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/linkcheck
 
 [testenv:yamllint]
-basepython = python2.7
+basepython = python3.5
 files =
   etc
 commands =