From b6301421984603f77d2443af4e2f61563b6161dd Mon Sep 17 00:00:00 2001 From: Alina Quereilhac Date: Thu, 10 Mar 2011 16:27:10 +0100 Subject: [PATCH] test case added for server.py --- src/nepi/util/server.py | 34 ++++++++++++++++++++++------------ test/util/server.py | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 12 deletions(-) create mode 100755 test/util/server.py diff --git a/src/nepi/util/server.py b/src/nepi/util/server.py index 442471b6..7bcb8ea8 100644 --- a/src/nepi/util/server.py +++ b/src/nepi/util/server.py @@ -85,11 +85,11 @@ class Server(object): if msg == STOP_MSG: self._stop = True - reply = "Stopping server" + reply = self.stop_action() self.send_reply(conn, reply) break else: - reply = "Replying to %s" % msg + reply = self.reply_action(msg) self.send_reply(conn, reply) conn.close() @@ -109,6 +109,12 @@ class Server(object): except e: sys.stderr.write("ERROR: %s\n" % str(e)) + def stop_action(self): + return "Stopping server" + + def reply_action(self, msg): + return "Reply to: %s" % msg + class Forwarder(object): def __init__(self, root_dir = "."): self._ctrl_sock = None @@ -120,15 +126,16 @@ class Forwarder(object): while not self._stop: data = self.read_data() self.send_to_server(data) - reply = self.recv_from_server() - self.write_reply(reply) + data = self.recv_from_server() + self.write_data(data) self.disconnect() def read_data(self): return sys.stdin.readline() - def write_reply(self, reply): - sys.stdout.write("%s\n" % reply) + def write_data(self, data): + sys.stdout.write(data) + sys.stdout.flush() def send_to_server(self, data): try: @@ -145,10 +152,7 @@ class Forwarder(object): self._stop = True def recv_from_server(self): - data = self._ctrl_sock.recv(1024) - encoded = data.rstrip() - reply = base64.b64decode(encoded) - return reply + return self._ctrl_sock.recv(1024) def connect(self): self.disconnect() @@ -170,13 +174,19 @@ class Client(object): c.forward()" % root_dir ], stdin = subprocess.PIPE, + stdout = subprocess.PIPE, env = os.environ) def send_msg(self, msg): encoded = base64.b64encode(msg) - self._process.stdin.write("%s\n" % encoded) + data = "%s\n" % encoded + self._process.stdin.write(data) def send_stop(self): self.send_msg(STOP_MSG) - self._process.wait() + + def read_reply(self): + data = self._process.stdout.readline() + encoded = data.rstrip() + return base64.b64decode(encoded) diff --git a/test/util/server.py b/test/util/server.py new file mode 100755 index 00000000..4e0fbaff --- /dev/null +++ b/test/util/server.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from nepi.util import server +import os +import shutil +import sys +import unittest +import uuid + +class ServerTestCase(unittest.TestCase): + def setUp(self): + self._root_dir = os.path.join(os.getenv("HOME"), ".nepi", + str(uuid.uuid1())) + os.makedirs(self._root_dir) + + def test_server(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") + c.send_stop() + reply = c.read_reply() + self.assertTrue(reply == "Stopping server") + + def tearDown(self): + shutil.rmtree(self._root_dir) + +if __name__ == '__main__': + unittest.main() + -- 2.47.0