summaryrefslogtreecommitdiffstats
path: root/test/functional/lua/redis.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/lua/redis.lua')
-rw-r--r--test/functional/lua/redis.lua113
1 files changed, 113 insertions, 0 deletions
diff --git a/test/functional/lua/redis.lua b/test/functional/lua/redis.lua
new file mode 100644
index 0000000..1a1eaf2
--- /dev/null
+++ b/test/functional/lua/redis.lua
@@ -0,0 +1,113 @@
+--[[[
+-- Just a test for Redis API
+--]]
+
+local logger = require "rspamd_logger"
+local redis_lua = require "lua_redis"
+
+local redis_params
+local N = 'redis_test'
+
+local lua_script = [[
+local f = function() end
+return "hello from lua on redis"
+]]
+
+local function redis_simple_async_symbol(task)
+ local function redis_cb(err, data)
+ if err then
+ task:insert_result('REDIS_ASYNC_ERROR', 1.0, err)
+ else
+ task:insert_result('REDIS_ASYNC', 1.0, data)
+ end
+ end
+
+ redis_lua.rspamd_redis_make_request(
+ task,
+ redis_params,
+ "test_key",
+ false,
+ redis_cb,
+ 'GET',
+ {'test_key'}
+ )
+end
+
+local function redis_simple_async_api201809(task)
+ local function redis_cb(err, data)
+ if err then
+ task:insert_result('REDIS_ASYNC201809_ERROR', 1.0, err)
+ else
+ task:insert_result('REDIS_ASYNC201809', 1.0, data)
+ end
+ end
+
+ local attrs = {
+ task = task,
+ callback = redis_cb
+ }
+ local request = {
+ 'GET',
+ 'test_key'
+ }
+ redis_lua.request(redis_params, attrs, request)
+end
+
+local function redis_symbol(task)
+
+ local attrs = {task = task}
+ local is_ok, connection = redis_lua.connect(redis_params, attrs)
+
+ logger.infox(task, "connect: %1, %2", is_ok, connection)
+
+ if not is_ok then
+ task:insert_result('REDIS_ERROR', 1.0, connection)
+ return
+ end
+
+ local err, data
+
+ is_ok, err = connection:add_cmd('EVAL', {lua_script, 0})
+ logger.infox(task, "add_cmd: %1, %2", is_ok, err)
+
+ if not is_ok then
+ task:insert_result('REDIS_ERROR_2', 1.0, err)
+ return
+ end
+
+ is_ok,data = connection:exec()
+
+ logger.infox(task, "exec: %1, %2", is_ok, data)
+
+ if not is_ok then
+ task:insert_result('REDIS_ERROR_3', 1.0, data)
+ return
+ end
+
+ task:insert_result('REDIS', 1.0, data)
+
+end
+
+redis_params = rspamd_parse_redis_server(N)
+
+rspamd_config:register_symbol({
+ name = 'SIMPLE_REDIS_ASYNC_TEST',
+ score = 1.0,
+ callback = redis_simple_async_symbol,
+ no_squeeze = true
+})
+
+rspamd_config:register_symbol({
+ name = 'SIMPLE_REDIS_ASYNC201809_TEST',
+ score = 1.0,
+ callback = redis_simple_async_api201809,
+ no_squeeze = true
+})
+
+rspamd_config:register_symbol({
+ name = 'REDIS_TEST',
+ score = 1.0,
+ callback = redis_symbol,
+ flags = 'coro',
+})
+-- ]]