def test_aggregator(self): aggregator = unified2.Aggregator() # We should not get an event from the aggregator as we pass in # the records from the first event. reader = unified2.RecordReader(open(self.test_filename, "rb")) for record in reader: event = aggregator.add(record) self.assertEqual(None, event) # On the first add of the next event we should get an event. reader = unified2.RecordReader(open(self.test_filename, "rb")) event = aggregator.add(reader.next()) self.assertTrue(event) self.assertTrue(isinstance(event, unified2.Event)) # The next 16 records should get added without an event being # generated. for record in reader: self.assertEqual(None, aggregator.add(record)) # Now flush. event = aggregator.flush() self.assertTrue(event) self.assertTrue(isinstance(event, unified2.Event))
def test_eof(self): """Test that we get None on EOF.""" reader = unified2.RecordReader(open(self.test_filename, "rb")) for i in range(17): record = reader.next() self.assertTrue(record) self.assertFalse(reader.next())
def test_short_read_of_body(self): # Just read in 12, 8 for the header and some body. buf = open(self.test_filename, "rb").read(12) self.assertEquals(len(buf), 12) fileobj = io.BytesIO(buf) self.assertEquals(fileobj.tell(), 0) reader = unified2.RecordReader(fileobj) self.assertRaises(EOFError, reader.next) self.assertEquals(fileobj.tell(), 0)
def test_short_read_of_header(self): # Just read in 6 bytes of the header. buf = open(self.test_filename, "rb").read(6) self.assertEquals(len(buf), 6) fileobj = io.BytesIO(buf) self.assertEquals(fileobj.tell(), 0) reader = unified2.RecordReader(fileobj) self.assertRaises(EOFError, reader.next) self.assertEquals(fileobj.tell(), 0)
def test_interleaved(self): # First read in all records from a known multi-record event. records = [] reader = unified2.RecordReader(open(self.test_filename, "rb")) for record in reader: records.append(record) self.assertEqual(len(records), 17) # Modify the event ID of the last record. records[16]["event-id"] = records[16]["event-id"] - 1 # Add all 17 records to the aggregator. Should only end up # with 16 as the last one will be thrown out due to an # event-id mismatch. aggregator = unified2.Aggregator() for record in records: aggregator.add(record) self.assertEqual(len(aggregator.queue), 16)
def test_iteration(self): # Should get 17 records. reader = unified2.RecordReader(open(self.test_filename, "rb")) records = [r for r in reader] self.assertEquals(len(records), 17)