diff options
Diffstat (limited to 'cpp/config/TestUtil.py')
-rw-r--r-- | cpp/config/TestUtil.py | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/cpp/config/TestUtil.py b/cpp/config/TestUtil.py new file mode 100644 index 00000000000..3e692c36426 --- /dev/null +++ b/cpp/config/TestUtil.py @@ -0,0 +1,58 @@ +import sys, os, string + +def start(path): + pipein, pipeout = os.pipe() + pid = os.fork() + if(pid == 0): + os.close(pipein) + os.dup2(pipeout, sys.stdout.fileno()) + os.execv(path, []) + else: + os.close(pipeout) + return os.fdopen(pipein), pid + +pids = [] +def terminate(status): + for pid in pids: + if(os.name == "nt"): + import win32api + handle = win32api.OpenProcess(1, 0, pid) + return (0 != win32api.TerminateProcess(handle, 0)) + else: + os.kill(pid, 9) + sys.exit(status) + +def server(): + print "starting server...", + server, pid = start("./server") + pids.append(pid) + ready = string.strip(server.readline()) + if ready != "ready": + print "failed!" + terminate(0) + else: + print "ok" + +def client(): + print "starting client...", + client, pid = start("./client") + pids.append(pid) + output = client.read() + if not output: + print "failed!" + terminate(0) + else: + print "ok" + print output, + +def collocated(): + print "starting collocated...", + client, pid = start("./collocated") + pids.append(pid) + output = client.read() + if not output: + print "failed!" + terminate(0) + else: + print "ok" + print output, |