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 } ;
2
2
use nix:: mqueue:: { O_CREAT , O_WRONLY , O_RDONLY } ;
3
3
use nix:: mqueue:: MqAttr ;
4
4
use nix:: sys:: stat:: { S_IWUSR , S_IRUSR , S_IRGRP , S_IROTH } ;
@@ -9,11 +9,11 @@ use libc::c_long;
9
9
use nix:: unistd:: { fork, read, write, pipe} ;
10
10
use nix:: unistd:: Fork :: { Child , Parent } ;
11
11
use nix:: sys:: wait:: * ;
12
-
13
-
12
+ use nix :: errno :: Errno :: * ;
13
+ use nix :: Error :: Sys ;
14
14
15
15
#[ test]
16
- fn mq_send_and_receive ( ) {
16
+ fn test_mq_send_and_receive ( ) {
17
17
18
18
const MSG_SIZE : c_long = 32 ;
19
19
let attr = MqAttr :: new ( 0 , 10 , MSG_SIZE , 0 ) ;
@@ -53,7 +53,7 @@ fn mq_send_and_receive() {
53
53
54
54
55
55
#[ test]
56
- fn mq_get_attr ( ) {
56
+ fn test_mq_get_attr ( ) {
57
57
const MSG_SIZE : c_long = 32 ;
58
58
let initial_attr = MqAttr :: new ( 0 , 10 , MSG_SIZE , 0 ) ;
59
59
let mq_name = & CString :: new ( "/attr_test_get_attr" . as_bytes ( ) . as_ref ( ) ) . unwrap ( ) ;
@@ -62,3 +62,23 @@ fn mq_get_attr() {
62
62
assert ! ( read_attr. unwrap( ) == initial_attr) ;
63
63
mq_close ( mqd) . unwrap ( ) ;
64
64
}
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