|
Packit |
437b5e |
specify posix.sys.msg:
|
|
Packit |
437b5e |
- before:
|
|
Packit |
437b5e |
errno = require "posix.errno"
|
|
Packit |
437b5e |
msg = require "posix.sys.msg"
|
|
Packit |
437b5e |
st = require "posix.sys.stat"
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
EEXIST = errno.EEXIST
|
|
Packit |
437b5e |
msgget, msgsnd, msgrcv = msg.msgget, msg.msgsnd, msg.msgrcv
|
|
Packit |
437b5e |
IPC_CREAT, IPC_EXCL = msg.IPC_CREAT, msg.IPC_EXCL
|
|
Packit |
437b5e |
S_IRWXU, S_IRWXG, S_IRWXO = st.S_IRWXU, st.S_IRWXG, st.S_IRWXO
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
mode = bor (S_IRWXU, S_IRWXG, S_IRWXO)
|
|
Packit |
437b5e |
mq, err, errnum = msgget (100, bor (IPC_CREAT, IPC_EXCL, mode))
|
|
Packit |
437b5e |
if errnum == EEXIST then
|
|
Packit |
437b5e |
mq, err = msgget (100, mode)
|
|
Packit |
437b5e |
end
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
type = 42
|
|
Packit |
437b5e |
data = "Answer to the Ultimate Question of Life"
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe msgget:
|
|
Packit |
437b5e |
- context with bad arguments:
|
|
Packit |
437b5e |
badargs.diagnose (msgget, "(int, ?int)")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- it creates a queue:
|
|
Packit |
437b5e |
expect (mq).not_to_be (nil)
|
|
Packit |
437b5e |
expect (err).to_be (nil)
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe msgsnd:
|
|
Packit |
437b5e |
- context with bad arguments:
|
|
Packit |
437b5e |
badargs.diagnose (msgsnd, "(int, int, string, ?int)")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- it sends a message:
|
|
Packit |
437b5e |
ok, err = msgsnd (mq, type, data)
|
|
Packit |
437b5e |
expect (ok).not_to_be (err)
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- describe msgrcv:
|
|
Packit |
437b5e |
- context with bad arguments:
|
|
Packit |
437b5e |
badargs.diagnose (msgrcv, "(int, int, ?int, ?int)")
|
|
Packit |
437b5e |
|
|
Packit |
437b5e |
- it receives a message:
|
|
Packit |
437b5e |
expect ({msgrcv (mq, 128)}).to_equal {type, data, nil}
|