X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=tests%2Ffunctions-common;h=53a620b0435d7ebbf0099ddb53ab832b0e043f12;hb=9fd701278bf7d8c5b9451491bcb1a92580adc780;hp=db2565a3d6a1444c82ee8b7854fdf2757fdc30b1;hpb=6d0620d15a3391d4a0a9f2bec9de143ef68734d2;p=doctor.git diff --git a/tests/functions-common b/tests/functions-common index db2565a3..53a620b0 100644 --- a/tests/functions-common +++ b/tests/functions-common @@ -4,7 +4,7 @@ # is_set env-var function is_set { local var=\$"$1" - eval "[ -n \"$var\" ]" + eval "[[ -n \"$var\" ]]" } # Prints backtrace info @@ -41,6 +41,8 @@ function err { # die $LINENO "message" function die { local exitcode=$? + local xtrace + xtrace=$(set +o | grep xtrace) set +o xtrace local line=$1; shift if [ $exitcode == 0 ]; then @@ -50,6 +52,7 @@ function die { err $line "$*" # Give buffers a second to flush sleep 1 + $xtrace exit $exitcode } @@ -70,3 +73,48 @@ function die_if_not_set { $xtrace } +# Check the function is defined +# die_if_not_defined $LINENO function-name "message" +function die_if_not_defined { + local xtrace + xtrace=$(set +o | grep xtrace) + set +o xtrace + local line=$1; shift + local func_name=$1; shift + if ! declare -f "$func_name" > /dev/null; then + die $line "$*" + fi + $xtrace +} + +# Wait until the condition is met. +# wait_until condition timeout interval +function wait_until { + local condition="$1" + local timeout=$2 + local interval=$3 + + while eval ${condition} + do + sleep ${interval} + timeout=$((${timeout} - ${interval})) + if [[ ${timeout} < 0 ]]; then + err $LINENO "timed out ($condition)..." + return 1 + fi + done +} + +# Print IP address of the first vNIC owned by specified VM via virsh +# get_first_vnic_ip vm_name +function get_first_vnic_ip { + local vm_name=$1 + + _vnic_mac=$(sudo virsh domiflist $vm_name | \ + sed -n -e 's/^.*\([0-9a-f]\{2\}\(:[0-9a-f]\{2\}\)\{5\}\).*$/\1/p' | \ + head -1) + die_if_not_set $LINENO _vnic_mac + _vnic_ip=$(arp -e | grep $_vnic_mac | awk '{print $1}') + die_if_not_set $LINENO _vnic_ip + echo $_vnic_ip +}