summaryrefslogtreecommitdiff
path: root/protocols/Telegram/libevent/test/test-ratelim.sh
blob: b5e0ca62a920df77b67f343814bede071c5a0229 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/bin/sh

FAILED=no

if test "x$TEST_OUTPUT_FILE" = "x"
then
	TEST_OUTPUT_FILE=/dev/null
fi

# /bin/echo is a little more likely to support -n than sh's builtin echo.
if test -x /bin/echo
then
	ECHO=/bin/echo
else
	ECHO=echo
fi

if test "$TEST_OUTPUT_FILE" != "/dev/null"
then
	touch "$TEST_OUTPUT_FILE" || exit 1
fi

TEST_DIR=.

T=`echo "$0" | sed -e 's/test-ratelim.sh$//'`
if test -x "$T/test-ratelim"
then
	TEST_DIR="$T"
fi

announce () {
	echo $@
	echo $@ >>"$TEST_OUTPUT_FILE"
}

announce_n () {
	$ECHO -n $@
	echo $@ >>"$TEST_OUTPUT_FILE"
}


run_tests () {
	announce_n "  Group limits, no connection limit:"
	if $TEST_DIR/test-ratelim -g 30000 -n 30 -t 100 --check-grouplimit 1000 --check-stddev 100 >>"$TEST_OUTPUT_FILE"
	then
		announce OKAY
	else
		announce FAILED
		FAILED=yes
	fi

	announce_n "  Connection limit, no group limit:"
	if $TEST_DIR/test-ratelim -c 1000 -n 30 -t 100 --check-connlimit 50 --check-stddev 50 >>"$TEST_OUTPUT_FILE"
	then
		announce OKAY ;
	else
		announce FAILED ;
		FAILED=yes
	fi

	announce_n "  Connection limit and group limit:"
	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"
	then
		announce OKAY ;
	else
		announce FAILED ;
		FAILED=yes
	fi

	announce_n "  Connection limit and group limit with independent drain:"
	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"
	then
		announce OKAY ;
	else
		announce FAILED ;
		FAILED=yes
	fi


}

announce "Running rate-limiting tests:"

run_tests

if test "$FAILED" = "yes"; then
	exit 1
fi