def __init__(self, logdir, mode='a', delete=False, clearmem=True): """ The logdir argument specifies the location where the logs are stored. The mode specifies whether to append the existing logs (if any). If delete is True, the logs are deleted after they are completed, unless they have an error in them. If clearmem is True, the logger does not store a reference to the log in it. If you want to use the functions from :class:`Exscript.util.report` with the logger, clearmem must be False. """ Logger.__init__(self) self.logdir = logdir self.mode = mode self.delete = delete self.clearmem = clearmem if not os.path.exists(self.logdir): os.mkdir(self.logdir)
def __init__(self, logdir, mode = 'a', delete = False, clearmem = True): """ The logdir argument specifies the location where the logs are stored. The mode specifies whether to append the existing logs (if any). If delete is True, the logs are deleted after they are completed, unless they have an error in them. If clearmem is True, the logger does not store a reference to the log in it. If you want to use the functions from L{Exscript.util.report} with the logger, clearmem must be False. """ Logger.__init__(self) self.logdir = logdir self.mode = mode self.delete = delete self.clearmem = clearmem if not os.path.exists(self.logdir): os.mkdir(self.logdir)
def testConstructor(self): logger = Logger()
def setUp(self): self.logger = Logger() self.job = FakeJob('fake')
class LoggerTest(unittest.TestCase): CORRELATE = Logger def setUp(self): self.logger = Logger() self.job = FakeJob('fake') def tearDown(self): # Needed to make sure that events are disconnected. self.logger = None def testConstructor(self): logger = Logger() def testGetSucceededActions(self): self.assertEqual(self.logger.get_succeeded_actions(), 0) job1 = FakeJob() job2 = FakeJob() self.assertEqual(self.logger.get_succeeded_actions(), 0) self.logger.add_log(id(job1), job1.name, 1) self.logger.add_log(id(job2), job2.name, 1) self.assertEqual(self.logger.get_succeeded_actions(), 0) self.logger.log_succeeded(id(job1)) self.assertEqual(self.logger.get_succeeded_actions(), 1) try: raise FakeError() except FakeError: self.logger.log_aborted(id(job2), sys.exc_info()) self.assertEqual(self.logger.get_succeeded_actions(), 1) def testGetAbortedActions(self): self.assertEqual(self.logger.get_aborted_actions(), 0) job = FakeJob() self.assertEqual(self.logger.get_aborted_actions(), 0) self.logger.add_log(id(job), job.name, 1) self.assertEqual(self.logger.get_aborted_actions(), 0) self.logger.log_succeeded(id(job)) self.assertEqual(self.logger.get_aborted_actions(), 0) try: raise FakeError() except FakeError: self.logger.log_aborted(id(job), sys.exc_info()) self.assertEqual(self.logger.get_aborted_actions(), 1) def testGetLogs(self): self.assertEqual(count(self.logger.get_logs()), 0) job = FakeJob() self.assertEqual(count(self.logger.get_logs()), 0) self.logger.add_log(id(job), job.name, 1) self.assertEqual(count(self.logger.get_logs()), 1) self.assert_(isinstance(nth(self.logger.get_logs(), 0), Log)) self.logger.log(id(job), 'hello world') self.assertEqual(count(self.logger.get_logs()), 1) self.logger.log_succeeded(id(job)) self.assertEqual(count(self.logger.get_logs()), 1) try: raise FakeError() except FakeError: self.logger.log_aborted(id(job), sys.exc_info()) self.assertEqual(count(self.logger.get_logs()), 1) def testGetSucceededLogs(self): self.assertEqual(count(self.logger.get_succeeded_logs()), 0) job = FakeJob() self.assertEqual(count(self.logger.get_succeeded_logs()), 0) self.logger.add_log(id(job), job.name, 1) self.assertEqual(count(self.logger.get_succeeded_logs()), 0) self.logger.log(id(job), 'hello world') self.assertEqual(count(self.logger.get_succeeded_logs()), 0) self.logger.log_succeeded(id(job)) self.assertEqual(count(self.logger.get_aborted_logs()), 0) self.assertEqual(count(self.logger.get_succeeded_logs()), 1) self.assert_(isinstance(nth(self.logger.get_succeeded_logs(), 0), Log)) def testGetAbortedLogs(self): self.assertEqual(count(self.logger.get_aborted_logs()), 0) job = FakeJob() self.assertEqual(count(self.logger.get_aborted_logs()), 0) self.logger.add_log(id(job), job.name, 1) self.assertEqual(count(self.logger.get_aborted_logs()), 0) self.logger.log(id(job), 'hello world') self.assertEqual(count(self.logger.get_aborted_logs()), 0) try: raise FakeError() except FakeError: self.logger.log_aborted(id(job), sys.exc_info()) self.assertEqual(count(self.logger.get_succeeded_logs()), 0) self.assertEqual(count(self.logger.get_aborted_logs()), 1) self.assert_(isinstance(nth(self.logger.get_aborted_logs(), 0), Log)) def testAddLog(self): self.assertEqual(count(self.logger.get_logs()), 0) log = self.logger.add_log(id(self.job), self.job.name, 1) self.assertEqual(count(self.logger.get_logs()), 1) self.assertEqual(str(log), '') return log def testLog(self): log = self.testAddLog() self.logger.log(id(self.job), 'hello world') self.assertEqual(str(log), 'hello world') return log def testLogAborted(self): log = self.testLog() try: raise FakeError() except Exception: self.logger.log_aborted(id(self.job), sys.exc_info()) self.assert_('FakeError' in str(log)) return log def testLogSucceeded(self): log = self.testLog() self.logger.log_succeeded(id(self.job)) self.assertEqual(str(log), 'hello world') return log
def log_succeeded(self, job_id): Logger.log_succeeded(self, job_id) if self.clearmem: self.logs.pop(job_id)
def log_aborted(self, job_id, exc_info): Logger.log_aborted(self, job_id, exc_info) if self.clearmem: self.logs.pop(job_id)