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:
parent
b0b6a0aa85
commit
b68c0e27e3
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue