File: 141-luajit.t

package info (click to toggle)
nginx 1.18.0-6.1%2Bdeb11u3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 19,344 kB
  • sloc: ansic: 250,653; perl: 7,548; sh: 1,408; ruby: 879; python: 358; makefile: 338; awk: 36; cpp: 18
file content (48 lines) | stat: -rw-r--r-- 1,123 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# vim:set ft= ts=4 sw=4 et fdm=marker:

use Test::Nginx::Socket::Lua
    skip_all => 'no mmap(sbrk(0)) trick since glibc leaks memory in this case';

#worker_connections(1014);
#master_on();
#workers(2);
#log_level('warn');

repeat_each(2);

plan tests => repeat_each() * (blocks() * 3);

#no_diff();
#no_long_string();
run_tests();

__DATA__

=== TEST 1: avoid the data segment from growing on Linux
This is to maximize the address space that can be used by LuaJIT.
--- config
    location = /t {
        content_by_lua_block {
            local ffi = require "ffi"
            ffi.cdef[[
                void *malloc(size_t size);
                void free(void *p);
            ]]
            local p = ffi.C.malloc(1);
            local num = tonumber(ffi.cast("uintptr_t", p))
            ffi.C.free(p)
            if ffi.abi("64bit") then
                if num < 2^31 then
                    ngx.say("fail: ", string.format("p = %#x", num))
                    return
                end
            end
            ngx.say("pass")
        }
    }
--- request
GET /t
--- response_body
pass
--- no_error_log
[error]