4 from sendmail import sendmail
5 from Table import Table
10 def __init__(self, name, method, args, log_filename, fatal = True, mailto = []):
18 self.status = "Not Tested"
21 # transform logfile path into its url path
22 hostname = socket.gethostname()
24 self.update_logfile(log_filename, hostname, port)
26 def update_logfile(self, log_filename, hostname, port):
27 logfile_path = log_filename.replace('/var/log/', '')
28 self.logfile = 'http://%(hostname)s:%(port)s/%(logfile_path)s' % locals()
32 result = self.method(*self.args)
34 self.status = "Passed"
35 for step in self.next_steps:
40 self.status = "Failed"
41 utils.header("%s" % traceback.format_exc())
43 for step in self.next_steps:
48 def notify_contacts(self):
53 subject = "QA Test %s %s" % (self.name, self.status)
56 Hello PlanetLab developer,
58 The test script for your module has %(status)s. Please review this
59 tests log for further details.
63 sendmail(to, subject, body)
65 def get_results(self):
66 (name, result, log) = (self.name, self.status, self.logfile)
68 if result in ['Passed', 'Failed']:
69 body = "%(result)s\t (*) %(name)s %(log)s\n" % locals()
71 body = "%(result)s\t (*) %(name)s\n" % locals()
73 for step in self.next_steps:
74 body += step.get_results()