Dmitry Sutyagin 0f7a39be83 Fix: exec_pair trace; SPT bugs; print non-0 exit
- Fix crash when hitting logger.warning in exec_pair
- Fix SPT bugs:
  - iperf sometimes not installed for HW to HW test
  - iperf_server_stop broken in several ways
  - glance download script has wrong filename
  - SPT_parser traces on empty glance output
- Print to stdout on non-0 exit to tell about unclean exit to user
- Reorder SPT copy-paste line once more

Change-Id: I7a37b5fce5bc620cc9e2db8d232180c215cd3782
2017-02-24 14:56:11 -08:00

156 lines
5.7 KiB
Bash
Executable File

#!/bin/bash
results=${1:-"/tmp/timmy/info"}
glance_create="glance-1-image-create.sh"
glance_download="glance-2-image-download.sh"
cinder_volume="cinder-VM-volume-write.sh"
iperf_vm="network-VM-to-VM-iperf-tests.sh"
iperf_host="iperf-client.sh"
res_glance_create=`find $results -name $glance_create`
res_glance_download=`find $results -name $glance_download`
res_cinder=`find $results -name $cinder_volume`
res_iperf_vm=`find $results -name $iperf_vm`
res_iperf_host="$(find $results -name "${iperf_host}*")"
res_iperf_node_dir="$(find $results -name "client" -type d)"
[ -n "$res_iperf_node_dir" ] && res_iperf_node="$(ls $res_iperf_node_dir)" || res_iperf_node=""
function print_result() {
[ -n "$2" ] && printf "$2" || printf "n/a"
echo -e "\t<-- $1"
}
function a() {
[ -n "$1" ] && printf "$1\t" || printf "n/a\t"
}
function b() {
word=`echo $1 | grep -o '[a-zA-Z/]\+'`
number=`echo $1 | grep -o '[0-9.]\+'`
python -c '
import sys
word = sys.argv[1]
number = sys.argv[2]
if word == "Gbits/sec":
sys.stdout.write(str(int(float(number)*1000000000)))
elif word == "Mbits/sec":
sys.stdout.write(str(int(float(number)*1000000)))
elif word == "Kbits/sec":
sys.stdout.write(str(int(float(number)*1000)))
elif word == "bits/sec":
sys.stdout.write(str(int(number)))
' $word $number 2> /dev/null
}
function c() {
echo $1 | python -c 'import sys; print(float(sys.stdin.read())/1000000000)' 2> /dev/null
}
function d() {
word=`echo $1 | grep -o '[a-zA-Z/]\+'`
number=`echo $1 | grep -o '[0-9.]\+'`
python -c '
import sys
word = sys.argv[1]
number = sys.argv[2]
if word == "GB/s":
sys.stdout.write(str(int(float(number)*1000)))
elif word == "MB/s":
sys.stdout.write(str(float(number)))
elif word == "kB/s":
sys.stdout.write(str(int(float(number)/1000)))
' $word $number 2> /dev/null
}
if [ -n "$res_glance_create" ]
then
res_gc=`head -n 4 $res_glance_create | grep '^[0-9.]\+$' | \
python -c 'import sys; print("%.2fMB/s" % (4000/float(sys.stdin.read(),)))' 2> /dev/null`
fi
print_result "Glance upload" $res_gc
if [ -n "$res_glance_download" ]
then
res_gd=`head -n 1 $res_glance_download | grep '^[0-9.]\+$' | \
python -c 'import sys; print("%.2fMB/s" % (4000/float(sys.stdin.read(),)))' 2> /dev/null`
fi
print_result "Glance download" $res_gd
if [ -n "$res_cinder" ]
then
res_4k=`grep 'DD_TEST_1' $res_cinder | grep copied | rev | awk '{print $1$2}' | rev`
res_1m=`grep 'DD_TEST_2' $res_cinder | grep copied | rev | awk '{print $1$2}' | rev`
res_1g=`grep 'DD_TEST_3' $res_cinder | grep copied | rev | awk '{print $1$2}' | rev`
fi
print_result "Block Storage Write 4k" $res_4k
print_result "Block Storage Write 1M" $res_1m
print_result "Block Storage Write 1G" $res_1g
[ -n "$res_iperf_node" ] && nnum="$(wc -l <<< "$res_iperf_node")" && print_result "Number of nodes (during iperf HW to HW tests)" $nnum
if [ -n "$res_iperf_host" ]
then
res_t1=""
res_t10=""
for i in $res_iperf_host
do
res_t1="$(echo "$res_t1"; b $(head -n 7 $i | tail -n 1 | grep '^\[.*sec' | rev | awk '{print $1$2}' | rev | sed 's/ //g'))"
res_t1="$(echo "$res_t1" | grep -v '^$' | sort -n | tail -n 1)"
res_t10="$(echo "$res_t10"; b $(head -n 33 $i | tail -n 1 | grep '^\[SUM.*sec' | rev | awk '{print $1$2}' | rev | sed 's/ //g'))"
res_t10="$(echo "$res_t10" | grep -v '^$' | sort -n | tail -n 1)"
done
fi
res_t1=`echo "$res_t1" | python -c 'import sys; print(float(sys.stdin.read())/1000000000)' 2> /dev/null`
res_t10=`echo "$res_t10" | python -c 'import sys; print(float(sys.stdin.read())/1000000000)' 2> /dev/null`
print_result "HW to HW (best)" $res_t1
print_result "HW to HW (best) - 10 Threads" $res_t10
if [ -n "$res_iperf_host" ]
then
res_mt1=""
res_mt10=""
for i in $res_iperf_host
do
res_mt1="$(echo "$res_mt1"; b $(head -n 7 $i | tail -n 1 | grep '^\[.*sec' | rev | awk '{print $1$2}' | rev | sed 's/ //g'))"
res_mt1="$(echo "$res_mt1" | grep -v '^$' | sort -n | head -n 1)"
res_mt10="$(echo "$res_mt10"; b $(head -n 33 $i | tail -n 1 | grep '^\[SUM.*sec' | rev | awk '{print $1$2}' | rev | sed 's/ //g'))"
res_mt10="$(echo "$res_mt10" | grep -v '^$' | sort -n | head -n 1)"
done
fi
res_mt1=`echo "$res_mt1" | python -c 'import sys; print(float(sys.stdin.read())/1000000000)' 2> /dev/null`
res_mt10=`echo "$res_mt10" | python -c 'import sys; print(float(sys.stdin.read())/1000000000)' 2> /dev/null`
print_result "HW to HW (worst)" $res_mt1
print_result "HW to HW (worst) - 10 Threads" $res_mt10
if [ -n "$res_iperf_vm" ]
then
res1=`head -n 8 $res_iperf_vm | tail -n 1 | grep '^\[.*sec' | rev | awk '{print $1$2}' | rev | sed 's/ //g'`
res2=`head -n 17 $res_iperf_vm | tail -n 1 | grep '^\[.*sec' | rev | awk '{print $1$2}' | rev | sed 's/ //g'`
res3=`head -n 44 $res_iperf_vm | tail -n 1 | grep '^\[SUM.*sec' | rev | awk '{print $1$2}' | rev | sed 's/ //g'`
res4=`head -n 52 $res_iperf_vm | tail -n 1 | grep '^\[.*sec' | rev | awk '{print $1$2}' | rev | sed 's/ //g'`
res5=`head -n 61 $res_iperf_vm | tail -n 1 | grep '^\[.*sec' | rev | awk '{print $1$2}' | rev | sed 's/ //g'`
fi
print_result "VM to VM - VMs on same node - via Private IP - 1 thread" $res1
print_result "VM to VM - VMs on different HW nodes - via Private IP - 1 thread" $res2
print_result "VM to VM - VMs on different HW nodes - via Private IP - MILTI 10 thread" $res3
print_result "VM to VM - via Floating IP and VMs are on different nodes - 1 thread" $res4
print_result "VM to VM - diff nodes, VMs connected to separate networks connected by vRouter - via Private IP - 1 thread" $res5
echo "--------------------------"
a `d $res_gc`
a `d $res_gd`
a `d $res_4k`
a `d $res_1m`
a `d $res_1g`
a $nnum
a $res_t1
a $res_t10
a $res_mt1
a $res_mt10
a $(c `b $res1`)
a $(c `b $res2`)
a $(c `b $res3`)
a $(c `b $res4`)
a $(c `b $res5`)
echo