Selaa lähdekoodia

Fix a RPC client test error when the connection is closed during sending.

We do not know anything about stream errors, so we cannot deduce whether
the stream was closed.
Mathias Gottschlag 4 vuotta sitten
vanhempi
commit
8f33df9a67
1 muutettua tiedostoa jossa 12 lisäystä ja 2 poistoa
  1. 12
    2
      src/network/client.rs

+ 12
- 2
src/network/client.rs Näytä tiedosto

@@ -142,6 +142,12 @@ where
142 142
         }
143 143
     }
144 144
 
145
+    /// Sends a packet.
146
+    ///
147
+    /// # Errors
148
+    ///
149
+    /// If the connection is closed, the function does *not* return `RPCError::Closed`, but rather
150
+    /// returns the corresponding stream error.
145 151
     async fn send_packet(&mut self, call: CallData<PacketType, ErrorType>) {
146 152
         // Add an ID for the outgoing packet.
147 153
         let id = self.free_ids.alloc();
@@ -317,7 +323,7 @@ pub enum RPCError<StreamError> {
317 323
 #[cfg(test)]
318 324
 mod tests {
319 325
     use super::*;
320
-    use crate::network::test_utils::{panic_after, Pipe};
326
+    use crate::network::test_utils::{panic_after, Pipe, PipeError};
321 327
     use crate::network::Packet;
322 328
 
323 329
     type TestPayload = u32;
@@ -389,7 +395,11 @@ mod tests {
389 395
             // Client task.
390 396
             let tasks = (
391 397
                 tokio::spawn(async move {
392
-                    assert_eq!(client.call(42).await, Err(RPCError::Closed));
398
+                    let status = client.call(42).await;
399
+                    assert!(
400
+                        status == Err(RPCError::Closed)
401
+                            || status == Err(RPCError::Stream(PipeError::Closed))
402
+                    );
393 403
                 }),
394 404
                 tokio::spawn(async move {
395 405
                     drop(pipe2);

Loading…
Peruuta
Tallenna