summaryrefslogtreecommitdiff
path: root/test/service.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/service.py')
-rw-r--r--test/service.py20
1 files changed, 15 insertions, 5 deletions
diff --git a/test/service.py b/test/service.py
index 47fb846..045d780 100644
--- a/test/service.py
+++ b/test/service.py
@@ -45,6 +45,11 @@ class SpawnedService(threading.Thread):
self.child = None
self.alive = False
self.daemon = True
+ log.info("Created service for command:")
+ log.info(" "+' '.join(self.args))
+ log.debug("With environment:")
+ for key, value in self.env.items():
+ log.debug(" {key}={value}".format(key=key, value=value))
def _spawn(self):
if self.alive: return
@@ -57,7 +62,7 @@ class SpawnedService(threading.Thread):
bufsize=1,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
- self.alive = True
+ self.alive = self.child.poll() is None
def _despawn(self):
if self.child.poll() is None:
@@ -83,12 +88,14 @@ class SpawnedService(threading.Thread):
raise
if self.child.stdout in rds:
- line = self.child.stdout.readline()
- self.captured_stdout.append(line.decode('utf-8').rstrip())
+ line = self.child.stdout.readline().decode('utf-8').rstrip()
+ if line:
+ self.captured_stdout.append(line)
if self.child.stderr in rds:
- line = self.child.stderr.readline()
- self.captured_stderr.append(line.decode('utf-8').rstrip())
+ line = self.child.stderr.readline().decode('utf-8').rstrip()
+ if line:
+ self.captured_stderr.append(line)
if self.child.poll() is not None:
self.dump_logs()
@@ -105,6 +112,9 @@ class SpawnedService(threading.Thread):
def wait_for(self, pattern, timeout=30):
start = time.time()
while True:
+ if not self.is_alive():
+ raise RuntimeError("Child thread died already.")
+
elapsed = time.time() - start
if elapsed >= timeout:
log.error("Waiting for %r timed out after %d seconds", pattern, timeout)