
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_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 | grep -q "$1"
	then
		pr_success
	else
		pr_failed
	fi
}
