]> source.dussan.org Git - rspamd.git/commitdiff
[Test] Check controller's error buffer
authorAndrew Lewis <nerf@judo.za.org>
Thu, 1 Jun 2017 14:30:20 +0000 (16:30 +0200)
committerAndrew Lewis <nerf@judo.za.org>
Thu, 1 Jun 2017 14:36:51 +0000 (16:36 +0200)
12 files changed:
test/functional/cases/103_password.robot
test/functional/cases/110_statistics/lib.robot
test/functional/cases/110_statistics/sqlite-broken-stats-dir.robot
test/functional/cases/120_fuzzy/lib.robot
test/functional/cases/120_fuzzy/redis-general.robot
test/functional/configs/dkim.conf
test/functional/configs/plugins.conf
test/functional/configs/pluginsplus.conf
test/functional/configs/trivial.conf
test/functional/lib/rspamd.py
test/functional/lib/rspamd.robot
test/functional/lib/vars.py

index 8068911f7d3f211362b58d1a9e783eddc6d92023..2ae6dec8f73dd11baf49165e96f998db1b738285 100644 (file)
@@ -6,6 +6,7 @@ Variables       ${TESTDIR}/lib/vars.py
 
 *** Variables ***
 ${CONFIG}       ${TESTDIR}/configs/password.conf
+${CONTROLLER_ERRORS}  False
 ${RSPAMD_SCOPE}  Test
 ${PBKDF_PASSWORD}  "$1$rhzzahtm8a5homdhh7z4qiiy7j8pzp4u$k5toro136brshjjuy9t39r785td69qodmd39qzygxuyehn9tqauy"
 ${CATENA_PASSWORD}  "$2$xu1581gidj5cyp4yjgo68qbj6jz1j8o3$j9yg4k58jy3fj8suijxx9d7pea6a6obtufq9kfenosyq8erm87ky"
index 915736f405c91c805044e10eb684a99a547e3aef..7aba131d90f16bf0807abba2ed6cfae712c18816 100644 (file)
@@ -43,8 +43,10 @@ Relearn Test
   Check Rspamc  ${result}  BAYES_HAM
 
 Redis Statistics Setup
-  Generic Setup
+  ${tmpdir} =  Make Temporary Directory
+  Set Suite Variable  ${TMPDIR}  ${tmpdir}
   Run Redis
+  Generic Setup  TMPDIR=${tmpdir}
 
 Redis Statistics Teardown
   Normal Teardown
index b6caa4bd1e552f73845320f7f6aab22bc76107ac..4d94ac8d8972562edf5a938bcd1135c76a9062ef 100644 (file)
@@ -5,6 +5,7 @@ Resource        ${TESTDIR}/lib/rspamd.robot
 Resource        lib.robot
 
 *** Variables ***
+${CONTROLLER_ERRORS}  False
 ${STATS_BACKEND}  sqlite3
 ${STATS_PATH_CACHE}  path = "/does/not/exist/bayes-cache.sqlite";
 ${STATS_PATH_HAM}  path = "/does/not/exist/bayes-ham.sqlite";
index 0458b98bf8300e1696fc97658b0805b08b157d0a..c71618b22af9d4aceffdc8b7c61e6b040387afc9 100644 (file)
@@ -91,11 +91,13 @@ Fuzzy Setup Keyed
   Fuzzy Setup Generic  ${algorithm}  ${EMPTY}  ${check_settings}
 
 Fuzzy Setup Generic
-  [Arguments]  ${algorithm}  ${worker_settings}  ${check_settings}
+  [Arguments]  ${algorithm}  ${worker_settings}  ${check_settings}  &{kwargs}
+  ${has_TMPDIR} =  Evaluate  'TMPDIR' in $kwargs
   Set Suite Variable  ${SETTINGS_FUZZY_WORKER}  ${worker_settings}
   Set Suite Variable  ${SETTINGS_FUZZY_CHECK}  ${check_settings}
   Set Suite Variable  ${ALGORITHM}  ${algorithm}
-  Generic Setup
+  Run Keyword If  '${has_TMPDIR}' == 'True'  Generic Setup  TMPDIR=&{kwargs}[TMPDIR]
+  ...  ELSE  Generic Setup
 
 Fuzzy Setup Plain Fasthash
   Fuzzy Setup Plain  fasthash
index e3889abbe2764068c23d28aaddf0eda060685527..d79ab30e78d6c76573c4a780651688446b6d86e5 100644 (file)
@@ -21,8 +21,10 @@ Fuzzy Overwrite
 
 *** Keywords ***
 Fuzzy Redis General Setup
-  Fuzzy Setup Generic  siphash  backend = "redis";  ${EMPTY}
+  ${tmpdir} =  Make Temporary Directory
+  Set Suite Variable  ${TMPDIR}  ${tmpdir}
   Run Redis
+  Fuzzy Setup Generic  siphash  backend \= "redis";  ${EMPTY}  TMPDIR=${TMPDIR}
 
 Fuzzy Redis General Teardown
   Normal Teardown
index b6ccbb0d62beab13aff73d8cf194ebc19d068eba..c2ff522751ac1838a6c467411a0596bb386dfa7f 100644 (file)
@@ -30,6 +30,14 @@ worker {
        task_timeout = 60s;
 }
 
