2 # -*- coding: utf-8 -*-
5 from nepi.util import server
13 class ServerTestCase(unittest.TestCase):
15 self.root_dir = tempfile.mkdtemp()
17 def test_server(self):
18 s = server.Server(self.root_dir)
20 c = server.Client(self.root_dir)
22 reply = c.read_reply()
23 self.assertEqual(reply, "Reply to: Hola")
25 reply = c.read_reply()
26 self.assertEqual(reply, "Stopping server")
28 def test_server_reconnect(self):
29 s = server.Server(self.root_dir)
31 c = server.Client(self.root_dir)
34 reply = c.read_reply()
35 self.assertEqual(reply, "Reply to: Hola")
41 c = server.Client(self.root_dir)
43 reply = c.read_reply()
44 self.assertEqual(reply, "Reply to: Hola")
47 reply = c.read_reply()
48 self.assertEqual(reply, "Stopping server")
50 def test_server_auto_reconnect(self):
51 s = server.Server(self.root_dir)
53 c = server.Client(self.root_dir)
56 reply = c.read_reply()
57 self.assertEqual(reply, "Reply to: Hola")
59 # purposedly break the connection
60 c._process.stdin.close()
61 c._process.stdout.close()
62 c._process.stderr.close()
64 # assert that the communication works (possible with auto-reconnection)
66 reply = c.read_reply()
67 self.assertEqual(reply, "Reply to: Hola")
70 reply = c.read_reply()
71 self.assertEqual(reply, "Stopping server")
73 def test_server_long_message(self):
74 s = server.Server(self.root_dir)
76 c = server.Client(self.root_dir)
79 reply = c.read_reply()
80 self.assertEqual(reply, ("Reply to: "+msg))
82 reply = c.read_reply()
83 self.assertEqual(reply, "Stopping server")
85 def test_ssh_server(self):
86 env = test_util.test_environment()
87 user = getpass.getuser()
89 python_code = "from nepi.util import server;s=server.Server('%s');\
90 s.run()" % self.root_dir
91 server.popen_ssh_subprocess(python_code, host = "localhost",
92 port = env.port, user = user, agent = True)
93 c = server.Client(self.root_dir, host = "localhost", port = env.port,
94 user = user, agent = True)
96 reply = c.read_reply()
97 self.assertEqual(reply, "Reply to: Hola")
99 reply = c.read_reply()
100 self.assertEqual(reply, "Stopping server")
102 def test_ssh_server_reconnect(self):
103 env = test_util.test_environment()
104 user = getpass.getuser()
106 python_code = "from nepi.util import server;s=server.Server('%s');\
107 s.run()" % self.root_dir
108 server.popen_ssh_subprocess(python_code, host = "localhost",
109 port = env.port, user = user, agent = True)
111 c = server.Client(self.root_dir, host = "localhost", port = env.port,
112 user = user, agent = True)
115 reply = c.read_reply()
116 self.assertEqual(reply, "Reply to: Hola")
122 c = server.Client(self.root_dir, host = "localhost", port = env.port,
123 user = user, agent = True)
126 reply = c.read_reply()
127 self.assertEqual(reply, "Reply to: Hola")
130 reply = c.read_reply()
131 self.assertEqual(reply, "Stopping server")
133 def test_ssh_server_auto_reconnect(self):
134 env = test_util.test_environment()
135 user = getpass.getuser()
137 python_code = "from nepi.util import server;s=server.Server('%s');\
138 s.run()" % self.root_dir
139 server.popen_ssh_subprocess(python_code, host = "localhost",
140 port = env.port, user = user, agent = True)
142 c = server.Client(self.root_dir, host = "localhost", port = env.port,
143 user = user, agent = True)
146 reply = c.read_reply()
147 self.assertEqual(reply, "Reply to: Hola")
149 # purposedly break the connection
150 c._process.stdin.close()
151 c._process.stdout.close()
152 c._process.stderr.close()
154 # assert that the communication works (possible with auto-reconnection)
156 reply = c.read_reply()
157 self.assertEqual(reply, "Reply to: Hola")
160 reply = c.read_reply()
161 self.assertEqual(reply, "Stopping server")
164 shutil.rmtree(self.root_dir)
166 if __name__ == '__main__':