]> source.dussan.org Git - rspamd.git/commitdiff
[Test] Rework fuzzy tests 846/head
authorAndrew Lewis <nerf@judo.za.org>
Sun, 14 Aug 2016 15:28:46 +0000 (17:28 +0200)
committerAndrew Lewis <nerf@judo.za.org>
Sun, 14 Aug 2016 15:40:45 +0000 (17:40 +0200)
 - Add fuzzy & negative match tests
 - Check attachment & text samples
 - Add suites for different algorithms; keyed/unkeyed
 - Move overwrite/delete tests into general suite

16 files changed:
test/functional/cases/120_fuzzy/encrypted.robot
test/functional/cases/120_fuzzy/fasthash-keyed.robot [new file with mode: 0644]
test/functional/cases/120_fuzzy/fasthash.robot [new file with mode: 0644]
test/functional/cases/120_fuzzy/general.robot [new file with mode: 0644]
test/functional/cases/120_fuzzy/lib.robot
test/functional/cases/120_fuzzy/mumhash-keyed.robot [new file with mode: 0644]
test/functional/cases/120_fuzzy/mumhash.robot [new file with mode: 0644]
test/functional/cases/120_fuzzy/plain.robot [deleted file]
test/functional/cases/120_fuzzy/siphash-keyed.robot [new file with mode: 0644]
test/functional/cases/120_fuzzy/siphash.robot [new file with mode: 0644]
test/functional/cases/120_fuzzy/xxhash-keyed.robot [new file with mode: 0644]
test/functional/cases/120_fuzzy/xxhash.robot [new file with mode: 0644]
test/functional/configs/fuzzy.conf
test/functional/lib/rspamd.py
test/functional/lib/rspamd.robot
test/functional/messages/spam_message.eml.fuzzy1 [new file with mode: 0644]

index 45408d7f80af154d19f43e1d40c1383644b102e8..21fd87908ad2947d2b3b57094b574090ae54d249 100644 (file)
@@ -1,20 +1,14 @@
 *** Settings ***
-Suite Setup     Encrypted Fuzzy Setup
+Suite Setup     Fuzzy Setup Encrypted Siphash
 Suite Teardown  Generic Teardown
 Resource        lib.robot
 
 *** Test Cases ***
 Fuzzy Add
-  Fuzzy Add Test
+  Fuzzy Multimessage Add Test
 
-Fuzzy Delete
-  Fuzzy Delete Test
+Fuzzy Fuzzy
+  Fuzzy Multimessage Fuzzy Test
 
-Fuzzy Overwrite
-  Fuzzy Overwrite Test
-
-*** Keywords ***
-Encrypted Fuzzy Setup
-  Set Suite Variable  ${SETTINGS_FUZZY_WORKER}  "keypair": {"pubkey": "${KEY_PUB1}", "privkey": "${KEY_PVT1}"}; "encrypted_only": true;
-  Set Suite Variable  ${SETTINGS_FUZZY_CHECK}  encryption_key = "${KEY_PUB1}";
-  Generic Setup
+Fuzzy Miss
+  Fuzzy Multimessage Miss Test
diff --git a/test/functional/cases/120_fuzzy/fasthash-keyed.robot b/test/functional/cases/120_fuzzy/fasthash-keyed.robot
new file mode 100644 (file)
index 0000000..d135eac
--- /dev/null
@@ -0,0 +1,14 @@
+*** Settings ***
+Suite Setup     Fuzzy Setup Keyed Fasthash
+Suite Teardown  Generic Teardown
+Resource        lib.robot
+
+*** Test Cases ***
+Fuzzy Add
+  Fuzzy Multimessage Add Test
+
+Fuzzy Fuzzy
+  Fuzzy Multimessage Fuzzy Test
+
+Fuzzy Miss
+  Fuzzy Multimessage Miss Test
diff --git a/test/functional/cases/120_fuzzy/fasthash.robot b/test/functional/cases/120_fuzzy/fasthash.robot
new file mode 100644 (file)
index 0000000..75d596c
--- /dev/null
@@ -0,0 +1,14 @@
+*** Settings ***
+Suite Setup     Fuzzy Setup Plain Fasthash
+Suite Teardown  Generic Teardown
+Resource        lib.robot
+
+*** Test Cases ***
+Fuzzy Add
+  Fuzzy Multimessage Add Test
+
+Fuzzy Fuzzy
+  Fuzzy Multimessage Fuzzy Test
+
+Fuzzy Miss
+  Fuzzy Multimessage Miss Test
diff --git a/test/functional/cases/120_fuzzy/general.robot b/test/functional/cases/120_fuzzy/general.robot
new file mode 100644 (file)
index 0000000..7d1b017
--- /dev/null
@@ -0,0 +1,14 @@
+*** Settings ***
+Suite Setup     Fuzzy Setup Plain Siphash
+Suite Teardown  Generic Teardown
+Resource        lib.robot
+
+*** Test Cases ***
+Fuzzy Add
+  Fuzzy Multimessage Add Test
+
+Fuzzy Delete
+  Fuzzy Multimessage Delete Test
+
+Fuzzy Overwrite
+  Fuzzy Multimessage Overwrite Test
index e5e9cbcb7ad6fa195b067a3f21bceb36cbc9fd6a..bde6e2dc5803b478698c87575b33b84c238b2873 100644 (file)
 *** Settings ***
