def test_chunking_new_wan_size(self): """ Test the chunking of GELF messages """ from txgraylog.protocol.gelf import GELF_NEW longMessage = binascii.hexlify( randbytes.insecureRandom(3000)) + 'more!' g = GelfProtocol('host', gelf_fmt=GELF_NEW, **{ 'system': 'protocol', 'isError': False, 'message': longMessage, 'time': time.time(), }) messages = g.generate() self.failUnless(len(messages) > 1) self.failUnless(messages[0].startswith('\x1e\x0f')) old_id = None for i in xrange(len(messages)): magic, chunk_id, seq, num_chunks = struct.unpack( '2s8sBB', messages[i][:12] ) self.assertEquals(magic, '\x1e\x0f') self.assertEquals(seq, i) self.assertEquals(num_chunks, len(messages)) if old_id: self.assertEquals(chunk_id, old_id) old_id = chunk_id
def test_standard_log_iter(self): """ Test a standard event dictionary that would be passed in by Twisted using iter """ t = time.time() g = GelfProtocol('localhost', **{ 'system': 'protocol', 'message': ['this is a log message', 'which could be continued'], 'isError': False, 'version': '1.0', 'time': t }) for message in g: params = json.loads(zlib.decompress(g.generate()[0])) self.assertEquals(params['facility'], 'protocol') self.assertEquals(params['short_message'], 'this is a log message') self.assertEquals( params['full_message'], 'this is a log message' + ' which could be continued' ) self.assertEquals(params['level'], 6) self.assertEquals(params['version'], '1.0') self.assertEquals(params['timestamp'], t)
def test_chunking_legacy_wan_size(self): """ Test the chunking of GELF messages """ longMessage = binascii.hexlify( randbytes.insecureRandom(3000)) + 'more!' g = GelfProtocol('localhost', **{ 'system': 'protocol', 'isError': False, 'message': longMessage, 'time': time.time(), }) messages = g.generate() self.failUnless(len(messages) > 1) self.failUnless(messages[0].startswith('\x1e\x0f')) old_id = None for i in xrange(len(messages)): magic, chunk_id, seq, num_chunks = struct.unpack( '>2s32sHH', messages[i][:38] ) self.assertEquals(magic, '\x1e\x0f') self.assertEquals(seq, i) self.assertEquals(num_chunks, len(messages)) if old_id: self.assertEquals(chunk_id, old_id) old_id = chunk_id
def test_error_log(self): """ Test an error log """ f = failure.Failure(Exception('foo')) g = GelfProtocol('localhost', **{ 'system': 'protocol', 'failure': f, 'isError': True, 'time': time.time(), }) params = json.loads(zlib.decompress(g.generate()[0])) self.assertEquals(params['level'], 3) self.assertEquals(params['short_message'], 'foo') self.failUnless('Traceback' in params['full_message'])
def test_extended_paramaters(self): """ Test a log message with arbitrary parameters """ g = GelfProtocol('localhost', **{ 'system': 'protocol', 'message': ['this is a log message'], 'isError': False, 'time': time.time(), 'username': '******', 'bar': 'baz' }) params = json.loads(zlib.decompress(g.generate()[0])) self.assertEquals(params['_username'], 'foo') self.assertEquals(params['_bar'], 'baz')