diff --git a/spec/helpers/redis_helper.lua b/spec/helpers/redis_helper.lua index 37d03545fa11..91f33903f08e 100644 --- a/spec/helpers/redis_helper.lua +++ b/spec/helpers/redis_helper.lua @@ -4,17 +4,31 @@ local version = require "version" local DEFAULT_TIMEOUT = 2000 -local function connect(host, port) +local function connect(host, port, password) local redis_client = redis:new() redis_client:set_timeout(DEFAULT_TIMEOUT) assert(redis_client:connect(host, port)) + if password then + assert(redis_client:auth(password)) + end local red_version = string.match(redis_client:info(), 'redis_version:([%g]+)\r\n') return redis_client, assert(version(red_version)) end -local function reset_redis(host, port) - local redis_client = connect(host, port) - redis_client:flushall() +local function reset_redis(host, port, password) + local redis_client = connect(host, port, password) + local num_databases = (config_res and config_res[2]) and tonumber(config_res[2]) or 1 + + for db = 0, num_databases - 1 do + redis_client:select(db) + local cursor = "0" + repeat + local result = redis_client:scan(cursor) + cursor = result[1] + for _, key in ipairs(result[2]) do redis_client:del(key) end + until cursor == "0" + end + redis_client:close() end