+Library         OperatingSystem
 Library         ${TESTDIR}/lib/rspamd.py
 Resource        ${TESTDIR}/lib/rspamd.robot
 Variables       ${TESTDIR}/lib/vars.py
 
 *** Variables ***
+${ALGORITHM}    ${EMPTY}
 ${CONFIG}       ${TESTDIR}/configs/fuzzy.conf
 ${FLAG1_NUMBER}  50
 ${FLAG1_SYMBOL}  R_TEST_FUZZY_DENIED
 ${FLAG2_NUMBER}  51
 ${FLAG2_SYMBOL}  R_TEST_FUZZY_WHITE
-${MESSAGE}      ${TESTDIR}/messages/bad_message.eml
+@{MESSAGES}      ${TESTDIR}/messages/spam_message.eml  ${TESTDIR}/messages/zip.eml
+@{RANDOM_MESSAGES}  ${TESTDIR}/messages/bad_message.eml  ${TESTDIR}/messages/zip-doublebad.eml
 ${RSPAMD_SCOPE}  Suite
+${SETTINGS_FUZZY_WORKER}  ${EMPTY}
+${SETTINGS_FUZZY_CHECK}  ${EMPTY}
 
 *** Keywords ***
 Fuzzy Add Test
-  Set Suite Variable  ${RSPAMD_FUZZY_ADD}  0
+  [Arguments]  ${message}
+  Set Suite Variable  ${RSPAMD_FUZZY_ADD_${message}}  0
   ${result} =  Run Rspamc  -h  ${LOCAL_ADDR}:${PORT_CONTROLLER}  -w  10  -f
-  ...  ${FLAG1_NUMBER}  fuzzy_add  ${MESSAGE}
+  ...  ${FLAG1_NUMBER}  fuzzy_add  ${message}
   Check Rspamc  ${result}
   Sync Fuzzy Storage
-  ${result} =  Scan Message With Rspamc  ${MESSAGE}
+  ${result} =  Scan Message With Rspamc  ${message}
   Check Rspamc  ${result}  ${FLAG1_SYMBOL}
-  Set Suite Variable  ${RSPAMD_FUZZY_ADD}  1
+  Set Suite Variable  ${RSPAMD_FUZZY_ADD_${message}}  1
 
 Fuzzy Delete Test
-  Run Keyword If  ${RSPAMD_FUZZY_ADD} == 0  Fail  "Fuzzy Add was not run"
+  [Arguments]  ${message}
+  Run Keyword If  ${RSPAMD_FUZZY_ADD_${message}} == 0  Fail  "Fuzzy Add was not run"
   ${result} =  Run Rspamc  -h  ${LOCAL_ADDR}:${PORT_CONTROLLER}  -f  ${FLAG1_NUMBER}  fuzzy_del
-  ...  ${MESSAGE}
+  ...  ${message}
   Check Rspamc  ${result}
   Sync Fuzzy Storage
-  ${result} =  Scan Message With Rspamc  ${MESSAGE}
+  ${result} =  Scan Message With Rspamc  ${message}
   Follow Rspamd Log
   Should Not Contain  ${result.stdout}  ${FLAG1_SYMBOL}
   Should Be Equal As Integers  ${result.rc}  0
 
+Fuzzy Fuzzy Test
+  [Arguments]  ${message}
+  Run Keyword If  ${RSPAMD_FUZZY_ADD_${message}} != 1  Fail  "Fuzzy Add was not run"
+  @{path_info} =  Path Splitter  ${message}
+  @{fuzzy_files} =  List Files In Directory  @{pathinfo}[0]  @{pathinfo][1].fuzzy*  absolute=1
+  : FOR  ${i}  IN  @{fuzzy_files}
+  \  ${result} =  Scan Message With Rspamc  ${i}
+  \  Check Rspamc  ${result}  ${FLAG1_SYMBOL}
+
+Fuzzy Miss Test
+  [Arguments]  ${message}
+  ${result} =  Scan Message With Rspamc  ${message}
+  Check Rspamc  ${result}  ${FLAG1_SYMBOL}  inverse=1
+
 Fuzzy Overwrite Test
