Skip to content

Commit e37af2a

Browse files
Rpc reply test case in the reactor
1 parent 4e37174 commit e37af2a

File tree

1 file changed

+24
-9
lines changed

1 file changed

+24
-9
lines changed

src/reactor.rs

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ impl Write for Connection {
216216
/// to mark the responsible `TcpStream` or `Connection`.
217217
///
218218
/// ```notrust
219-
/// reactor_sender.send(Token(1), vec![0, 1, 3, 4]);
219+
/// reactor_sender.send(Message::Rpc(Token(1), vec![0, 1, 3, 4]));
220220
/// ```
221221
pub struct Reactor {
222222
listeners: HashMap<Token, TcpListener>,
@@ -355,21 +355,24 @@ mod tests {
355355
// Establish a local TcpListener.
356356
let addr: SocketAddr = "127.0.0.1:5543".parse().unwrap();
357357
let listener = TcpListener::bind(addr.clone()).unwrap();
358-
let (s, r) = channel();
358+
let (rpc_server_tx, rpc_server_rx) = channel();
359359

360-
sender.send(Message::Bind(listener, addr.clone(), s.clone()));
360+
// Create a new non-blocking tcp server.
361+
sender.send(Message::Bind(listener, addr.clone(), rpc_server_tx.clone()));
361362

362-
// Connect to that socket.
363-
let (rpc_id_tx, rpc_id_rx) = channel();
364-
sender.send(Message::Connect(addr, rpc_id_tx));
365-
let id = match rpc_id_rx.recv().unwrap() {
363+
let (rpc_client_tx, rpc_client_rx) = channel();
364+
365+
sender.send(Message::Connect(addr, rpc_client_tx));
366+
367+
let client_id = match rpc_client_rx.recv().unwrap() {
366368
Dispatch::Id(n) => n,
367369
_ => panic!("Expected to receive the Connection id/token.")
368370
};
369-
sender.send(Message::Rpc(id, b"abc".to_vec()));
371+
372+
sender.send(Message::Rpc(client_id, b"abc".to_vec()));
370373

371374
let server = thread::spawn(move || {
372-
for msg in r.iter() {
375+
for msg in rpc_server_rx.iter() {
373376
match msg {
374377
Dispatch::Data(id, msg) => {
375378
assert_tx.send((id, msg)).expect("Could not assert_tx");
@@ -383,5 +386,17 @@ mod tests {
383386
assert_eq!(new_id, Token(2));
384387
assert_eq!(v.len(), 3);
385388
assert_eq!(v, b"abc");
389+
390+
// Send a "response" back.
391+
sender.send(Message::Rpc(new_id, b"bbb".to_vec()));
392+
393+
394+
match rpc_client_rx.recv().unwrap() {
395+
Dispatch::Data(id, v) => {
396+
assert_eq!(id, client_id);
397+
assert_eq!(v, b"bbb");
398+
},
399+
_ => panic!("Unexpected case.")
400+
}
386401
}
387402
}

0 commit comments

Comments
 (0)