- sudo apt-get update -qq || true
- 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
- gem install coveralls-lcov
- - sudo pip install demjson psutil robotframework
+ - sudo pip install demjson ipaddress psutil robotframework
- wget http://download.redis.io/redis-stable.tar.gz
- tar xvzf redis-stable.tar.gz
- cd redis-stable && make && sudo cp src/redis-cli /usr/bin/
*** Settings ***
Suite Setup Generic Setup
-Suite Teardown Generic Teardown
+Suite Teardown Simple Teardown
Library ${TESTDIR}/lib/rspamd.py
Resource ${TESTDIR}/lib/rspamd.robot
Variables ${TESTDIR}/lib/vars.py
*** Settings ***
-Test Teardown Generic Teardown
+Test Teardown Normal Teardown
Library ${TESTDIR}/lib/rspamd.py
Resource ${TESTDIR}/lib/rspamd.robot
Variables ${TESTDIR}/lib/vars.py
Run Redis
Multimap Teardown
+ Normal Teardown
Shutdown Process With Children ${REDIS_PID}
- Generic Teardown
+ Wait For Port ${SOCK_STREAM} ${LOCAL_ADDR} ${REDIS_PORT}
*** Settings ***
-Test Teardown Generic Teardown
+Test Teardown Normal Teardown
Library ${TESTDIR}/lib/rspamd.py
Resource ${TESTDIR}/lib/rspamd.robot
Variables ${TESTDIR}/lib/vars.py
*** Settings ***
Suite Setup MIMETypes Setup
-Suite Teardown Generic Teardown
+Suite Teardown Simple Teardown
Library ${TESTDIR}/lib/rspamd.py
Resource ${TESTDIR}/lib/rspamd.robot
Variables ${TESTDIR}/lib/vars.py
Run Redis
Redis Statistics Teardown
- Generic Teardown
+ Normal Teardown
Shutdown Process With Children ${REDIS_PID}
+ Wait For Port ${SOCK_STREAM} ${LOCAL_ADDR} ${REDIS_PORT}
Statistics Setup
Generic Setup STATS_PATH_CACHE STATS_PATH_HAM STATS_PATH_SPAM
Statistics Teardown
- Generic Teardown
+ Normal Teardown
*** Settings ***
Suite Setup Generic Setup
-Suite Teardown Generic Teardown
+Suite Teardown Normal Teardown
Resource ${TESTDIR}/lib/rspamd.robot
Resource lib.robot
*** Settings ***
Suite Setup DMARC Setup
-Suite Teardown Generic Teardown
+Suite Teardown Simple Teardown
Library ${TESTDIR}/lib/rspamd.py
Resource ${TESTDIR}/lib/rspamd.robot
Variables ${TESTDIR}/lib/vars.py
*** Settings ***
Suite Setup Fuzzy Setup Encrypted Siphash
-Suite Teardown Generic Teardown
+Suite Teardown Fuzzy Teardown
Resource lib.robot
*** Test Cases ***
*** Settings ***
Suite Setup Fuzzy Setup Keyed Fasthash
-Suite Teardown Generic Teardown
+Suite Teardown Fuzzy Teardown
Resource lib.robot
*** Test Cases ***
*** Settings ***
Suite Setup Fuzzy Setup Plain Fasthash
-Suite Teardown Generic Teardown
+Suite Teardown Fuzzy Teardown
Resource lib.robot
*** Test Cases ***
*** Settings ***
Suite Setup Fuzzy Setup Plain Siphash
-Suite Teardown Generic Teardown
+Suite Teardown Fuzzy Teardown
Resource lib.robot
*** Test Cases ***
Fuzzy Multimessage Overwrite Test
: FOR ${i} IN @{MESSAGES}
\ Fuzzy Overwrite Test ${i}
+
+Fuzzy Teardown
+ ${port_normal} = Create List ${SOCK_STREAM} ${LOCAL_ADDR} ${PORT_NORMAL}
+ ${port_fuzzy} = Create List ${SOCK_DGRAM} ${LOCAL_ADDR} ${PORT_FUZZY}
+ ${port_controller} = Create List ${SOCK_STREAM} ${LOCAL_ADDR} ${PORT_CONTROLLER}
+ ${ports} = Create List ${port_normal} ${port_fuzzy} ${port_controller}
+ Generic Teardown @{ports}
*** Settings ***
Suite Setup Fuzzy Setup Keyed Mumhash
-Suite Teardown Generic Teardown
+Suite Teardown Fuzzy Teardown
Resource lib.robot
*** Test Cases ***
*** Settings ***
Suite Setup Fuzzy Setup Plain Mumhash
-Suite Teardown Generic Teardown
+Suite Teardown Fuzzy Teardown
Resource lib.robot
*** Test Cases ***
Cleanup Temporary Directory ${SLAVE_TMPDIR}
Remove File ${TMP_INCLUDE1}
Remove File ${TMP_INCLUDE2}
+ ${port_normal} = Create List ${SOCK_STREAM} ${LOCAL_ADDR} ${PORT_NORMAL}
+ ${port_fuzzy} = Create List ${SOCK_DGRAM} ${LOCAL_ADDR} ${PORT_FUZZY}
+ ${port_controller} = Create List ${SOCK_STREAM} ${LOCAL_ADDR} ${PORT_CONTROLLER}
+ ${port_normal_slave} = Create List ${SOCK_STREAM} ${LOCAL_ADDR} ${PORT_NORMAL_SLAVE}
+ ${port_fuzzy_slave} = Create List ${SOCK_DGRAM} ${LOCAL_ADDR} ${PORT_FUZZY_SLAVE}
+ ${port_controller_slave} = Create List ${SOCK_STREAM} ${LOCAL_ADDR} ${PORT_CONTROLLER_SLAVE}
+ ${ports} = Create List ${port_normal} ${port_fuzzy} ${port_controller} ${port_normal_slave} ${port_fuzzy_slave} ${port_controller_slave}
+ : FOR ${i} IN @{ports}
+ \ Wait For Port @{i}[0] @{i}[1] @{i}[2]
*** Settings ***
Suite Setup Fuzzy Setup Keyed Siphash
-Suite Teardown Generic Teardown
+Suite Teardown Fuzzy Teardown
Resource lib.robot
*** Test Cases ***
*** Settings ***
Suite Setup Fuzzy Setup Plain Siphash
-Suite Teardown Generic Teardown
+Suite Teardown Fuzzy Teardown
Resource lib.robot
*** Test Cases ***
*** Settings ***
Suite Setup Fuzzy Setup Keyed Xxhash
-Suite Teardown Generic Teardown
+Suite Teardown Fuzzy Teardown
Resource lib.robot
*** Test Cases ***
*** Settings ***
Suite Setup Fuzzy Setup Plain Xxhash
-Suite Teardown Generic Teardown
+Suite Teardown Fuzzy Teardown
Resource lib.robot
*** Test Cases ***
*** Settings ***
Suite Setup Generic Setup
-Suite Teardown Generic Teardown
+Suite Teardown Simple Teardown
Library ${TESTDIR}/lib/rspamd.py
Resource lib.robot
Resource ${TESTDIR}/lib/rspamd.robot
*** Settings ***
Suite Setup Generic Setup
-Suite Teardown Generic Teardown
+Suite Teardown Simple Teardown
Library ${TESTDIR}/lib/rspamd.py
Resource lib.robot
Resource ${TESTDIR}/lib/rspamd.robot
*** Settings ***
Suite Setup Generic Setup
-Suite Teardown Generic Teardown
+Suite Teardown Simple Teardown
Library ${TESTDIR}/lib/rspamd.py
Resource ${TESTDIR}/lib/rspamd.robot
Variables ${TESTDIR}/lib/vars.py
*** Settings ***
Suite Setup SpamAssassin Setup
-Suite Teardown Generic Teardown
+Suite Teardown Simple Teardown
Library ${TESTDIR}/lib/rspamd.py
Resource ${TESTDIR}/lib/rspamd.robot
Variables ${TESTDIR}/lib/vars.py
Shutdown Process With Children ${SLAVE_PID}
Cleanup Temporary Directory ${PROXY_TMPDIR}
Cleanup Temporary Directory ${SLAVE_TMPDIR}
+ ${port_normal} = Create List ${SOCK_STREAM} ${LOCAL_ADDR} ${PORT_NORMAL}
+ ${port_proxy} = Create List ${SOCK_STREAM} ${LOCAL_ADDR} ${PORT_PROXY}
+ ${ports} = Create List ${port_normal} ${port_proxy}
+ : FOR ${i} IN @{ports}
+ \ Wait For Port @{i}[0] @{i}[1] @{i}[2]
import demjson
import grp
+import ipaddress
import os
import os.path
import psutil
children = psutil.Process(pid=pid).children(recursive=False)
shutdown_process(pid)
for child in children:
- shutdown_process(child.pid)
+ try:
+ shutdown_process(child.pid)
+ except:
+ pass
+
+def wait_for_port(proto, addr, num):
+ i = ipaddress.ip_address(addr)
+ if (i.version == 6):
+ af = socket.AF_INET6
+ else:
+ af = socket.AF_INET
+ while True:
+ try:
+ s = socket.socket(af, proto)
+ s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+ s.bind((addr, num))
+ if (proto == socket.SOCK_STREAM):
+ s.listen(0)
+ break
+ except:
+ pass
+ time.sleep(0.1)
+ s.close()
\ ... ELSE Fail 'RSPAMD_SCOPE must be Test or Suite'
Generic Teardown
+ [Arguments] @{ports}
Shutdown Process With Children ${RSPAMD_PID}
Cleanup Temporary Directory ${TMPDIR}
+ : FOR ${i} IN @{ports}
+ \ Wait For Port @{i}[0] @{i}[1] @{i}[2]
Log Logs
[Arguments] ${logfile} ${position}
Log ${the_log}
[Return] ${position}
+Normal Teardown
+ ${port_normal} = Create List ${SOCK_STREAM} ${LOCAL_ADDR} ${PORT_NORMAL}
+ ${port_controller} = Create List ${SOCK_STREAM} ${LOCAL_ADDR} ${PORT_CONTROLLER}
+ ${ports} = Create List ${port_normal} ${port_controller}
+ Generic Teardown @{ports}
+
Redis HSET
[Arguments] ${hash} ${key} ${value}
${result} = Run Process redis-cli -h ${REDIS_ADDR} -p ${REDIS_PORT}
${result} = Run Rspamc -p -h ${LOCAL_ADDR}:${PORT_NORMAL} @{vargs} ${msg_file}
[Return] ${result}
+Simple Teardown
+ ${port_normal} = Create List ${SOCK_STREAM} ${LOCAL_ADDR} ${PORT_NORMAL}
+ ${ports} = Create List ${port_normal}
+ Generic Teardown @{ports}
+
Sync Fuzzy Storage
[Arguments] @{vargs}
${len} = Get Length ${vargs}
+import socket
+
KEY_PVT1 = 'ekd3x36tfa5gd76t6pa8hqif3ott7n1siuux68exbkk7ukscte9y'
KEY_PUB1 = 'm8kneubpcjsb8sbsoj7jy7azj9fdd3xmj63txni86a8ye9ncomny'
-LOCAL_ADDR = '127.0.0.1'
+LOCAL_ADDR = u'127.0.0.1'
PORT_CONTROLLER = 56790
PORT_CONTROLLER_SLAVE = 56793
PORT_FUZZY = 56791
PORT_NORMAL = 56789
PORT_NORMAL_SLAVE = 56794
PORT_PROXY = 56795
-REDIS_ADDR = '127.0.0.1'
+REDIS_ADDR = u'127.0.0.1'
REDIS_PORT = 56379
RSPAMD_GROUP = 'nogroup'
RSPAMD_USER = 'nobody'
+SOCK_DGRAM = socket.SOCK_DGRAM
+SOCK_STREAM = socket.SOCK_STREAM