+worker {
+        type = controller
+        bind_socket = ${LOCAL_ADDR}:${PORT_CONTROLLER}
+        count = 1
+        secure_ip = ["127.0.0.1", "::1"];
+        stats_path = "${TMPDIR}/stats.ucl"
+}
+
 dkim {
 
 sign_condition =<<EOD
index a11070cee934a93b433937ee6d4257ab34ac8275..eb7971478c37e4f93278b740c7e88660d1e88bd8 100644 (file)
@@ -27,6 +27,13 @@ worker {
        count = 1
        task_timeout = 60s;
 }
+worker {
+        type = controller
+        bind_socket = ${LOCAL_ADDR}:${PORT_CONTROLLER}
+        count = 1
+        secure_ip = ["127.0.0.1", "::1"];
+        stats_path = "${TMPDIR}/stats.ucl"
+}
 modules {
     path = "${TESTDIR}/../../src/plugins/lua/"
 }
index ea86635d310c1820414236354e11e5eebe59ada7..6422f9f427a746abc59a40b8f1997f983f923029 100644 (file)
@@ -27,6 +27,13 @@ worker {
        count = 1
        task_timeout = 60s;
 }
+worker {
+        type = controller
+        bind_socket = ${LOCAL_ADDR}:${PORT_CONTROLLER}
+        count = 1
+        secure_ip = ["127.0.0.1", "::1"];
+        stats_path = "${TMPDIR}/stats.ucl"
+}
 modules {
     path = "${TESTDIR}/../../src/plugins/lua/"
 }
index 04f462e1edcb512cdfb6abc64306c2052bbf6eed..81dd8f0c64c723ff397812ac637580ad1a197f48 100644 (file)
@@ -30,3 +30,11 @@ worker {
        }
        task_timeout = 60s;
 }
+
+worker {
+        type = controller
+        bind_socket = ${LOCAL_ADDR}:${PORT_CONTROLLER}
+        count = 1
+        secure_ip = ["127.0.0.1", "::1"];
+        stats_path = "${TMPDIR}/stats.ucl"
+}
index 1ae6e95a188181d2889de90ca3c34a8e1f60f50c..fd1907384621e964025c7872edfdba3944bb8b25 100644 (file)
@@ -5,6 +5,7 @@ import os
 import os.path
 import psutil
 import pwd
+import re
 import shutil
 import signal
 import socket
@@ -24,6 +25,29 @@ try:
 except:
     import httplib
 
+ignore_message = [
+    re.compile("^cannot load controller stats from .*/stats\\.ucl: No such file or directory$"),
+    re.compile("^regexp module enabled, but no rules are defined$"),
+    re.compile("^cannot find dependency on symbol FREEMAIL_FROM$"),
+    re.compile("^cannot find dependency on symbol FREEMAIL_REPLYTO$"),
+    re.compile("^cannot register delayed condition for DMARC_POLICY_ALLOW$"),
+    re.compile("^failed to scan: Socket error detected: Connection refused$"),
+]
+
+def Check_Errors_JSON(j):
+    d = demjson.decode(j, strict=True)
+    assert type(d) is list, j
+    e = []
+    for c in d:
+        filtered = False
+        for r in ignore_message:
+            if r.match(c['message']):
+                filtered = True
+                break
+        if not filtered:
+            e.append(c)
+    assert len(e) == 0, str(e)
+
 def Check_JSON(j):
     d = demjson.decode(j, strict=True)
     assert len(d) > 0
@@ -139,6 +163,10 @@ def spamc(addr, port, filename):
     r = s.recv(2048)
     return r.decode('utf-8')
 
+def TCP_Connect(addr, port):
+    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+    s.connect((addr, port))
+
 def update_dictionary(a, b):
     a.update(b)
     return a
index c8ec561ae0dbaf4009f1d4914d93a539df88fc83..3044b829267a4033e4414426a8005401dbd725b7 100644 (file)
@@ -4,6 +4,11 @@ Library         OperatingSystem
 Library         Process
 
 *** Keywords ***
+Check Controller Errors
+  @{result} =  HTTP  GET  ${LOCAL_ADDR}  ${PORT_CONTROLLER}  /errors
+  Check Errors JSON  @{result}[1]
+  Should Be Equal As Integers  @{result}[0]  200
+
 Check Pidfile
   [Arguments]  ${pidfile}
   Wait Until Created  ${pidfile}
@@ -63,6 +68,7 @@ Generic Setup
 
 Generic Teardown
   [Arguments]  @{ports}
+  Run Keyword If  '${CONTROLLER_ERRORS}' == 'True'  Check Controller Errors
   Shutdown Process With Children  ${RSPAMD_PID}
   Cleanup Temporary Directory  ${TMPDIR}
   : FOR  ${i}  IN  @{ports}
@@ -97,6 +103,7 @@ Run Redis
   Run Keyword If  ${result.rc} != 0  Log  ${result.stderr}
   Should Be Equal As Integers  ${result.rc}  0
   Wait Until Keyword Succeeds  30 sec  1 sec  Check Pidfile  ${TMPDIR}/redis.pid
+  Wait Until Keyword Succeeds  30 sec  1 sec  TCP Connect  ${REDIS_ADDR}  ${REDIS_PORT}
   ${REDIS_PID} =  Get File  ${TMPDIR}/redis.pid
   Run Keyword If  '${REDIS_SCOPE}' == 'Test'  Set Test Variable  ${REDIS_PID}
   ...  ELSE IF  '${REDIS_SCOPE}' == 'Suite'  Set Suite Variable  ${REDIS_PID}
index d76c3c0c57dbff501b1ebd0c42da4379c638831c..f053422d153e00fcd445fe21f3ed6d94baa9af17 100644 (file)
@@ -1,5 +1,6 @@
 import socket
 
+CONTROLLER_ERRORS = True
 KEY_PVT1 = 'ekd3x36tfa5gd76t6pa8hqif3ott7n1siuux68exbkk7ukscte9y'
 KEY_PUB1 = 'm8kneubpcjsb8sbsoj7jy7azj9fdd3xmj63txni86a8ye9ncomny'
 LOCAL_ADDR = u'127.0.0.1'