|
Packit |
437b5e |
specify posix.sys.resource:
|
|
Packit |
437b5e |
- before:
|
|
Packit |
437b5e |
resource = require "posix.sys.resource"
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe getrlimit:
|
|
Packit |
437b5e |
- before:
|
|
Packit |
437b5e |
getrlimit = resource.getrlimit
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- context with bad arguments:
|
|
Packit |
437b5e |
badargs.diagnose (getrlimit, "(int)")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- it returns a PosixRlimit:
|
|
Packit |
437b5e |
expect (prototype (getrlimit (resource.RLIMIT_AS))).to_be "PosixRlimit"
|
|
Packit |
437b5e |
- it fetches resource limits for a process:
|
|
Packit |
437b5e |
for _, rc in pairs {"RLIMIT_CORE", "RLIMIT_CPU", "RLIMIT_DATA", "RLIMIT_FSIZE",
|
|
Packit |
437b5e |
"RLIMIT_NOFILE", "RLIMIT_STACK", "RLIMIT_AS"}
|
|
Packit |
437b5e |
do
|
|
Packit |
437b5e |
rlim = getrlimit (resource[rc])
|
|
Packit |
437b5e |
expect (type (rlim.rlim_cur)).to_be "number"
|
|
Packit |
437b5e |
expect (type (rlim.rlim_max)).to_be "number"
|
|
Packit |
437b5e |
end
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe setrlimit:
|
|
Packit |
437b5e |
- before:
|
|
Packit |
437b5e |
setrlimit, typeerrors = init (resource, "setrlimit")
|
|
Packit |
437b5e |
getrlimit = resource.getrlimit
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- context with bad arguments: |
|
|
Packit |
437b5e |
badargs.diagnose (setrlimit, "(int, table)")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
examples {
|
|
Packit |
437b5e |
["context diagnosing rlimit table fields"] = {
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
["it diagnoses argument #2 missing rlim_cur field"] = function ()
|
|
Packit |
437b5e |
expect (setrlimit (-1, {})).to_raise.
|
|
Packit |
437b5e |
any_of (typeerrors (2, "number", "rlim_cur", "no value"))
|
|
Packit |
437b5e |
end
|
|
Packit |
437b5e |
},
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
["it diagnoses argument #2 rlim_cur field type not int"] = function ()
|
|
Packit |
437b5e |
expect (setrlimit (-1, {rlim_cur = false})).to_raise.
|
|
Packit |
437b5e |
any_of (typeerrors (2, "number", "rlim_cur", "boolean"))
|
|
Packit |
437b5e |
end
|
|
Packit |
437b5e |
},
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
["it diagnoses argument #2 missing rlim_max field"] = function ()
|
|
Packit |
437b5e |
expect (setrlimit (-1, {rlim_cur = -1})).to_raise.
|
|
Packit |
437b5e |
any_of (typeerrors (2, "number", "rlim_max", "no value"))
|
|
Packit |
437b5e |
end
|
|
Packit |
437b5e |
},
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
["it diagnoses argument #2 rlim_max field type not int"] = function ()
|
|
Packit |
437b5e |
expect (setrlimit (-1, {rlim_cur = -1, rlim_max = false})).to_raise.
|
|
Packit |
437b5e |
any_of (typeerrors (2, "number", "rlim_max", "boolean"))
|
|
Packit |
437b5e |
end
|
|
Packit |
437b5e |
},
|
|
Packit |
437b5e |
{
|
|
Packit |
437b5e |
["it diagnoses argument #2 spurious fields"] = function ()
|
|
Packit |
437b5e |
expect (setrlimit (-1, {rlim_cur = -1, rlim_max = -1, bogus = false})).
|
|
Packit |
437b5e |
to_raise.any_of (typeerrors (2, nil, "bogus"))
|
|
Packit |
437b5e |
end
|
|
Packit |
437b5e |
},
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
}
|
|
Packit |
437b5e |
- it accepts PosixRlimit argument:
|
|
Packit |
437b5e |
pending "requires elevated privileges"
|
|
Packit |
437b5e |
for _, rc in pairs {"RLIMIT_CORE", "RLIMIT_CPU", "RLIMIT_DATA", "RLIMIT_FSIZE",
|
|
Packit |
437b5e |
"RLIMIT_NOFILE", "RLIMIT_STACK", "RLIMIT_AS"}
|
|
Packit |
437b5e |
do
|
|
Packit |
437b5e |
rlim = getrlimit (resource[rc])
|
|
Packit |
437b5e |
expect (setrlimit (resource[rc], rlim)).to_be (0)
|
|
Packit |
437b5e |
end
|