Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Update test_syslog from CPython 3.11.2
  • Loading branch information
CPython Developers authored and youknowone committed Feb 25, 2023
commit a3e60af35ea73d5e39e50de5080a4279591731c5
56 changes: 50 additions & 6 deletions Lib/test/test_syslog.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
from test.support import import_helper
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
Expand All @@ -8,6 +12,9 @@

class Test(unittest.TestCase):

def tearDown(self):
syslog.closelog()

# TODO: RUSTPYTHON
@unittest.expectedFailure
def test_openlog(self):
Expand All @@ -20,22 +27,59 @@ def test_syslog(self):
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):
syslog.setlogmask(syslog.LOG_DEBUG)
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):
syslog.LOG_MASK(syslog.LOG_INFO)

def test_log_upto(self):
syslog.LOG_UPTO(syslog.LOG_INFO)
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()