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/test_asyncio/__pycache__/test_unix_events.cpython-312.pyc
�

~h�e�
���dZddlZddlZddlZddlZddlmZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlmZddlZddlmZddlmZddlmZddlmZdd	lmZe
j4d
k(rej6d��ddlZddlmZdd
lmZddlm Z!d�Z"ejFZ$d�Z%d�Z&d�Z'ejPe
d�Gd�de!jR��Z*ejPe+ed�d�Gd�de!jR��Z,ejPe+ed�d�Gd�de!jR��Z-Gd�de!jR�Z.Gd �d!e!jR�Z/Gd"�d#ejR�Z0Gd$�d%ejR�Z1Gd&�d'�Z2Gd(�d)e2e!jR�Z3Gd*�d+e2e!jR�Z4Gd,�d-ejR�Z5Gd.�d/ejR�Z6ejPe+ed0�d1�Gd2�d3ejn��Z8e9d4k(rejt�yy)5zTests for unix_events.py.�N)�_cleanup_tests)�mock)�support)�	os_helper)�
socket_helper)�wait_process)�hashlib_helper�win32z	UNIX only)�log)�unix_events)�utilsc�.�tjd�y�N)�asyncio�set_event_loop_policy���I/opt/alt/python312/lib64/python3.12/test/test_asyncio/test_unix_events.py�tearDownModuler$s���!�!�$�'rc��d|zS)N��r��exitcodes r�EXITCODEr+s
���8��rc�B�d|cxkrdksntd|����d|z
S)N��Dzinvalid signum r)�AssertionError)�signums r�SIGNALr /s+�����"����v�h�7�8�8��6�>�rc�`�|j�y|jj�d|_yr)�_pipe�close)�	transports r�close_pipe_transportr%5s(�������
�O�O�����I�OrzSignals are not supportedc�H��eZdZ�fd�Zd�Zd�Zd�Zejd�d��Z	ejd�d��Z
ejd�d��Zejd�d	��Zejd�ejd
�d���Z
ejd�ejd
�d���Zejd�d
��Zejd�d��Zejd�ejd
�d���Zejd�d��Zejd�d��Zejd�d��Zejd�ejd�d���Z�xZS)�SelectorEventLoopSignalTestsc���t�|��tj�|_|j|j�yr��super�setUpr�SelectorEventLoop�loop�set_event_loop��self�	__class__s �rr+z"SelectorEventLoopSignalTests.setUpA�.���
��
���-�-�/��	����D�I�I�&rc���|jt|jjd�|jt|jjt
jdz�y)N�1r)�assertRaises�	TypeErrorr-�
_check_signal�
ValueError�signal�NSIG�r0s r�test_check_signalz.SelectorEventLoopSignalTests.test_check_signalFsI������t�y�y�.�.��	5������	�	�/�/����q��	Brc�\�|jjtjdz�y)Nr)r-�_handle_signalr9r:r;s r�test_handle_signal_no_handlerz:SelectorEventLoopSignalTests.test_handle_signal_no_handlerLs���	�	� � ����q��1rc��tjtj�dtj���}|j	�||j
jtjdz<tj�|j
_	|j
jtjdz�|j
jjtjdz�y)Nr)r-r)r�Handler�Mock�cancelr-�_signal_handlersr9r:�remove_signal_handlerr>�assert_called_with)r0�hs  r�$test_handle_signal_cancelled_handlerzASelectorEventLoopSignalTests.test_handle_signal_cancelled_handlerOs����N�N�4�9�9�;�� $�	�	��
-��	���
�67��	�	�"�"�6�;�;��?�3�*.�)�)�+��	�	�'��	�	� � ����q��1��	�	�'�'�:�:�6�;�;��?�Krzasyncio.unix_events.signalc��tj|_tj|_t|j_|j
t|jjtjd��y)Nc��y�NTrrrr�<lambda>zRSelectorEventLoopSignalTests.test_add_signal_handler_setup_error.<locals>.<lambda>a��r)r9r:�
valid_signalsr8�
set_wakeup_fd�side_effectr5�RuntimeErrorr-�add_signal_handler�SIGINT�r0�m_signals  r�#test_add_signal_handler_setup_errorz@SelectorEventLoopSignalTests.test_add_signal_handler_setup_errorXsP������
�!'�!5�!5���-7����*������I�I�(�(��M�M�<�	)rc��tj|_d�}|}|�}|j|j�||fD]=}|j	t
d|jjtj|��?y)Nc��K�y�wrrrrr�simple_coroutinez^SelectorEventLoopSignalTests.test_add_signal_handler_coroutine_error.<locals>.simple_coroutinegs	�����s�z1coroutines cannot be used with add_signal_handler)	r9r:�
addCleanupr#�assertRaisesRegexr6r-rRrS)r0rUrY�	coro_func�coro_obj�funcs      r�'test_add_signal_handler_coroutine_errorzDSelectorEventLoopSignalTests.test_add_signal_handler_coroutine_errorcsn������
�	�%�	��;��������'���)�	%�D��"�"��N��	�	�,�,��
�
�t�
%�	%rc��tj|_tj|_d�}|jj	tj
|�|jjjtj
�}|j|tj�|j|j|�y)Nc��yrKrrrrrLzFSelectorEventLoopSignalTests.test_add_signal_handler.<locals>.<lambda>yrMr)
r9r:rNr-rR�SIGHUPrD�get�assertIsInstancerrA�assertEqual�	_callback)r0rU�cbrGs    r�test_add_signal_handlerz4SelectorEventLoopSignalTests.test_add_signal_handlerts~������
�!'�!5�!5���
���	�	�$�$�V�]�]�B�7��I�I�&�&�*�*�6�=�=�9�����a����0�������b�)rc��tj|_tj|_d�}||_Gd�dt�}||j_|j
||jjtjd��y)Nc�"�|dk(r
t��y)N���)r8)�fds rrOzYSelectorEventLoopSignalTests.test_add_signal_handler_install_error.<locals>.set_wakeup_fd�s���R�x� �l�"�rc�$�eZdZejZy)�OSelectorEventLoopSignalTests.test_add_signal_handler_install_error.<locals>.ErrN)�__name__�
__module__�__qualname__�errno�EFAULTrrr�Errrn�����L�L�Errtc��yrKrrrrrLzTSelectorEventLoopSignalTests.test_add_signal_handler_install_error.<locals>.<lambda>�rMr)
r9r:rNrO�OSErrorrPr5r-rRrS)r0rUrOrts    r�%test_add_signal_handler_install_errorzBSelectorEventLoopSignalTests.test_add_signal_handler_install_errorsi������
�!'�!5�!5���	#�"/���	!�'�	!�&)����#������I�I�(�(��M�M�<�	)rzasyncio.base_events.loggerc���tj|_tj|_Gd�dt�}||j_d�|j
jtj<|jt|j
jtjd��|j|jj�|jd|j j"�y)Nc�$�eZdZejZy)�PSelectorEventLoopSignalTests.test_add_signal_handler_install_error2.<locals>.ErrN�rorprqrr�EINVALrrrrtr{�rurrtc��yrKrrrrrLzUSelectorEventLoopSignalTests.test_add_signal_handler_install_error2.<locals>.<lambda>�rMrc��yrKrrrrrLzUSelectorEventLoopSignalTests.test_add_signal_handler_install_error2.<locals>.<lambda>�rMrr)r9r:rNrwrPr-rDrbr5rQrRrS�assertFalse�info�calledrerO�
call_count�r0�	m_loggingrUrts    r�&test_add_signal_handler_install_error2zCSelectorEventLoopSignalTests.test_add_signal_handler_install_error2�s�������
�!'�!5�!5���	!�'�	!�&)����#�4@��	�	�"�"�6�=�=�1������I�I�(�(��M�M�<�	)�	
������.�.�/�����H�2�2�=�=�>rc��Gd�dt�}||j_tj|_tj|_|jt|jjtjd��|j|jj�|jd|jj�y)Nc�$�eZdZejZy)�PSelectorEventLoopSignalTests.test_add_signal_handler_install_error3.<locals>.ErrNr|rrrrtr��rurrtc��yrKrrrrrLzUSelectorEventLoopSignalTests.test_add_signal_handler_install_error3.<locals>.<lambda>�rMr�)rwr9rPr:rNr5rQr-rRrSr�r�r�rerOr�r�s    r�&test_add_signal_handler_install_error3zCSelectorEventLoopSignalTests.test_add_signal_handler_install_error3�s���	!�'�	!�&)����#�����
�!'�!5�!5��������I�I�(�(��M�M�<�	)�	
������.�.�/�����H�2�2�=�=�>rc�8�tj|_tj|_|jj	tj
d��|j
|jjtj
��|j
|jj�|j
|jj�|jtj
|jf|jjd�y)Nc��yrKrrrrrLzISelectorEventLoopSignalTests.test_remove_signal_handler.<locals>.<lambda>�rMrr)
r9r:rNr-rRrb�
assertTruerErOr�re�SIG_DFL�	call_argsrTs  r�test_remove_signal_handlerz7SelectorEventLoopSignalTests.test_remove_signal_handler�s�������
�!'�!5�!5����	�	�$�$�V�]�]�L�A�����I�I�+�+�F�M�M�:�	<�����.�.�5�5�6�������.�.�/����
�]�]�H�,�,�-�x���/H�/H��/K�	Mrc���tj|_tj|_tj|_|jjtjd��t
�|jjtj<|jj�|j|jjtj��|j|jj�|j|jj�|jtj|j f|jj"d�y)Nc��yrKrrrrrLzKSelectorEventLoopSignalTests.test_remove_signal_handler_2.<locals>.<lambda>�rMrr)r9r:rSrNr-rR�objectrDrbrO�
reset_mockr�rEr�r�re�default_int_handlerr�rTs  r�test_remove_signal_handler_2z9SelectorEventLoopSignalTests.test_remove_signal_handler_2�s�������
� �-�-���!'�!5�!5����	�	�$�$�V�]�]�L�A�4:�H��	�	�"�"�6�=�=�1����)�)�+�����I�I�+�+�F�M�M�:�	<�����/�/�6�6�7�������.�.�/����
�]�]�H�8�8�9��O�O�%�%�a�(�	*rc�`�tj|_tj|_|jj	tj
d��t|j_|jjtj
�|j|j�y)Nc��yrKrrrrrLzWSelectorEventLoopSignalTests.test_remove_signal_handler_cleanup_error.<locals>.<lambda>�rMr)r9r:rNr-rRrbr8rOrPrEr�r�)r0r�rUs   r�(test_remove_signal_handler_cleanup_errorzESelectorEventLoopSignalTests.test_remove_signal_handler_cleanup_error�si������
�!'�!5�!5����	�	�$�$�V�]�]�L�A�-7����*��	�	�'�'��
�
�6����	���'rc�J�tj|_tj|_|jj	tj
d��t|j_|jt|jjtj
�y)Nc��yrKrrrrrLzOSelectorEventLoopSignalTests.test_remove_signal_handler_error.<locals>.<lambda>�rMr)
r9r:rNr-rRrbrwrPr5rErTs  r� test_remove_signal_handler_errorz=SelectorEventLoopSignalTests.test_remove_signal_handler_error�sc������
�!'�!5�!5����	�	�$�$�V�]�]�L�A�&-����#�����T�Y�Y�4�4�f�m�m�	Erc�`�tj|_tj|_|jj	tj
d��Gd�dt�}||j_|jt|jjtj
�y)Nc��yrKrrrrrLzPSelectorEventLoopSignalTests.test_remove_signal_handler_error2.<locals>.<lambda>�rMrc�$�eZdZejZy)�KSelectorEventLoopSignalTests.test_remove_signal_handler_error2.<locals>.ErrNr|rrrrtr��rurrt)r9r:rNr-rRrbrwrPr5rQrE)r0rUrts   r�!test_remove_signal_handler_error2z>SelectorEventLoopSignalTests.test_remove_signal_handler_error2�so������
�!'�!5�!5����	�	�$�$�V�]�]�L�A�	!�'�	!�&)����#�����$�)�)�9�9�6�=�=�	Jrc�^�tj|_tj|_|jj	tj
d��|jj	tjd��|jt|jj�d�|jj�|jj�|jt|jj�d�|jjd�y)Nc��yrKrrrrrLz9SelectorEventLoopSignalTests.test_close.<locals>.<lambda>�rMrc��yrKrrrrrLz9SelectorEventLoopSignalTests.test_close.<locals>.<lambda>�rMrr�rrk)r9r:rNr-rRrb�SIGCHLDre�lenrDrOr�r#�assert_called_once_withrTs  r�
test_closez'SelectorEventLoopSignalTests.test_close�s�������
�!'�!5�!5����	�	�$�$�V�]�]�L�A��	�	�$�$�V�^�^�\�B�����T�Y�Y�7�7�8�!�<����)�)�+��	�	��������T�Y�Y�7�7�8�!�<����6�6�r�:rzasyncio.unix_events.sysc��tj|_tj|_|jj	tj
d��|j
t|jj�d�d|j_
|jj�|jtd�5|jj�ddd�|j
t|jj�d�|j|jj �y#1swY�^xYw)Nc��yrKrrrrrLzGSelectorEventLoopSignalTests.test_close_on_finalizing.<locals>.<lambda>rMrrTz skipping signal handlers removalr)r9r:rNr-rRrbrer�rD�
is_finalizing�return_valuer��assertWarnsRegex�ResourceWarningr#r�r�)r0rU�m_syss   r�test_close_on_finalizingz5SelectorEventLoopSignalTests.test_close_on_finalizing	s�������
�!'�!5�!5����	�	�$�$�V�]�]�L�A�����T�Y�Y�7�7�8�!�<�+/����(����"�"�$�
�
"�
"�?�#E�G�	��I�I�O�O��	�	
����T�Y�Y�7�7�8�!�<�������/�/�0�	�	�s�D>�>E)rorprqr+r<r?rHr�patchrVr_rhrxr�r�r�r�r�r�r�r�r��
__classcell__�r1s@rr'r'>s���'�
B�2�L��T�Z�Z�,�-�)�.�)��T�Z�Z�,�-�%�.�%� �T�Z�Z�,�-�*�.�*��T�Z�Z�,�-�)�.�)�$�T�Z�Z�,�-��T�Z�Z�,�-�?�.�.�?� �T�Z�Z�,�-��T�Z�Z�,�-�?�.�.�?��T�Z�Z�,�-�M�.�M��T�Z�Z�,�-�*�.�*�"�T�Z�Z�,�-��T�Z�Z�,�-�(�.�.�(��T�Z�Z�,�-�E�.�E��T�Z�Z�,�-�
J�.�
J��T�Z�Z�,�-�;�.�;� �T�Z�Z�)�*��T�Z�Z�,�-�1�.�+�1rr'�AF_UNIXzUNIX Sockets are not supportedc�B��eZdZ�fd�Zej
d��Zej
d��Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
ejeed
�d�ej
d���Zd
�Zd�Zej,d�d��Zd�Zd�Zd�Zd�Zd�Z�xZS)� SelectorEventLoopUnixSocketTestsc���t�|��tj�|_|j|j�yrr)r/s �rr+z&SelectorEventLoopUnixSocketTests.setUp r2rc���tj�5}tjtj�}|j	|�|jd�|j
�|jjd�|�}|jj|�}|j
�|jj|j��ddd�y#1swYyxYw)Nrc��yrrrrrrLz]SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_sock.<locals>.<lambda>-rMr)�
test_utils�unix_socket_path�socketr��bind�listenr#r-�create_unix_server�run_until_complete�wait_closed)r0�path�sock�coro�srvs     r�*test_create_unix_server_existing_path_sockzKSelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_sock%s���
�
(�
(�
*�		<�d��=�=����0�D��I�I�d�O��K�K��N��J�J�L��9�9�/�/��d�C�D��)�)�.�.�t�4�C��I�I�K��I�I�(�(����):�;�		<�		<�		<�s�CC%�%C.c�b�tj�5}tj|�}|jjd�|�}|jj
|�}|j�|jj
|j��ddd�y#1swYyxYw)Nc��yrrrrrrLzRSelectorEventLoopUnixSocketTests.test_create_unix_server_pathlib.<locals>.<lambda>6rMr)	r�r��pathlib�Pathr-r�r�r#r�)r0r��srv_coror�s    r�test_create_unix_server_pathlibz@SelectorEventLoopUnixSocketTests.test_create_unix_server_pathlib2s��
�
(�
(�
*�	<�d��<�<��%�D��y�y�3�3�L�$�G�H��)�)�.�.�x�8�C��I�I�K��I�I�(�(����):�;�	<�	<�	<�s�BB%�%B.c�D�tj�5}tj|�}|jjd�|�}|j
t�5|jj|�ddd�ddd�y#1swY�xYw#1swYyxYw)Nc��yrrrrrrLzVSelectorEventLoopUnixSocketTests.test_create_unix_connection_pathlib.<locals>.<lambda>>rMr)	r�r�r�r�r-�create_unix_connectionr5�FileNotFoundErrorr��r0r�r�s   r�#test_create_unix_connection_pathlibzDSelectorEventLoopUnixSocketTests.test_create_unix_connection_pathlib;s���
�
(�
(�
*�	3�d��<�<��%�D��9�9�3�3�L�$�G�D��"�"�#4�5�
3��	�	�,�,�T�2�
3�	3�	3�
3�
3��	3�	3�s$�AB�B
�9B�
B	�B�Bc�f�tj�}|jtj|�t|d�j
�|jjd�|�}|jtd�5|jj|�ddd�y#1swYyxYw)N�wbc��yrrrrrrLz`SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsock.<locals>.<lambda>JrMrzAddress.*is already in use)r��gen_unix_socket_pathrZr�unlink�openr#r-r�r[rwr�r�s   r�-test_create_unix_server_existing_path_nonsockzNSelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsockDs����.�.�0�����	�(�(�$�/��T�4���� ��y�y�+�+�L�$�?��
�
#�
#�G�$@�B�	/��I�I�(�(��.�	/�	/�	/�s�B'�'B0c���|jjd�dd��}|jtd�5|jj	|�ddd�y#1swYyxYw)Nc��yrrrrrrLzSSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_bool.<locals>.<lambda>PrMr�spamT)r��sslz"ssl argument must be an SSLContext)r-r�r[r6r��r0r�s  r� test_create_unix_server_ssl_boolzASelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_boolOs]���y�y�+�+�L�v�04�,�6��
�
#�
#�I�$H�J�	/��I�I�(�(��.�	/�	/�	/���A�A$c���|jjd�d��}|jtd�5|jj	|�ddd�y#1swYyxYw)Nc��yrrrrrrLzXSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosock.<locals>.<lambda>WrMr�r�z#path was not specified, and no sock�r-r�r[r8r�r�s  r�%test_create_unix_server_nopath_nosockzFSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosockVsV���y�y�+�+�L�t�+�D��
�
#�
#�J�$I�K�	/��I�I�(�(��.�	/�	/�	/�s�A�A#c�$�tj�}|5|jjd�d|��}|jtd�5|jj|�ddd�ddd�y#1swY�xYw#1swYyxYw)Nc��yrrrrrrLzXSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsock.<locals>.<lambda>_rMr�r�r��"A UNIX Domain Stream.*was expected)r�r-r�r[r8r��r0r�r�s   r�%test_create_unix_server_path_inetsockzFSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsock\s����}�}���
�	3��9�9�/�/��4�59�0�;�D��'�'�
�(L�N�
3��	�	�,�,�T�2�
3�	3�	3�
3�
3��	3�	3�s#�6B�
A:�)B�:B	�?B�Bc�`�tjtjtj�}|5|jj	d�d|��}|jtd�5|jj|�ddd�ddd�y#1swY�xYw#1swYyxYw)Nc��yrrrrrrLzUSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgram.<locals>.<lambda>hrMrr�r�)r�r��
SOCK_DGRAMr-r�r[r8r�r�s   r�"test_create_unix_server_path_dgramzCSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgrames����}�}�V�^�^�V�->�->�?��
�	3��9�9�/�/��4�59�0�;�D��'�'�
�(L�N�
3��	�	�,�,�T�2�
3�	3�	3�
3�
3��	3�	3�s#�6B$�+B�B$�B!	�B$�$B-�
SOCK_NONBLOCKz$no socket.SOCK_NONBLOCK (linux only)c�(�tj�}|jtj|�tj
t
jt
jt
jz�}|5|j|�|jjd�d|��}|jj|�}|j�|jj|j��ddd�y#1swYyxYw)Nc��yrrrrrrLz^SelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittype.<locals>.<lambda>yrMrr�)r�r�rZrr�r�r��SOCK_STREAMr�r�r-r�r�r#r�)r0�fnr�r�r�s     r�+test_create_unix_server_path_stream_bittypezLSelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittypens����
,�
,�
.�����	�(�(�"�-��}�}�V�^�^�#�/�/�&�2F�2F�F�H��
�	<��I�I�b�M��9�9�/�/��4�59�0�;�D��)�)�.�.�t�4�C��I�I�K��I�I�(�(����):�;�
	<�	<�	<�s
�:BD�Dc���|jjd�dd��}|jtd�5|jj	|�ddd�y#1swYyxYw)Nc��yrrrrrrLzfSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_timeout_with_plain_sock.<locals>.<lambda>�rMrr�r�r��ssl_handshake_timeout�1ssl_handshake_timeout is only meaningful with sslr�r�s  r�3test_create_unix_server_ssl_timeout_with_plain_sockzTSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_timeout_with_plain_socksa���y�y�+�+�L�v�BC�,�E��
�
#�
#��C�E�	/�
�I�I�(�(��.�	/�	/�	/�r�c�"�tj�}|5|jjd�|��}|jtd�5|jj|�ddd�ddd�y#1swY�xYw#1swYyxYw)Nc��yrrrrrrLz\SelectorEventLoopUnixSocketTests.test_create_unix_connection_path_inetsock.<locals>.<lambda>�rMr�r�r�)r�r-r�r[r8r�r�s   r�)test_create_unix_connection_path_inetsockzJSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_inetsock�s����}�}���
�	3��9�9�3�3�L�9=�4�?�D��'�'�
�(L�N�
3��	�	�,�,�T�2�
3�	3�	3�
3�
3��	3�	3�s#�5B�A9�(B�9B	�>B�Bzasyncio.unix_events.socketc���tj�}||j_t|j
_|jjd�d��}|jt�5|jj|�ddd�|j|jj�t|j
_|jjd�d��}|jt�5|jj|�ddd�|j|jj�y#1swY��xYw#1swY�;xYw)Nc��yrrrrrrLzUSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_error.<locals>.<lambda>�rMrz/testr�c��yrrrrrrLzUSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_error.<locals>.<lambda>�rMr)rrBr�r�rwr�rPr-r�r5r�r�r#r��MemoryError)r0�m_socketr�r�s    r�"test_create_unix_server_bind_errorzCSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_error�s����y�y�{��'+����$� '��	�	���y�y�+�+�L�w�+�G��
�
�
�w�
'�	/��I�I�(�(��.�	/�����
�
�)�)�*� +��	�	���y�y�+�+�L�w�+�G��
�
�
�{�
+�	/��I�I�(�(��.�	/�����
�
�)�)�*�	/�	/��	/�	/�s�.E	�?E�	E�Ec��|jjd�tjt	���}|jtd�5|jj|�ddd�y#1swYyxYw)Nc��yrrrrrrLzXSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sock.<locals>.<lambda>�rMrrzpath and sock can not be)r-r��os�devnullr�r[r8r�r�s  r�%test_create_unix_connection_path_sockzFSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sock�s`���y�y�/�/��"�*�*�6�8�0�5��
�
#�
#�J�0J�
K�	/��I�I�(�(��.�	/�	/�	/�s�A1�1A:c���|jjd�d�}|jtd�5|jj	|�ddd�y#1swYyxYw)Nc��yrrrrrrLz\SelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosock.<locals>.<lambda>�rMrzno path and sock were specified�r-r�r[r8r�r�s  r�)test_create_unix_connection_nopath_nosockzJSelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosock�sV���y�y�/�/��$� ��
�
#�
#�J�$E�G�	/��I�I�(�(��.�	/�	/�	/�s�A�A"c���|jjd�tjd��}|j	t
d�5|jj
|�ddd�y#1swYyxYw)Nc��yrrrrrrLz_SelectorEventLoopUnixSocketTests.test_create_unix_connection_nossl_serverhost.<locals>.<lambda>�rMrr�)�server_hostnamez"server_hostname is only meaningful�r-r�r
rr[r8r�r�s  r�,test_create_unix_connection_nossl_serverhostzMSelectorEventLoopUnixSocketTests.test_create_unix_connection_nossl_serverhost�sa���y�y�/�/��"�*�*�f�0�>��
�
#�
#�J�$H�J�	/��I�I�(�(��.�	/�	/�	/���A)�)A2c���|jjd�tjd��}|j	t
d�5|jj
|�ddd�y#1swYyxYw)Nc��yrrrrrrLz_SelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_noserverhost.<locals>.<lambda>�rMrT)r�z/you have to pass server_hostname when using sslrr�s  r�,test_create_unix_connection_ssl_noserverhostzMSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_noserverhost�sf���y�y�/�/��"�*�*�$�0�0���
#�
#��I�K�	/�
�I�I�(�(��.�	/�	/�	/�rc���|jjd�dd��}|jtd�5|jj	|�ddd�y#1swYyxYw)Nc��yrrrrrrLzjSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_timeout_with_plain_sock.<locals>.<lambda>�rMrr�rr�r�rr�s  r�7test_create_unix_connection_ssl_timeout_with_plain_sockzXSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_timeout_with_plain_sock�sa���y�y�/�/��6�BC�0�E��
�
#�
#��C�E�	/�
�I�I�(�(��.�	/�	/�	/�r�)rorprqr+r�skip_unless_bind_unix_socketr�r�r�r�r�r�r�r��unittest�
skipUnless�hasattrr�r�r�rrr�rrrrrrr�r�s@rr�r�s����'�
�/�/�
<�0�
<��/�/�<�0�<�3�	/�/�/�3�3��X������9�?�A��/�/�<�0�A�<�/�3��T�Z�Z�,�-�+�.�+�"/�/�/�/�/rr��sendfilezsendfile is not supportedc����eZdZddzZGd�dej
�Ze�fd��Ze�fd��Z	�fd�Z
dd�Zd	�Zd
�Z
d�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z�xZS)�&SelectorEventLoopUnixSockSendfileTestss�12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde�c�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�.SelectorEventLoopUnixSockSendfileTests.MyProtoc��d|_d|_t�|_|j	�|_d|_|j	�|_y)NF)�started�closed�	bytearray�data�
create_future�futr$�_ready)r0r-s  r�__init__z7SelectorEventLoopUnixSockSendfileTests.MyProto.__init__�s@�� �D�L��D�K�!��D�I��)�)�+�D�H�!�D�N��,�,�.�D�Krc�V�d|_||_|jjd�yrK)r(r$r.�
set_result)r0r$s  r�connection_madez>SelectorEventLoopUnixSockSendfileTests.MyProto.connection_made�s"���D�L�&�D�N��K�K�"�"�4�(rc�:�|jj|�yr)r+�extend)r0r+s  r�
data_receivedz<SelectorEventLoopUnixSockSendfileTests.MyProto.data_received�s���I�I���T�"rc�H�d|_|jjd�yrK)r)r-r1)r0�excs  r�connection_lostz>SelectorEventLoopUnixSockSendfileTests.MyProto.connection_lost�s���D�K��H�H����%rc��8K�|j�d{���y7��wr)r-r;s rr�z:SelectorEventLoopUnixSockSendfileTests.MyProto.wait_closed�s�����(�(�N�N�s���N)rorprqr/r2r5r8r�rrr�MyProtor&�s��	/�	)�
	#�	&�	rr:c���ttjd�5}|j|j�ddd�t
