![Paul Michali](/assets/img/avatar_default.png)
This commit does several things to allow functional tests to run, using a DevStack configuration, but without stacking. First, the gate_hook.sh is modified to specified environment variables needed for processing, and will call configure_vpn_for_func_testing.sh. The new configure_for_vpn_func_testing.sh script will first call the Neutron configure_for_func_testing.sh script (as modified in [1]) to setup DevStack. The script then installs the IPSec package, based on the functional job, and will create the vpn_agent.ini file, in case it is needed for tests. Minor changes are made to the post-test_hook.sh to indicate the location for the Neutron and VPN repos. Lastly, tox.ini is modified to place the rootwrap related files into the virtual environment, copy in the VPN rootwrap filter, set up the rootwrap commands, and copy the (customized) rootwrap.conf to /etc/neutron. This last step is needed, because the neutron-vpn-netns-wrapper script that is (currently) used for StrongSwan, uses /etc/neutron/rootwrap.conf and doesn't allow overriding. This copying is a simple approach that will work when multiple functional jobs are running, as the same config is used. As a future follow-up commit, we could look into modifying the VPN device drivers to pass the full path to the rootwrap.conf as a argument to the neutron-vpn-netns-wrapper script (--rootwrap_config). The setting could be added to the vpnagent.ini config file, available via config, to allow this to be customized to something other than /etc/neutron (for production use), and the functional tests could override it to point to the right virtual environment. To configure the environment for local run of the functional test, one can do: tools/configure_for_vpn_func_testing.sh <devstack-repo> [-i] where: devstack-repo... Path to devstack repo (/opt/stack/new/devstack when run by gate) -i.............. Indicates to install Neutron package dependencies For StrongSwan, prefix the command with VENV=dsvm-functional-sswan Ref: [1] https://review.openstack.org/#/c/176064/ Change-Id: I2243b06b3cdbb352dac7bc47d03c830efb87be3c Closes-Bug: #1445052 Depends-On: Ie490e89c1a65e126ad0a57d062076e472762837e
121 lines
4.2 KiB
INI
121 lines
4.2 KiB
INI
[tox]
|
||
envlist = py27,py33,py34,pep8,pylint
|
||
minversion = 1.6
|
||
skipsdist = True
|
||
|
||
[testenv]
|
||
# Note the hash seed is set to 0 until neutron can be tested with a
|
||
# random hash seed successfully.
|
||
setenv = VIRTUAL_ENV={envdir}
|
||
PYTHONHASHSEED=0
|
||
usedevelop = True
|
||
install_command = pip install -U {opts} {packages}
|
||
deps = -egit+https://git.openstack.org/openstack/neutron#egg=neutron
|
||
-r{toxinidir}/requirements.txt
|
||
-r{toxinidir}/test-requirements.txt
|
||
whitelist_externals = sh
|
||
commands =
|
||
sh tools/pretty_tox.sh '{posargs}'
|
||
# there is also secret magic in pretty_tox.sh which lets you run in a fail only
|
||
# mode. To do this define the TRACE_FAILONLY environmental variable.
|
||
|
||
[testenv:hashtest]
|
||
# This is the same as default environment, but with a random PYTHONHASHSEED.
|
||
# You can also specify a specific hashseed (for test repeatability) as follows:
|
||
# tox --hashseed 1235130571 -e hashtest
|
||
setenv = VIRTUAL_ENV={envdir}
|
||
|
||
[testenv:functional]
|
||
setenv = OS_TEST_PATH=./neutron-vpnaas/tests/functional
|
||
commands =
|
||
python setup.py testr --slowest --testr-args='{posargs}'
|
||
|
||
[testenv:dsvm-functional]
|
||
setenv = OS_TEST_PATH=./neutron_vpnaas/tests/functional/openswan
|
||
OS_SUDO_TESTING=1
|
||
OS_ROOTWRAP_CMD=sudo {envdir}/bin/neutron-rootwrap {envdir}/etc/neutron/rootwrap.conf
|
||
OS_ROOTWRAP_DAEMON_CMD=sudo {envdir}/bin/neutron-rootwrap-daemon {envdir}/etc/neutron/rootwrap.conf
|
||
OS_FAIL_ON_MISSING_DEPS=1
|
||
sitepackages=True
|
||
whitelist_externals =
|
||
sh
|
||
cp
|
||
sudo
|
||
commands =
|
||
{envdir}/src/neutron/tools/deploy_rootwrap.sh {envdir}/src/neutron {envdir}/etc {envdir}/bin
|
||
cp {toxinidir}/etc/neutron/rootwrap.d/vpnaas.filters {envdir}/etc/neutron/rootwrap.d/
|
||
sudo cp {envdir}/etc/neutron/rootwrap.conf /etc/neutron/
|
||
sh tools/pretty_tox.sh '{posargs}'
|
||
|
||
[testenv:dsvm-functional-sswan]
|
||
setenv = OS_TEST_PATH=./neutron_vpnaas/tests/functional/strongswan
|
||
OS_SUDO_TESTING=1
|
||
OS_ROOTWRAP_CMD=sudo {envdir}/bin/neutron-rootwrap {envdir}/etc/neutron/rootwrap.conf
|
||
OS_ROOTWRAP_DAEMON_CMD=sudo {envdir}/bin/neutron-rootwrap-daemon {envdir}/etc/neutron/rootwrap.conf
|
||
OS_FAIL_ON_MISSING_DEPS=1
|
||
sitepackages=True
|
||
whitelist_externals =
|
||
sh
|
||
cp
|
||
sudo
|
||
commands =
|
||
{envdir}/src/neutron/tools/deploy_rootwrap.sh {envdir}/src/neutron {envdir}/etc {envdir}/bin
|
||
cp {toxinidir}/etc/neutron/rootwrap.d/vpnaas.filters {envdir}/etc/neutron/rootwrap.d/
|
||
sudo cp {envdir}/etc/neutron/rootwrap.conf /etc/neutron/
|
||
sh tools/pretty_tox.sh '{posargs}'
|
||
|
||
[tox:jenkins]
|
||
sitepackages = True
|
||
downloadcache = ~/cache/pip
|
||
|
||
[testenv:pep8]
|
||
deps =
|
||
{[testenv]deps}
|
||
pylint
|
||
commands =
|
||
flake8
|
||
pylint --rcfile=.pylintrc --output-format=colorized {posargs:neutron_vpnaas}
|
||
{toxinidir}/tools/check_unit_test_structure.sh
|
||
whitelist_externals = sh
|
||
|
||
[testenv:i18n]
|
||
commands = python ./tools/check_i18n.py ./neutron-vpnaas ./tools/i18n_cfg.py
|
||
|
||
[testenv:cover]
|
||
commands =
|
||
python setup.py testr --coverage --coverage-package-name=neutron_vpnaas --testr-args='{posargs}'
|
||
|
||
[testenv:dsvm-functional-cover]
|
||
setenv = {[testenv:dsvm-functional]setenv}
|
||
commands =
|
||
python setup.py testr --coverage --coverage-package-name=neutron_vpnaas --testr-args='{posargs}'
|
||
|
||
[testenv:dsvm-functional-sswan-cover]
|
||
setenv = {[testenv:dsvm-functional-sswan]setenv}
|
||
commands =
|
||
python setup.py testr --coverage --coverage-package-name=neutron_vpnaas --testr-args='{posargs}'
|
||
|
||
[testenv:venv]
|
||
commands = {posargs}
|
||
|
||
[testenv:docs]
|
||
commands = python setup.py build_sphinx
|
||
|
||
[flake8]
|
||
# E125 continuation line does not distinguish itself from next logical line
|
||
# E126 continuation line over-indented for hanging indent
|
||
# E128 continuation line under-indented for visual indent
|
||
# E129 visually indented line with same indent as next logical line
|
||
# E265 block comment should start with ‘# ‘
|
||
# H305 imports not grouped correctly
|
||
# H405 multi line docstring summary not separated with an empty line
|
||
# TODO(marun) H404 multi line docstring should start with a summary
|
||
ignore = E125,E126,E128,E129,E265,H305,H404,H405
|
||
show-source = true
|
||
builtins = _
|
||
exclude = .venv,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*egg,build,tools,.ropeproject,rally-scenarios
|
||
|
||
[hacking]
|
||
import_exceptions = neutron.i18n
|
||
local-check-factory = neutron.hacking.checks.factory
|