jadmanski | d5ab8c5 | 2008-12-03 16:27:07 +0000 | [diff] [blame] | 1 | import os |
Alex Miller | 45554f3 | 2013-08-13 16:48:29 -0700 | [diff] [blame] | 2 | import logging |
jadmanski | d5ab8c5 | 2008-12-03 16:27:07 +0000 | [diff] [blame] | 3 | |
| 4 | |
| 5 | class PidFileManager(object): |
| 6 | def __init__(self, label, results_dir): |
| 7 | self.path = os.path.join(results_dir, ".%s_execute" % label) |
| 8 | self.pid_file = None |
| 9 | self.num_tests_failed = 0 |
| 10 | |
| 11 | |
| 12 | def open_file(self): |
| 13 | self.pid_file = open(self.path, "w") |
| 14 | self.pid_file.write("%s\n" % os.getpid()) |
| 15 | self.pid_file.flush() |
Alex Miller | 45554f3 | 2013-08-13 16:48:29 -0700 | [diff] [blame] | 16 | logging.info("Logged pid %s to %s", os.getpid(), self.path) |
jadmanski | d5ab8c5 | 2008-12-03 16:27:07 +0000 | [diff] [blame] | 17 | |
| 18 | |
| 19 | def close_file(self, exit_code, signal_code=0): |
| 20 | if not self.pid_file: |
| 21 | return |
mbligh | 862c406 | 2009-03-12 00:27:12 +0000 | [diff] [blame] | 22 | pid_file = self.pid_file |
jadmanski | e0dffc3 | 2008-12-15 17:30:30 +0000 | [diff] [blame] | 23 | self.pid_file = None |
mbligh | 862c406 | 2009-03-12 00:27:12 +0000 | [diff] [blame] | 24 | encoded_exit_code = ((exit_code & 0xFF) << 8) | (signal_code & 0xFF) |
| 25 | pid_file.write("%s\n" % encoded_exit_code) |
| 26 | pid_file.write("%s\n" % self.num_tests_failed) |
| 27 | pid_file.close() |