Your IP : 216.73.217.32


Current Path : /opt/alt/python38/lib64/python3.8/test/test_importlib/__pycache__/
Upload File :
Current File : //opt/alt/python38/lib64/python3.8/test/test_importlib/__pycache__/test_locks.cpython-38.pyc

U

i�f4�@s�ddlmZe�d�ZddlZddlZddlZddlm	Z	ddlm
Z
Gdd�d�Zd	d
�e��D�Z
ejee
je
d�\ZZGdd
�d
�Zdd
�e��D�Zejee
ed�\ZZGdd�d�Zejeed�\ZZe	jdd��Zedkr�e�dS)�)�util�	importlib�N)�support)�
lock_testsc@s8eZdZedd��ZdZdZdZdZdZ	dZ
dZdZdS)�ModuleLockAsRLockTestscCs
|�d�S)NZ	some_lock��LockType)�cls�r�C/opt/alt/python38/lib64/python3.8/test/test_importlib/test_locks.py�<lambda>�zModuleLockAsRLockTests.<lambda>N)
�__name__�
__module__�__qualname__�classmethodZlocktypeZtest__is_ownedZtest_try_acquireZtest_try_acquire_contendedZ	test_withZtest_timeoutZtest_release_save_unacquiredZ	test_reprZtest_locked_reprrrrrr
srcCsi|]\}}||jj�qSr)�
_bootstrap�_ModuleLock��.0ZkindZ	splitinitrrr�
<dictcomp>s�rrc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�DeadlockAvoidanceTestscCs8zt��|_t�d�Wntk
r2d|_YnXdS)Ng���ư>)�sys�getswitchinterval�old_switchintervalr�setswitchinterval�AttributeError��selfrrr�setUp*s

zDeadlockAvoidanceTests.setUpcCs|jdk	rt�|j�dS�N)rrrrrrr�tearDown1s
zDeadlockAvoidanceTests.tearDowncs�d��fdd�t��D����fdd�t��D��|r<�}n�d}t�|��g��fdd������fdd	�}t�||�����t��|��S)
N�
csg|]}��t|���qSr)r	�str�r�irrr�
<listcomp>7szFDeadlockAvoidanceTests.run_deadlock_avoidance_test.<locals>.<listcomp>cs$g|]}�|�|d�f�qS)rrr%)�NLOCKS�locksrrr'8srcs.z|��Wn�jk
r$YdSXdSdS)zOTry to acquire the lock. Return True on success,
            False on deadlock.FTN)�acquire�
DeadlockError)�lockrrr�_acquire@s
zDDeadlockAvoidanceTests.run_deadlock_avoidance_test.<locals>._acquirecsN���\}}�|�}����|�}��||f�|r>|��|rJ|��dSr!)�pop�wait�append�release)�a�bZra�rb)r-�barrier�pairs�resultsrr�fJsz=DeadlockAvoidanceTests.run_deadlock_avoidance_test.<locals>.f)�range�	threadingZBarrierrZBunchZwait_for_finished�assertEqual�len)rZcreate_deadlockZNTHREADSr8r)r(r-r5r)r6r7rr�run_deadlock_avoidance_test5s


z2DeadlockAvoidanceTests.run_deadlock_avoidance_testcCs>|�d�}|�d�}|�|d�|�|�d�t|�|�dS)NT�TFr�TT)r=�countZassertGreaterEqualr;r<)rr7Znb_deadlocksrrr�
test_deadlockXs

z$DeadlockAvoidanceTests.test_deadlockcCs6|�d�}|�|�d�d�|�|�d�t|��dS)NFr>rr?)r=r;r@r<)rr7rrr�test_no_deadlockas
z'DeadlockAvoidanceTests.test_no_deadlockN)rrrr r"r=rArBrrrrr(s
#	rcCsi|]\}}||jj�qSr)r�_DeadlockErrorrrrrrgs�)r	r+c@s(eZdZedd��Zdd�Zdd�ZdS)�
LifetimeTestscCs|jjSr!)�initrrrrr�	bootstrapsszLifetimeTests.bootstrapcCsdd}|�||jj�|j�|�}|�||jj�t�|�}~t��|�||jj�|�	|��dS)NZxyzzy)
ZassertNotInrF�
_module_locks�_get_module_lockZassertIn�weakref�refr�
gc_collectZassertIsNone)r�namer,Zwrrrr�test_lock_lifetimews
z LifetimeTests.test_lock_lifetimecCs&t��|�dt|jj�|jj�dS)Nr)rrKr;r<rFrGrrrr�test_all_locks�s�zLifetimeTests.test_all_locksN)rrr�propertyrFrMrNrrrrrDqs
rD)rEcCst�tttttt�dSr!)rZrun_unittest�Frozen_ModuleLockAsRLockTests�Source_ModuleLockAsRLockTests�Frozen_DeadlockAvoidanceTests�Source_DeadlockAvoidanceTests�Frozen_LifetimeTests�Source_LifetimeTestsrrrr�	test_main�s�rV�__main__)�rZ	test_utilZimport_importlibrErr:rIZtestrrr�itemsZ
LOCK_TYPESZ	test_bothZ
RLockTestsrPrQrZDEADLOCK_ERRORSrRrSrDrTrUZreap_threadsrVrrrrr�<module>sB
�
��?����