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
+venv=${1:-"dsvm-functional"}
+
+if [ "$venv" == "dsvm-functional" ]
+then
+ $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';
FLUSH PRIVILEGES;
EOF
-/usr/bin/mysql -u root < $tmp_dir/mysql.sql
+ /usr/bin/mysql -u root < $tmp_dir/mysql.sql
-cat << EOF > $tmp_dir/postgresql.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
+ # 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
+fi
NEUTRON_DIR="$BASE/new/neutron"
SCRIPTS_DIR="/usr/local/jenkins/slave_scripts"
-venv=dsvm-functional
+
+venv=${1:-"dsvm-functional"}
function generate_testr_results {
# Give job user rights to access tox 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"
+function dsvm_functional_prep_func {
+ :
+}
+
+
+function api_prep_func {
+ TEMPEST_DIR="$BASE/new/tempest"
+ sudo -H -u $owner tox -e $venv --notest
+ sudo -H -u $owner .tox/$venv/bin/pip install -e $TEMPEST_DIR
+}
+
+
+if [ "$venv" == "dsvm-functional" ]
+then
+ owner=stack
+ prep_func="dsvm_functional_prep_func"
+elif [ "$venv" == "api" ]
+then
+ owner=tempest
+ prep_func="api_prep_func"
+fi
+
+# Set owner permissions according to job's requirements.
+sudo chown -R $owner:stack $NEUTRON_DIR
+# Prep the environment according to job's requirements.
+$prep_func
+
+# Run tests
+cd $NEUTRON_DIR
+echo "Running neutron $venv test suite"
set +e
-sudo -H -u stack tox -e $venv
+sudo -H -u $owner tox -e $venv
testr_exit_code=$?
set -e
+# Collect and parse results
generate_testr_results
exit $testr_exit_code
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
+venv=${1:-"dsvm-functional"}
+
+if [ "$venv" == "dsvm-functional" ]
+then
+ $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';
FLUSH PRIVILEGES;
EOF
-/usr/bin/mysql -u root < $tmp_dir/mysql.sql
+ /usr/bin/mysql -u root < $tmp_dir/mysql.sql
-cat << EOF > $tmp_dir/postgresql.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
+ # 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
+fi
NEUTRON_DIR="$BASE/new/neutron"
SCRIPTS_DIR="/usr/local/jenkins/slave_scripts"
-venv=dsvm-functional
+
+venv=${1:-"dsvm-functional"}
function generate_testr_results {
# Give job user rights to access tox 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"
+function dsvm_functional_prep_func {
+ :
+}
+
+
+function api_prep_func {
+ TEMPEST_DIR="$BASE/new/tempest"
+ sudo -H -u $owner tox -e $venv --notest
+ sudo -H -u $owner .tox/$venv/bin/pip install -e $TEMPEST_DIR
+}
+
+
+if [ "$venv" == "dsvm-functional" ]
+then
+ owner=stack
+ prep_func="dsvm_functional_prep_func"
+elif [ "$venv" == "api" ]
+then
+ owner=tempest
+ prep_func="api_prep_func"
+fi
+
+# Set owner permissions according to job's requirements.
+sudo chown -R $owner:stack $NEUTRON_DIR
+# Prep the environment according to job's requirements.
+$prep_func
+
+# Run tests
+cd $NEUTRON_DIR
+echo "Running neutron $venv test suite"
set +e
-sudo -H -u stack tox -e $venv
+sudo -H -u $owner tox -e $venv
testr_exit_code=$?
set -e
+# Collect and parse results
generate_testr_results
exit $testr_exit_code