diff options
Diffstat (limited to 'test/service.py')
-rw-r--r-- | test/service.py | 20 |
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) |