commit 03ed47e: [Test] Fix ratelimit tests
Andrew Lewis
nerf at judo.za.org
Mon Jul 29 17:59:11 UTC 2024
Author: Andrew Lewis
Date: 2024-07-11 15:03:25 +0200
URL: https://github.com/rspamd/rspamd/commit/03ed47e01a8198f90ee02d468ce9d252737f0e4a
[Test] Fix ratelimit tests
---
test/functional/cases/500_ratelimit.conf | 44 -----------------------------
test/functional/cases/500_ratelimit.robot | 47 +++++++++++++++++++++++++++++++
test/functional/configs/ratelimit.conf | 23 ++++++++-------
3 files changed, 60 insertions(+), 54 deletions(-)
diff --git a/test/functional/cases/500_ratelimit.conf b/test/functional/cases/500_ratelimit.conf
deleted file mode 100644
index 425df34be..000000000
--- a/test/functional/cases/500_ratelimit.conf
+++ /dev/null
@@ -1,44 +0,0 @@
-*** Settings ***
-Suite Setup Rspamd Setup
-Suite Teardown Rspamd Teardown
-Library ${RSPAMD_TESTDIR}/lib/rspamd.py
-Resource ${RSPAMD_TESTDIR}/lib/rspamd.robot
-Variables ${RSPAMD_TESTDIR}/lib/vars.py
-
-*** Variables ***
-${CONFIG} ${RSPAMD_TESTDIR}/configs/ratelimit.conf
-${MESSAGE} ${RSPAMD_TESTDIR}/messages/ham.eml
-${RSPAMD_SCOPE} Suite
-${SETTINGS_REPLIES} {symbols_enabled = [RATELIMIT_CHECK, RATELIMIT_UPDATE]}
-
-*** Keywords ***
-Recipient Test
- [Arguments] ${from} ${rcpt} ${howmany}
- FOR ${index} IN RANGE ${howmany}
- Scan File ${HAM_MESSAGE}
- ... From=${from}
- ... IP=1.1.1.1
- ... Settings=${SETTINGS_RATELIMIT}
- ... Rcpt=${rcpt}
- Expect Action no action
- END
- Scan File ${HAM_MESSAGE}
- ... From=${from}
- ... IP=1.1.1.1
- ... Settings=${SETTINGS_RATELIMIT}
- ... Rcpt=${rcpt}
- Expect Action soft reject
- Sleep 1s
- Scan File ${HAM_MESSAGE}
- ... From=${from}
- ... IP=1.1.1.1
- ... Settings=${SETTINGS_RATELIMIT}
- ... Rcpt=${rcpt}
- Expect Action no action
-
-*** Test Cases ***
-CHECK BASIC
- Recipient Test ${EMPTY} foobar at example.net 4
-
-CHECK SELECTOR
- Recipient Test foo at example.net special at example.net 2
diff --git a/test/functional/cases/500_ratelimit.robot b/test/functional/cases/500_ratelimit.robot
new file mode 100644
index 000000000..919375461
--- /dev/null
+++ b/test/functional/cases/500_ratelimit.robot
@@ -0,0 +1,47 @@
+*** Settings ***
+Suite Setup Rspamd Redis Setup
+Suite Teardown Rspamd Redis Teardown
+Library ${RSPAMD_TESTDIR}/lib/rspamd.py
+Resource ${RSPAMD_TESTDIR}/lib/rspamd.robot
+Variables ${RSPAMD_TESTDIR}/lib/vars.py
+
+*** Variables ***
+${CONFIG} ${RSPAMD_TESTDIR}/configs/ratelimit.conf
+${MESSAGE} ${RSPAMD_TESTDIR}/messages/zip.eml
+${REDIS_SCOPE} Suite
+${RSPAMD_SCOPE} Suite
+${SETTINGS_RATELIMIT} {symbols_enabled = [RATELIMIT_CHECK, RATELIMIT_UPDATE]}
+
+*** Keywords ***
+Basic Test Scan
+ [Arguments] ${from} ${rcpt}
+ Scan File ${MESSAGE}
+ ... From=${from}
+ ... IP=1.1.1.1
+ ... Settings=${SETTINGS_RATELIMIT}
+ ... Rcpt=${rcpt}
+
+Basic Test
+ [Arguments] ${from} ${rcpt} ${howmany}
+ # Should be able to send up to burst
+ FOR ${index} IN RANGE ${howmany}
+ Basic Test Scan ${from} ${rcpt}
+ Expect Action no action
+ END
+ # Should then be ratelimited
+ Basic Test Scan ${from} ${rcpt}
+ Expect Action soft reject
+ # Should be able to send 1 message 1 second later
+ Sleep 1s
+ Basic Test Scan ${from} ${rcpt}
+ Expect Action no action
+ # Ratelimited again
+ Basic Test Scan ${from} ${rcpt}
+ Expect Action soft reject
+
+*** Test Cases ***
+RATELIMIT CHECK BUILTIN
+ Basic Test ${EMPTY} foobar at example.net 4
+
+RATELIMIT CHECK SELECTOR
+ Basic Test foo at example.net special at example.net 2
diff --git a/test/functional/configs/ratelimit.conf b/test/functional/configs/ratelimit.conf
index ab0c44b42..36bae88fe 100644
--- a/test/functional/configs/ratelimit.conf
+++ b/test/functional/configs/ratelimit.conf
@@ -1,20 +1,23 @@
.include(duplicate=append,priority=0) "{= env.TESTDIR =}/configs/plugins.conf"
-lua = "{= env.LUA_SCRIPT =}";
redis {
servers = "{= env.REDIS_ADDR =}:{= env.REDIS_PORT =}";
}
ratelimit {
- bounce_to_ip {
- bucket {
- burst = 4;
- rate = "1 / 1s";
+ rates {
+ bounce_to_ip {
+ bucket {
+ burst = 4;
+ rate = "1 / 1s";
+ }
+ }
+ to_selector_xxx {
+ selector = "id('special');to.in('special at example.net')";
+ bucket {
+ burst = 2;
+ rate = "1 / 1s";
+ }
}
- }
- to_selector {
- selector = "to:in{special at example.net}";
- burst = 2;
- rate = "1 / 1s";
}
}
More information about the Commits
mailing list