diff options
-rw-r--r-- | test/functional/cases/125_map_reload.robot | 48 | ||||
-rw-r--r-- | test/functional/configs/lua_test.conf | 1 | ||||
-rw-r--r-- | test/functional/configs/maps/domains.list.2 | 2 | ||||
-rw-r--r-- | test/functional/lib/vars.py | 1 | ||||
-rw-r--r-- | test/functional/lua/mapreload.lua | 16 |
5 files changed, 68 insertions, 0 deletions
diff --git a/test/functional/cases/125_map_reload.robot b/test/functional/cases/125_map_reload.robot new file mode 100644 index 000000000..82fa273d1 --- /dev/null +++ b/test/functional/cases/125_map_reload.robot @@ -0,0 +1,48 @@ +*** Settings *** +Suite Setup Map Reload Setup +Suite Teardown Map Reload Teardown +Library ${TESTDIR}/lib/rspamd.py +Resource ${TESTDIR}/lib/rspamd.robot +Variables ${TESTDIR}/lib/vars.py + +*** Variables *** +${CONFIG} ${TESTDIR}/configs/lua_test.conf +${MAP_WATCH_INTERVAL} 0.5s +${MESSAGE} ${TESTDIR}/messages/spam_message.eml +${RSPAMD_SCOPE} Suite +${URL_TLD} ${TESTDIR}/../lua/unit/test_tld.dat + +*** Test Cases *** +CHECK HIT AND MISS + ${result} = Scan Message With Rspamc ${MESSAGE} + Check Rspamc ${result} MAP_SET_HIT_AND_MISS (1.00)[example.com] + +WRITE NEW MAP + Sleep 1s Wait for new time + Create File ${MAP_FILE} ${MAP2} + +CHECK HIT AND MISS AFTER RELOAD + Sleep 1s Wait for map reload + ${result} = Scan Message With Rspamc ${MESSAGE} + Check Rspamc ${result} MAP_SET_HIT_AND_MISS (1.00)[rspamd.com] + +*** Keywords *** +Map Reload Setup + ${MAP1} = Get File ${TESTDIR}/configs/maps/domains.list + ${MAP2} = Get File ${TESTDIR}/configs/maps/domains.list.2 + ${MAP_FILE} = Make Temporary File + ${LUA_SCRIPT} = Make Temporary File + Set Suite Variable ${LUA_SCRIPT} + Set Suite Variable ${MAP_FILE} + Set Suite Variable ${MAP1} + Set Suite Variable ${MAP2} + ${lua} = Get File ${TESTDIR}/lua/mapreload.lua + ${lua} = Replace Variables ${lua} + Create File ${LUA_SCRIPT} ${lua} + Create File ${MAP_FILE} ${MAP1} + Generic Setup + +Map Reload Teardown + Remove File ${MAP_FILE} + Remove File ${LUA_SCRIPT} + Normal Teardown diff --git a/test/functional/configs/lua_test.conf b/test/functional/configs/lua_test.conf index 50ec330ed..682609335 100644 --- a/test/functional/configs/lua_test.conf +++ b/test/functional/configs/lua_test.conf @@ -2,6 +2,7 @@ options = { filters = ["spf", "dkim", "regexp"] url_tld = "${URL_TLD}" pidfile = "${TMPDIR}/rspamd.pid" + map_watch_interval = ${MAP_WATCH_INTERVAL}; } logging = { type = "file", diff --git a/test/functional/configs/maps/domains.list.2 b/test/functional/configs/maps/domains.list.2 new file mode 100644 index 000000000..850c64045 --- /dev/null +++ b/test/functional/configs/maps/domains.list.2 @@ -0,0 +1,2 @@ +rspamd.com +#other.com diff --git a/test/functional/lib/vars.py b/test/functional/lib/vars.py index 3ba68fea3..a9d5e89f9 100644 --- a/test/functional/lib/vars.py +++ b/test/functional/lib/vars.py @@ -3,6 +3,7 @@ import socket KEY_PVT1 = 'ekd3x36tfa5gd76t6pa8hqif3ott7n1siuux68exbkk7ukscte9y' KEY_PUB1 = 'm8kneubpcjsb8sbsoj7jy7azj9fdd3xmj63txni86a8ye9ncomny' LOCAL_ADDR = u'127.0.0.1' +MAP_WATCH_INTERVAL = '1min' PORT_CONTROLLER = 56790 PORT_CONTROLLER_SLAVE = 56793 PORT_FUZZY = 56791 diff --git a/test/functional/lua/mapreload.lua b/test/functional/lua/mapreload.lua new file mode 100644 index 000000000..73c5d0729 --- /dev/null +++ b/test/functional/lua/mapreload.lua @@ -0,0 +1,16 @@ +local test_map = rspamd_config:add_map ({ + url = '${MAP_FILE}', + type = 'set', +}) + +rspamd_config:register_symbol({ + name = 'MAP_SET_HIT_AND_MISS', + score = 1.0, + callback = function(task) + if (test_map:get_key('example.com') and not test_map:get_key('rspamd.com')) then + return true, 'example.com' + elseif (test_map:get_key('rspamd.com') and not test_map:get_key('example.com')) then + return true, 'rspamd.com' + end + end +}) |