HEX
Server: Apache
System: Linux bd12.noc223.com 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: handcraf (1693)
PHP: 8.1.28
Disabled: NONE
Upload Files
File: //opt/alt/python312/lib64/python3.12/test/__pycache__/_test_eintr.cpython-312.opt-2.pyc
�

~h�e�F��$�	ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZddlmZdZej$d��Zej(eed�d�Gd	�d
ej,��Zej(eed�d�Gd�de��Zej(eed�d�Gd
�de��Zej(eed�d�Gd�de��Zej(eed�d�ej(eed�d�Gd�de���Zej(eed�d�Gd�de��ZGd�de�Zedk(rej>�yy)�N)�support)�	os_helper)�
socket_helperg{�G�z�?c#�tK�	|5	|��	ddd�y#|j��xYw#1swYyxYw�w�N)�kill)�procs �7/opt/alt/python312/lib64/python3.12/test/_test_eintr.py�
kill_on_errorr"sB����Q�	
��	��J����	��I�I�K�����s �8�,��	8�)�,�5�8�	setitimerzrequires setitimer()c�H�eZdZ	dZdZdZd�Zd�Zed��Z	d�Z
d�Zd�Zy	)
�
EINTRBaseTestg�������?g�������?c�.�|xjdz
c_y�N�)�signals)�self�signum�frames   r
�
sighandlerzEINTRBaseTest.sighandler9s��������c�6�d|_tjtj|j�|_tj
tj|j|j�tjddtj��y)NriXT)�exit�file)
r�signal�SIGALRMr�orig_handlerr�ITIMER_REAL�signal_delay�
signal_period�faulthandler�dump_traceback_later�sys�
__stderr__�rs r
�setUpzEINTRBaseTest.setUp<sf�����"�M�M�&�.�.�$�/�/�J�������+�+�T�->�->��+�+�	-�
	�)�)�'��/2�~�~�	?rc�N�tjtjdd�y�Nr)rrr�rr
