]> source.dussan.org Git - rspamd.git/commitdiff
[Test] Wait for ports to be confirmed-free inbetween runs 1044/head
authorAndrew Lewis <nerf@judo.za.org>
Mon, 17 Oct 2016 12:37:58 +0000 (14:37 +0200)
committerAndrew Lewis <nerf@judo.za.org>
Mon, 17 Oct 2016 12:37:58 +0000 (14:37 +0200)
29 files changed:
circle.yml
test/functional/cases/100_general.robot
test/functional/cases/101_lua.robot
test/functional/cases/102_multimap.robot
test/functional/cases/103_password.robot
test/functional/cases/105_mimetypes.robot
test/functional/cases/110_statistics/lib.robot
test/functional/cases/110_statistics/sqlite-broken-stats-dir.robot
test/functional/cases/115_dmarc.robot
test/functional/cases/120_fuzzy/encrypted.robot
test/functional/cases/120_fuzzy/fasthash-keyed.robot
test/functional/cases/120_fuzzy/fasthash.robot
test/functional/cases/120_fuzzy/general.robot
test/functional/cases/120_fuzzy/lib.robot
test/functional/cases/120_fuzzy/mumhash-keyed.robot
test/functional/cases/120_fuzzy/mumhash.robot
test/functional/cases/120_fuzzy/replication.robot
test/functional/cases/120_fuzzy/siphash-keyed.robot
test/functional/cases/120_fuzzy/siphash.robot
test/functional/cases/120_fuzzy/xxhash-keyed.robot
test/functional/cases/120_fuzzy/xxhash.robot
test/functional/cases/121_json/100_preresult.robot
test/functional/cases/121_json/101_simple.robot
test/functional/cases/130_dkim.robot
test/functional/cases/135_spamassassin.robot
test/functional/cases/140_proxy.robot
test/functional/lib/rspamd.py
test/functional/lib/rspamd.robot
test/functional/lib/vars.py

index fd1665a816ea15b6eb5bac820b80b36dde0609c2..bfa99cd9c34036e09e61b6f43bcadea799ead3ec 100644 (file)
@@ -3,7 +3,7 @@ dependencies:
       - 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/
index 8876ef9802be024619d77f859365c0094056ecef..c07484ad2f7405fee36c3ab64855835c95b042da 100644 (file)
@@ -1,6 +1,6 @@
 *** 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
index 27bb867f7d8033f4e421f6b4b28644d8ff7de513..e7df19716fb4f87e8063d1c1b365181dfb569643 100644 (file)
@@ -1,5 +1,5 @@
 *** Settings ***
-Test Teardown   Generic Teardown
+Test Teardown   Normal Teardown
 Library         ${TESTDIR}/lib/rspamd.py
 Resource        ${TESTDIR}/lib/rspamd.robot
 Variables       ${TESTDIR}/lib/vars.py
index 17ea2b7419b8aed9a798efc182e3a4af4d50d7a1..f02320adfbed13a7110a8f9dbaa52a5a38170530 100644 (file)
@@ -246,5 +246,6 @@ Multimap Setup
   Run Redis
 
 Multimap Teardown
+  Normal Teardown
   Shutdown Process With Children  ${REDIS_PID}
-  Generic Teardown
+  Wait For Port  ${SOCK_STREAM}  ${LOCAL_ADDR}  ${REDIS_PORT}
index 3853572d4ffa231dd9c8f0232a188031014141a3..6fc032ad0ea8ff58506efb8ad072e3b7f7447daa 100644 (file)
@@ -1,5 +1,5 @@
 *** Settings ***
-Test Teardown   Generic Teardown
+Test Teardown   Normal Teardown
 Library         ${TESTDIR}/lib/rspamd.py
 Resource        ${TESTDIR}/lib/rspamd.robot
 Variables       ${TESTDIR}/lib/vars.py
index 8e124e3f732f2e1e2c9641b2958a2c071a45117c..b47f646861b08726350e3c87d9400771f251bd89 100644 (file)
@@ -1,6 +1,6 @@
 *** 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
