mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 08:40:50 +00:00
Added a test
This commit is contained in:
parent
c9aa412151
commit
a25baebc5a
@ -0,0 +1,14 @@
|
||||
--- Test with quota by immediate IP ---
|
||||
10
|
||||
10
|
||||
exceeded
|
||||
exceeded
|
||||
--- Test with quota by forwarded IP ---
|
||||
10
|
||||
10
|
||||
exceeded
|
||||
10
|
||||
10
|
||||
exceeded
|
||||
exceeded
|
||||
10
|
57
tests/queries/0_stateless/01600_quota_by_forwarded_ip.sh
Executable file
57
tests/queries/0_stateless/01600_quota_by_forwarded_ip.sh
Executable file
@ -0,0 +1,57 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
||||
. "$CURDIR"/../shell_config.sh
|
||||
|
||||
|
||||
$CLICKHOUSE_CLIENT -n --query "
|
||||
DROP USER IF EXISTS quoted_by_ip;
|
||||
DROP USER IF EXISTS quoted_by_forwarded_ip;
|
||||
|
||||
DROP QUOTA IF EXISTS quota_by_ip;
|
||||
DROP QUOTA IF EXISTS quota_by_forwarded_ip;
|
||||
|
||||
CREATE USER quoted_by_ip;
|
||||
CREATE USER quoted_by_forwarded_ip;
|
||||
|
||||
GRANT ALL ON *.* TO quoted_by_ip;
|
||||
GRANT ALL ON *.* TO quoted_by_forwarded_ip;
|
||||
|
||||
CREATE QUOTA quota_by_ip KEYED BY ip_address FOR RANDOMIZED INTERVAL 1 YEAR MAX QUERIES = 1 TO quoted_by_ip;
|
||||
CREATE QUOTA quota_by_forwarded_ip KEYED BY forwarded_ip_address FOR RANDOMIZED INTERVAL 1 YEAR MAX QUERIES = 1 TO quoted_by_forwarded_ip;
|
||||
"
|
||||
|
||||
# Note: the test can be flaky if the randomized interval will end while the loop is run. But with year long interval it's unlikely.
|
||||
# One query is allowed per quota. Actually two queries will execute successfully due to some implementation specific behaviour.
|
||||
|
||||
echo '--- Test with quota by immediate IP ---'
|
||||
|
||||
for _ in {1..10}; do
|
||||
$CLICKHOUSE_CLIENT --user quoted_by_ip --query "SELECT count() FROM numbers(10)" 2>/dev/null
|
||||
done
|
||||
|
||||
${CLICKHOUSE_CURL} -sS "${CLICKHOUSE_URL}&user=quoted_by_ip" -d "SELECT count() FROM numbers(10)" | grep -oF 'exceeded'
|
||||
|
||||
# X-Forwarded-For is ignored for quota by immediate IP address
|
||||
${CLICKHOUSE_CURL} -H 'X-Forwarded-For: 1.2.3.4' -sS "${CLICKHOUSE_URL}&user=quoted_by_ip" -d "SELECT count() FROM numbers(10)" | grep -oF 'exceeded'
|
||||
|
||||
|
||||
echo '--- Test with quota by forwarded IP ---'
|
||||
|
||||
for _ in {1..10}; do
|
||||
$CLICKHOUSE_CLIENT --user quoted_by_forwarded_ip --query "SELECT count() FROM numbers(10)" 2>/dev/null
|
||||
done
|
||||
|
||||
${CLICKHOUSE_CURL} -sS "${CLICKHOUSE_URL}&user=quoted_by_forwarded_ip" -d "SELECT count() FROM numbers(10)" | grep -oF 'exceeded'
|
||||
|
||||
# X-Forwarded-For is respected for quota by forwarded IP address
|
||||
for _ in {1..10}; do
|
||||
${CLICKHOUSE_CURL} -H 'X-Forwarded-For: 1.2.3.4' -sS "${CLICKHOUSE_URL}&user=quoted_by_forwarded_ip" -d "SELECT count() FROM numbers(10)" | grep -oF '10'
|
||||
done
|
||||
|
||||
${CLICKHOUSE_CURL} -H 'X-Forwarded-For: 1.2.3.4' -sS "${CLICKHOUSE_URL}&user=quoted_by_forwarded_ip" -d "SELECT count() FROM numbers(10)" | grep -oF 'exceeded'
|
||||
|
||||
# Only the last IP address is trusted
|
||||
${CLICKHOUSE_CURL} -H 'X-Forwarded-For: 5.6.7.8, 1.2.3.4' -sS "${CLICKHOUSE_URL}&user=quoted_by_forwarded_ip" -d "SELECT count() FROM numbers(10)" | grep -oF 'exceeded'
|
||||
|
||||
${CLICKHOUSE_CURL} -H 'X-Forwarded-For: 1.2.3.4, 5.6.7.8' -sS "${CLICKHOUSE_URL}&user=quoted_by_forwarded_ip" -d "SELECT count() FROM numbers(10)"
|
Loading…
Reference in New Issue
Block a user