1--[[[
2-- Just a test for Redis API
3--]]
4
5local logger = require "rspamd_logger"
6local redis_lua = require "lua_redis"
7
8local redis_params
9local N = 'redis_test'
10
11local lua_script = [[
12local f = function() end
13return "hello from lua on redis"
14]]
15
16local function redis_simple_async_symbol(task)
17  local function redis_cb(err, data)
18    if err then
19      task:insert_result('REDIS_ASYNC_ERROR', 1.0, err)
20    else
21      task:insert_result('REDIS_ASYNC', 1.0, data)
22    end
23  end
24
25  redis_lua.rspamd_redis_make_request(
26    task,
27    redis_params,
28    "test_key",
29    false,
30    redis_cb,
31    'GET',
32    {'test_key'}
33  )
34end
35
36local function redis_simple_async_api201809(task)
37  local function redis_cb(err, data)
38    if err then
39      task:insert_result('REDIS_ASYNC201809_ERROR', 1.0, err)
40    else
41      task:insert_result('REDIS_ASYNC201809', 1.0, data)
42    end
43  end
44
45  local attrs = {
46    task = task,
47    callback = redis_cb
48  }
49  local request = {
50    'GET',
51    'test_key'
52  }
53  redis_lua.request(redis_params, attrs, request)
54end
55
56local function redis_symbol(task)
57
58  local attrs = {task = task}
59  local is_ok, connection = redis_lua.connect(redis_params, attrs)
60
61  logger.infox(task, "connect: %1, %2", is_ok, connection)
62
63  if not is_ok then
64    task:insert_result('REDIS_ERROR', 1.0, connection)
65    return
66  end
67
68  local err, data
69
70  is_ok, err = connection:add_cmd('EVAL', {lua_script, 0})
71  logger.infox(task, "add_cmd: %1, %2", is_ok, err)
72
73  if not is_ok then
74    task:insert_result('REDIS_ERROR_2', 1.0, err)
75    return
76  end
77
78  is_ok,data = connection:exec()
79
80  logger.infox(task, "exec: %1, %2", is_ok, data)
81
82  if not is_ok then
83    task:insert_result('REDIS_ERROR_3', 1.0, data)
84    return
85  end
86
87  task:insert_result('REDIS', 1.0, data)
88
89end
90
91redis_params = rspamd_parse_redis_server(N)
92
93rspamd_config:register_symbol({
94  name = 'SIMPLE_REDIS_ASYNC_TEST',
95  score = 1.0,
96  callback = redis_simple_async_symbol,
97  no_squeeze = true
98})
99
100rspamd_config:register_symbol({
101  name = 'SIMPLE_REDIS_ASYNC201809_TEST',
102  score = 1.0,
103  callback = redis_simple_async_api201809,
104  no_squeeze = true
105})
106
107rspamd_config:register_symbol({
108  name = 'REDIS_TEST',
109  score = 1.0,
110  callback = redis_symbol,
111  flags = 'coro',
112})
113-- ]]
114