index 5f9e960382944cbe44d675697a7de00209a5d35f..98a9055fe564b29e244931552d32afe349c68bc3 100644 (file)
@@ -47,11 +47,12 @@ Redis Statistics Setup
   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
index 57d75c29496aecd05f12684960396720572c62de..b6caa4bd1e552f73845320f7f6aab22bc76107ac 100644 (file)
@@ -1,6 +1,6 @@
 *** Settings ***
 Suite Setup     Generic Setup
-Suite Teardown  Generic Teardown
+Suite Teardown  Normal Teardown
 Resource        ${TESTDIR}/lib/rspamd.robot
 Resource        lib.robot
 
index 0bf680ebbe83a5b011513e3d0084eda8d985a678..a2a94c50c87a88e514dabd015d2d0f0459651e2f 100644 (file)
@@ -1,6 +1,6 @@
 *** 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
index 21fd87908ad2947d2b3b57094b574090ae54d249..8268b234bbf93618f3fd51493c9d67ec7dbd4cbf 100644 (file)
@@ -1,6 +1,6 @@
 *** Settings ***
 Suite Setup     Fuzzy Setup Encrypted Siphash
-Suite Teardown  Generic Teardown
+Suite Teardown  Fuzzy Teardown
 Resource        lib.robot
 
 *** Test Cases ***
index d135eaca08d86fcd9078502149e22fa3cbee8354..8f949fceb9c649e1922620cd0cf18acb01833dd7 100644 (file)
@@ -1,6 +1,6 @@
 *** Settings ***
 Suite Setup     Fuzzy Setup Keyed Fasthash
-Suite Teardown  Generic Teardown
+Suite Teardown  Fuzzy Teardown
 Resource        lib.robot
 
 *** Test Cases ***
index 75d596c73ae28a3c772fe4e50df7b91b328537fa..cf0503622ddec856d03b8186e9dc75a912de9a4d 100644 (file)
@@ -1,6 +1,6 @@
 *** Settings ***
 Suite Setup     Fuzzy Setup Plain Fasthash
-Suite Teardown  Generic Teardown
+Suite Teardown  Fuzzy Teardown
 Resource        lib.robot
 
 *** Test Cases ***
index 7d1b0171a1c0c2a72e6e2e5ca9a26df7a2d32243..eb54f37332b063f3a8fa9868079e523965944565 100644 (file)
@@ -1,6 +1,6 @@
 *** Settings ***
 Suite Setup     Fuzzy Setup Plain Siphash
-Suite Teardown  Generic Teardown
+Suite Teardown  Fuzzy Teardown
 Resource        lib.robot
 
 *** Test Cases ***
index bde6e2dc5803b478698c87575b33b84c238b2873..79c19891bff297f932b39a172bb435b8fa98c63f 100644 (file)
@@ -143,3 +143,10 @@ Fuzzy Multimessage Delete Test
 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}
index cfef38e57470ce8c0c17a4f24f517f2c2942c9b9..770da125aad5561d00b16cd80d8d36182de5897d 100644 (file)
@@ -1,6 +1,6 @@
 *** Settings ***
 Suite Setup     Fuzzy Setup Keyed Mumhash
-Suite Teardown  Generic Teardown
+Suite Teardown  Fuzzy Teardown
 Resource        lib.robot
 
 *** Test Cases ***
index 6e2714b64c7566217b007bed4ad715b00cc3aa40..5dd47aeadff7401a99f53c5566668aa2df98deea 100644 (file)
@@ -1,6 +1,6 @@
 *** Settings ***
 Suite Setup     Fuzzy Setup Plain Mumhash
-Suite Teardown  Generic Teardown
+Suite Teardown  Fuzzy Teardown
 Resource        lib.robot
 
 *** Test Cases ***
index cb7d425334f109d6337940ecb51094b5a4dda838..8a3b875ed7157d9ef34fd70edd5e77fc8eedbc6c 100644 (file)
@@ -82,3 +82,12 @@ Replication Teardown
   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]
