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.

redis.lua 2.2KB

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