+++ /dev/null
-../contrib/
\ No newline at end of file
--- /dev/null
+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.
--- /dev/null
+# 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
--- /dev/null
+#!/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
--- /dev/null
+#!/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