Merge "support pep8 check"
[doctor.git] / tests / functions-common
index db2565a..53a620b 100644 (file)
@@ -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
+}