Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_threadsignals.cpython-311.opt-2.pyc
�

�Ke�(����	ddlZddlZddlZddlZddlmZddlZddlZej	dd�dkrej
dej	z���ej��Zej
��ZejjdkoejjdkZd�Zd	�Zd
�Zej��ejeed��d��Gd
�dej������Zd�Zedkrej��dSdS)�N)�threading_helper��winzCan't test signal on %s�pthreadz
mutex+condc���tjtj|��}tjtj|��}tjtj|��}|||fS�N)�signal�SIGUSR1�SIGUSR2�SIGALRM)�for_usr1�for_usr2�for_alrm�usr1�usr2�alrms      �A/usr/local/apps/python3/lib/python3.11/test/test_threadsignals.py�registerSignalsrsH���=����2�2�D��=����2�2�D��=����2�2�D���t���c�~�t|dxxdz
cc<tj��t|d<dS)N�tripped��
tripped_by)�signal_blackboard�thread�	get_ident)�sig�frames  r�handle_signalsrsB���c��9�%�%�%��*�%�%�%�+1�+;�+=�+=��c��<�(�(�(rc���tjttj��tjttj��t���dSr)�os�kill�process_pidr	r
r�
signalled_all�release�rr�send_signalsr'"sB���G�K���(�(�(��G�K���(�(�(��������r�alarmztest requires signal.alarmc�L�eZdZd�Zd�Zd�Zejed��eje	j
�d��oe	jj
d��eje	j
�d��d��d	�������Zejed��eje	j
�d��oe	jj
d��eje	j
�d��d��d
�������Zd�Zd�Zd
�Zd�ZdS)�
ThreadSignalsc��tj��5t���|���t���ddd��n#1swxYwYt
tjddks!t
tjddkrV	t
j	d��t
j
��t
j	d��n#t
j	d��wxYw|�t
tjdd��|�t
tjdtj
����|�t
tjdd��|�t
tjdtj
����t���dS)Nrrrr)r�wait_threads_exitr$�acquire�spawnSignallingThreadrr	r
rr(�pause�assertEqualrrr%��selfs r�test_signalszThreadSignals.test_signals,s���
�
/�
1�
1�	$�	$�

�!�!�#�#�#��&�&�(�(�(��!�!�#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$��V�^�,�Y�7�1�<�<����/�	�:�a�?�?�
 ���Q�����������Q��������Q�����������+�F�N�;�I�F��J�J�J����+�F�N�;�L�I�!�+�-�-�	/�	/�	/����+�F�N�;�I�F��J�J�J����+�F�N�;�L�I�!�+�-�-�	/�	/�	/��������s�AA'�'A+�.A+�5'C1�1Dc�:�tjtd��dS)Nr&)r�start_new_threadr'r1s rr.z#ThreadSignals.spawnSignallingThreadLs�����b�1�1�1�1�1rc��t�r)�KeyboardInterrupt)r2rrs   r�alarm_interruptzThreadSignals.alarm_interruptOs���rz/POSIX condition variables cannot be interrupted�linuxzBIssue 34004: musl does not allow interruption of locks by signals.�openbsdz%lock cannot be interrupted on OpenBSDc�^�tjtj|j��}	tj��}|���tjd��tj��}|�	t|jd���tj��|z
}|�|d��tjd��tjtj|��dS#tjd��tjtj|��wxYw)Nr���timeout�@r)r	rr8r�
allocate_lockr-r(�time�	monotonic�assertRaisesr7�
assertLess)r2�oldalrm�lock�t1�dts     r�test_lock_acquire_interruptionz,ThreadSignals.test_lock_acquire_interruptionRs����-����0D�E�E��	3��'�)�)�D��L�L�N�N�N��L��O�O�O���!�!�B����/���q��I�I�I���!�!�B�&�B�

