a  zei@sddlmZedZddlZddlZddlZddlZddl m Z ddl m Z GdddZ d d e DZeje e jed \ZZGd d d Zdd e DZejeeed\ZZGdddZejeed\ZZddZedkredS))util importlibN)support) lock_testsc@s8eZdZeddZdZdZdZdZdZ dZ dZ dZ dS)ModuleLockAsRLockTestscCs |dS)NZ some_lockLockType)clsr R/opt/bitninja-python-dojo/embedded/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 rs 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 tearDown2s zDeadlockAvoidanceTests.tearDowncsdfddtDfddtD|r<}nd}t|gfddfdd }t||t|S) N csg|]}t|qSr )r strrirr r 8rzFDeadlockAvoidanceTests.run_deadlock_avoidance_test..cs$g|]}||dfqS)rr r&)NLOCKSlocksr r r(9rrcs,z |Wnjy"YdS0dSdS)NFT)acquire DeadlockError)lockrr r _acquireAs  zDDeadlockAvoidanceTests.run_deadlock_avoidance_test.._acquirecsN\}}|}|}||f|r>||rJ|dSr")popwaitappendrelease)abZrarb)r.barrierpairsresultsr r fKs z=DeadlockAvoidanceTests.run_deadlock_avoidance_test..f)range threadingBarrierrZBunchZwait_for_finished assertEquallen)r Zcreate_deadlockZNTHREADSr9r )r)r.r6r*r7r8r r run_deadlock_avoidance_test6s   z2DeadlockAvoidanceTests.run_deadlock_avoidance_testcCs>|d}|d}||d||dt||dS)NTTFrTT)r?countZassertGreaterEqualr=r>)r r8Z nb_deadlocksr r r test_deadlockYs   z$DeadlockAvoidanceTests.test_deadlockcCs6|d}||dd||dt|dS)NFr@rrA)r?r=rBr>)r r8r r r test_no_deadlockbs z'DeadlockAvoidanceTests.test_no_deadlockN)rrrr!r#r?rCrDr r r r r)s # rcCsi|]\}}||jjqSr )r_DeadlockErrorrr r r rhs)r r,c@s(eZdZeddZddZddZdS) LifetimeTestscCs|jjSr")initrrr r r bootstraptszLifetimeTests.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_lifetimexs  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 rFrs  rF)rGcCs t}tjtjg|RdSr")rZthreading_setupunittestZaddModuleCleanupZthreading_cleanup) thread_infor r r setUpModulesrU__main__)rZ test_utilZimport_importlibrGrr;rSrKtestrrritemsZ LOCK_TYPESZ test_bothZ RLockTestsZFrozen_ModuleLockAsRLockTestsZSource_ModuleLockAsRLockTestsrZDEADLOCK_ERRORSZFrozen_DeadlockAvoidanceTestsZSource_DeadlockAvoidanceTestsrFZFrozen_LifetimeTestsZSource_LifetimeTestsrUrZunittetsmainr r r r sB     ?