1#!/bin/sh 2 3FAILED=no 4 5if test "x$TEST_OUTPUT_FILE" = "x" 6then 7 TEST_OUTPUT_FILE=/dev/null 8fi 9 10# /bin/echo is a little more likely to support -n than sh's builtin echo. 11if test -x /bin/echo 12then 13 ECHO=/bin/echo 14else 15 ECHO=echo 16fi 17 18if test "$TEST_OUTPUT_FILE" != "/dev/null" 19then 20 touch "$TEST_OUTPUT_FILE" || exit 1 21fi 22 23TEST_DIR=. 24 25T=`echo "$0" | sed -e 's/test-ratelim.sh$//'` 26if test -x "$T/test-ratelim" 27then 28 TEST_DIR="$T" 29fi 30 31announce () { 32 echo $@ 33 echo $@ >>"$TEST_OUTPUT_FILE" 34} 35 36announce_n () { 37 $ECHO -n $@ 38 echo $@ >>"$TEST_OUTPUT_FILE" 39} 40 41 42run_tests () { 43 announce_n " Group limits, no connection limit:" 44 if $TEST_DIR/test-ratelim -g 30000 -n 30 -t 100 --check-grouplimit 1000 --check-stddev 100 >>"$TEST_OUTPUT_FILE" 45 then 46 announce OKAY 47 else 48 announce FAILED 49 FAILED=yes 50 fi 51 52 announce_n " Connection limit, no group limit:" 53 if $TEST_DIR/test-ratelim -c 1000 -n 30 -t 100 --check-connlimit 50 --check-stddev 50 >>"$TEST_OUTPUT_FILE" 54 then 55 announce OKAY ; 56 else 57 announce FAILED ; 58 FAILED=yes 59 fi 60 61 announce_n " Connection limit and group limit:" 62 if $TEST_DIR/test-ratelim -c 1000 -g 30000 -n 30 -t 100 --check-grouplimit 1000 --check-connlimit 50 --check-stddev 50 >>"$TEST_OUTPUT_FILE" 63 then 64 announce OKAY ; 65 else 66 announce FAILED ; 67 FAILED=yes 68 fi 69 70 announce_n " Connection limit and group limit with independent drain:" 71 if $TEST_DIR/test-ratelim -c 1000 -g 35000 -n 30 -t 100 -G 500 --check-grouplimit 1000 --check-connlimit 50 --check-stddev 50 >>"$TEST_OUTPUT_FILE" 72 then 73 announce OKAY ; 74 else 75 announce FAILED ; 76 FAILED=yes 77 fi 78 79 80} 81 82announce "Running rate-limiting tests:" 83 84run_tests 85 86if test "$FAILED" = "yes"; then 87 exit 1 88fi 89