Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/test_threadsignals.cpython-35.pyc



��Yf�$�@s/dZddlZddlZddlZddlZddlmZmZed�Zddl	Z	ej
dd�dkr�ejdej
��ej�Z
ej�Zejjdko�ejjd	kZd
d�Zdd
�Zdd�ZGdd�dej�Zdd�Zedkr+e�dS)z6PyUnit testing that threads honor our signal semantics�N)�run_unittest�
import_module�_thread��winzCan't test signal on %sZpthreadz
mutex+condcCsLtjtj|�}tjtj|�}tjtj|�}|||fS)N)�signal�SIGUSR1�SIGUSR2�SIGALRM)Zfor_usr1Zfor_usr2Zfor_alrmZusr1Zusr2Zalrm�r�</opt/alt/python35/lib64/python3.5/test/test_threadsignals.py�registerSignalssr
cCs*t|dd7<tj�t|d<dS)N�tripped��
tripped_by)�signal_blackboard�thread�	get_ident)�sig�framerrr�handle_signalssrcCs4tjttj�tjttj�tj�dS)N)�os�kill�process_pidrrr	�
signalled_all�releaserrrr�send_signals"src@s�eZdZdd�Zdd�Zdd�Zejed�eje	j
jd�d	�d
d���Zejed�eje	j
jd�d	�dd
���Z
dd�Zdd�Zdd�Zdd�ZdS)�
ThreadSignalscCs�tj�|j�tj�ttjddksLttjddkrptjd�tj�tjd�|j	ttjdd�|j	ttjdt
j��|j	ttjdd�|j	ttjdt
j��tj�dS)Nrrrr)
r�acquire�spawnSignallingThreadrrrr	�alarm�pauseZassertEqualrrr)�selfrrr�test_signals)s







zThreadSignals.test_signalscCstjtf�dS)N)r�start_new_threadr)r"rrrrEsz#ThreadSignals.spawnSignallingThreadcCs
t�dS)N)�KeyboardInterrupt)r"rrrrr�alarm_interruptHszThreadSignals.alarm_interruptz/POSIX condition variables cannot be interruptedZopenbsdz%lock cannot be interrupted on OpenBSDcCs�tjtj|j�}zltj�}|j�tjd�tj�}|jt	|jdd�tj�|}|j
|d�Wdtjtj|�XdS)Nr�timeout�g@)rr
r&r�
allocate_lockrr �time�assertRaisesr%�
assertLess)r"�oldalrm�lock�t1�dtrrr�test_lock_acquire_interruptionKs


z,ThreadSignals.test_lock_acquire_interruptioncs�tjtj|j�}z�tj���fdd�}tj|f�x-�jdd�rx�j�tj	d�qLWtj
d�tj�}|jt�jdd�tj�|}|j
|d	�Wdtjtj|�XdS)
Ncs�j�dS)N)rr)�rlockrr�other_threadtszCThreadSignals.test_rlock_acquire_interruption.<locals>.other_thread�blockingFg{�G�z�?rr'r(g@)rr
r&r�RLockr$rrr*�sleepr r+r%r,)r"r-r3r/r0r)r2r�test_rlock_acquire_interruptiones


z-ThreadSignals.test_rlock_acquire_interruptioncs�d�_�fdd�}tjtj|�}z�fdd�}tj|f�x-�jdd�r��j�tjd�qXW�j�}�j	�j��j	|�Wdtjtj|�XdS)NFcs
d�_dS)NT)�	sig_recvd)rr)r"rr�
my_handler�sz9ThreadSignals.acquire_retries_on_intr.<locals>.my_handlercsE�j�tjd�tjttj�tjd��j�dS)Ng�?)	rr*r6rrrrrrr)r.rrr3�s



z;ThreadSignals.acquire_retries_on_intr.<locals>.other_threadr4g{�G�z�?)
r8rrrr$rrr*r6Z
assertTrue)r"r.r9�old_handlerr3�resultr)r.r"r�acquire_retries_on_intr�s	
z%ThreadSignals.acquire_retries_on_intrcCs|jtj��dS)N)r<rr))r"rrr�!test_lock_acquire_retries_on_intr�sz/ThreadSignals.test_lock_acquire_retries_on_intrcCs|jtj��dS)N)r<rr5)r"rrr�"test_rlock_acquire_retries_on_intr�sz0ThreadSignals.test_rlock_acquire_retries_on_intrcsd�_d�_d�_tj���j�tj���j��fdd�}tjtj|�}z���fdd�}�fdd�}tj|f�|��j��j	�j�jd��j
�j�jd	��j
�jd�Wdtjtj|�XdS)
Nrcs�jd7_dS)Nr)�
sigs_recvd)Zsignumr)r"rrr9�sz@ThreadSignals.test_interrupted_timed_acquire.<locals>.my_handlercs2tj��_�jdd�tj��_dS)Nr'g�?)r*�startr�endr)r.r"rr�
timed_acquire�szCThreadSignals.test_interrupted_timed_acquire.<locals>.timed_acquirecsEx4td�D]&}tjd�tjttj�q
W�j�dS)N�(g{�G�z�?)	�ranger*r6rrrrrr)�_)�donerrr�s
zBThreadSignals.test_interrupted_timed_acquire.<locals>.send_signalsg@g333333�?)r@rAr?rr)rrrr$r,Z
assertGreater)r"r9r:rBrr)rFr.r"r�test_interrupted_timed_acquire�s&			


z,ThreadSignals.test_interrupted_timed_acquireN)�__name__�
__module__�__qualname__r#rr&�unittestZskipIf�USING_PTHREAD_COND�sys�platform�
startswithr1r7r<r=r>rGrrrrr's		rcCswtjdddditjdddditjddddiiatttt�}ztt�Wdt|�XdS)Nrrr)	rrr	r
rr
rrr)Zoldsigsrrr�	test_main�srP�__main__)�__doc__rKrrrMZtest.supportrrrr*rNZSkipTest�getpidrr)r�thread_info�namer.rLr
rrZTestCaserrPrHrrrr�<module>s(	