Check python>=2.7 before running tempest
* Tempest requires python>=2.7 * Check python version >=2.7 before installing virtualenv for tempest Change-Id: I89048652d879fd3907f1628887dd6cc1e6e3ba3e Closes-Bug: #1336209
This commit is contained in:
@@ -246,3 +246,8 @@ class UnknownRelease(RallyException):
|
|||||||
|
|
||||||
class ImageCleanUpException(RallyException):
|
class ImageCleanUpException(RallyException):
|
||||||
msg_fmt = _("Image Deletion Failed")
|
msg_fmt = _("Image Deletion Failed")
|
||||||
|
|
||||||
|
|
||||||
|
class IncompatiblePythonVersion(RallyException):
|
||||||
|
msg_fmt = _("Incompatible python version found '%(version)s', "
|
||||||
|
"required at least python>=2.7.x")
|
||||||
|
@@ -18,6 +18,7 @@ import logging
|
|||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
from rally import exceptions
|
from rally import exceptions
|
||||||
from rally.openstack.common.gettextutils import _
|
from rally.openstack.common.gettextutils import _
|
||||||
@@ -63,6 +64,8 @@ class Tempest(object):
|
|||||||
|
|
||||||
def _install_venv(self):
|
def _install_venv(self):
|
||||||
if not os.path.isdir(os.path.join(self.tempest_path, '.venv')):
|
if not os.path.isdir(os.path.join(self.tempest_path, '.venv')):
|
||||||
|
LOG.info('Validating python environment')
|
||||||
|
self.validate_env()
|
||||||
LOG.info("No virtual environment found...Install the virtualenv.")
|
LOG.info("No virtual environment found...Install the virtualenv.")
|
||||||
LOG.debug("Virtual environment directory: %s" %
|
LOG.debug("Virtual environment directory: %s" %
|
||||||
os.path.join(self.tempest_path, ".venv"))
|
os.path.join(self.tempest_path, ".venv"))
|
||||||
@@ -230,6 +233,14 @@ class Tempest(object):
|
|||||||
self.verification.finish_verification(total=total,
|
self.verification.finish_verification(total=total,
|
||||||
test_cases=test_cases)
|
test_cases=test_cases)
|
||||||
|
|
||||||
|
def validate_env(self):
|
||||||
|
"""Validate environment parameters required for running tempest
|
||||||
|
eg: python>2.7
|
||||||
|
"""
|
||||||
|
if sys.version_info < (2, 7):
|
||||||
|
raise exceptions.IncompatiblePythonVersion(
|
||||||
|
version=sys.version_info)
|
||||||
|
|
||||||
def verify(self, set_name, regex):
|
def verify(self, set_name, regex):
|
||||||
self._prepare_and_run(set_name, regex)
|
self._prepare_and_run(set_name, regex)
|
||||||
self._save_results()
|
self._save_results()
|
||||||
|
@@ -14,9 +14,12 @@
|
|||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
import mock
|
import mock
|
||||||
|
import testtools
|
||||||
|
|
||||||
|
from rally import exceptions
|
||||||
from rally.openstack.common import jsonutils
|
from rally.openstack.common import jsonutils
|
||||||
from rally.verification.verifiers.tempest import subunit2json
|
from rally.verification.verifiers.tempest import subunit2json
|
||||||
from rally.verification.verifiers.tempest import tempest
|
from rally.verification.verifiers.tempest import tempest
|
||||||
@@ -125,6 +128,7 @@ class TempestTestCase(test.TestCase):
|
|||||||
|
|
||||||
@mock.patch('os.path.isdir')
|
@mock.patch('os.path.isdir')
|
||||||
@mock.patch(TEMPEST_PATH + '.tempest.subprocess')
|
@mock.patch(TEMPEST_PATH + '.tempest.subprocess')
|
||||||
|
@testtools.skipIf(sys.version_info < (2, 7), "Incompatible Python Version")
|
||||||
def test__venv_install_when_venv_exists(self, mock_sp, mock_isdir):
|
def test__venv_install_when_venv_exists(self, mock_sp, mock_isdir):
|
||||||
mock_isdir.return_value = True
|
mock_isdir.return_value = True
|
||||||
self.verifier._install_venv()
|
self.verifier._install_venv()
|
||||||
@@ -135,6 +139,7 @@ class TempestTestCase(test.TestCase):
|
|||||||
|
|
||||||
@mock.patch('os.path.isdir')
|
@mock.patch('os.path.isdir')
|
||||||
@mock.patch(TEMPEST_PATH + '.tempest.subprocess.check_call')
|
@mock.patch(TEMPEST_PATH + '.tempest.subprocess.check_call')
|
||||||
|
@testtools.skipIf(sys.version_info < (2, 7), "Incompatible Python Version")
|
||||||
def test__venv_install_when_venv_not_exist(self, mock_sp, mock_isdir):
|
def test__venv_install_when_venv_not_exist(self, mock_sp, mock_isdir):
|
||||||
mock_isdir.return_value = False
|
mock_isdir.return_value = False
|
||||||
self.verifier._install_venv()
|
self.verifier._install_venv()
|
||||||
@@ -148,6 +153,17 @@ class TempestTestCase(test.TestCase):
|
|||||||
self.verifier.venv_wrapper, shell=True,
|
self.verifier.venv_wrapper, shell=True,
|
||||||
cwd=self.verifier.tempest_path)])
|
cwd=self.verifier.tempest_path)])
|
||||||
|
|
||||||
|
@mock.patch('os.path.isdir')
|
||||||
|
@testtools.skipIf(sys.version_info >= (2, 7),
|
||||||
|
"Incompatible Python Version")
|
||||||
|
def test__venv_install_for_py26_fails(self, mock_isdir):
|
||||||
|
mock_isdir.return_value = False
|
||||||
|
self.assertRaises(exceptions.IncompatiblePythonVersion,
|
||||||
|
self.verifier._install_venv)
|
||||||
|
|
||||||
|
mock_isdir.assert_called_once_with(
|
||||||
|
os.path.join(self.verifier.tempest_path, '.venv'))
|
||||||
|
|
||||||
@mock.patch('os.path.isdir')
|
@mock.patch('os.path.isdir')
|
||||||
@mock.patch(TEMPEST_PATH + '.tempest.subprocess')
|
@mock.patch(TEMPEST_PATH + '.tempest.subprocess')
|
||||||
def test__initialize_testr_when_testr_already_initialized(
|
def test__initialize_testr_when_testr_already_initialized(
|
||||||
|
Reference in New Issue
Block a user