HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/test/__pycache__/test_threadsignals.cpython-310.opt-1.pyc
o

�io(�@s�dZddlZddlZddlZddlZddlmZddlZddl	Z	ej
dd�dkr1e�dej
��e��Z
e��ZejjdkoDejjdkZd	d
�Zdd�Zd
d�ZGdd�dej�Zdd�Zedkrhe��dSdS)z6PyUnit testing that threads honor our signal semantics�N)�threading_helper��winzCan't test signal on %sZpthreadz
mutex+condcCs4t�tj|�}t�tj|�}t�tj|�}|||fS�N)�signal�SIGUSR1�SIGUSR2�SIGALRM)Zfor_usr1Zfor_usr2Zfor_alrmZusr1Zusr2Zalrm�r
�4/usr/local/lib/python3.10/test/test_threadsignals.py�registerSignalss
r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"src@s�eZdZdd�Zdd�Zdd�Ze�ed�e�e	j
�d�o!e	jj
d	�e�e	j
�d
�d�dd
����Ze�ed�e�e	j
�d�oDe	jj
d	�e�e	j
�d
�d�dd����Zdd�Zdd�Zdd�Zdd�ZdS)�
ThreadSignalsc	Cs�t���t��|��t��Wd�n1swYttjddks2ttjddkrIzt�	d�t�
�Wt�	d�nt�	d�w|�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�r)�KeyboardInterrupt)r#rrr
r
r�alarm_interruptLszThreadSignals.alarm_interruptz/POSIX condition variables cannot be interrupted�linuxzBIssue 34004: musl does not allow interruption of locks by signals.Zopenbsdz%lock cannot be interrupted on OpenBSDc
Cs�t�tj|j�}z5t��}|��t�d�t��}|j	t
|jdd�t��|}|�|d�Wt�d�t�tj|�dSt�d�t�tj|�w)Nr���timeout�@r)rr	r'r�
allocate_lockrr �time�	monotonic�assertRaisesr&�
assertLess)r#�oldalrm�lock�t1�dtr
r
r�test_lock_acquire_interruptionOs


�z,ThreadSignals.test_lock_acquire_interruptionc
st�tj|j�}zut����fdd�}t���At�|d��jdd�r3��	�t
�d��jdd�s$t�d�t
�
�}|jt�jdd	�t
�
�|}|�|d
�Wd�n1s[wYWt�d�t�tj|�dSWt�d�t�tj|�dSt�d�t�tj|�w)Ncs���dSr)rr
�Zrlockr
r�other_thread�szCThreadSignals.test_rlock_acquire_interruption.<locals>.other_threadr
F��blocking�{�G�z�?rr)r*r,r)rr	r'r�RLockrrr%rrr.�sleepr r/r0r&r1)r#r2r8r4r5r
r7r�test_rlock_acquire_interruptionns.

�
�

�


�z-ThreadSignals.test_rlock_acquire_interruptionc
s�d�_�fdd�}t�tj|�}zX�fdd�}t���2t�|d��jdd�r7���t	�
d��jdd�s(���}���j���|�Wd�n1sPwYWt�tj|�dSWt�tj|�dSt�tj|�w)	NFcs
d�_dS)NT)�	sig_recvd)rrr"r
r�
my_handler�s
z9ThreadSignals.acquire_retries_on_intr.<locals>.my_handlercs6���t�d�t�ttj�t�d����dS)N��?)	rr.r=rrrrrrr
)r3r
rr8�s


z;ThreadSignals.acquire_retries_on_intr.<locals>.other_threadr
r9r;)r?rrrrrr%rrr.r=Z
assertTrue)r#r3r@�old_handlerr8�resultr
�r3r#r�acquire_retries_on_intr�s$


��
�"
z%ThreadSignals.acquire_retries_on_intrcC�|�t���dSr)rErr-r"r
r
r�!test_lock_acquire_retries_on_intr��z/ThreadSignals.test_lock_acquire_retries_on_intrcCrFr)rErr<r"r
r
r�"test_rlock_acquire_retries_on_intr�rHz0ThreadSignals.test_rlock_acquire_retries_on_intrc
sd�_d�_d�_t������t�������fdd�}t�tj|�}z]��fdd�}�fdd�}t�	��0t�
|d�|�������j�jd	����j�jd
����jd�Wd�n1skwYWt�tj|�dSWt�tj|�dSt�tj|�w)Nrcs�jd7_dS)Nr)�
sigs_recvd)�signumrr"r
rr@�rHz@ThreadSignals.test_interrupted_timed_acquire.<locals>.my_handlercs$t���_�jdd�t���_dS)NrAr*)r.r/�startr�endr
rDr
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�?)
rLrMrJrr-rrrrrr%r1Z
assertGreater)r#r@rBrNrr
)rRr3r#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�versionr6r>rErGrIrSr
r
r
rr's< ������ rcCsJtjddd�tjddd�tjddd�iatttt�}tjtg|�R�dS)Nr)r
r)	rrrr	rrrrWZaddModuleCleanup)Zoldsigsr
r
r�setUpModule�s�r^�__main__)�__doc__rWrrrYZtest.supportr�_threadrr.rZZSkipTest�getpidrr-rr\�namer3rXrrrZTestCaserr^rT�mainr
r
r
r�<module>s0
�	C