index 6ed321ca91183fd9453f62e0e70b24804f5a2685..0acef322cedf9e7d2eb98983cd4e0750d2083dd9 100644 (file)
@@ -1,6 +1,6 @@
 *** Settings ***
 Suite Setup     Fuzzy Setup Keyed Siphash
-Suite Teardown  Generic Teardown
+Suite Teardown  Fuzzy Teardown
 Resource        lib.robot
 
 *** Test Cases ***
index 5ede462de21165ab3022f39cf684ab3badd63dce..66d3d01d249b72a4cc798b9eadcb95dda6868bd3 100644 (file)
@@ -1,6 +1,6 @@
 *** Settings ***
 Suite Setup     Fuzzy Setup Plain Siphash
-Suite Teardown  Generic Teardown
+Suite Teardown  Fuzzy Teardown
 Resource        lib.robot
 
 *** Test Cases ***
index b9840dc0d3bea425f89301b7858069c72cf3dce9..a5d7f49a35e4675512f7c80414e615e6aaf90b95 100644 (file)
@@ -1,6 +1,6 @@
 *** Settings ***
 Suite Setup     Fuzzy Setup Keyed Xxhash
-Suite Teardown  Generic Teardown
+Suite Teardown  Fuzzy Teardown
 Resource        lib.robot
 
 *** Test Cases ***
index 4cb7fef750d69f2c24b72d80ce3ea9d9869e1009..e0fc346c853a59c44b960960caf587082b4c4ed0 100644 (file)
@@ -1,6 +1,6 @@
 *** Settings ***
 Suite Setup     Fuzzy Setup Plain Xxhash
-Suite Teardown  Generic Teardown
+Suite Teardown  Fuzzy Teardown
 Resource        lib.robot
 
 *** Test Cases ***
index 58682f6f55a157185b8962a251d448f9293ada79..aa25c02720128483190482de771f0ff6bd9ddf42 100644 (file)
@@ -1,6 +1,6 @@
 *** 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
index 38b6ec11d70456a91e8cadfe1aa189d4fb5d8adb..da5aa0f190cc05963bfc52b8d6b75217b1854d03 100644 (file)
@@ -1,6 +1,6 @@
 *** 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
index 88ce5eb28ce042250b84291bef5401bd05535712..1bb08e6391b237f18636bf422bd28c7a05708502 100644 (file)
@@ -1,6 +1,6 @@
 *** 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
index d1901068c33cb591f20d565260829ebc3d404c1f..21793cc9d7d20cedf149b148629b9d0d7c43990c 100644 (file)
@@ -1,6 +1,6 @@
 *** 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
index 7b29f188a3a547324640b6169fc8af003a456ae5..42297ea622e3dc8eda9adb0e54a1cddab76603b6 100644 (file)
@@ -47,3 +47,8 @@ Proxy Teardown
   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]
index 89e79aec879af863d50eb17b764059835ceb6a2c..bfad7d61dc834be4f0e8f3ed337095cd317549dd 100644 (file)
@@ -1,5 +1,6 @@
 import demjson
 import grp
+import ipaddress
 import os
 import os.path
 import psutil
@@ -155,4 +156,26 @@ def shutdown_process_with_children(pid):
     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()
index 19359a038c2d985ee08a9c77494c504f88f5eb89..84639c3e7932f770265d3b2bed3ba749dbca0e45 100644 (file)
@@ -62,8 +62,11 @@ Generic Setup
   \  ...  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}
@@ -71,6 +74,12 @@ Log Logs
   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}
@@ -129,6 +138,11 @@ Scan Message With Rspamc
   ${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}
index 917bde8424fb4eae0fcfd900ed840bdc54370a82..3ba68fea38ab4dc804cb0cf123a7f266fd643bf9 100644 (file)
@@ -1,6 +1,8 @@
+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
@@ -8,7 +10,9 @@ PORT_FUZZY_SLAVE = 56792
 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