Ticket #12: proxy reconnection
[nepi.git] / test / util / server.py
index da2694d..a70e449 100755 (executable)
@@ -25,6 +25,28 @@ class ServerTestCase(unittest.TestCase):
         reply = c.read_reply()
         self.assertTrue(reply == "Stopping server")
 
+    def test_server_reconnect(self):
+        s = server.Server(self.root_dir)
+        s.run()
+        c = server.Client(self.root_dir)
+        
+        c.send_msg("Hola")
+        reply = c.read_reply()
+        self.assertTrue(reply == "Reply to: Hola")
+        
+        # disconnect
+        del c
+        
+        # reconnect
+        c = server.Client(self.root_dir)
+        c.send_msg("Hola")
+        reply = c.read_reply()
+        self.assertTrue(reply == "Reply to: Hola")
+                
+        c.send_stop()
+        reply = c.read_reply()
+        self.assertTrue(reply == "Stopping server")
+
     def test_server_long_message(self):
         s = server.Server(self.root_dir)
         s.run()
@@ -54,6 +76,37 @@ class ServerTestCase(unittest.TestCase):
         reply = c.read_reply()
         self.assertTrue(reply == "Stopping server")
 
+    def test_ssh_server_reconnect(self):
+        env = test_util.test_environment()
+        user = getpass.getuser()
+        # launch server
+        python_code = "from nepi.util import server;s=server.Server('%s');\
+                s.run()" % self.root_dir
+        server.popen_ssh_subprocess(python_code, host = "localhost", 
+                port = env.port, user = user, agent = True)
+        
+        c = server.Client(self.root_dir, host = "localhost", port = env.port,
+                user = user, agent = True)
+                
+        c.send_msg("Hola")
+        reply = c.read_reply()
+        self.assertTrue(reply == "Reply to: Hola")
+        
+        # disconnect
+        del c
+        
+        # reconnect
+        c = server.Client(self.root_dir, host = "localhost", port = env.port,
+                user = user, agent = True)
+                
+        c.send_msg("Hola")
+        reply = c.read_reply()
+        self.assertTrue(reply == "Reply to: Hola")
+        
+        c.send_stop()
+        reply = c.read_reply()
+        self.assertTrue(reply == "Stopping server")
+
     def tearDown(self):
         shutil.rmtree(self.root_dir)