�|��y#1swY�xYw)Nr�)r�r�TESTFN�write�DATAr*�
setUpClass)�cls�fpr1s  �rr?z1SelectorEventLoopUnixSockSendfileTests.setUpClass�sE���
�)�"�"�D�
)�	�R��H�H�S�X�X��	�
����	�	�s�A�Ac�h��tjtj�t�|��yr)rr�r<r*�
tearDownClass)r@r1s �rrCz4SelectorEventLoopUnixSockSendfileTests.tearDownClass�s"�������)�)�*�
���rc���tj�|_|j|j�t	t
jd�|_|j|jj�t�|�-�y)N�rb)r�new_event_loopr-r.r�rr<�filerZr#r*r+r/s �rr+z,SelectorEventLoopUnixSockSendfileTests.setUp�sV����*�*�,��	����D�I�I�&���)�)�4�0��	�����	�	���(�
��
�rc��tjtjtj�}|jd�|j	tj
tjd�|j	tj
tjd�|r|j|j�|S)NFr$)
r��AF_INETr��setblocking�
setsockopt�
SOL_SOCKET�	SO_SNDBUF�	SO_RCVBUFrZr#)r0�cleanupr�s   r�make_socketz2SelectorEventLoopUnixSockSendfileTests.make_socket�sz���}�}�V�^�^�V�-?�-?�@�����������)�)�6�+;�+;�T�B�����)�)�6�+;�+;�T�B���O�O�D�J�J�'��rc�8�|jj|�Sr)r-r�r�s  r�run_loopz/SelectorEventLoopUnixSockSendfileTests.run_loops���y�y�+�+�D�1�1rc�.�����j�}�j�j��tj�}�jd��}|jtj|f��j�jj�fd�|�����j�jj|tj|f���j�j����fd�}�j|�|�fS)NF)rOc����Srr)�protos�rrLz@SelectorEventLoopUnixSockSendfileTests.prepare.<locals>.<lambda>s���E�rrc�����jj��j�j���j��j�j��yr)r$r#rRr�)rUr0�servers���rrOz?SelectorEventLoopUnixSockSendfileTests.prepare.<locals>.cleanupsF����O�O�!�!�#��M�M�%�+�+�-�.��L�L�N��M�M�&�,�,�.�/r)rPr:r-r�find_unused_portr��HOSTrR�
create_server�sock_connectr.rZ)r0r��port�srv_sockrOrUrWs`    @@r�preparez.SelectorEventLoopUnixSockSendfileTests.prepares�������!�����T�Y�Y�'���-�-�/���#�#�E�#�2���
�
�}�)�)�4�0�1����t�y�y�6�6��� 7� *�+���
�
�d�i�i�,�,�T�M�4F�4F��3M�N�O��
�
�e�l�l�#�	0�	
���� ��U�{�rc
��|j�\}}tjdg��5|jtj
d�5|j
|jj||jdd��ddd�ddd�|j|jj�d�y#1swY�<xYw#1swY�@xYw)Nzasyncio.unix_events.os)�specz$os[.]sendfile[(][)] is not availabler)r^rr�r[r�SendfileNotAvailableErrorrRr-�_sock_sendfile_nativerGre�tell)r0r�rUs   r� test_sock_sendfile_not_availablezGSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_availables����l�l�n���e�
�Z�Z�0�r�
:�	H��'�'��(I�(I�(N�P�
H��
�
�d�i�i�=�=�d�D�I�I�>?��G�H�
H�	H�
	
��������)�1�-�	
H�
H��	H�	H�s#�!C�8B?�C�?C	�C�Cc	�V�|j�\}}t�}|jtjd�5|j|jj||dd��ddd�|j|jj�d�y#1swY�4xYw�N�not a regular filer)r^r�r[rrarRr-rbrerGrc�r0r�rU�fs    r�test_sock_sendfile_not_a_filezDSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_a_file#s����l�l�n���e��H��
�
#�
#�G�$E�$E�$8�:�	D��M�M�$�)�)�9�9�$��:;�T�C�
D�	D�	
��������)�1�-�		D�	D�s�.B�B(c	�j�|j�\}}tj�}|jtj
d�5|j
|jj||dd��ddd�|j|jj�d�y#1swY�4xYwrf)r^�io�BytesIOr[rrarRr-rbrerGrcrhs    r�test_sock_sendfile_iobufferzBSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_iobuffer,s����l�l�n���e��J�J�L��
�
#�
#�G�$E�$E�$8�:�	D��M�M�$�)�)�9�9�$��:;�T�C�
D�	D�	
��������)�1�-�		D�	D�s�.B)�)B2c	��|j�\}}tj�}d|j_|jtjd�5|j|jj||dd��ddd�|j|jj�d�y#1swY�4xYw)Nrkrgr)r^rrB�filenor�r[rrarRr-rbrerGrcrhs    r�#test_sock_sendfile_not_regular_filezJSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_regular_file5s����l�l�n���e��I�I�K�� "�����
�
#�
#�G�$E�$E�$8�:�	D��M�M�$�)�)�9�9�$��:;�T�C�
D�	D�	
��������)�1�-�		D�	D�s�.B:�:Cc�L�|j�\}}|jj�}|jj	�}|jj|d||ddt
|j�d�|j�tjtj�5|j|�ddd�|jt�5|jj j#|�ddd�y#1swY�MxYw#1swYyxYw�Nr)r^r-r,rGrp�_sock_sendfile_native_implr�r>rC�
contextlib�suppressr�CancelledErrorrRr5�KeyError�	_selector�get_key�r0r�rUr-rps     r�test_sock_sendfile_cancel1zASelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_cancel1?s����l�l�n���e��i�i�%�%�'�����!�!�#���	�	�,�,�S�$��f�-.��c�$�)�)�n�a�	I��
�
��
�
 �
 ��!7�!7�
8�	��M�M�#��	�
�
�
�x�
(�	.��I�I���'�'��-�	.�	.�	�	��	.�	.�s�0D�&D�D�D#c�@�|j�\}}|jj�}|jj	�}|jj|d||ddt
|j�d�|j�|jj||j	�||ddt
|j�d�|jt�5|jjj|�ddd�y#1swYyxYwrs)
r^r-r,rGrprtr�r>rCr5rxryrzr{s     r�test_sock_sendfile_cancel2zASelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_cancel2Ls����l�l�n���e��i�i�%�%�'�����!�!�#���	�	�,�,�S�$��f�-.��c�$�)�)�n�a�	I��
�
���	�	�,�,�S�$�+�+�-��v�-.��c�$�)�)�n�a�	I�
�
�
�x�
(�	.��I�I���'�'��-�	.�	.�	.�s�%&D�Dc�8�|j�\}}|jj�}tj�}d|j
_tjdt���5|jj|d||ddt|j�d�ddd�|jjj|�}|j|�|j j#tj$�y#1swY�ixYw)NF�os.sendfile�rPr)r^rGrprrB�	cancelledr�r��BlockingIOErrorr-rtr�r>ryrz�assertIsNotNone�add_done_callbackr��ANY)r0r�rUrpr-�keys      r�!test_sock_sendfile_blocking_errorzHSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_blocking_errorYs����l�l�n���e����!�!�#���i�i�k��%*��
�
�"�
�Z�Z�
�?�3D�
E�	M��I�I�0�0��d�D�&�12�D�#�d�i�i�.�!�
M�	M��i�i�!�!�)�)�$�/�����S�!����5�5�d�h�h�?�	M�	M�s�26D�Dc��|j�\}}|jj�}|jj	�}tjdt���5|jj|d||ddt|j�d�ddd�|jt�5|jjj|�ddd�|j�}|j!|t"j$�|j'd|jj)��y#1swY��xYw#1swY�pxYw)Nr�r�r)r^rGrpr-r,rr�rwrtr�r>r5rxryrz�	exceptionrdrrarerc)r0r�rUrpr-r7s      r�&test_sock_sendfile_os_error_first_callzMSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_os_error_first_callfs���l�l�n���e����!�!�#���i�i�%�%�'��
�Z�Z�
�7�9�
=�	M��I�I�0�0��d�D�&�12�D�#�d�i�i�.�!�
M�	M��
�
�x�
(�	.��I�I���'�'��-�	.��m�m�o�����c�7�#D�#D�E�����D�I�I�N�N�,�-�	M�	M��	.�	.�s�'6E�:&E�E�Ec��|j�\}}|jj�}|jj	�}t�}t
jd|��5|jj||j�||ddt|j�d�ddd�|jt�5|jjj|�ddd�|j�}|j!||�|j#d|jj%��y#1swY��xYw#1swY�bxYw�Nr�r�i�)r^rGrpr-r,rwrr�rtr�r>r5rxryrzr��assertIsrerc�r0r�rUrpr-�errr7s       r�%test_sock_sendfile_os_error_next_callzLSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_os_error_next_callts���l�l�n���e����!�!�#���i�i�%�%�'���i��
�Z�Z�
�3�
7�	7��I�I�0�0��d�k�k�m�15�v�15�t�S����^�15�
7�	7�
�
�
�x�
(�	.��I�I���'�'��-�	.��m�m�o���
�
�c�3������t�y�y�~�~�/�0�	7�	7��
	.�	.�s�)AE�
&E�E�Ec���|j�\}}|jj�}|jj	�}tj�}tjd|��5|jj||j�||ddt|j�d�ddd�|jt�5|jjj|�ddd�|j!�}|j#||�|j%d|jj'��y#1swY��xYw#1swY�bxYwr�)r^rGrpr-r,rrarr�rtr�r>r5rxryrzr�r�rercr�s       r�test_sock_sendfile_exceptionzCSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_exception�s
���l�l�n���e����!�!�#���i�i�%�%�'���/�/�1��
�Z�Z�
�3�
7�	7��I�I�0�0��d�k�k�m�15�v�15�t�S����^�15�
7�	7�
�
�
�x�
(�	.��I�I���'�'��-�	.��m�m�o���
�
�c�3������t�y�y�~�~�/�0�	7�	7��
	.�	.�s�3AE�&E�E�E$)T)rorprqr>r�Protocolr:�classmethodr?rCr+rPrRr^rdrjrnrqr|r~r�r�r�r�r�r�s@rr#r#�s������$�D��'�"�"��2����
� �� ���2��,.�.�.�.�.�.�@�.�1�"1rr#c�*��eZdZ�fd�Zdd�Zd�Zejd�d��Zejd�d��Z	ejd�d��Z
ejd�ejd�d	���Zejd�d
��Zejd�d��Z
ejd�d��Zejd�d
��Zejd�d��Zd�Zd�Zd�Zd�Zd�Zd�Z�xZS)�UnixReadPipeTransportTestsc���t�|��|j�|_t	j
tj�|_tjtj��|_
d|jj_tj d�}|j#�|j%|j&�tj d�}|j#�}tj�}t(j*|_||_|j%|j&�y�N)�spec_set�zos.set_blockingzos.fstat)r*r+�
new_test_loopr-r��make_test_protocolrr��protocolrrBrl�	RawIOBase�piperpr�r��startrZ�stop�stat�S_IFIFO�st_mode�r0�blocking_patcher�
fstat_patcher�m_fstat�str1s     �rr+z UnixReadPipeTransportTests.setUp�s����
��
���&�&�(��	�"�5�5�g�6F�6F�G��
��I�I�r�|�|�4��	�()��	�	���%��:�:�&7�8����� ����(�-�-�.��
�
�:�.�
��%�%�'��
�Y�Y�[���\�\��
�!������
�*�*�+rc��tj|j|j|j|��}|jt|�|S�N��waiter)r�_UnixReadPipeTransportr-r�r�rZr%�r0r�r$s   r�read_pipe_transportz.UnixReadPipeTransportTests.read_pipe_transport�s@���6�6�t�y�y�$�)�)�7;�}�}�>D�F�	�	
���,�i�8��rc�f�|jj�}|j|��}|jj|�|jj
j
|�|jjd|j�|j|j��y�Nr�r�)r-r,r�r�r�r2rF�
assert_reader�_read_ready�assertIsNone�result�r0r��trs   r�	test_ctorz$UnixReadPipeTransportTests.test_ctor�s}�����(�(�*��
�
%�
%�V�
%�
4���	�	�$�$�V�,��
�
�%�%�8�8��<��	�	����2�>�>�2����&�-�-�/�*rzos.readc���|j�}d|_|j�|jd|j�|j
jjd�y�N�datar�)r�r�r�rF�max_sizer�r5�r0�m_readr�s   r�test__read_readyz+UnixReadPipeTransportTests.test__read_ready�sN��
�
%�
%�
'��%���
�����!�!�!�R�[�[�1��
�
�#�#�6�6�w�?rc��|j�}d|_|j�|jd|j�|j|jj�tj|j�|jjj�|jjjd�y)Nrr�)
r�r�r�rFr�r�r-�readersr��run_brieflyr��eof_receivedr8r�s   r�test__read_ready_eofz/UnixReadPipeTransportTests.test__read_ready_eof�s���
�
%�
%�
'��!���
�����!�!�!�R�[�[�1�������*�*�+����t�y�y�)��
�
�"�"�5�5�7��
�
�%�%�8�8��>rc�.�|j�}t|_|j�|j	d|j
�t
j|j�|j|jjj�y�Nr�)
r�r�rPr�rFr�r�r�r-r�r�r5r�r�s   r�test__read_ready_blockedz3UnixReadPipeTransportTests.test__read_ready_blocked�sf��
�
%�
%�
'��,���
�����!�!�!�R�[�[�1����t�y�y�)�������4�4�;�;�<r�asyncio.log.logger.errorc�p�|j�}t�}||_tj�|_|j
�|jd|j�|j
j|�|jtjd�tttf��y)Nr�z;Fatal read error on pipe transport
protocol:.*
transport:.*)�exc_info)r�rwrPrrB�_closer�rFr�r��MockPattern�MOCK_ANY)r0r��m_logexcr�r�s     r�test__read_ready_errorz1UnixReadPipeTransportTests.test__read_ready_error�s����
%�
%�
'���i�� ����I�I�K��	�
�����!�!�!�R�[�[�1�
�	�	�$�$�S�)��#�#��"�"�.�
/��x��2�		$�	4rc���|j�}tj�}|jj	d|�|j�|j
|jj�yr�)r�rrBr-�
add_reader�
pause_readingr�r�)r0r�r��ms    r�test_pause_readingz-UnixReadPipeTransportTests.test_pause_reading�sS��
�
%�
%�
'���I�I�K���	�	���Q��"�
����������*�*�+rc��|j�}|j�|j�|jj	d|j
�yr�)r�r��resume_readingr-r�r�r�s   r�test_resume_readingz.UnixReadPipeTransportTests.test_resume_reading�s@��
�
%�
%�
'��
����
�����	�	����2�>�>�2rc��|j�}tj�|_|j	�|jjd�yr)r�rrBr�r#rFr�s   rr�z%UnixReadPipeTransportTests.test_close�s8��
�
%�
%�
'���I�I�K��	�
���
�
�	�	�$�$�T�*rc���|j�}d|_tj�|_|j�|j
|jj�yrK)r��_closingrrBr�r#r�r�r�s   r�test_close_already_closingz5UnixReadPipeTransportTests.test_close_already_closingsE��
�
%�
%�
'������I�I�K��	�
���
�������)�)�*rc�j�|j�}t�}|j|�|j|j	��|j|jj�tj|j�|jjj|�yr)
r�r�r�r��
is_closingr�r-r�r�r�r�r8rF)r0r�r�r�s    r�test__closez&UnixReadPipeTransportTests.test__close	sv��
�
%�
%�
'���h��
�	�	�#������
�
��(�������*�*�+����t�y�y�)��
�
�%�%�8�8��=rc��|j�}|j|j�|j|j�d}|j	|�|j
jj|�|jjj�|j|j�|j|j�yr)r�r��	_protocol�_loop�_call_connection_lostr�r8rFr�r#r��r0r�r�s   r�test__call_connection_lostz5UnixReadPipeTransportTests.test__call_connection_losts���
�
%�
%�
'�����R�\�\�*����R�X�X�&���
� � ��%��
�
�%�%�8�8��=��	�	���*�*�,����"�,�,�'����"�(�(�#rc���|j�}|j|j�|j|j�t	�}|j|�|jjj|�|jjj�|j|j�|j|j�yr)r�r�r�r�rwr�r�r8rFr�r#r�r�s   r�#test__call_connection_lost_with_errz>UnixReadPipeTransportTests.test__call_connection_lost_with_err s���
�
%�
%�
'�����R�\�\�*����R�X�X�&��i��
� � ��%��
�
�%�%�8�8��=��	�	���*�*�,����"�,�,�'����"�(�(�#rc���|j�}|j�tj|j�|j|j�|j�yr)r�r#r�r�r-r�r�r��r0r�s  r�!test_pause_reading_on_closed_pipez<UnixReadPipeTransportTests.test_pause_reading_on_closed_pipe-sI��
�
%�
%�
'��
���
����t�y�y�)����"�(�(�#�
���rc�d�|j�}|j�|j�yr)r�r�r�s  r�!test_pause_reading_on_paused_pipez<UnixReadPipeTransportTests.test_pause_reading_on_paused_pipe4s(��
�
%�
%�
'��
����
���rc���|j�}|j�tj|j�|j|j�|j�yr)r�r#r�r�r-r�r�r�r�s  r�"test_resume_reading_on_closed_pipez=UnixReadPipeTransportTests.test_resume_reading_on_closed_pipe:sI��
�
%�
%�
'��
���
����t�y�y�)����"�(�(�#�
���rc�D�|j�}|j�yr)r�r�r�s  r�"test_resume_reading_on_paused_pipez=UnixReadPipeTransportTests.test_resume_reading_on_paused_pipeAs��
�
%�
%�
'��	���rr)rorprqr+r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�s@rr�r��s]���,�$�+��T�Z�Z�	��@��@��T�Z�Z�	��	?��	?��T�Z�Z�	��=��=��T�Z�Z�*�+��T�Z�Z�	��
4��,�
4��T�Z�Z�	��,��,��T�Z�Z�	��3��3��T�Z�Z�	��+��+��T�Z�Z�	��+��+��T�Z�Z�	��>��>�$�$����rr�c�P��eZdZ�fd�Zdd�Zd�Zd�Zejd�d��Z	ejd�d��Z
ejd�d��Zejd�d	��Zejd�d
��Z
ejd�ejd�d���Zejd�d
��Zd�Zejd�d��Zejd�d��Zejd�d��Zejd�d��Zejd�ejd�d���Zejd�d��Zejd�d��Zd�Zd�Zd�Zd�Zd�Zd�Z�xZS)�UnixWritePipeTransportTestsc���t�|��|j�|_t	j
tj�|_tjtj��|_
d|jj_tj d�}|j#�|j%|j&�tj d�}|j#�}tj�}t(j*|_||_|j%|j&�yr�)r*r+r�r-r�r�r�BaseProtocolr�rrBrlr�r�rpr�r�r�rZr�r��S_IFSOCKr�r�s     �rr+z!UnixWritePipeTransportTests.setUpJs����
��
���&�&�(��	�"�5�5�g�6J�6J�K��
��I�I�r�|�|�4��	�()��	�	���%��:�:�&7�8����� ����(�-�-�.��
�
�:�.�
��%�%�'��
�Y�Y�[���]�]��
�!������
�*�*�+rc��tj|j|j|j|��}|jt|�|Sr�)r�_UnixWritePipeTransportr-r�r�rZr%r�s   r�write_pipe_transportz0UnixWritePipeTransportTests.write_pipe_transport\s@���7�7��	�	�4�9�9�8<�
�
�?E�G�	�	
���,�i�8��rc�h�|jj�}|j|��}|jj|�|jj
j
|�|jjd|j�|jd|j��yr�)r-r,r�r�r�r2rFr�r�rer�r�s   rr�z%UnixWritePipeTransportTests.test_ctorcs�����(�(�*��
�
&�
&�f�
&�
5���	�	�$�$�V�,��
�
�%�%�8�8��<��	�	����2�>�>�2�����v�}�}��/rc�b�|j�}|j|j��yr)r�r��
can_write_eofr�s  r�test_can_write_eofz.UnixWritePipeTransportTests.test_can_write_eofls%��
�
&�
&�
(������(�(�*�+rzos.writec�
�|j�}d|_|jd�|jdd�|j	|j
j�|jt�|j�y)N�r�r�)
r�r�r=rFr�r-�writersrer*�_buffer�r0�m_writer�s   r�
test_writez&UnixWritePipeTransportTests.test_writepsb��
�
&�
&�
(�� ���
������"�"�1�g�.�������*�*�+������b�j�j�1rc��|j�}|jd�|j|j�|j|jj
�|j
td�|j�y)Nr)	r�r=r�r�r-rrer*rrs   r�test_write_no_dataz.UnixWritePipeTransportTests.test_write_no_datays]��
�
&�
&�
(��
����
�������(�������*�*�+�����3�����4rc���|j�}d|_|jd�|jj	d|j
�|j
td�|j�y)Nr�r�r��ta)	r�r�r=r-�
assert_writer�_write_readyrer*rrs   r�test_write_partialz.UnixWritePipeTransportTests.test_write_partial�sU��
�
&�
&�
(�� ���
������	�	����2�?�?�3�����5�)�2�:�:�6rc�~�|j�}|jjd|j�t	d�|_|j
d�|j|j�|jjd|j�|jt	d�|j
�y)Nr�spreviousr�spreviousdata)r�r-�
add_writerr
r*rr=r�r�r	rers   r�test_write_bufferz-UnixWritePipeTransportTests.test_write_buffer�s���
�
&�
&�
(���	�	���Q����0��{�+��
�
�����������(��	�	����2�?�?�3�����?�3�R�Z�Z�@rc�0�|j�}t�|_|jd�|j	dtd��|jjd|j�|jtd�|j�yr�)r�r�rPr=rFr*r-r	r
rerrs   r�test_write_againz,UnixWritePipeTransportTests.test_write_again�sm��
�
&�
&�
(��-�/���
������"�"�1�i��&8�9��	�	����2�?�?�3�����7�+�R�Z�Z�8rzasyncio.unix_events.loggerc��|j�}t�}||_tj�|_|j
d�|jdd�|j|jj�|jt�|j�|j
j|d�|jd|j�|j
d�|jd|j�|j
d�|j
d�|j
d�|j
d�|jjd�|j!�y)Nr�r�z#Fatal write error on pipe transportrr�z=pipe closed by peer or os.write(pipe, data) raised exception.)r�rwrPrrB�_fatal_errorr=rFr�r-rrer*r�
_conn_lost�warningr#)r0r�m_logr�r�s     r�test_write_errz*UnixWritePipeTransportTests.test_write_err�s���
&�
&�
(���i��!����)�)�+���
������"�"�1�g�.�������*�*�+������b�j�j�1�
���*�*��A�	C�	
����B�M�M�*�
���������B�M�M�*�
�����
�����
�����
�����
�
�
�(�(�K�	M�
���
rc��|j�}|j�|jd�|j|jd�|jd�|j|jd�y)Nr�rr�)r�r�r=rerrs   r�test_write_closez,UnixWritePipeTransportTests.test_write_close�sZ��
�
&�
&�
(��
����
������������*�
������������*rc��|j�}|j�|j|jj�|j|jj
�|j
|j��tj|j�|jjjd�yr)
r�r�r�r-r�rr�r�r�r�r�r8rFr�s  rr�z,UnixWritePipeTransportTests.test__read_ready�s���
�
&�
&�
(��
����������*�*�+�������*�*�+�����
�
��(����t�y�y�)��
�
�%�%�8�8��>rc�P�|j�}|jjd|j�t	d�|_d|_|j�|j|jj�|jt	�|j
�y)Nr�r�r�)
r�r-r
r
r*rr�r�rrers   r�test__write_readyz-UnixWritePipeTransportTests.test__write_ready�st��
�
&�
&�
(���	�	���Q����0��w�'��
� ���
����������*�*�+������b�j�j�1rc�T�|j�}|jjd|j�t	d�|_d|_|j�|jjd|j�|jt	d�|j
�y)Nr�r���a)	r�r-r
r
r*rr�r	rers   r�test__write_ready_partialz5UnixWritePipeTransportTests.test__write_ready_partial�sv��
�
&�
&�
(���	�	���Q����0��w�'��
� ���
�����	�	����2�?�?�3�����4��"�*�*�5rc��|j�}|jjd|j�t	d�|_t
�|_|j�|jdt	d��|jjd|j�|jt	d�|j
�y)Nr�r�)r�r-r
r
r*rr�rPrFr	rers   r�test__write_ready_againz3UnixWritePipeTransportTests.test__write_ready_again�s���
�
&�
&�
(���	�	���Q����0��w�'��
�-�/���
�����"�"�1�i��&8�9��	�	����2�?�?�3�����7�+�R�Z�Z�8rc��|j�}|jjd|j�t	d�|_d|_|j�|jdt	d��|jjd|j�|jt	d�|j
�y)Nr�r�r)
r�r-r
r
r*rr�rFr	rers   r�test__write_ready_emptyz3UnixWritePipeTransportTests.test__write_ready_empty�s���
�
&�
&�
(���	�	���Q����0��w�'��
� ���
�����"�"�1�i��&8�9��	�	����2�?�?�3�����7�+�R�Z�Z�8rr�c���|j�}|jjd|j�t	d�|_t
�x|_}|j�|j|jj�|j|jj�|jt	�|j
�|j|j��|j�|jd|j�t!j"|j�|j$j&j)|�y)Nr�r�r)r�r-r
r
r*rrwrPr�rr�rer�r��assert_not_calledrr�r�r�r8rF)r0rr�r�r�s     r�test__write_ready_errz1UnixWritePipeTransportTests.test__write_ready_err�s����
&�
&�
(���	�	���Q����0��w�'��
�$+�I�-���c�
����������*�*�+�������*�*�+������b�j�j�1�����
�
��(��"�"�$�����B�M�M�*����t�y�y�)��
�
�%�%�8�8��=rc�:�|j�}|jjd|j�d|_td�|_d|_|j�|j|jj�|j|jj�|jt�|j�|jjjd�|jj j�y)Nr�Tr�r�)r�r-r
r
r�r*rr�r�rr�rer�r8rFr�r#rs   r�test__write_ready_closingz5UnixWritePipeTransportTests.test__write_ready_closings���
�
&�
&�
(���	�	���Q����0�����w�'��
� ���
����������*�*�+�������*�*�+������b�j�j�1��
�
�%�%�8�8��>��	�	���*�*�,rc��|j�}|jjd|j�|jj	d|j
�ddg|_|j�|j|j�|j|jj�|j|jj�|jg|j�|j|j��tj |j�|j"j$j'd�y)Nr�sdar)r�r-r
r
r�r�r�abortr�r�r�rrer�r�r�r�r�r8rFrs   r�
test_abortz&UnixWritePipeTransportTests.test_aborts���
�
&�
&�
(���	�	���Q����0��	�	���Q����/��U�^��
�
���
�������(�������*�*�+�������*�*�+�����R�Z�Z�(�����
�
��(����t�y�y�)��
�
�%�%�8�8��>rc��|j�}|j|j�|j|j�d}|j	|�|j
jj|�|jjj�|j|j�|j|j�yr)r�r�r�r�r�r�r8rFr�r#r�r�s   rr�z6UnixWritePipeTransportTests.test__call_connection_lost"s���
�
&�
&�
(�����R�\�\�*����R�X�X�&���
� � ��%��
�
�%�%�8�8��=��	�	���*�*�,����"�,�,�'����"�(�(�#rc���|j�}|j|j�|j|j�t	�}|j|�|jjj|�|jjj�|j|j�|j|j�yr)r�r�r�r�rwr�r�r8rFr�r#r�r�s   rr�z?UnixWritePipeTransportTests.test__call_connection_lost_with_err/s���
�
&�
&�
(�����R�\�\�*����R�X�X�&��i��
� � ��%��
�
�%�%�8�8��=��	�	���*�*�,����"�,�,�'����"�(�(�#rc���|j�}tj�|_|j	�|jj�|j	�yr)r�rrB�	write_eofr#rFr�s  rr�z&UnixWritePipeTransportTests.test_close<sA��
�
&�
&�
(���y�y�{���
���
�
���'�'�)�	���
rc���|j�}tj�|_d|_|j�|j
|jj�yrK)r�rrBr/r�r#r�r�r�s  r�test_close_closingz.UnixWritePipeTransportTests.test_close_closingEsE��
�
&�
&�
(���y�y�{������
���
�������,�,�-rc�T�|j�}|j�|j|j��|j	|j
j�tj|j
�|jjjd�yr)r�r/r�r�r�r-r�r�r�r�r8rFr�s  r�test_write_eofz*UnixWritePipeTransportTests.test_write_eofLsm��
�
&�
&�
(��
��������
�
��(�������*�*�+����t�y�y�)��
�
�%�%�8�8��>rc���|j�}dg|_|j�|j|j	��|j|jjj�y)Nr�)	r�rr/r�r�r�r�r8r�r�s  r�test_write_eof_pendingz2UnixWritePipeTransportTests.test_write_eof_pendingTsR��
�
&�
&�
(���Y��
�
��������
�
��(�������6�6�=�=�>rr)rorprqr+r�r�r�rr�rrrrrrrr�rrr!r#r&r(r+r�r�r�r1r3r5r�r�s@rr�r�Hs���,�$�0�,��T�Z�Z�
��2��2��T�Z�Z�
��5��5��T�Z�Z�
��7��7��T�Z�Z�
��A��A��T�Z�Z�
��9��9��T�Z�Z�,�-��T�Z�Z�
����.��2�T�Z�Z�
��+��+�?��T�Z�Z�
��2��2��T�Z�Z�
��6��6��T�Z�Z�
��9��9��T�Z�Z�
��9��9��T�Z�Z�*�+��T�Z�Z�
��
>��,�
>��T�Z�Z�
��-��-��T�Z�Z�
��?��?�$�$��.�?�?rr�c��eZdZd�Zd�Zy)�AbstractChildWatcherTestsc��|jt�5Gd�dtj�}ddd�y#1swYyxYw)Nc��eZdZy)�FAbstractChildWatcherTests.test_warns_on_subclassing.<locals>.MyWatcherN)rorprqrrr�	MyWatcherr:`s��rr;)�assertWarns�DeprecationWarningr�AbstractChildWatcher)r0r;s  r�test_warns_on_subclassingz3AbstractChildWatcherTests.test_warns_on_subclassing^s8��
�
�
�0�
1�	�
�G�8�8�
�	�	�	�s	�9�Ac�"�tj�}tj�}|j	t
|j||�|j	t
|j|�|j	t
|j|�|j	t
|j�|j	t
|j�|j	t
|j�|j	t
|j|||�yr)
rrBrr>r5�NotImplementedError�add_child_handler�remove_child_handler�attach_loopr#�	is_active�	__enter__�__exit__�r0ri�watchers   r�test_not_implementedz.AbstractChildWatcherTests.test_not_implementedcs����I�I�K���.�.�0�������!:�!:�A�q�	B������!=�!=�q�	B������!4�!4�a�	9��������	0������!2�!2�	4������!2�!2�	4������!1�!1�1�a��	<rN)rorprqr?rJrrrr7r7\s���
<rr7c��eZdZd�Zy)�BaseChildWatcherTestsc��tj�}tj�}|j	t
|j|�yr)rrBr�BaseChildWatcherr5rA�_do_waitpidrHs   rrJz*BaseChildWatcherTests.test_not_implementedxs6���I�I�K���.�.�0�������!4�!4�a�	9rN)rorprqrJrrrrLrLvs��9rrLc�h��eZdZejjejd�Z�fd�Z	d�Z
d�Zd�Zd�Z
d�Zed��Zed	��Zed
��Zed��Zed��Zed
��Zed��Zed��Zed��Zed��Zed��Zed��Zed��Zed��Z�xZS)�ChildWatcherTestsMixinrc�d��t�|��|j�|_d|_i|_tjj|jd�5|_	|j�|_|jj|j�ddd�y#1swYyxYw)NFrR)
r*r+r�r-�running�zombiesrr�r��m_add_signal_handler�create_watcherrIrDr/s �rr+zChildWatcherTestsMixin.setUp�s����
��
���&�&�(��	�������
�Z�Z�
�
��	�	�/�1�	0�48�4M��.�.�0�D�L��L�L�$�$�T�Y�Y�/�	0�	0�	0�s
�AB&�&B/c�>�t|jtj�s|dk7r|j	|d�	|dkr|j
j
�S||j
j|�fS#t$rYnwxYw|jryt��)Nrkr)rr)�
isinstancerIr�SafeChildWatcher�
assertGreaterrT�popitem�poprxrS�ChildProcessError)r0�pid�flagss   r�waitpidzChildWatcherTestsMixin.waitpid�s����d�l�l�G�$<�$<�=�������s�A�&�	��Q�w��|�|�+�+�-�-��D�L�L�,�,�S�1�1�1���	��	���<�<��#�%�%s�A9�A9�9	B�Bc�"�||j|<yr)rT)r0r^�statuss   r�
add_zombiez!ChildWatcherTestsMixin.add_zombie�s��"����S�rc�@�|dkDr|dz
Sd|cxkr	dkr|dz
S|S|S)Nri�r)r0rbs  r�waitstatus_to_exitcodez-ChildWatcherTestsMixin.waitstatus_to_exitcode�s:���E�>��E�>�!�
�V�
#�e�
#��E�>�!�$��M�6�Mrc��|jjtj|jj
�yr)rUr�r9r�rI�	_sig_chldr;s r�test_create_watcherz*ChildWatcherTestsMixin.test_create_watcher�s)���!�!�9�9��N�N�D�L�L�2�2�	4rc����fd�}|S)Nc���d�}|d|j�5|d|j�5}�||�ddd�ddd�y#1swY�xYw#1swYyxYw)Nc�N�tj||tj��S)N)�wraps�new_callable)rr�rB)�target�wrappers  rr�zIChildWatcherTestsMixin.waitpid_mocks.<locals>.wrapped_func.<locals>.patch�s���z�z�&��/3�y�y�:�:rz*asyncio.unix_events.waitstatus_to_exitcodez
os.waitpid)rer`)r0r��	m_waitpidr^s   �r�wrapped_funcz:ChildWatcherTestsMixin.waitpid_mocks.<locals>.wrapped_func�s`���
:��C�T�E`�E`�a�
&��|�T�\�\�2�
&�6?��T�9�%�
&�
&�
&�
&��
&�
&�s!�A�
A�A�A	�A�Ar)r^rqs` r�
waitpid_mocksz$ChildWatcherTestsMixin.waitpid_mocks�s���	&��rc��tj�}|j5d|_|jj	d|ddd�ddd�|j|j�|jj�|j|j�d|_|jdtd��|jj�|jddddd�|j�|jdtd��|j5|jj�ddd�|j|j�|jj�|jj�|j|j�y#1swY��pxYw#1swY��xYw)	NT�*�	�
�F��
)rrBrIrSrBr�r�rgrcrr�r��ignore_warningsrT�clear�r0rp�callbacks   r�test_sigchldz#ChildWatcherTestsMixin.test_sigchld�s_���9�9�;��
�\�\�	D��D�L��L�L�*�*�2�x��B��C�	D�	
������)�	
����� �������)��������H�R�L�)������ ��(�(��R��B��;�����	
����H�R�L�)�
�
!�
!�	%��L�L�"�"�$�	%�	
������)�	
����������� �������)�?	D�	D��,	%�	%�s�'F6�(G�6G�Gc�z�tj�}tj�}|j5d|_|jj	d|dd�ddd�|j|j�|j|j�|j5|jj	d|dd�ddd�|j|j�|j|j�|jj�|j|j�|j|j�|jdtd��|jj�|jdd	dd�|j|j�|j�|jj�|j|j�|j|j�|jdtd
��d|_|jj�|jdd
dd�|j|j�|j�|jdtd��|jdtd
��|j5|jj�ddd�|j|j�|j|j�|jj�|jj�|j|j�|j|j�y#1swY��>xYw#1swY���xYw#1swY��xYw)NT�+���,��r����lFrw�)rrBrIrSrBr�r�rgrcr r�r�rrzrTr{�r0rp�	callback1�	callback2s    r�test_sigchld_two_childrenz0ChildWatcherTestsMixin.test_sigchld_two_children�s����I�I�K�	��I�I�K�	��\�\�	@��D�L��L�L�*�*�2�y�!�Q�?�	@�	
����)�)�*�����)�)�*��\�\�	C��L�L�*�*�2�y�#�r�B�	C�	
����)�)�*�����)�)�*�	
����� �����)�)�*�����)�)�*�	
����F�1�I�&������ ��)�)�"�b�!�Q�7�����)�)�*�����	
����� �����)�)�*�����)�)�*�	
����H�S�M�*��������� ��)�)�"�c�3��;�����)�)�*�����	
����H�R�L�)�����H�R�L�)�
�
!�
!�	%��L�L�"�"�$�	%�	
����)�)�*�����)�)�*�	
����������� �����)�)�*�����)�)�*�w	@�	@��	C�	C��P	%�	%�s#�&N�%N$�N1�N!�$N.�1N:c�f�tj�}tj�}|j5d|_|jj	d|dd�ddd�|j|j�|j|j�|j5|jj	d|dd�ddd�|j|j�|j|j�|jj�|j|j�|j|j�|jdtd��|jdtd	��d
|_|jj�|jdddd�|jdddd�|j�|j�|jdtd��|jdtd
��|j5|jj�ddd�|j|j�|j|j�y#1swY��4xYw#1swY���xYw#1swY�ZxYw)NT�-�r��.i{r��Nr�F���rwr�)rrBrIrSrBr�r�rgrcrr r�r�rzr�s    r�.test_sigchld_two_children_terminating_togetherzEChildWatcherTestsMixin.test_sigchld_two_children_terminating_together s���I�I�K�	��I�I�K�	��\�\�	A��D�L��L�L�*�*�2�y�"�a�@�	A�	
����)�)�*�����)�)�*��\�\�	D��L�L�*�*�2�y�$��C�	D�	
����)�)�*�����)�)�*�	
����� �����)�)�*�����)�)�*�	
����H�R�L�)�����F�1�I�&��������� ��)�)�"�b�"�a�8��)�)�"�b�$��;���������	
����H�R�L�)�����H�R�L�)�
�
!�
!�	%��L�L�"�"�$�	%�	
����)�)�*�����)�)�*�Q	A�	A��	D�	D��8	%�	%�s#�&J
�%J�3J'�
J�J$�'J0c�>�tj�}|j5|jdt	d��|jj�|jj
d|dd�ddd�|jdddd�|j�|jdtd��|j5|jj�ddd�|j|j�y#1swY��xYw#1swY�1xYw)N�2r�rrx)
rrBrIrcrrgrBr�r�r rzr�r�r|s   r�test_sigchld_race_conditionz2ChildWatcherTestsMixin.test_sigchld_race_conditionPs����9�9�;��
�\�\�	@��O�O�B����,��L�L�"�"�$��L�L�*�*�2�x��B�?�	@�	�(�(��Q��2�6�����	
����F�1�I�&�
�
!�
!�	%��L�L�"�"�$�	%�	
������)�	@�	@��	%�	%�s�AD�D�D�Dc�B�tj�}tj�}|j5d|_|jj	d|d�ddd�|j|j�|j|j�|j5|jj	d|d�ddd�|j|j�|j|j�d|_|jdtd��|jj�|jddd�|j|j�|j�|jdtd��|j5|jj�ddd�|j|j�|j|j�y#1swY���xYw#1swY��HxYw#1swY�ZxYw)	NT�3��Fr�i����ry)rrBrIrSrBr�r�rcr rgr�r�rrzr�s    r�test_sigchld_replace_handlerz3ChildWatcherTestsMixin.test_sigchld_replace_handlerfs����I�I�K�	��I�I�K�	��\�\�	>��D�L��L�L�*�*�2�y�"�=�	>�	
����)�)�*�����)�)�*��\�\�	>��L�L�*�*�2�y�"�=�	>�	
����)�)�*�����)�)�*��������F�1�I�&������ ��)�)�"�b�"�5�����)�)�*�����	
����H�R�L�)�
�
!�
!�	%��L�L�"�"�$�	%�	
����)�)�*�����)�)�*�=	>�	>��	>�	>��$	%�	%�s#�%G;�$H�!H�;H�H�Hc�H�tj�}|j5d|_|jj	d|d�ddd�|j|j�|jjd�|j|j�d|_|jdtd��|j5|jj�ddd�|j|j�y#1swY��xYw#1swY�1xYw)NT�4i�F�c)rrBrIrSrBr�r�rCrcrrzrgr|s   r�test_sigchld_remove_handlerz2ChildWatcherTestsMixin.test_sigchld_remove_handler�s����9�9�;���\�\�	?��D�L��L�L�*�*�2�x��>�	?�	
������)�	
���)�)�"�-�������)��������H�R�L�)�
�
!�
!�	%��L�L�"�"�$�	%�	
������)�#	?�	?��	%�	%�s�%D�
D�D�D!c�t�tj�}|j5d|_|jj	d|d�ddd�|j|j�d|jd<d|_|jj�|jddd�|j�|jdtd��|j5|jj�ddd�|j|j�y#1swY��xYw#1swY�1xYw)NT�5i��i�F�e)rrBrIrSrBr�r�rTrgr�r�rcrrzr|s   r�test_sigchld_unknown_statusz2ChildWatcherTestsMixin.test_sigchld_unknown_status�s����9�9�;���\�\�	>��D�L��L�L�*�*�2�x��=�	>�	
������)� ����R���������� ��(�(��T�3�7�����	
����H�S�M�*�
�
!�
!�	%��L�L�"�"�$�	%�	
������)�)	>�	>��"	%�	%�s�%D"�#D.�"D+�.D7c��tj�}tj�}tj�}|j5d|_|jj	d|d�|jj	d|d�|jj	d|d�ddd�|j|jj
d��|j|jj
d��|j|jj
d��|j|jj
d��|jdtd��|jdtd��|jdtd��d	|_|j5|jj�ddd�|j|j�|j|j�|jddd�y#1swY���xYw#1swY�`xYw)
NT�6r�7r��8rrF)rrBrIrSrBr�rCr�rcrrzrgr�r�)r0rpr�r��	callback3s     r�test_remove_child_handlerz0ChildWatcherTestsMixin.test_remove_child_handler�s����I�I�K�	��I�I�K�	��I�I�K�	��\�\�	=��D�L��L�L�*�*�2�y�!�<��L�L�*�*�2�y�!�<��L�L�*�*�2�y�!�<�		=�	
������9�9�"�=�>�	
������9�9�"�=�>�������:�:�2�>�?�������:�:�2�>�?�	
����H�Q�K�(�����H�Q�K�(�����H�Q�K�(����
�
!�
!�	%��L�L�"�"�$�	%�	
����)�)�*�����)�)�*��)�)�"�a��3�1	=�	=��&	%�	%�s�	AH)�<H6�)H3�6H?c���tj�}|j5d|_|jj	d|�ddd�t
|_tjjtjd�5}|j|jj�d�|j|j�ddd�y#1swY��xYw#1swYyxYw)NT�9�error)rrBrIrSrBr8rPr�r�r�loggerrergr�r�)r0rpr}�m_errors    r� test_sigchld_unhandled_exceptionz7ChildWatcherTestsMixin.test_sigchld_unhandled_exception�s����9�9�;���\�\�	9��D�L��L�L�*�*�2�x�8�	9�
!+�	��
�Z�Z�
�
�s�z�z�&�(�	,�+2����T�\�\�3�3�5�t�<��O�O�G�N�N�+�		,�	,�	9�	9��	,�	,�s�$C�AC!�C�!C*c��tj�}|j5d|_|jj	d|�ddd�|j|j�d|_|jdtd��tjdtj�|j�|j5|jj�ddd�t|jt j"�r|j|j�y|j%dd�y#1swY��xYw#1swY�hxYw)NT�:Fr��)rrBrIrSrBr�r�rcrr
r`�WNOHANGr�rzrgrXr�FastChildWatcherr�r|s   r�#test_sigchld_child_reaped_elsewherez:ChildWatcherTestsMixin.test_sigchld_child_reaped_elsewhere�s����9�9�;��
�\�\�	9��D�L��L�L�*�*�2�x�8�	9�	
������)��������H�Q�K�(�	�
�
�2�r�z�z�"������
!�
!�	%��L�L�"�"�$�	%��d�l�l�G�$<�$<�=�
���X�_�_�-��,�,�R��5�1	9�	9�� 	%�	%�s�$E�
E�E	�Ec�P�tj�}tj�}|j5|j5d|_|jdt
d��|jdt
d��|jj�|jjd|�|jjd|�ddd�ddd�|jdd�|j|j�y#1swY�?xYw#1swY�CxYw)NTiOr�iQr�iP)rrBrzrIrSrcrrgrBr�r�r�r�s    r�,test_sigchld_unknown_pid_during_registrationzCChildWatcherTestsMixin.test_sigchld_unknown_pid_during_registrations����I�I�K�	��I�I�K�	�
�
!�
!�
	;�4�<�<�
	;��D�L��O�O�C��!��-��O�O�C��"��.��L�L�"�"�$��L�L�*�*�3�	�:��L�L�*�*�3�	�:�
	;�
	;�	�)�)�#�q�1�����)�)�*�
	;�
	;��
	;�
	;�s$�
D�BD�D�D	�D�D%c�D�tj�}|j5d|_|jj	d|�ddd�|j
}|j
�|_tjj}||d�5}||j
d�5}|jj|j
�|jtj�|jtj|jj�ddd�ddd�d|_|jdtd��|jj�|jdd�y#1swY��:xYw#1swY�mxYw#1swY�qxYw)NT�<rErRFru)rrBrIrSrBr-r�r�r�rDr�r9r�rgrcr)r0rpr}�old_loopr��m_old_remove�	m_new_adds       r�
test_set_loopz$ChildWatcherTestsMixin.test_set_loop&s@���9�9�;��
�\�\�	9��D�L��L�L�*�*�2�x�8�	9�
�9�9���&�&�(��	��
�
�!�!��
�8�4�
5�	8��
�4�9�9�2�
3�	8�7@��L�L�$�$�T�Y�Y�/��0�0����
 ��-�-������� 6� 6�
8�	8�	8��������H�Q�K�(������ ��(�(��Q�/�1	9�	9��	8�	8��	8�	8�s0�$E=�F�%A9F
�F�=F�
F	�F�Fc��tj�}tj�}tj�}|j5d|_|jj	d|�|jj	d|�|jj	d|�ddd�|j
}d|_tjj|d�5}|jtd�5|jjd�ddd�|jtj�ddd�|jdtd��|jdt!d��|j#|j$�|j#|j$�|j#|j$�|j'�|_tjj|j
d	�5}|jj|j
�|jtj|jj(�|jdd�|jdd
�|j#|j$�ddd�|j+�|j+�d|_|jdtd��|jj)�|j#|j$�|j#|j$�|jdd�y#1swY���xYw#1swY��JxYw#1swY��0xYw#1swY��xYw)
NT�=�>inrEzA loop is being detached�r�rRr�Fr�)rrBrIrSrBr-r�r�r��RuntimeWarningrDr�r9r�rcrr r�r�r�rgr�)r0rpr�r�r�r��m_remove_signal_handlerrUs        r�test_set_loop_race_conditionz3ChildWatcherTestsMixin.test_set_loop_race_conditionEs����I�I�K�	��I�I�K�	��I�I�K�	�
�\�\�	;��D�L��L�L�*�*�2�y�9��L�L�*�*�2�y�9��L�L�*�*�3�	�:�		;��9�9����	�
�Z�Z�
�
��1�3�	 �6M��&�&�"�$>�@�
/����(�(��.�
/�
$�;�;����
 �	 �	
����H�R�L�)�����F�1�I�&�	
����)�)�*�����)�)�*�����)�)�*��&�&�(��	�
�Z�Z�
�
��	�	�/�1�		/�4H��L�L�$�$�T�Y�Y�/� �8�8������� 6� 6�
8��-�-�b�"�5��-�-�b�"�5����Y�-�-�.�		/�	���������������X�b�\�*������ �����)�)�*�����)�)�*��)�)�#�r�2�k	;�	;��
/�
/��	 �	 ��,		/�		/�s>�	AM� M(�7M�'M(�BM5�M�M%	� M(�(M2�5M>c�\�tj�}|j5d|_|j	dtd��|j	dtd��|jj
�|jjd|�|jjd|�|jt|jj�d�t|jtj�r/|jt|jj�d�tjj!|j"d�5}|jj%�|j't(j*�|j-|jj�t|jtj�r%|j-|jj�ddd�ddd�y#1swY�xYw#1swYyxYw)	NT�?ru�Ar��@rrE)rrBrIrSrcrrgrBrer��
_callbacksrXrr��_zombiesr�r�r-r#r�r9r�r�)r0rpr�r�s    rr�z!ChildWatcherTestsMixin.test_close�s����I�I�K�	�
�\�\�	<��D�L��O�O�B����,��O�O�B����-��L�L�"�"�$��L�L�*�*�2�y�9��L�L�*�*�2�y�9����S����!8�!8�9�1�=��$�,�,��(@�(@�A�� � ��T�\�\�%:�%:�!;�Q�?����"�"��I�I�+�-�

<�0G����"�"�$�'�?�?��N�N�$�� � ����!8�!8�9��d�l�l�G�,D�,D�E��$�$�T�\�\�%:�%:�;�

<�	<�	<�

<�

<��	<�	<�s%�D<H"�B(H�H"�H	�H"�"H+)rorprqrr�r�rr�rzr+r`rcrerhrrr~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�s@rrQrQs[����j�j�'�'��
�
�I�>�O�	0�
&�#��4�	��#*��#*�J�@+��@+�D�-+��-+�^�*��*�*�#+��#+�J�*��*�.�*��*�4�4��4�@�,��,�"�6��6�<�+��+�(�0��0�<�;3��;3�z�<��<rrQc��eZdZd�Zy)�SafeChildWatcherTestsc��tj�5tjdt�t	j
�cddd�S#1swYyxYw�N�ignore)�warnings�catch_warnings�simplefilterr=rrYr;s rrVz$SafeChildWatcherTests.create_watcher��@��
�
$�
$�
&�	.��!�!�(�,>�?��+�+�-�	.�	.�	.���.A
�
AN�rorprqrVrrrr�r�����.rr�c��eZdZd�Zy)�FastChildWatcherTestsc��tj�5tjdt�t	j
�cddd�S#1swYyxYwr�)r�r�r�r=rr�r;s rrVz$FastChildWatcherTests.create_watcher�r�r�Nr�rrrr�r��r�rr�c�T�eZdZd�Zej
d�d��Zd�Zd�Zd�Z	y)�PolicyTestsc�*�tj�Sr)r�DefaultEventLoopPolicyr;s r�
create_policyzPolicyTests.create_policy�s���-�-�/�/rz!asyncio.unix_events.can_use_pidfdc���d|_|j�}|j|j�|j	t
�5|j
�}ddd�|jtj�|j|j|�|j	t
�5|j||j
��ddd�d|_|j�}|j|j�|j	t
�5|j
�}ddd�|j|tj�|j|j|�|j	t
�5|j||j
��ddd�y#1swY��_xYw#1swY��xYw#1swY��xYw#1swYyxYw)NFT)r�r�r��_watcherr<r=�get_child_watcherrdr�ThreadedChildWatcherr��PidfdChildWatcher)r0�m_can_use_pidfd�policyrIs    r�test_get_default_child_watcherz*PolicyTests.test_get_default_child_watcher�s���',��$��#�#�%�����&�/�/�*�
�
�
�0�
1�	1��.�.�0�G�	1����g�w�'C�'C�D��
�
�f�o�o�w�/�
�
�
�0�
1�	?��M�M�'�6�#;�#;�#=�>�	?�(,��$��#�#�%�����&�/�/�*�
�
�
�0�
1�	1��.�.�0�G�	1����g�w�'@�'@�A��
�
�f�o�o�w�/�
�
�
�0�
1�	?��M�M�'�6�#;�#;�#=�>�	?�	?�!	1�	1��
	?�	?��	1�	1��
	?�	?�s0�F6�2!G�"G�!G�6G�G�G�G$c��|j�}tj�5tjdt�tj�}|j|�ddd�|j|j�|jt�5|j||j��ddd�y#1swY�dxYw#1swYyxYwr�)r�r�r�r�r=rr��set_child_watcherr�r�r<r�)r0r�rIs   r� test_get_child_watcher_after_setz,PolicyTests.test_get_child_watcher_after_set�s����#�#�%��
