def test_rewind_by_lines_tolerates_multi_line_logs(self): filename = '/tmp/jabber_test/basic.log' log = Log(filename) content = ('2011-09-21 01:00:01,854 - basic - INFO - Line 01\n' + '2011-09-21 02:00:01,854 - basic - INFO - Line 02\n' + '2011-09-21 03:00:01,854 - basic - INFO - Line 03\n' + '2011-09-21 04:00:01,854 - basic - INFO - Line 04\n' + '2011-09-21 05:00:01,854 - basic - INFO - Line 05\n' + '2011-09-21 06:00:01,854 - basic - INFO - Line 06\n' + '2011-09-21 07:00:01,854 - basic - INFO - Line 07\n' + '2011-09-21 08:00:01,854 - basic - INFO - Line 08\n' + 'this is a second line of same log line\n' + 'there is even a third line\n' + '2011-09-21 09:00:01,854 - basic - INFO - Line 09\n' + '2011-09-21 10:00:01,854 - basic - INFO - Line 10\n' ) open(filename, 'w').write(content) log.flush() self.assertEquals(log.flush(), '') log.rewind(1) self.assertEquals(log.flush(), '2011-09-21 10:00:01,854 - basic - INFO - Line 10') log.rewind(2) self.assertEquals(log.flush(), '2011-09-21 09:00:01,854 - basic - INFO - Line 09\n' + '2011-09-21 10:00:01,854 - basic - INFO - Line 10') log.rewind(3) self.assertEquals(log.flush(), '2011-09-21 08:00:01,854 - basic - INFO - Line 08\n' + 'this is a second line of same log line\n' + 'there is even a third line\n' + '2011-09-21 09:00:01,854 - basic - INFO - Line 09\n' + '2011-09-21 10:00:01,854 - basic - INFO - Line 10') open(filename, 'a').write('2011-09-21 11:00:01,854 - basic - INFO - Line 11\n') log.rewind(4) self.assertEquals(log.flush(), '2011-09-21 08:00:01,854 - basic - INFO - Line 08\n' + 'this is a second line of same log line\n' + 'there is even a third line\n' + '2011-09-21 09:00:01,854 - basic - INFO - Line 09\n' + '2011-09-21 10:00:01,854 - basic - INFO - Line 10\n' + '2011-09-21 11:00:01,854 - basic - INFO - Line 11')
def test_log_can_be_rewinded_by_line_number(self): filename = '/tmp/jabber_test/basic.log' log = Log(filename) content = ('2011-09-21 01:00:01,854 - basic - INFO - Line 01\n' + '2011-09-21 02:00:01,854 - basic - INFO - Line 02\n' + '2011-09-21 03:00:01,854 - basic - INFO - Line 03\n' + '2011-09-21 04:00:01,854 - basic - INFO - Line 04\n' + '2011-09-21 05:00:01,854 - basic - INFO - Line 05\n' + '2011-09-21 06:00:01,854 - basic - INFO - Line 06\n' + '2011-09-21 07:00:01,854 - basic - INFO - Line 07\n' + '2011-09-21 08:00:01,854 - basic - INFO - Line 08\n' + '2011-09-21 09:00:01,854 - basic - INFO - Line 09\n' + '2011-09-21 10:00:01,854 - basic - INFO - Line 10\n' ) open(filename, 'w').write(content) log.flush() self.assertEquals(log.flush(), '') log.rewind(1) self.assertEquals(log.flush(), '2011-09-21 10:00:01,854 - basic - INFO - Line 10') log.rewind(2) self.assertEquals(log.flush(), '2011-09-21 09:00:01,854 - basic - INFO - Line 09\n' + '2011-09-21 10:00:01,854 - basic - INFO - Line 10') log.rewind(3) self.assertEquals(log.flush(), '2011-09-21 08:00:01,854 - basic - INFO - Line 08\n' + '2011-09-21 09:00:01,854 - basic - INFO - Line 09\n' + '2011-09-21 10:00:01,854 - basic - INFO - Line 10') open(filename, 'a').write('2011-09-21 11:00:01,854 - basic - INFO - Line 11\n') log.rewind(4) self.assertEquals(log.flush(), '2011-09-21 08:00:01,854 - basic - INFO - Line 08\n' + '2011-09-21 09:00:01,854 - basic - INFO - Line 09\n' + '2011-09-21 10:00:01,854 - basic - INFO - Line 10\n' + '2011-09-21 11:00:01,854 - basic - INFO - Line 11')
def test_rewind_by_time_tolerates_multi_line_logs(self): self.set_date('2011-09-21 10:00:05') filename = '/tmp/jabber_test/basic.log' log = Log(filename) content = ('2011-09-21 01:00:01,854 - basic - INFO - Line 01\n' + '2011-09-21 02:00:01,854 - basic - INFO - Line 02\n' + '2011-09-21 03:00:01,854 - basic - INFO - Line 03\n' + '2011-09-21 04:00:01,854 - basic - INFO - Line 04\n' + '2011-09-21 05:00:01,854 - basic - INFO - Line 05\n' + '2011-09-21 06:00:01,854 - basic - INFO - Line 06\n' + '2011-09-21 07:00:01,854 - basic - INFO - Line 07\n' + '2011-09-21 08:00:01,854 - basic - INFO - Line 08\n' + 'this is a second line of same log line\n' + 'there is even a third line\n' + '2011-09-21 09:00:01,854 - basic - INFO - Line 09\n' + '2011-09-21 10:00:01,854 - basic - INFO - Line 10\n' ) open(filename, 'w').write(content) log.flush() self.assertEquals(log.flush(), '') log.rewind(dtime=5) self.assertEquals(log.flush(), '2011-09-21 10:00:01,854 - basic - INFO - Line 10') log.rewind(dtime=3600) self.assertEquals(log.flush(), '2011-09-21 10:00:01,854 - basic - INFO - Line 10') log.rewind(dtime=3605) self.assertEquals(log.flush(), '2011-09-21 09:00:01,854 - basic - INFO - Line 09\n' + '2011-09-21 10:00:01,854 - basic - INFO - Line 10') log.rewind(dtime=7205) self.assertEquals(log.flush(), '2011-09-21 08:00:01,854 - basic - INFO - Line 08\n' + 'this is a second line of same log line\n' + 'there is even a third line\n' + '2011-09-21 09:00:01,854 - basic - INFO - Line 09\n' + '2011-09-21 10:00:01,854 - basic - INFO - Line 10') log.rewind(dtime=3600) log.rewind(dtime=1) #this will override previous rewind self.assertEquals(log.flush(), '') log.rewind(dtime=3600 * 24) self.assertEquals(log.flush(), content.strip())
def test_log_can_be_rewinded_by_time_shift(self): self.set_date('2011-09-21 10:00:05') filename = '/tmp/jabber_test/basic.log' log = Log(filename) content = ('2011-09-21 01:00:01,854 - basic - INFO - Line 01\n' + '2011-09-21 02:00:01,854 - basic - INFO - Line 02\n' + '2011-09-21 03:00:01,854 - basic - INFO - Line 03\n' + '2011-09-21 04:00:01,854 - basic - INFO - Line 04\n' + '2011-09-21 05:00:01,854 - basic - INFO - Line 05\n' + '2011-09-21 06:00:01,854 - basic - INFO - Line 06\n' + '2011-09-21 07:00:01,854 - basic - INFO - Line 07\n' + '2011-09-21 08:00:01,854 - basic - INFO - Line 08\n' + '2011-09-21 09:00:01,854 - basic - INFO - Line 09\n' + '2011-09-21 10:00:01,854 - basic - INFO - Line 10\n' ) open(filename, 'w').write(content) log.flush() self.assertEquals(log.flush(), '') log.rewind(dtime=5) self.assertEquals(log.flush(), '2011-09-21 10:00:01,854 - basic - INFO - Line 10') log.rewind(dtime=3600) self.assertEquals(log.flush(), '2011-09-21 10:00:01,854 - basic - INFO - Line 10') log.rewind(dtime=3605) self.assertEquals(log.flush(), '2011-09-21 09:00:01,854 - basic - INFO - Line 09\n' + '2011-09-21 10:00:01,854 - basic - INFO - Line 10') log.rewind(dtime=3600) log.rewind(dtime=1) #this will override previous rewind self.assertEquals(log.flush(), '') log.rewind(dtime=3600 * 24) self.assertEquals(log.flush(), content.strip())