Browse Source

Add hook scripts for the functional infra job

Infra jobs support hooks to customize behavior.  This change adds
scripts that are intended to be called by the neutron-dsvm-functional
jobs as hooks.   Defining hook behavior in-tree instead of directly in
the job definition has the advantage of allowing changes in hook
behavior to be tested before merge.

The gate_hook.sh script added by this change installs a rootwrap
filter to allow functional tests to destroy python processes that
they have spawned.  The tests use the python executable provided by
their tox env, and the default rootwrap configuration does not
support killing processes launched by non-system python executables.

This change will have to merge to master and stable/icehouse before
the supporting infra config change can be merged:

https://review.openstack.org/#/c/116458/

Partial-bug: #1360658
Change-Id: Idcc6195f91fac833c14892f27fb793048ef964b9
changes/17/114717/3
Maru Newby 7 years ago
parent
commit
31ca6ea141
  1. 3
      neutron/tests/functional/contrib/README
  2. 12
      neutron/tests/functional/contrib/filters.template
  3. 17
      neutron/tests/functional/contrib/gate_hook.sh
  4. 11
      neutron/tests/functional/contrib/post_test_hook.sh

3
neutron/tests/functional/contrib/README

@ -0,0 +1,3 @@
The files in this directory are intended for use by the
neutron-dsvm-functional infra jobs that run the functional test suite
in the gate.

12
neutron/tests/functional/contrib/filters.template

@ -0,0 +1,12 @@
# neutron-rootwrap command filters to support functional testing. It
# is NOT intended to be used outside of a test environment.
#
# This file should be owned by (and only-writeable by) the root user
[Filters]
# '$BASE_PATH' is intended to be replaced with the expected tox path
# (e.g. /opt/stack/new/neutron/.tox/dsvm-functional) by the neutron
# functional jenkins job. This ensures that tests can kill the
# processes that they launch with their containing tox environment's
# python.
kill_tox_python: KillFilter, root, $BASE_PATH/bin/python, -9

17
neutron/tests/functional/contrib/gate_hook.sh

@ -0,0 +1,17 @@
#!/bin/bash
set -ex
$BASE/new/devstack-gate/devstack-vm-gate.sh
# Ideally devstack would only install dependencies
# rather than starting services, but for now unstack is
# a cheap way of accomplishing the same result.
$BASE/new/devstack/unstack.sh
# Add a rootwrap filter to support test-only
# configuration (e.g. a KillFilter for processes that
# use the python installed in a tox env).
FUNC_FILTER=$BASE/new/neutron/neutron/tests/functional/contrib/filters.template
sed -e "s+\$BASE_PATH+$BASE/new/neutron/.tox/dsvm-functional+" \
$FUNC_FILTER > /etc/neutron/rootwrap.d/functional.filters

11
neutron/tests/functional/contrib/post_test_hook.sh

@ -0,0 +1,11 @@
#!/bin/bash
set -xe
NEUTRON_DIR=$BASE/new/neutron
# Run tests as the stack user to allow sudo+rootwrap.
sudo chown -R stack:stack $NEUTRON_DIR
cd $NEUTRON_DIR
echo "Running neutron functional test suite"
sudo -H -u stack tox -e dsvm-functional
Loading…
Cancel
Save