]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Copy the contrib directory instead of moving it
authorarmando-migliaccio <armamig@gmail.com>
Sat, 20 Dec 2014 17:39:55 +0000 (09:39 -0800)
committerarmando-migliaccio <armamig@gmail.com>
Sat, 20 Dec 2014 17:39:55 +0000 (09:39 -0800)
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

neutron/tests/functional/contrib [deleted symlink]
neutron/tests/functional/contrib/README [new file with mode: 0644]
neutron/tests/functional/contrib/filters.template [new file with mode: 0644]
neutron/tests/functional/contrib/gate_hook.sh [new file with mode: 0644]
neutron/tests/functional/contrib/post_test_hook.sh [new file with mode: 0644]

diff --git a/neutron/tests/functional/contrib b/neutron/tests/functional/contrib
deleted file mode 120000 (symlink)
index 8e03aac..0000000
+++ /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 (file)
index 0000000..1836db1
--- /dev/null
@@ -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 (file)
index 0000000..cfd37a2
--- /dev/null
@@ -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 (file)
index 0000000..8409a3c
--- /dev/null
@@ -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 (file)
index 0000000..dd53245
--- /dev/null
@@ -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