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