From f72578cc22e52a8c08981b432ce6bc1750382742 Mon Sep 17 00:00:00 2001 From: Andrew Lewis Date: Thu, 25 Jan 2024 01:58:50 +0200 Subject: [PATCH] [Test] statistics: per-user --- .../cases/110_statistics/090-peruser.robot | 15 ++++++ ...sh.robot => 100-redis-keyed-siphash.robot} | 0 ...ash.robot => 110-redis-keyed-xxhash.robot} | 0 ...sh.robot => 200-redis-plain-siphash.robot} | 0 ...ash.robot => 210-redis-plain-xxhash.robot} | 0 .../functional/cases/110_statistics/lib.robot | 52 +++++++++++++------ test/functional/configs/stats.conf | 8 +++ 7 files changed, 58 insertions(+), 17 deletions(-) create mode 100644 test/functional/cases/110_statistics/090-peruser.robot rename test/functional/cases/110_statistics/{redis-keyed-siphash.robot => 100-redis-keyed-siphash.robot} (100%) rename test/functional/cases/110_statistics/{redis-keyed-xxhash.robot => 110-redis-keyed-xxhash.robot} (100%) rename test/functional/cases/110_statistics/{redis-plain-siphash.robot => 200-redis-plain-siphash.robot} (100%) rename test/functional/cases/110_statistics/{redis-plain-xxhash.robot => 210-redis-plain-xxhash.robot} (100%) diff --git a/test/functional/cases/110_statistics/090-peruser.robot b/test/functional/cases/110_statistics/090-peruser.robot new file mode 100644 index 000000000..cd8f3ac77 --- /dev/null +++ b/test/functional/cases/110_statistics/090-peruser.robot @@ -0,0 +1,15 @@ +*** Settings *** +Suite Setup Rspamd Redis Setup +Suite Teardown Rspamd Redis Teardown +Resource lib.robot + +*** Variables *** +${RSPAMD_REDIS_SERVER} ${RSPAMD_REDIS_ADDR}:${RSPAMD_REDIS_PORT} +${RSPAMD_STATS_PER_USER} true + +*** Test Cases *** +Learn + Learn Test test@example.com + +Relearn + Relearn Test test@example.com diff --git a/test/functional/cases/110_statistics/redis-keyed-siphash.robot b/test/functional/cases/110_statistics/100-redis-keyed-siphash.robot similarity index 100% rename from test/functional/cases/110_statistics/redis-keyed-siphash.robot rename to test/functional/cases/110_statistics/100-redis-keyed-siphash.robot diff --git a/test/functional/cases/110_statistics/redis-keyed-xxhash.robot b/test/functional/cases/110_statistics/110-redis-keyed-xxhash.robot similarity index 100% rename from test/functional/cases/110_statistics/redis-keyed-xxhash.robot rename to test/functional/cases/110_statistics/110-redis-keyed-xxhash.robot diff --git a/test/functional/cases/110_statistics/redis-plain-siphash.robot b/test/functional/cases/110_statistics/200-redis-plain-siphash.robot similarity index 100% rename from test/functional/cases/110_statistics/redis-plain-siphash.robot rename to test/functional/cases/110_statistics/200-redis-plain-siphash.robot diff --git a/test/functional/cases/110_statistics/redis-plain-xxhash.robot b/test/functional/cases/110_statistics/210-redis-plain-xxhash.robot similarity index 100% rename from test/functional/cases/110_statistics/redis-plain-xxhash.robot rename to test/functional/cases/110_statistics/210-redis-plain-xxhash.robot diff --git a/test/functional/cases/110_statistics/lib.robot b/test/functional/cases/110_statistics/lib.robot index c6fad2b2f..792806300 100644 --- a/test/functional/cases/110_statistics/lib.robot +++ b/test/functional/cases/110_statistics/lib.robot @@ -4,15 +4,16 @@ Resource ${RSPAMD_TESTDIR}/lib/rspamd.robot Variables ${RSPAMD_TESTDIR}/lib/vars.py *** Variables *** -${CONFIG} ${RSPAMD_TESTDIR}/configs/stats.conf -${MESSAGE_HAM} ${RSPAMD_TESTDIR}/messages/ham.eml -${MESSAGE_SPAM} ${RSPAMD_TESTDIR}/messages/spam_message.eml -${REDIS_SCOPE} Suite -${RSPAMD_REDIS_SERVER} null -${RSPAMD_SCOPE} Suite -${RSPAMD_STATS_BACKEND} redis -${RSPAMD_STATS_HASH} null -${RSPAMD_STATS_KEY} null +${CONFIG} ${RSPAMD_TESTDIR}/configs/stats.conf +${MESSAGE_HAM} ${RSPAMD_TESTDIR}/messages/ham.eml +${MESSAGE_SPAM} ${RSPAMD_TESTDIR}/messages/spam_message.eml +${REDIS_SCOPE} Suite +${RSPAMD_REDIS_SERVER} null +${RSPAMD_SCOPE} Suite +${RSPAMD_STATS_BACKEND} redis +${RSPAMD_STATS_HASH} null +${RSPAMD_STATS_KEY} null +${RSPAMD_STATS_PER_USER} ${EMPTY} *** Keywords *** Broken Learn Test @@ -26,24 +27,41 @@ Empty Part Test Scan File ${MESSAGE} Expect Symbol BAYES_SPAM +Learn + [Arguments] ${user} ${class} ${message} + IF "${user}" + ${result} = Run Rspamc -d ${user} -h ${RSPAMD_LOCAL_ADDR}:${RSPAMD_PORT_CONTROLLER} learn_${class} ${message} + ELSE + ${result} = Run Rspamc -h ${RSPAMD_LOCAL_ADDR}:${RSPAMD_PORT_CONTROLLER} learn_${class} ${message} + END + Check Rspamc ${result} + Learn Test + [Arguments] ${user}=${EMPTY} Set Suite Variable ${RSPAMD_STATS_LEARNTEST} 0 - ${result} = Run Rspamc -h ${RSPAMD_LOCAL_ADDR}:${RSPAMD_PORT_CONTROLLER} learn_spam ${MESSAGE_SPAM} - ${result} = Run Rspamc -h ${RSPAMD_LOCAL_ADDR}:${RSPAMD_PORT_CONTROLLER} learn_ham ${MESSAGE_HAM} - Check Rspamc ${result} - Scan File ${MESSAGE_SPAM} + Set Test Variable ${kwargs} &{EMPTY} + IF "${user}" + Set To Dictionary ${kwargs} Deliver-To=${user} + END + Learn ${user} spam ${MESSAGE_SPAM} + Learn ${user} ham ${MESSAGE_HAM} + Scan File ${MESSAGE_SPAM} &{kwargs} Expect Symbol BAYES_SPAM - Scan File ${MESSAGE_HAM} + Scan File ${MESSAGE_HAM} &{kwargs} Expect Symbol BAYES_HAM Set Suite Variable ${RSPAMD_STATS_LEARNTEST} 1 Relearn Test + [Arguments] ${user}=${EMPTY} IF ${RSPAMD_STATS_LEARNTEST} == 0 Fail "Learn test was not run" END - ${result} = Run Rspamc -h ${RSPAMD_LOCAL_ADDR}:${RSPAMD_PORT_CONTROLLER} learn_ham ${MESSAGE_SPAM} - Check Rspamc ${result} - Scan File ${MESSAGE_SPAM} + Learn ${user} ham ${MESSAGE_SPAM} + Set Test Variable ${kwargs} &{EMPTY} + IF "${user}" + Set To Dictionary ${kwargs} Deliver-To=${user} + END + Scan File ${MESSAGE_SPAM} &{kwargs} ${pass} = Run Keyword And Return Status Expect Symbol BAYES_HAM IF ${pass} Pass Execution What Me Worry diff --git a/test/functional/configs/stats.conf b/test/functional/configs/stats.conf index bfa39b426..ba6a5fe9c 100644 --- a/test/functional/configs/stats.conf +++ b/test/functional/configs/stats.conf @@ -71,6 +71,14 @@ classifier { cache { server = {= env.REDIS_SERVER =} } + + {% if env.STATS_PER_USER ~= '' %} + per_user = <