1*1c60b9acSAndroid Build Coastguard Worker#!/bin/bash 2*1c60b9acSAndroid Build Coastguard Worker# 3*1c60b9acSAndroid Build Coastguard Worker# $SAI_INSTANCE_IDX - which instance of sai, 0+ 4*1c60b9acSAndroid Build Coastguard Worker# $1 - background fixture name, unique within test space, like "multipostlocalsrv" 5*1c60b9acSAndroid Build Coastguard Worker# $2 - executable 6*1c60b9acSAndroid Build Coastguard Worker# $3+ - args 7*1c60b9acSAndroid Build Coastguard Worker 8*1c60b9acSAndroid Build Coastguard Workerecho "$0 $1 $2 $3 $4" 9*1c60b9acSAndroid Build Coastguard Worker 10*1c60b9acSAndroid Build Coastguard WorkerJ=`basename $2`.$1.$SAI_INSTANCE_IDX 11*1c60b9acSAndroid Build Coastguard WorkerPI=`cat /tmp/sai-ctest-$J` 12*1c60b9acSAndroid Build Coastguard Worker 13*1c60b9acSAndroid Build Coastguard Worker# 14*1c60b9acSAndroid Build Coastguard Worker# We expect our background process to initially still be around 15*1c60b9acSAndroid Build Coastguard Worker# 16*1c60b9acSAndroid Build Coastguard Worker 17*1c60b9acSAndroid Build Coastguard Workerkill -0 $PI 18*1c60b9acSAndroid Build Coastguard WorkerGONESKI=$? 19*1c60b9acSAndroid Build Coastguard Worker 20*1c60b9acSAndroid Build Coastguard Workerecho "Background task $PI: $J" 21*1c60b9acSAndroid Build Coastguard Worker 22*1c60b9acSAndroid Build Coastguard Workerif [ $GONESKI -eq 1 ] ; then 23*1c60b9acSAndroid Build Coastguard Worker echo "Background Process $PI unexpectedly dead already, their log" 24*1c60b9acSAndroid Build Coastguard Worker cat /tmp/ctest-background-$J 25*1c60b9acSAndroid Build Coastguard Worker exit 1 26*1c60b9acSAndroid Build Coastguard Workerfi 27*1c60b9acSAndroid Build Coastguard Worker 28*1c60b9acSAndroid Build Coastguard Workerecho "Trying SIGTERM..." 29*1c60b9acSAndroid Build Coastguard Worker 30*1c60b9acSAndroid Build Coastguard Workerkill $PI 31*1c60b9acSAndroid Build Coastguard Worker 32*1c60b9acSAndroid Build Coastguard Worker# 33*1c60b9acSAndroid Build Coastguard Worker# 100ms intervals, 100 = 10s 34*1c60b9acSAndroid Build Coastguard Worker# need to allow time for valgrind case 35*1c60b9acSAndroid Build Coastguard Worker# 36*1c60b9acSAndroid Build Coastguard WorkerBUDGET=100 37*1c60b9acSAndroid Build Coastguard Workerwhile [ $BUDGET -ne 0 ] ; do 38*1c60b9acSAndroid Build Coastguard Worker sleep 0.1 39*1c60b9acSAndroid Build Coastguard Worker kill -0 $PI 2>&1 40*1c60b9acSAndroid Build Coastguard Worker if [ $? -eq 1 ] ; then 41*1c60b9acSAndroid Build Coastguard Worker echo "Went down OK" 42*1c60b9acSAndroid Build Coastguard Worker exit 0 43*1c60b9acSAndroid Build Coastguard Worker fi 44*1c60b9acSAndroid Build Coastguard Worker BUDGET=$(( $BUDGET - 1 )) 45*1c60b9acSAndroid Build Coastguard Workerdone 46*1c60b9acSAndroid Build Coastguard Worker 47*1c60b9acSAndroid Build Coastguard Workerecho "Trying SIGKILL..." 48*1c60b9acSAndroid Build Coastguard Worker 49*1c60b9acSAndroid Build Coastguard Workerkill -9 $PI 50*1c60b9acSAndroid Build Coastguard Worker 51*1c60b9acSAndroid Build Coastguard Worker# 52*1c60b9acSAndroid Build Coastguard Worker# 100ms intervals, 100 = 10s 53*1c60b9acSAndroid Build Coastguard Worker# need to allow time for valgrind case 54*1c60b9acSAndroid Build Coastguard Worker# 55*1c60b9acSAndroid Build Coastguard WorkerBUDGET=20 56*1c60b9acSAndroid Build Coastguard Workerwhile [ $BUDGET -ne 0 ] ; do 57*1c60b9acSAndroid Build Coastguard Worker sleep 0.1 58*1c60b9acSAndroid Build Coastguard Worker kill -0 $PI 2>&1 59*1c60b9acSAndroid Build Coastguard Worker if [ $? -eq 1 ] ; then 60*1c60b9acSAndroid Build Coastguard Worker echo "Went down OK after SIGKILL" 61*1c60b9acSAndroid Build Coastguard Worker exit 0 62*1c60b9acSAndroid Build Coastguard Worker fi 63*1c60b9acSAndroid Build Coastguard Worker BUDGET=$(( $BUDGET - 1 )) 64*1c60b9acSAndroid Build Coastguard Workerdone 65*1c60b9acSAndroid Build Coastguard Worker 66*1c60b9acSAndroid Build Coastguard Workerecho "Couldn't kill it" 67*1c60b9acSAndroid Build Coastguard Workerexit 1 68