Forráskód Böngészése

Take over the server in public interface.

Jing Yang 5 éve
szülő
commit
a305f0a292
3 módosított fájl, 15 hozzáadás és 15 törlés
  1. 3 3
      src/network.rs
  2. 10 8
      src/server.rs
  3. 2 4
      src/test_utils/junk_server.rs

+ 3 - 3
src/network.rs

@@ -79,9 +79,9 @@ impl Network {
     pub fn add_server<S: Into<ServerIdentifier>>(
         &mut self,
         server_name: S,
-        server: Arc<Server>,
+        server: Server,
     ) {
-        self.servers.insert(server_name.into(), server);
+        self.servers.insert(server_name.into(), Arc::new(server));
     }
 
     pub fn remove_server<S: AsRef<str>>(&mut self, server_name: &S) {
@@ -399,7 +399,7 @@ mod tests {
                 .insert(client.into(), (enabled, server.into()));
             network
                 .servers
-                .insert(TEST_SERVER.into(), make_test_server());
+                .insert(TEST_SERVER.into(), Arc::new(make_test_server()));
             network.request_bus.clone()
         };
 

+ 10 - 8
src/server.rs

@@ -138,19 +138,21 @@ mod tests {
             .len()
     }
 
+    fn make_arc_test_server() -> Arc<Server> {
+        Arc::new(make_test_server())
+    }
+
     #[test]
     fn test_register_rpc_handler() -> Result<()> {
         let server = make_test_server();
 
-        assert_eq!(2, rpc_handlers_len(server.as_ref()));
+        assert_eq!(2, rpc_handlers_len(&server));
         Ok(())
     }
 
     #[test]
     fn test_register_rpc_handler_failure() -> Result<()> {
         let mut server = make_test_server();
-        let server = std::sync::Arc::get_mut(&mut server)
-            .expect("Server should only be held by the current thread");
 
         let result = server.register_rpc_handler(
             "echo".to_string(),
@@ -158,13 +160,13 @@ mod tests {
         );
 
         assert!(result.is_err());
-        assert_eq!(2, rpc_handlers_len(server));
+        assert_eq!(2, rpc_handlers_len(&server));
         Ok(())
     }
 
     #[test]
     fn test_serve_rpc() -> Result<()> {
-        let server = make_test_server();
+        let server = make_arc_test_server();
 
         let reply = server.dispatch(
             "echo".to_string(),
@@ -178,7 +180,7 @@ mod tests {
 
     #[test]
     fn test_rpc_not_found() -> Result<()> {
-        let server = make_test_server();
+        let server = make_arc_test_server();
 
         let reply = server.dispatch("acorn".to_string(), RequestMessage::new());
         match futures::executor::block_on(reply) {
@@ -190,7 +192,7 @@ mod tests {
 
     #[test]
     fn test_rpc_error() -> Result<()> {
-        let server = make_test_server();
+        let server = make_arc_test_server();
 
         let reply = futures::executor::block_on(
             server.dispatch(Aborting.name(), RequestMessage::new()),
@@ -209,7 +211,7 @@ mod tests {
 
     #[test]
     fn test_server_survives_3_rpc_errors() -> Result<()> {
-        let server = make_test_server();
+        let server = make_arc_test_server();
 
         // TODO(ditsing): server hangs after the 4th RPC error.
         for _ in 0..3 {

+ 2 - 4
src/test_utils/junk_server.rs

@@ -1,5 +1,3 @@
-use std::sync::Arc;
-
 use crate::{server::RpcHandler, ReplyMessage, RequestMessage, Server};
 
 pub const TEST_SERVER: &str = &"test-server";
@@ -43,7 +41,7 @@ impl RpcHandler for AbortingRpcHandler {
     }
 }
 
-pub fn make_test_server() -> Arc<Server> {
+pub fn make_test_server() -> Server {
     let mut server = Server::make_server(TEST_SERVER);
     server
         .register_rpc_handler(
@@ -57,5 +55,5 @@ pub fn make_test_server() -> Arc<Server> {
             Box::new(AbortingRpcHandler {}),
         )
         .expect("Registering the second RPC handler should not fail");
-    Arc::new(server)
+    server
 }