diff --git a/spec/helpers/redis_helper.lua b/spec/helpers/redis_helper.lua index 37d03545fa11..78c00a0a880e 100644 --- a/spec/helpers/redis_helper.lua +++ b/spec/helpers/redis_helper.lua @@ -4,17 +4,27 @@ 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, cursor = connect(host, port, password), "0" + + repeat + local result = redis_client:scan(cursor) + cursor = result[1] + local keys = result[2] + for _, key in ipairs(keys) do redis_client:del(key) end + until cursor == "0" + redis_client:close() end