xref: /third_party/python/Lib/test/test_syslog.py (revision 7db96d56)
17db96d56Sopenharmony_cifrom test.support import import_helper, threading_helper
27db96d56Sopenharmony_cisyslog = import_helper.import_module("syslog") #skip if not supported
37db96d56Sopenharmony_cifrom test import support
47db96d56Sopenharmony_ciimport sys
57db96d56Sopenharmony_ciimport threading
67db96d56Sopenharmony_ciimport time
77db96d56Sopenharmony_ciimport unittest
87db96d56Sopenharmony_ci
97db96d56Sopenharmony_ci# XXX(nnorwitz): This test sucks.  I don't know of a platform independent way
107db96d56Sopenharmony_ci# to verify that the messages were really logged.
117db96d56Sopenharmony_ci# The only purpose of this test is to verify the code doesn't crash or leak.
127db96d56Sopenharmony_ci
137db96d56Sopenharmony_ciclass Test(unittest.TestCase):
147db96d56Sopenharmony_ci
157db96d56Sopenharmony_ci    def tearDown(self):
167db96d56Sopenharmony_ci        syslog.closelog()
177db96d56Sopenharmony_ci
187db96d56Sopenharmony_ci    def test_openlog(self):
197db96d56Sopenharmony_ci        syslog.openlog('python')
207db96d56Sopenharmony_ci        # Issue #6697.
217db96d56Sopenharmony_ci        self.assertRaises(UnicodeEncodeError, syslog.openlog, '\uD800')
227db96d56Sopenharmony_ci
237db96d56Sopenharmony_ci    def test_syslog(self):
247db96d56Sopenharmony_ci        syslog.openlog('python')
257db96d56Sopenharmony_ci        syslog.syslog('test message from python test_syslog')
267db96d56Sopenharmony_ci        syslog.syslog(syslog.LOG_ERR, 'test error from python test_syslog')
277db96d56Sopenharmony_ci
287db96d56Sopenharmony_ci    def test_syslog_implicit_open(self):
297db96d56Sopenharmony_ci        syslog.closelog() # Make sure log is closed
307db96d56Sopenharmony_ci        syslog.syslog('test message from python test_syslog')
317db96d56Sopenharmony_ci        syslog.syslog(syslog.LOG_ERR, 'test error from python test_syslog')
327db96d56Sopenharmony_ci
337db96d56Sopenharmony_ci    def test_closelog(self):
347db96d56Sopenharmony_ci        syslog.openlog('python')
357db96d56Sopenharmony_ci        syslog.closelog()
367db96d56Sopenharmony_ci        syslog.closelog()  # idempotent operation
377db96d56Sopenharmony_ci
387db96d56Sopenharmony_ci    def test_setlogmask(self):
397db96d56Sopenharmony_ci        mask = syslog.LOG_UPTO(syslog.LOG_WARNING)
407db96d56Sopenharmony_ci        oldmask = syslog.setlogmask(mask)
417db96d56Sopenharmony_ci        self.assertEqual(syslog.setlogmask(0), mask)
427db96d56Sopenharmony_ci        self.assertEqual(syslog.setlogmask(oldmask), mask)
437db96d56Sopenharmony_ci
447db96d56Sopenharmony_ci    def test_log_mask(self):
457db96d56Sopenharmony_ci        mask = syslog.LOG_UPTO(syslog.LOG_WARNING)
467db96d56Sopenharmony_ci        self.assertTrue(mask & syslog.LOG_MASK(syslog.LOG_WARNING))
477db96d56Sopenharmony_ci        self.assertTrue(mask & syslog.LOG_MASK(syslog.LOG_ERR))
487db96d56Sopenharmony_ci        self.assertFalse(mask & syslog.LOG_MASK(syslog.LOG_INFO))
497db96d56Sopenharmony_ci
507db96d56Sopenharmony_ci    def test_openlog_noargs(self):
517db96d56Sopenharmony_ci        syslog.openlog()
527db96d56Sopenharmony_ci        syslog.syslog('test message from python test_syslog')
537db96d56Sopenharmony_ci
547db96d56Sopenharmony_ci    @threading_helper.requires_working_threading()
557db96d56Sopenharmony_ci    def test_syslog_threaded(self):
567db96d56Sopenharmony_ci        start = threading.Event()
577db96d56Sopenharmony_ci        stop = False
587db96d56Sopenharmony_ci        def opener():
597db96d56Sopenharmony_ci            start.wait(10)
607db96d56Sopenharmony_ci            i = 1
617db96d56Sopenharmony_ci            while not stop:
627db96d56Sopenharmony_ci                syslog.openlog(f'python-test-{i}')  # new string object
637db96d56Sopenharmony_ci                i += 1
647db96d56Sopenharmony_ci        def logger():
657db96d56Sopenharmony_ci            start.wait(10)
667db96d56Sopenharmony_ci            while not stop:
677db96d56Sopenharmony_ci                syslog.syslog('test message from python test_syslog')
687db96d56Sopenharmony_ci
697db96d56Sopenharmony_ci        orig_si = sys.getswitchinterval()
707db96d56Sopenharmony_ci        support.setswitchinterval(1e-9)
717db96d56Sopenharmony_ci        try:
727db96d56Sopenharmony_ci            threads = [threading.Thread(target=opener)]
737db96d56Sopenharmony_ci            threads += [threading.Thread(target=logger) for k in range(10)]
747db96d56Sopenharmony_ci            with threading_helper.start_threads(threads):
757db96d56Sopenharmony_ci                start.set()
767db96d56Sopenharmony_ci                time.sleep(0.1)
777db96d56Sopenharmony_ci                stop = True
787db96d56Sopenharmony_ci        finally:
797db96d56Sopenharmony_ci            sys.setswitchinterval(orig_si)
807db96d56Sopenharmony_ci
817db96d56Sopenharmony_ci
827db96d56Sopenharmony_ciif __name__ == "__main__":
837db96d56Sopenharmony_ci    unittest.main()
84