Your IP : 216.73.216.52


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

U

i�f^(�@s�dZddlZddlZddlZddlZddlmZddlZddl	Z	ej
dd�dkrbe�dej
��e��Z
e��Zejjdko�ejjdkZd	d
�Zdd�Zd
d�ZGdd�dej�Zdd�Zedkr�e�dS)z6PyUnit testing that threads honor our signal semantics�N)�support��winzCan't test signal on %sZpthreadz
mutex+condcCs4t�tj|�}t�tj|�}t�tj|�}|||fS�N)�signal�SIGUSR1�SIGUSR2�SIGALRM)Zfor_usr1Zfor_usr2Zfor_alrmZusr1Zusr2Zalrm�r
�</opt/alt/python38/lib64/python3.8/test/test_threadsignals.py�registerSignalssrcCs(t|dd7<t��t|d<dS)N�tripped��
tripped_by)�signal_blackboard�thread�	get_ident)�sig�framer
r
r�handle_signalssrcCs(t�ttj�t�ttj�t��dSr)�os�kill�process_pidrrr�
signalled_all�releaser
r
r
r�send_signals"src@s�eZdZdd�Zdd�Zdd�Ze�ed�e�e	j
�d�oBe	jj
d	�e�e	j
�d
�d�dd
����Ze�ed�e�e	j
�d�o�e	jj
d	�e�e	j
�d
�d�dd����Zdd�Zdd�Zdd�Zdd�ZdS)�
ThreadSignalsc	Cs�t���t��|��t��W5QRXttjddksPttjddkrtzt�	d�t�
�W5t�	d�X|�ttjdd�|�ttjdt�
��|�ttjdd�|�ttjdt�
��t��dS)Nr
rrr)r�wait_threads_exitr�acquire�spawnSignallingThreadrrrr�alarm�pauseZassertEqualrrr��selfr
r
r�test_signals)s(
�
��zThreadSignals.test_signalscCst�td�dS)Nr
)r�start_new_threadrr"r
r
rrIsz#ThreadSignals.spawnSignallingThreadcCst�dSr)�KeyboardInterrupt)r#rrr
r
r�alarm_interruptLszThreadSignals.alarm_interruptz/POSIX condition variables cannot be interruptedZlinuxzBIssue 34004: musl does not allow interruption of locks by signals.Zopenbsdz%lock cannot be interrupted on OpenBSDc
Cs�t�tj|j�}zPt��}|��t�d�t��}|j	t
|jdd�t��|}|�|d�W5t�d�t�tj|�XdS)Nrr��Ztimeout�@)rr	r'r r�
allocate_lockr�time�	monotonic�assertRaisesr&�
assertLess)r#�oldalrm�lock�t1�dtr
r
r�test_lock_acquire_interruptionOs

z,ThreadSignals.test_lock_acquire_interruptionc
s�t�tj|j�}z�t����fdd�}t���nt�|d��j	dd�r\��
�t�d�q<t�d�t�
�}|jt�j	d	d
�t�
�|}|�|d�W5QRXW5t�d�t�tj|�XdS)Nrcs���dSr)rr
�Zrlockr
r�other_thread�szCThreadSignals.test_rlock_acquire_interruption.<locals>.other_threadr
F�Zblocking�{�G�z�?rr(r)r*)rr	r'r r�RLockrrr%rrr,�sleepr-r.r&r/)r#r0r6r2r3r
r5r�test_rlock_acquire_interruptionns 


z-ThreadSignals.test_rlock_acquire_interruptionc
s�d�_�fdd�}t�tj|�}zn�fdd�}t���Pt�|d��jdd�rd���t	�
d�qD���}���j���|�W5QRXW5t�tj|�XdS)	NFcs
d�_dS)NT)�	sig_recvd)rrr"r
r�
my_handler�sz9ThreadSignals.acquire_retries_on_intr.<locals>.my_handlercs6���t�d�t�ttj�t�d����dS)N��?)	rr,r:rrrrrrr
)r1r
rr6�s


z;ThreadSignals.acquire_retries_on_intr.<locals>.other_threadr
r7r8)r<rrrrrr%rrr,r:Z
assertTrue)r#r1r=�old_handlerr6�resultr
�r1r#r�acquire_retries_on_intr�s
z%ThreadSignals.acquire_retries_on_intrcCs|�t���dSr)rBrr+r"r
r
r�!test_lock_acquire_retries_on_intr�sz/ThreadSignals.test_lock_acquire_retries_on_intrcCs|�t���dSr)rBrr9r"r
r
r�"test_rlock_acquire_retries_on_intr�sz0ThreadSignals.test_rlock_acquire_retries_on_intrc
s�d�_d�_d�_t������t�������fdd�}t�tj|�}z���fdd�}�fdd�}t�	��Vt�
|d�|�������j�jd	����j�jd
����jd�W5QRXW5t�tj|�XdS)Nrcs�jd7_dS)Nr)�
sigs_recvd)Zsignumrr"r
rr=�sz@ThreadSignals.test_interrupted_timed_acquire.<locals>.my_handlercs$t���_�jdd�t���_dS)Nr>r))r,r-�startr�endr
rAr
r�
timed_acquire�s
zCThreadSignals.test_interrupted_timed_acquire.<locals>.timed_acquirecs2td�D]}t�d�t�ttj�q���dS)N�(g{�G�z�?)	�ranger,r:rrrrrr)�_)�doner
rr�s
zBThreadSignals.test_interrupted_timed_acquire.<locals>.send_signalsr
g@g333333�?)
rFrGrErr+rrrrrr%r/Z
assertGreater)r#r=r?rHrr
)rLr1r#r�test_interrupted_timed_acquire�s(
z,ThreadSignals.test_interrupted_timed_acquireN)�__name__�
__module__�__qualname__r$rr'�unittestZskipIf�USING_PTHREAD_COND�sys�platform�
startswith�thread_info�versionr4r;rBrCrDrMr
r
r
rr's: ������ rcCsRtjddd�tjddd�tjddd�iatttt�}zt�t	�W5t|�XdS)Nr)r
r)
rrrr	rrrrZrun_unittestr)Zoldsigsr
r
r�	test_main�s�rX�__main__)�__doc__rQrrrSZtestr�_threadrr,rTZSkipTest�getpidrr+rrV�namer1rRrrrZTestCaserrXrNr
r
r
r�<module>s,
�	C