aboutsummaryrefslogtreecommitdiffstats
path: root/run_exps.py
diff options
context:
space:
mode:
authorJonathan Herman <hermanjl@cs.unc.edu>2013-04-10 15:32:39 -0400
committerJonathan Herman <hermanjl@cs.unc.edu>2013-04-10 15:32:39 -0400
commit384e322f974534c1c734db144633e3c3e002b1f8 (patch)
tree1637267cea4cb5166677f272e97b19ce8331a36c /run_exps.py
parent4162cc0c57de22566efa6e2dab224909279f2a47 (diff)
Added option to send email when experiments complete.
Diffstat (limited to 'run_exps.py')
-rwxr-xr-xrun_exps.py40
1 files changed, 29 insertions, 11 deletions
diff --git a/run_exps.py b/run_exps.py
index 77c9631..b9cf88e 100755
--- a/run_exps.py
+++ b/run_exps.py
@@ -68,6 +68,9 @@ def parse_args():
68 parser.add_option('-j', '--jabber', metavar='username@domain', 68 parser.add_option('-j', '--jabber', metavar='username@domain',
69 dest='jabber', default=None, 69 dest='jabber', default=None,
70 help='send a jabber message when an experiment completes') 70 help='send a jabber message when an experiment completes')
71 parser.add_option('-e', '--email', metavar='username@server',
72 dest='email', default=None,
73 help='send an email when all experiments complete')
71 74
72 return parser.parse_args() 75 return parser.parse_args()
73 76
@@ -295,10 +298,22 @@ def setup_jabber(target):
295 298
296 return Jabber(target) 299 return Jabber(target)
297 except ImportError: 300 except ImportError:
298 sys.stderr.write("Failed to import jabber, disabling messages. " + 301 sys.stderr.write("Failed to import jabber. Is python-xmpp installed? " +
299 "Is python-xmpp installed?") 302 "Disabling instant messages.\n")
300 return None 303 return None
301 304
305def setup_email(target):
306 try:
307 from run.emailer import Emailer
308
309 return Emailer(target)
310 except ImportError:
311 message = "Failed to import email. Is smtplib installed?"
312 except IOError:
313 message = "Failed to create email. Is an smtp server active?"
314
315 sys.stderr.write(message + " Disabling email message.\n")
316 return None
302 317
303def main(): 318def main():
304 opts, args = parse_args() 319 opts, args = parse_args()
@@ -320,10 +335,8 @@ def main():
320 failed = 0 335 failed = 0
321 invalid = 0 336 invalid = 0
322 337
323 if opts.jabber: 338 jabber = setup_jabber(opts.jabber) if opts.jabber else None
324 jabber = setup_jabber(opts.jabber) 339 email = setup_email(opts.email) if opts.email else None
325 else:
326 jabber = None
327 340
328 for exp in args: 341 for exp in args:
329 path = "%s/%s" % (os.getcwd(), exp) 342 path = "%s/%s" % (os.getcwd(), exp)
@@ -357,12 +370,17 @@ def main():
357 if not os.listdir(out_base) and created and not succ: 370 if not os.listdir(out_base) and created and not succ:
358 os.rmdir(out_base) 371 os.rmdir(out_base)
359 372
360 print("Experiments run:\t%d" % len(args)) 373 message = "Experiments run:\t%d" % len(args) +\
361 print(" Successful:\t\t%d" % succ) 374 "\n Successful:\t\t%d" % succ +\
362 print(" Failed:\t\t%d" % failed) 375 "\n Failed:\t\t%d" % failed +\
363 print(" Already Done:\t\t%d" % done) 376 "\n Already Done:\t\t%d" % done +\
364 print(" Invalid Environment:\t%d" % invalid) 377 "\n Invalid Environment:\t%d" % invalid
378
379 print(message)
365 380
381 if email:
382 email.send(message)
383 email.close()
366 384
367if __name__ == '__main__': 385if __name__ == '__main__':
368 main() 386 main()