1c515871c8a72950cc5ff08d250ba7209ab95b581shemminger
2c515871c8a72950cc5ff08d250ba7209ab95b581shemmingerexport DEST="127.0.0.1"
3c515871c8a72950cc5ff08d250ba7209ab95b581shemminger
4c515871c8a72950cc5ff08d250ba7209ab95b581shemmingerts_log()
5c515871c8a72950cc5ff08d250ba7209ab95b581shemminger{
6c515871c8a72950cc5ff08d250ba7209ab95b581shemminger	echo "$@"
7c515871c8a72950cc5ff08d250ba7209ab95b581shemminger}
8c515871c8a72950cc5ff08d250ba7209ab95b581shemminger
9c515871c8a72950cc5ff08d250ba7209ab95b581shemmingerts_err()
10c515871c8a72950cc5ff08d250ba7209ab95b581shemminger{
11c515871c8a72950cc5ff08d250ba7209ab95b581shemminger	ts_log "$@" | tee >> $ERRF
12c515871c8a72950cc5ff08d250ba7209ab95b581shemminger}
13c515871c8a72950cc5ff08d250ba7209ab95b581shemminger
14c515871c8a72950cc5ff08d250ba7209ab95b581shemmingerts_cat()
15c515871c8a72950cc5ff08d250ba7209ab95b581shemminger{
16c515871c8a72950cc5ff08d250ba7209ab95b581shemminger	cat "$@"
17c515871c8a72950cc5ff08d250ba7209ab95b581shemminger}
18c515871c8a72950cc5ff08d250ba7209ab95b581shemminger
19c515871c8a72950cc5ff08d250ba7209ab95b581shemmingerts_err_cat()
20c515871c8a72950cc5ff08d250ba7209ab95b581shemminger{
21c515871c8a72950cc5ff08d250ba7209ab95b581shemminger	ts_cat "$@" | tee >> $ERRF
22c515871c8a72950cc5ff08d250ba7209ab95b581shemminger}
23c515871c8a72950cc5ff08d250ba7209ab95b581shemminger
248d391512b72d2b8cd9d4f06b0b064794bd55ad6evadimkts_skip()
258d391512b72d2b8cd9d4f06b0b064794bd55ad6evadimk{
268d391512b72d2b8cd9d4f06b0b064794bd55ad6evadimk    exit 127
278d391512b72d2b8cd9d4f06b0b064794bd55ad6evadimk}
288d391512b72d2b8cd9d4f06b0b064794bd55ad6evadimk
29c515871c8a72950cc5ff08d250ba7209ab95b581shemmingerts_tc()
30c515871c8a72950cc5ff08d250ba7209ab95b581shemminger{
31c515871c8a72950cc5ff08d250ba7209ab95b581shemminger	SCRIPT=$1; shift
32c515871c8a72950cc5ff08d250ba7209ab95b581shemminger	DESC=$1; shift
33c515871c8a72950cc5ff08d250ba7209ab95b581shemminger
3430383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	$TC $@ 2> $STD_ERR > $STD_OUT
35c515871c8a72950cc5ff08d250ba7209ab95b581shemminger
3630383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	if [ -s $STD_ERR ]; then
37c515871c8a72950cc5ff08d250ba7209ab95b581shemminger		ts_err "${SCRIPT}: ${DESC} failed:"
38c515871c8a72950cc5ff08d250ba7209ab95b581shemminger		ts_err "command: $TC $@"
39c515871c8a72950cc5ff08d250ba7209ab95b581shemminger		ts_err "stderr output:"
4030383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan		ts_err_cat $STD_ERR
4130383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan		if [ -s $STD_OUT ]; then
42c515871c8a72950cc5ff08d250ba7209ab95b581shemminger			ts_err "stdout output:"
4330383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan			ts_err_cat $STD_OUT
44c515871c8a72950cc5ff08d250ba7209ab95b581shemminger		fi
4530383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	elif [ -s $STD_OUT ]; then
46c515871c8a72950cc5ff08d250ba7209ab95b581shemminger		echo "${SCRIPT}: ${DESC} succeeded with output:"
4730383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan		cat $STD_OUT
48c515871c8a72950cc5ff08d250ba7209ab95b581shemminger	else
49c515871c8a72950cc5ff08d250ba7209ab95b581shemminger		echo "${SCRIPT}: ${DESC} succeeded"
50c515871c8a72950cc5ff08d250ba7209ab95b581shemminger	fi
51c515871c8a72950cc5ff08d250ba7209ab95b581shemminger}
52c515871c8a72950cc5ff08d250ba7209ab95b581shemminger
53c515871c8a72950cc5ff08d250ba7209ab95b581shemmingerts_ip()
54c515871c8a72950cc5ff08d250ba7209ab95b581shemminger{
55c515871c8a72950cc5ff08d250ba7209ab95b581shemminger	SCRIPT=$1; shift
56c515871c8a72950cc5ff08d250ba7209ab95b581shemminger	DESC=$1; shift
57c515871c8a72950cc5ff08d250ba7209ab95b581shemminger
5830383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	$IP $@ 2> $STD_ERR > $STD_OUT
594cec9db0b4085c1b2e8072bac2d07843a9285ac1Vadim Kochan        RET=$?
60c515871c8a72950cc5ff08d250ba7209ab95b581shemminger
6130383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	if [ -s $STD_ERR ] || [ "$RET" != "0" ]; then
62c515871c8a72950cc5ff08d250ba7209ab95b581shemminger		ts_err "${SCRIPT}: ${DESC} failed:"
63c515871c8a72950cc5ff08d250ba7209ab95b581shemminger		ts_err "command: $IP $@"
64c515871c8a72950cc5ff08d250ba7209ab95b581shemminger		ts_err "stderr output:"
6530383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan		ts_err_cat $STD_ERR
6630383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan		if [ -s $STD_OUT ]; then
67c515871c8a72950cc5ff08d250ba7209ab95b581shemminger			ts_err "stdout output:"
6830383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan			ts_err_cat $STD_OUT
69c515871c8a72950cc5ff08d250ba7209ab95b581shemminger		fi
7030383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	elif [ -s $STD_OUT ]; then
71c515871c8a72950cc5ff08d250ba7209ab95b581shemminger		echo "${SCRIPT}: ${DESC} succeeded with output:"
7230383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan		cat $STD_OUT
73c515871c8a72950cc5ff08d250ba7209ab95b581shemminger	else
74c515871c8a72950cc5ff08d250ba7209ab95b581shemminger		echo "${SCRIPT}: ${DESC} succeeded"
75c515871c8a72950cc5ff08d250ba7209ab95b581shemminger	fi
76c515871c8a72950cc5ff08d250ba7209ab95b581shemminger}
77c515871c8a72950cc5ff08d250ba7209ab95b581shemminger
78c515871c8a72950cc5ff08d250ba7209ab95b581shemmingerts_qdisc_available()
79c515871c8a72950cc5ff08d250ba7209ab95b581shemminger{
80c515871c8a72950cc5ff08d250ba7209ab95b581shemminger	HELPOUT=`$TC qdisc add $1 help 2>&1`
81c515871c8a72950cc5ff08d250ba7209ab95b581shemminger	if [ "`echo $HELPOUT | grep \"^Unknown qdisc\"`" ]; then
82c515871c8a72950cc5ff08d250ba7209ab95b581shemminger		return 0;
83c515871c8a72950cc5ff08d250ba7209ab95b581shemminger	else
84c515871c8a72950cc5ff08d250ba7209ab95b581shemminger		return 1;
85c515871c8a72950cc5ff08d250ba7209ab95b581shemminger	fi
86c515871c8a72950cc5ff08d250ba7209ab95b581shemminger}
874cec9db0b4085c1b2e8072bac2d07843a9285ac1Vadim Kochan
884cec9db0b4085c1b2e8072bac2d07843a9285ac1Vadim Kochanrand_dev()
894cec9db0b4085c1b2e8072bac2d07843a9285ac1Vadim Kochan{
904cec9db0b4085c1b2e8072bac2d07843a9285ac1Vadim Kochan    echo "dev-$(tr -dc "[:alpha:]" < /dev/urandom | head -c 6)"
914cec9db0b4085c1b2e8072bac2d07843a9285ac1Vadim Kochan}
9230383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan
9330383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochanpr_failed()
9430383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan{
9530383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	echo " [FAILED]"
9630383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	ts_err "matching failed"
9730383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan}
9830383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan
9930383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochanpr_success()
10030383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan{
10130383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	echo " [SUCCESS]"
10230383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan}
10330383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan
10430383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochantest_on()
10530383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan{
10630383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	echo -n "test on: \"$1\""
10730383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	if cat "$STD_OUT" | grep -qE "$1"
10830383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	then
10930383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan		pr_success
11030383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	else
11130383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan		pr_failed
11230383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	fi
11330383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan}
11430383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan
11530383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochantest_on_not()
11630383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan{
11730383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	echo -n "test on: \"$1\""
11830383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	if cat "$STD_OUT" | grep -vqE "$1"
11930383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	then
12030383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan		pr_success
12130383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	else
12230383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan		pr_failed
12330383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	fi
12430383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan}
12530383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan
12630383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochantest_lines_count()
12730383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan{
12830383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	echo -n "test on lines count ($1): "
12930383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	if cat "$STD_OUT" | wc -l | grep -q "$1"
13030383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	then
13130383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan		pr_success
13230383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	else
13330383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan		pr_failed
13430383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan	fi
13530383b074de101c778bc65c36e2b0d4690d3d6dcVadim Kochan}
136