blob: 984807ad143e415fa0134d2c23ffbf223acd43b1 [file] [log] [blame]
#!/bin/sh
set -e
. $(dirname $0)/Config.sh
. $(dirname $0)/utils.sh
error=
# used by run
cleanup()
{
local if
for if in $wired_lan $wired_wan; do
isNFS=$(isNFS $if)
if [ "$isNFS" -eq 0 ]; then
dhclient_stop $if || echo but no matter
fi
done
}
testswitch()
{
local if isNFS server done
for if in $wired_lan $wired_wan; do
isNFS=$(isNFS $if)
# don't flap the network if we're using it for nfs
if [ "$isNFS" -eq 0 ]; then
run dhclient_start $if
fi
server=$(eval echo \${iperf_server_$if})
echo "server is $server, override with iperf_server_$if=$server $0 ..."
ifconfig $if || echo but no matter
run ping -c 3 $server
if [ "$type" != quick ]; then
while true; do
echo "Running iperf -c $server on $if"
speed=$(iperf -c $server -f M | grep "MBytes/sec")
echo $speed
# trim down to the integer number of MBytes/sec
speed=${speed% MBytes/sec*}
speed=${speed##* }
speed=${speed%.*}
thisresult="$if=$speed"
result="$result $thisresult"
echo "Speed for $if is '$speed'"
minspeed=$(eval echo \${iperf_min_$if})
if [ -z "$speed" ] || [ "$speed" -lt "$minspeed" ]; then
error="$if speed '$speed' is below required '$minspeed' MBytes/sec"
cleanup
return 1
fi
echo "<<< $thisresult -- Press enter if done or any text to run iperf on $if again"
read done
if [ "$done" = "" ]; then
break
fi
done
fi
if [ "$isNFS" -eq 0 ]; then
run dhclient_stop $if
fi
done
cleanup
}
case "$1" in
diag | quick)
type=$1
if testswitch; then
echo PASS $result
else
echo FAIL "$error"
fi
;;
*)
echo "Usage: $0 {diag|quick}"
exit 1
esac