�
$�
$�
&�	.��!�!�(�,>�?��.�.�0�G��$�$�W�-�	.�
	
�
�
�f�o�o�w�/�
�
�
�0�
1�	?��M�M�'�6�#;�#;�#=�>�	?�	?�
	.�	.��	?�	?�s�AC�!C�C�Cc�l�����fd�}�j��tj�5tjdt��jt
j��ddd�tj|��}|j�|j�y#1swY�@xYw)Nc����j�j���j�j�tj
�t
j�5t
jdt��j�}ddd��jtj��j|j��j�j�y#1swY�cxYwr�)r.rFrd�get_event_loopr�AbstractEventLoopr�r�r�r=r�rYr�r�r#)rIr�r0s ��rriz4PolicyTests.test_get_child_watcher_thread.<locals>.f�s�����!�!�&�"7�"7�"9�:��!�!�&�"7�"7�"9�")�";�";�
=��(�(�*�
5��%�%�h�0B�C� �2�2�4��
5�
�!�!�'�7�+C�+C�D����g�m�m�,��!�!�#�)�)�+�
5�
5�s�#+C0�0C9r��rn)r�r�r�r�r=r�rrY�	threading�Threadr��join)r0ri�thr�s`  @r�test_get_child_watcher_threadz)PolicyTests.test_get_child_watcher_thread�s����	,��#�#�%��
�
$�
$�
&�	A��!�!�(�,>�?��$�$�W�%=�%=�%?�@�	A��
�
�Q�
'��
���
�
���	�
	A�	A�s�>B*�*B3c��|j�}|j�}|j|�tj�5tj
dt�tj�}|j|�ddd�j|�|j|j|�|j�}|j|�|j|j|�|jd�|j|jd�|j�|j�y#1swY��xYwr�)r�rFr.r�r�r�r=rrYr�rDr�r�r#)r0r�r-rI�new_loops     r�,test_child_watcher_replace_mainloop_existingz8PolicyTests.test_child_watcher_replace_mainloop_existing�s����#�#�%���$�$�&�����d�#��
$�
$�
&�	.��!�!�(�,>�?��.�.�0�G��$�$�W�-�	.�	���D�!��
�
�g�m�m�T�*��(�(�*�����h�'��
�
�g�m�m�X�.����d�#��
�
�g�m�m�T�*��
�
������%	.�	.�s
�AE�EN)
rorprqr�rr�r�r�r�r�rrrr�r��s6��0��T�Z�Z�3�4�?�5�?�.	?��2rr�c�$�eZdZd�Zd�Zd�Zd�Zy)�TestFunctionalc�t�tj�|_tj|j�yr)rrFr-r.r;s rr+zTestFunctional.setUps$���*�*�,��	����t�y�y�)rc�b�|jj�tjd�yr)r-r#rr.r;s r�tearDownzTestFunctional.tearDowns���	�	�������t�$rc����fd�}d�}|�5�jjt�|�ddd�|�5�jjt�|�ddd�|�5�jj	t��ddd�|�5�jjt��ddd�y#1swY��xYw#1swY�|xYw#1swY�UxYw#1swYyxYw)Nc�0���jtd�S)NzInvalid file object)r[r8r;s�r�
assert_raiseszFTestFunctional.test_add_reader_invalid_argument.<locals>.assert_raisess����)�)�*�6L�M�Mrc��yrrrrrrLzATestFunctional.test_add_reader_invalid_argument.<locals>.<lambda>rMr)r-r�r�r
�
remove_reader�
remove_writer)r0r�rgs`  r� test_add_reader_invalid_argumentz/TestFunctional.test_add_reader_invalid_arguments����	N���
�_�	/��I�I� � ���2�.�	/�
�_�	/��I�I� � ���2�.�	/��_�	.��I�I�#�#�F�H�-�	.�
�_�	.��I�I�#�#�F�H�-�	.�	.�	/�	/��	/�	/��	.�	.��	.�	.�s/�%C�%C%�9$C1�,$C=�C"�%C.�1C:�=Dc������fd�����fd�}tj�\�}	�jj|���j	�|j	�y#�j	�|j	�wxYw)Nc�0���jtd�S)Nz'File descriptor .* is used by transport)r[rQr;s�rr�zLTestFunctional.test_add_reader_or_writer_transport_fd.<locals>.assert_raises*s����)�)��:�<�
<rc���K��jjd�����d{���\}}	d�}��5�jj�|�ddd���5�jj�j�|�ddd���5�jj	��ddd���5�jj	�j��ddd���5�jj�|�ddd���5�jj�j�|�ddd���5�jj
��ddd���5�jj
�j��ddd�|j�y7���#1swY���xYw#1swY��YxYw#1swY��;xYw#1swY��xYw#1swY��xYw#1swY��xYw#1swY��xYw#1swY�uxYw#|j�wxYw�w)Nc�*�tj�Sr)rr�rrrrLzWTestFunctional.test_add_reader_or_writer_transport_fd.<locals>.runner.<locals>.<lambda>1s���(�(�*�rrc��yrrrrrrLzWTestFunctional.test_add_reader_or_writer_transport_fd.<locals>.runner.<locals>.<lambda>4rMr)r-�create_connectionr�rprr
rr#)r��prrgr��rsockr0s   ���r�runnerzETestFunctional.test_add_reader_or_writer_transport_fd.<locals>.runner/s�������9�9�6�6�*��7�8�8�F�B��
�!��"�_�4��I�I�(�(���3�4�"�_�=��I�I�(�(������<�=�#�_�3��I�I�+�+�E�2�3�"�_�<��I�I�+�+�E�L�L�N�;�<�#�_�4��I�I�(�(���3�4�"�_�=��I�I�(�(������<�=�#�_�3��I�I�+�+�E�2�3�"�_�<��I�I�+�+�E�L�L�N�;�<����
�78��4�4��=�=��3�3��<�<��4�4��=�=��3�3��<�<�����
�s��"I�G�I�
H=�G�H=�$+G&�H=�G3�:H=�	*H�3H=�H
�H=�.+H�H=�(H%�H=�*H1�=H=�I�G#�H=�&G0�+H=�3G=�8H=�H
�H=�
H�H=�H"�H=�%H.�*H=�1H:�6H=�=I�I)r��
socketpairr-r�r#)r0r�wsockr�r
s`  @@r�&test_add_reader_or_writer_transport_fdz5TestFunctional.test_add_reader_or_writer_transport_fd)sb���	<�
	�<�(�(�*���u�	��I�I�(�(���2��K�K�M��K�K�M��
�K�K�M��K�K�M�s� A)�)"BN)rorprqr+r�rrrrrr�r�s��*�%�.� )rr��forkzrequires os.fork()c��eZdZd�Zej
d�d��Zej
d�d��Zej
d�d��Zy)�TestForkc	��K�tj�}tj�\}}|j	tj
|�|j	tj
|�tj�}|dk(r�	|jt�5tj�j�}ddd�tj|dtt|��j�z�tj$d�ytj&|d�}|j)|ddd|�|j+t-|dd�t|��t/|d��y#1swY��xYw#t$rtj|d�Y��t $r:}tj|dt#|�j�z�Yd}~��d}~wwxYw#tj$d�wxYw�w)NrsLOOP:sNO LOOPsERROR:�dr�r)r�get_running_loopr
r�rZr#rr<r=�get_event_loop_policyr�r=�str�id�encoderQ�
BaseException�ascii�_exit�readre�assertNotEqual�intr)r0r-�r�wr^�er�s       r�test_fork_not_share_event_loopz'TestFork.test_fork_not_share_event_loopXst�����'�'�)���w�w�y���1�������!�$�������!�$��g�g�i���!�8�	
��%�%�&8�9�L�"�8�8�:�I�I�K�D�L�����H�s�2�d�8�}�';�';�'=�=�>�������W�W�Q��_�F����V�B�Q�Z��6�:�����F�1�2�J���D��:���q�)�L�L�� �
(�����J�'� �
;�����I��a����(9�9�:�:��
;�������sb�BH�F�#E8�AF�A7H�8F�=F�G'�#G*�%G'�-0G"�G*�"G'�'G*�*H�H�md5c�(��������jt�tjd���j	�}�j|j
�|j
��|j
��|j
����fd�������fd�}tj|���jtj���j�j���j�j��y)Nrc����fd�}tjtj|��j�	tjd��)Nc�N���j�tj�yr)�set�sys�exit)�args�
child_handleds �r�
on_sigtermzJTestFork.test_fork_signal_handling.<locals>.child_main.<locals>.on_sigterm�s����!�!�#����
rr)r9�SIGTERMr'�time�sleep)r,r+�
child_starteds ��r�
child_mainz6TestFork.test_fork_signal_handling.<locals>.child_mains;���
�
�M�M�&�.�.�*�5�������
�
�1�
�rc����K�tj�}|jtj�fd���j���}|j
��j�tj|jtj�|jtj��d�}�jtj|���d{���d�y7�
�w)Nc�$���j�Sr)r')r*�parent_handleds �rrLzBTestFork.test_fork_signal_handling.<locals>.main.<locals>.<lambda>�s���.�BT�BT�BV�rr���timeoutc��JK�tjd��d{���y7��w�Ng�������?rt)rr/rrrr^z>TestFork.test_fork_signal_handling.<locals>.main.<locals>.func�s �����m�m�C�(�(�(��)�s�#�!�#rt)rrrRr9r-�Processr��waitr
�killr^r�r�
SHORT_TIMEOUTre�create_task)r-�processr^r1r0�ctxr4r0s   �����r�mainz0TestFork.test_fork_signal_handling.<locals>.main�s�������+�+�-�D��#�#�F�N�N�4V�W��k�k��k�4�G��M�M�O���� ��G�G�G�K�K����0��L�L��!6�!6�L�7�
�

