Пример #1
0
 def testFlushLevel(self):
     """ACSHandler flushes buffer when message priority greater than threshold arrives"""
     h = ACSHandler.ACSHandler()
     lr = ACSHandler.ACSLogRecord("Nested.Name", logging.INFO, "/path/to/file.py", 100, "Test text", [], None)
     self.assertEqual(False, h.shouldFlush(lr))
     lr = ACSHandler.ACSLogRecord("Nested.Name", logging.CRITICAL+1, "/path/to/file.py", 100, "Test text", [], None)
     self.assertEqual(True, h.shouldFlush(lr))
Пример #2
0
 def testFlushToFile(self):
     """ACSHandler writes log messages to a file"""
     h = ACSHandler.ACSHandler()
     h.file_handler = mock.Mock(spec=logging.Handler)
     lr = ACSHandler.ACSLogRecord("Nested.Name", "TRACE", "/path/to/file.py", 100, "Test text", [], None)
     h.flushToFile(lr)
     self.assertEqual('handle',h.file_handler.method_calls[0][0])
Пример #3
0
 def testShouldFlushCapacity(self):
     """ACSHandler flushes when capacity is reached"""
     h = ACSHandler.ACSHandler()
     lr = ACSHandler.ACSLogRecord("Nested.Name", logging.NOTSET+1, "/path/to/file.py", 100, "Test text", [], None)
     self.assertEqual(False, h.shouldFlush(lr))
     h.buffer += [ lr, lr, lr, lr, lr, lr, lr, lr, lr, lr ]
     self.assertEqual(True, h.shouldFlush(lr))
Пример #4
0
 def testFlush(self):
     """ACSHandler flushes buffer correctly"""
     h = ACSHandler.ACSHandler()
     lr = ACSHandler.ACSLogRecord("Nested.Name", logging.INFO, "/path/to/file.py", 100, "Test text", None, None)
     h.buffer = [ lr, lr ]
     expected = [ 'logInfo' , 'logInfo' ]
     h.flush()
     self.assertEquals(expected, [ n[0] for n in mockLogSvc.method_calls[-2:]])
Пример #5
0
 def testFlushToFileNoHandler(self):
     """ACSHandler creates singleton file handler when necessary"""
     def mockInitFileHandler(self):
         self.file_handler = mock.Mock(spec=logging.FileHandler)
     holdmethod = ACSHandler.ACSHandler.initFileHandler
     ACSHandler.ACSHandler.initFileHandler = mockInitFileHandler 
     h = ACSHandler.ACSHandler()
     lr = ACSHandler.ACSLogRecord("Nested.Name", "TRACE", "/path/to/file.py", 100, "Test text", [], None)
     self.assertEqual(True, h.file_handler is None)
     h.flushToFile(lr)
     self.assertEqual(False, h.file_handler is None)
     ACSHandler.ACSHandler.initFileHandler = holdmethod
Пример #6
0
 def testFullLogQueue(self):
     """ACSHandler drops new messages when pending message queue is full"""
     def mockFlush(self): return 0
     holdFlush = ACSHandler.ACSHandler.flush
     ACSHandler.ACSHandler.flush = mockFlush
     h = ACSHandler.ACSHandler(capacity=ACSHandler.DEFAULT_RECORD_CAPACITY)
     lr = ACSHandler.ACSLogRecord("Nested.Name", logging.INFO, "/path/to/file.py", 100, "Test text", None, None)
     lrn = ACSHandler.ACSLogRecord("Name", logging.INFO, "/path/to/file.py", 100, "Test text", None, None)
     h.buffer += [ lr, lr, lr, lr, lr, lr, lr, lr, lr, lr ]
     self.assertEqual([ lr, lr, lr, lr, lr, lr, lr, lr, lr, lr ], h.buffer)
     h.handle(lrn)
     self.assertEqual([ lr, lr, lr, lr, lr, lr, lr, lr, lr, lr ], h.buffer)
     ACSHandler.ACSHandler.flush = holdFlush
Пример #7
0
 def testFlushException(self):
     """ACSHandler handles exceptions correctly when flushing buffer"""
     def mockSendLog(self, record): raise Exception()
     holdSendLog = ACSHandler.ACSHandler.sendLog
     ACSHandler.ACSHandler.sendLog = mockSendLog
     h = ACSHandler.ACSHandler()
     h.file_handler = mock.Mock(spec=logging.Handler)
     lr = ACSHandler.ACSLogRecord("Nested.Name", logging.INFO, "/path/to/file.py", 100, "Test text", None, None)
     h.buffer = [ lr, lr ]
     expected = [ 'handle' , 'handle' ]
     h.flush()
     self.assertEquals(expected, [ n[0] for n in h.file_handler.method_calls[-2:]])
     ACSHandler.ACSHandler.sendLog = holdSendLog
