From 8e2d181f6df9533a2cbb02e6dffaca21647ea14e Mon Sep 17 00:00:00 2001 From: Andrew Lewis Date: Tue, 9 Aug 2016 11:58:12 +0100 Subject: [PATCH] [Test] Make `Run Rspamd` function reusable by other stuff --- test/functional/lib/rspamd.robot | 49 ++++++++++++++------------------ 1 file changed, 21 insertions(+), 28 deletions(-) diff --git a/test/functional/lib/rspamd.robot b/test/functional/lib/rspamd.robot index a8693df21..02df036f3 100644 --- a/test/functional/lib/rspamd.robot +++ b/test/functional/lib/rspamd.robot @@ -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} -- 2.39.5