You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

lib.robot 6.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. *** Settings ***
  2. Library OperatingSystem
  3. Library ${TESTDIR}/lib/rspamd.py
  4. Resource ${TESTDIR}/lib/rspamd.robot
  5. Variables ${TESTDIR}/lib/vars.py
  6. *** Variables ***
  7. ${ALGORITHM} ${EMPTY}
  8. ${CONFIG} ${TESTDIR}/configs/fuzzy.conf
  9. ${FLAG1_NUMBER} 50
  10. ${FLAG1_SYMBOL} R_TEST_FUZZY_DENIED
  11. ${FLAG2_NUMBER} 51
  12. ${FLAG2_SYMBOL} R_TEST_FUZZY_WHITE
  13. @{MESSAGES} ${TESTDIR}/messages/spam_message.eml ${TESTDIR}/messages/zip.eml
  14. @{MESSAGES_SKIP} ${TESTDIR}/messages/priority.eml
  15. @{RANDOM_MESSAGES} ${TESTDIR}/messages/bad_message.eml ${TESTDIR}/messages/zip-doublebad.eml
  16. ${REDIS_SCOPE} Suite
  17. ${RSPAMD_SCOPE} Suite
  18. ${SETTINGS_FUZZY_WORKER} ${EMPTY}
  19. ${SETTINGS_FUZZY_CHECK} ${EMPTY}
  20. *** Keywords ***
  21. Fuzzy Skip Add Test Base
  22. [Arguments] ${message}
  23. Set Suite Variable ${RSPAMD_FUZZY_ADD_${message}} 0
  24. ${result} = Run Rspamc -h ${LOCAL_ADDR}:${PORT_CONTROLLER} -w 10 -f
  25. ... ${FLAG1_NUMBER} fuzzy_add ${message}
  26. Check Rspamc ${result}
  27. Sync Fuzzy Storage
  28. ${result} = Scan Message With Rspamc ${message}
  29. Create File ${TMPDIR}/test.map
  30. Should Contain ${result.stdout} R_TEST_FUZZY_DENIED
  31. Append To File ${TMPDIR}/skip_hash.map.tmp 670cfcba72a87bab689958a8af5c22593dc17c907836c7c26a74d1bb49add25adfa45a5f172e3af82c9c638e8eb5fc860c22c7e966e61a459165ef0b9e1acc89
  32. Hard Link ${TMPDIR}/skip_hash.map.tmp ${TMPDIR}/skip_hash.map
  33. ${result} = Scan Message With Rspamc ${message}
  34. Check Rspamc ${result} R_TEST_FUZZY_DENIED inverse=1
  35. Fuzzy Add Test
  36. [Arguments] ${message}
  37. Set Suite Variable ${RSPAMD_FUZZY_ADD_${message}} 0
  38. ${result} = Run Rspamc -h ${LOCAL_ADDR}:${PORT_CONTROLLER} -w 10 -f
  39. ... ${FLAG1_NUMBER} fuzzy_add ${message}
  40. Check Rspamc ${result}
  41. Sync Fuzzy Storage
  42. ${result} = Scan Message With Rspamc ${message}
  43. Check Rspamc ${result} ${FLAG1_SYMBOL}
  44. Set Suite Variable ${RSPAMD_FUZZY_ADD_${message}} 1
  45. Fuzzy Delete Test
  46. [Arguments] ${message}
  47. Run Keyword If ${RSPAMD_FUZZY_ADD_${message}} == 0 Fail "Fuzzy Add was not run"
  48. ${result} = Run Rspamc -h ${LOCAL_ADDR}:${PORT_CONTROLLER} -f ${FLAG1_NUMBER} fuzzy_del
  49. ... ${message}
  50. Check Rspamc ${result}
  51. Sync Fuzzy Storage
  52. ${result} = Scan Message With Rspamc ${message}
  53. Should Not Contain ${result.stdout} ${FLAG1_SYMBOL}
  54. Should Be Equal As Integers ${result.rc} 0
  55. Fuzzy Fuzzy Test
  56. [Arguments] ${message}
  57. Run Keyword If ${RSPAMD_FUZZY_ADD_${message}} != 1 Fail "Fuzzy Add was not run"
  58. @{path_info} = Path Splitter ${message}
  59. @{fuzzy_files} = List Files In Directory ${pathinfo}[0] pattern=${pathinfo}[1].fuzzy* absolute=1
  60. FOR ${i} IN @{fuzzy_files}
  61. ${result} = Scan Message With Rspamc ${i}
  62. Check Rspamc ${result} ${FLAG1_SYMBOL}
  63. END
  64. Fuzzy Miss Test
  65. [Arguments] ${message}
  66. ${result} = Scan Message With Rspamc ${message}
  67. Check Rspamc ${result} ${FLAG1_SYMBOL} inverse=1
  68. Fuzzy Overwrite Test
  69. [Arguments] ${message}
  70. ${flag_numbers} = Create List ${FLAG1_NUMBER} ${FLAG2_NUMBER}
  71. FOR ${i} IN @{flag_numbers}
  72. ${result} = Run Rspamc -h ${LOCAL_ADDR}:${PORT_CONTROLLER} -w 10
  73. ... -f ${i} fuzzy_add ${message}
  74. Check Rspamc ${result}
  75. END
  76. Sync Fuzzy Storage
  77. ${result} = Scan Message With Rspamc ${message}
  78. Should Not Contain ${result.stdout} ${FLAG1_SYMBOL}
  79. Should Contain ${result.stdout} ${FLAG2_SYMBOL}
  80. Should Be Equal As Integers ${result.rc} 0
  81. Fuzzy Setup Encrypted
  82. [Arguments] ${algorithm}
  83. ${worker_settings} = Set Variable "keypair": {"pubkey": "${KEY_PUB1}", "privkey": "${KEY_PVT1}"}; "encrypted_only": true;
  84. ${check_settings} = Set Variable encryption_key = "${KEY_PUB1}";
  85. Fuzzy Setup Generic ${algorithm} ${worker_settings} ${check_settings}
  86. Fuzzy Setup Encrypted Keyed
  87. [Arguments] ${algorithm}
  88. ${worker_settings} = Set Variable "keypair": {"pubkey": "${KEY_PUB1}", "privkey": "${KEY_PVT1}"}; "encrypted_only": true;
  89. ${check_settings} = Set Variable fuzzy_key = "mYN888sydwLTfE32g2hN"; fuzzy_shingles_key = "hXUCgul9yYY3Zlk1QIT2"; encryption_key = "${KEY_PUB1}";
  90. Fuzzy Setup Generic ${algorithm} ${worker_settings} ${check_settings}
  91. Fuzzy Setup Plain
  92. [Arguments] ${algorithm}
  93. Fuzzy Setup Generic ${algorithm} ${EMPTY} ${EMPTY}
  94. Fuzzy Setup Keyed
  95. [Arguments] ${algorithm}
  96. ${check_settings} = Set Variable fuzzy_key = "mYN888sydwLTfE32g2hN"; fuzzy_shingles_key = "hXUCgul9yYY3Zlk1QIT2";
  97. Fuzzy Setup Generic ${algorithm} ${EMPTY} ${check_settings}
  98. Fuzzy Setup Generic
  99. [Arguments] ${algorithm} ${worker_settings} ${check_settings} &{kwargs}
  100. ${worker_settings} = Set Variable backend \= "redis"; ${worker_settings}
  101. ${tmpdir} = Make Temporary Directory
  102. Set Suite Variable ${TMPDIR} ${tmpdir}
  103. Set Suite Variable ${SETTINGS_FUZZY_WORKER} ${worker_settings}
  104. Set Suite Variable ${SETTINGS_FUZZY_CHECK} ${check_settings}
  105. Run Redis
  106. Generic Setup TMPDIR=${TMPDIR}
  107. Fuzzy Setup Plain Fasthash
  108. Fuzzy Setup Plain fasthash
  109. Fuzzy Setup Plain Mumhash
  110. Fuzzy Setup Plain mumhash
  111. Fuzzy Setup Plain Siphash
  112. Fuzzy Setup Plain siphash
  113. Fuzzy Setup Plain Xxhash
  114. Fuzzy Setup Plain xxhash
  115. Fuzzy Setup Keyed Fasthash
  116. Fuzzy Setup Keyed fasthash
  117. Fuzzy Setup Keyed Mumhash
  118. Fuzzy Setup Keyed mumhash
  119. Fuzzy Setup Keyed Siphash
  120. Fuzzy Setup Keyed siphash
  121. Fuzzy Setup Keyed Xxhash
  122. Fuzzy Setup Keyed xxhash
  123. Fuzzy Setup Encrypted Siphash
  124. Fuzzy Setup Encrypted siphash
  125. Fuzzy Skip Hash Test Message
  126. FOR ${i} IN @{MESSAGES_SKIP}
  127. Fuzzy Skip Add Test Base ${i}
  128. END
  129. Fuzzy Multimessage Add Test
  130. FOR ${i} IN @{MESSAGES}
  131. Fuzzy Add Test ${i}
  132. END
  133. Fuzzy Multimessage Fuzzy Test
  134. FOR ${i} IN @{MESSAGES}
  135. Fuzzy Fuzzy Test ${i}
  136. END
  137. Fuzzy Multimessage Miss Test
  138. FOR ${i} IN @{RANDOM_MESSAGES}
  139. Fuzzy Miss Test ${i}
  140. END
  141. Fuzzy Multimessage Delete Test
  142. FOR ${i} IN @{MESSAGES}
  143. Fuzzy Delete Test ${i}
  144. END
  145. Fuzzy Multimessage Overwrite Test
  146. FOR ${i} IN @{MESSAGES}
  147. Fuzzy Overwrite Test ${i}
  148. END
  149. Fuzzy Teardown
  150. Normal Teardown
  151. Shutdown Process With Children ${REDIS_PID}