Example #1
0
 def test_seek_tail_not_enough_lines(self):
     self.write_log_file('2000-01-01 00:00:00,000 FlowID ERROR Thread C.m(C.java:23): Error! Nooooo!\n' * 10)
     with open('log.log', 'rb') as f:
         reader = LogReader(0, 'log.log', Log4jParser(), FakeReceiver(), tail_length=20)
         reader.logfile = f
         reader._seek_tail()
         self.assertEqual(f.tell(), 0)
Example #2
0
 def test_make_progress_string_success(self):
     with open('log.log', 'wb') as f:
         f.write('Some file contents!')
         f.seek(10)
         reader = LogReader(0, 'log.log', Log4jParser(), FakeReceiver(), progress_file_path_prefix='progress')
         reader.logfile = f
         reader.logfile_id = '123g456'
         self.assertEqual(reader._make_progress_string(), 'log.log 123g456 10 19')
Example #3
0
 def test_seek_tail_multiple_chunks(self):
     self.write_log_file('2000-01-01 00:00:00,000 FlowID ERROR Thread C.m(C.java:23): Error! Nooooo!\n' * 1000)
     with open('log.log', 'rb') as f:
         reader = LogReader(0, 'log.log', Log4jParser(), FakeReceiver(), tail_length=900)
         reader.CHUNK_SIZE = 1024
         reader.logfile = f
         reader._seek_tail()
         self.assertEqual(f.tell(), 100 * 75)
Example #4
0
 def test_seek_first_unprocessed_position_no_progress_file(self):
     self.write_log_file('2000-01-01 00:00:00,000 FlowID ERROR Thread C.m(C.java:23): Error! Nooooo!\n' * 20)
     with open('log.log', 'rb') as f:
         reader = LogReader(0, 'log.log', Log4jParser(), FakeReceiver(), progress_file_path_prefix='progress', tail_length=10)
         reader.logfile = f
         reader._seek_first_unprocessed_position()
         self.assertEqual(f.tell(), 0)
         self.assertEqual(self.fake_logging.log, ['[WARN] Failed to read the progress file for "log.log".'])
Example #5
0
 def test_seek_tail_with_multiline_messages_one_chunk(self):
     message = '2000-01-01 00:00:00,000 FlowID ERROR Thread C.m(C.java:23): Error! Nooooo!\n' + 'X' * 24 + '\n'
     self.write_log_file(message * 10)
     with open('log.log', 'rb') as f:
         reader = LogReader(0, 'log.log', Log4jParser(), FakeReceiver(), tail_length=5)
         reader.CHUNK_SIZE = 1024
         reader.logfile = f
         reader._seek_tail()
         self.assertEqual(f.tell(), 5 * 100)
Example #6
0
 def test_seek_first_unprocessed_position(self):
     self.write_log_file('XXXX\n' * 100)
     self.write_progress_file('log.log 123g456 50 75')
     with open('log.log', 'rb') as f:
         reader = LogReader(0, 'log.log', Log4jParser(), FakeReceiver(), progress_file_path_prefix='progress')
         reader.logfile = f
         reader._seek_first_unprocessed_position()
         self.assertEqual(f.tell(), 50)
         self.assertEqual(reader.logfile_id, '123g456')
Example #7
0
 def __enter__(self):
     lines = []
     for i in self.seconds:
         lines.append(self.message_template % divmod(i, 60))
     with open('log.log', 'wb') as f:
         f.write(''.join(lines))
     self.log = open('log.log', 'rb')
     reader = LogReader(0, 'log.log', Log4jParser(), FakeReceiver())
     reader.logfile = self.log
     return reader
Example #8
0
 def test_ensure_file_is_good_file_is_good(self):
     with open('log.log', 'wb') as f:
         f.write('Some file contents!')
         f.seek(10)
         reader = LogReader(0, 'log.log', Log4jParser(), FakeReceiver())
         reader.logfile = f
         reader.logfile_id = get_device_and_inode_string(os.fstat(f.fileno()))
         reader._ensure_file_is_good()
         self.assertFalse(f.closed)
         self.assertEqual(reader.logfile, f)
         self.assertEqual(f.tell(), 10)
         self.assertEqual(self.fake_logging.log, [])
Example #9
0
 def test_ensure_file_is_good_file_has_been_rotated(self):
     with open('log.log', 'wb') as f:
         f.write('Some file contents!')
         reader = LogReader(0, 'log.log', Log4jParser(), FakeReceiver())
         reader.logfile = f
         reader.logfile_id = 'not matching'
         reader._ensure_file_is_good()
         self.assertTrue(f.closed)
         self.assertNotEqual(reader.logfile, f)
         self.assertFalse(reader.logfile.closed)
         self.assertEqual(reader.logfile.readline(), 'Some file contents!')
         self.assertEqual(self.fake_logging.log, ['[INFO] The file log.log has been rotated.',
                                                  '[INFO] Closed log.log.', '[INFO] Opened log.log.'])