Merge "Add a gate-specific tox env for functional tests"

This commit is contained in:
Jenkins 2014-07-19 02:48:16 +00:00 committed by Gerrit Code Review
commit 4309020f8e
5 changed files with 34 additions and 14 deletions

View File

@ -4,16 +4,16 @@ Testing Neutron
Overview
--------
The unit tests are meant to cover as much code as possible and should
be executed without the service running. They are designed to test
the various pieces of the neutron tree to make sure any new changes
don't break existing functionality.
The unit tests (neutron/test/unit/) are meant to cover as much code as
possible and should be executed without the service running. They are
designed to test the various pieces of the neutron tree to make sure
any new changes don't break existing functionality.
The functional tests are intended to validate actual system
interaction. Mocks should be used sparingly, if at all. Care
should be taken to ensure that existing system resources are not
modified and that resources created in tests are properly cleaned
up.
The functional tests (neutron/tests/functional/) are intended to
validate actual system interaction. Mocks should be used sparingly,
if at all. Care should be taken to ensure that existing system
resources are not modified and that resources created in tests are
properly cleaned up.
Development process
-------------------
@ -100,6 +100,16 @@ Neutron source code::
tox
To run functional tests that do not require sudo privileges or
specific-system dependencies::
tox -e functional
To run all the functional tests in an environment that has been configured
by devstack to support sudo and system-specific dependencies::
tox -e dsvm-functional
For more information on the standard Tox-based test infrastructure used by
OpenStack and how to do some common test/debugging procedures with Testr,
see this wiki page:

View File

@ -29,7 +29,7 @@ class BaseLinuxTestCase(functional_base.BaseSudoTestCase):
try:
utils.execute(cmd, root_helper=root_helper)
except RuntimeError as e:
if error_text in str(e):
if error_text in str(e) and not self.fail_on_missing_deps:
self.skipTest(skip_msg)
raise

View File

@ -47,8 +47,6 @@ class BaseMonitorTest(linux_base.BaseOVSLinuxTestCase):
def _check_test_requirements(self):
self.check_sudo_enabled()
self.check_command(['which', 'ovsdb-client'],
'Exit code: 1', 'ovsdb-client is not installed')
self.check_command(['ovsdb-client', 'list-dbs'],
'Exit code: 1',
'password-less sudo not granted for ovsdb-client',

View File

@ -46,8 +46,12 @@ class BaseSudoTestCase(base.BaseTestCase):
def setUp(self):
super(BaseSudoTestCase, self).setUp()
self.root_helper = os.environ.get('OS_ROOTWRAP_CMD', SUDO_CMD)
env = os.environ
self.sudo_enabled = env.get('OS_SUDO_TESTING') in base.TRUE_STRING
self.root_helper = env.get('OS_ROOTWRAP_CMD', SUDO_CMD)
self.fail_on_missing_deps = (
env.get('OS_FAIL_ON_MISSING_DEPS') in base.TRUE_STRING)
def check_sudo_enabled(self):
if os.environ.get('OS_SUDO_TESTING') not in base.TRUE_STRING:
if not self.sudo_enabled:
self.skipTest('testing with sudo is not enabled')

View File

@ -17,6 +17,14 @@ setenv = OS_TEST_PATH=./neutron/tests/functional
commands =
python setup.py testr --slowest --testr-args='{posargs}'
[testenv:dsvm-functional]
setenv = OS_TEST_PATH=./neutron/tests/functional
OS_SUDO_TESTING=1
OS_ROOTWRAP_CMD=sudo /usr/local/bin/neutron-rootwrap /etc/neutron/rootwrap.conf
OS_FAIL_ON_MISSING_DEPS=1
commands =
python setup.py testr --slowest --testr-args='{posargs}'
[tox:jenkins]
sitepackages = True
downloadcache = ~/cache/pip