summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docker/Dockerfile12
-rw-r--r--docker/Dockerfile.aarch64.patch12
-rw-r--r--docker/Dockerfile.centos78
-rw-r--r--dovetail/cli/commands/cli_testcase.py2
-rw-r--r--dovetail/container.py6
-rw-r--r--dovetail/parser.py6
-rw-r--r--dovetail/report.py8
-rwxr-xr-xdovetail/run.py16
-rw-r--r--dovetail/test_runner.py8
-rw-r--r--dovetail/testcase.py17
-rw-r--r--dovetail/tests/unit/cli/commands/test_cli_testcase.py6
-rw-r--r--dovetail/tests/unit/test_parser.py10
-rw-r--r--dovetail/tests/unit/test_report.py46
-rw-r--r--dovetail/tests/unit/test_run.py4
-rw-r--r--dovetail/tests/unit/test_test_runner.py4
-rw-r--r--dovetail/tests/unit/test_testcase.py10
-rw-r--r--dovetail/tests/unit/utils/test_dovetail_utils.py57
-rw-r--r--dovetail/utils/dovetail_config.py2
-rw-r--r--dovetail/utils/dovetail_logger.py2
-rw-r--r--dovetail/utils/dovetail_utils.py16
-rw-r--r--etc/conf/bottlenecks_config.yml2
-rw-r--r--tox.ini8
22 files changed, 133 insertions, 129 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 56ca1ea2..6d6a7db7 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -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 \
diff --git a/docker/Dockerfile.aarch64.patch b/docker/Dockerfile.aarch64.patch
index 68f002c0..ecde81f1 100644
--- a/docker/Dockerfile.aarch64.patch
+++ b/docker/Dockerfile.aarch64.patch
@@ -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 \
diff --git a/docker/Dockerfile.centos7 b/docker/Dockerfile.centos7
index 258b939c..f9b944fe 100644
--- a/docker/Dockerfile.centos7
+++ b/docker/Dockerfile.centos7
@@ -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
diff --git a/dovetail/cli/commands/cli_testcase.py b/dovetail/cli/commands/cli_testcase.py
index 2725c895..6711381c 100644
--- a/dovetail/cli/commands/cli_testcase.py
+++ b/dovetail/cli/commands/cli_testcase.py
@@ -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)
diff --git a/dovetail/container.py b/dovetail/container.py
index 71cb4123..ec9b1fb2 100644
--- a/dovetail/container.py
+++ b/dovetail/container.py
@@ -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):
diff --git a/dovetail/parser.py b/dovetail/parser.py
index 55ba6b80..e0935ad3 100644
--- a/dovetail/parser.py
+++ b/dovetail/parser.py
@@ -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):
diff --git a/dovetail/report.py b/dovetail/report.py
index 25c34a29..d40303e4 100644
--- a/dovetail/report.py
+++ b/dovetail/report.py
@@ -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):
diff --git a/dovetail/run.py b/dovetail/run.py
index 193efbc4..c5281918 100755
--- a/dovetail/run.py
+++ b/dovetail/run.py
@@ -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
diff --git a/dovetail/test_runner.py b/dovetail/test_runner.py
index 44233e13..97367db9 100644
--- a/dovetail/test_runner.py
+++ b/dovetail/test_runner.py
@@ -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):
diff --git a/dovetail/testcase.py b/dovetail/testcase.py
index 3856b137..b07a878b 100644
--- a/dovetail/testcase.py
+++ b/dovetail/testcase.py
@@ -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: {}'
diff --git a/dovetail/tests/unit/cli/commands/test_cli_testcase.py b/dovetail/tests/unit/cli/commands/test_cli_testcase.py
index 2a1feb64..324db640 100644
--- a/dovetail/tests/unit/cli/commands/test_cli_testcase.py
+++ b/dovetail/tests/unit/cli/commands/test_cli_testcase.py
@@ -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')
diff --git a/dovetail/tests/unit/test_parser.py b/dovetail/tests/unit/test_parser.py
index acfd25cf..4f164772 100644
--- a/dovetail/tests/unit/test_parser.py
+++ b/dovetail/tests/unit/test_parser.py
@@ -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)
diff --git a/dovetail/tests/unit/test_report.py b/dovetail/tests/unit/test_report.py
index f89d0e40..fe6530c9 100644
--- a/dovetail/tests/unit/test_report.py
+++ b/dovetail/tests/unit/test_report.py
@@ -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):
diff --git a/dovetail/tests/unit/test_run.py b/dovetail/tests/unit/test_run.py
index b2d618a2..c1e37116 100644
--- a/dovetail/tests/unit/test_run.py
+++ b/dovetail/tests/unit/test_run.py
@@ -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')
diff --git a/dovetail/tests/unit/test_test_runner.py b/dovetail/tests/unit/test_test_runner.py
index 4bf97132..3cb27536 100644
--- a/dovetail/tests/unit/test_test_runner.py
+++ b/dovetail/tests/unit/test_test_runner.py
@@ -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')
diff --git a/dovetail/tests/unit/test_testcase.py b/dovetail/tests/unit/test_testcase.py
index fc949fee..81a8de39 100644
--- a/dovetail/tests/unit/test_testcase.py
+++ b/dovetail/tests/unit/test_testcase.py
@@ -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')
diff --git a/dovetail/tests/unit/utils/test_dovetail_utils.py b/dovetail/tests/unit/utils/test_dovetail_utils.py
index 2635fb6f..5b403a5c 100644
--- a/dovetail/tests/unit/utils/test_dovetail_utils.py
+++ b/dovetail/tests/unit/utils/test_dovetail_utils.py
@@ -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)
diff --git a/dovetail/utils/dovetail_config.py b/dovetail/utils/dovetail_config.py
index 1d13c696..98be8e62 100644
--- a/dovetail/utils/dovetail_config.py
+++ b/dovetail/utils/dovetail_config.py
@@ -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.
diff --git a/dovetail/utils/dovetail_logger.py b/dovetail/utils/dovetail_logger.py
index e22ef4d6..7c00a252 100644
--- a/dovetail/utils/dovetail_logger.py
+++ b/dovetail/utils/dovetail_logger.py
@@ -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):
diff --git a/dovetail/utils/dovetail_utils.py b/dovetail/utils/dovetail_utils.py
index aee6dc29..9259b03f 100644
--- a/dovetail/utils/dovetail_utils.py
+++ b/dovetail/utils/dovetail_utils.py
@@ -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)
diff --git a/etc/conf/bottlenecks_config.yml b/etc/conf/bottlenecks_config.yml
index bd5e106a..13b7fd88 100644
--- a/etc/conf/bottlenecks_config.yml
+++ b/etc/conf/bottlenecks_config.yml
@@ -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 1fb696a4..b8efce64 100644
--- 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 =