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