summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2016-10-20 11:15:13 +0100
committerGitHub <noreply@github.com>2016-10-20 11:15:13 +0100
commit697c84014c909793119aa05b2546ba5b0c8f4e54 (patch)
treedd7367a9764d51963b94f1c14e63d3eff25e8ae1
parentac3e68dfb97e069d4d9fe9ad2d3f1917b36dfe19 (diff)
parentedcc2ad4e1c1b5a6307f35f0749f8ae58ef8184e (diff)
downloadrspamd-697c84014c909793119aa05b2546ba5b0c8f4e54.tar.gz
rspamd-697c84014c909793119aa05b2546ba5b0c8f4e54.zip
Merge pull request #1057 from fatalbanana/mapreload
[Test] Add map reload test
-rw-r--r--test/functional/cases/125_map_reload.robot48
-rw-r--r--test/functional/configs/lua_test.conf1
-rw-r--r--test/functional/configs/maps/domains.list.22
-rw-r--r--test/functional/lib/vars.py1
-rw-r--r--test/functional/lua/mapreload.lua16
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
+})