summaryrefslogtreecommitdiff
path: root/ecos/packages/net/autotest/current/host/slowping.sh
blob: 2a2a9af6aaaa1a08101277fb01cc1b4e2076892f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/bin/sh

if [ $# -lt 1 ]; then
    echo "Usage: $0 [XFAIL] target [timeout [size]]" > /dev/stderr
    exit 1
fi

[ "xXFAIL" == "x$1" ] && { XFAIL="XFAIL"; shift; }
TARGET=$1
if [ "x" == "x$2" ]; then TIMEOUT=10;   else TIMEOUT=$2; fi
if [ "x" == "x$3" ]; then PINGSIZE=64;  else PINGSIZE=$3; fi

if [ "x$XFAIL" != "xXFAIL" ]; then
    # first try normal size packets
    if ping -n -c 5 $TARGET > /dev/null ; then
	echo "INFO:<$$: $TARGET is up>" > /dev/stderr
    else
	echo "FAIL:<$$: $TARGET is down>" > /dev/stderr; exit 1
    fi
fi

# then the size we were asked to do, for the time requested
ping -n -c $TIMEOUT -s $PINGSIZE $TARGET > /tmp/ping$$ && PINGRESULT=ok

# dump this out for the controller logfile
cat /tmp/ping$$

INFO1=$(grep "bytes of data" /tmp/ping$$)
INFO2=$(grep "packet loss" /tmp/ping$$)
INFO3=$(grep "round-trip" /tmp/ping$$)

rm -f /tmp/ping$$

[ "x" != "x$INFO1" ] && echo "INFO:<$$: $INFO1>" > /dev/stderr
[ "x" != "x$INFO2" ] && echo "INFO:<$$: $INFO2>" > /dev/stderr
[ "x" != "x$INFO3" ] && echo "INFO:<$$: $INFO3>" > /dev/stderr

if [ "x$XFAIL" == "xXFAIL" ]; then
    echo "PASS:<$$: slow ping XFAIL, $PINGSIZE bytes $TIMEOUT packets/seconds>" > /dev/stderr
    exit 0
fi

if [ "x" == "x$PINGRESULT" ]; then
    echo "FAIL:<$$: slow ping failed, $PINGSIZE bytes $TIMEOUT packets/seconds>" > /dev/stderr
    exit 1
fi

echo "PASS:<$$: slow ping OK, $PINGSIZE bytes $TIMEOUT packets/seconds>" > /dev/stderr

# EOF