| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- from test.support import import_helper, threading_helper
- syslog = import_helper.import_module("syslog") #skip if not supported
- from test import support
- import sys
- import threading
- import time
- import unittest
- # XXX(nnorwitz): This test sucks. I don't know of a platform independent way
- # to verify that the messages were really logged.
- # The only purpose of this test is to verify the code doesn't crash or leak.
- class Test(unittest.TestCase):
- def tearDown(self):
- syslog.closelog()
- def test_openlog(self):
- syslog.openlog('python')
- # Issue #6697.
- self.assertRaises(UnicodeEncodeError, syslog.openlog, '\uD800')
- def test_syslog(self):
- syslog.openlog('python')
- syslog.syslog('test message from python test_syslog')
- syslog.syslog(syslog.LOG_ERR, 'test error from python test_syslog')
- def test_syslog_implicit_open(self):
- syslog.closelog() # Make sure log is closed
- syslog.syslog('test message from python test_syslog')
- syslog.syslog(syslog.LOG_ERR, 'test error from python test_syslog')
- def test_closelog(self):
- syslog.openlog('python')
- syslog.closelog()
- syslog.closelog() # idempotent operation
- def test_setlogmask(self):
- mask = syslog.LOG_UPTO(syslog.LOG_WARNING)
- oldmask = syslog.setlogmask(mask)
- self.assertEqual(syslog.setlogmask(0), mask)
- self.assertEqual(syslog.setlogmask(oldmask), mask)
- def test_log_mask(self):
- mask = syslog.LOG_UPTO(syslog.LOG_WARNING)
- self.assertTrue(mask & syslog.LOG_MASK(syslog.LOG_WARNING))
- self.assertTrue(mask & syslog.LOG_MASK(syslog.LOG_ERR))
- self.assertFalse(mask & syslog.LOG_MASK(syslog.LOG_INFO))
- def test_openlog_noargs(self):
- syslog.openlog()
- syslog.syslog('test message from python test_syslog')
- @threading_helper.requires_working_threading()
- def test_syslog_threaded(self):
- start = threading.Event()
- stop = False
- def opener():
- start.wait(10)
- i = 1
- while not stop:
- syslog.openlog(f'python-test-{i}') # new string object
- i += 1
- def logger():
- start.wait(10)
- while not stop:
- syslog.syslog('test message from python test_syslog')
- orig_si = sys.getswitchinterval()
- support.setswitchinterval(1e-9)
- try:
- threads = [threading.Thread(target=opener)]
- threads += [threading.Thread(target=logger) for k in range(10)]
- with threading_helper.start_threads(threads):
- start.set()
- time.sleep(0.1)
- stop = True
- finally:
- sys.setswitchinterval(orig_si)
- if __name__ == "__main__":
- unittest.main()
|