87 lines
1.9 KiB
Lua
87 lines
1.9 KiB
Lua
local orig_ngx_sleep = ngx.sleep
|
|
|
|
|
|
local spy_ngx_sleep
|
|
local simdjson
|
|
local test_obj
|
|
local test_arr
|
|
local test_str
|
|
|
|
|
|
describe("[yield]", function()
|
|
lazy_setup(function()
|
|
test_obj = { str = string.rep("a", 2100), }
|
|
|
|
test_arr = {}
|
|
for i = 1, 1000 do
|
|
test_arr[i] = i
|
|
end
|
|
|
|
test_str = "[" .. table.concat(test_arr, ",") .. "]"
|
|
end)
|
|
|
|
|
|
before_each(function()
|
|
spy_ngx_sleep = spy.on(ngx, "sleep")
|
|
simdjson = require("resty.simdjson")
|
|
end)
|
|
|
|
|
|
after_each(function()
|
|
ngx.sleep = orig_ngx_sleep -- luacheck: ignore
|
|
package.loaded["resty.simdjson"] = nil
|
|
package.loaded["resty.simdjson.decoder"] = nil
|
|
package.loaded["resty.simdjson.encoder"] = nil
|
|
end)
|
|
|
|
|
|
for _, v in ipairs { true, false, } do
|
|
it("enable = " .. tostring(v) .." when encoding", function()
|
|
|
|
local parser = simdjson.new(v)
|
|
assert(parser)
|
|
|
|
local str = parser:encode(test_obj)
|
|
|
|
parser:destroy()
|
|
|
|
assert(str)
|
|
assert(type(str) == "string")
|
|
assert.equal(string.format([[{"str":"%s"}]], string.rep("a", 2100)), str)
|
|
|
|
if v then
|
|
assert.spy(spy_ngx_sleep).was_called(1) -- yield once
|
|
assert.spy(spy_ngx_sleep).was_called_with(0) -- yield 0ms
|
|
|
|
else
|
|
assert.spy(spy_ngx_sleep).was_called(0) -- no yield
|
|
end
|
|
end)
|
|
end
|
|
|
|
|
|
for _, v in ipairs { true, false, } do
|
|
it("enable = " .. tostring(v) .." when decoding", function()
|
|
|
|
local parser = simdjson.new(v)
|
|
assert(parser)
|
|
|
|
local obj = parser:decode(test_str)
|
|
|
|
parser:destroy()
|
|
|
|
assert(obj)
|
|
assert(type(obj) == "table")
|
|
assert.same(test_arr, obj)
|
|
|
|
if v then
|
|
assert.spy(spy_ngx_sleep).was_called(1) -- yield once
|
|
assert.spy(spy_ngx_sleep).was_called_with(0) -- yield 0ms
|
|
|
|
else
|
|
assert.spy(spy_ngx_sleep).was_called(0) -- no yield
|
|
end
|
|
end)
|
|
end
|
|
end)
|