From: armando-migliaccio Date: Sat, 20 Dec 2014 17:39:55 +0000 (-0800) Subject: Copy the contrib directory instead of moving it X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=e4fd24d0459a708cfeed4494f177e3123e842b3f;p=openstack-build%2Fneutron-build.git Copy the contrib directory instead of moving it This is necessary because pbr is stupid enough not to be able to handle symlinks. The initial symlink was necessary to avoid breaking the functional job. Once change [1] merges we can drop the old contrib directory. [1] https://review.openstack.org/#/c/142603/ Change-Id: I683009b1c5b3520e5f9f2c17a9a0dabefdeebe45 --- diff --git a/neutron/tests/functional/contrib b/neutron/tests/functional/contrib deleted file mode 120000 index 8e03aac37..000000000 --- a/neutron/tests/functional/contrib +++ /dev/null @@ -1 +0,0 @@ -../contrib/ \ No newline at end of file diff --git a/neutron/tests/functional/contrib/README b/neutron/tests/functional/contrib/README new file mode 100644 index 000000000..1836db15f --- /dev/null +++ b/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. diff --git a/neutron/tests/functional/contrib/filters.template b/neutron/tests/functional/contrib/filters.template new file mode 100644 index 000000000..cfd37a24a --- /dev/null +++ b/neutron/tests/functional/contrib/filters.template @@ -0,0 +1,18 @@ +# 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 + +# enable ping from namespace +ping_filter: CommandFilter, ping, root + +# enable curl from namespace +curl_filter: CommandFilter, curl, root diff --git a/neutron/tests/functional/contrib/gate_hook.sh b/neutron/tests/functional/contrib/gate_hook.sh new file mode 100644 index 000000000..8409a3c34 --- /dev/null +++ b/neutron/tests/functional/contrib/gate_hook.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +set -ex + +$BASE/new/devstack-gate/devstack-vm-gate.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 | sudo tee /etc/neutron/rootwrap.d/functional.filters > /dev/null + +# Use devstack functions to install mysql and psql servers +TOP_DIR=$BASE/new/devstack +source $TOP_DIR/functions +source $TOP_DIR/lib/config +source $TOP_DIR/stackrc +source $TOP_DIR/lib/database +source $TOP_DIR/localrc + +disable_service postgresql +enable_service mysql +initialize_database_backends +install_database + +disable_service mysql +enable_service postgresql +initialize_database_backends +install_database + +# Set up the 'openstack_citest' user and database in each backend +tmp_dir=`mktemp -d` + +cat << EOF > $tmp_dir/mysql.sql +CREATE DATABASE openstack_citest; +CREATE USER 'openstack_citest'@'localhost' IDENTIFIED BY 'openstack_citest'; +CREATE USER 'openstack_citest' IDENTIFIED BY 'openstack_citest'; +GRANT ALL PRIVILEGES ON *.* TO 'openstack_citest'@'localhost'; +GRANT ALL PRIVILEGES ON *.* TO 'openstack_citest'; +FLUSH PRIVILEGES; +EOF +/usr/bin/mysql -u root < $tmp_dir/mysql.sql + +cat << EOF > $tmp_dir/postgresql.sql +CREATE USER openstack_citest WITH CREATEDB LOGIN PASSWORD 'openstack_citest'; +CREATE DATABASE openstack_citest WITH OWNER openstack_citest; +EOF +# User/group postgres needs to be given access to tmp_dir +setfacl -m g:postgres:rwx $tmp_dir +sudo -u postgres /usr/bin/psql --file=$tmp_dir/postgresql.sql diff --git a/neutron/tests/functional/contrib/post_test_hook.sh b/neutron/tests/functional/contrib/post_test_hook.sh new file mode 100644 index 000000000..dd532457e --- /dev/null +++ b/neutron/tests/functional/contrib/post_test_hook.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +set -xe + +NEUTRON_DIR="$BASE/new/neutron" +SCRIPTS_DIR="/usr/local/jenkins/slave_scripts" +venv=dsvm-functional + +function generate_testr_results { + # Give job user rights to access tox logs + sudo -H -u stack chmod o+rw -R . + if [ -f ".testrepository/0" ] ; then + .tox/$venv/bin/subunit-1to2 < .testrepository/0 > ./testrepository.subunit + .tox/$venv/bin/python $SCRIPTS_DIR/subunit2html.py ./testrepository.subunit testr_results.html + gzip -9 ./testrepository.subunit + gzip -9 ./testr_results.html + sudo mv ./*.gz /opt/stack/logs/ + fi +} + +# 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" +set +e +sudo -H -u stack tox -e $venv +testr_exit_code=$? +set -e + +generate_testr_results +exit $testr_exit_code