Пример #8
0
 def testFormatNoData(self):
     """ACSFormatter formats a log record that has no data attribute correctly"""
     lr = ACSHandler.ACSLogRecord("Simple", "TRACE", "/path/to/file.py", 100, "Test text", [], None)
     lr.created = 0
     lr.msecs = 0
     s = self.f.format(lr)
     self.assertEqual("1970-01-01T00:00:00.000 Simple Test text",s)
Пример #9
0
 def testConstructorDefault(self):
     """ACSHandler initialized"""
     h = ACSHandler.ACSHandler()
     self.assertEqual(ACSHandler.DEFAULT_MAXIMUM_QUEUE, h.capacity)
     self.assertEqual(ACSHandler.DEFAULT_RECORD_CAPACITY, h.batchsize)
     self.assertEqual(ACSHandler.DEFAULT_IMMEDIATE_DISPATCH, h.dispatchlevel)
     self.assertEqual(mockLogSvc.__repr__(), h.logSvc.__repr__())
Пример #10
0
 def testFormatDataList(self):
     """ACSFormatter formats a log record with a data list attribute correctly"""
     lr = ACSHandler.ACSLogRecord("Simple", "TRACE", "/path/to/file.py", 100, "Test text", [], None)
     lr.created = 0
     lr.msecs = 0
     lr.data = [ ACSLog.NVPair('a', 'A'), ACSLog.NVPair('5', '5'), ACSLog.NVPair('B', '9') ]
     s = self.f.format(lr)
     self.assertEqual("1970-01-01T00:00:00.000 Simple Test text [ a=A 5=5 B=9 ]",s)
Пример #11
0
 def testFormatDataDict(self):
     """ACSFormatter formats a log record with a data dictionary attribute correctly"""
     lr = ACSHandler.ACSLogRecord("Simple", "TRACE", "/path/to/file.py", 100, "Test text", [], None)
     lr.created = 0
     lr.msecs = 0
     lr.data = { 'a' : 'A', 5 : '5', 'B' : 9 }
     s = self.f.format(lr)
     self.assertEqual("1970-01-01T00:00:00.000 Simple Test text [ a=A B=9 5=5 ]",s)
Пример #12
0
 def testSendLogWithAudience(self):
     """ACSHandler sends logWithAudience messages at the appropriate levels"""
     import Acspy.Common.Log
     l = Acspy.Common.Log.Logger('test')
     h = ACSHandler.ACSHandler()
     extras = { 'priority' : ACSLog.ACS_LOG_ERROR, 'audience' : "", 'array' : "", 'antenna' : "" }
     lr = l.makeRecord("Sample", Acspy.Common.Log.LEVELS[8], "/path/to/file.py",
                                  100, 'ErrorTrace', (), None, 'dummy', extras)
     h.sendLog(lr)
     logcall = mockLogSvc.method_calls[-1]
     self.assertEquals("logWithAudience", logcall[0])
     self.assertEquals(ACSLog.ACS_LOG_ERROR, logcall[1][0])
Пример #13
0
 def testSimpleConstructor(self):
     """ACSLogRecord initialized with simple name"""
     lr = ACSHandler.ACSLogRecord("Simple", "TRACE", "/path/to/file.py", 100, "Test text", [], None)
     self.assertEqual("Simple", lr.name)
     self.assertEqual(lr.name, lr.source)
     self.assertEqual("/path/to/file.py", lr.pathname)
     self.assertEqual("file.py", lr.filename)
     self.assertEqual("file", lr.module)
     self.assertEqual("Test text", lr.msg)
     self.assertEqual([], lr.args)
     self.assertEqual(None, lr.exc_info)
     self.assertEqual(None, lr.funcName)
Пример #14
0
 def testSendLogErrorTrace(self):
     """ACSHandler sends errortrace messages at the appropriate levels"""
     import Acspy.Common.Log
     import Acspy.Common.ErrorTrace as ErrorTrace
     l = Acspy.Common.Log.Logger('test')
     h = ACSHandler.ACSHandler()
     et = ErrorTrace.ErrorTrace(1,1)
     extras = { 'errortrace' : et, 'priority' : ACSLog.ACS_LOG_ERROR }
     lr = l.makeRecord("Sample", Acspy.Common.Log.LEVELS[8], "/path/to/file.py",
                                  100, 'ErrorTrace', (), None, 'dummy', extras)
     h.sendLog(lr)
     logcall = mockLogSvc.method_calls[-1]
     self.assertEquals("logErrorWithPriority", logcall[0])
     self.assertEquals(ACSLog.ACS_LOG_ERROR, logcall[1][1])