+  [Arguments]  ${message}
   ${flag_numbers} =  Create List  ${FLAG1_NUMBER}  ${FLAG2_NUMBER}
   : FOR  ${i}  IN  @{flag_numbers}
   \  ${result} =  Run Rspamc  -h  ${LOCAL_ADDR}:${PORT_CONTROLLER}  -w  10
-  \  ...  -f  ${i}  fuzzy_add  ${MESSAGE}
+  \  ...  -f  ${i}  fuzzy_add  ${message}
   \  Check Rspamc  ${result}
   Sync Fuzzy Storage
-  ${result} =  Scan Message With Rspamc  ${MESSAGE}
+  ${result} =  Scan Message With Rspamc  ${message}
   Follow Rspamd Log
   Should Not Contain  ${result.stdout}  ${FLAG1_SYMBOL}
   Should Contain  ${result.stdout}  ${FLAG2_SYMBOL}
   Should Be Equal As Integers  ${result.rc}  0
+
+Fuzzy Setup Encrypted
+  [Arguments]  ${algorithm}
+  ${worker_settings} =  Set Variable  "keypair": {"pubkey": "${KEY_PUB1}", "privkey": "${KEY_PVT1}"}; "encrypted_only": true;
+  ${check_settings} =  Set Variable  encryption_key = "${KEY_PUB1}";
+  Fuzzy Setup Generic  ${algorithm}  ${worker_settings}  ${check_settings}
+
+Fuzzy Setup Encrypted Keyed
+  [Arguments]  ${algorithm}
+  ${worker_settings} =  Set Variable  "keypair": {"pubkey": "${KEY_PUB1}", "privkey": "${KEY_PVT1}"}; "encrypted_only": true;
+  ${check_settings} =  Set Variable  fuzzy_key = "mYN888sydwLTfE32g2hN"; fuzzy_shingles_key = "hXUCgul9yYY3Zlk1QIT2"; encryption_key = "${KEY_PUB1}";
+  Fuzzy Setup Generic  ${algorithm}  ${worker_settings}  ${check_settings}
+
+Fuzzy Setup Plain
+  [Arguments]  ${algorithm}
+  Fuzzy Setup Generic  ${algorithm}  ${EMPTY}  ${EMPTY}
+
+Fuzzy Setup Keyed
+  [Arguments]  ${algorithm}
+  ${check_settings} =  Set Variable  fuzzy_key = "mYN888sydwLTfE32g2hN"; fuzzy_shingles_key = "hXUCgul9yYY3Zlk1QIT2";
+  Fuzzy Setup Generic  ${algorithm}  ${EMPTY}  ${check_settings}
+
+Fuzzy Setup Generic
+  [Arguments]  ${algorithm}  ${worker_settings}  ${check_settings}
+  Set Suite Variable  ${SETTINGS_FUZZY_WORKER}  ${worker_settings}
+  Set Suite Variable  ${SETTINGS_FUZZY_CHECK}  ${check_settings}
+  Set Suite Variable  ${ALGORITHM}  ${algorithm}
+  Generic Setup
+
+Fuzzy Setup Plain Fasthash
+  Fuzzy Setup Plain  fasthash
+
+Fuzzy Setup Plain Mumhash
+  Fuzzy Setup Plain  mumhash
+
+Fuzzy Setup Plain Siphash
+  Fuzzy Setup Plain  siphash
+
+Fuzzy Setup Plain Xxhash
+  Fuzzy Setup Plain  xxhash
+
+Fuzzy Setup Keyed Fasthash
+  Fuzzy Setup Keyed  fasthash
+
+Fuzzy Setup Keyed Mumhash
+  Fuzzy Setup Keyed  mumhash
+
+Fuzzy Setup Keyed Siphash
+  Fuzzy Setup Keyed  siphash
+
+Fuzzy Setup Keyed Xxhash
+  Fuzzy Setup Keyed  xxhash
+
+Fuzzy Setup Encrypted Siphash
+  Fuzzy Setup Encrypted  siphash
+
+Fuzzy Multimessage Add Test
+  : FOR  ${i}  IN  @{MESSAGES}
+  \  Fuzzy Add Test  ${i}
+
+Fuzzy Multimessage Fuzzy Test
+  : FOR  ${i}  IN  @{MESSAGES}
+  \  Fuzzy Fuzzy Test  ${i}
+
+Fuzzy Multimessage Miss Test
+  : FOR  ${i}  IN  @{RANDOM_MESSAGES}
+  \  Fuzzy Miss Test  ${i}
+
+Fuzzy Multimessage Delete Test
+  : FOR  ${i}  IN  @{MESSAGES}
+  \  Fuzzy Delete Test  ${i}
+
+Fuzzy Multimessage Overwrite Test
+  : FOR  ${i}  IN  @{MESSAGES}
+  \  Fuzzy Overwrite Test  ${i}
diff --git a/test/functional/cases/120_fuzzy/mumhash-keyed.robot b/test/functional/cases/120_fuzzy/mumhash-keyed.robot
new file mode 100644 (file)
index 0000000..cfef38e
--- /dev/null
@@ -0,0 +1,14 @@
+*** Settings ***
+Suite Setup     Fuzzy Setup Keyed Mumhash
+Suite Teardown  Generic Teardown
+Resource        lib.robot
+
+*** Test Cases ***
+Fuzzy Add
+  Fuzzy Multimessage Add Test
+
+Fuzzy Fuzzy
+  Fuzzy Multimessage Fuzzy Test
+
+Fuzzy Miss
+  Fuzzy Multimessage Miss Test
diff --git a/test/functional/cases/120_fuzzy/mumhash.robot b/test/functional/cases/120_fuzzy/mumhash.robot
new file mode 100644 (file)
index 0000000..6e2714b
--- /dev/null
@@ -0,0 +1,14 @@
+*** Settings ***
+Suite Setup     Fuzzy Setup Plain Mumhash
+Suite Teardown  Generic Teardown
+Resource        lib.robot
+
+*** Test Cases ***
+Fuzzy Add
+  Fuzzy Multimessage Add Test
+
+Fuzzy Fuzzy
+  Fuzzy Multimessage Fuzzy Test
+
+Fuzzy Miss
+  Fuzzy Multimessage Miss Test
diff --git a/test/functional/cases/120_fuzzy/plain.robot b/test/functional/cases/120_fuzzy/plain.robot
deleted file mode 100644 (file)
index 2fc2fd5..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-*** Settings ***
-Suite Setup     Generic Setup
-Suite Teardown  Generic Teardown
-Resource        lib.robot
-
-*** Variables ***
-${SETTINGS_FUZZY_WORKER}  ${EMPTY}
-${SETTINGS_FUZZY_CHECK}  ${EMPTY}
-
-*** Test Cases ***
-Fuzzy Add
-  Fuzzy Add Test
-
-Fuzzy Delete
-  Fuzzy Delete Test
-
-Fuzzy Overwrite
-  Fuzzy Overwrite Test
diff --git a/test/functional/cases/120_fuzzy/siphash-keyed.robot b/test/functional/cases/120_fuzzy/siphash-keyed.robot
new file mode 100644 (file)
index 0000000..6ed321c
--- /dev/null
@@ -0,0 +1,14 @@
+*** Settings ***
+Suite Setup     Fuzzy Setup Keyed Siphash
+Suite Teardown  Generic Teardown
+Resource        lib.robot
+
+*** Test Cases ***
+Fuzzy Add
+  Fuzzy Multimessage Add Test
+
+Fuzzy Fuzzy
+  Fuzzy Multimessage Fuzzy Test
+
+Fuzzy Miss
+  Fuzzy Multimessage Miss Test
diff --git a/test/functional/cases/120_fuzzy/siphash.robot b/test/functional/cases/120_fuzzy/siphash.robot
new file mode 100644 (file)
index 0000000..5ede462
--- /dev/null
@@ -0,0 +1,14 @@
+*** Settings ***
+Suite Setup     Fuzzy Setup Plain Siphash
+Suite Teardown  Generic Teardown
+Resource        lib.robot
+
+*** Test Cases ***
+Fuzzy Add
+  Fuzzy Multimessage Add Test
+
+Fuzzy Fuzzy
+  Fuzzy Multimessage Fuzzy Test
+
+Fuzzy Miss
+  Fuzzy Multimessage Miss Test
diff --git a/test/functional/cases/120_fuzzy/xxhash-keyed.robot b/test/functional/cases/120_fuzzy/xxhash-keyed.robot
new file mode 100644 (file)
index 0000000..b9840dc
--- /dev/null
@@ -0,0 +1,14 @@
+*** Settings ***
+Suite Setup     Fuzzy Setup Keyed Xxhash
+Suite Teardown  Generic Teardown
+Resource        lib.robot
+
+*** Test Cases ***
+Fuzzy Add
+  Fuzzy Multimessage Add Test
+
+Fuzzy Fuzzy
+  Fuzzy Multimessage Fuzzy Test
+
+Fuzzy Miss
+  Fuzzy Multimessage Miss Test
diff --git a/test/functional/cases/120_fuzzy/xxhash.robot b/test/functional/cases/120_fuzzy/xxhash.robot
new file mode 100644 (file)
index 0000000..4cb7fef
--- /dev/null
@@ -0,0 +1,14 @@
+*** Settings ***
+Suite Setup     Fuzzy Setup Plain Xxhash
+Suite Teardown  Generic Teardown
+Resource        lib.robot
+
+*** Test Cases ***
+Fuzzy Add
+  Fuzzy Multimessage Add Test
+
+Fuzzy Fuzzy
+  Fuzzy Multimessage Fuzzy Test
+
+Fuzzy Miss
+  Fuzzy Multimessage Miss Test
index e8d5db62884503ed087a3935615f67d3b6cc602c..fcd744f924055c708f9b9446a589a99ab8d4c823 100644 (file)
@@ -50,6 +50,7 @@ fuzzy_check {
        min_bytes = 100;
 
        rule {
+               algorithm = "${ALGORITHM}";
                servers = "${LOCAL_ADDR}:${PORT_FUZZY}";
                symbol = "R_TEST_FUZZY";
                max_score = 10.0;
index 4da8712a3b222fd447ee6c7ad329d403e5ef4828..d45faa794e6052ac45eafac5a3719b0460e4f093 100644 (file)
@@ -72,6 +72,11 @@ def HTTP(method, host, port, path, data=None, headers={}):
 def make_temporary_directory():
     return tempfile.mkdtemp()
 
+def path_splitter(path):
+    dirname = os.path.dirname(path)
+    basename = os.path.basename(path)
+    return [dirname, basename]
+
 def read_log_from_position(filename, offset):
     offset = long(offset)
     f = open(filename, 'rb')
index 146eabd719c3790a50ea66f4cd3b9c8c65cf694b..7ec79ce6e3613ebddc1a7ee20b56ec329380b123 100644 (file)
@@ -127,4 +127,4 @@ 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
+  Sleep  0.005s  Try give fuzzy storage time to sync
diff --git a/test/functional/messages/spam_message.eml.fuzzy1 b/test/functional/messages/spam_message.eml.fuzzy1
new file mode 100644 (file)
index 0000000..e4b2a08
--- /dev/null
@@ -0,0 +1,44 @@
+Reply-To: <bob@example.net>\r
+From: "Bob" <bob@example.com>\r
+Subject: Hello\r
+Date: Sun, 14 Aug 2016 13:35:02 +0200\r
+MIME-Version: 1.0\r
+Content-Type: text/plain\r
+Content-Transfer-Encoding: 7bit\r
+\r
+Dear Western Union Beneficiary,\r
+\r
+\r
+UNITED NATIONS PAYMENT NOTIFICATION.\r
+\r
+We wish to inform you the United Nations (UN) authorized us to remit to you a total amount of $920,000.00, (Nine Hundred and Twenty Thousand United States Dollars).\r
+\r
+Your Cash prize was paid out to us by the United Nations, and they have successfully succeeded in depositing your whole funds with us here at Western Union London United Kingdom.\r
+\r
+They have now ordered us to take full responsibility in the transfer process of your funds and thus commence the immediate remittance of your funds to you.\r
+\r
+Be duly informed that because of our Western Union transfer policy, your funds will be paid to you via our Western Union Daily Transfer limit of $4,600.00 USD. This means that you will receive a amount of $4,600.00 USD daily, and this amount Can be collected from any of our numerous Western Union outlets in your current location.\r
+\r
+To begin the claim process of your daily payment as stated above, kindly furnish us with the following;\r
+\r
+Full Name:\r
+Address:\r
+Phone Number:\r
+\r
+Upon receipt of the above mentioned details, your first transaction will be activated and we shall then Proceed to provide you with the Money Transfer Control Number (MTCN) for the First installment and we will continue to email you others after 12 hours of Receiving each payment.\r
+\r
+For information on your payment status;\r
+\r
+Contact Person\r
+Henry Adams\r
+Email: h_ada15@aol.co.uk\r
+\r
+OR call our 24 hours Helpline @ +440000000000, for any inquiries on the above message.\r
+\r
+\r
+Yours truly,\r
+\r
+Diana Mckay\r
+For: Western Union London, United Kingdom.\r
+WESTERN UNION... Over 380,000 Outlets Worldwide\r
+\r