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