xref: /libevent-2.1.12/test/test-ratelim.sh (revision c24f91ad)
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