27
27
local b = ngx.req.get_body_data();
28
28
f = io.open(ngx.var.realpath_root.."/test.lua", "w");
29
29
-- luajit bytecode: sub(149,-1), lua bytecode: sub(1,147)
30
if package.loaded["jit"] then
31
if not string.find(jit.version, "LuaJIT 2.0") then
32
ngx.say("test skipped")
31
35
f:write(string.sub(b, 149));
33
37
f:write(string.sub(b, 1, 147));
44
48
\x1b\x4c\x75\x61\x51\x00\x01\x04\x08\x04\x08\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x40\x74\x65\x73\x74\x2e\x6c\x75\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x02\x05\x00\x00\x00\x05\x00\x00\x00\x06\x40\x40\x00\x41\x80\x00\x00\x1c\x40\x00\x01\x1e\x00\x80\x00\x03\x00\x00\x00\x04\x04\x00\x00\x00\x00\x00\x00\x00\x6e\x67\x78\x00\x04\x04\x00\x00\x00\x00\x00\x00\x00\x73\x61\x79\x00\x04\x06\x00\x00\x00\x00\x00\x00\x00\x68\x65\x6c\x6c\x6f\x00\x00\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
45
49
\x1b\x4c\x4a\x01\x02\x29\x02\x00\x02\x00\x03\x00\x05\x34\x00\x00\x00\x37\x00\x01\x00\x25\x01\x02\x00\x3e\x00\x02\x01\x47\x00\x01\x00\x0a\x68\x65\x6c\x6c\x6f\x08\x73\x61\x79\x08\x6e\x67\x78\x00"
50
--- response_body_like chop
51
^(?:hello|test skipped)$
114
120
\x1b\x4c\x75\x61\x52\x00\x01\x04\x08\x04\x08\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x40\x74\x65\x73\x74\x2e\x6c\x75\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x02\x05\x00\x00\x00\x05\x00\x00\x00\x06\x40\x40\x00\x41\x80\x00\x00\x1c\x40\x00\x01\x1e\x00\x80\x00\x03\x00\x00\x00\x04\x04\x00\x00\x00\x00\x00\x00\x00\x6e\x67\x78\x00\x04\x04\x00\x00\x00\x00\x00\x00\x00\x73\x61\x79\x00\x04\x06\x00\x00\x00\x00\x00\x00\x00\x68\x65\x6c\x6c\x6f\x00\x00\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
115
\x1b\x4c\x4a\x02\x02\x29\x02\x00\x02\x00\x03\x00\x05\x34\x00\x00\x00\x37\x00\x01\x00\x25\x01\x02\x00\x3e\x00\x02\x01\x47\x00\x01\x00\x0a\x68\x65\x6c\x6c\x6f\x08\x73\x61\x79\x08\x6e\x67\x78\x00"
121
\x1b\x4c\x4a\x80\x02\x29\x02\x00\x02\x00\x03\x00\x05\x34\x00\x00\x00\x37\x00\x01\x00\x25\x01\x02\x00\x3e\x00\x02\x01\x47\x00\x01\x00\x0a\x68\x65\x6c\x6c\x6f\x08\x73\x61\x79\x08\x6e\x67\x78\x00"
116
122
--- response_body
119
bad byte-code header in
125
bytecode format version unsupported
129
135
local b = ngx.req.get_body_data();
130
136
f = io.open(ngx.var.realpath_root.."/test.lua", "w");
131
137
-- luajit bytecode: sub(149,-1), lua bytecode: sub(1,147)
133
if package.loaded["jit"] then
134
jit = true; f:write(string.sub(b, 149));
140
if not string.find(jit.version, "LuaJIT 2.0") then
141
ngx.say("test skipped")
145
do_jit = true; f:write(string.sub(b, 149));
136
147
f:write(string.sub(b, 1, 147));
138
149
f:close(); res = ngx.location.capture("/call");
139
if jit and res.status == 200 then
150
if do_jit and res.status == 200 then
141
elseif not jit and res.status == 500 then
152
elseif not do_jit and res.status == 500 then
153
164
\x1b\x4c\x75\x61\x51\x00\x00\x04\x08\x04\x08\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x40\x74\x65\x73\x74\x2e\x6c\x75\x61\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x02\x05\x00\x00\x00\x05\x00\x00\x00\x06\x40\x40\x00\x41\x80\x00\x00\x1c\x40\x00\x01\x1e\x00\x80\x00\x03\x00\x00\x00\x04\x04\x00\x00\x00\x00\x00\x00\x00\x6e\x67\x78\x00\x04\x04\x00\x00\x00\x00\x00\x00\x00\x73\x61\x79\x00\x04\x06\x00\x00\x00\x00\x00\x00\x00\x68\x65\x6c\x6c\x6f\x00\x00\x00\x00\x00\x05\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
154
165
\x1b\x4c\x4a\x01\x03\x29\x02\x00\x02\x00\x03\x00\x05\x00\x00\x00\x34\x00\x01\x00\x37\x00\x02\x01\x25\x01\x02\x00\x3e\x00\x01\x00\x47\x0a\x68\x65\x6c\x6c\x6f\x08\x73\x61\x79\x08\x6e\x67\x78\x00"
166
--- response_body_like chop
167
^(?:ok|test skipped)$
208
223
local b = ngx.req.get_body_data();
209
224
f = io.open(ngx.var.realpath_root.."/test.lua", "w");
210
225
-- luajit bytecode: sub(149,-1), lua bytecode: sub(1,147)
211
if package.loaded["jit"] then
227
if not string.find(jit.version, "LuaJIT 2.0") then
228
ngx.say("test skipped")
212
232
f:write(string.sub(b, 119));
214
234
f:write(string.sub(b, 1, 117));
225
245
\x1b\x4c\x75\x61\x51\x00\x01\x04\x08\x04\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x02\x05\x00\x00\x00\x05\x00\x00\x00\x06\x40\x40\x00\x41\x80\x00\x00\x1c\x40\x00\x01\x1e\x00\x80\x00\x03\x00\x00\x00\x04\x04\x00\x00\x00\x00\x00\x00\x00\x6e\x67\x78\x00\x04\x04\x00\x00\x00\x00\x00\x00\x00\x73\x61\x79\x00\x04\x06\x00\x00\x00\x00\x00\x00\x00\x68\x65\x6c\x6c\x6f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
226
246
\x1b\x4c\x4a\x01\x00\x09\x40\x74\x65\x73\x74\x2e\x6c\x75\x61\x32\x02\x00\x02\x00\x03\x00\x05\x06\x00\x02\x34\x00\x00\x00\x37\x00\x01\x00\x25\x01\x02\x00\x3e\x00\x02\x01\x47\x00\x01\x00\x0a\x68\x65\x6c\x6c\x6f\x08\x73\x61\x79\x08\x6e\x67\x78\x01\x01\x01\x01\x01\x00\x00"
247
--- response_body_like chop
248
^(?:hello|test skipped)$
254
=== TEST 7: generate & load bytecode for LuaJIT (stripped)
258
local bcsave = require "jit.bcsave"
260
local prefix = ngx.config.prefix()
261
local infile = prefix .. "html/a.lua"
262
local outfile = prefix .. "html/a.luac"
263
bcsave.start("-s", infile, outfile)
264
return ngx.exec("/call")
267
ngx.say("test skipped!")
271
content_by_lua_file html/a.luac;
278
ngx.status = 201 ngx.say("hello from Lua!")
279
--- response_body_like chop
280
^(?:hello from Lua!|test skipped!)$
287
=== TEST 8: generate & load bytecode for LuaJIT (not stripped)
291
local bcsave = require "jit.bcsave"
293
local prefix = ngx.config.prefix()
294
local infile = prefix .. "html/a.lua"
295
local outfile = prefix .. "html/a.luac"
296
bcsave.start("-g", infile, outfile)
297
return ngx.exec("/call")
300
ngx.say("test skipped!")
304
content_by_lua_file html/a.luac;
311
ngx.status = 201 ngx.say("hello from Lua!")
312
--- response_body_like chop
313
^(?:hello from Lua!|test skipped!)$