]> source.dussan.org Git - rspamd.git/commitdiff
[Test] Make `Run Rspamd` function reusable by other stuff
authorAndrew Lewis <nerf@judo.za.org>
Tue, 9 Aug 2016 10:58:12 +0000 (11:58 +0100)
committerAndrew Lewis <nerf@judo.za.org>
Tue, 9 Aug 2016 11:22:12 +0000 (12:22 +0100)
test/functional/lib/rspamd.robot

index a8693df21c014b45e981114300f79e5a9cefdd1b..02df036f361413485b15110291ae1bf59d5de7c5 100644 (file)
@@ -38,18 +38,6 @@ Check Rspamc Match String
   Run Keyword If  ${inverse} == False  Should Contain  ${subject}  ${str}
   ...  ELSE  Should Not Contain  ${subject}  ${str}
 
-Export Rspamd Vars To Suite
-  [Arguments]  ${TMPDIR}  ${RSPAMD_LOGPOS}  ${RSPAMD_PID}
-  Set Suite Variable  ${TMPDIR}
-  Set Suite Variable  ${RSPAMD_LOGPOS}
-  Set Suite Variable  ${RSPAMD_PID}
-
-Export Rspamd Vars To Test
-  [Arguments]  ${TMPDIR}  ${RSPAMD_LOGPOS}  ${RSPAMD_PID}
-  Set Test Variable  ${TMPDIR}
-  Set Test Variable  ${RSPAMD_LOGPOS}
-  Set Test Variable  ${RSPAMD_PID}
-
 Follow Rspamd Log
   ${RSPAMD_LOGPOS} =  Log Logs  ${TMPDIR}/rspamd.log  ${RSPAMD_LOGPOS}
   Run Keyword If  '${RSPAMD_SCOPE}' == 'Test'  Set Test Variable  ${RSPAMD_LOGPOS}
@@ -58,10 +46,12 @@ Follow Rspamd Log
 
 Generic Setup
   [Arguments]  @{vargs}
-  ${TMPDIR}  ${RSPAMD_PID}  ${RSPAMD_LOGPOS} =  Run Rspamd  @{vargs}
-  Run Keyword If  '${RSPAMD_SCOPE}' == 'Test'  Export Rspamd Vars To Test  ${TMPDIR}  ${RSPAMD_LOGPOS}  ${RSPAMD_PID}
-  ...  ELSE IF  '${RSPAMD_SCOPE}' == 'Suite'  Export Rspamd Vars To Suite  ${TMPDIR}  ${RSPAMD_LOGPOS}  ${RSPAMD_PID}
-  ...  ELSE  Fail  'RSPAMD_SCOPE must be Test or Suite'
+  &{d} =  Run Rspamd  @{vargs}
+  ${keys} =  Get Dictionary Keys  ${d}
+  : FOR  ${i}  IN  @{keys}
+  \  Run Keyword If  '${RSPAMD_SCOPE}' == 'Suite'  Set Suite Variable  ${${i}}  &{d}[${i}]
+  \  ...  ELSE IF  '${RSPAMD_SCOPE}' == 'Test'  Set Test Variable  ${${i}}  &{d}[${i}]
+  \  ...  ELSE  Fail  'RSPAMD_SCOPE must be Test or Suite'
 
 Generic Teardown
   Shutdown Process With Children  ${RSPAMD_PID}
@@ -94,26 +84,29 @@ Run Rspamc
   [Return]  ${result}
 
 Run Rspamd
-  [Arguments]  @{vargs}
-  ${TMPDIR} =  Make Temporary Directory
-  Set Directory Ownership  ${TMPDIR}  ${RSPAMD_USER}  ${RSPAMD_GROUP}
+  [Arguments]  @{vargs}  &{kwargs}
+  ${has_CONFIG} =  Evaluate  'CONFIG' in $kwargs
+  ${CONFIG} =  Set Variable If  ${has_CONFIG} == True  &{kwargs}[CONFIG]  ${CONFIG}
+  &{d} =  Create Dictionary
+  ${tmpdir} =  Make Temporary Directory
+  Set Directory Ownership  ${tmpdir}  ${RSPAMD_USER}  ${RSPAMD_GROUP}
   ${template} =  Get File  ${CONFIG}
   : FOR  ${i}  IN  @{vargs}
   \  ${newvalue} =  Replace Variables  ${${i}}
-  \  Run Keyword If  '${RSPAMD_SCOPE}' == 'Test'  Set Test Variable  ${${i}}  ${newvalue}
-  \  ...  ELSE IF  '${RSPAMD_SCOPE}' == 'Suite'  Set Suite Variable  ${${i}}  ${newvalue}
-  \  ...  ELSE  Fail  'RSPAMD_SCOPE must be Test or Suite'
+  \  Set To Dictionary  ${d}  ${i}=${newvalue}
   ${config} =  Replace Variables  ${template}
+  ${config} =  Replace Variables  ${config}
   Log  ${config}
-  Create File  ${TMPDIR}/rspamd.conf  ${config}
+  Create File  ${tmpdir}/rspamd.conf  ${config}
   ${result} =  Run Process  ${RSPAMD}  -u  ${RSPAMD_USER}  -g  ${RSPAMD_GROUP}
-  ...  -c  ${TMPDIR}/rspamd.conf  DBDIR\=${TMPDIR}  env:TMPDIR=${TMPDIR}  env:LD_LIBRARY_PATH=${TESTDIR}/../../contrib/aho-corasick
+  ...  -c  ${tmpdir}/rspamd.conf  DBDIR\=${tmpdir}  env:TMPDIR=${tmpdir}  env:LD_LIBRARY_PATH=${TESTDIR}/../../contrib/aho-corasick
   Run Keyword If  ${result.rc} != 0  Log  ${result.stderr}
-  ${rspamd_logpos} =  Log Logs  ${TMPDIR}/rspamd.log  0
+  ${rspamd_logpos} =  Log Logs  ${tmpdir}/rspamd.log  0
   Should Be Equal As Integers  ${result.rc}  0
-  Wait Until Created  ${TMPDIR}/rspamd.pid
-  ${rspamd_pid} =  Get File  ${TMPDIR}/rspamd.pid
-  [Return]  ${TMPDIR}  ${rspamd_pid}  ${rspamd_logpos}
+  Wait Until Created  ${tmpdir}/rspamd.pid
+  ${rspamd_pid} =  Get File  ${tmpdir}/rspamd.pid
+  Set To Dictionary  ${d}  RSPAMD_LOGPOS=${rspamd_logpos}  RSPAMD_PID=${rspamd_pid}  TMPDIR=${tmpdir}
+  [Return]  &{d}
 
 Scan Message With Rspamc
   [Arguments]  ${msg_file}  @{vargs}