def test_getLogObserverFile(self): """ When C{logfile} contains a file name, L{app.AppLogger._getLogObserver} returns a log observer pointing at the specified path, and a signal handler rotating the log is installed. """ logFiles = _patchFileLogObserver(self.patch) filename = self.mktemp() logger = UnixAppLogger({"logfile": filename}) observer = logger._getLogObserver() self.assertEqual(len(logFiles), 1) self.assertEqual(logFiles[0].path, os.path.abspath(filename)) self.assertEqual(len(self.signals), 1) self.assertEqual(self.signals[0][0], signal.SIGUSR1) d = Deferred() def rotate(): d.callback(None) logFiles[0].rotate = rotate rotateLog = self.signals[0][1] rotateLog(None, None) return d
def test_getLogObserverFile(self): """ When C{logfile} contains a file name, L{app.AppLogger._getLogObserver} returns a log observer pointing at the specified path, and a signal handler rotating the log is installed. """ logFiles = _patchFileLogObserver(self.patch) filename = self.mktemp() logger = UnixAppLogger({"logfile": filename}) observer = logger._getLogObserver() self.assertEquals(len(logFiles), 1) self.assertEquals(logFiles[0].path, os.path.abspath(filename)) self.assertEquals(len(self.signals), 1) self.assertEquals(self.signals[0][0], signal.SIGUSR1) d = Deferred() def rotate(): d.callback(None) logFiles[0].rotate = rotate rotateLog = self.signals[0][1] rotateLog(None, None) return d
def test_getLogObserverSyslog(self): """ If C{syslog} is set to C{True}, L{UnixAppLogger._getLogObserver} starts a L{syslog.SyslogObserver} with given C{prefix}. """ logs = _setupSyslog(self) logger = UnixAppLogger({"syslog": True, "prefix": "test-prefix"}) observer = logger._getLogObserver() self.assertEqual(logs, ["test-prefix"]) observer({"a": "b"}) self.assertEqual(logs, ["test-prefix", {"a": "b"}])
def test_getLogObserverDefaultFile(self): """ When daemonized and C{logfile} is empty, the observer returned by L{UnixAppLogger._getLogObserver} points at C{twistd.log} in the current directory. """ logFiles = _patchFileLogObserver(self.patch) logger = UnixAppLogger({"logfile": "", "nodaemon": False}) observer = logger._getLogObserver() self.assertEquals(len(logFiles), 1) self.assertEquals(logFiles[0].path, os.path.abspath("twistd.log"))
def test_getLogObserverSyslog(self): """ If C{syslog} is set to C{True}, L{UnixAppLogger._getLogObserver} starts a L{syslog.SyslogObserver} with given C{prefix}. """ class fakesyslog(object): def openlog(self, prefix): self.prefix = prefix syslogModule = fakesyslog() self.patch(syslog, "syslog", syslogModule) logger = UnixAppLogger({"syslog": True, "prefix": "test-prefix"}) observer = logger._getLogObserver() self.assertEquals(syslogModule.prefix, "test-prefix")
def test_getLogObserverSyslog(self): """ If C{syslog} is set to C{True}, L{UnixAppLogger._getLogObserver} starts a L{syslog.SyslogObserver} with given C{prefix}. """ class fakesyslogobserver(object): def __init__(self, prefix): fakesyslogobserver.prefix = prefix def emit(self, eventDict): pass self.patch(syslog, "SyslogObserver", fakesyslogobserver) logger = UnixAppLogger({"syslog": True, "prefix": "test-prefix"}) observer = logger._getLogObserver() self.assertEquals(fakesyslogobserver.prefix, "test-prefix")
def test_getLogObserverDontOverrideSignalHandler(self): """ If a signal handler is already installed, L{UnixAppLogger._getLogObserver} doesn't override it. """ def fakeGetSignal(sig): self.assertEquals(sig, signal.SIGUSR1) return object() self.patch(signal, "getsignal", fakeGetSignal) filename = self.mktemp() logger = UnixAppLogger({"logfile": filename}) observer = logger._getLogObserver() self.assertEquals(self.signals, [])
def test_getLogObserverDontOverrideSignalHandler(self): """ If a signal handler is already installed, L{UnixAppLogger._getLogObserver} doesn't override it. """ def fakeGetSignal(sig): self.assertEqual(sig, signal.SIGUSR1) return object() self.patch(signal, "getsignal", fakeGetSignal) filename = self.mktemp() logger = UnixAppLogger({"logfile": filename}) observer = logger._getLogObserver() self.assertEqual(self.signals, [])
def test_getLogObserverStdout(self): """ When non-daemonized and C{logfile} is empty or set to C{-}, L{UnixAppLogger._getLogObserver} returns a log observer pointing at C{sys.stdout}. """ logFiles = _patchFileLogObserver(self.patch) logger = UnixAppLogger({"logfile": "-", "nodaemon": True}) observer = logger._getLogObserver() self.assertEquals(len(logFiles), 1) self.assertIdentical(logFiles[0], sys.stdout) logger = UnixAppLogger({"logfile": "", "nodaemon": True}) observer = logger._getLogObserver() self.assertEquals(len(logFiles), 2) self.assertIdentical(logFiles[1], sys.stdout)
def test_getLogObserverStdoutDaemon(self): """ When daemonized and C{logfile} is set to C{-}, L{UnixAppLogger._getLogObserver} raises C{SystemExit}. """ logger = UnixAppLogger({"logfile": "-", "nodaemon": False}) error = self.assertRaises(SystemExit, logger._getLogObserver) self.assertEqual(str(error), "Daemons cannot log to stdout, exiting!")
def test_getLogObserverStdout(self): """ When non-daemonized and C{logfile} is empty or set to C{-}, L{UnixAppLogger._getLogObserver} returns a log observer pointing at C{sys.stdout}. """ logFiles = _patchFileLogObserver(self.patch) logger = UnixAppLogger({"logfile": "-", "nodaemon": True}) observer = logger._getLogObserver() self.assertEqual(len(logFiles), 1) self.assertIdentical(logFiles[0], sys.stdout) logger = UnixAppLogger({"logfile": "", "nodaemon": True}) observer = logger._getLogObserver() self.assertEqual(len(logFiles), 2) self.assertIdentical(logFiles[1], sys.stdout)