a 7dg4@sddlmZedZddlZddlZddlZddlm Z ddlm Z GdddZ d d e DZ eje e je d \ZZGd d d Zdd e DZejee ed\ZZGdddZejeed\ZZe jddZedkredS))util importlibN)support) lock_testsc@s8eZdZeddZdZdZdZdZdZ dZ dZ dZ dS)ModuleLockAsRLockTestscCs |dS)NZ some_lockLockType)clsr :/usr/local/lib/python3.9/test/test_importlib/test_locks.pyzModuleLockAsRLockTests.N) __name__ __module__ __qualname__ classmethodZlocktypeZtest__is_ownedZtest_try_acquireZtest_try_acquire_contendedZ test_withZ test_timeoutZtest_release_save_unacquiredZ test_reprZtest_locked_reprr r r r r s rcCsi|]\}}||jjqSr ) _bootstrap _ModuleLock.0kindZ splitinitr r r srrc@s4eZdZddZddZddZddZd d Zd S) DeadlockAvoidanceTestscCs6zt|_tdWnty0d|_Yn0dS)Ngư>)sysgetswitchintervalold_switchintervalrsetswitchintervalAttributeErrorselfr r r setUp*s   zDeadlockAvoidanceTests.setUpcCs|jdurt|jdSN)rrrrr r r tearDown1s zDeadlockAvoidanceTests.tearDowncsdfddtDfddtD|r<}nd}t|gfddfdd }t||t|S) N csg|]}t|qSr )r strrirr r 7rzFDeadlockAvoidanceTests.run_deadlock_avoidance_test..cs$g|]}||dfqS)rr r&)NLOCKSlocksr r r(8rrcs,z |Wnjy"YdS0dSdS)zOTry to acquire the lock. Return True on success, False on deadlock.FTN)acquire DeadlockError)lockrr r _acquire@s  zDDeadlockAvoidanceTests.run_deadlock_avoidance_test.._acquirecsN\}}|}|}||f|r>||rJ|dSr")popwaitappendrelease)abZrarb)r.barrierpairsresultsr r fJs z=DeadlockAvoidanceTests.run_deadlock_avoidance_test..f)range threadingBarrierrZBunchZwait_for_finished assertEquallen)r Zcreate_deadlockZNTHREADSr9r )r)r.r6r*r7r8r r run_deadlock_avoidance_test5s   z2DeadlockAvoidanceTests.run_deadlock_avoidance_testcCs>|d}|d}||d||dt||dS)NTTFrTT)r?countZassertGreaterEqualr=r>)r r8Z nb_deadlocksr r r test_deadlockXs   z$DeadlockAvoidanceTests.test_deadlockcCs6|d}||dd||dt|dS)NFr@rrA)r?r=rBr>)r r8r r r test_no_deadlockas z'DeadlockAvoidanceTests.test_no_deadlockN)rrrr!r#r?rCrDr r r r r(s # rcCsi|]\}}||jjqSr )r_DeadlockErrorrr r r rgs)r r,c@s(eZdZeddZddZddZdS) LifetimeTestscCs|jjSr")initrrr r r bootstrapsszLifetimeTests.bootstrapcCsdd}|||jj|j|}|||jjt|}~t|||jj| |dS)NZxyzzy) Z assertNotInrH _module_locks_get_module_lockZassertInweakrefrefr gc_collectZ assertIsNone)r namer-wrr r r test_lock_lifetimews  z LifetimeTests.test_lock_lifetimecCs&t|dt|jj|jjdS)Nr)rrMr=r>rHrIrr r r test_all_locksszLifetimeTests.test_all_locksN)rrrpropertyrHrPrQr r r r rFqs  rF)rGcCstttttttdSr")rZ run_unittestFrozen_ModuleLockAsRLockTestsSource_ModuleLockAsRLockTestsFrozen_DeadlockAvoidanceTestsSource_DeadlockAvoidanceTestsFrozen_LifetimeTestsSource_LifetimeTestsr r r r test_mainsrY__main__)rZ test_utilZimport_importlibrGrr;rKtestrrritemsZ LOCK_TYPESZ test_bothZ RLockTestsrSrTrZDEADLOCK_ERRORSrUrVrFrWrXZ reap_threadsrYrr r r r sB     ?