From f1b297d5138e6415d422a1a8d67ece351112646a Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 3 Mar 2016 12:19:48 +0000 Subject: [Feature] Improve tests for siphash - Add fuzz tests - Add variable length input tests - Check sanity of siphash implementation on start --- test/lua/unit/siphash.lua | 67 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 55 insertions(+), 12 deletions(-) (limited to 'test/lua') diff --git a/test/lua/unit/siphash.lua b/test/lua/unit/siphash.lua index 1c773b45e..398060847 100644 --- a/test/lua/unit/siphash.lua +++ b/test/lua/unit/siphash.lua @@ -4,26 +4,69 @@ context("Siphash check functions", function() local ffi = require("ffi") ffi.cdef[[ void rspamd_cryptobox_init (void); - size_t siphash24_test(bool generic); + size_t siphash24_test(bool generic, size_t niters, size_t len); + bool siphash24_fuzz (size_t cycles); double rspamd_get_ticks (void); ]] - + ffi.C.rspamd_cryptobox_init() - - test("Siphash test reference vectors", function() + + test("Siphash test reference vectors (1KB)", function() + local t1 = ffi.C.rspamd_get_ticks() + local res = ffi.C.siphash24_test(true, 100000, 1024) + local t2 = ffi.C.rspamd_get_ticks() + + print("Refrence siphash (1KB): " .. tostring(t2 - t1) .. " sec") + assert_not_equal(res, 0) + end) + test("Siphash test optimized vectors (1KB)", function() + local t1 = ffi.C.rspamd_get_ticks() + local res = ffi.C.siphash24_test(false, 100000, 1024) + local t2 = ffi.C.rspamd_get_ticks() + + print("Optimized siphash (1KB): " .. tostring(t2 - t1) .. " sec") + assert_not_equal(res, 0) + end) + test("Siphash test reference vectors (5B)", function() + local t1 = ffi.C.rspamd_get_ticks() + local res = ffi.C.siphash24_test(true, 1000000, 5) + local t2 = ffi.C.rspamd_get_ticks() + + print("Refrence siphash (5B): " .. tostring(t2 - t1) .. " sec") + assert_not_equal(res, 0) + end) + test("Siphash test optimized vectors (5B)", function() + local t1 = ffi.C.rspamd_get_ticks() + local res = ffi.C.siphash24_test(false, 1000000, 5) + local t2 = ffi.C.rspamd_get_ticks() + + print("Optimized siphash (5B): " .. tostring(t2 - t1) .. " sec") + assert_not_equal(res, 0) + end) + test("Siphash test reference vectors (50B)", function() local t1 = ffi.C.rspamd_get_ticks() - local res = ffi.C.siphash24_test(true) + local res = ffi.C.siphash24_test(true, 1000000, 50) local t2 = ffi.C.rspamd_get_ticks() - - print("Refrence siphash: " .. tostring(t2 - t1) .. " sec") + + print("Refrence siphash (50B): " .. tostring(t2 - t1) .. " sec") assert_not_equal(res, 0) end) - test("Siphash test optimized vectors", function() + test("Siphash test optimized vectors (50B)", function() local t1 = ffi.C.rspamd_get_ticks() - local res = ffi.C.siphash24_test(false) + local res = ffi.C.siphash24_test(false, 1000000, 50) local t2 = ffi.C.rspamd_get_ticks() - - print("Optimized siphash: " .. tostring(t2 - t1) .. " sec") + + print("Optimized siphash (50B): " .. tostring(t2 - t1) .. " sec") + assert_not_equal(res, 0) + end) + test("Siphash fuzz test (1000 iters)", function() + local res = ffi.C.siphash24_fuzz(1000) + + assert_not_equal(res, 0) + end) + test("Siphash fuzz test (10000 iters)", function() + local res = ffi.C.siphash24_fuzz(10000) + assert_not_equal(res, 0) end) -end) \ No newline at end of file +end) -- cgit v1.2.3