kong--kong
118 行
2.7 KiB
Perl
118 行
2.7 KiB
Perl
# vim:set ts=4 sts=4 sw=4 et ft=:
|
|
|
|
use Test::Nginx::Socket::Lua;
|
|
use Cwd qw(cwd);
|
|
|
|
workers(2);
|
|
|
|
#repeat_each(2);
|
|
|
|
plan tests => repeat_each() * (blocks() * 3);
|
|
|
|
my $pwd = cwd();
|
|
|
|
our $HttpConfig = qq{
|
|
lua_package_path "$pwd/lib/?.lua;;";
|
|
lua_shared_dict cache_shm 1m;
|
|
lua_shared_dict ipc_shm 1m;
|
|
|
|
init_by_lua_block {
|
|
-- local verbose = true
|
|
local verbose = false
|
|
local outfile = "$Test::Nginx::Util::ErrLogFile"
|
|
-- local outfile = "/tmp/v.log"
|
|
if verbose then
|
|
local dump = require "jit.dump"
|
|
dump.on(nil, outfile)
|
|
else
|
|
local v = require "jit.v"
|
|
v.on(outfile)
|
|
end
|
|
|
|
require "resty.core"
|
|
-- jit.opt.start("hotloop=1")
|
|
-- jit.opt.start("loopunroll=1000000")
|
|
-- jit.off()
|
|
}
|
|
};
|
|
|
|
run_tests();
|
|
|
|
__DATA__
|
|
|
|
=== TEST 1: update() errors if no ipc
|
|
--- http_config eval: $::HttpConfig
|
|
--- config
|
|
location = /t {
|
|
content_by_lua_block {
|
|
local mlcache = require "kong.resty.mlcache"
|
|
|
|
local cache = assert(mlcache.new("my_mlcache", "cache_shm"))
|
|
|
|
local ok, err = pcall(cache.update, cache, "foo")
|
|
ngx.say(err)
|
|
}
|
|
}
|
|
--- request
|
|
GET /t
|
|
--- response_body
|
|
no polling configured, specify opts.ipc_shm or opts.ipc.poll
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 2: update() calls ipc poll() with timeout arg
|
|
--- http_config eval: $::HttpConfig
|
|
--- config
|
|
location = /t {
|
|
content_by_lua_block {
|
|
local mlcache = require "kong.resty.mlcache"
|
|
|
|
local cache = assert(mlcache.new("my_mlcache", "cache_shm", {
|
|
ipc = {
|
|
register_listeners = function() end,
|
|
broadcast = function() end,
|
|
poll = function(...)
|
|
ngx.say("called poll() with args: ", ...)
|
|
return true
|
|
end,
|
|
}
|
|
}))
|
|
|
|
assert(cache:update(3.5, "not me"))
|
|
}
|
|
}
|
|
--- request
|
|
GET /t
|
|
--- response_body
|
|
called poll() with args: 3.5
|
|
--- no_error_log
|
|
[error]
|
|
|
|
|
|
|
|
=== TEST 3: update() JITs when no events to catch up
|
|
--- http_config eval: $::HttpConfig
|
|
--- config
|
|
location = /t {
|
|
content_by_lua_block {
|
|
local mlcache = require "kong.resty.mlcache"
|
|
|
|
local cache = assert(mlcache.new("my_mlcache", "cache_shm", {
|
|
ipc_shm = "ipc_shm",
|
|
}))
|
|
|
|
for i = 1, 10e3 do
|
|
assert(cache:update())
|
|
end
|
|
}
|
|
}
|
|
--- request
|
|
GET /t
|
|
--- ignore_response_body
|
|
--- no_error_log
|
|
[error]
|
|
--- error_log eval
|
|
qr/\[TRACE\s+\d+ content_by_lua\(nginx\.conf:\d+\):8 loop\]/
|