1
1
use async_std:: { fs:: remove_file, io:: Result , os:: unix:: net:: UnixListener , prelude:: * , task} ;
2
+ use futures:: future;
2
3
use futures_util:: sink:: SinkExt ;
3
4
use juno:: connection:: { BaseConnection , UnixSocketConnection } ;
4
5
@@ -21,8 +22,9 @@ async fn should_connect_async() -> Result<()> {
21
22
let mut incoming = socket. incoming ( ) ;
22
23
let connection_listener = incoming. next ( ) ;
23
24
24
- let ( ..) = futures :: future:: join ( connection_listener, connection. setup_connection ( ) ) . await ;
25
+ let ( ..) = future:: join ( connection_listener, connection. setup_connection ( ) ) . await ;
25
26
27
+ drop ( socket) ;
26
28
remove_file ( "./temp-1.sock" ) . await ?;
27
29
28
30
Ok ( ( ) )
@@ -42,16 +44,19 @@ async fn should_connect_and_send_data_async() -> Result<()> {
42
44
let mut incoming = socket. incoming ( ) ;
43
45
let connection_listener = incoming. next ( ) ;
44
46
45
- let ( stream, _) =
46
- futures:: future:: join ( connection_listener, connection. setup_connection ( ) ) . await ;
47
-
48
- connection. send ( vec ! [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ] ) . await ;
47
+ let ( stream, _) = future:: join ( connection_listener, connection. setup_connection ( ) ) . await ;
49
48
50
49
let mut read_buffer = [ 0 ; 10 ] ;
51
- stream. unwrap ( ) ?. read ( & mut read_buffer) . await ?;
50
+ let ( _, read_result) = futures:: future:: join (
51
+ connection. send ( vec ! [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ] ) ,
52
+ stream. unwrap ( ) ?. read ( & mut read_buffer) ,
53
+ )
54
+ . await ;
55
+ read_result?;
52
56
53
57
assert_eq ! ( read_buffer. to_vec( ) , vec![ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ] ) ;
54
58
59
+ drop ( socket) ;
55
60
remove_file ( "./temp-2.sock" ) . await ?;
56
61
57
62
Ok ( ( ) )
@@ -71,16 +76,21 @@ async fn should_connect_and_read_data_async() -> Result<()> {
71
76
let mut incoming = socket. incoming ( ) ;
72
77
let connection_listener = incoming. next ( ) ;
73
78
74
- let ( stream, _) =
75
- futures:: future:: join ( connection_listener, connection. setup_connection ( ) ) . await ;
79
+ let ( stream, _) = future:: join ( connection_listener, connection. setup_connection ( ) ) . await ;
80
+
81
+ let write_data = vec ! [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , b'\n' ] ;
82
+ let mut stream = stream. unwrap ( ) ?;
76
83
77
- let write_data = vec ! [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ] ;
78
- stream . unwrap ( ) ? . write_all ( write_data . as_slice ( ) ) . await ?;
84
+ let write_result = stream . write_all ( write_data . as_slice ( ) ) . await ;
85
+ write_result ?;
79
86
80
- let read_buffer = connection. get_data_receiver ( ) . next ( ) . await . unwrap ( ) ;
87
+ let mut receiver = connection. get_data_receiver ( ) ;
88
+ let read_result = receiver. next ( ) . await ;
89
+ let read_buffer = read_result. unwrap ( ) ;
81
90
82
91
assert_eq ! ( read_buffer, vec![ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ] ) ;
83
92
93
+ drop ( socket) ;
84
94
remove_file ( "./temp-3.sock" ) . await ?;
85
95
86
96
Ok ( ( ) )
@@ -100,20 +110,22 @@ async fn should_connect_and_send_data_from_cloned_sender_async() -> Result<()> {
100
110
let mut incoming = socket. incoming ( ) ;
101
111
let connection_listener = incoming. next ( ) ;
102
112
103
- let ( stream, _) =
104
- futures:: future:: join ( connection_listener, connection. setup_connection ( ) ) . await ;
105
-
106
- connection
107
- . clone_write_sender ( )
108
- . send ( vec ! [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ] )
109
- . await
110
- . unwrap ( ) ;
113
+ let ( stream, _) = future:: join ( connection_listener, connection. setup_connection ( ) ) . await ;
111
114
112
115
let mut read_buffer = [ 0 ; 10 ] ;
113
- stream. unwrap ( ) ?. read ( & mut read_buffer) . await ?;
116
+ let ( write_result, read_result) = futures:: future:: join (
117
+ connection
118
+ . clone_write_sender ( )
119
+ . send ( vec ! [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ] ) ,
120
+ stream. unwrap ( ) ?. read ( & mut read_buffer) ,
121
+ )
122
+ . await ;
123
+ write_result. unwrap ( ) ;
124
+ read_result?;
114
125
115
126
assert_eq ! ( read_buffer. to_vec( ) , vec![ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ] ) ;
116
127
128
+ drop ( socket) ;
117
129
remove_file ( "./temp-4.sock" ) . await ?;
118
130
119
131
Ok ( ( ) )
@@ -147,6 +159,7 @@ fn should_clone_write_sender_without_setup_and_panic() {
147
159
connection. clone_write_sender ( ) ;
148
160
}
149
161
162
+ /*
150
163
#[test]
151
164
#[should_panic]
152
165
fn should_setup_connection_twice_and_panic() {
@@ -165,10 +178,12 @@ async fn should_setup_connection_twice_and_panic_async() -> Result<()> {
165
178
// Listen for unix socket connections
166
179
let socket = UnixListener::bind("./temp-5.sock").await?;
167
180
let mut incoming = socket.incoming();
168
- let _ = incoming. next ( ) ;
169
-
170
- connection. setup_connection ( ) . await . unwrap ( ) ;
171
- connection. setup_connection ( ) . await . unwrap ( ) ;
181
+ let (_stream, result) = future::join(incoming.next(), connection.setup_connection()).await;
182
+ result.unwrap();
183
+ let (_, result) = future::join(incoming.next(), connection.setup_connection()).await;
184
+ result.unwrap();
185
+ drop(socket);
172
186
173
187
Ok(())
174
188
}
189
+ */
0 commit comments