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 5.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  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. Scan File ${message}
  29. Expect Symbol R_TEST_FUZZY_DENIED
  30. Create File ${TMPDIR}/skip_hash.map.tmp 2d875d4737c59c4822fd01dadeba52a329de3933f766c6f167904c6a426bbfa7ea63a66bf807b25c5ee853baee58bfb18d3b423fcd13cfa7c3d77a840039a1ea
  31. Move File ${TMPDIR}/skip_hash.map.tmp ${TMPDIR}/skip_hash.map
  32. Sleep 1s Wait for reload
  33. Scan File ${message}
  34. Do Not Expect Symbol R_TEST_FUZZY_DENIED
  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. Scan File ${message}
  43. Expect Symbol ${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. Scan File ${message}
  53. Do Not Expect Symbol ${FLAG1_SYMBOL}
  54. Fuzzy Fuzzy Test
  55. [Arguments] ${message}
  56. Run Keyword If ${RSPAMD_FUZZY_ADD_${message}} != 1 Fail "Fuzzy Add was not run"
  57. @{path_info} = Path Splitter ${message}
  58. @{fuzzy_files} = List Files In Directory ${pathinfo}[0] pattern=${pathinfo}[1].fuzzy* absolute=1
  59. FOR ${i} IN @{fuzzy_files}
  60. Scan File ${i}
  61. Expect Symbol ${FLAG1_SYMBOL}
  62. END
  63. Fuzzy Miss Test
  64. [Arguments] ${message}
  65. Scan File ${message}
  66. Do Not Expect Symbol ${FLAG1_SYMBOL}
  67. Fuzzy Overwrite Test
  68. [Arguments] ${message}
  69. ${flag_numbers} = Create List ${FLAG1_NUMBER} ${FLAG2_NUMBER}
  70. FOR ${i} IN @{flag_numbers}
  71. ${result} = Run Rspamc -h ${LOCAL_ADDR}:${PORT_CONTROLLER} -w 10
  72. ... -f ${i} fuzzy_add ${message}
  73. Check Rspamc ${result}
  74. END
  75. Sync Fuzzy Storage
  76. Scan File ${message}
  77. Do Not Expect Symbol ${FLAG1_SYMBOL}
  78. Expect Symbol ${FLAG2_SYMBOL}
  79. Fuzzy Setup Encrypted
  80. [Arguments] ${algorithm}
  81. ${worker_settings} = Set Variable "keypair": {"pubkey": "${KEY_PUB1}", "privkey": "${KEY_PVT1}"}; "encrypted_only": true;
  82. ${check_settings} = Set Variable encryption_key = "${KEY_PUB1}";
  83. Fuzzy Setup Generic ${algorithm} ${worker_settings} ${check_settings}
  84. Fuzzy Setup Encrypted Keyed
  85. [Arguments] ${algorithm}
  86. ${worker_settings} = Set Variable "keypair": {"pubkey": "${KEY_PUB1}", "privkey": "${KEY_PVT1}"}; "encrypted_only": true;
  87. ${check_settings} = Set Variable fuzzy_key = "mYN888sydwLTfE32g2hN"; fuzzy_shingles_key = "hXUCgul9yYY3Zlk1QIT2"; encryption_key = "${KEY_PUB1}";
  88. Fuzzy Setup Generic ${algorithm} ${worker_settings} ${check_settings}
  89. Fuzzy Setup Plain
  90. [Arguments] ${algorithm}
  91. Fuzzy Setup Generic ${algorithm} ${EMPTY} ${EMPTY}
  92. Fuzzy Setup Keyed
  93. [Arguments] ${algorithm}
  94. ${check_settings} = Set Variable fuzzy_key = "mYN888sydwLTfE32g2hN"; fuzzy_shingles_key = "hXUCgul9yYY3Zlk1QIT2";
  95. Fuzzy Setup Generic ${algorithm} ${EMPTY} ${check_settings}
  96. Fuzzy Setup Generic
  97. [Arguments] ${algorithm} ${worker_settings} ${check_settings} &{kwargs}
  98. ${worker_settings} = Set Variable backend \= "redis"; ${worker_settings}
  99. ${tmpdir} = Make Temporary Directory
  100. Set Suite Variable ${TMPDIR} ${tmpdir}
  101. Set Suite Variable ${SETTINGS_FUZZY_WORKER} ${worker_settings}
  102. Set Suite Variable ${SETTINGS_FUZZY_CHECK} ${check_settings}
  103. Run Redis
  104. Generic Setup TMPDIR=${TMPDIR}
  105. Fuzzy Setup Plain Fasthash
  106. Fuzzy Setup Plain fasthash
  107. Fuzzy Setup Plain Mumhash
  108. Fuzzy Setup Plain mumhash
  109. Fuzzy Setup Plain Siphash
  110. Fuzzy Setup Plain siphash
  111. Fuzzy Setup Plain Xxhash
  112. Fuzzy Setup Plain xxhash
  113. Fuzzy Setup Keyed Fasthash
  114. Fuzzy Setup Keyed fasthash
  115. Fuzzy Setup Keyed Mumhash
  116. Fuzzy Setup Keyed mumhash
  117. Fuzzy Setup Keyed Siphash
  118. Fuzzy Setup Keyed siphash
  119. Fuzzy Setup Keyed Xxhash
  120. Fuzzy Setup Keyed xxhash
  121. Fuzzy Setup Encrypted Siphash
  122. Fuzzy Setup Encrypted siphash
  123. Fuzzy Skip Hash Test Message
  124. FOR ${i} IN @{MESSAGES_SKIP}
  125. Fuzzy Skip Add Test Base ${i}
  126. END
  127. Fuzzy Multimessage Add Test
  128. FOR ${i} IN @{MESSAGES}
  129. Fuzzy Add Test ${i}
  130. END
  131. Fuzzy Multimessage Fuzzy Test
  132. FOR ${i} IN @{MESSAGES}
  133. Fuzzy Fuzzy Test ${i}
  134. END
  135. Fuzzy Multimessage Miss Test
  136. FOR ${i} IN @{RANDOM_MESSAGES}
  137. Fuzzy Miss Test ${i}
  138. END
  139. Fuzzy Multimessage Delete Test
  140. FOR ${i} IN @{MESSAGES}
  141. Fuzzy Delete Test ${i}
  142. END
  143. Fuzzy Multimessage Overwrite Test
  144. FOR ${i} IN @{MESSAGES}
  145. Fuzzy Overwrite Test ${i}
  146. END
  147. Fuzzy Teardown
  148. Normal Teardown
  149. Shutdown Process With Children ${REDIS_PID}