Trees | Indices | Help |
---|
|
1 # -*- Mode: Python; test-case-name: test_log -*- 2 # vi:si:et:sw=4:sts=4:ts=4 3 # 4 # Flumotion - a streaming media server 5 # Copyright (C) 2004,2005,2006,2007 Fluendo, S.L. (www.fluendo.com). 6 # All rights reserved. 7 8 # This file may be distributed and/or modified under the terms of 9 # the GNU General Public License version 2 as published by 10 # the Free Software Foundation. 11 # This file is distributed without any warranty; without even the implied 12 # warranty of merchantability or fitness for a particular purpose. 13 # See "LICENSE.GPL" in the source distribution for more information. 14 15 # Licensees having purchased or holding a valid Flumotion Advanced 16 # Streaming Server license may use this file in accordance with the 17 # Flumotion Advanced Streaming Server Commercial License Agreement. 18 # See "LICENSE.Flumotion" in the source distribution for more information. 19 20 # Headers in this file shall remain intact. 21 22 import logging 23 24 from twisted.trial import unittest 25 26 import log 27 28 __version__ = "$Rev$" 29 3032 logCategory = 'testlog'33 34 39 4042224 22544 self.category = self.level = self.message = None 45 self.tester = LogTester() 46 # we want to remove the default handler so it doesn't show up stuff 47 log.reset()48 49 # just test for parsing semi- or non-valid FLU_DEBUG variables 50 5557 self.assertRaises(AssertionError, log.getLevelName, -1) 58 self.assertRaises(AssertionError, log.getLevelName, 6)59 6264 self.assertRaises(AssertionError, log.getFormattedLevelName, -1) 65 # FIXME: we're poking at internals here, but without calling this 66 # no format levels are set at all. 67 log._preformatLevels("ENVVAR") 68 self.failUnless("LOG" in log.getFormattedLevelName(log.LOG))6971 # test a function object 72 (filename, line) = log.getFileLine(where=self.testGetFileLine) 73 self.failUnless(filename.endswith('test_log.py')) 74 self.assertEquals(line, 70) 75 76 # test a lambda 77 f = lambda x: x + 1 78 (filename, line) = log.getFileLine(where=f) 79 self.failUnless(filename.endswith('test_log.py')) 80 self.assertEquals(line, 77) 81 82 # test an eval 83 f = eval("lambda x: x + 1") 84 (filename, line) = log.getFileLine(where=f) 85 self.assertEquals(filename, '<string>') 86 self.assertEquals(line, 1)87 88 # test for adding a log handler 89 9395 self.level = level 96 self.object = object 97 self.category = category 98 self.file = file 99 self.line = line 100 self.message = message101103 log.setDebug("testlog:3") 104 log.addLimitedLogHandler(self.handler) 105 106 # log 2 we shouldn't get 107 self.tester.log("not visible") 108 assert not self.category 109 assert not self.level 110 assert not self.message 111 112 self.tester.debug("not visible") 113 assert not self.category 114 assert not self.level 115 assert not self.message116118 log.setDebug("testlog:3") 119 log.addLimitedLogHandler(self.handler) 120 121 # log 3 we should get 122 self.tester.info("visible") 123 assert self.category == 'testlog' 124 assert self.level == log.INFO 125 assert self.message == 'visible' 126 127 self.tester.warning("also visible") 128 assert self.category == 'testlog' 129 assert self.level == log.WARN 130 assert self.message == 'also visible'131133 log.setDebug("testlog:3") 134 log.addLimitedLogHandler(self.handler) 135 136 self.tester.info("%d %s", 42, 'the answer') 137 assert self.category == 'testlog' 138 assert self.level == log.INFO 139 assert self.message == '42 the answer'140142 log.setDebug("testlog:3") 143 log.addLimitedLogHandler(self.handler) 144 145 self.assertRaises(SystemExit, self.tester.error, "error") 146 assert self.category == 'testlog' 147 assert self.level == log.ERROR 148 assert self.message == 'error'149151 log.setDebug("testlog:3") 152 log.addLimitedLogHandler(self.handler) 153 154 # now try debug and log again too 155 log.setDebug("testlog:5") 156 157 self.tester.debug("debug") 158 assert self.category == 'testlog' 159 assert self.level == log.DEBUG 160 assert self.message == 'debug' 161 162 self.tester.log("log") 163 assert self.category == 'testlog' 164 assert self.level == log.LOG 165 assert self.message == 'log'166 167 # test that we get all log messages 168170 log.setDebug("testlog:3") 171 log.addLogHandler(self.handler) 172 173 self.tester.log("visible") 174 assert self.message == 'visible' 175 176 self.tester.warning("also visible") 177 assert self.message == 'also visible'178 181183 # create a standard logger 184 logger = logging.getLogger('standard.logger') 185 186 # set the debug level for the "test" category 187 log.setDebug("test:3") 188 log.addLimitedLogHandler(self.handler) 189 190 logger.warning('invisible') 191 # should not get anything, because the std module has not been adapted 192 assert not self.category 193 assert not self.level 194 assert not self.message 195 196 log.adaptStandardLogging('standard.logger', 'test', 'test_log') 197 self.assertEquals(len(logger.handlers), 1) 198 199 # trying to adapt it again should be a noop 200 log.adaptStandardLogging('standard.logger', 'test', 'test_log') 201 self.assertEquals(len(logger.handlers), 1) 202 203 logger.info('invisible') 204 # should not get anything, because INFO translates to Flu debug 4 205 assert not self.category 206 assert not self.level 207 assert not self.message 208 209 logger.warning('visible') 210 # WARNING translates to INFO, see log.stdLevelToFluLevel 211 assert self.category == 'test', self.category 212 assert self.level == log.INFO 213 assert self.message == 'visible' 214 215 self.message = self.level = self.category = None 216 217 # lower the debug level 218 log.setDebug("test:2") 219 logger.warning('visible') 220 # should not get anything now 221 assert not self.category 222 assert not self.level 223 assert not self.message227252 253 287 288229 self.category = self.level = self.message = None 230 self.tester = LogFunctionTester() 231 log.reset()232234 self.level = level 235 self.object = object 236 self.category = category 237 self.file = file 238 self.line = line 239 self.message = message240 241 # test if our own log handler correctly mangles the message 242244 log.setDebug("testlog:3") 245 log.addLogHandler(self.handler) 246 247 self.tester.log("visible") 248 assert self.message == 'override visible'249290298 299292 old = log.getLogSettings() 293 log.setDebug('*:5') 294 self.assertNotEquals(old, log.getLogSettings()) 295 296 log.setLogSettings(old) 297 self.assertEquals(old, log.getLogSettings())301349 350303 self.level = level 304 self.object = object 305 self.category = category 306 self.file = file 307 self.line = line 308 self.message = message309311 loggable = log.Loggable() 312 log.setDebug("4") 313 log.addLogHandler(self.handler) 314 marker = 'test' 315 loggable.writeMarker(marker, log.DEBUG) 316 self.assertEquals(self.message, marker)317319 loggable = log.Loggable() 320 log.setDebug("2") 321 log.addLogHandler(self.handler) 322 marker = 'test' 323 loggable.writeMarker(marker, log.WARN) 324 self.assertEquals(self.message, marker)325327 loggable = log.Loggable() 328 log.setDebug("3") 329 log.addLogHandler(self.handler) 330 marker = 'test' 331 loggable.writeMarker(marker, log.INFO) 332 self.assertEquals(self.message, marker)333335 loggable = log.Loggable() 336 log.setDebug("5") 337 log.addLogHandler(self.handler) 338 marker = 'test' 339 loggable.writeMarker(marker, log.LOG) 340 self.assertEquals(self.message, marker)341352 356370 371358 self.assertEquals(1, log.getLevelInt('ERROR')) 359 self.assertEquals(2, log.getLevelInt('WARN')) 360 self.assertEquals(3, log.getLevelInt('INFO')) 361 self.assertEquals(4, log.getLevelInt('DEBUG')) 362 self.assertEquals(5, log.getLevelInt('LOG'))363365 self.assertEquals('ERROR', log.getLevelName(1)) 366 self.assertEquals('WARN', log.getLevelName(2)) 367 self.assertEquals('INFO', log.getLevelName(3)) 368 self.assertEquals('DEBUG', log.getLevelName(4)) 369 self.assertEquals('LOG', log.getLevelName(5))373403 404 405 if __name__ == '__main__': 406 unittest.main() 407375 self.tester = LogTester() 376 # add stderrHandler to fully test unicode handling 377 log.addLogHandler(log.stderrHandler)378 382384 self.tester.log('abc: %s', u'\xf3')385 389391 self.tester.log('abc: %s', '\xc3\xa4')392394 # This should fail since were trying to combine 395 # a non-ascii string with a unicode string 396 self.assertRaises(UnicodeDecodeError, 397 self.tester.log, 398 'abc\xf3n%s:', 399 u'a')400402 self.tester.log('abc: %s', u'\xc3\xa4')
Trees | Indices | Help |
---|
Generated by Epydoc 3.0.1 on Fri Apr 29 18:56:45 2011 | http://epydoc.sourceforge.net |