diff options
author | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2008-07-04 19:06:59 +0530 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek.chauhan@gmail.com> | 2008-07-04 19:06:59 +0530 |
commit | ba59d9b26ccb62e8aefcc3549a7bf96754c7fa0c (patch) | |
tree | 4c8f1e8f7bb6110abb37a3039a03708cc1689597 | |
parent | - Move running of commands to autotua.daemon (diff) | |
download | autotua-ba59d9b26ccb62e8aefcc3549a7bf96754c7fa0c.tar.gz autotua-ba59d9b26ccb62e8aefcc3549a7bf96754c7fa0c.tar.bz2 autotua-ba59d9b26ccb62e8aefcc3549a7bf96754c7fa0c.zip |
Move jobuild.sh 'ping-pong' code to autotua.daemon
-rw-r--r-- | slave/autotua/daemon/__init__.py | 11 | ||||
-rw-r--r-- | slave/autotua/jobuild/__init__.py | 5 |
2 files changed, 10 insertions, 6 deletions
diff --git a/slave/autotua/daemon/__init__.py b/slave/autotua/daemon/__init__.py index c83cafd..52b971a 100644 --- a/slave/autotua/daemon/__init__.py +++ b/slave/autotua/daemon/__init__.py @@ -10,7 +10,11 @@ import subprocess from .. import const class Spawn(object): - """Spawn a daemonized sub-process in a shell""" + """ + Spawn a daemonized sub-process in a shell + The sub-process must respond to the 'ping\n' + sent to stdin with a 'pong\n' + """ def __init__(self, command, logfile=const.LOGFILE): """ @@ -24,3 +28,8 @@ class Spawn(object): # stdout goes to self.logfile self.command = '%s 3>&2 2>&1 | tee -a \"%s\"' % (command, self.logfile) self.process = subprocess.Popen(self.command, shell=True, stderr=subprocess.PIPE, stdin=subprocess.PIPE) + self.process.stdin.write('ping\n') + response = self.process.stderr.readline() + if not response == 'pong\n': + # FIXME: Custom exceptions + raise 'Communication error: received %s when expecting "pong"' % response diff --git a/slave/autotua/jobuild/__init__.py b/slave/autotua/jobuild/__init__.py index 6831b11..878b573 100644 --- a/slave/autotua/jobuild/__init__.py +++ b/slave/autotua/jobuild/__init__.py @@ -124,10 +124,5 @@ class Processor(object): def _msg(self, msg): proc = daemon.Spawn('\"%s\"/bin/jobuild.sh %s' % (const.AUTOTUA_DIR, msg)) - proc.process.stdin.write('ping\n') - response = proc.process.stderr.readline()[:-1] # Remove trailing newline - if not response == 'pong': - # FIXME: Custom exceptions - raise 'Communication error: received %s when expecting "pong"' % response response = proc.process.stderr.read()[:-1] # Remove trailing newline return response |