���7�#6�#6�t�v�#>�>��C�>�s�C#C3�&C1�'C3r5)rZ�multiprocessing_cleanup_tests�multiprocessing�get_context�Manager�shutdown�Eventr�runr:rr<r��is_setr�)r0�managerr@r+r1r0r?r4s`  @@@@@r�test_fork_signal_handlingz"TestFork.test_fork_signal_handlingrs�������5�6��)�)�&�1���+�+�-������(�(�)��
�
��
��
�
��
� �����	�	D�	D�"	���D�F�����7�#8�#8��9�����.�.�0�1����
�,�,�.�/rc����|jt�tjd�}|j	�}|j|j
�|j
dd���fd��|j�fd���}|j�|j�|j�jd�y)Nr�irc��Z�K�tjd��d{���d�_y7��wr8)rr/�value)r�s�rr1z2TestFork.test_fork_asyncio_run.<locals>.child_main�s%������-�-��$�$�$��F�L�
%�s�+�)�
+c�8��tj���Sr�rrG�r1s�rrLz0TestFork.test_fork_asyncio_run.<locals>.<lambda>�����W�[�[���-F�rr�rt�rZrArBrCrDrE�Valuer9r�r�rerN�r0r?rIr>r1r�s    @@r�test_fork_asyncio_runzTestFork.test_fork_asyncio_run�s�������5�6��)�)�&�1���+�+�-������(�(�)����s�A�&��	��+�+�%F�+�G���
�
������������r�*rc����|jt�tjd�}|j	�}|j|j
�|j
dd���fd��|j�fd���}|j�|j�|j�jd�y)NrrLrc���K�tjtjdd��d{���}|j	��d{����_y7�"7��w)Nz-c�pass)r�create_subprocess_execr(�
executabler:rN)�procr�s �rr1z9TestFork.test_fork_asyncio_subprocess.<locals>.child_main�s<����� �7�7�����f�U�U�D�!%����,�F�L�V��,�s!�)A�A�A�A�A�Ac�8��tj���SrrPrQs�rrLz7TestFork.test_fork_asyncio_subprocess.<locals>.<lambda>�rRrr�rrSrUs    @@r�test_fork_asyncio_subprocessz%TestFork.test_fork_asyncio_subprocess�s�������5�6��)�)�&�1���+�+�-������(�(�)����s�A�&��	-��+�+�%F�+�G���
�
������������q�)rN)	rorprqr"r	�requires_hashdigestrJrVr^rrrrrUsk��*�4(�^�'�'��.�+0�/�+0�Z(�^�'�'��.�+�/�+�$(�^�'�'��.�*�/�*rr�__main__);�__doc__rurrrlrB�multiprocessing.utilrrAr
r�r9r�r�r(r�r.rrr��testr�test.supportrrrr	�platform�SkipTestrrr�test.test_asyncior
r�rr�r�rr r%r�TestCaser'r r�r#r�r�r7rLrQr�r�r�r��IsolatedAsyncioTestCaserror@rrr�<module>rjsJ�����	��P�	��
�
��
�������"�&�%�'��<�<�7��
�(�
�
�K�
(�(����1�(��8�8���������V�8�9�Z1�:�#6�#6�Z1�:�Z1�z����W�V�Y�/�5�7�g/�z�':�':�g/�7�g/�T����W�R��,�0�2�J1�Z�-@�-@�J1�2�J1�Zn��!4�!4�n�bQ?�*�"5�"5�Q?�h<�� 1� 1�<�49�H�-�-�9�b<�b<�J.�3�Z�5H�5H�.�.�3�Z�5H�5H�.�Z�(�#�#�Z�zC�X�&�&�C�L����W�R��(�*>�?�n*�x�/�/�n*�@�n*�`�z���H�M�M�O�r