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_tc() { SCRIPT=$1; shift DESC=$1; shift $TC $@ 2> $STD_ERR > $STD_OUT if [ -s $STD_ERR ]; then ts_err "${SCRIPT}: ${DESC} failed:" ts_err "command: $TC $@" 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_ip() { SCRIPT=$1; shift DESC=$1; shift $IP $@ 2> $STD_ERR > $STD_OUT RET=$? if [ -s $STD_ERR ] || [ "$RET" != "0" ]; then ts_err "${SCRIPT}: ${DESC} failed:" ts_err "command: $IP $@" 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_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() { echo "dev-$(tr -dc "[:alpha:]" < /dev/urandom | head -c 6)" } 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 | grep -q "$1" then pr_success else pr_failed fi }