Refactor gate hooks

The aim of this change is to make gate_hook and post_test_hook
more generic and prepare base for adding a new functional job
and tests. The patch also includes a number cosmetic changes
which should make the hooks' code easier to read.

- Moved all argument parsing to decode_args.sh.
- gate_hook: Extracted code related to configuring Octavia into a
  separate function.
- post_test_hook: Filling test_subset is not required if the aim
  is to run all set (api-* job).
- post_test_hook: Don't set OS_TEST_PATH and OS_TESTR_CONCURRENCY
  as it's also done in tox.ini.
- Style fixes.

Depends-On: Ib5e34f67209394eff43da7e5b5f722f4888deb0b
Change-Id: I32eaa12fb27a4cfbd09bd20e9821ebd310c32e44
Related-Bug: #1585116
This commit is contained in:
Elena Ezhova 2016-05-25 16:40:44 +03:00
parent b0b6a0aa85
commit b68c0e27e3
3 changed files with 103 additions and 111 deletions

View File

@ -2,13 +2,15 @@
# This file is meant to be sourced by the other hooks
# Legacy values for $1 and $2:
# $1 - lbaasv2, lbaasv1 (lbaasversion)
# $2 - scenario, minimal, api, healthmonitor, listener, loadbalancer, member, pool (lbaastest)
# Legacy values for $1, $2 and $3:
# $1 - dsvm-functional, tempest (testtype)
# $2 - lbaasv2, lbaasv1 (lbaasversion)
# $3 - scenario, minimal, api, healthmonitor, listener, loadbalancer, member, pool (lbaastest)
# Args being phased in:
# $1 - same
# $2 - test-driver, with any missing -driver being "octavia"
# $2 - same
# $3 - test-driver, with any missing -driver being "octavia"
# scenario-octavia
# minimal-octavia
# api-namespace
@ -21,8 +23,10 @@
lbaasversion="$1"
lbaastest="$2"
testtype="$1"
lbaasversion="$2"
lbaastest="$3"
lbaasenv=$(echo "$lbaastest" | perl -ne '/^(.*)-([^-]+)$/ && print "$1";')
if [ -z "$lbaasenv" ]; then
lbaasenv=$lbaastest
@ -32,4 +36,23 @@ if [ -z "$lbaasdriver" ]; then
lbaasdriver='octavia'
fi
testenv=${lbaastest:-"apiv2"}
if [ "$lbaasversion" = "lbaasv1" ]; then
testenv="apiv1"
elif [ "$lbaasversion" = "lbaasv2" ]; then
case "$lbaasenv" in
"api"|"healthmonitor"|"listener"|"loadbalancer"|"member"|"minimal"|"pool")
testenv="apiv2"
;;
"scenario")
testenv="scenario"
;;
*)
echo "Unrecognized env $lbaasenv".
exit 1
;;
esac
fi

View File

