blob: a4769f4a5551b2a857c8391092facdc1cc8ec0d2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
*** Settings ***
Library Collections
Library OperatingSystem
Library Process
*** Keywords ***
Check Rspamc
[Arguments] ${result} @{args} &{kwargs}
Follow Rspamd Log
Run Keyword If ${result.rc} != 0 Log ${result.stderr}
${has_rc} = Evaluate 'rc' in $kwargs
${inverse} = Evaluate 'inverse' in $kwargs
${re} = Evaluate 're' in $kwargs
${rc} = Set Variable If ${has_rc} == True &{kwargs}[rc] 0
: FOR ${i} IN @{args}
\ Run Keyword If ${re} == True Check Rspamc Match Regexp ${result.stdout} ${i} ${inverse}
\ ... ELSE Check Rspamc Match String ${result.stdout} ${i} ${inverse}
Run Keyword If @{args} == @{EMPTY} Check Rspamc Match Default ${result.stdout} ${inverse}
${rc_nocheck} = Evaluate 'rc_nocheck' in $kwargs
${rc_noinverse} = Evaluate 'rc_noinverse' in $kwargs
Run Keyword If ${rc_nocheck} == True Return From Keyword
${inverse} = Set Variable If ${rc_noinverse} == True False ${inverse}
Run Keyword If ${inverse} == False Should Be Equal As Integers ${result.rc} ${rc}
... ELSE Should Not Be Equal As Integers ${result.rc} ${rc}
Check Rspamc Match Default
[Arguments] ${subject} ${inverse}
Run Keyword If ${inverse} == False Should Contain ${subject} success = true
... ELSE Should Not Contain ${subject} success = true
Check Rspamc Match Regexp
[Arguments] ${subject} ${re} ${inverse}
Run Keyword If ${inverse} == False Should Match Regexp ${subject} ${re}
... ELSE Should Not Match Regexp ${subject} ${re}
Check Rspamc Match String
[Arguments] ${subject} ${str} ${inverse}
Run Keyword If ${inverse} == False Should Contain ${subject} ${str}
... ELSE Should Not Contain ${subject} ${str}
Custom Follow Rspamd Log
[Arguments] ${logfile} ${logpos} ${logpos_var} ${scope}
${logpos} = Log Logs ${logfile} ${logpos}
Run Keyword If '${scope}' == 'Test' Set Test Variable ${${logpos_var}} ${logpos}
... ELSE IF '${scope}' == 'Suite' Set Suite Variable ${${logpos_var}} ${logpos}
... ELSE Fail 'scope must be Test or Suite'
Follow Rspamd Log
${RSPAMD_LOGPOS} = Log Logs ${TMPDIR}/rspamd.log ${RSPAMD_LOGPOS}
Run Keyword If '${RSPAMD_SCOPE}' == 'Test' Set Test Variable ${RSPAMD_LOGPOS}
... ELSE IF '${RSPAMD_SCOPE}' == 'Suite' Set Suite Variable ${RSPAMD_LOGPOS}
... ELSE Fail 'RSPAMD_SCOPE must be Test or Suite'
Generic Setup
[Arguments] @{vargs}
&{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}
Cleanup Temporary Directory ${TMPDIR}
Log Logs
[Arguments] ${logfile} ${position}
${the_log} ${position} = Read Log From Position ${logfile} ${position}
Log ${the_log}
[Return] ${position}
Run Redis
${template} = Get File ${TESTDIR}/configs/redis-server.conf
${config} = Replace Variables ${template}
Create File ${TMPDIR}/redis-server.conf ${config}
Log ${config}
${result} = Run Process redis-server ${TMPDIR}/redis-server.conf
Run Keyword If ${result.rc} != 0 Log ${result.stderr}
Should Be Equal As Integers ${result.rc} 0
Wait Until Created ${TMPDIR}/redis.pid
${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}
${redis_log} = Get File ${TMPDIR}/redis.log
Log ${redis_log}
Run Rspamc
[Arguments] @{args}
${result} = Run Process ${RSPAMC} @{args} env:LD_LIBRARY_PATH=${TESTDIR}/../../contrib/aho-corasick
[Return] ${result}
Run Rspamd
[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}}
\ Set To Dictionary ${d} ${i}=${newvalue}
${config} = Replace Variables ${template}
${config} = Replace Variables ${config}
Log ${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
Run Keyword If ${result.rc} != 0 Log ${result.stderr}
${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
Set To Dictionary ${d} RSPAMD_LOGPOS=${rspamd_logpos} RSPAMD_PID=${rspamd_pid} TMPDIR=${tmpdir}
[Return] &{d}
Scan Message With Rspamc
[Arguments] ${msg_file} @{vargs}
${result} = Run Rspamc -p -h ${LOCAL_ADDR}:${PORT_NORMAL} @{vargs} ${msg_file}
[Return] ${result}
Sync Fuzzy Storage
${result} = Run Process ${RSPAMADM} control -s ${TMPDIR}/rspamd.sock fuzzy_sync
Log ${result.stdout}
Follow Rspamd Log
Sleep 1s Try give fuzzy storage time to sync
|