�
stop_alarmzEINTRBaseTest.stop_alarmGs������+�+�Q��2rc��|j�tjtj|j�t	j
�yr)r*rrrr!�cancel_dump_traceback_laterr%s r
�tearDownzEINTRBaseTest.tearDownKs0�������
�
�f�n�n�d�&7�&7�8��0�0�2rc�X�tjdf|z}tj|fi|��S)Nz-c)r#�
executable�
subprocess�Popen)r�args�kw�cmd_argss    r
r0zEINTRBaseTest.subprocessPs+���N�N�D�)�D�0������/�B�/�/rc�J�|j||jtz
�yr)�assertGreaterEqual�
sleep_time�	CLOCK_RES)r�elapseds  r
�check_elapsed_timez EINTRBaseTest.check_elapsed_timeTs���������9�)D�ErN)
�__name__�
__module__�__qualname__rr r7rr&�staticmethodr*r-r0r:r)rr
rr-sF��'��L��M��J��	?��3��3�3�
0�Frrc��eZdZ	d�Zd�Zd�Zejee	d�d�d��Z
d�Zd�Zejee	d	�d
�d��Z
d�Zd
�Zy)�OSEINTRTestc�B�d|jz}|j|�S)Nzimport time; time.sleep(%r))r7r0)r�codes  r
�new_sleep_processzOSEINTRTest.new_sleep_process\s��,�t���>�����t�$�$rc��d}t|�D�cgc]}|j���}}t|�D]	}|��|D]}|j��ycc}w)N�)�rangerC�wait)r�	wait_func�num�_�	processesr	s      r
�_test_wait_multiplezOSEINTRTest._test_wait_multiple`s_����7<�S�z�B�!�T�+�+�-�B�	�B��s��	�A��K�	��	�D��I�I�K�	��	Cs�Ac�B�|jtj�yr)rL�osrGr%s r
�	test_waitzOSEINTRTest.test_waitis��� � ����)r�wait3zrequires wait3()c�(�|jd��y)Nc�,�tjd�Sr()rNrPr)rr
�<lambda>z(OSEINTRTest.test_wait3.<locals>.<lambda>ns�����!��r)rLr%s r
�
test_wait3zOSEINTRTest.test_wait3ls��� � �!4�5rc�h�|j�}||j�|j�yr)rC�pidrG)rrHr	s   r
�_test_wait_singlezOSEINTRTest._test_wait_singleps%���%�%�'���$�(�(���	�	�rc�(�|jd��y)Nc�.�tj|d�Sr()rN�waitpid�rVs r
rSz*OSEINTRTest.test_waitpid.<locals>.<lambda>ws��2�:�:�c�1�+=�r�rWr%s r
�test_waitpidzOSEINTRTest.test_waitpidvs�����=�>r�wait4zrequires wait4()c�(�|jd��y)Nc�.�tj|d�Sr()rNr^r[s r
rSz(OSEINTRTest.test_wait4.<locals>.<lambda>{s��2�8�8�C��+;�rr\r%s r
�
test_wait4zOSEINTRTest.test_wait4ys�����;�<rc�"�tj�\}}|jtj|�gd�}dj	dddd|zd|j
zddd	d
df
�}|j
|t|�|g��}t|�5tj|�|D]1}|j|tj|t|����3|j|j�d
�ddd�y#1swYyxYw)N)shellosworldsspam�
zimport os, sys, time�zwr = int(sys.argv[1])�
datas = %r�sleep_time = %rzfor data in datas:z$    # let the parent block on read()�    time.sleep(sleep_time)z    os.write(wr, data)��pass_fdsr)
rN�pipe�
addCleanup�close�joinr7r0�strr�assertEqual�read�lenrG)r�rd�wr�datasrBr	�datas       r
�	test_readzOSEINTRTest.test_read}s���������B�������"�%�
.���y�y�"��#��5� �����/�� �2�(�$�
������t�S��W��t��<��
�4�
 �	-��H�H�R�L��
?��� � ��r�w�w�r�3�t�9�'=�>�
?����T�Y�Y�[�!�,�		-�	-�	-�s
�A,D�Dc��tj�\}}|jtj|�dtj
z}dj
dddd|jzdtj
zddd	d
dddd
ddddddf�}|j|t|�|g��}t|�5tj|�d}|t|�kr4|tj|t|�|d�z
}|t|�kr�4|j|j�d�ddd�y#1swYyxYw)N�xrczimport io, os, sys, timerdzrd = int(sys.argv[1])rfzdata = b"x" * %s�data_len = len(data)z!# let the parent block on write()�time.sleep(sleep_time)zread_data = io.BytesIO()z+while len(read_data.getvalue()) < data_len:z%    chunk = os.read(rd, 2 * data_len)z    read_data.write(chunk)zvalue = read_data.getvalue()zif value != data:z0    raise Exception("read error: %s vs %s bytes"z-                    % (len(value), data_len))rhr)rNrjrkrlr�
PIPE_MAX_SIZErmr7r0rnrrq�write�
memoryviewrorG)rrrrsrurBr	�writtens       r
�
test_writezOSEINTRTest.test_write�s/��������B�������"�%��g�+�+�+���y�y�&��#�����/���!6�!6�6�"��/�$��&�9�3�(��*��>�;�'
���,���t�S��W��t��<��
�4�
 �	-��H�H�R�L��G��C��I�%��2�8�8�B�
�4�(8���(B�C�C���C��I�%����T�Y�Y�[�!�,�	-�	-�	-�s�6AD9� D9�9EN)r;r<r=rCrLrO�unittest�
skipUnless�hasattrrNrTrWr]rarvrr)rr
r@r@Xs���*�%��*��X�����W�-�/A�B�6�C�6��?��X�����W�-�/A�B�=�C�=�-�:$-rr@c�$�eZdZ	ejeed�d�d��Zd�Zejeejd�d�d��Z	d�Z
d	�Zd
�Zejeejd�d�d
��Z
d�Zej dd�ejeed�d�d���Zd�Zej(ej,dk(d�d��Zd�Zej(ej,dk(d�d��Zy)�SocketEINTRTest�
socketpairzneeds socketpair()c�x�tj�\}}|j|j�gd�}dj	ddddt|j�zdt|j�zd|zd	|jzdd
dddd
dddf�}|j�}|j|t|�|g��}t|�5|j�|D]$}|j|||t|����&|j|j�d�ddd�y#1swYyxYw)N)rx�y�zrc�import os, socket, sys, timerd�fd = int(sys.argv[1])�family = %s�sock_type = %srerfz)wr = socket.fromfd(fd, family, sock_type)�os.close(fd)zwith wr:z    for data in datas:z(        # let the parent block on recv()z        time.sleep(sleep_time)z        wr.sendall(data)rhr)�socketr�rkrlrm�int�family�typer7�filenor0rnrrorqrG)	r�	recv_funcrrrsrtrB�fdr	rus	         r
�
_test_recvzSocketEINTRTest._test_recv�s%���"�"�$���B�������!�#���y�y�*��#��C��	�	�N�*��s�2�7�7�|�+��5� �����/��7����$�6�,�&�!
���&�Y�Y�[�����t�S��W��t��<��
�4�
 �	-��H�H�J��
A��� � ��y��S��Y�'?�@�
A����T�Y�Y�[�!�,�		-�	-�	-�s
�
AD0�0D9c�V�|jtjj�yr)r�r��recvr%s r
�	test_recvzSocketEINTRTest.test_recv��������
�
�*�*�+r�recvmsgzneeds recvmsg()c�(�|jd��y)Nc�*�|j|�dSr()r���sockrus  r
rSz.SocketEINTRTest.test_recvmsg.<locals>.<lambda>�s��4�<�<��+=�a�+@�r)r�r%s r
�test_recvmsgzSocketEINTRTest.test_recvmsg�s�����@�Arc��tj�\}}|j|j�dtj
dzz}dj
ddddt|j�zdt|j�zd	|jzd
tj
dzzdddd
dddddddddddddf�}|j�}|j|t|�|g��}t|�5|j�d}|t|�kr6||t!|�|d�}	||	�t|�n|	z
}|t|�kr�6|j#|j%�d�ddd�y#1swYyxYw)NsxyzrErcr�rdr�r�r�rfzdata = b"xyz" * %sryz)rd = socket.fromfd(fd, family, sock_type)r�zwith rd:z$    # let the parent block on send()rgz'    received_data = bytearray(data_len)z	    n = 0z    while n < data_len:z8        n += rd.recv_into(memoryview(received_data)[n:])zif received_data != data:z0    raise Exception("recv error: %s vs %s bytes"z5                    % (len(received_data), data_len))rhr)r�r�rkrlr�
SOCK_MAX_SIZErmr�r�r�r7r�r0rnrrqr}rorG)
r�	send_funcrrrsrurBr�r	r~�sents
          r
�
_test_sendzSocketEINTRTest._test_send�sy���"�"�$���B�������!���.�.�!�3�4���y�y�*��#��C��	�	�N�*��s�2�7�7�|�+�����/� �G�$9�$9�Q�$>�?�"��7����2�(��5��%�F��'�>�C�1
���6�Y�Y�[�����t�S��W��t��<��
�4�
 �	-��H�H�J��G��C��I�%� ��Z��%5�g�h�%?�@�����3�t�9�$�>���C��I�%�
���T�Y�Y�[�!�,�	-�	-�	-�s�8AE8� E8�8Fc�V�|jtjj�yr)r�r��sendr%s r
�	test_sendzSocketEINTRTest.test_sendr�rc�V�|jtjj�yr)r�r��sendallr%s r
�test_sendallzSocketEINTRTest.test_sendall!s������
�
�-�-�.r�sendmsgzneeds sendmsg()c�(�|jd��y)Nc�&�|j|g�Sr)r�r�s  r
rSz.SocketEINTRTest.test_sendmsg.<locals>.<lambda>&s��4�<�<���+?�r)r�r%s r
�test_sendmsgzSocketEINTRTest.test_sendmsg$s�����?�@rc�
�tjtjdf�}|j	|j
�|j
�d}djdddtjzd|zd|jzdd	d
ddf
�}|j|�}t|�5|j�\}}|j�|j|j�d�ddd�y#1swYyxYw)
Nrrrczimport socket, timerdz	host = %rz	port = %srfz# let parent block on accept()rzz,with socket.create_connection((host, port)):rg)r��
create_serverr�HOSTrkrl�getsocknamermr7r0r�acceptrorG)rr��portrBr	�client_sockrJs       r
�test_acceptzSocketEINTRTest.test_accept(s����#�#�]�%7�%7��$;�<������
�
�#����!�!�$���y�y�!���-�,�,�,��$������/��,�$�:�(�
������t�$��
�4�
 �	-�!�[�[�]�N�K���������T�Y�Y�[�!�,�	-�	-�	-�s
�,AC9�9D�
rE�mkfifozneeds mkfifo()c��tj}tj|�	tj|�|jtj|�djddd|zd|jzdddd|f	�}|j|�}t|�5||�|j|j�d	�ddd�y#t
$r}|j
d|z�Yd}~��d}~wwxYw#1swYyxYw)
Nzos.mkfifo(): %src�import os, timerdz	path = %arfz# let the parent blockrzr)r�TESTFN�unlinkrNr��PermissionError�skipTestrkrmr7r0rrorG)r�do_open_close_reader�do_open_close_writer�filename�erBr	s       r
�
_test_openzSocketEINTRTest._test_openDs����#�#��	����"�	1��I�I�h��	
���	�(�(�(�3��y�y����(�"�����/��$�$�� �

�
�����t�$��
�4�
 �	-� ��*����T�Y�Y�[�!�,�	-�	-��#�	1��M�M�+�a�/�0�0��	1��"	-�	-�s#�C�")C>�	C;�C6�6C;�>Dc�<�t|d�}|j�y)N�w)�openrl)r�path�fps   r
�python_openzSocketEINTRTest.python_opencs��
�$��_��
���
r�darwinz+hangs under macOS; see bpo-25234, bpo-35363c�<�|jd|j�y)Nzfp = open(path, 'r')
fp.close())r�r�r%s r
�	test_openzSocketEINTRTest.test_opengs��	
���:��(�(�	*rc�v�tj|tj�}tj|�yr)rNr��O_WRONLYrl)rr�r�s   r
�os_openzSocketEINTRTest.os_openms!��
�W�W�T�2�;�;�
'��
����rc�<�|jd|j�y)Nz,fd = os.open(path, os.O_RDONLY)
os.close(fd))r�r�r%s r
�test_os_openzSocketEINTRTest.test_os_openqs��	
���G����	&rN)r;r<r=r�r�r�r�r�r�r�r�r�r�r�r�r�requires_freebsd_versionrNr�r��skipIfr#�platformr�r�r�r)rr
r�r��sY��.��X������6�8L�M�!-�N�!-�F,��X�������	�:�<M�N�B�O�B�,-�\,�/��X�������	�:�<M�N�A�O�A�-�8&�W�%�%�b�!�,��X�����X�.�0@�A�-�B�-�-�:��X�_�_�S�\�\�X�-�B�D�*�D�*���X�_�_�S�\�\�X�-�B�D�&�D�&rr�c��eZdZ	d�Zy)�
TimeEINTRTestc���tj�}tj|j�|j	�tj�|z
}|j|�yr)�time�	monotonic�sleepr7r*r:�r�t0�dts   r
�
test_sleepzTimeEINTRTest.test_sleep|sG��
�^�^�
���
�
�4�?�?�#�����
�^�^�
��
"������#rN)r;r<r=r�r)rr
r�r�xs
��,�$rr��pthread_sigmaskzneed signal.pthread_sigmask()c��eZdZ	d�Zej
eed�d�d��Zej
eed�d�d��Z	y)�SignalEINTRTestc��tj}tj�}tj|d��}|j	tj||�djddtj�zdt
|�zd|jzddf�}tjtj|g�}|j	tjtj|g�|j|�}t|�5||�ddd�|j|j�d	�y#1swY�*xYw)
Nc��yrr))r2s r
rSz/SignalEINTRTest.check_sigwait.<locals>.<lambda>�s�rrcr�zpid = %szsignum = %srfrzzos.kill(pid, signum)r)r�SIGUSR1rN�getpidrkrmr�r7r��	SIG_BLOCK�SIG_UNBLOCKr0rrorG)rrHrrV�old_handlerrB�old_maskr	s        r
�
check_sigwaitzSignalEINTRTest.check_sigwait�s�������i�i�k���m�m�F�,>�?������
�
�v�{�;��y�y�������$��C��K�'�����/�$�"�

����)�)�&�*:�*:�V�H�E������.�.��0B�0B�V�H�M����t�$��
�4�
 �	��f��	�	
�������a�(�	�	�s�	E�E�sigwaitinfozneed signal.sigwaitinfo()c�,�d�}|j|�y)Nc�0�tj|g�yr)rr��rs r
rHz3SignalEINTRTest.test_sigwaitinfo.<locals>.wait_func�s������x�(r�r��rrHs  r
�test_sigwaitinfoz SignalEINTRTest.test_sigwaitinfo�s��	)�	
���9�%r�sigtimedwaitc�,�d�}|j|�y)Nc�2�tj|gd�y)Ng^@)rr�r�s r
rHz4SignalEINTRTest.test_sigtimedwait.<locals>.wait_func�s�������%�0rr�r�s  r
�test_sigtimedwaitz!SignalEINTRTest.test_sigtimedwait�s��	1�	
���9�%rN)
r;r<r=r�r�r�r�rr�r�r)rr
r�r��sf��/�)�2�X������7�4�6�&�6�&��X������8�4�6�&�6�&rr�c�Z�eZdZ	d�Zej
ejdk(d�eje	e
d�d�d���Zeje	e
d�d�d	��Zeje	e
d
�d�d��Z
eje	e
d
�d�d��Zy)�SelectEINTRTestc���tj�}tjggg|j�tj�|z
}|j	�|j|�yr)r�r��selectr7r*r:r�s   r
�test_selectzSelectEINTRTest.test_select�sM��
�^�^�
���
�
�b�"�b�$�/�/�2�
�^�^�
��
"����������#rr�z(poll may fail on macOS; see issue #28087�pollzneed select.pollc��tj�}tj�}|j|jdz�tj�|z
}|j�|j
|�y�Ng@�@)r�r�r�r�r7r*r:�r�pollerr�r�s    r
�	test_pollzSelectEINTRTest.test_poll�sY�������
�^�^�
�����D�O�O�c�)�*�
�^�^�
��
"����������#r�epollzneed select.epollc�0�tj�}|j|j�t	j
�}|j
|j�t	j
�|z
}|j�|j|�yr)
r�rrkrlr�r�r�r7r*r:r�s    r
�
test_epollzSelectEINTRTest.test_epoll�sb�������������%�
�^�^�
�����D�O�O�$�
�^�^�
��
"����������#r�kqueuezneed select.kqueuec�4�tj�}|j|j�t	j
�}|j
dd|j�t	j
�|z
}|j�|j|�yr)
r�rrkrlr�r��controlr7r*r:)rrr�r�s    r
�test_kqueuezSelectEINTRTest.test_kqueue�sf�������������%�
�^�^�
�����t�Q����0�
�^�^�
��
"����������#r�devpollzneed select.devpollc�6�tj�}|j|j�t	j
�}|j
|jdz�t	j
�|z
}|j�|j|�yr�)
r�rrkrlr�r�r�r7r*r:r�s    r
�test_devpollzSelectEINTRTest.test_devpoll�sh�����!��������%�
�^�^�
�����D�O�O�c�)�*�
�^�^�
��
"����������#rN)r;r<r=r�r�r�r#r�r�r�r�rrrr
r)rr
r�r��s���.�$��X�_�_�S�\�\�X�-�?�A��X������0�2D�E�$�F�A�$��X������1�3F�G�$�H�$��X������2�4H�I�$�J�$��X������3�5J�K�$�L�$rr�c�n�eZdZd�Zej
ej�dk(d�d��Zd�Z	y)�
FNTLEINTRTestc���|jtjtj�dj	ddtjzd|zd|j
zf�}t
j�}|j|�}t|�5ttjd�5}t
j�}tjtjd��D]B}	||tjtj z�||tj"��Dt
j�|z
}t'd	|z��#t$$rYnwxYw||tj�t
j�|z
}|j)�|j+|�ddd�n#1swYnxYw|j-�ddd�y#1swYyxYw)
Nrczimport fcntl, timezwith open('%s', 'wb') as f:z   fcntl.%s(f, fcntl.LOCK_EX)z   time.sleep(%s)�wbF)�errorz failed to sync child in %.1f sec)rkrr�r�rmr7r�r�r0rr�r�sleeping_retry�LONG_TIMEOUT�fcntl�LOCK_EX�LOCK_NB�LOCK_UN�BlockingIOError�	Exceptionr*r:rG)	r�	lock_func�	lock_namerB�
start_timer	�frJr�s	         r
�_lockzFNTLEINTRTest._lock�s������	�(�(�)�*:�*:�;��y�y� �)�I�,<�,<�<�+�i�7��$�/�/�1�	3�4��
�^�^�%�
����t�$��
�4�
 �	��i�&�&��-�
,��!�^�^�-�
� �/�/��0D�0D�E�R�M�A��!�!�U�]�]�U�]�]�%B�C�!�!�U�]�]�3�M����)�J�6�B�#�$F��$K�L�L��	+������!�U�]�]�+��^�^�%�
�2�����!��'�'��+�'
,�
,�
,��(
�I�I�K�+	�	�	�sI�G!�0=F<�.?E�-'F<�	E!	�F<� E!	�!AF<�3	G!�<G	�G!�!G*�AIXzAIX returns PermissionErrorc�D�|jtjd�y)N�lockf)rrrr%s r
�
test_lockfzFNTLEINTRTest.test_lockfs���
�
�5�;�;��(rc�D�|jtjd�y)N�flock)rrr"r%s r
�
test_flockzFNTLEINTRTest.test_flocks���
�
�5�;�;��(rN)
r;r<r=rr�r�r��systemr r#r)rr
rr�s>���D�X�_�_�_�X�_�_�&�%�/�1N�O�)�P�)�)rr�__main__) �
contextlibr!rrNr�r�rr�r0r#r�r��testr�test.supportrrr8�contextmanagerrr�r��TestCaserr@r�r�r�r�rr;�mainr)rr
�<module>r,s�������	��
�
�
��
����"�&�

�	�����������W�V�[�1�3I�J�'F�H�%�%�'F�K�'F�T����W�V�[�1�3I�J�e-�-�e-�K�e-�P����W�V�[�1�3I�J�s&�m�s&�K�s&�l����W�V�[�1�3I�J�$�M�$�K�$�����W�V�[�1�3I�J�����W�V�%6�7�4�6�*&�m�*&�6�K�
*&�Z����W�V�[�1�3I�J�5$�m�5$�K�5$�p()�M�()�V�z���H�M�M�O�r