diff options
Diffstat (limited to 'testsuite/lib')
-rw-r--r-- | testsuite/lib/generic.sh | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/testsuite/lib/generic.sh b/testsuite/lib/generic.sh new file mode 100644 index 0000000..8b339ec --- /dev/null +++ b/testsuite/lib/generic.sh @@ -0,0 +1,134 @@ +export DEST="127.0.0.1" + +ts_log() +{ + echo "$@" +} + +ts_err() +{ + ts_log "$@" | tee >> $ERRF +} + +ts_cat() +{ + cat "$@" +} + +ts_err_cat() +{ + ts_cat "$@" | tee >> $ERRF +} + +ts_skip() +{ + exit 127 +} + +__ts_cmd() +{ + CMD=$1; shift + SCRIPT=$1; shift + DESC=$1; shift + + $CMD $@ 2> $STD_ERR > $STD_OUT + + if [ -s $STD_ERR ]; then + ts_err "${SCRIPT}: ${DESC} failed:" + ts_err "command: $CMD $@" + ts_err "stderr output:" + ts_err_cat $STD_ERR + if [ -s $STD_OUT ]; then + ts_err "stdout output:" + ts_err_cat $STD_OUT + fi + elif [ -s $STD_OUT ]; then + echo "${SCRIPT}: ${DESC} succeeded with output:" + cat $STD_OUT + else + echo "${SCRIPT}: ${DESC} succeeded" + fi +} + +ts_tc() +{ + __ts_cmd "$TC" "$@" +} + +ts_ip() +{ + __ts_cmd "$IP" "$@" +} + +ts_ss() +{ + __ts_cmd "$SS" "$@" +} + +ts_bridge() +{ + __ts_cmd "$BRIDGE" "$@" +} + +ts_qdisc_available() +{ + HELPOUT=`$TC qdisc add $1 help 2>&1` + if [ "`echo $HELPOUT | grep \"^Unknown qdisc\"`" ]; then + return 0; + else + return 1; + fi +} + +rand_dev() +{ + rnd="" + while [ ${#rnd} -ne 6 ]; do + rnd="$(head -c 250 /dev/urandom | tr -dc '[:alpha:]' | head -c 6)" + done + echo "dev-$rnd" +} + +pr_failed() +{ + echo " [FAILED]" + ts_err "matching failed" +} + +pr_success() +{ + echo " [SUCCESS]" +} + +test_on() +{ + echo -n "test on: \"$1\"" + if cat "$STD_OUT" | grep -qE "$1" + then + pr_success + else + pr_failed + fi +} + +test_on_not() +{ + echo -n "test on: \"$1\"" + if cat "$STD_OUT" | grep -vqE "$1" + then + pr_success + else + pr_failed + fi +} + +test_lines_count() +{ + echo -n "test on lines count ($1): " + if [ $(cat "$STD_OUT" | wc -l) -eq "$1" ] + then + pr_success + else + pr_failed + fi +} |