#!/bin/sh

run_check() {
    OUTPUT="$(./bwping "$MODE" -B localhost -u 100000 -b 800 -s "$PKT_SIZE" -v 200000 localhost 2>&1)"
    STATUS="$?"

    echo "$OUTPUT"

    if [ "$STATUS" = "0" ]; then
        exit 1
    else
        ISSUES="$(echo "$OUTPUT" | grep -v "^bwping: invalid packet size, should be between ")"

        if [ "$ISSUES" != "" ]; then
            exit 1
        fi
    fi
}

for MODE in "-4" "-6"; do
    ERROR_MESSAGE="$(./bwping "$MODE" -b 800 -s 1 -v 200000 localhost 2>&1)"

    MIN_PKT_SIZE="$(echo "$ERROR_MESSAGE" | sed "s/^bwping: invalid packet size, should be between \([0-9][0-9]*\) and [0-9][0-9]*$/\1/")"
    MAX_PKT_SIZE="$(echo "$ERROR_MESSAGE" | sed "s/^bwping: invalid packet size, should be between [0-9][0-9]* and \([0-9][0-9]*\)$/\1/")"

    PKT_SIZE="$((MIN_PKT_SIZE - 1))"

    run_check

    PKT_SIZE="$((MAX_PKT_SIZE + 1))"

    run_check
done

exit 0