�O�O�B��$�$�$��L��O�O�O��M�&�.�'�2�2�2�2�2��
�L��O�O�O��M�&�.�'�2�2�2�2���s�BC7�75D,c�j��tjtj|j��}	tj����fd�}tj��5tj|d����d���r>��	��tjd����d����>tjd��tj
��}|�t�jd���tj
��|z
}|�|d	��ddd��n#1swxYwYtjd
��tjtj|��dS#tjd
��tjtj|��wxYw)Nc�0������dSr)r-)�rlocks�r�other_threadzCThreadSignals.test_rlock_acquire_interruption.<locals>.other_thread�s����
�
�����rr&F��blocking�{�G�z�?rr<r=r?r)r	rr8r�RLockrr,r5r-r%rA�sleepr(rBrCr7rD)r2rErMrGrHrLs     @r�test_rlock_acquire_interruptionz-ThreadSignals.test_rlock_acquire_interruptionqs�����-����0D�E�E��	3��L�N�N�E�
 �
 �
 �
 �
 �"�3�5�5�
)�
)��'��b�9�9�9��m�m�U�m�3�3�%��M�M�O�O�O��J�t�$�$�$��m�m�U�m�3�3�%���Q�����^�%�%���!�!�"3�U�]�A�!�N�N�N��^�%�%��*������C�(�(�(�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)����
)�
)�
)�
)�
�L��O�O�O��M�&�.�'�2�2�2�2�2��
�L��O�O�O��M�&�.�'�2�2�2�2���s0�+E=�CD=�1E=�=E�E=�E�E=�=5F2c����d�_�fd�}tjtj|��}	�fd�}tj��5tj|d����d���r>����tj
d����d����>����}���j����|��ddd��n#1swxYwYtjtj|��dS#tjtj|��wxYw)NFc���d�_dS)NT)�	sig_recvd)r	rr2s  �r�
my_handlerz9ThreadSignals.acquire_retries_on_intr.<locals>.my_handler�s���!�D�N�N�Nrc��������tjd��tjt
tj��tjd������dS)N��?)	r-rArRr!r"r#r	r
r%)rFs�rrMz;ThreadSignals.acquire_retries_on_intr.<locals>.other_thread�sU����������
�3�������V�^�4�4�4��
�3�����������rr&rNrP)rVr	r
rr,rr5r-r%rArR�
assertTrue)r2rFrW�old_handlerrM�results``    r�acquire_retries_on_intrz%ThreadSignals.acquire_retries_on_intr�s��������	"�	"�	"�	"�	"��m�F�N�J�?�?��	7�
�
�
�
�
�"�3�5�5�
(�
(��'��b�9�9�9��l�l�E�l�2�2�%��L�L�N�N�N��J�t�$�$�$��l�l�E�l�2�2�%������������/�/�/�����'�'�'�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(�
�M�&�.�+�6�6�6�6�6��F�M�&�.�+�6�6�6�6���s0�D,�B-D�4D,�D�D,�D�D,�,!E
c�R�|�tj����dSr)r]rr@r1s r�!test_lock_acquire_retries_on_intrz/ThreadSignals.test_lock_acquire_retries_on_intr�s%���$�$�V�%9�%;�%;�<�<�<�<�<rc�R�|�tj����dSr)r]rrQr1s r�"test_rlock_acquire_retries_on_intrz0ThreadSignals.test_rlock_acquire_retries_on_intr�s"���$�$�V�\�^�^�4�4�4�4�4rc�6����d�_d�_d�_tj�������tj��������fd�}t
jtj|��}	��fd�}�fd�}tj	��5tj
|d��|���������j�jz
d�����j�jz
d�����jd��ddd��n#1swxYwYt
jtj|��dS#t
jtj|��wxYw)Nrc�(���xjdz
c_dS)Nr)�
sigs_recvd)�signumrr2s  �rrWz@ThreadSignals.test_interrupted_timed_acquire.<locals>.my_handler�s����O�O�q� �O�O�O�Orc���tj���_��d���tj���_dS)NrYr=)rArB�startr-�end)rFr2s��r�
timed_acquirezCThreadSignals.test_interrupted_timed_acquire.<locals>.timed_acquire�s9���!�^�-�-��
����S��)�)�)��>�+�+����rc����td��D]:}tjd��tjt
tj���;����dS)N�(g{�G�z�?)	�rangerArRr!r"r#r	r
r%)�_�dones �rr'zBThreadSignals.test_interrupted_timed_acquire.<locals>.send_signals�sP����r���9�9�A��J�t�$�$�$��G�K���8�8�8�8��������rr&g@g333333�?)
rgrhrdrr@r-r	r
rr,r5rD�
assertGreater)r2rWr[rir'rnrFs`    @@r�test_interrupted_timed_acquirez,ThreadSignals.test_interrupted_timed_acquire�s��������
��������#�%�%���������#�%�%��������	!�	!�	!�	!�	!��m�F�N�J�?�?��	7�
,�
,�
,�
,�
,�
,�
�
�
�
�
�"�3�5�5�

7�

7��'��b�9�9�9��
���������������4�:� 5�s�;�;�;��"�"�4�8�d�j�#8�#�>�>�>��"�"�4�?�A�6�6�6�

7�

7�

7�

7�

7�

7�

7�

7�

7�

7�

7����

7�

7�

7�

7�
�M�&�.�+�6�6�6�6�6��F�M�&�.�+�6�6�6�6���s1�E7�*BE�?E7�E�E7�E�E7�7!FN)�__name__�
__module__�__qualname__r3r.r8�unittest�skipIf�USING_PTHREAD_COND�sys�platform�
startswith�thread_info�versionrIrSr]r_rarpr&rrr*r*(s������� � � �@2�2�2� � � ��X�_�'�F�H�H��X�_�S�\�,�,�W�5�5�1���0�0�#�$�$�
�X�_�S�\�,�,�Y�7�7�<�>�>�3�3�>�>�$�$�H�H�3�,�X�_�'�F�H�H��X�_�S�\�,�,�W�5�5�1���0�0�#�$�$�
�X�_�S�\�,�,�Y�7�7�<�>�>�3�3�>�>�$�$�H�H�3�:7�7�7�@=�=�=�5�5�5�,7�,7�,7�,7�,7rr*c���tjddd�tjddd�tjddd�iatttt��}tjt
g|�R�dS)Nr)rr)	r	r
rrrrrrt�addModuleCleanup)�oldsigss r�setUpModuler�sl��!�.�q��+K�+K� �.�q��+K�+K� �.�q��+K�+K�N���n�n�n�M�M�G���o�8��8�8�8�8�8�8r�__main__)rtr	r!rw�test.supportr�_threadrrArx�SkipTest�getpidr#r@r$rz�namerFrvrrr'�requires_working_threading�
skipUnless�hasattr�TestCaser*rrq�mainr&rr�<module>r�s���<�����
�
�
�
�	�	�	�	�
�
�
�
�)�)�)�)�)�)����������L��!������
�(�
�5���D�
E�
E�E��b�i�k�k��"�f�"�$�$�
��o�*�i�7�?��/�.�,�>�����>�>�>�
���-��,�.�.����W�W�V�W�-�-�/K�L�L�7�7�7�7�7�H�%�7�7�M�L�/�.�7�D9�9�9��z����H�M�O�O�O�O�O��r