1 2 export DEST="127.0.0.1" 3 4 ts_log() 5 { 6 echo "$@" 7 } 8 9 ts_err() 10 { 11 ts_log "$@" | tee >> $ERRF 12 } 13 14 ts_cat() 15 { 16 cat "$@" 17 } 18 19 ts_err_cat() 20 { 21 ts_cat "$@" | tee >> $ERRF 22 } 23 24 ts_skip() 25 { 26 exit 127 27 } 28 29 ts_tc() 30 { 31 SCRIPT=$1; shift 32 DESC=$1; shift 33 34 $TC $@ 2> $STD_ERR > $STD_OUT 35 36 if [ -s $STD_ERR ]; then 37 ts_err "${SCRIPT}: ${DESC} failed:" 38 ts_err "command: $TC $@" 39 ts_err "stderr output:" 40 ts_err_cat $STD_ERR 41 if [ -s $STD_OUT ]; then 42 ts_err "stdout output:" 43 ts_err_cat $STD_OUT 44 fi 45 elif [ -s $STD_OUT ]; then 46 echo "${SCRIPT}: ${DESC} succeeded with output:" 47 cat $STD_OUT 48 else 49 echo "${SCRIPT}: ${DESC} succeeded" 50 fi 51 } 52 53 ts_ip() 54 { 55 SCRIPT=$1; shift 56 DESC=$1; shift 57 58 $IP $@ 2> $STD_ERR > $STD_OUT 59 RET=$? 60 61 if [ -s $STD_ERR ] || [ "$RET" != "0" ]; then 62 ts_err "${SCRIPT}: ${DESC} failed:" 63 ts_err "command: $IP $@" 64 ts_err "stderr output:" 65 ts_err_cat $STD_ERR 66 if [ -s $STD_OUT ]; then 67 ts_err "stdout output:" 68 ts_err_cat $STD_OUT 69 fi 70 elif [ -s $STD_OUT ]; then 71 echo "${SCRIPT}: ${DESC} succeeded with output:" 72 cat $STD_OUT 73 else 74 echo "${SCRIPT}: ${DESC} succeeded" 75 fi 76 } 77 78 ts_qdisc_available() 79 { 80 HELPOUT=`$TC qdisc add $1 help 2>&1` 81 if [ "`echo $HELPOUT | grep \"^Unknown qdisc\"`" ]; then 82 return 0; 83 else 84 return 1; 85 fi 86 } 87 88 rand_dev() 89 { 90 echo "dev-$(tr -dc "[:alpha:]" < /dev/urandom | head -c 6)" 91 } 92 93 pr_failed() 94 { 95 echo " [FAILED]" 96 ts_err "matching failed" 97 } 98 99 pr_success() 100 { 101 echo " [SUCCESS]" 102 } 103 104 test_on() 105 { 106 echo -n "test on: \"$1\"" 107 if cat "$STD_OUT" | grep -qE "$1" 108 then 109 pr_success 110 else 111 pr_failed 112 fi 113 } 114 115 test_on_not() 116 { 117 echo -n "test on: \"$1\"" 118 if cat "$STD_OUT" | grep -vqE "$1" 119 then 120 pr_success 121 else 122 pr_failed 123 fi 124 } 125 126 test_lines_count() 127 { 128 echo -n "test on lines count ($1): " 129 if cat "$STD_OUT" | wc -l | grep -q "$1" 130 then 131 pr_success 132 else 133 pr_failed 134 fi 135 } 136