blob: ab804b9d60be7e530dc070cef41071360deba877 [file] [log] [blame]
jadmanskid5ab8c52008-12-03 16:27:07 +00001import os
Alex Miller45554f32013-08-13 16:48:29 -07002import logging
jadmanskid5ab8c52008-12-03 16:27:07 +00003
4
5class 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 Miller45554f32013-08-13 16:48:29 -070016 logging.info("Logged pid %s to %s", os.getpid(), self.path)
jadmanskid5ab8c52008-12-03 16:27:07 +000017
18
19 def close_file(self, exit_code, signal_code=0):
20 if not self.pid_file:
21 return
mbligh862c4062009-03-12 00:27:12 +000022 pid_file = self.pid_file
jadmanskie0dffc32008-12-15 17:30:30 +000023 self.pid_file = None
mbligh862c4062009-03-12 00:27:12 +000024 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()