Skip to content

Commit bd265fd

Browse files
Markus Jaiscarllerche
Markus Jais
authored andcommitted
renamed test methods for mqueue and added mq_unlink
1 parent 7f73ce3 commit bd265fd

File tree

2 files changed

+32
-5
lines changed

2 files changed

+32
-5
lines changed

src/mqueue.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ mod ffi {
4242

4343
pub fn mq_close (mqd: MQd) -> c_int;
4444

45+
pub fn mq_unlink(name: *const c_char) -> c_int;
46+
4547
pub fn mq_receive (mqd: MQd, msg_ptr: *const c_char, msg_len: size_t, msq_prio: *const c_uint) -> ssize_t;
4648

4749
pub fn mq_send (mqd: MQd, msg_ptr: *const c_char, msg_len: size_t, msq_prio: c_uint) -> c_int;
@@ -78,6 +80,11 @@ pub fn mq_open(name: &CString, oflag: MQ_OFlag, mode: Mode, attr: &MqAttr) -> Re
7880
Ok(res)
7981
}
8082

83+
pub fn mq_unlink(name: &CString) -> Result<()> {
84+
let res = unsafe { ffi::mq_unlink(name.as_ptr()) };
85+
from_ffi(res)
86+
}
87+
8188
pub fn mq_close(mqdes: MQd) -> Result<()> {
8289
let res = unsafe { ffi::mq_close(mqdes) };
8390
from_ffi(res)

test/test_mq.rs

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use nix::mqueue::{mq_open, mq_close, mq_send, mq_receive, mq_getattr};
1+
use nix::mqueue::{mq_open, mq_close, mq_send, mq_receive, mq_getattr, mq_unlink};
22
use nix::mqueue::{O_CREAT, O_WRONLY, O_RDONLY};
33
use nix::mqueue::MqAttr;
44
use nix::sys::stat::{S_IWUSR, S_IRUSR, S_IRGRP, S_IROTH};
@@ -9,11 +9,11 @@ use libc::c_long;
99
use nix::unistd::{fork, read, write, pipe};
1010
use nix::unistd::Fork::{Child, Parent};
1111
use nix::sys::wait::*;
12-
13-
12+
use nix::errno::Errno::*;
13+
use nix::Error::Sys;
1414

1515
#[test]
16-
fn mq_send_and_receive() {
16+
fn test_mq_send_and_receive() {
1717

1818
const MSG_SIZE: c_long = 32;
1919
let attr = MqAttr::new(0, 10, MSG_SIZE, 0);
@@ -53,7 +53,7 @@ fn mq_send_and_receive() {
5353

5454

5555
#[test]
56-
fn mq_get_attr() {
56+
fn test_mq_get_attr() {
5757
const MSG_SIZE: c_long = 32;
5858
let initial_attr = MqAttr::new(0, 10, MSG_SIZE, 0);
5959
let mq_name = &CString::new("/attr_test_get_attr".as_bytes().as_ref()).unwrap();
@@ -62,3 +62,23 @@ fn mq_get_attr() {
6262
assert!(read_attr.unwrap() == initial_attr);
6363
mq_close(mqd).unwrap();
6464
}
65+
66+
#[test]
67+
fn test_mq_unlink() {
68+
const MSG_SIZE: c_long = 32;
69+
let initial_attr = MqAttr::new(0, 10, MSG_SIZE, 0);
70+
let mq_name_opened = &CString::new("/mq_unlink_test".as_bytes().as_ref()).unwrap();
71+
let mq_name_not_opened = &CString::new("/mq_unlink_test".as_bytes().as_ref()).unwrap();
72+
let mqd = mq_open(mq_name_opened, O_CREAT | O_WRONLY, S_IWUSR | S_IRUSR | S_IRGRP | S_IROTH, &initial_attr).unwrap();
73+
74+
let res_unlink = mq_unlink(mq_name_opened);
75+
assert!(res_unlink == Ok(()) );
76+
77+
let res_unlink_not_opened = mq_unlink(mq_name_not_opened);
78+
assert!(res_unlink_not_opened == Err(Sys(ENOENT)) );
79+
80+
mq_close(mqd).unwrap();
81+
let res_unlink_after_close = mq_unlink(mq_name_opened);
82+
assert!(res_unlink_after_close == Err(Sys(ENOENT)) );
83+
84+
}

0 commit comments

Comments
 (0)