@ -5,64 +5,24 @@ set -ex
GATE_DEST=$BASE/new
DEVSTACK_PATH=$GATE_DEST/devstack
# Sort out our gate args
. `dirname "$0"`/decode_args.sh
testenv=${lbaastest:-"apiv2"}
if [ "$lbaasversion" = "lbaasv1" ]; then
testenv="apiv1"
elif [ "$lbaasversion" = "lbaasv2" ]; then
if [ "$lbaasenv" = "healthmonitor" ] || [ "$lbaasenv" = "listener" ] || [ "$lbaasenv" = "loadbalancer" ] || [ "$lbaasenv" = "member" ] || [ "$lbaasenv" = "minimal" ] || [ "$lbaasenv" = "pool" ]; then
testenv="apiv2"
elif [ "$lbaasenv" = "scenario" ]; then
testenv="scenario"
fi
fi
export DEVSTACK_LOCAL_CONFIG+="
enable_plugin neutron-lbaas https://git.openstack.org/openstack/neutron-lbaas
enable_plugin barbican https://git.openstack.org/openstack/barbican
"
if [ "$lbaasdriver" = "octavia" ]; then
# Sort out our gate args
. $(dirname "$0")/decode_args.sh
function _setup_octavia {
export DEVSTACK_LOCAL_CONFIG+="
enable_plugin octavia https://git.openstack.org/openstack/octavia
"
fi
if [ "$testenv" != "scenario" ]; then
export DEVSTACK_LOCAL_CONFIG+="
DISABLE_AMP_IMAGE_BUILD=True
"
# Not needed for API tests
ENABLED_SERVICES+="-horizon,-ceilometer-acentral,-ceilometer-acompute,"
ENABLED_SERVICES+="-ceilometer-alarm-evaluator,-ceilometer-alarm-notifier,"
ENABLED_SERVICES+="-ceilometer-anotification,-ceilometer-api,"
ENABLED_SERVICES+="-ceilometer-collector,"
fi
# These are not needed with either v1 or v2
ENABLED_SERVICES+="-c-api,-c-bak,-c-sch,-c-vol,-cinder"
ENABLED_SERVICES+=",-s-account,-s-container,-s-object,-s-proxy"
if [ "$testenv" != "apiv1" ]; then
# Override enabled services, so we can turn on lbaasv2.
# While we're at it, disable cinder and swift, since we don't need them.
ENABLED_SERVICES+=",q-lbaasv2,-q-lbaas"
if [ "$lbaasdriver" = "octavia" ]; then
ENABLED_SERVICES+=",octavia,o-cw,o-hk,o-hm,o-api"
fi
if [ "$lbaasdriver" = "namespace" ]; then
export DEVSTACK_LOCAL_CONFIG+="
NEUTRON_LBAAS_SERVICE_PROVIDERV2=LOADBALANCERV2:Haproxy:neutron_lbaas.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default
"
fi
fi
export ENABLED_SERVICES
if [ "$lbaasdriver" = "octavia" -a "$testenv" = "apiv2" ]; then
cat > $DEVSTACK_PATH/local.conf <<EOF
enable_plugin octavia https://git.openstack.org/openstack/octavia
"
if [ "$testenv" != "apiv1" ]; then
ENABLED_SERVICES+="octavia,o-cw,o-hk,o-hm,o-api,"
fi
if [ "$testenv" = "apiv2" ]; then
cat > "$DEVSTACK_PATH/local.conf" <<EOF
[[post-config|/etc/octavia/octavia.conf]]
[DEFAULT]
debug = True
@ -74,16 +34,62 @@ network_driver = network_noop_driver
EOF
fi
fi
if [ "$lbaasdriver" = "octavia" -a "$testenv" = "scenario" ]; then
cat > $DEVSTACK_PATH/local.conf <<EOF
if [ "$testenv" = "scenario" ]; then
cat > "$DEVSTACK_PATH/local.conf" <<EOF
[[post-config|/etc/octavia/octavia.conf]]
[DEFAULT]
debug = True
EOF
fi
fi
}
$GATE_DEST/devstack-gate/devstack-vm-gate.sh
case "$testtype" in
"tempest")
# These are not needed with either v1 or v2
ENABLED_SERVICES+="-c-api,-c-bak,-c-sch,-c-vol,-cinder,"
ENABLED_SERVICES+="-s-account,-s-container,-s-object,-s-proxy,"
if [ "$testenv" != "scenario" ]; then
export DEVSTACK_LOCAL_CONFIG+="
DISABLE_AMP_IMAGE_BUILD=True
"
# Not needed for API tests
ENABLED_SERVICES+="-horizon,-ceilometer-acentral,-ceilometer-acompute,"
ENABLED_SERVICES+="-ceilometer-alarm-evaluator,-ceilometer-alarm-notifier,"
ENABLED_SERVICES+="-ceilometer-anotification,-ceilometer-api,"
ENABLED_SERVICES+="-ceilometer-collector,"
fi
if [ "$testenv" != "apiv1" ]; then
# Override enabled services, so we can turn on lbaasv2.
# While we're at it, disable cinder and swift, since we don't need them.
ENABLED_SERVICES+="q-lbaasv2,-q-lbaas,"
if [ "$lbaasdriver" = "namespace" ]; then
export DEVSTACK_LOCAL_CONFIG+="
NEUTRON_LBAAS_SERVICE_PROVIDERV2=LOADBALANCERV2:Haproxy:neutron_lbaas.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default
"
fi
fi
if [ "$lbaasdriver" = "octavia" ]; then
_setup_octavia
fi
export ENABLED_SERVICES
;;
*)
echo "Unrecognized test type $testtype".
exit 1
;;
esac
"$GATE_DEST"/devstack-gate/devstack-vm-gate.sh

