File: //usr/local/lib/python3.7/test/test_importlib/__pycache__/test_locks.cpython-37.opt-1.pyc
B
��gD � @ s� d dl mZ e�d�ZddlZddlZddlZddlZddl m
Z
ddl mZ G dd� d�Zd d
� e�
� D �Zejeejed�\ZZG dd
� d
�Zdd
� e�
� D �Zejeeed�\ZZG dd� d�Zejeed�\ZZe
jdd� �Zedkr�e� dS )� )�util� importlib� N)�support)�
lock_testsc @ s8 e Zd Zedd� �ZdZdZdZdZdZ dZ
dZdZdS )�ModuleLockAsRLockTestsc C s
| � d�S )NZ some_lock)�LockType)�cls� r
�:/usr/local/lib/python3.7/test/test_importlib/test_locks.py�<lambda> � zModuleLockAsRLockTests.<lambda>N)
�__name__�
__module__�__qualname__�classmethodZlocktypeZtest__is_ownedZtest_try_acquireZtest_try_acquire_contendedZ test_withZtest_timeoutZtest_release_save_unacquiredZ test_reprZtest_locked_reprr
r
r
r r s r c C s i | ]\}}|j j|�qS r
)�
_bootstrap�_ModuleLock)�.0�kind� splitinitr
r
r �
<dictcomp> s r )r c @ s4 e Zd Zdd� Zdd� Zdd� Zdd� Zd d
� ZdS )�DeadlockAvoidanceTestsc C s8 yt �� | _t�d� W n tk
r2 d | _Y nX d S )Ng���ư>)�sys�getswitchinterval�old_switchintervalr �setswitchinterval�AttributeError)�selfr
r
r �setUp+ s
zDeadlockAvoidanceTests.setUpc C s | j d k rt�| j � d S )N)r r r )r r
r
r �tearDown2 s
zDeadlockAvoidanceTests.tearDownc s� d� �fdd�t � �D ��� �fdd�t � �D ��|r<� }n� d }t�|��g ��fdd������fdd �}t�||��� ��t��|� �S )
N�
c s g | ]}� � t|���qS r
)r �str)r �i)r r
r �
<listcomp>8 s zFDeadlockAvoidanceTests.run_deadlock_avoidance_test.<locals>.<listcomp>c s$ g | ]}�| �|d � f�qS )r r
)r r# )�NLOCKS�locksr
r r$ 9 s r c s, y| � � W n � jk
r" dS X dS dS )zOTry to acquire the lock. Return True on success,
False on deadlock.FTN)�acquire�
DeadlockError)�lock)r r
r �_acquireA s
zDDeadlockAvoidanceTests.run_deadlock_avoidance_test.<locals>._acquirec sN �� � \} }� | �}��� � |�}��||f� |r>|�� |rJ| �� d S )N)�pop�wait�append�release)�a�bZra�rb)r* �barrier�pairs�resultsr
r �fK s z=DeadlockAvoidanceTests.run_deadlock_avoidance_test.<locals>.f)�range� threadingZBarrierr ZBunchZwait_for_finished�assertEqual�len)r Zcreate_deadlockZNTHREADSr5 r
)r% r* r2 r&