2 # -*- coding: utf-8 -*-
5 from nepi.util import server
14 class ServerTestCase(unittest.TestCase):
16 self.root_dir = tempfile.mkdtemp()
18 def test_server(self):
19 s = server.Server(self.root_dir)
21 c = server.Client(self.root_dir)
23 reply = c.read_reply()
24 self.assertEqual(reply, "Reply to: Hola")
26 reply = c.read_reply()
27 self.assertEqual(reply, "Stopping server")
29 def test_server_reconnect(self):
30 s = server.Server(self.root_dir)
32 c = server.Client(self.root_dir)
35 reply = c.read_reply()
36 self.assertEqual(reply, "Reply to: Hola")
42 c = server.Client(self.root_dir)
44 reply = c.read_reply()
45 self.assertEqual(reply, "Reply to: Hola")
48 reply = c.read_reply()
49 self.assertEqual(reply, "Stopping server")
51 def test_server_auto_reconnect(self):
52 s = server.Server(self.root_dir)
54 c = server.Client(self.root_dir)
57 reply = c.read_reply()
58 self.assertEqual(reply, "Reply to: Hola")
60 # purposedly break the connection
61 c._process.stdin.close()
62 c._process.stdout.close()
63 c._process.stderr.close()
65 # assert that the communication works (possible with auto-reconnection)
67 reply = c.read_reply()
68 self.assertEqual(reply, "Reply to: Hola")
71 reply = c.read_reply()
72 self.assertEqual(reply, "Stopping server")
74 def test_server_long_message(self):
75 s = server.Server(self.root_dir)
77 c = server.Client(self.root_dir)
80 reply = c.read_reply()
81 self.assertEqual(reply, ("Reply to: "+msg))
83 reply = c.read_reply()
84 self.assertEqual(reply, "Stopping server")
86 def test_ssh_server(self):
87 env = test_util.test_environment()
88 user = getpass.getuser()
90 python_code = "from nepi.util import server;s=server.Server('%s');\
91 s.run()" % self.root_dir
92 server.popen_ssh_subprocess(python_code, host = "localhost",
93 port = env.port, user = user, agent = True)
94 c = server.Client(self.root_dir, host = "localhost", port = env.port,
95 user = user, agent = True)
97 reply = c.read_reply()
98 self.assertEqual(reply, "Reply to: Hola")
100 reply = c.read_reply()
101 self.assertEqual(reply, "Stopping server")
103 def test_ssh_server_reconnect(self):
104 env = test_util.test_environment()
105 user = getpass.getuser()
107 python_code = "from nepi.util import server;s=server.Server('%s');\
108 s.run()" % self.root_dir
109 server.popen_ssh_subprocess(python_code, host = "localhost",
110 port = env.port, user = user, agent = True)
112 c = server.Client(self.root_dir, host = "localhost", port = env.port,
113 user = user, agent = True)
116 reply = c.read_reply()
117 self.assertEqual(reply, "Reply to: Hola")
123 c = server.Client(self.root_dir, host = "localhost", port = env.port,
124 user = user, agent = True)
127 reply = c.read_reply()
128 self.assertEqual(reply, "Reply to: Hola")
131 reply = c.read_reply()
132 self.assertEqual(reply, "Stopping server")
134 def test_ssh_server_auto_reconnect(self):
135 env = test_util.test_environment()
136 user = getpass.getuser()
138 python_code = "from nepi.util import server;s=server.Server('%s');\
139 s.run()" % self.root_dir
140 server.popen_ssh_subprocess(python_code, host = "localhost",
141 port = env.port, user = user, agent = True)
143 c = server.Client(self.root_dir, host = "localhost", port = env.port,
144 user = user, agent = True)
147 reply = c.read_reply()
148 self.assertEqual(reply, "Reply to: Hola")
150 # purposedly break the connection
151 c._process.stdin.close()
152 c._process.stdout.close()
153 c._process.stderr.close()
155 # assert that the communication works (possible with auto-reconnection)
157 reply = c.read_reply()
158 self.assertEqual(reply, "Reply to: Hola")
161 reply = c.read_reply()
162 self.assertEqual(reply, "Stopping server")
166 shutil.rmtree(self.root_dir)
170 shutil.rmtree(self.root_dir)
172 if __name__ == '__main__':