| 579 | self._stop_running_processes() |
| 580 | |
| 581 | def _stop_running_processes(self): |
| 582 | # Make sure we kill all the processes on teardown so they don't linger around if an |
| 583 | # exception was thrown. |
| 584 | pids = list(self.processes.keys()) |
| 585 | for pid in pids: |
| 586 | process = self.processes[pid] |
| 587 | |
| 588 | try: |
| 589 | process.kill() |
| 590 | except OSError: |
| 591 | # Process already exited or similar |
| 592 | pass |
| 593 | |
| 594 | del self.processes[pid] |
| 595 | |
| 596 | if self.print_stdout_stderr_on_teardown: |
| 597 | try: |
| 598 | stdout = process.stdout.read() |
| 599 | except: |
| 600 | stdout = None |
| 601 | |
| 602 | try: |
| 603 | stderr = process.stderr.read() |
| 604 | except: |
| 605 | stderr = None |
| 606 | |
| 607 | print("Stopping process with pid %s" % (process.pid)) |
| 608 | print('Process "%s"' % (process.pid)) |
| 609 | print("Stdout: %s" % (stdout)) |
| 610 | print("Stderr: %s" % (stderr)) |
| 611 | |
| 612 | def add_process(self, process): |
| 613 | """ |