]> source.dussan.org Git - rspamd.git/commitdiff
[Test] Add tests for redis maps in multimap 843/head
authorAndrew Lewis <nerf@judo.za.org>
Fri, 12 Aug 2016 06:51:59 +0000 (07:51 +0100)
committerAndrew Lewis <nerf@judo.za.org>
Fri, 12 Aug 2016 10:34:37 +0000 (11:34 +0100)
circle.yml
test/functional/cases/102_multimap.robot
test/functional/configs/multimap.conf
test/functional/lib/rspamd.robot

index 234ba0bca745ec3cf2520439157cbbd8a89a5fbf..178fcb97aadeb32e0b54438f6def9181090aa824 100644 (file)
@@ -1,7 +1,7 @@
 dependencies:
     pre:
       - sudo apt-get update -qq
-      - sudo apt-get install -qq cmake gcc lcov libevent-dev libglib2.0-dev libgmime-2.6-dev libluajit-5.1-dev liblua5.1-0-dev libmagic-dev libpcre3-dev libsqlite3-dev libssl-dev make python-dev ragel redis-server
+      - sudo apt-get install -qq cmake gcc lcov libevent-dev libglib2.0-dev libgmime-2.6-dev libluajit-5.1-dev liblua5.1-0-dev libmagic-dev libpcre3-dev libsqlite3-dev libssl-dev make python-dev ragel redis-server redis-tools
       - gem install coveralls-lcov
       - sudo pip install demjson psutil robotframework
 
index dd6f103ec47b47b2bfc232fca5f899f398638119..f88fd9da680e4ea9baf23cf35f9011686616f18c 100644 (file)
@@ -1,6 +1,6 @@
 *** Settings ***
 Suite Setup     Multimap Setup
-Suite Teardown  Generic Teardown
+Suite Teardown  Multimap Teardown
 Library         ${TESTDIR}/lib/rspamd.py
 Resource        ${TESTDIR}/lib/rspamd.robot
 Variables       ${TESTDIR}/lib/vars.py
@@ -9,6 +9,7 @@ Variables       ${TESTDIR}/lib/vars.py
 ${CONFIG}       ${TESTDIR}/configs/plugins.conf
 ${MESSAGE}      ${TESTDIR}/messages/spam_message.eml
 ${UTF_MESSAGE}  ${TESTDIR}/messages/utf.eml
+${REDIS_SCOPE}  Suite
 ${RSPAMD_SCOPE}  Suite
 
 *** Test Cases ***
@@ -114,8 +115,40 @@ MAP - CDB - HOSTNAME MISS
   ${result} =  Scan Message With Rspamc  ${MESSAGE}  --ip  127.0.0.1  --hostname  rspamd.com
   Check Rspamc  ${result}  CDB_HOSTNAME  inverse=1  rc_noinverse=1
 
+MAP - REDIS - HOSTNAME
+  Redis HSET  hostname  redistest.example.net  ${EMPTY}
+  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --ip  127.0.0.1  --hostname  redistest.example.net
+  Check Rspamc  ${result}  REDIS_HOSTNAME
+
+MAP - REDIS - HOSTNAME MISS
+  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --ip  127.0.0.1  --hostname  rspamd.com
+  Check Rspamc  ${result}  REDIS_HOSTNAME  inverse=1  rc_noinverse=1
+
+MAP - REDIS - IP
+  Redis HSET  ipaddr  127.0.0.1  ${EMPTY}
+  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --ip  127.0.0.1
+  Check Rspamc  ${result}  REDIS_IPADDR
+
+MAP - REDIS - IP - MISS
+  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --ip  8.8.8.8
+  Check Rspamc  ${result}  REDIS_IPADDR  inverse=1  rc_noinverse=1
+
+MAP - REDIS - FROM
+  Redis HSET  emailaddr  from@rspamd.tk  ${EMPTY}
+  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --from  from@rspamd.tk
+  Check Rspamc  ${result}  REDIS_FROMADDR
+
+MAP - REDIS - FROM MISS
+  ${result} =  Scan Message With Rspamc  ${MESSAGE}  --from  user@other.com
+  Check Rspamc  ${result}  REDIS_FROMADDR  inverse=1  rc_noinverse=1
+
 *** Keywords ***
 Multimap Setup
   ${PLUGIN_CONFIG} =  Get File  ${TESTDIR}/configs/multimap.conf
   Set Suite Variable  ${PLUGIN_CONFIG}
   Generic Setup  PLUGIN_CONFIG
+  Run Redis
+
+Multimap Teardown
+  Shutdown Process With Children  ${REDIS_PID}
+  Generic Teardown
index 1cb010d8a641e52674e2b485df2583b73b64c259..7c75c7a912a844442704d53570f5e64d49652739 100644 (file)
@@ -1,3 +1,6 @@
+redis {
+  servers = "${REDIS_ADDR}:${REDIS_PORT}";
+}
 multimap {
   DNSBL_MAP {
     type = "dnsbl";
@@ -46,4 +49,17 @@ multimap {
     type = "hostname";
     map = "cdb://${TESTDIR}/configs/maps/domains.cdb";
   }
+  REDIS_HOSTNAME {
+    type = "hostname";
+    map = "redis://hostname";
+  }
+  REDIS_IPADDR {
+    type = "ip";
+    map = "redis://ipaddr";
+  }
+  REDIS_FROMADDR {
+    type = "from";
+    filter = "email:addr";
+    map = "redis://emailaddr";
+  }
 }
index a4769f4a5551b2a857c8391092facdc1cc8ec0d2..2c6fbfc43a063b58643235cc4a0929b99ac58e3c 100644 (file)
@@ -70,6 +70,14 @@ Log Logs
   Log  ${the_log}
   [Return]  ${position}
 
+Redis HSET
+  [Arguments]  ${hash}  ${key}  ${value}
+  ${result} =  Run Process  redis-cli  -h  ${REDIS_ADDR}  -p  ${REDIS_PORT}
+  ...  HSET  ${hash}  ${key}  ${value}
+  Run Keyword If  ${result.rc} != 0  Log  ${result.stderr}
+  Log  ${result.stdout}
+  Should Be Equal As Integers  ${result.rc}  0
+
 Run Redis
   ${template} =  Get File  ${TESTDIR}/configs/redis-server.conf
   ${config} =  Replace Variables  ${template}