Procházet zdrojové kódy

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 před 4 roky
rodič
revize
8f33df9a67
1 změnil soubory, kde provedl 12 přidání a 2 odebrání
  1. 12
    2
      src/network/client.rs

+ 12
- 2
src/network/client.rs Zobrazit soubor

@@ -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…
Zrušit
Uložit