test-ratelim.sh (1671B)
1 #!/bin/sh 2 3 FAILED=no 4 5 if test "x$TEST_OUTPUT_FILE" = "x" 6 then 7 TEST_OUTPUT_FILE=/dev/null 8 fi 9 10 # /bin/echo is a little more likely to support -n than sh's builtin echo. 11 if test -x /bin/echo 12 then 13 ECHO=/bin/echo 14 else 15 ECHO=echo 16 fi 17 18 if test "$TEST_OUTPUT_FILE" != "/dev/null" 19 then 20 touch "$TEST_OUTPUT_FILE" || exit 1 21 fi 22 23 TEST_DIR=. 24 25 T=`echo "$0" | sed -e 's/test-ratelim.sh$//'` 26 if test -x "$T/test-ratelim" 27 then 28 TEST_DIR="$T" 29 fi 30 31 announce () { 32 echo $@ 33 echo $@ >>"$TEST_OUTPUT_FILE" 34 } 35 36 announce_n () { 37 $ECHO -n $@ 38 echo $@ >>"$TEST_OUTPUT_FILE" 39 } 40 41 42 run_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 82 announce "Running rate-limiting tests:" 83 84 run_tests 85 86 if test "$FAILED" = "yes"; then 87 exit 1 88 fi