View File

@ -8,28 +8,10 @@ SCRIPTS_DIR="/usr/os-testr-env/bin"
OCTAVIA_DIR="$BASE/new/octavia"
# Sort out our gate args
. `dirname "$0"`/decode_args.sh
. $(dirname "$0")/decode_args.sh
LBAAS_VERSION=$lbaasversion
LBAAS_TEST=$lbaasenv
LBAAS_DRIVER=$lbaasdriver
if [ "$LBAAS_VERSION" = "lbaasv1" ]; then
testenv="apiv1"
else
testenv="apiv2"
case "$LBAAS_TEST" in
api)
if [ "$LBAAS_DRIVER" = "namespace" ]; then
test_subset="load_balancers "
test_subset+="listeners "
test_subset+="pools "
test_subset+="members "
test_subset+="health_monitor"
else
testenv=${LBAAS_TEST:-"apiv2"}
fi
;;
if [ "$testenv" = "apiv2" ]; then
case "$lbaasenv" in
minimal)
# Temporarily just do the happy path
test_subset="neutron_lbaas.tests.tempest.v2.api.test_load_balancers_non_admin.LoadBalancersTestJSON.test_create_load_balancer(?!_) "
@ -58,16 +40,13 @@ else
scenario)
testenv="scenario"
;;
*)
testenv=${LBAAS_TEST:-"apiv2"}
;;
esac
fi
function generate_testr_results {
# Give job user rights to access tox logs
sudo -H -u $owner chmod o+rw .
sudo -H -u $owner chmod o+rw -R .testrepository
sudo -H -u "$owner" chmod o+rw .
sudo -H -u "$owner" chmod o+rw -R .testrepository
if [ -f ".testrepository/0" ] ; then
subunit-1to2 < .testrepository/0 > ./testrepository.subunit
$SCRIPTS_DIR/subunit2html ./testrepository.subunit testr_results.html
@ -78,28 +57,14 @@ function generate_testr_results {
}
owner=tempest
# Configure the api and scenario tests to use the tempest.conf set by devstack
sudo_env="TEMPEST_CONFIG_DIR=$TEMPEST_CONFIG_DIR"
# Set owner permissions according to job's requirements.
cd $NEUTRON_LBAAS_DIR
sudo chown -R $owner:stack $NEUTRON_LBAAS_DIR
cd "$NEUTRON_LBAAS_DIR"
sudo chown -R $owner:stack "$NEUTRON_LBAAS_DIR"
if [ "$lbaasdriver" = "octavia" ]; then
sudo chown -R $owner:stack $OCTAVIA_DIR
fi
sudo_env=" OS_TESTR_CONCURRENCY=1"
# Configure the api and scenario tests to use the tempest.conf set by devstack
sudo_env+=" TEMPEST_CONFIG_DIR=$TEMPEST_CONFIG_DIR"
if [ "$testenv" = "apiv2" ]; then
sudo_env+=" OS_TEST_PATH=$NEUTRON_LBAAS_DIR/neutron_lbaas/tests/tempest/v2/api"
elif [ "$testenv" = "apiv1" ]; then
sudo_env+=" OS_TEST_PATH=$NEUTRON_LBAAS_DIR/neutron_lbaas/tests/tempest/v1/api"
elif [ "$testenv" = "scenario" ]; then
sudo_env+=" OS_TEST_PATH=$NEUTRON_LBAAS_DIR/neutron_lbaas/tests/tempest/v2/scenario"
else
echo "ERROR: unsupported testenv: $testenv"
exit 1
sudo chown -R $owner:stack "$OCTAVIA_DIR"
fi
# Run tests
@ -107,8 +72,6 @@ echo "Running neutron lbaas $testenv test suite"
set +e
sudo -H -u $owner $sudo_env tox -e $testenv -- $test_subset
# sudo -H -u $owner $sudo_env testr init
# sudo -H -u $owner $sudo_env testr run
testr_exit_code=$?
set -e