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