tricircle/tricircle/tempestplugin/smoke_test.sh

187 lines
6.9 KiB
Bash

#!/bin/bash -xe
DEST=$BASE/new
DEVSTACK_DIR=$DEST/devstack
source $DEVSTACK_DIR/openrc admin admin
unset OS_REGION_NAME
openstacktop="openstack --os-region-name CentralRegion"
openstackpod1="openstack --os-region-name RegionOne"
openstackpod2="openstack --os-region-name RegionTwo"
echo list networks before running
$openstacktop network list
echo create external network
$openstacktop network create --external --provider-network-type vlan \
--provider-physical-network extern --availability-zone-hint RegionTwo ext-net
echo show networks after running
for id in $($openstacktop network list -c ID -f value)
do $openstacktop network show $id
done
echo create external subnet
$openstacktop subnet create --subnet-range 163.3.124.0/24 --network ext-net \
--no-dhcp ext-subnet
echo create router
router_id=$($openstacktop router create router -c id -f value)
echo attach router to external network
$openstacktop router set --external-gateway ext-net \
--fixed-ip subnet=ext-subnet,ip-address=163.3.124.10 router
echo create network1
$openstacktop network create net1
echo create subnet1
$openstacktop subnet create --subnet-range 10.0.1.0/24 --network net1 \
--allocation-pool start=10.0.1.10,end=10.0.1.90 subnet1
echo create network3
$openstacktop network create net3
echo create subnet3 that has same CIDR with subnet1
$openstacktop subnet create --subnet-range 10.0.1.0/24 --network net3 \
--allocation-pool start=10.0.1.110,end=10.0.1.190 subnet3
echo create port1
port1_id=$($openstacktop port create --network net1 port1 -c id -f value)
echo attach subnet1 to router
$openstacktop router add subnet router subnet1
echo associate floating ip to port1
$openstacktop floating ip create --port $port1_id --floating-ip-address 163.3.124.15 ext-net -c id -f value
image1_id=$($openstackpod1 image list -c ID -f value)
echo create server1
$openstackpod1 server create --flavor 1 --image $image1_id --nic port-id=$port1_id vm1
echo create network2
$openstacktop network create net2
echo create subnet2
$openstacktop subnet create --subnet-range 10.0.2.0/24 --network net2 subnet2
echo create port2
port2_id=$($openstacktop port create --network net2 port2 -c id -f value)
image2_id=$($openstackpod2 image list -c ID -f value)
echo create server2
$openstackpod2 server create --flavor 1 --image $image2_id --nic port-id=$port2_id vm2
echo attach subnet2 to router
$openstacktop router add subnet router subnet2
echo create network4
net4_id=$($openstacktop network create net4 -c id -f value)
echo create subnet4 that has no gateway
$openstacktop subnet create --subnet-range 10.0.4.0/24 --network net4 \
--gateway None subnet4
echo create server3
$openstackpod1 server create --flavor 1 --image $image1_id --nic net-id=$net4_id vm3
sleep 10
echo associate floating ip to port2
$openstacktop floating ip create --port $port2_id --floating-ip-address 163.3.124.20 ext-net -c id -f value
sleep 20
TOP_DIR=$DEVSTACK_DIR
source $DEVSTACK_DIR/stackrc
source $DEVSTACK_DIR/inc/meta-config
extract_localrc_section $TOP_DIR/local.conf $TOP_DIR/localrc $TOP_DIR/.localrc.auto
source $DEVSTACK_DIR/functions-common
source $DEVSTACK_DIR/lib/database
initialize_database_backends
if [ "$DATABASE_TYPE" == "mysql" ]; then
for i in $(seq 1 11); do
if [ $i == 11 ]; then
# we check fail job at the end to give fail job a chance to redo
fail_result=$(mysql -u$DATABASE_USER -p$DATABASE_PASSWORD -h$DATABASE_HOST -Dtricircle -e 'SELECT COUNT(*) FROM async_jobs WHERE status = "0_Fail"')
fail_count=$(echo $fail_result | grep -o "[0-9]\{1,\}")
if [ $fail_count -ne 0 ]; then
echo "Listing fail job"
mysql -u$DATABASE_USER -p$DATABASE_PASSWORD -h$DATABASE_HOST -Dtricircle -e 'SELECT * FROM async_jobs WHERE status = "0_Fail";'
die $LINENO "Smoke test fails, $fail_count job fail"
fi
die $LINENO "Smoke test fails, exceed max wait time for job"
fi
full_result=$(mysql -u$DATABASE_USER -p$DATABASE_PASSWORD -h$DATABASE_HOST -Dtricircle -e 'SELECT COUNT(*) FROM async_jobs;')
full_count=$(echo $full_result | grep -o "[0-9]\{1,\}")
if [ $full_count -ne 0 ]; then
echo "Wait for job to finish"
sleep 10
else
break
fi
done
else
for i in $(seq 1 11); do
if [ $i == 11 ]; then
# we check fail job at the end to give fail job a chance to redo
fail_result=$(psql -h$DATABASE_HOST -U$DATABASE_USER -dtricircle -c 'SELECT COUNT(*) FROM async_jobs WHERE status = "0_Fail"')
fail_count=$(echo $fail_result | grep -o "[0-9]\{1,\}")
if [ $fail_count -ne 0 ]; then
echo "Listing fail job"
psql -h$DATABASE_HOST -U$DATABASE_USER -dtricircle -c 'SELECT * FROM async_jobs WHERE status = "0_Fail";'
die $LINENO "Smoke test fails, $fail_count job fail"
fi
die $LINENO "Smoke test fails, exceed max wait time for job"
fi
full_result=$(psql -h$DATABASE_HOST -U$DATABASE_USER -dtricircle -c 'SELECT COUNT(*) FROM async_jobs;')
full_count=$(echo $full_result | grep -o "[0-9]\{1,\}")
if [ $full_count -ne 0 ]; then
echo "Wait for job to finish"
sleep 10
else
break
fi
done
fi
$openstackpod1 server list -f json | python smoke_test_validation.py server 1
if [ $? != 0 ]; then
die $LINENO "Smoke test fails, error in server of RegionOne"
fi
$openstackpod2 server list -f json | python smoke_test_validation.py server 2
if [ $? != 0 ]; then
die $LINENO "Smoke test fails, error in server of RegionTwo"
fi
$openstackpod1 subnet list -f json | python smoke_test_validation.py subnet 1
if [ $? != 0 ]; then
die $LINENO "Smoke test fails, error in subnet of RegionOne"
fi
$openstackpod2 subnet list -f json | python smoke_test_validation.py subnet 2
if [ $? != 0 ]; then
die $LINENO "Smoke test fails, error in subnet of RegionTwo"
fi
$openstackpod1 port list --router $router_id -f json | python smoke_test_validation.py router_port 1
if [ $? != 0 ]; then
die $LINENO "Smoke test fails, error in router port of RegionOne"
fi
$openstackpod2 port list --router $router_id -f json | python smoke_test_validation.py router_port 2
if [ $? != 0 ]; then
die $LINENO "Smoke test fails, error in router port of RegionTwo"
fi
$openstackpod1 router show $router_id -c routes -f json | python smoke_test_validation.py router 1
if [ $? != 0 ]; then
die $LINENO "Smoke test fails, error in router of RegionOne"
fi
$openstackpod2 router show $router_id -c routes -f json | python smoke_test_validation.py router 2
if [ $? != 0 ]; then
die $LINENO "Smoke test fails, error in router of RegionTwo"
fi
$openstackpod2 floating ip list -f json | python smoke_test_validation.py fip 2
if [ $? != 0 ]; then
die $LINENO "Smoke test fails, error in fip of RegionTwo"
fi