Your IP : 216.73.216.213


Current Path : /opt/alt/python311/lib64/python3.11/test/test_asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python311/lib64/python3.11/test/test_asyncio/__pycache__/test_events.cpython-311.pyc

�

�0�i������dZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZ	ddlZn
#e
$rdZYnwxYwddlZddlZddlZddlZddlZddlZddlZddlmZddlZejdvrddlZddlZddlmZddlmZddlmZddlmZdd	lmZdd
l m!Z"ddl#m$Z$ddl%m&Z&dd
l%m'Z'ddl%m(Z(m)Z)m*Z*d�Z+d�Z,d�Z-Gd�d��Z.Gd�dej/��Z0Gd�de0��Z1Gd�dej2��Z3Gd�dej/��Z4Gd�dej5��Z6Gd�dej7��Z8Gd �d!��Z9Gd"�d#��Z:ejd$kr*Gd%�d&e9e"j;��Z<Gd'�d(e9e:e"j;��Z=n�ddl>Z>Gd)�d*e9��Z?e@e>d+��rGd,�d-e?e:e"j;��ZAe@e>d.��rGd/�d0e?e:e"j;��ZBe@e>d1��rGd2�d3e?e:e"j;��ZCGd4�d&e?e:e"j;��Z<d5�ZDGd6�d7e"j;��ZEGd8�d9ej;��ZFGd:�d;ej;��ZGGd<�d=ej;��ZHGd>�d?��ZIGd@�dAeIej;��ZJ	ddlKZKGdB�dCeIej;��ZLn#e
$rYnwxYwGdD�dEej;��ZMGdF�dGej;��ZNeOdHkrejP��dSdS)IzTests for events.py.�N)�mock)�win32�vxworks)�
coroutines)�events)�proactor_events)�selector_events)�_cleanup_tests)�utils)�support)�
socket_helper)�threading_helper)�	ALWAYS_EQ�LARGEST�SMALLESTc�.�tjd��dS�N)�asyncio�set_event_loop_policy���D/opt/alt/python311/lib64/python3.11/test/test_asyncio/test_events.py�tearDownModuler*s���!�$�'�'�'�'�'rc��tj�d��rdStjdkrdStj��d}t	tt|�d������}|dkS)z4Return True if the platform is Mac OS 10.4 or older.�aixT�darwinFr�.)�
�)�sys�platform�
startswith�mac_ver�tuple�map�int�split)�versions r�broken_unix_getsocknamer).sr��
�|���u�%�%���t�	���	!�	!��u��� � ��#�G��C��W�]�]�3�/�/�0�0�1�1�G��W��rc��d�}tj��}tj|��|�|����S)Nc��
K�dS�N�hellorrrr�doitz8_test_get_event_loop_new_process__sub_proc.<locals>.doit:s�����wr)r�new_event_loop�set_event_loop�run_until_complete)r.�loops  r�*_test_get_event_loop_new_process__sub_procr39sL������!�#�#�D���4� � � ��"�"�4�4�6�6�*�*�*rc�&�eZdZd�Zd�Zd�Zd�ZdS)�CoroLikec��dSrr)�self�vs  r�sendz
CoroLike.sendC����rc��dSrr�r7�excs  r�throwzCoroLike.throwFr:rc��dSrr�r7s r�closezCoroLike.closeIr:rc��dSrrr@s r�	__await__zCoroLike.__await__Lr:rN)�__name__�
__module__�__qualname__r9r>rArCrrrr5r5BsP������
�
�
�
�
�
�
�
�
�
�
�
�
�
rr5c�<�eZdZdZdZdd�Zd�Zd�Zd�Zd�Z	d�Z
dS)	�MyBaseProtoNc��d|_d|_d|_|�4|���|_|���|_dSdS�N�INITIALr)�	transport�state�nbytes�
create_future�	connected�done�r7r2s  r�__init__zMyBaseProto.__init__TsO�������
������!�/�/�1�1�D�N��*�*�,�,�D�I�I�I��rc�L�|j|vrtd|j�d|�����dS�Nzstate: z, expected: �rM�AssertionError�r7�expecteds  r�
_assert_statezMyBaseProto._assert_state\s8���:�X�%�%� �!Q�4�:�!Q�!Q�X�!Q�!Q�R�R�R�&�%rc��||_|�d��d|_|jr|j�d��dSdS�NrK�	CONNECTED�rLrZrMrP�
set_result�r7rLs  r�connection_madezMyBaseProto.connection_made`sT��"������9�%�%�%� ��
��>�	,��N�%�%�d�+�+�+�+�+�	,�	,rc�j�|�d��|xjt|��z
c_dS�Nr]�rZrN�len�r7�datas  r�
data_receivedzMyBaseProto.data_receivedgs0�����;�'�'�'����s�4�y�y� ����rc�>�|�d��d|_dS)Nr]�EOF)rZrMr@s r�eof_receivedzMyBaseProto.eof_receivedks!�����;�'�'�'���
�
�
rc��|�dd��d|_|jr|j�d��dSdS)Nr]rj�CLOSED�rZrMrQr_r<s  r�connection_lostzMyBaseProto.connection_lostosO�����;��.�.�.���
��9�	'��I� � ��&�&�&�&�&�	'�	'rr)rDrErFrPrQrSrZrarhrkrorrrrHrHPs��������I��D�-�-�-�-�S�S�S�,�,�,�!�!�!����'�'�'�'�'rrHc���eZdZ�fd�Z�xZS)�MyProtoc�t��t���|��|�d��dS)Ns%GET / HTTP/1.0
Host: example.com

)�superra�write)r7rL�	__class__s  �rrazMyProto.connection_madews4���
�����	�*�*�*����F�G�G�G�G�Gr�rDrErFra�
__classcell__�rus@rrqrqvsA�������H�H�H�H�H�H�H�H�Hrrqc�8�eZdZdZdd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�MyDatagramProtoNc�\�d|_d|_|�|���|_dSdSrJ)rMrNrOrQrRs  rrSzMyDatagramProto.__init__s5����
�������*�*�,�,�D�I�I�I��rc�P�|j|krtd|j�d|�����dSrUrVrXs  rrZzMyDatagramProto._assert_state��8���:��!�!� �!Q�4�:�!Q�!Q�X�!Q�!Q�R�R�R�"�!rc�L�||_|�d��d|_dS)NrK�INITIALIZED�rLrZrMr`s  rrazMyDatagramProto.connection_made�s(��"������9�%�%�%�"��
�
�
rc�j�|�d��|xjt|��z
c_dS�Nrrd�r7rg�addrs   r�datagram_receivedz!MyDatagramProto.datagram_received�s0�����=�)�)�)����s�4�y�y� ����rc�0�|�d��dSr�)rZr<s  r�error_receivedzMyDatagramProto.error_received�s�����=�)�)�)�)�)rc��|�d��d|_|jr|j�d��dSdS)Nrrmrnr<s  rrozMyDatagramProto.connection_lost�sM�����=�)�)�)���
��9�	'��I� � ��&�&�&�&�&�	'�	'rr)
rDrErFrQrSrZrar�r�rorrrrzrz|s{�������D�-�-�-�-�S�S�S�#�#�#�
!�!�!�*�*�*�'�'�'�'�'rrzc�8�eZdZdZdd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�MyReadPipeProtoNc�l�dg|_d|_d|_|�|���|_dSdSrJ)rMrNrLrOrQrRs  rrSzMyReadPipeProto.__init__�s>���[��
����������*�*�,�,�D�I�I�I��rc�P�|j|krtd|j�d|�����dSrUrVrXs  rrZzMyReadPipeProto._assert_state�r}rc�t�||_|�dg��|j�d��dSr\)rLrZrM�appendr`s  rrazMyReadPipeProto.connection_made�s;��"������I�;�'�'�'��
���+�&�&�&�&�&rc�n�|�ddg��|xjt|��z
c_dSr\rdrfs  rrhzMyReadPipeProto.data_received�s5�����I�{�3�4�4�4����s�4�y�y� ����rc�h�|�ddg��|j�d��dS)NrKr]rj)rZrMr�r@s rrkzMyReadPipeProto.eof_received�s7�����I�{�3�4�4�4��
���%� � � � � rc���d|jvr|j�d��|�gd���|j�d��|jr|j�d��dSdS)Nrj)rKr]rjrm)rMr�rZrQr_r<s  rrozMyReadPipeProto.connection_lost�s�����
�"�"��J���e�$�$�$����:�:�:�;�;�;��
���(�#�#�#��9�	'��I� � ��&�&�&�&�&�	'�	'rr)
rDrErFrQrSrZrarhrkrorrrr�r��s{�������D�-�-�-�-�S�S�S�'�'�'�
!�!�!�!�!�!�'�'�'�'�'rr�c�,�eZdZdZdd�Zd�Zd�Zd�ZdS)�MyWritePipeProtoNc�\�d|_d|_|�|���|_dSdS)NrK)rMrLrOrQrRs  rrSzMyWritePipeProto.__init__�s5����
�������*�*�,�,�D�I�I�I��rc�P�|j|krtd|j�d|�����dSrUrVrXs  rrZzMyWritePipeProto._assert_state�r}rc�L�||_|�d��d|_dSr\r�r`s  rraz MyWritePipeProto.connection_made�s(��"������9�%�%�%� ��
�
�
rc��|�d��d|_|jr|j�d��dSdS�Nr]rmrnr<s  rroz MyWritePipeProto.connection_lost�sM�����;�'�'�'���
��9�	'��I� � ��&�&�&�&�&�	'�	'rr)rDrErFrQrSrZrarorrrr�r��s]�������D�-�-�-�-�S�S�S�!�!�!�
'�'�'�'�'rr�c�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�MySubprocessProtocolc�B��d|_d|_����|_����|_�fd�td��D��|_ddd�|_d|_tj
��tj
��d�|_dS)NrKc�:��i|]}|������Sr)rO)�.0�fdr2s  �r�
<dictcomp>z1MySubprocessProtocol.__init__.<locals>.<dictcomp>�s'���H�H�H��B�� 2� 2� 4� 4�H�H�Hr�r���)rMrLrOrP�	completed�range�disconnectsrg�
returncoder�Event�got_datarRs `rrSzMySubprocessProtocol.__init__�s������
�����+�+�-�-����+�+�-�-���H�H�H�H�u�Q�x�x�H�H�H�����$�$��	����#�M�O�O�#�M�O�O�-�-��
�
�
rc�P�|j|krtd|j�d|�����dSrUrVrXs  rrZz"MySubprocessProtocol._assert_state�r}rc��||_|�d��d|_|j�d��dSr\r^r`s  rraz$MySubprocessProtocol.connection_made�s@��"������9�%�%�%� ��
���!�!�$�'�'�'�'�'rc�r�|�d��d|_|j�d��dSr�)rZrMr�r_r<s  rroz$MySubprocessProtocol.connection_lost�s9�����;�'�'�'���
���!�!�$�'�'�'�'�'rc��|�d��|j|xx|z
cc<|j|���dSrc)rZrgr��set)r7r�rgs   r�pipe_data_receivedz'MySubprocessProtocol.pipe_data_received�sM�����;�'�'�'��	�"�
�
�
���
�
�
��
�b��������rc��|�d��|r"|j|�|��dS|j|�|��dSrc)rZr��
set_exceptionr_)r7r�r=s   r�pipe_connection_lostz)MySubprocessProtocol.pipe_connection_lost�sb�����;�'�'�'��	1���R� �.�.�s�3�3�3�3�3���R� �+�+�C�0�0�0�0�0rc�l�|�d��|j���|_dSrc)rZrL�get_returncoder�r@s r�process_exitedz#MySubprocessProtocol.process_exiteds/�����;�'�'�'��.�7�7�9�9����rN)
rDrErFrSrZraror�r�r�rrrr�r��s�������	-�	-�	-�S�S�S�(�(�(�(�(�(�
 � � �
1�1�1�:�:�:�:�:rr�c�
��eZdZ�fd�Z�fd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zejeed��d��d���Zejeed��d��ejeed��d��d�����Zejeed��d��ejeed��d��d�����Zd^d�Zd�Zejd���Zddifd�Z		d_d�Z	d_d�Zeje dud��d ���Z!ejeje dud��d!�����Z"d"�Z#ej$d#���Z%ej$d$���Z&d%�Z'd`d&�Z(eje dud��d'���Z)d(�Z*e+j,d)��d*���Z-d+�Z.d,�Z/d-�Z0ejee1d.��d/��d0���Z2d1�Z3ejd2���Z4ejee1d3��d4��d5���Z5dad6�Z6dad7�Z7dad8�Z8eje dud��d9���Z9ejeje dud��d:�����Z:eje dud��d;���Z;ejeje dud��d<�����Z<eje dud��d=���Z=ejeje dud��d>�����Z>eje dud��d?���Z?d@�Z@dA�ZAejejBdB��dC���ZCej$dD���ZDdE�ZEdF�ZFejejBdB��dG���ZGdH�ZHdI�ZIdJ�ZJejeKjLdKkdL��dM���ZMejeKjLdKkdL��dN���ZNejeKjLdKkdL��ejeeOdO��dP��dQ�����ZPejeKjLdKkdL��dR���ZQejeKjLdKkdL��dS���ZRejeKjLdKkdL��ejeeOdO��dP��eSjTdTdU��dV�������ZUejeKjLdKkdL��ejeeOdO��dP��eSjTdTdU��dW�������ZVdX�ZWdY�ZXdZ�ZYd[�ZZd\�Z[d]�Z\�xZ]S)b�EventLoopTestsMixinc���t�����|���|_|�|j��dSr)rs�setUp�create_event_loopr2r0�r7rus �rr�zEventLoopTestsMixin.setUpsC���
���
�
�����*�*�,�,��	����D�I�&�&�&�&�&rc���|j���stj|j��|���tj��t�����dSr)	r2�	is_closed�
test_utils�run_briefly�
doCleanupsr�
gc_collectrs�tearDownr�s �rr�zEventLoopTestsMixin.tearDown
sg����y�"�"�$�$�	.��"�4�9�-�-�-������������
���������rc�����d����fd�}��td��5��t�jj|����ddd��dS#1swxYwYdS)Nc��>K�tjd���d{V��dS�Nr�r�sleeprrr�coro1zBEventLoopTestsMixin.test_run_until_complete_nesting.<locals>.coro1s.�����-��"�"�"�"�"�"�"�"�"�"�"rc���K����j������j������dSr)�
assertTruer2�
is_runningr1)r�r7s��r�coro2zBEventLoopTestsMixin.test_run_until_complete_nesting.<locals>.coro2sI������O�O�D�I�0�0�2�2�3�3�3��I�(�(�����1�1�1�1�1rzcoroutine \S+ was never awaited)�assertWarnsRegex�RuntimeWarning�assertRaises�RuntimeErrorr2r1)r7r�r�s` @r�test_run_until_complete_nestingz3EventLoopTestsMixin.test_run_until_complete_nestings�����	#�	#�	#�	2�	2�	2�	2�	2�	2��
"�
"��.�
�
�	E�	E�
����d�i�:�E�E�G�G�
E�
E�
E�		E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E�	E�	Es�/A#�#A'�*A'c��d}|j���}|j�tj|����|j���|z
}|�||tjz
��dS�N皙�����?)r2�timer1rr��assertGreaterEqualr��	CLOCK_RES)r7�delay�t0�dts    r�test_run_until_completez+EventLoopTestsMixin.test_run_until_complete(sr����
�Y�^�^�
�
���	�$�$�W�]�5�%9�%9�:�:�:�
�Y�^�^�
�
��
"������E�J�,@�$@�A�A�A�A�Arc�r���fd�}|��}��t�jj|��dS)Nc��r�K��j���tjd���d{V��dSr�)r2�stoprr�r@s�r�cbz?EventLoopTestsMixin.test_run_until_complete_stopped.<locals>.cb1sA������I�N�N�����-��$�$�$�$�$�$�$�$�$�$�$r)r�r�r2r1)r7r��tasks`  r�test_run_until_complete_stoppedz3EventLoopTestsMixin.test_run_until_complete_stopped/sW���	%�	%�	%�	%�	%��r�t�t�����,��)�6��	>�	>�	>�	>�	>rc����g���fd�}�j�d|d���j������dg��dS)Nc�d����|���j���dSr�r�r2r���arg�resultsr7s ��r�callbackz5EventLoopTestsMixin.test_call_later.<locals>.callback;s-����N�N�3�����I�N�N�����rr�zhello world)r2�
call_later�run_forever�assertEqual�r7r�r�s` @r�test_call_laterz#EventLoopTestsMixin.test_call_later8su������	�	�	�	�	�	�	
�	���S�(�M�:�:�:��	����������=�/�2�2�2�2�2rc����g���fd�}�j�|dd���j������dg��dS)Nc�h����||f���j���dSrr�)�arg1�arg2r�r7s  ��rr�z4EventLoopTestsMixin.test_call_soon.<locals>.callbackFs1����N�N�D�$�<�(�(�(��I�N�N�����rr-�world)r-r�)r2�	call_soonr�r�r�s` @r�test_call_soonz"EventLoopTestsMixin.test_call_soonCsw������	�	�	�	�	�	�	
�	���H�g�w�7�7�7��	����������#5�"6�7�7�7�7�7rc������g�tj�����fd�����fd�}����tj|���}|����5�j��d���j���ddd��n#1swxYwY|�����	�ddg��dS)Nc�����|��t���dkr�j���dSdS�Nr��r�rer2r�r�s ��rr�z?EventLoopTestsMixin.test_call_soon_threadsafe.<locals>.callbackR�F����N�N�3�����7�|�|�q� � ��	��� � � � � �!� rc�f���j��d������dSr,)r2�call_soon_threadsafe�release)r��lockr7s���r�
run_in_threadzDEventLoopTestsMixin.test_call_soon_threadsafe.<locals>.run_in_threadWs,����I�*�*�8�W�=�=�=��L�L�N�N�N�N�Nr��targetr�r-)
�	threading�Lock�acquire�Thread�startr2r�r��joinr�)r7r��tr�r�r�s`  @@@r�test_call_soon_threadsafez-EventLoopTestsMixin.test_call_soon_threadsafeNs?���������~����	!�	!�	!�	!�	!�	!�
	�	�	�	�	�	�	�	
��������M�2�2�2��	���	�	�	�
�	$�	$��I����'�2�2�2��I�!�!�#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�	
����������7�G�"4�5�5�5�5�5s�&5B'�'B+�.B+c�����g���fd�}�j�|d���j�|d���j������ddg��dS)Nc�����|��t���dkr�j���dSdSr�r�r�s ��rr�zKEventLoopTestsMixin.test_call_soon_threadsafe_same_thread.<locals>.callbackhr�rr-r�)r2r�r�r�r�r�s` @r�%test_call_soon_threadsafe_same_threadz9EventLoopTestsMixin.test_call_soon_threadsafe_same_threades�������	!�	!�	!�	!�	!�	!�
	
�	�&�&�x��9�9�9��	���H�g�.�.�.��	����������7�G�"4�5�5�5�5�5rc��d�}|j�d|d��}|j�|��\}}|�|d��|�|tj����dS)Nc�,�|tj��fSr)r�	get_ident)r�s r�runz5EventLoopTestsMixin.test_run_in_executor.<locals>.runss����,�.�.�/�/r�yo)r2�run_in_executorr1r��assertNotEqualrr)r7r�f2�res�	thread_ids     r�test_run_in_executorz(EventLoopTestsMixin.test_run_in_executorrs~��	0�	0�	0�
�Y�
&�
&�t�S�$�
7�
7����5�5�b�9�9���Y�����d�#�#�#����I�y�':�'<�'<�=�=�=�=�=rc���d��fd�}d�}|j�d|��}|���|j�|j�����|j���||j_||j_tj	d��|�
���dS)NFc���d�dS�NTr)�args�calleds �r�patched_call_soonzJEventLoopTestsMixin.test_run_in_executor_cancel.<locals>.patched_call_soon}s����F�F�Frc�.�tjd��dS)Ng�������?)r�r�rrrrz<EventLoopTestsMixin.test_run_in_executor_cancel.<locals>.run�s���J�t�����rg�������?)r2r�cancelr1�shutdown_default_executorrAr�r�r�r��assertFalse)r7rrrrs    @r�test_run_in_executor_cancelz/EventLoopTestsMixin.test_run_in_executor_cancelzs������	�	�	�	�	�	�	�	��Y�
&�
&�t�S�
1�
1��
�	�	�����	�$�$��	�3�3�5�5�	7�	7�	7��	������/��	��):��	�&��
�3�������� � � � � rc�����tj��\�}��d��t������fd�}�j�����|���j�|jd��tj
�j�fd����j�|jd��tj
�j�fd����j�|j���j��jj���j�
�����d��dS)NFc�0��	��d��}n#t$rYdSwxYw|r��|��dS���j�������������dS�N�)�recv�BlockingIOError�extendr�r2�
remove_reader�filenorA)rg�
bytes_read�rr7s ���r�readerz8EventLoopTestsMixin.test_reader_callback.<locals>.reader�s����
��v�v�d�|�|����"�
�
�
����
�����
��!�!�$�'�'�'�'�'�����	� 7� 7����
�
� C� C�D�D�D����	�	�	�	�	s��
'�'sabcc�*��t���dkS)Nr��re�r+s�r�<lambda>z:EventLoopTestsMixin.test_reader_callback.<locals>.<lambda>������J���1�0D�rsdefc�*��t���dkS)N�r/r0s�rr1z:EventLoopTestsMixin.test_reader_callback.<locals>.<lambda>�r2rsabcdef)�socket�
socketpair�setblocking�	bytearrayr2�
add_readerr*r�r9r��	run_untilrAr�r�r�)r7�wr-r+r,s`  @@r�test_reader_callbackz(EventLoopTestsMixin.test_reader_callback�sK������ �"�"���1�	�
�
�e�����[�[�
�	�	�	�	�	�	�	�	
�	���Q�X�X�Z�Z��0�0�0��	���A�F�F�+�+�+���T�Y�(D�(D�(D�(D�E�E�E��	���A�F�F�+�+�+���T�Y�(D�(D�(D�(D�E�E�E��	���A�G�$�$�$��	���D�I�N�+�+�+��	����������Y�/�/�/�/�/rc����tj��\}���d����fd�}d}�j�����||���j������j�����������	�j�����������
��|�t|��dz��}|�
����
||��dS)NFc�d����|���j���dSr)r9r2r�)rgr7r;s ��r�writerz8EventLoopTestsMixin.test_writer_callback.<locals>.writer�s*���
�F�F�4�L�L�L��I�N�N�����rsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr�)r5r6r7r2�
add_writerr*r�r��
remove_writerr rAr&rer�)r7r,r?rg�readr;s`    @r�test_writer_callbackz(EventLoopTestsMixin.test_writer_callback�s*����� �"�"���1�	�
�
�e����	�	�	�	�	�	����	���Q�X�X�Z�Z���6�6�6��	����������	�/�/����
�
�;�;�<�<�<������0�0������<�<�=�=�=�	���	�	�	��v�v�c�$�i�i�!�m�$�$��	���	�	�	�����t�$�$�$�$�$r�SIGKILLz
No SIGKILLc���d��fd�}|�t|jjd|��|�t|jjd��|�t
|jjtjdz|��|�t
|jjtjdz��|�t
|jjd|��|�t
|jjd��|�t
|jjd|��|�t
|jjd��|�t|jjtj	|��|�
|j�tj	����|j�tj|��tj
tj��tj��tj|j�fd���|�|j�tj����|�t
jtj��tj��|�
|j�tj����dS)Nrc����dz
�dS�Nr�r��caughts�r�
my_handlerz?EventLoopTestsMixin.test_add_signal_handler.<locals>.my_handler�s����a�K�F�F�Fr�boomr����c����SrrrHs�rr1z=EventLoopTestsMixin.test_add_signal_handler.<locals>.<lambda>�s����r)r��	TypeErrorr2�add_signal_handler�remove_signal_handler�
ValueError�signal�NSIGr�rDr �SIGINT�os�kill�getpidr�r:r�r��	getsignal�default_int_handler�r7rJrIs  @r�test_add_signal_handlerz+EventLoopTestsMixin.test_add_signal_handler�s������	�	�	�	�	�
	
����t�y�3�V�Z�	I�	I�	I�����t�y�6��	@�	@�	@������	�4�f�k�!�m��	�	�	�	
�����	�7���Q��	H�	H�	H������	�4�a��	E�	E�	E������	�7��	<�	<�	<������	�4�b�*�	F�	F�	F������	�7��	=�	=�	=�����$�)�6����	�	�	�	
�����8�8���H�H�I�I�I��	�$�$�V�]�J�?�?�?�
���	���V�]�+�+�+���T�Y�����7�7�7�	
����	�7�7��
�F�F�G�G�G�����)�&�-�8�8��3�	5�	5�	5�	
�����8�8���G�G�H�H�H�H�Hr�SIGALRMz
No SIGALRM�	setitimerzneed signal.setitimer()c�L���d���fd�}�j�tj|��tjtjdd���j�d�jj���j�����	�d��dS)Nrc�D���dz
��j���dSrG)r2r�)rIr7s��rrJzLEventLoopTestsMixin.test_signal_handling_while_selecting.<locals>.my_handler�s$����a�K�F��I�N�N�����r�{�G�z�?�<r��
r2rOrRr\r]�ITIMER_REALr�r�r�r�rZs` @r�$test_signal_handling_while_selectingz8EventLoopTestsMixin.test_signal_handling_while_selecting�s�����
��	�	�	�	�	�	�
	
�	�$�$�V�^�Z�@�@�@����+�T�1�5�5�5��	���R����0�0�0��	�����������#�#�#�#�#rc�F����d�d����fd�}�jjtj|g��R�tjtjdd���j�d�jj���j�����	�d��dS)N)�*rc�p���dz
���|����j���dSrG)r�r2r�)rrIr7�	some_argss ���rrJzAEventLoopTestsMixin.test_signal_handling_args.<locals>.my_handlers:����a�K�F����T�9�-�-�-��I�N�N�����rr�rar�rb)r7rJrIrhs` @@r�test_signal_handling_argsz-EventLoopTestsMixin.test_signal_handling_args�s�������	���	�	�	�	�	�	�	�	%��	�$�V�^�Z�L�)�L�L�L�L����+�S�!�4�4�4��	���R����0�0�0��	�����������#�#�#�#�#rTc���|j�|��\}}|�|tj��|�|tj��|�|j|��|r(|�|�	d����|j�|j
��|�|jd��|�
��dS)N�socknamer)r2r1�assertIsInstancer�	Transport�Protocol�assertIsrL�assertIsNotNone�get_extra_inforQ�
assertGreaterrNrA)r7�connection_fut�check_sockname�tr�prs     r�_basetest_create_connectionz/EventLoopTestsMixin._basetest_create_connections�����-�-�n�=�=���B����b�'�"3�4�4�4����b�'�"2�3�3�3��
�
�b�l�B�'�'�'��	@�� � ��!2�!2�:�!>�!>�?�?�?��	�$�$�R�W�-�-�-����2�9�a�(�(�(�
���
�
�
�
�
rc���tj��5}�jj�fd�g|j�R�}��|��ddd��dS#1swxYwYdS)Nc�.��t�j���S�N�r2�rqr2r@s�rr1z<EventLoopTestsMixin.test_create_connection.<locals>.<lambda>�����T�Y�/�/�/�r)r��run_test_serverr2�create_connection�addressrw)r7�httpd�conn_futs`  r�test_create_connectionz*EventLoopTestsMixin.test_create_connections����
�
'�
)�
)�	7�U�2�t�y�2�/�/�/�/�A�27�-�A�A�A�H��,�,�X�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�1A�A�Ac����t��}tj��5}�j��fd�|j��}��||��ddd��dS#1swxYwYdS)Nc�.��t�j���Srzr|r@s�rr1zAEventLoopTestsMixin.test_create_unix_connection.<locals>.<lambda>*r}r)r)r��run_test_unix_serverr2�create_unix_connectionr�rw)r7rtr�r�s`   r�test_create_unix_connectionz/EventLoopTestsMixin.test_create_unix_connection"s����5�6�6�6��
�
,�
.�
.�	G�%��y�7�7�/�/�/�/���@�@�H��,�,�X�~�F�F�F�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G�	G�	Gs�:A+�+A/�2A/Nc���|r(|�|�d����|r*|�||�d����n(|�|�d����|�||�d����|�d��}|�|t��|�t|��d|��|�|dt��|�|dt��|�|dt��|�d	��}|�|��|�|���|�d
����|�|�	��|�d����|�|�
��|�d����|�|���|�d
����dS)Nrk�peername�peercert�cipherr�rr�r��
ssl_object�compression)rprqr�rlr$re�strr&r�r��getpeercert)r7�clientrtr�r�r��sslobjs       r�check_ssl_extra_infoz(EventLoopTestsMixin.check_ssl_extra_info-s[���	D�� � ��!6�!6�z�!B�!B�C�C�C��	D����X�#�2�2�:�>�>�
@�
@�
@�
@�
� � ��!6�!6�z�!B�!B�C�C�C������.�.�z�:�:�	<�	<�	<��&�&�x�0�0�����f�e�,�,�,�����V���a��0�0�0����f�Q�i��-�-�-����f�Q�i��-�-�-����f�Q�i��-�-�-��&�&�|�4�4�����V�$�$�$�����+�+�-�-��.�.�}�=�=�	?�	?�	?����������.�.�x�8�8�	:�	:�	:�����+�+�-�-��.�.�z�:�:�	<�	<�	<�����+�+�-�-��.�.�}�=�=�	?�	?�	?�	?�	?rc���|j�|��\}}|�|tj��|�|tj��|�d|jj�	��v��|�
|||��|j�|j��|�|j
d��|���dS)N�sslr)r2r1rlrrmrnr�rurD�lowerr�rQrrrNrA)r7rsrtr�rurvs      r�_basetest_create_ssl_connectionz3EventLoopTestsMixin._basetest_create_ssl_connectionMs�����-�-�n�=�=���B����b�'�"3�4�4�4����b�'�"2�3�3�3�������!6�!<�!<�!>�!>�>�?�?�?��!�!�"�n�h�?�?�?��	�$�$�R�W�-�-�-����2�9�a�(�(�(�
���
�
�
�
�
rc����|tj�����}��|||��ttd��r�tjjfdddd��fd�}tjd|���5}|d���}��|||����	|j
d��ddd��n#1swxYwY��tj��5}|d���}tj
��5��|||��ddd��n#1swxYwYddd��n#1swxYwY��	|jjd	��dS)
N�r��Purpose)�cafile�capath�cadatac�t����|tjj��t	j��S)z�
                A ssl.create_default_context() replacement that doesn't enable
                cert validation.
                )r�r�r��SERVER_AUTHr��dummy_ssl_context)�purposer�r�r�r7s    �r�_dummy_ssl_create_contextzREventLoopTestsMixin._test_create_ssl_connection.<locals>._dummy_ssl_create_contextas/���� � ��#�+�*A�B�B�B�!�3�5�5�5rzssl.create_default_context)�side_effectTr��CERTIFICATE_VERIFY_FAILED)r�r�r��hasattrr�r�r�r�patchr��
call_countr��SSLError�disable_logger�	exception�reason)	r7r�rrtr�r�r��m�cms	`        r�_test_create_ssl_connectionz/EventLoopTestsMixin._test_create_ssl_connectionYsm���$�$��)E�)G�)G�H�H�H���,�,�X�~�-5�	7�	7�	7��3�	�"�"�	2�25�+�2I�
6�15�d�15�
6�
6�
6�
6�
6�
6�
6���8�(A�C�C�C�
2�FG�,�,��6�6�6���4�4�X�~�5=�?�?�?�� � ���q�1�1�1�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2�
2����
2�
2�
2�
2��
�
�s�|�
,�
,�	?��(�(�T�2�2�2�H��*�,�,�
?�
?��4�4�X�~�5=�?�?�?�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?�
?����
?�
?�
?�
?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	
�����,�.I�J�J�J�J�JsH�<?C�C�C�1 E�D5�)E�5D9	�9E�<D9	�=E�E�Ez
No ssl modulec����tjd���5}tj�jj�fd�g|j�R�}��|||j���ddd��dS#1swxYwYdS)NT��use_sslc�.��t�j���Srzr|r@s�rr1z@EventLoopTestsMixin.test_create_ssl_connection.<locals>.<lambda>�r}r�r�)r�r~�	functools�partialr2rr�r�)r7r�rs`  r�test_create_ssl_connectionz.EventLoopTestsMixin.test_create_ssl_connection~s����
�
'��
5�
5�
5�	E�� )� 1��	�+�/�/�/�/�! ���! �! �! ��
�,�,�U�4E�6;�m�
-�
E�
E�
E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E�	E�	Es�AA'�'A+�.A+c���t��}tjd���5}tj�jj�fd�|jd���}��||||j���ddd��dS#1swxYwYdS)NTr�c�.��t�j���Srzr|r@s�rr1zEEventLoopTestsMixin.test_create_ssl_unix_connection.<locals>.<lambda>�r}r�	127.0.0.1)�server_hostnamer�)	r)r�r�r�r�r2r�r�r�)r7rtr�rs`   r�test_create_ssl_unix_connectionz3EventLoopTestsMixin.test_create_ssl_unix_connection�s����
5�6�6�6��
�
,�T�
:�
:�
:�	E�e� )� 1��	�0�/�/�/�/��� +�!-�!-�!-��

�,�,�U�4E�-;�6;�m�
-�
E�
E�
E�
	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E�	E�	Es�A	A<�<B�Bc���tj��5}tj��}�jj�fd�g|j�Rd|jd|fi�}�j�|��\}}|j�	d��d}��
||��|���ddd��dS#1swxYwYdS)Nc�.��t�j���Srzr|r@s�rr1zGEventLoopTestsMixin.test_create_connection_local_addr.<locals>.<lambda>�r}r�
local_addrrrkr�)r�r~r
�find_unused_portr2rr�r1rLrqr�rA)r7r��port�frurvrYs`      r�!test_create_connection_local_addrz5EventLoopTestsMixin.test_create_connection_local_addr�s)���
�
'�
)�
)�	�U� �1�3�3�D�+��	�+�/�/�/�/�E���E�E�E�,1�M�!�,<�d�+C�E�E�A��Y�1�1�!�4�4�F�B���|�2�2�:�>�>�q�A�H����T�8�,�,�,��H�H�J�J�J�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�B&C�C�Cc�t����tj��}tj����jj���fd�}|�j_�j��fd�d|d�f���}��t��5�j�|��ddd��dS#1swxYwYdS)Nc���K�|�kr6tjtjdddftjtjdddfgS�||g|�Ri|���d{V��S)Nr���::1rrr�r�r)r5�AF_INET6�SOCK_STREAM�AF_INET��hostr�r�kwargs�getaddrinfo_orig�port2s    ��r�getaddrinfoz`EventLoopTestsMixin.test_create_connection_local_addr_skip_different_family.<locals>.getaddrinfo�sy������u�}�}���&�*<�a��EU�V����);�Q��DT�U�W�W�)�)�$��F�t�F�F�F�v�F�F�F�F�F�F�F�F�Frc�.��t�j���Srzr|r@s�rr1z]EventLoopTestsMixin.test_create_connection_local_addr_skip_different_family.<locals>.<lambda>�����G���+�+�+�r�	localhost�r��r
r�r2r�rr��OSErrorr1�r7�port1r�r�r�r�s`   @@r�7test_create_connection_local_addr_skip_different_familyzKEventLoopTestsMixin.test_create_connection_local_addr_skip_different_family�s$������.�0�0���.�0�0���9�0��	G�	G�	G�	G�	G�	G�!,��	���I�'�'�+�+�+�+���K��+?�
(�
A�
A���
�
�w�
'�
'�	,�	,��I�(�(��+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,��B-�-B1�4B1c�t����tj��}tj����jj���fd�}|�j_�j��fd�d|d�f���}��t��5�j�|��ddd��dS#1swxYwYdS)Nc��r�K�|�krtjtjdddfgS�||g|�Ri|���d{V��S)Nrr�r�)r5r�r�r�s    ��rr�zYEventLoopTestsMixin.test_create_connection_local_addr_nomatch_family.<locals>.getaddrinfo�s_������u�}�}���&�*<�a��EU�V�W�W�)�)�$��F�t�F�F�F�v�F�F�F�F�F�F�F�F�Frc�.��t�j���Srzr|r@s�rr1zVEventLoopTestsMixin.test_create_connection_local_addr_nomatch_family.<locals>.<lambda>�r�rr�r�r�r�s`   @@r�0test_create_connection_local_addr_nomatch_familyzDEventLoopTestsMixin.test_create_connection_local_addr_nomatch_family�s$������.�0�0���.�0�0���9�0��	G�	G�	G�	G�	G�	G�
!,��	���I�'�'�+�+�+�+���K��+?�
(�
A�
A���
�
�w�
'�
'�	,�	,��I�(�(��+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,r�c���tj��5}�jj�fd�g|j�Rd|ji�}��t��5}�j�|��ddd��n#1swxYwY��|j	j
tj����t|j��|j	j��ddd��dS#1swxYwYdS)Nc�.��t�j���Srzr|r@s�rr1zNEventLoopTestsMixin.test_create_connection_local_addr_in_use.<locals>.<lambda>�r}rr�)r�r~r2rr�r�r�r1r�r��errno�
EADDRINUSE�assertInr��strerror)r7r�r�r�s`   r�(test_create_connection_local_addr_in_usez<EventLoopTestsMixin.test_create_connection_local_addr_in_use�s����
�
'�
)�
)�	E�U�+��	�+�/�/�/�/�:���:�:�:�+0�=�:�:�A��"�"�7�+�+�
0�r��	�,�,�Q�/�/�/�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0����
0�
0�
0�
0����R�\�/��1A�B�B�B��M�M�#�e�m�,�,�b�l�.C�D�D�D�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E�	E����	E�	E�	E�	E�	E�	Es6�>C.�A:�.C.�:A>	�>C.�A>	�AC.�.C2�5C2c�l��	�
���
��|j�G�
�fd�dt��}tjdd���}|����	d�d�d�
�	���fd�}tj|d	�
��}|���|���\}}|�����
��
_��	��
�
fd�||�
���������
j�
��|�
��tj|��|�|�����|��
jd��|��
jt+�����|���
��dS)Nc�.���eZdZ��fd�Z��fd�Z�xZS)�AEventLoopTestsMixin.test_connect_accepted_socket.<locals>.MyProtoc�~��t���|�����j��dSr)rsror�r�)r7r=rur2s  ��rrozQEventLoopTestsMixin.test_connect_accepted_socket.<locals>.MyProto.connection_lost�s5������'�'��,�,�,����t�y�)�)�)�)�)rc�~��t���|��|j����dSr)rsrhrLrt)r7rgru�expected_responses  ��rrhzOEventLoopTestsMixin.test_connect_accepted_socket.<locals>.MyProto.data_received�s8������%�%�d�+�+�+���$�$�%6�7�7�7�7�7r)rDrErFrorhrw)rur�r2s@��rrqr��s\��������
*�
*�
*�
*�
*�
*�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8rrqr�r�)�backlogs	test datasrogerc�T��	tj��}����|��}|����|����|�d���|���dS#t$r}td|��Yd}~dSd}~wwxYw)N�cz8Failure in client thread in test_connect_accepted_socket)r5�wrap_socket�connect�sendallr&rA�	Exception�print)�csockr=r��
client_ssl�message�responses  ����rr�z@EventLoopTestsMixin.test_connect_accepted_socket.<locals>.client�s����
��
�����)�&�2�2�5�9�9�E��
�
�d�#�#�#��
�
�g�&�&�&� �:�:�b�>�>�����
�
�
�
�
���
�
�
��N���������������
���s�A=B�
B'�B"�"B'T)r�daemonr{c����Srr��protos�rr1zBEventLoopTestsMixin.test_connect_accepted_socket.<locals>.<lambda>s����rr�rm)r2rHr5�
create_server�getsocknamerrr�acceptr1�connect_accepted_socketr�rLrAr�join_threadr �is_aliver�rMrNre)r7�
server_sslr�rq�lsockr��thread�conn�_r�r�r2r�r�r�s  `      @@@@@@r�test_connect_accepted_socketz0EventLoopTestsMixin.test_connect_accepted_socket�s�����������y��	8�	8�	8�	8�	8�	8�	8�	8�k�	8�	8�	8��$�%5�q�A�A�A��� � �"�"������$��
	�
	�
	�
	�
	�
	�
	�
	��!���=�=�=���������,�,�.�.���a���T�"�"�"����
�����(�(������:�
)�
7�
7�	8�	8�	8�	
������
�������
���
�
�
��$�V�,�,�,�������*�*�+�+�+������h�/�/�/������s�7�|�|�4�4�4�����#4�5�5�5�5�5rc�~�tj��}tj��}|�||��dSr)r��simple_server_sslcontext�simple_client_sslcontextr)r7�server_context�client_contexts   r� test_ssl_connect_accepted_socketz4EventLoopTestsMixin.test_ssl_connect_accepted_sockets:��#�<�>�>��#�<�>�>���)�)�.�.�I�I�I�I�Irc�T�tj��}|�|j��|j�t
|tj���}|�td��5|j�
|��ddd��dS#1swxYwYdS)N)�ssl_handshake_timeoutz1ssl_handshake_timeout is only meaningful with ssl)r5�
addCleanuprAr2rrqr�LOOPBACK_TIMEOUT�assertRaisesRegexrQr1)r7�sock�coros   r�9test_connect_accepted_socket_ssl_timeout_for_plain_socketzMEventLoopTestsMixin.test_connect_accepted_socket_ssl_timeout_for_plain_sockets����}��������
�#�#�#��y�0�0��T��1I�1�K�K��
�
#�
#��C�E�E�	/�	/�
�I�(�(��.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/s�5B�B!�$B!zasyncio.base_events.socketc����	��fd��	�	�fd�}t|��}�tjkr)d�|D��|���j_n(d�|D��|���j_|�j_tj���j_	tj���j_
�j��fd�|d��}�j�|��}��
|j��d�|jD��}��||��dS)Nc��|�K��tjkr�tjdd||ffgS�tjdd||ddffgS)Nr4r�r)r5r�r�)r�r�r�kw�familys    �rr�zEEventLoopTestsMixin.create_server_multiple_hosts.<locals>.getaddrinfo"sO��������'�'���!3�Q��T�4�L�I�J�J���!3�Q��T�4��A�<N�O�P�Prc�D���j��|i|����Sr)r2�create_task)r�kwdsr�r7s  ��r�getaddrinfo_taskzJEventLoopTestsMixin.create_server_multiple_hosts.<locals>.getaddrinfo_task(s(����9�(�(���d�)C�d�)C�)C�D�D�Drc��g|]}|df��S)�Pr�r�r�s  r�
<listcomp>zDEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<listcomp>.s)��<5�<5�<5�#��r�
�<5�<5�<5rc��g|]}|dddf��	S)r rrr!s  rr"zDEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<listcomp>1s.��<;�<;�<;�%)��r�1�a� �<;�<;�<;rc�,��t�j��Srr|r@s�rr1zBEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<lambda>6s���G�D�I�,>�,>�rr c�B�h|]}|���d��S)r)�
getsockbyname)r�rs  r�	<setcomp>zCEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<setcomp>9s)��K�K�K�D��*�*�,�,�Q�/�K�K�Kr)r�r5r�r&r�r2r�r�Mock�_start_serving�
_stop_servingr�r1rrA�socketsr�)
r7r�hosts�	mock_sockr�unique_hostsr��server�server_hostsr�s
``       @r�create_server_multiple_hostsz0EventLoopTestsMixin.create_server_multiple_hosts sk�����	Q�	Q�	Q�	Q�	Q�	E�	E�	E�	E�	E�	E��5�z�z���V�^�#�#�<5�<5�'3�<5�<5�<5�I�����,�8�8�<;�<;�-9�<;�<;�<;�I�����,�8� 0��	��#'�9�;�;��	� �"&�)�+�+��	���I�#�#�$>�$>�$>�$>��r�J�J����-�-�a�0�0�������%�%�%�K�K�F�N�K�K�K������|�4�4�4�4�4rc�J�|�tjgd���dS)N)�1.2.3.4z5.6.7.8r3)r1r5r�r@s r�&test_create_server_multiple_hosts_ipv4z:EventLoopTestsMixin.test_create_server_multiple_hosts_ipv4<s6���)�)�&�.�*K�*K�*K�	M�	M�	M�	M�	Mrc�J�|�tjgd���dS)N)r�z::2r�)r1r5r�r@s r�&test_create_server_multiple_hosts_ipv6z:EventLoopTestsMixin.test_create_server_multiple_hosts_ipv6@s6���)�)�&�/�*?�*?�*?�	A�	A�	A�	A�	Arc���t|j���|j��fd�dd��}|j�|��}|�t|j��d��|jd}|���\}}|�|d��tj��}|�	d|f��|�
d��|j��j��|�d�j��tj|j�fd���|�d	�j��|��j�d
����|�d�j�d��d���j���|j��j��|�d�j��|���|���dS)
Nc����Srrr�s�rr1z8EventLoopTestsMixin.test_create_server.<locals>.<lambda>Fs���E�r�0.0.0.0rr�r��xxxr]c����jdkSr��rNr�s�rr1z8EventLoopTestsMixin.test_create_server.<locals>.<lambda>S������q�0@�rr�rkr�rm)rqr2r�r1r�rer+r�r5r�r�rPrMr�r:rNrprLrqrArQ)r7r�r/rr�r�r�r�s       @r�test_create_serverz&EventLoopTestsMixin.test_create_serverDs������	�"�"���I�#�#�M�M�M�M�9�a�@�@����-�-�a�0�0������V�^�,�,�a�0�0�0��~�a� ���%�%�'�'�
��d�����y�)�)�)����������T�*�+�+�+����v�����	�$�$�U�_�5�5�5�����e�k�2�2�2���T�Y�(@�(@�(@�(@�A�A�A�����E�L�)�)�)�	
���U�_�;�;�J�G�G�H�H�H�������7�7�
�C�C�A�F�	H�	H�	H�	��������	�$�$�U�Z�0�0�0�����5�;�/�/�/�	������	�������r�SO_REUSEPORTzNo SO_REUSEPORTc���t|j���|j��fd�dd��}|j�|��}|�t|j��d��|jd}|�|�tj
tj����|���tj|j��t|j���|j��fd�ddd���}|j�|��}|�t|j��d��|jd}|�|�tj
tj����|���dS)Nc����Srrr�s�rr1zCEventLoopTestsMixin.test_create_server_reuse_port.<locals>.<lambda>l����E�rr9rr�c����Srrr�s�rr1zCEventLoopTestsMixin.test_create_server_reuse_port.<locals>.<lambda>yrBrT)�
reuse_port)rqr2r�r1r�rer+r �
getsockoptr5�
SOL_SOCKETr?rAr�r�r�)r7r�r/rr�s    @r�test_create_server_reuse_portz1EventLoopTestsMixin.test_create_server_reuse_porths������	�"�"���I�#�#��M�M�M�9�a�
)�
)����-�-�a�0�0������V�^�,�,�a�0�0�0��~�a� ������O�O��!�6�#6�
8�
8�	9�	9�	9�	��������t�y�)�)�)���	�"�"���I�#�#��M�M�M�9�a�D�
$�
:�
:����-�-�a�0�0������V�^�,�,�a�0�0�0��~�a� ������O�O��!�6�#6�
8�
8�	9�	9�	9�	�������rc���tj���|��fd���|jj|�fi|��}|j�|��}|�fS)Nc�j��tj����otj���Sr)rU�path�exists�unlink)rJs�rr1z7EventLoopTestsMixin._make_unix_server.<locals>.<lambda>�s"�������t� 4� 4� H���4���r)r��gen_unix_socket_pathrr2�create_unix_serverr1)r7�factoryr�r�r/rJs     @r�_make_unix_serverz%EventLoopTestsMixin._make_unix_server�sj����.�0�0�����H�H�H�H�I�I�I�(�D�I�(��$�A�A�&�A�A����-�-�a�0�0���t�|�rc�"��t|j����|��fd���\}}|�t	|j��d��t
jtj��}|�|��|�	d��|j�
�j��|�d�j��tj|j�fd���|�d�j���j���|j�
�j��|�d�j��|���|���dS)	Nr{c����Srrr�s�rr1z=EventLoopTestsMixin.test_create_unix_server.<locals>.<lambda>�s���e�rr�r:r]c����jdkSr�r<r�s�rr1z=EventLoopTestsMixin.test_create_unix_server.<locals>.<lambda>�r=rr�rm)rqr2rPr�rer+r5�AF_UNIXr�r�r1rPrMr�r:rNrLrArQ)r7r/rJr�r�s    @r�test_create_unix_serverz+EventLoopTestsMixin.test_create_unix_server�sV����T�Y�'�'�'���-�-�m�m�m�m�<�<��������V�^�,�,�a�0�0�0���v�~�.�.�����t�������v�����	�$�$�U�_�5�5�5�����e�k�2�2�2���T�Y�(@�(@�(@�(@�A�A�A�����E�L�)�)�)�	��������	�$�$�U�Z�0�0�0�����5�;�/�/�/�	������	�������rrTzNo UNIX Socketsc�h��t|j����tj��}|5|j��fd�d|���}|�t
d��5|j�|��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nr{c����Srrr�s�rr1zOEventLoopTestsMixin.test_create_unix_server_path_socket_error.<locals>.<lambda>�s���U�rz/test�rz3path and sock can not be specified at the same time)rqr2r5rNrrQr1)r7rr�r�s   @r�)test_create_unix_server_path_socket_errorz=EventLoopTestsMixin.test_create_unix_server_path_socket_error�s6����T�Y�'�'�'���}����
�	0�	0��	�,�,�]�]�]�]�G�$�,�O�O�A��'�'�
�);�<�<�
0�
0��	�,�,�Q�/�/�/�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0����
0�
0�
0�
0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�	0�	0s5�<B'�(B�B'�B	�B'�B	�B'�'B+�.B+c��tjtj��}|xjtjzc_|�||��|Sr)r��
SSLContext�PROTOCOL_TLS_SERVER�options�OP_NO_SSLv2�load_cert_chain)r7�certfile�keyfile�
sslcontexts    r�_create_ssl_contextz'EventLoopTestsMixin._create_ssl_context�sF���^�C�$;�<�<�
����c�o�-����"�"�8�W�5�5�5��rc��|�||��}|j�|dd|���}|j�|��}|jd}|���\}}	|�|d��|||	fS)Nr�rr�)rcr2r�r1r+r�r�)
r7rOr`rarbr�r/rr�r�s
          r�_make_ssl_serverz$EventLoopTestsMixin._make_ssl_server�s����-�-�h��@�@�
��I�#�#�G�[�!��#�L�L����-�-�a�0�0���~�a� ���%�%�'�'�
��d�����{�+�+�+��t�T�!�!rc�\�|�||��}|�||���S)Nr�)rcrP)r7rOr`rarbs     r�_make_ssl_unix_serverz)EventLoopTestsMixin._make_ssl_unix_server�s0���-�-�h��@�@�
��%�%�g�:�%�>�>�>rc�n��t|j����|��fd�tjtj��\}}}|j�t||tj�����}|j�	|��\}}|�
d��|j�	�j��|�d�j
��tj|j�fd���|�d�j��|�|||f����j���|j�	�j��|�d	�j
��|���|���dS)
Nr{c����Srrr�s�rr1z<EventLoopTestsMixin.test_create_server_ssl.<locals>.<lambda>�rBrr�r:r]c����jdkSr�r<r�s�rr1z<EventLoopTestsMixin.test_create_server_ssl.<locals>.<lambda>�r=rr�r�rm)rqr2rer��ONLYCERT�ONLYKEYrrHr�r1rtrPr�rMr:rNr�rLrArQ)r7r/r�r��f_cr�rvr�s       @r�test_create_server_sslz*EventLoopTestsMixin.test_create_server_ssl�s�����T�Y�'�'�'��!�2�2��M�M�M�:�.�
�0B�D�D����d��i�)�)�+�t�T�.8�.J�.L�.L�*�N�N���Y�1�1�#�6�6�
������V�����	�$�$�U�_�5�5�5�����e�k�2�2�2���T�Y�(@�(@�(@�(@�A�A�A�����E�L�)�)�)�	
�!�!�&�D�$�<�!�@�@�@�	��������	�$�$�U�Z�0�0�0�����5�;�/�/�/�	������	�������rc�:��t|j����|��fd�tjtj��\}}|j�t|tj��d���}|j�	|��\}}|�
d��|j�	�j��|�d�j
��tj|j�fd���|�d�j���j���|j�	�j��|�d	�j
��|���|���dS)
Nr{c����Srrr�s�rr1zAEventLoopTestsMixin.test_create_unix_server_ssl.<locals>.<lambda>�rBrr��r�r�r:r]c����jdkSr�r<r�s�rr1zAEventLoopTestsMixin.test_create_unix_server_ssl.<locals>.<lambda>�r=rr�rm)rqr2rgr�rkrlr�rHr�r1rtrPr�rMr:rNrLrArQ)r7r/rJrmr�rvr�s      @r�test_create_unix_server_sslz/EventLoopTestsMixin.test_create_unix_server_ssl�sr����T�Y�'�'�'���1�1��M�M�M�:�.�
�0B�D�D�����i�.�.���:�#?�#A�#A��/� � ���Y�1�1�#�6�6�
������V�����	�$�$�U�_�5�5�5�����e�k�2�2�2���T�Y�(@�(@�(@�(@�A�A�A�����E�L�)�)�)�	��������	�$�$�U�Z�0�0�0�����5�;�/�/�/�	������	�������rc���t|j����|��fd�tj��\}}}tjt
j��}|xjt
j	zc_t
j
|_t|d��rd|_
|j�t|||���}tj�|jd��5tj��5|�t
jd��5|j�|��ddd��n#1swxYwYddd��n#1swxYwYtj|j��ddd��n#1swxYwY|��j��|���dS)Nr{c����Srrr�s�rr1zJEventLoopTestsMixin.test_create_server_ssl_verify_failed.<locals>.<lambda>
rBr�check_hostnameTr��call_exception_handler�(?i)certificate.verify.failed)rqr2rer��SIGNED_CERTFILEr�r[�PROTOCOL_TLS_CLIENTr]r^�
CERT_REQUIRED�verify_moder�rvrrr��objectr�rr�r1r��assertIsNonerLrA�r7r/r�r��sslcontext_clientrmr�s      @r�$test_create_server_ssl_verify_failedz8EventLoopTestsMixin.test_create_server_ssl_verify_failedsX����T�Y�'�'�'��!�2�2��M�M�M�:�5�7�7����d� �N�3�+B�C�C���!�!�S�_�4�!�!�(+�(9��%��$�&6�7�7�	4�/3��,��i�)�)�'�4��.?�*�A�A��
�Z�
�
�t�y�*B�
C�
C�	.�	.��*�,�,�
6�
6��+�+�C�L�,K�M�M�6�6��I�0�0��5�5�5�6�6�6�6�6�6�6�6�6�6�6����6�6�6�6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6�
�"�4�9�-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	
���%�/�*�*�*��������sZ�&F	�:!E�E�6E�E�E�	E�
E�
F	�E	�F	� E	�!F	�	F
�F
c���t|j����|��fd�tj��\}}tjt
j��}|xjt
j	zc_t
j
|_t|d��rd|_
|j�t||d���}tj�|jd��5tj��5|�t
jd��5|j�|��ddd��n#1swxYwYddd��n#1swxYwYtj|j��ddd��n#1swxYwY|��j��|���dS)	Nr{c����Srrr�s�rr1zOEventLoopTestsMixin.test_create_unix_server_ssl_verify_failed.<locals>.<lambda>(rBrrvT�invalidrqrwrx)rqr2rgr�ryr�r[rzr]r^r{r|r�rvr�rr�r}r�rr�r1r�r~rLrA)r7r/rJr�rmr�s     @r�)test_create_unix_server_ssl_verify_failedz=EventLoopTestsMixin.test_create_unix_server_ssl_verify_failed#sZ����T�Y�'�'�'���1�1��M�M�M�:�5�7�7���� �N�3�+B�C�C���!�!�S�_�4�!�!�(+�(9��%��$�&6�7�7�	4�/3��,��i�.�.�w��3D�?H�/�J�J���Z�
�
�t�y�*B�
C�
C�	.�	.��*�,�,�
6�
6��+�+�C�L�,K�M�M�6�6��I�0�0��5�5�5�6�6�6�6�6�6�6�6�6�6�6����6�6�6�6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6�
�"�4�9�-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	
���%�/�*�*�*��������sZ�%F�9!E�E�5E�E�E�E�	E�F�E	�F�E	� F�F�Fc���t|j����|��fd�tj��\}}}tjt
j��}|xjt
j	zc_t
j
|_|�tj
���t|d��rd|_|j�t|||���}t"j�|jd��5tj��5|�t
jd��5|j�|��ddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwY|��j��|���dS)	Nr{c����Srrr�s�rr1zIEventLoopTestsMixin.test_create_server_ssl_match_failed.<locals>.<lambda>ErBr�r�rvTr�rwz=IP address mismatch, certificate is not valid for '127.0.0.1')rqr2rer�ryr�r[rzr]r^r{r|�load_verify_locations�
SIGNING_CAr�rvrrr�r}r�r�CertificateErrorr1r~rLrArs      @r�#test_create_server_ssl_match_failedz7EventLoopTestsMixin.test_create_server_ssl_match_failedAsj����T�Y�'�'�'��!�2�2��M�M�M�:�5�7�7����d� �N�3�+B�C�C���!�!�S�_�4�!�!�(+�(9��%��/�/��(�	0�	*�	*�	*��$�&6�7�7�	4�/3��,��i�)�)�'�4��.?�*�A�A��
�Z�
�
�t�y�*B�
C�
C�	6�	6��*�,�,�
6�
6��+�+��,�&�'�'�6�6��I�0�0��5�5�5�	6�6�6�6�6�6�6�6�6�6�6����6�6�6�6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6�
6����
6�
6�
6�
6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6�	
���%�/�*�*�*��������sZ�F�!E9�;E"�E9�"E&�&E9�)E&�*E9�-F�9E=	�=F�E=	�F�F�Fc���t|j����|��fd�tj��\}}tjt
j��}|xjt
j	zc_t
j
|_|�tj
���t|d��rd|_|j�t||d���}|j�|��\}}|j��j���j���|���|���|j��j��dS)Nr{c����Srrr�s�rr1zJEventLoopTestsMixin.test_create_unix_server_ssl_verified.<locals>.<lambda>drBrr�rvTr�rq)rqr2rgr�ryr�r[rzr]r^r{r|r�r�r�rvr�r1rPrLrArQ)r7r/rJr�rmr�rvr�s       @r�$test_create_unix_server_ssl_verifiedz8EventLoopTestsMixin.test_create_unix_server_ssl_verified_sW����T�Y�'�'�'���1�1��M�M�M�:�5�7�7���� �N�3�+B�C�C���!�!�S�_�4�!�!�(+�(9��%��/�/�z�7L�/�M�M�M��$�&6�7�7�	4�/3��,��i�.�.�w��3D�?J�/�L�L���Y�1�1�#�6�6�
����	�$�$�U�_�5�5�5�	��������������������	�$�$�U�Z�0�0�0�0�0rc�H��t|j����|��fd�tj��\}}}tjt
j��}|xjt
j	zc_t
j
|_|�tj
���t|d��rd|_|j�t|||d���}|j�|��\}}|j��j��|�|||ftj����j���|���|���|j��j��dS)	Nr{c����Srrr�s�rr1zEEventLoopTestsMixin.test_create_server_ssl_verified.<locals>.<lambda>~rBrr�rvTr�rq)r�r�)rqr2rer�ryr�r[rzr]r^r{r|r�r�r�rvrr1rPr��PEERCERTrLrArQ)	r7r/r�r�r�rmr�rvr�s	        @r�test_create_server_ssl_verifiedz3EventLoopTestsMixin.test_create_server_ssl_verifiedzs�����T�Y�'�'�'��!�2�2��M�M�M�:�5�7�7����d� �N�3�+B�C�C���!�!�S�_�4�!�!�(+�(9��%��/�/�z�7L�/�M�M�M��$�&6�7�7�	4�/3��,��i�)�)�'�4��.?�:E�*�G�G���Y�1�1�#�6�6�
����	�$�$�U�_�5�5�5�	
�!�!�&�D�$�<�+5�+>�	"�	@�	@�	@�	��������������������	�$�$�U�Z�0�0�0�0�0rc��	�|j����	G�	fd�dt��}tjd��}|j�||���}|j�|��}|jd}|�|���|�����|�	��\}}|�|d��tj��}|�
d|f��|�d��|���|���dS)	Nc�"���eZdZ��fd�Z�xZS)�@EventLoopTestsMixin.test_create_server_sock.<locals>.TestMyProtoc�t��t���|����|��dSr�rsrar_)r7rLrur�s  ��rrazPEventLoopTestsMixin.test_create_server_sock.<locals>.TestMyProto.connection_made�s5������'�'�	�2�2�2�� � ��&�&�&�&�&rrv)rur�s@�r�TestMyProtor��s>��������
'�
'�
'�
'�
'�
'�
'�
'�
'�
'rr��r9rrXrr9r�r:)
r2rOrqr5r�r1r+r�r*r�r�r9rA)
r7r��sock_obr�r/rr�r�r�r�s
         @r�test_create_server_sockz+EventLoopTestsMixin.test_create_server_sock�s<����	�'�'�)�)��	'�	'�	'�	'�	'�	'�	'�'�	'�	'�	'�
�&�~�6�6���I�#�#�K�g�#�>�>����-�-�a�0�0���~�a� �������������(8�(8�9�9�9��%�%�'�'�
��d�����y�)�)�)����������T�*�+�+�+����F�����������������rc�D�tjd��}|j�t|���}|j�|��}|jd}|���\}}|j�t||���}|�t��5}|j�|��ddd��n#1swxYwY|�	|j
jtj��|�
��dS)Nr�rXr�r�r�)r5r�r2rqr1r+r�r�r�r�r�r�r�rA)r7r�r�r/rr�r�r�s        r�test_create_server_addr_in_usez2EventLoopTestsMixin.test_create_server_addr_in_use�s)���&�~�6�6���I�#�#�G�'�#�:�:����-�-�a�0�0���~�a� ���%�%�'�'�
��d��I�#�#�G�$�T�#�B�B��
�
�
�w�
'�
'�	,�2��I�(�(��+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,������+�U�-=�>�>�>��������s�0C�C�CzIPv6 not supported or enabledc��	�|j����	G�	fd�dt��}d}		tj��}|j�|d|���}|j�|��}nH#t$r;}|jtj	kr |dz
}|�
d|��Yd}~���d}~wwxYwtj��}|�d|f��|�
d	��|j��	��}|j���|���|j����	tjtj��}|�d
|f��|�
d	��|j��	��}|j���|���|���dS)Nc�"���eZdZ��fd�Z�xZS)�FEventLoopTestsMixin.test_create_server_dual_stack.<locals>.TestMyProtoc�t��t���|����|��dSrr�)r7rLru�f_protos  ��rrazVEventLoopTestsMixin.test_create_server_dual_stack.<locals>.TestMyProto.connection_made�s5������'�'�	�2�2�2��"�"�4�(�(�(�(�(rrv)rur�s@�rr�r��s>��������
)�
)�
)�
)�
)�
)�
)�
)�
)�
)rr�rTr�r�rr�r:r�)r2rOrqr
r�r�r1r�r�r�r�r5r�r9rLrAr�)
r7r��	try_countr�r�r/�exr�r�r�s
         @r�test_create_server_dual_stackz1EventLoopTestsMixin.test_create_server_dual_stack�s�����)�)�)�+�+��	)�	)�	)�	)�	)�	)�	)�'�	)�	)�	)�
�	�
	�
�$�5�7�7���I�+�+�K�d��+�N�N����5�5�a�8�8�����
�
�
��8�u�/�/�/���N�I��+�+�A�y�9�9�9��H�H�H�H������

�������������T�*�+�+�+����F�����	�,�,�W�5�5��
��������������)�)�)�+�+����v��/�/������t�}�%�%�%����F�����	�,�,�W�5�5��
��������������������s�A
A?�?
C�	0B?�>B?�?Cc�&�|j�tdd��}|j�|��}|jd}|���\}}t
j��}|�d|f��|�d��|�	��|�	��t
j��}|�
t|jd|f��|�	��dS)Nr9rr�r:)r2r�rqr1r+r�r5r�r9rAr��ConnectionRefusedError)r7r�r/rr�r�r�s       r�test_server_closez%EventLoopTestsMixin.test_server_close�s����I�#�#�G�Y��:�:����-�-�a�0�0���~�a� ���%�%�'�'�
��d����������T�*�+�+�+����F������������������������"�F�N�[�$�4G�	I�	I�	I��������rc���
��G�fd�dt��}�j�|||���}�j�|��\}�|�d��}tj|t
jt
jz��\}}��	|tj����	�|����d�j
�����j|���j��fd�||f���}�j�|��\}	�
��	|	tj����	�
t����d�
j
�����
j|	��|	�d��t#j�j�fd	�����d
�j��t#j�j�
fd�����d�
j����|	�d����|	����j��
j����d
�
j
���j���dS)Nc�,���eZdZ��fd�Z�fd�Z�xZS)�OEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.TestMyDatagramProtoc�V��t����j���dSrz)rsrSr2)�
inner_selfrur7s ��rrSzXEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.TestMyDatagramProto.__init__�s&������ � �d�i� �0�0�0�0�0rc���t���||��|j�d|z|��dS)Nsresp:)rsr�rL�sendto)r7rgr�rus   �rr�zaEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.TestMyDatagramProto.datagram_received�s?������)�)�$��5�5�5���%�%�h�t�m�T�:�:�:�:�:r)rDrErFrSr�rw)rur7s@�r�TestMyDatagramProtor��sW��������
1�
1�
1�
1�
1�
1�
;�
;�
;�
;�
;�
;�
;�
;�
;rr�)r�rrkrc�.��t�j���Srz�rzr2r@s�rr1zDEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.<lambda>����O���3�3�3�r)�remote_addrr:c����jSrr<)r/s�rr1zDEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.<lambda>�	����
�rr�c����jSrr<)r�s�rr1zDEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.<lambda>r�r�rm)rzr2�create_datagram_endpointr1rqr5�getnameinfo�NI_NUMERICHOST�NI_NUMERICSERVrlrrmr�rMrorLr�r�r:rNrprArQ)r7r�rr�r�s_transportrkr�r�rLr�r/s`         @@r�_test_create_datagram_endpointz2EventLoopTestsMixin._test_create_datagram_endpoint�s������	;�	;�	;�	;�	;�	;�	;�/�	;�	;�	;��y�1�1��J�v�2�G�G��"�i�:�:�4�@�@���V��-�-�j�9�9���'��f�+�F�,A�A�C�C�
��d�	
���k�7�+<�=�=�=����f�&9�:�:�:�������5�5�5��
�
�f�&��4�4�4��y�1�1�3�3�3�3��t��2�&�&��!�I�8�8��>�>��	�6����i��):�;�;�;����f�o�6�6�6�������5�5�5��
�
�f�&�	�2�2�2����� � � ���T�Y�(=�(=�(=�(=�>�>�>�����F�M�*�*�*���T�Y�(=�(=�(=�(=�>�>�>�	
����F�M�*�*�*�	
���Y�5�5�j�A�A�B�B�B�	�������	�$�$�V�[�1�1�1�����6�<�0�0�0����� � � � � rc�F�|�dtj��dS)Nr�)r�r5r�r@s r�test_create_datagram_endpointz1EventLoopTestsMixin.test_create_datagram_endpoint*s!���+�+�,<�f�n�M�M�M�M�Mrc�F�|�dtj��dS)N)r�r)r�r5r�r@s r�"test_create_datagram_endpoint_ipv6z6EventLoopTestsMixin.test_create_datagram_endpoint_ipv6-s ���+�+�J���H�H�H�H�Hrc���d}d}�j��jj|dtji���}|D]R\}}}}}	tj|||���}|�d��|�|��n#Y�PxYw��d���j��fd�|���}	�j�|	��\}
}��	|
tj����	|t��|
�
���j�|j��dS)Nr��type)rr�r�FzCan not create socket.c�.��t�j���Srzr�r@s�rr1zHEventLoopTestsMixin.test_create_datagram_endpoint_sock.<locals>.<lambda>Dr�rrX)r2r1r�r5�
SOCK_DGRAMr7�bind�failr�rlrrmrzrArQ)r7r�
local_address�infosrr�r��cnamer�r�rurvs`           r�"test_create_datagram_endpoint_sockz6EventLoopTestsMixin.test_create_datagram_endpoint_sock1sl�����(�
��	�,�,�!�D�I�!��
8�%+�%6�
8�
8�9�9��49�
	0�
	0�/�F�D�%���
��}�F��U�K�K�K��� � ��'�'�'��	�	�'�"�"�"����
������
�I�I�.�/�/�/��I�.�.�3�3�3�3�$�
/�
@�
@����-�-�a�0�0���B����b�'�"3�4�4�4����b�/�2�2�2�
���
�
�
��	�$�$�R�W�-�-�-�-�-s
�AB�Bc����|j�G�fd�dtj��}d�}|��}����||�����\}}|���}|��}����||�����\}}	|���}
|��}����||�����\}}
|���}|���|�d|
���|���|	�	����d��|�d|���|���|�	����d��|�d|�����tj
d	����|�d
|���|���|�	����d
��|���|���dS)Nc�$��eZdZdZd�Z�fd�ZdS)�QEventLoopTestsMixin.test_datagram_send_to_non_listening_address.<locals>.ProtocolNc�:�|j�|��dSr)�_received_datagramr_r�s   rr�zcEventLoopTestsMixin.test_datagram_send_to_non_listening_address.<locals>.Protocol.datagram_receivedYs���'�2�2�4�8�8�8�8�8rc���K�����|_tj|jd���d{V��}d|_|S)Nr)rOr�r�wait_for)r7�resultr2s  �r�wait_for_datagram_receivedzlEventLoopTestsMixin.test_datagram_send_to_non_listening_address.<locals>.Protocol.wait_for_datagram_received\sO�����*.�*<�*<�*>�*>��'�&�/��0G��L�L�L�L�L�L�L�L��*.��'��
r)rDrErFr�r�r�r{s�rrnr�UsC�������!%��
9�
9�
9�
�
�
�
�
�
�
rrnc��tjtjtj��}|�d��|�d��|S)NFr�)r5r�r�r7r�rXs r�
create_socketzVEventLoopTestsMixin.test_datagram_send_to_non_listening_address.<locals>.create_socketbsD���=����1B�C�C�D����U�#�#�#��I�I�&�'�'�'��KrrX�a)r��b�cr�d)r2r�DatagramProtocolr1r�r��abortr�r�r�r�rA)r7rnr��socket_1�transport_1�
protocol_1�addr_1�socket_2�transport_2�
protocol_2�addr_2�socket_3�transport_3�
protocol_3�addr_3r2s               @r�+test_datagram_send_to_non_listening_addressz?EventLoopTestsMixin.test_datagram_send_to_non_listening_addressKs�����y��	�	�	�	�	�	�	�w�/�	�	�	�	�	�	�!�=�?�?��"&�"9�"9��)�)�(��)�B�B�#
�#
���Z��%�%�'�'�� �=�?�?��"&�"9�"9��)�)�(��)�B�B�#
�#
���Z��%�%�'�'��!�=�?�?��"&�"9�"9��)�)�(��)�B�B�#
�#
���Z��%�%�'�'�����������4�f��-�-�-�����0�0��1�1�3�3�
�
��	�	�	�	���4�f��-�-�-�����0�0��1�1�3�3�
�
��	�	�	�
	���4�f��-�-�-�����
�a� 0� 0�1�1�1�	���4�f��-�-�-�����0�0��1�1�3�3�
�
��	�	�	�	�������������rc��|���}t|tj��s)|���|�d��|�d|j��|���|�d|j��|�|j	��|�|j
��dS)Nz#loop is not a BaseSelectorEventLoopr�r)r��
isinstancer	�BaseSelectorEventLooprA�skipTestr��
_internal_fdsr~�_csock�_ssockrRs  r�test_internal_fdsz%EventLoopTestsMixin.test_internal_fds�s����%�%�'�'���$�� E�F�F�	A��J�J�L�L�L��M�M�?�@�@�@�����D�.�/�/�/��
�
��������D�.�/�/�/����$�+�&�&�&����$�+�&�&�&�&�&rrzDon't support pipes for Windowsc�H����t�j����tj��\}}t	j|dd������fd�}�j�|����tj|d��tj	�j�fd�����
d�j��tj|d��tj	�j�fd	�����
d
dg�j����
d�j��tj
|���j��j����
gd
��j�����j�d����dS)Nr{�rbr%c��,�K��j��fd�����d{V��\}}��|�����|�j����ddg�j����d�j��dS)Nc����Srrr�s�rr1zEEventLoopTestsMixin.test_read_pipe.<locals>.connect.<locals>.<lambda>�s����rrKr]r�r2�connect_read_piperorLr�rMrN)r�p�pipeobjr�r7s  ���rr�z3EventLoopTestsMixin.test_read_pipe.<locals>.connect�s��������4�4��
�
�
�w�(�(�(�(�(�(�(�(�D�A�q��M�M�!�U�#�#�#��M�M�!�U�_�-�-�-����i��5�u�{�C�C�C����Q���-�-�-�-�-r�1c����jdkSrGr<r�s�rr1z4EventLoopTestsMixin.test_read_pipe.<locals>.<lambda>��������0A�rr��2345c����jdkS�Nrr<r�s�rr1z4EventLoopTestsMixin.test_read_pipe.<locals>.<lambda>�r�rrKr]r�rKr]rjrm�pipe)r�r2rUr�io�openr1rtr�r:r�rNrMrArQrprLrq)r7�rpipe�wpiper�r�r�s`   @@r�test_read_pipez"EventLoopTestsMixin.test_read_pipe�s������ �T�Y�/�/�/���w�y�y���u��'�%��t�,�,��	.�	.�	.�	.�	.�	.�	.�	
�	�$�$�W�W�Y�Y�/�/�/�
���������T�Y�(A�(A�(A�(A�B�B�B�����E�L�)�)�)�
���� � � ���T�Y�(A�(A�(A�(A�B�B�B����)�[�1�5�;�?�?�?�����E�L�)�)�)�
�������	�$�$�U�Z�0�0�0����5�5�5�u�{�	D�	D�	D�	
���U�_�;�;�F�C�C�D�D�D�D�Drc�r����	�
�|����t�����t�����
tj��\}}tj|dd���tj|ddd����	����	�
fd�}��|����\}}����|�	dt|����|�	dt|���������	���d|_d|_dS)	Nr{r�r%r;zutf-8)�encodingc���K����fd�����d{V��\}}���fd�����d{V��\}}||fS)Nc����Srr��
read_protos�rr1zSEventLoopTestsMixin.test_unclosed_pipe_transport.<locals>.connect.<locals>.<lambda>�s���
�rc����Srr��write_protos�rr1zSEventLoopTestsMixin.test_unclosed_pipe_transport.<locals>.connect.<locals>.<lambda>�s����r)r��connect_write_pipe)�read_transportr�write_transportr2r�rpipeobj�wpipeobjrs   �����rr�zAEventLoopTestsMixin.test_unclosed_pipe_transport.<locals>.connect�s������&*�&<�&<�"�"�"�"�H�'.�'.�!.�!.�!.�!.�!.�!.��N�A�'+�'>�'>�#�#�#�#�X�(/�(/�"/�"/�"/�"/�"/�"/��O�Q�!�?�2�2rr)r�r�r�rUrrrr1rAr��repr�_pipe)r7rrr�rrr2rrrrs      @@@@@r�test_unclosed_pipe_transportz0EventLoopTestsMixin.test_unclosed_pipe_transport�s@��������%�%�'�'��$�$�/�/�/�
�&�D�1�1�1���w�y�y���u��7�5�$��-�-���7�5�#�t�g�>�>�>��	3�	3�	3�	3�	3�	3�	3�	3�	3�+/�*A�*A�'�'�)�)�*L�*L�'����
�
����	
�
�
�f�d�>�2�2�3�3�3��
�
�f�d�?�3�3�4�4�4�	������������#��� $����r�openptyzneed os.openpty()c�z����t�j����tj��\}}t	j|dd������fd�}�j�|����tj|d��tj	�j�fd�����
d�j��tj|d��tj	�j�fd	�����
d
dg�j����
d�j��tj
|���j�
���j��j����
gd
��j�����j�d����dS)Nr{r�rc��,�K��j��fd�����d{V��\}}��|�����|�j����ddg�j����d�j��dS)Nc����Srrr�s�rr1zKEventLoopTestsMixin.test_read_pty_output.<locals>.connect.<locals>.<lambda>�s���U�rrKr]rr�)rr��master_read_objr�r7s  ���rr�z9EventLoopTestsMixin.test_read_pty_output.<locals>.connect�s��������4�4�]�]�]�]�5D�F�F�F�F�F�F�F�F�D�A�q��M�M�!�U�#�#�#��M�M�!�U�_�-�-�-����i��5�u�{�C�C�C����Q���-�-�-�-�-rr�c����jSrr<r�s�rr1z:EventLoopTestsMixin.test_read_pty_output.<locals>.<lambda>�s	�����rr�rc����jdkSrr<r�s�rr1z:EventLoopTestsMixin.test_read_pty_output.<locals>.<lambda>�r�rrKr]rrr)r�r2rUrrrr1rtr�r:r�rNrMrArLrQrprq)r7�master�slaver�rr�s`   @@r�test_read_pty_outputz(EventLoopTestsMixin.test_read_pty_output�s������ �T�Y�/�/�/���
���
����'�&�$��2�2��	.�	.�	.�	.�	.�	.�	.�	
�	�$�$�W�W�Y�Y�/�/�/�
���������T�Y�(<�(<�(<�(<�=�=�=�����E�L�)�)�)�
���� � � ���T�Y�(A�(A�(A�(A�B�B�B����)�[�1�5�;�?�?�?�����E�L�)�)�)�
������
��������	�$�$�U�Z�0�0�0����5�5�5�u�{�	D�	D�	D�	
���U�_�;�;�F�C�C�D�D�D�D�Drc�F����	�tj��\�	}tj|dd��}t	|j����|j��fd�|��}|j�|��\}}|�|���|�|�j	��|�
d�j��|�d��t����	fd��tj|j��fd���|�
d���|�d	��tj|j��fd
���|�
d���|�
d�j��tj�	��|��j	�d�����j	���|j��j��|�
d
�j��dS)N�wbr%r{c����Srrr�s�rr1z5EventLoopTestsMixin.test_write_pipe.<locals>.<lambda>����u�rr]r�c�V��tj�d��}||z
}t|��Sr$�rUrBre)rg�chunkrs  �rr-z3EventLoopTestsMixin.test_write_pipe.<locals>.readers)����G�E�4�(�(�E��E�M�D��t�9�9�rc�"������dkSrGr�rgr-s��rr1z5EventLoopTestsMixin.test_write_pipe.<locals>.<lambda>������t����0A�rrc�"������dkSrrr-s��rr1z5EventLoopTestsMixin.test_write_pipe.<locals>.<lambda>"r.r�12345rrm)rUrrrr�r2rr1rorLr�rMrtr8r�r:rArprqrQ)
r7rr�r�rLr�rgr�r-rs
      @@@@r�test_write_pipez#EventLoopTestsMixin.test_write_pipe	s�������w�y�y���u��'�%��t�,�,�� �d�i�0�0�0���)�.�.�}�}�}�}�g�F�F���y�3�3�G�<�<��	�1��
�
�a������
�
�i���1�1�1�����e�k�2�2�2���������{�{��	�	�	�	�	�
	��T�Y�(A�(A�(A�(A�(A�B�B�B�����t�$�$�$����� � � ���T�Y�(A�(A�(A�(A�(A�B�B�B�����4�(�(�(�����e�k�2�2�2�
������	
���U�_�;�;�F�C�C�D�D�D�	��������	�$�$�U�Z�0�0�0�����5�;�/�/�/�/�/rc�>��tj��\}}|�d��tj|���dd��}t
|j����|j��fd�|��}|j�	|��\}}|�
|���|�
|�j��|�d�j
��|�d��|j�	|j�|d����}|�d|��|���|j�	�j��|�d�j
��dS)	NFr&r%r{c����Srrr�s�rr1zIEventLoopTestsMixin.test_write_pipe_disconnect_on_close.<locals>.<lambda>8r(rr]r�rm)r5r6r7rr�detachr�r2rr1rorLr�rMrt�	sock_recvrArQ)	r7�rsock�wsockr�r�rLr�rgr�s	        @r�#test_write_pipe_disconnect_on_closez7EventLoopTestsMixin.test_write_pipe_disconnect_on_close0sb����(�*�*���u�
���%� � � ��'�%�,�,�.�.�$��5�5�� �d�i�0�0�0���)�.�.�}�}�}�}�g�F�F���y�3�3�G�<�<��	�1��
�
�a������
�
�i���1�1�1�����e�k�2�2�2���������y�+�+�D�I�,?�,?��t�,L�,L�M�M������t�$�$�$�
���
�
�
��	�$�$�U�Z�0�0�0�����5�;�/�/�/�/�/rrr4c�v����	�tj��\�}tj|dd��}t	|j����|j��fd�|��}|j�|��\}}|�|���|�|�j	��|�
d�j��|�d��t����fd��	tj|j��	fd�t j�	��|�
d���|�d
��tj|j��	fd�t j�	��|�
d���|�
d�j��tj���|��j	�d
�����j	���|j��j��|�
d�j��dS)Nr&rr{c����Srrr�s�rr1z4EventLoopTestsMixin.test_write_pty.<locals>.<lambda>Rr(rr]r�c�V��tj�d��}||z
}t|��Sr$r*�rgr+r"s  �rr-z2EventLoopTestsMixin.test_write_pty.<locals>.reader[�)����G�F�D�)�)�E��E�M�D��t�9�9�rc�"������dkSrGrr-s��rr1z4EventLoopTestsMixin.test_write_pty.<locals>.<lambda>`r.r��timeoutrc�"������dkSrrr-s��rr1z4EventLoopTestsMixin.test_write_pty.<locals>.<lambda>er.rr0rrm)rUrrrr�r2rr1rorLr�rMrtr8r�r:r�
SHORT_TIMEOUTrArprqrQ)
r7r#�slave_write_objr�rLr�rgr"r�r-s
      @@@@r�test_write_ptyz"EventLoopTestsMixin.test_write_ptyGs(�������
���
����'�%��q�1�1�� �d�i�0�0�0���)�.�.�}�}�}�}�o�N�N���y�3�3�G�<�<��	�1��
�
�a������
�
�i���1�1�1�����e�k�2�2�2���������{�{��	�	�	�	�	�
	��T�Y�(A�(A�(A�(A�(A�%,�%:�	<�	<�	<�	<�����t�$�$�$����� � � ���T�Y�(A�(A�(A�(A�(A�%,�%:�	<�	<�	<�	<�����4�(�(�(�����e�k�2�2�2�
������	
���U�_�;�;�F�C�C�D�D�D�	��������	�$�$�U�Z�0�0�0�����5�;�/�/�/�/�/rc�	�
���
��tj��\�}tj|��}tj|��tj|dd��}t|j����|j�	�fd�|��}|j�
|��\}}|�|���|�|�j��|�
ddg�j��|�
d�j��tj|dd��}t!|j����|j��fd�|��}|j�
|��\}	}|�|���|�|	�j��|�
d�j��t%���
�fd	��
|	�d
��t)j|j�
�
fd�t,j���|�
d
�
��|�
ddg�j��|�
d�j��tj�d
��t)j|j�fd�t,j���|�
ddg�j��|�
d�j��|�
d�j��|	�d��t)j|j�
�
fd�t,j���|�
d�
��|�
ddg�j��|�
d�j��tj�d��t)j|j�fd�t,j���|�
ddg�j��|�
d�j��|�
d�j��tj���|���|j�
�j��|�
gd��j��|	���|j�
�j��|�
d�j��dS)Nr�rr{c����Srrrs�rr1z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>�s���:�rrKr]r&c����Srrrs�rr1z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>�s���[�rc�V��tj�d��}||z
}t|��Sr$r*r<s  �rr-z:EventLoopTestsMixin.test_bidirectional_pty.<locals>.reader�r=rr�c�"������dkSrGrr-s��rr1z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>�r.rr?r�c����jdkSrGr<rs�rr1z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>�����
�0A�Q�0F�rr�rc�"������dkSrrr-s��rr1z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>�r.rr0sbcdec����jdkSrr<rs�rr1z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>�rKrrrrm)rUr�dup�tty�setrawrrr�r2r�r1rorLr�rMrNr�rr8rtr�r:rrBrArQ)r7�
read_slave�write_slave�slave_read_obj�read_connectrr�rC�
write_connectrrgr"rr-rs          @@@@@r�test_bidirectional_ptyz*EventLoopTestsMixin.test_bidirectional_ptyts�������� �Z�\�\���
��f�Z�(�(���
�:�������T�1�5�5��$�$�)�4�4�4�
��y�2�2�3E�3E�3E�3E�3A�C�C�� �I�8�8��F�F�����
�
�a��$�$�$��
�
�n�j�&:�;�;�;����)�[�1�:�3C�D�D�D�����J�-�.�.�.��'�+�t�Q�7�7��&�D�I�6�6�6���	�4�4�5H�5H�5H�5H�5D�F�F�
�!�Y�9�9�-�H�H�����
�
�a��%�%�%��
�
�o�{�'<�=�=�=�����k�&7�8�8�8��{�{��	�	�	�	�	�
	���d�#�#�#���T�Y�(A�(A�(A�(A�(A�%,�%:�	<�	<�	<�	<�����t�$�$�$����)�[�1�:�3C�D�D�D�����k�&7�8�8�8�
���������T�Y�(F�(F�(F�(F�%,�%:�	<�	<�	<�	<����)�[�1�:�3C�D�D�D�����J�-�.�.�.�����k�&7�8�8�8����g�&�&�&���T�Y�(A�(A�(A�(A�(A�%,�%:�	<�	<�	<�	<�����4�(�(�(����)�[�1�:�3C�D�D�D�����k�&7�8�8�8�
����!�!�!���T�Y�(F�(F�(F�(F�%,�%:�	<�	<�	<�	<����)�[�1�:�3C�D�D�D�����J�-�.�.�.�����k�&7�8�8�8�
�������������	�$�$�Z�_�5�5�5����5�5�5�z�7G�	I�	I�	I�	�������	�$�$�[�%5�6�6�6�����;�#4�5�5�5�5�5rc����tj��\}}|�d���j��j�|d�����t
�dd��}|���|j����fd�}�j�|����}�j�	����
|���d����tj�j��|���|j���j�|��|���|���dS)NFr��ovc���K�	�j��j����d{V��d}n#tj$rd}YnwxYw�j���n#�j���wxYw|S)N�	cancelled)r2r�rr�CancelledErrorr�)rr�r7s ��r�mainz:EventLoopTestsMixin.test_prompt_cancellation.<locals>.main�s������
!��	�#�#�A�H�-�-�-��������������)�
"�
"�
"�!����
"����
�	��� � � � ���	��� � � � �����Js&�'/�A �A�A �A�A � A;rZ)r5r6r7r2rr5�getattrr��pendingr�r�r�r�rr[r r*rA)r7r,r;rXr\rr�s`     @r�test_prompt_cancellationz,EventLoopTestsMixin.test_prompt_cancellation�sP����� �"�"���1�	�
�
�e�����I�!�!�$�)�"5�"5�a��";�";�<�<��
�Q��d�
#�
#��
�>��O�O�B�J�'�'�'�
	�
	�
	�
	�
	�
	�
�I�!�!�$�$�&�&�)�)���	��������������[�1�1�1����'�0�!�(�;�;�;�
�>����R�Z�(�(�(��	����"�"�"�	���	�	�	�	���	�	�	�	�	rc�,�����fd�}�jj�d�j_|�j_d�}�j�|�������jjd�jj�jjjjd���dS)Nc�F���jxjdz
c_���dSrG)r2�_run_once_counter)�
orig_run_oncer7s��r�	_run_oncez<EventLoopTestsMixin.test_timeout_rounding.<locals>._run_once�s(����I�'�'�1�,�'�'��M�O�O�O�O�Orrc��K�tjd���d{V��tjd���d{V��tjd���d{V��tjd���d{V��tjd���d{V��dS)Nr`g-C��6?g���ư>g:�0�yE>g�����|�=r�rrr�waitz7EventLoopTestsMixin.test_timeout_rounding.<locals>.wait�s������-��%�%�%�%�%�%�%�%�%��-��%�%�%�%�%�%�%�%�%��-��%�%�%�%�%�%�%�%�%��-��%�%�%�%�%�%�%�%�%��-��&�&�&�&�&�&�&�&�&�&�&r�)�clock_resolution�selector)	r2rdrbr1�assertLessEqual�_clock_resolution�	_selectorrurD)r7rdrfrcs`  @r�test_timeout_roundingz)EventLoopTestsMixin.test_timeout_rounding�s�����	�	�	�	�	�	��	�+�
�&'��	�#�'��	��	'�	'�	'�	
�	�$�$�T�T�V�V�,�,�,�
	
���T�Y�8�"�!%��!<���,�6�?�
A�
A�	B�	B�	B�	B�	Brc���|���}d�}tj��\}}|�|j��|�|j��|�||��|�||��|���|�|�|����|�|�	|����dS)Nc��dSrrrrrr1zCEventLoopTestsMixin.test_remove_fds_after_closing.<locals>.<lambda>����4�r)
r�r5r6rrAr9r@r r)rA�r7r2r�r,r;s     r�test_remove_fds_after_closingz1EventLoopTestsMixin.test_remove_fds_after_closing�s����%�%�'�'���<��� �"�"���1������ � � ������ � � �����8�$�$�$�����8�$�$�$��
�
��������+�+�A�.�.�/�/�/�����+�+�A�.�.�/�/�/�/�/rc��|���}d�}tj��\}}|�|j��|�|j��|���|�t��5|�||��ddd��n#1swxYwY|�t��5|�||��ddd��dS#1swxYwYdS)Nc��dSrrrrrr1z@EventLoopTestsMixin.test_add_fds_after_closing.<locals>.<lambda>rpr)	r�r5r6rrAr�r�r9r@rqs     r�test_add_fds_after_closingz.EventLoopTestsMixin.test_add_fds_after_closingsj���%�%�'�'���<��� �"�"���1������ � � ������ � � ��
�
����
�
�
�|�
,�
,�	)�	)��O�O�A�x�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�
�
�
�|�
,�
,�	)�	)��O�O�A�x�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�	)�	)s$�B3�3B7�:B7�C<�<D�Dc�����fd�}|�j��}��t��5�j�|��ddd��dS#1swxYwYdS)Nc��>�K��j���dSr)r2rA�r2r7s �r�
close_loopzEEventLoopTestsMixin.test_close_running_event_loop.<locals>.close_loops������I�O�O�����r)r2r�r�r1)r7ryrs`  r�test_close_running_event_loopz1EventLoopTestsMixin.test_close_running_event_loops����	�	�	�	�	��z�$�)�$�$��
�
�
�|�
,�
,�	/�	/��I�(�(��.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/s�A�A� Ac��|j���d�}d�}|��}|�|j��|�t��5|j���ddd��n#1swxYwY|�t��5|j���}|j�|��ddd��n#1swxYwY|�t��5|j�|��ddd��n#1swxYwY|�t��5|j�	|��ddd��n#1swxYwY|�t��5|j�
d|��ddd��n#1swxYwY|�t��5|j�|j���dz|��ddd��n#1swxYwY|�t��5|j�
|��ddd��n#1swxYwY|�t��5|j�tj|��ddd��n#1swxYwY|�t��5|j�d|�����}t'|��ddd��dS#1swxYwYdS)Nc��
K�dSrrrrr�testz,EventLoopTestsMixin.test_close.<locals>.tests�����Drc��dS�NFrrrrr1z0EventLoopTestsMixin.test_close.<locals>.<lambda>s��u�rg�?g)r2rArr�r�r�rOr1r�r�r��call_atr�rrOrR�SIGTERMrrC�next)r7r}�funcr�fut�its      r�
test_closezEventLoopTestsMixin.test_closes���	������	�	�	��}���t�v�v������
�#�#�#��
�
�|�
,�
,�	$�	$��I�!�!�#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�
�
�
�|�
,�
,�	.�	.��)�)�)�+�+�C��I�(�(��-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.��
�
�|�
,�
,�	&�	&��I����%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�
�
�
�|�
,�
,�	1�	1��I�*�*�4�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�
�
�
�|�
,�
,�	,�	,��I� � ��d�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�
�
�
�|�
,�
,�	;�	;��I���d�i�n�n�.�.��3�T�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�
�
�
�|�
,�
,�	(�	(��I�!�!�$�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�
�
�
�|�
,�
,�	?�	?��I�(�(����>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?��
�
�|�
,�
,�	�	���*�*�4��6�6�@�@�B�B�B���H�H�H�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s��B�B�B�)4C)�)C-�0C-�D5�5D9�<D9�F�F�F�&G�G�G�36H5�5H9�<H9�J�J�J�&&K�K�K�==M�M�M)T)TN)NNr)^rDrErFr�r�r�r�r�r�r�rrrr!r<rC�unittest�
skipUnlessr�rRr[rdrirwr�r
�skip_unless_bind_unix_socketr�r�r�r��skipIfr�r�r�r��skip_if_tcp_blackholer�r�r�rrrrr�r1r4r6r>r5rGrPrUrYrcrergrnrsr�r�r�r�r�r�r��IPV6_ENABLEDr�r�r�r�r�r�r�r�r r!r	rrUr$r1r8r�requires_mac_verrDrVr_rmrrrurzr�rwrxs@rr�r�s
�������'�'�'�'�'�
�����
E�
E�
E�$B�B�B�>�>�>�	3�	3�	3�	8�	8�	8�6�6�6�.6�6�6�>�>�>�!�!�!�(0�0�0�8%�%�%�(�X������3�3�\�B�B�)I�)I�C�B�)I�V�X������3�3�\�B�B��X������5�5�2�4�4�$�$�4�4�C�B�$� �X������3�3�\�B�B��X������5�5�2�4�4�$�$�4�4�C�B�$�"	�	�	�	�7�7�7��/�G�G�0�/�G�;?�&*�R�?�?�?�?�B8<�15�
�
�
�
�CG�#K�#K�#K�#K�J�X�_�S�D�[�/�2�2�E�E�3�2�E��/��X�_�S�D�[�/�2�2�
E�
E�3�2�0�/�
E�	�	�	��(�,�,�)�(�,�*�(�,�,�)�(�,�(E�E�E�46�46�46�46�l�X�_�S�D�[�/�2�2�J�J�3�2�J�/�/�/��T�Z�,�-�-�5�5�.�-�5�6M�M�M�A�A�A�"�"�"�H�X������8�8�:K�L�L���M�L��2����/���0�/��6�X������3�3�5F�G�G�0�0�H�G�0�����	"�	"�	"�	"�?�?�?�?��X�_�S�D�[�/�2�2���3�2��>�/��X�_�S�D�[�/�2�2���3�2�0�/��:�X�_�S�D�[�/�2�2���3�2��8�/��X�_�S�D�[�/�2�2���3�2�0�/��8�X�_�S�D�[�/�2�2���3�2��:�/��X�_�S�D�[�/�2�2�1�1�3�2�0�/�1�2�X�_�S�D�[�/�2�2�1�1�3�2�1�:���.
�
�
��X���3�5T�U�U�&�&�V�U�&�P�(���)�(��$.!�.!�.!�`N�N�N��X���3�5T�U�U�I�I�V�U�I�.�.�.�4H�H�H�T
'�
'�
'��X�����0�:�<�<�E�E�<�<�E�@�X�����0�:�<�<�%�%�<�<�%�@�X�����0�:�<�<��X�����Y�/�/�1D�E�E�E�E�F�E�<�<�E�B�X�����0�:�<�<�#0�#0�<�<�#0�J�X�����0�:�<�<�0�0�<�<�0�*�X�����0�:�<�<��X�����Y�/�/�1D�E�E��W��b�!�$�$�%0�%0�%�$�F�E�<�<�%0�N�X�����0�:�<�<��X�����Y�/�/�1D�E�E��W��b�!�$�$�D6�D6�%�$�F�E�<�<�D6�L���@B�B�B�2
0�
0�
0�
)�
)�
)�/�/�/�"�"�"�"�"�"�"rr�c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zej
ejd
kd��d���Zd
�Zd�Zd�Zd�Zd�Zd�ZdS)�SubprocessTestsMixinc��tjdkr|�|t��dS|�t
j|��dS�Nr)r r!rlr&r�rRr��r7r�s  r�check_terminatedz%SubprocessTestsMixin.check_terminated@�M���<�7�"�"��!�!�*�c�2�2�2�2�2�
���f�n�_�j�9�9�9�9�9rc��tjdkr|�|t��dS|�t
j|��dSr�)r r!rlr&r�rRrDr�s  r�check_killedz!SubprocessTestsMixin.check_killedGr�rc���tj�tj�t��d��}|j�tjt|j��tj|��}|j�|��\}}|�
|t��|j�|j��|�d|j��|�d��}|�d��|j�|jd�����t+j��5|���ddd��n#1swxYwY|j�|j��|�|j��|�d|jd��dS)N�echo.pyr]r�Python The Winnerr�)rUrJr�dirname�__file__r2�subprocess_execr�r�r�r �
executabler1rlrPr�rM�get_pipe_transportrtr�rfr�r�rAr�r�r�rg�r7�progr��transpr��stdins      r�test_subprocess_execz)SubprocessTestsMixin.test_subprocess_execNs����w�|�|�B�G�O�O�H�5�5�y�A�A���)�+�+�!�)�*>��	�J�J����.�.���	�4�4�W�=�=�
������e�%9�:�:�:��	�$�$�U�_�5�5�5�����e�k�2�2�2��)�)�!�,�,��
���(�)�)�)��	�$�$�U�^�A�%6�%;�%;�%=�%=�>�>�>�
�
&�
(�
(�	�	��L�L�N�N�N�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��	�$�$�U�_�5�5�5����%�*�+�+�+����-�u�z�!�}�=�=�=�=�=s�,F
�
F�Fc��tj�tj�t��d��}|j�tjt|j��tj|��}|j�|��\}}|�
|t��|j�|j��|�d|j��|�d��}|�d��|j�|jd�����|jd���|�d|jd��|�d��|j�|jd�����|�d|jd��t/j��5|���ddd��n#1swxYwY|j�|j��|�|j��dS)Nr�r]rsPython r�s
The Winnerr�)rUrJrr�r�r2r�r�r�r�r r�r1rlrPr�rMr�rtr�rf�clearrgr�r�rAr�r�r�r�s      r�test_subprocess_interactivez0SubprocessTestsMixin.test_subprocess_interactivecs9���w�|�|�B�G�O�O�H�5�5�y�A�A���)�+�+�!�)�*>��	�J�J����.�.���	�4�4�W�=�=�
������e�%9�:�:�:��	�$�$�U�_�5�5�5�����e�k�2�2�2��)�)�!�,�,��
���J�����	�$�$�U�^�A�%6�%;�%;�%=�%=�>�>�>�
��q����!�!�!�����U�Z��]�3�3�3�
���M�"�"�"��	�$�$�U�^�A�%6�%;�%;�%=�%=�>�>�>����-�u�z�!�}�=�=�=�
�
&�
(�
(�	�	��L�L�N�N�N�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��	�$�$�U�_�5�5�5����%�*�+�+�+�+�+s�H:�:H>�H>c�>�|j�tjt|j��d��}|j�|��\}}|�|t��|j�|j��|�d���	��|j�|j
��|�d|j��|�
td�|j���D������|�|jd�d��d��|�|jdd��|�	��dS)	Nzecho Pythonrc3�>K�|]}|���V��dSr)rQ)r�r�s  r�	<genexpr>z=SubprocessTestsMixin.test_subprocess_shell.<locals>.<genexpr>�s*����I�I��A�F�F�H�H�I�I�I�I�I�Irr�s
sPythonr�r)r2�subprocess_shellr�r�r�r1rlrPr�rAr�r�r�r��allr��valuesrg�rstrip�r7r�r�r�s    r�test_subprocess_shellz*SubprocessTestsMixin.test_subprocess_shell~sY���)�,�,�!�)�*>��	�J�J�%�'�'���	�4�4�W�=�=�
������e�%9�:�:�:��	�$�$�U�_�5�5�5��!�!�!�$�$�*�*�,�,�,��	�$�$�U�_�5�5�5�����E�,�-�-�-�����I�I�e�.?�.F�.F�.H�.H�I�I�I�I�I�J�J�J������A��-�-�g�6�6�	�B�B�B������A���,�,�,��������rc��|j�tjt|j��dddd���}|j�|��\}}|�|t��|j�|j��|�d|j	��|�
��dS)N�exit 7�r��stdout�stderr��r2r�r�r�r�r1rlr�r�r�rAr�s    r�test_subprocess_exitcodez-SubprocessTestsMixin.test_subprocess_exitcode�s����)�,�,�!�)�*>��	�J�J� ��T�$�-�H�H���	�4�4�W�=�=�
������e�%9�:�:�:��	�$�$�U�_�5�5�5�����E�,�-�-�-��������rc��|j�tjt|j��dddd���}|j�|��\}}|�|t��|�|�d����|�|�d����|�|�d����|j�|j	��|�
d|j��|�|�����dS)Nr�r�rr�r�r�)
r2r�r�r�r�r1rlr~r�r�r�r�rAr�s    r�"test_subprocess_close_after_finishz7SubprocessTestsMixin.test_subprocess_close_after_finish�s'���)�,�,�!�)�*>��	�J�J� ��T�$�-�H�H���	�4�4�W�=�=�
������e�%9�:�:�:����&�3�3�A�6�6�7�7�7����&�3�3�A�6�6�7�7�7����&�3�3�A�6�6�7�7�7��	�$�$�U�_�5�5�5�����E�,�-�-�-����&�,�,�.�.�)�)�)�)�)rc��tj�tj�t��d��}|j�tjt|j��tj|��}|j�|��\}}|�
|t��|j�|j��|���|j�|j��|�|j��|���dS�Nr�)rUrJrr�r�r2r�r�r�r�r r�r1rlrPrVr�r�r�rA�r7r�r�r�r�s     r�test_subprocess_killz)SubprocessTestsMixin.test_subprocess_kill�s����w�|�|�B�G�O�O�H�5�5�y�A�A���)�+�+�!�)�*>��	�J�J����.�.���	�4�4�W�=�=�
������e�%9�:�:�:��	�$�$�U�_�5�5�5����
�
�
��	�$�$�U�_�5�5�5����%�*�+�+�+��������rc��tj�tj�t��d��}|j�tjt|j��tj|��}|j�|��\}}|�
|t��|j�|j��|���|j�|j��|�|j��|���dSr�)rUrJrr�r�r2r�r�r�r�r r�r1rlrP�	terminater�r�r�rAr�s     r�test_subprocess_terminatez.SubprocessTestsMixin.test_subprocess_terminate�s����w�|�|�B�G�O�O�H�5�5�y�A�A���)�+�+�!�)�*>��	�J�J����.�.���	�4�4�W�=�=�
������e�%9�:�:�:��	�$�$�U�_�5�5�5��������	�$�$�U�_�5�5�5����e�.�/�/�/��������rrzDon't have SIGHUPc��tjtjtj��}	tj�tj�t��d��}|j�	tjt|j��tj|��}|j�|��\}}|�|t��|j�|j��|�tj��|j�|j��|�tj|j��|���tjtj|��dS#tjtj|��wxYwr�)rR�SIGHUP�SIG_DFLrUrJrr�r�r2r�r�r�r�r r�r1rlrP�send_signalr�r�r�rA)r7�old_handlerr�r�r�r�s      r�test_subprocess_send_signalz0SubprocessTestsMixin.test_subprocess_send_signal�sH��
�m�F�M�6�>�B�B��	6��7�<�<������ 9� 9�9�E�E�D��i�/�/�%�-�.B�D�I�N�N��N�D�2�2�G�
!�I�8�8��A�A�M�F�E��!�!�%�)=�>�>�>��I�(�(���9�9�9����v�}�-�-�-��I�(�(���9�9�9����f�m�^�U�-=�>�>�>��L�L�N�N�N��M�&�-��5�5�5�5�5��F�M�&�-��5�5�5�5���s�EF � !Gc�n�tj�tj�t��d��}|j�tjt|j��tj|��}|j�|��\}}|�
|t��|j�|j��|�d��}|�d��|j�|j��|���|�d|jd��|�|jd�d��|jd��|�d|j��dS)N�echo2.pyr�test�OUT:testr�r�sERR:test)rUrJrr�r�r2r�r�r�r�r r�r1rlrPr�rtr�rAr�rgr�r"r�r�s      r�test_subprocess_stderrz+SubprocessTestsMixin.test_subprocess_stderr�sS���w�|�|�B�G�O�O�H�5�5�z�B�B���)�+�+�!�)�*>��	�J�J����.�.���	�4�4�W�=�=�
������e�%9�:�:�:��	�$�$�U�_�5�5�5��)�)�!�,�,��
���G�����	�$�$�U�_�5�5�5�����������e�j��m�4�4�4�����
�1�
�0�0��=�=�u�z�!�}�M�M�M�����E�,�-�-�-�-�-rc�&�tj�tj�t��d��}|j�tjt|j��tj|tj
���}|j�|��\}}|�|t��|j�|j��|�d��}|�|�d����|�|�d����|�d��|j�|j��|�|jd�d��|jd��|�d|jd��|���|�d|j��dS)	Nr�)r�rr�r�r�sOUT:testERR:testr)rUrJrr�r�r2r�r�r�r�r r��
subprocess�STDOUTr1rlrPr�rpr~rtr�r�rgr"r�rAr�r�s      r�)test_subprocess_stderr_redirect_to_stdoutz>SubprocessTestsMixin.test_subprocess_stderr_redirect_to_stdout�s����w�|�|�B�G�O�O�H�5�5�z�B�B���)�+�+�!�)�*>��	�J�J����Z�5F�,�H�H��
�	�4�4�W�=�=�
������e�%9�:�:�:��	�$�$�U�_�5�5�5��)�)�!�,�,�����V�6�6�q�9�9�:�:�:����&�3�3�A�6�6�7�7�7�
���G�����	�$�$�U�_�5�5�5�����
�1�
�0�0�1D�E�E��
�1�
�	'�	'�	'�����e�j��m�,�,�,�����������E�,�-�-�-�-�-rc��tj�tj�t��d��}|j�tjt|j��tj|��}|j�|��\}}|�
|t��|j�|j��|�d��}|�d��}|�d��|j�|jd�����|�d|jd��|���|j�|jd��|�d��|j�|jd�����tjdkr"|�d	|jd��n!|�d
|jd��t1j��5|���ddd��n#1swxYwY|j�|j��|�|j��dS)Nzecho3.pyrr�r�r�r:r�rsERR:BrokenPipeErrorsERR:OSError)rUrJrr�r�r2r�r�r�r�r r�r1rlrPr�rtr�rfr�rgrAr�r!r�r�r�r�r�)r7r�r�r�r�r�r�s       r�#test_subprocess_close_client_streamz8SubprocessTestsMixin.test_subprocess_close_client_streamst���w�|�|�B�G�O�O�H�5�5�z�B�B���)�+�+�!�)�*>��	�J�J����.�.���	�4�4�W�=�=�
������e�%9�:�:�:��	�$�$�U�_�5�5�5��)�)�!�,�,���*�*�1�-�-��
���G�����	�$�$�U�^�A�%6�%;�%;�%=�%=�>�>�>�����e�j��m�4�4�4��������	�$�$�U�%6�q�%9�:�:�:�
���F�����	�$�$�U�^�A�%6�%;�%;�%=�%=�>�>�>��<�7�"�"����3�U�Z��]�C�C�C�C�
���^�U�Z��]�;�;�;�
�
&�
(�
(�	�	��L�L�N�N�N�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��	�$�$�U�_�5�5�5����%�*�+�+�+�+�+s�J�J�Jc��|j�tjt|j��ddddd���}|j�|��\}}|�|t��|j�|j��|�d|j	��|�
��dS)Nr�T)r�r�r��start_new_sessionr�r�r�s    r�"test_subprocess_wait_no_same_groupz7SubprocessTestsMixin.test_subprocess_wait_no_same_group0s����)�,�,�!�)�*>��	�J�J� ��T�$�*.�-�0�0���	�4�4�W�=�=�
������e�%9�:�:�:��	�$�$�U�_�5�5�5�����E�,�-�-�-��������rc����fd�}��t��5�j�|d�����ddd��n#1swxYwY��t��5�j�|d�����ddd��n#1swxYwY��t��5�j�|d�����ddd��dS#1swxYwYdS)Nc��T�K��jjtjdfi|���d{V��dS�N�pwd)r2r�r�SubprocessProtocol)rr7s �rr�zGSubprocessTestsMixin.test_subprocess_exec_invalid_args.<locals>.connect=s^�����+�$�)�+��*�������
�
�
�
�
�
�
�
�
rT��universal_newlines���bufsize��shell�r�rQr2r1�r7r�s` r�!test_subprocess_exec_invalid_argsz6SubprocessTestsMixin.test_subprocess_exec_invalid_args<s����	�	�	�	�	�
�
�
�z�
*�
*�	K�	K��I�(�(���D�)I�)I�)I�J�J�J�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K�
�
�
�z�
*�
*�	@�	@��I�(�(����)>�)>�)>�?�?�?�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@����	@�	@�	@�	@�
�
�
�z�
*�
*�	>�	>��I�(�(���t�)<�)<�)<�=�=�=�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�	>�	>s5�%A�A�A�7%B(�(B,�/B,�
%C?�?D�Dc����d
�fd�	}��t��5�j�|ddg����ddd��n#1swxYwY��t��5�j�|d�����ddd��n#1swxYwY��t��5�j�|d�����ddd��n#1swxYwY��t��5�j�|d�	����ddd��dS#1swxYwYdS)Nc��\�K�|sd}�jjtj|fi|���d{V��dSr�)r2r�rr�)�cmdrr7s  �rr�zHSubprocessTestsMixin.test_subprocess_shell_invalid_args.<locals>.connectKsk������
���,�$�)�,��*�������
�
�
�
�
�
�
�
�
r�lsz-lTr�r�r�Fr�rr�r�s` r�"test_subprocess_shell_invalid_argsz7SubprocessTestsMixin.test_subprocess_shell_invalid_argsIs����	�	�	�	�	�	��
�
�z�
*�
*�	@�	@��I�(�(���$���)>�)>�?�?�?�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@����	@�	@�	@�	@�
�
�
�z�
*�
*�	K�	K��I�(�(���D�)I�)I�)I�J�J�J�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K�
�
�
�z�
*�
*�	@�	@��I�(�(����)>�)>�)>�?�?�?�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@����	@�	@�	@�	@�
�
�
�z�
*�
*�	?�	?��I�(�(���u�)=�)=�)=�>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?sG�&A�A�A�9%B*�*B.�1B.�%D�D�D�%%E�E�EN)rDrErFr�r�r�r�r�r�r�r�r�r�r�r r!r�r�r�r�r�r�r�rrrr�r�>s)������:�:�:�:�:�:�>�>�>�*,�,�,�6��� 	�	�	�*�*�*���� ��� �X�_�S�\�W�,�.A�B�B�6�6�C�B�6�0.�.�.�*.�.�.�2 ,� ,� ,�D
�
�
�>�>�>�?�?�?�?�?rr�rc��eZdZd�ZdS)�SelectEventLoopTestsc�(�tj��Sr)r�SelectorEventLoopr@s rr�z&SelectEventLoopTests.create_event_loopa����,�.�.�.rN�rDrErFr�rrrr�r�^s#������	/�	/�	/�	/�	/rr�c�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�ProactorEventLoopTestsc�(�tj��Sr)r�ProactorEventLoopr@s rr�z(ProactorEventLoopTests.create_event_loophr�rc�*�tjd����Nz(IocpEventLoop does not have add_reader()�r��SkipTestr@s rr<z+ProactorEventLoopTests.test_reader_callbackk����#�$N�O�O�Orc�*�tjd���r�r�r@s r�test_reader_callback_cancelz2ProactorEventLoopTests.test_reader_callback_cancelnr�rc�*�tjd����Nz(IocpEventLoop does not have add_writer()r�r@s rrCz+ProactorEventLoopTests.test_writer_callbackqr�rc�*�tjd���r�r�r@s r�test_writer_callback_cancelz2ProactorEventLoopTests.test_writer_callback_canceltr�rc�*�tjd���r�r�r@s rrrz4ProactorEventLoopTests.test_remove_fds_after_closingwr�rN)	rDrErFr�r<r�rCr�rrrrrr�r�ds������	/�	/�	/�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	P�	Prr�c�(��eZdZ�fd�Z�fd�Z�xZS)�UnixEventLoopTestsMixinc����t�����tj��}|�|j��tj|��dSr)rsr�r�SafeChildWatcher�attach_loopr2�set_child_watcher�r7�watcherrus  �rr�zUnixEventLoopTestsMixin.setUp}sO����G�G�M�M�O�O�O��.�0�0�G�����	�*�*�*��%�g�.�.�.�.�.rc�p��tjd��t�����dSr)rrrsr�r�s �rr�z UnixEventLoopTestsMixin.tearDown�s0����%�d�+�+�+��G�G�������r)rDrErFr�r�rwrxs@rrr|sQ�������	/�	/�	/�	/�	/�	�	�	�	�	�	�	�	�	rr�KqueueSelectorc����eZdZd�Zejdd��ejej	�
d��d���fd�����Zejdd���fd���Z�xZ
S)�KqueueEventLoopTestsc�L�tjtj����Sr)rr��	selectorsrr@s rr�z&KqueueEventLoopTests.create_event_loop�s#���0��,�.�.�0�0�0rr�	�openbsdztest hangs on OpenBSDc�H��t�����dSr)rsr$r�s �rr$z)KqueueEventLoopTests.test_read_pty_output�s!������,�,�.�.�.�.�.rc�H��t�����dSr)rsrDr�s �rrDz#KqueueEventLoopTests.test_write_pty�s������&�&�(�(�(�(�(r)rDrErFr�rr�r�r�r r!r"r$rDrwrxs@rr
r
�s��������
0�
0�
0�&�W�
%�b�!�
,�
,��X�_�S�\�4�4�Y�?�?�4�6�6�
/�
/�
/�
/�6�6�-�
,�

/�
&�W�
%�b�!�
,�
,�
)�
)�
)�
)�-�
,�
)�
)�
)�
)�
)rr
�
EpollSelectorc��eZdZd�ZdS)�EPollEventLoopTestsc�L�tjtj����Sr)rr�rrr@s rr�z%EPollEventLoopTests.create_event_loop�s���0��1H�1J�1J�K�K�KrNr�rrrrr�s(������
L�
L�
L�
L�
Lrr�PollSelectorc��eZdZd�ZdS)�PollEventLoopTestsc�L�tjtj����Sr)rr�rrr@s rr�z$PollEventLoopTests.create_event_loop�s���0��1G�1I�1I�J�J�JrNr�rrrrr�s(������
K�
K�
K�
K�
Krrc��eZdZd�ZdS)r�c�L�tjtj����Sr)rr�r�SelectSelectorr@s rr�z&SelectEventLoopTests.create_event_loop�s���,�Y�-E�-G�-G�H�H�HrNr�rrrr�r��s(������	I�	I�	I�	I�	Irc��dSrr)rr�s  r�noopr�s���Drc���eZdZ�fd�Zd�Zd�Zd�Zd�Zd�Zd�Z	e
jee
jd��d	��d
���Z�xZS)�HandleTestsc���t�����tj��|_d|jj_dSr)rsr�rr(r2�	get_debug�return_valuer�s �rr�zHandleTests.setUp�s4���
���
�
�����I�K�K��	�+/��	��(�(�(rc�v�d�}d}tj|||j��}|�|j|��|�|j|��|�|�����|���|�	|�����dS)Nc��|Srr�rs rr�z)HandleTests.test_handle.<locals>.callback�����Krr)
r�Handler2ro�	_callback�_argsr rZrr�)r7r�r�hs    r�test_handlezHandleTests.test_handle�s���	�	�	����N�8�T�4�9�5�5���
�
�a�k�8�,�,�,��
�
�a�g�t�$�$�$���������'�'�'�	���
�
�
�������
�
�&�&�&�&�&rc�^�d�}tj��|_tj��|j_t	j|d|j��}|���|jj�tj	d��tj
||jd���dS)Nc��t���r)rQrrrr�z:HandleTests.test_callback_with_exception.<locals>.callback�s���,�,�rrzException in callback.*)r�r��handle�source_traceback)rr(r2rwrr'�_run�assert_called_withr��MockPattern�ANY�_source_traceback)r7r�r*s   r�test_callback_with_exceptionz(HandleTests.test_callback_with_exception�s���	�	�	��I�K�K��	�+/�9�;�;��	�(��N�8�R���3�3��	�������	�(�;�;�!�-�.G�H�H���� !� 3�	=
�=
�	�	�	�	�	rc�n�tj��}tjd�d|j��}||d<dS)Nc��dSrrrrrr1z1HandleTests.test_handle_weakref.<locals>.<lambda>�s��4�rrr*)�weakref�WeakValueDictionaryrr'r2)r7�wdr*s   r�test_handle_weakrefzHandleTests.test_handle_weakref�s4��
�
(�
*�
*���N�<�<��T�Y�7�7����3���rc�$�d|jj_tjt
d|j��}t
jt
��\}}|�t|��d|�d|�d���|�
��|�t|��d��tjt
��}tj|d|j��}|�t|��d|�d|�d���tjt
d	d
��}tj|d|j��}dtj|���d|�d
�}|�t|��|��tjt
d	���}tj|d|j��}dtj|���d|�d
�}|�t|��|��t$j}tj|��}t
j|��\}}tj|d|j��}d}d|�d�}d|�dtj|���d|�d
�}|�t|��|��dS)NFr��<Handle noop(1, 2) at �:�>z<Handle cancelled>rz<Handle noop() at r�r�)r�z^<Handle noop\(1, 2\)\(3\) at z>$)�x)r�r�z ^<Handle noop\(x=1\)\(2, 3\) at z*<function HandleTests.test_handle_repr .*>zfunctools.partialmethod\(z
, , \)\(\)z	^<Handle z at )r2r!r"rr'rr��get_function_sourcer�rr�types�	coroutiner�r��re�escape�assertRegexr�test_handle_repr�
partialmethod)r7r*�filename�linenor��regex�method�cb_regexs        rrGzHandleTests.test_handle_repr�ss��+0��	��(�
�N�4����3�3��%�9�$�?�?���&�����a����#�8�8�V�V�V�-�	.�	.�	.�
	
���
�
�
�����a���,�	.�	.�	.��_�T�
"�
"���N�2�r�4�9�-�-������a����#�8�8�V�V�V�-�	.�	.�	.�
�
�t�Q��
*�
*���N�2�t�T�Y�/�/����I�h�'�'�'�'����1������a���%�(�(�(��
�t�q�
)�
)�
)���N�2�v�t�y�1�1����I�h�'�'�'�'����1������a���%�(�(�(��-��
�
$�V�
,�
,��%�9�&�A�A���&��N�2�r�4�9�-�-��@��D��D�D�D��K�X�K�K�2�9�X�+>�+>�K�K��K�K�K������a���%�(�(�(�(�(rc�T�d|jj_t}t	j��jdz}tjtd|j��}tjt��\}}|�t|��d|�d|�d|�d|�d�	��|���|�t|��d|�d|�d|�d|�d�	��|���|�t|��d|�d|�d|�d|�d�	��dS)	NTr�r�r=r>� created at r?z <Handle cancelled noop(1, 2) at )r2r!r"r�r �	_getframe�f_linenorr'rr�rAr�rr�r7�create_filename�
create_linenor*rIrJs      r�test_handle_repr_debugz"HandleTests.test_handle_repr_debug	sK��+/��	��(�#���
���0�1�4�
��N�4����3�3��%�9�$�?�?���&�����a����#�8�8�V�V�V�_�_�_�m�m�m�M�	N�	N�	N�
	
���
�
�
������G�G�G��x�x�������-�-�-�
A�	B�	B�	B�	
���
�
�
������G�G�G��x�x�������-�-�-�
A�	B�	B�	B�	B�	Brc����tj�����}|�d����|���fd�}|�t��}||��|�t��}||��|�dt��}||��|�dt��}||��dS)NTc����tjd��jdz
}��|jt
����|jddd�t|df��dS)Nr�rLr��test_handle_source_traceback)r rPrQrlr4�listr�r�)r*rJr7s  �r�check_source_tracebackzHHandleTests.test_handle_source_traceback.<locals>.check_source_traceback6	sv����]�1�%�%�.��2�F��!�!�!�"5�t�<�<�<����Q�0��4�R�a�R�8�&�$�<�>�
?�
?�
?�
?�
?rr)	r�get_event_loop_policyr/�	set_debugr0r�rr�r�)r7r2rZr*s`   rrXz(HandleTests.test_handle_source_traceback1	s�����,�.�.�=�=�?�?�����t�������D�!�!�!�	?�	?�	?�	?�	?�
�N�N�4� � ����q�!�!�!�
�%�%�d�+�+����q�!�!�!�
�O�O�A�t�$�$����q�!�!�!�
�O�O�A�t�$�$����q�!�!�!�!�!r�	CoroutinezNo collections.abc.Coroutinec��t��}d|_|�tj|����|�t
j|��d��d|_|�t
j|��d��d|_	|�t
j|��d��dx|_|_|�t
j|��d��t��}d|_|�t
j|��d	��t��}d|_d|_
|�t
j|��d��dS)
N�AAAzAAA()�BBBzBBB()Tz
BBB() runningz%<CoroLike without __name__>() runningr5z
CoroLike())r5rDr�r�iscoroutiner�r�_format_coroutinerF�
cr_running�cr_code)r7rs  r�+test_coroutine_like_object_debug_formattingz7HandleTests.test_coroutine_like_object_debug_formattingN	sR���z�z����
�����+�D�1�1�2�2�2�����5�d�;�;�W�E�E�E�!�������5�d�;�;�W�E�E�E��������5�d�;�;�_�M�M�M�,0�0��
��)�����5�d�;�;�@�	B�	B�	B��z�z��&���	
����5�d�;�;�\�J�J�J��z�z��!����������5�d�;�;�W�E�E�E�E�Er)rDrErFr�r+r5r;rGrUrXr�r�r��collections�abcrerwrxs@rrr�s��������0�0�0�0�0�
'�'�'����"���
-)�-)�-)�^B�B�B�4"�"�"�:�X������+�>�>�7�9�9�F�F�9�9�F�F�F�F�Frrc�B��eZdZ�fd�Zd�Zd�Zd�Zd�Zd�Zd�Z	�xZ
S)�
TimerTestsc�x��t�����tj��|_dSr)rsr�rr(r2r�s �rr�zTimerTests.setUpr	s%���
���
�
�����I�K�K��	�	�	rc���tj��}tj|d�dt	j����}|�t|��t|����dS)Nc��dSrrrrrr1z&TimerTests.test_hash.<locals>.<lambda>x	���e�rr)r��	monotonicr�TimerHandlerr(r��hash�r7�whenr*s   r�	test_hashzTimerTests.test_hashv	sZ���~�������m�m�R� $�	���
-�
-������a���$�t�*�*�-�-�-�-�-rc���tj��}tj|d�dt	j����}|�||�����dS)Nc��dSrrrrrr1z&TimerTests.test_when.<locals>.<lambda>~	rmrr)r�rnrrorr(r�rrrqs   r�	test_whenzTimerTests.test_when|	sV���~�������m�m�R� $�	���
-�
-������q�v�v�x�x�(�(�(�(�(rc��d�}d}tj��}tj|||t	j����}|�|j|��|�|j|��|�	|�
����|���|�|�
����|�
|j��|�
|j��dS)Nc��|Srrr%s rr�z'TimerTests.test_timer.<locals>.callback�	r&r)r�r�r�)r�rnrrorr(ror(r)r rZrr�r~)r7r�rrrr*s     r�
test_timerzTimerTests.test_timer�	s���	�	�	����~�������h��d�i�k�k�B�B���
�
�a�k�8�,�,�,��
�
�a�g�t�$�$�$���������'�'�'�	
���
�
�
�������
�
�&�&�&����!�+�&�&�&����!�'�"�"�"�"�"rc�V�d|jj_tjdt
d|j��}t
jt
��}|�t|��d|z��|�
��|�t|��d��dS)NF�{rz&<TimerHandle when=123 noop() at %s:%s>z <TimerHandle cancelled when=123>)r2r!r"rrorr�rAr�rr)r7r*�srcs   r�test_timer_reprzTimerTests.test_timer_repr�	s���+0��	��(�
���T�2�t�y�9�9���,�T�2�2������a���@�3�F�	H�	H�	H�	
���
�
�
�����a���:�	<�	<�	<�	<�	<rc���d|jj_t}t	j��jdz}tjdtd|j��}tjt��\}}|�t|��d|�d|�d|�d|�d�	��|���|�t|��d	|�d|�d|�d|�d�	��dS)
NTr�r{rz <TimerHandle when=123 noop() at r>rOr?z*<TimerHandle cancelled when=123 noop() at )r2r!r"r�r rPrQrrorr�rAr�rrrRs      r�test_timer_repr_debugz TimerTests.test_timer_repr_debug�	s���+/��	��(�#���
���0�1�4�
����T�2�t�y�9�9��%�9�$�?�?���&�����a����$�8�8�V�V�V�_�_�_�m�m�m�M�	N�	N�	N�	
���
�
�
�����a����$�8�8�V�V�V�_�_�_�m�m�m�M�	N�	N�	N�	N�	Nrc��
�d�}tj��}tj||d|j��}tj||d|j��}|�||k��|�||k��|�||k��|�||k��|�||k��|�||k��|�||k��|�||k��|�||k��|�||k��|���|�||k��tj||d|j��}tj|dz|d|j��}|�||k��|�||k��|�||k��|�||k��|�||k��|�||k��|�||k��|�||k��|�||k��|�||k��tj|d|j��}|�	t|�|����|�	t|�|����|�
t��5|dkddd��n#1swxYwY|�
t��5|dkddd��n#1swxYwY|�
t��5|dkddd��n#1swxYwY|�
t��5|dkddd��n#1swxYwY|�|dk��|�|dk��|�|tk��|�|tk��|�|t k��|�|t k��|�|t k��|�|t k��|�|t"k��|�|t"k��|�|t"k��|�|t"k��dS)Nc��|Srrr%s rr�z2TimerTests.test_timer_comparison.<locals>.callback�	r&rrg$@)r�rnrror2r r�rr'ro�NotImplemented�__eq__�__ne__r�rNrrr)r7r�rr�h1�h2�h3s      r�test_timer_comparisonz TimerTests.test_timer_comparison�	s���	�	�	��~����
�
 ��x��T�Y�
?�
?��
�
 ��x��T�Y�
?�
?������b��!�!�!�����b��!�!�!�����b��!�!�!�����b��!�!�!�����b��!�!�!�����b��!�!�!�����b��!�!�!�����b��!�!�!�����b��!�!�!�����r��"�"�"�
�	�	��������r��"�"�"�
�
 ��x��T�Y�
?�
?��
�
 ����h��D�I�
F�
F������R�� � � �����b��!�!�!�����b��!�!�!�����r��"�"�"�����b��!�!�!�����R�� � � �����r��"�"�"�����b��!�!�!�����r��"�"�"�����b��!�!�!�
�^�H�b�$�)�
4�
4���
�
�n�b�i�i��m�m�4�4�4��
�
�n�b�i�i��m�m�4�4�4�
�
�
�y�
)�
)�	�	���G�G�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	���G�G�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	��"�H�H�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	�	��"�H�H�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����r��"�"�"�����b��!�!�!�����i��(�(�(�����y��)�)�)�����W��%�%�%�����g��&�&�&�����g�
�&�&�&�����w��'�'�'�����h��'�'�'�����X�
�&�&�&�����x��(�(�(�����h��'�'�'�'�'sH�<M�M�M�4N�N�N�,N?�?O�O�$O7�7O;�>O;)rDrErFr�rsrvryr}rr�rwrxs@rririp	s�������� � � � � �.�.�.�)�)�)�#�#�#�$<�<�<�N�N�N�*<(�<(�<(�<(�<(�<(�<(rric��eZdZd�Zd�ZdS)�AbstractEventLoopTestsc��tj��}tj��}|�t
|j��|�t
|jd��|�t
|j��|�t
|j	��|�t
|j
��|�t
|j��|�t
|jd��|�t
|j
dd��|�t
|j||��|�t
|jd��|�t
|j��|�t
|jd��|�t
|j|��|�t
|jd|��|�t
|jd��|�t
|jd|��|�t
|jd��|�t
|jd|��|�t
|jd��|�t
|jd��|�t
|j|��|�t
|j|��|�t
|j|��|�t
|j��|�t
|j|��dSrG)rr(r�AbstractEventLoopr��NotImplementedErrorr�r1r�r�r�rArr�r�r�r�r��set_default_executorr9r)r@rArOrP�set_exception_handler�default_exception_handlerrwr!r\)r7r�r2s   r�test_not_implementedz+AbstractEventLoopTests.test_not_implemented�	s���I�K�K���(�*�*�������!1�	3�	3�	3������!8�$�	@�	@�	@�������	,�	,�	,�������	2�	2�	2�������	1�	1�	1�������	-�	-�	-������!1�4�	9�	9�	9�������$��	>�	>�	>�������q�!�	5�	5�	5��������	7�	7�	7�������	,�	,�	,������!:�D�	B�	B�	B������!:�A�	?�	?�	?�������!�Q�	8�	8�	8������!3�Q�	8�	8�	8�������!�Q�	8�	8�	8������!3�Q�	8�	8�	8������!8�!�Q�	@�	@�	@������!;�Q�	@�	@�	@������!;�Q�	@�	@�	@������!;�Q�	@�	@�	@������!?��	D�	D�	D������!<�a�	A�	A�	A�������	1�	1�	1��������	4�	4�	4�	4�	4rc����fd�}tj��}|�|����|���dS)Nc��
�K�tj��}tj��}��t
��5|�||���d{V��ddd��n#1swxYwY��t
��5|�dd���d{V��ddd��n#1swxYwY��t
��5|�d���d{V��ddd��n#1swxYwY��t
��5|�	|���d{V��ddd��n#1swxYwY��t
��5|�
|���d{V��ddd��n#1swxYwY��t
��5|�|���d{V��ddd��n#1swxYwY��t
��5|�|d���d{V��ddd��n#1swxYwY��t
��5|�
|d���d{V��ddd��n#1swxYwY��t
��5|�|d���d{V��ddd��n#1swxYwY��t
��5|�||���d{V��ddd��n#1swxYwY��t
��5|�|���d{V��ddd��n#1swxYwY��t
��5|�||���d{V��ddd��n#1swxYwY��t
��5|�||���d{V��ddd��n#1swxYwY��t
��5|�|tjj���d{V��ddd��n#1swxYwY��t
��5|�|tjj���d{V��ddd��n#1swxYwY��t
��5|�|tj���d{V��ddd��n#1swxYwY��t
��5|�|���d{V��ddd��dS#1swxYwYdS)Nr��)r�r�r)rr(rr�r�r�rr�r�rr�r�r5�sock_recv_into�sock_sendall�sock_connect�sock_accept�
sock_sendfile�sendfiler��sentinelrrr�r�)r�r2r7s  �r�innerz@AbstractEventLoopTests.test_not_implemented_async.<locals>.inner0
s
������	���A��,�.�.�D��"�"�#6�7�7�
1�
1��*�*�1�a�0�0�0�0�0�0�0�0�0�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1����
1�
1�
1�
1��"�"�#6�7�7�
:�
:��&�&�{�D�9�9�9�9�9�9�9�9�9�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:�
:����
:�
:�
:�
:��"�"�#6�7�7�
<�
<��&�&�':�;�;�;�;�;�;�;�;�;�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<����
<�
<�
<�
<��"�"�#6�7�7�
0�
0��,�,�Q�/�/�/�/�/�/�/�/�/�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0����
0�
0�
0�
0��"�"�#6�7�7�
,�
,��(�(��+�+�+�+�+�+�+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,��"�"�#6�7�7�
7�
7��3�3�A�6�6�6�6�6�6�6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7��"�"�#6�7�7�
,�
,��n�n�Q��+�+�+�+�+�+�+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,��"�"�#6�7�7�
1�
1��)�)�!�R�0�0�0�0�0�0�0�0�0�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1����
1�
1�
1�
1��"�"�#6�7�7�
/�
/��'�'��2�.�.�.�.�.�.�.�.�.�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/����
/�
/�
/�
/��"�"�#6�7�7�
.�
.��'�'��1�-�-�-�-�-�-�-�-�-�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.����
.�
.�
.�
.��"�"�#6�7�7�
*�
*��&�&�q�)�)�)�)�)�)�)�)�)�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*����
*�
*�
*�
*��"�"�#6�7�7�
/�
/��(�(��A�.�.�.�.�.�.�.�.�.�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/����
/�
/�
/�
/��"�"�#6�7�7�
*�
*��m�m�A�q�)�)�)�)�)�)�)�)�)�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*����
*�
*�
*�
*��"�"�#6�7�7�
D�
D��,�,�Q��
�0B�C�C�C�C�C�C�C�C�C�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D����
D�
D�
D�
D��"�"�#6�7�7�
E�
E��-�-�a���1C�D�D�D�D�D�D�D�D�D�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E�
E����
E�
E�
E�
E��"�"�#6�7�7�
>�
>��+�+�A�t�}�=�=�=�=�=�=�=�=�=�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>����
>�
>�
>�
>��"�"�#6�7�7�
.�
.��*�*�1�-�-�-�-�-�-�-�-�-�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.�
.����
.�
.�
.�
.�
.�
.s2�A-�-A1�4A1�B;�;B?�B?� D�D�D�-E�E�E�:F"�"F&�)F&�G/�/G3�6G3�H=�=I�I�"J�J�J�0K�K� K�>L'�'L+�.L+�M4�4M8�;M8�O�O�	O�'P�P�P�5,Q-�-Q1�4Q1�,S
�
S�S�/'T"�"T&�)T&�U0�0U4�7U4)rr/r1rA)r7r�r2s`  r�test_not_implemented_asyncz1AbstractEventLoopTests.test_not_implemented_async.
sX���%	.�%	.�%	.�%	.�%	.�N�%�'�'���������(�(�(��
�
�����rN)rDrErFr�r�rrrr�r��	s3������44�44�44�l+�+�+�+�+rr�c�p�eZdZd�Zd�Zd�Zd�Zejd��d���Z	d�Z
d�Zd	�Zd
�Z
dS)�PolicyTestsc��tj��}|�t|j��|�t|jt
����|�t|j��|�t|j��|�t|j	t
����dSr)
r�AbstractEventLoopPolicyr�r��get_event_loopr0r}r/�get_child_watcherr�r7�policys  r�test_event_loop_policyz"PolicyTests.test_event_loop_policy^
s����0�2�2�����-�v�/D�E�E�E����-�v�/D�f�h�h�O�O�O����-�v�/D�E�E�E����-�v�/G�H�H�H����-�v�/G� �(�(�	$�	$�	$�	$�	$rc��tj��}|�|jj��|���}|�|tj��|�|jj|��|�||�����|�	��dSr)
r�DefaultEventLoopPolicyr~�_local�_loopr�rlr�rorA�r7r�r2s   r�test_get_event_loopzPolicyTests.test_get_event_loopg
s����/�1�1�����&�-�-�.�.�.��$�$�&�&�����d�G�$=�>�>�>��
�
�f�m�)�4�0�0�0��
�
�d�F�1�1�3�3�4�4�4��
�
�����rc�X�tj��}tj�|d|j���5}|���}|�|j��|�	|��ddd��n#1swxYwY|���dS)Nr0)�wraps)
rr�rr�r}r0r�rrAr1)r7r��m_set_event_loopr2s    r�(test_get_event_loop_calls_set_event_loopz4PolicyTests.test_get_event_loop_calls_set_event_loopq
s����/�1�1��
�Z�
�
��(��+��-�-�
	6�0@��(�(�*�*�D��O�O�D�J�'�'�'�

�/�/��5�5�5�
	6�
	6�
	6�
	6�
	6�
	6�
	6�
	6�
	6�
	6�
	6����
	6�
	6�
	6�
	6�	
�
�
�����s�AB�B�Bc��tj��}|�d��|�t|j��dSr)rr�r0r�r�r�r�s  r�"test_get_event_loop_after_set_nonez.PolicyTests.test_get_event_loop_after_set_none�
sC���/�1�1�����d�#�#�#����,��(=�>�>�>�>�>rz'asyncio.events.threading.current_threadc����fd�}tj|���}|���|���dS)Nc�n��tj��}��t|j��dSr)rr�r�r�r�)r�r7s �rr�z1PolicyTests.test_get_event_loop_thread.<locals>.f�
s0����3�5�5�F����l�F�,A�B�B�B�B�Brr�)rrrr)r7�m_current_threadr��ths`   r�test_get_event_loop_threadz&PolicyTests.test_get_event_loop_thread�
sT���	C�	C�	C�	C�	C��
�Q�
'�
'�
'��
���
�
�
�
���	�	�	�	�	rc��tj��}|���}|�|tj��|���dSr)rr�r/rlr�rAr�s   r�test_new_event_loopzPolicyTests.test_new_event_loop�
sK���/�1�1���$�$�&�&�����d�G�$=�>�>�>��
�
�����rc��tj��}|���}|�|��|�t
|jt
����|���}|�|��|�||�����|�	||�����|�
��|�
��dSr)rr�r/r0r�rNr}ror��assertIsNotrA)r7r��old_loopr2s    r�test_set_event_loopzPolicyTests.test_set_event_loop�
s����/�1�1���(�(�*�*�����h�'�'�'����)�V�%:�F�H�H�E�E�E��$�$�&�&�����d�#�#�#��
�
�d�F�1�1�3�3�4�4�4�����6�#8�#8�#:�#:�;�;�;��
�
�����������rc��tj��}|�|tj��|�|tj����dSr)rr[rlr�ror�s  r�test_get_event_loop_policyz&PolicyTests.test_get_event_loop_policy�
sL���.�0�0�����f�g�&E�F�F�F��
�
�f�g�;�=�=�>�>�>�>�>rc�X�|�ttjt	����tj��}tj��}tj|��|�|tj����|�||��dSr)	r�rNrrr}r[r�ror�)r7�
old_policyr�s   r�test_set_event_loop_policyz&PolicyTests.test_set_event_loop_policy�
s�������w�4�f�h�h�	@�	@�	@��2�4�4�
��/�1�1���%�f�-�-�-��
�
�f�g�;�=�=�>�>�>������,�,�,�,�,rN)rDrErFr�r�r�r�rr�r�r�r�r�r�rrrr�r�\
s�������$�$�$�������"?�?�?�
�T�Z�9�:�:���;�:��������?�?�?�
	-�	-�	-�	-�	-rr�c�`��eZdZdZdZdZdZ�fd�Z�fd�Ze	j
dkrd�Zd�Zd�Z
�xZS)�GetEventLoopTestsMixinNc���tj|_tj|_tj|_tj|_t|��j
t_t|��jt_t|��jt_t|��j
t_t|��j
t_t|��jt_t|��jt_t|��j
t_t�����tj��|_tj|j��t(jdkrCtj��}|�|j��tj|��dSdSr�)r�_get_running_loop�_get_running_loop_saved�_set_running_loop�_set_running_loop_saved�get_running_loop�get_running_loop_savedr��get_event_loop_savedr��_get_running_loop_impl�_set_running_loop_impl�get_running_loop_impl�get_event_loop_implrrsr�r/r2r0r r!rrrrs  �rr�zGetEventLoopTestsMixin.setUp�
s;���'-�'?��$�'-�'?��$�&,�&=��#�$*�$9��!�#'��:�:�#D�� �#'��:�:�#D�� �"&�t�*�*�"B��� $�T�
�
� >���$(��J�J�$E��!�$(��J�J�$E��!�#'��:�:�#C�� �!%�d���!?���
���
�
�����*�,�,��	���t�y�)�)�)��<�7�"�"��.�0�0�G�����	�*�*�*��%�g�.�.�.�.�.�#�"rc�p��	tjdkrtjd��t	�����|j���tjd��|j	t_|jt_
|jt_|jt_|j	t_|jt_
|jt_|jt_dS#|j���tjd��|j	t_|jt_
|jt_|jt_|j	t_|jt_
|jt_|jt_wxYwr�)r r!rrrsr�r2rAr0r�rr�r�r�r�r�r�r�r�s �rr�zGetEventLoopTestsMixin.tearDown�
sG���	?��|�w�&�&��)�$�/�/�/��G�G�������I�O�O�����"�4�(�(�(�'+�'C�F�$�'+�'C�F�$�&*�&A�F�#�$(�$=�F�!�(,�(D�G�%�(,�(D�G�%�'+�'B�G�$�%)�%>�G�"�"�"��
�I�O�O�����"�4�(�(�(�'+�'C�F�$�'+�'C�F�$�&*�&A�F�#�$(�$=�F�!�(,�(D�G�%�(,�(D�G�%�'+�'B�G�$�%)�%>�G�"�>�>�>�>s
�AC>�>B7F5rc����tj����t���fd�}���j�|����d��dS)Nc���K�tj���}�j�|t
���d{V��}|���|Sr)�
concurrent�futures�ProcessPoolExecutorr2rr3�shutdown)�poolr�r7s  �rr\zDGetEventLoopTestsMixin.test_get_event_loop_new_process.<locals>.main�
sp�����!�)�=�=�?�?��#�y�8�8��D� F� F�F�F�F�F�F�F���
�
�����
rr-)r�*skip_if_broken_multiprocessing_synchronizer�multiprocessing_cleanup_testsr�r2r1)r7r\s` r�test_get_event_loop_new_processz6GetEventLoopTestsMixin.test_get_event_loop_new_process�
s����
�>�@�@�@��O�O�9�:�:�:�
�
�
�
�
�
����	�,�,�T�T�V�V�4�4��
�
�
�
�
rc�����Gd�dt���G�fd�dtj��}tj��}	tj|����tj��������5tj��ddd��n#1swxYwYtjd�������5tj��ddd��n#1swxYwY��	td��5tj��ddd��n#1swxYwY��tj
��d����fd�}��|����tj��������5tj��ddd��n#1swxYwYtjd�������5tj��ddd��n#1swxYwYtj|��������n0#tj|��������wwxYw��	td��5tj��ddd��n#1swxYwY��tj
��d��dS)Nc��eZdZdS)�RGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.TestErrorN)rDrErFrrr�	TestErrorr�s�������Drr�c���eZdZ�fd�ZdS)�OGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.Policyc�����rr)r7r�s �rr�z^GetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.Policy.get_event_loops����rN)rDrErFr�)r�s�r�Policyr�s.�������
 �
 �
 �
 �
 �
 �
 rr��
no runningc���K���tj�������tj�������tj�����dSr�rorr�r�r�rxs��rr�zMGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.func�d������
�
�g�4�6�6��=�=�=��
�
�g�6�8�8�$�?�?�?��
�
�g�7�9�9�4�@�@�@�@�@r)r�rr�r[rr/r�r�r0rr�r�ror�r1rA)r7r�r�r�r�r2s`   @@r�(test_get_event_loop_returns_running_loopz?GetEventLoopTestsMixin.test_get_event_loop_returns_running_loops������	�	�	�	�	�	�	�	�	�	 �	 �	 �	 �	 �	 �	 �W�3�	 �	 �	 ��2�4�4�
�	��)�&�&�(�(�3�3�3��)�+�+�D��"�"�9�-�-�
)�
)��&�(�(�(�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)����
)�
)�
)�
)��"�4�(�(�(��"�"�9�-�-�
)�
)��&�(�(�(�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)����
)�
)�
)�
)��'�'��l�C�C�
+�
+��(�*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��M�M�'�3�5�5�t�<�<�<�
A�
A�
A�
A�
A�
A�

�#�#�D�D�F�F�+�+�+��"�4�(�(�(��"�"�9�-�-�
)�
)��&�(�(�(�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)����
)�
)�
)�
)��"�4�(�(�(��"�"�9�-�-�
)�
)��&�(�(�(�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)����
)�
)�
)�
)�
�)�*�5�5�5����
�
������
�)�*�5�5�5����
�
����� �����
#�
#�L�,�
?�
?�	'�	'��$�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	
�
�
�g�/�1�1�4�8�8�8�8�8s��AI+�	B)�I+�)B-�-I+�0B-�1,I+�C=�1I+�=D�I+�D�I+�#E�7I+�E�I+�
E�A6I+�G!�I+�!G%�%I+�(G%�),I+�H5�)I+�5H9�9I+�<H9�=I+�+-J�6K�K�Kc����tj��}	tjtj����tj������j��tj��}��|j��tjd����	td��5tj��ddd��n#1swxYwY��	td��5tj��ddd��n#1swxYwY��tj
��d����fd�}��|����tj�����tj�����tjd����	td��5tj��ddd��n#1swxYwYtj|��������n0#tj|��������wwxYw��	td��5tj��ddd��n#1swxYwY��tj
��d��dS)Nz
no currentr�c���K���tj�������tj�������tj�����dSrr�rxs��rr�zNGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop2.<locals>.funcBr�r)rr[rr�r/rrAr�r0rr�r�ror�r1)r7r��loop2r�r2s`   @r�)test_get_event_loop_returns_running_loop2z@GetEventLoopTestsMixin.test_get_event_loop_returns_running_loop21s������2�4�4�
� 	��)�'�*H�*J�*J�K�K�K��)�+�+�D��O�O�D�J�'�'�'��*�,�,�E��O�O�E�K�(�(�(��"�4�(�(�(��'�'��l�C�C�
)�
)��&�(�(�(�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)����
)�
)�
)�
)��'�'��l�C�C�
+�
+��(�*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��M�M�'�3�5�5�t�<�<�<�
A�
A�
A�
A�
A�
A�

�#�#�D�D�F�F�+�+�+��"�4�(�(�(��M�M�'�0�2�2�D�9�9�9��"�4�(�(�(��'�'��l�C�C�
)�
)��&�(�(�(�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)����
)�
)�
)�
)�
�)�*�5�5�5����
�
������
�)�*�5�5�5����
�
����� �����
#�
#�L�,�
?�
?�	'�	'��$�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	
�
�
�g�/�1�1�4�8�8�8�8�8s��B.I�C%�I�%C)�)I�,C)�-I�D+�I�+D/�/I�2D/�3B7I�*H
�>I�
H�I�H�I�-I-�J+�+J/�2J/)rDrErFr�r�r�r�r�r�r r!r�r�r�rwrxs@rr�r��
s��������!��!�� ����/�/�/�/�/�4?�?�?�?�?�(�|�w���	�	�	�&-9�-9�-9�^'9�'9�'9�'9�'9�'9�'9rr�c�F�eZdZejZejZejZ	ej
ZdS)�TestPyGetEventLoopN)rDrErFr�_py__get_running_loopr��_py__set_running_loopr��_py_get_running_loopr��_py_get_event_loopr�rrrr�r�[s4������#�9��#�9��"�7�� �3���rr�c�F�eZdZejZejZejZ	ej
ZdS)�TestCGetEventLoopN)rDrErFr�_c__get_running_loopr��_c__set_running_loopr��_c_get_running_loopr��_c_get_event_loopr�rrrr�r�is4������!'�!<��!'�!<�� &� :��$�6���rr�c��eZdZd�ZdS)�
TestServerc���tj��}|�|j��t	|���|�|��fd�dd����}|�|���|��|���|�|�	����dS)Nc����Srrr�s�rr1z*TestServer.test_get_loop.<locals>.<lambda>ws���E�rr9r)
rr/rrArqr1r�r��get_loop�wait_closed)r7r2r/r�s   @r�
test_get_loopzTestServer.test_get_loopss�����%�'�'������
�#�#�#���
�
���(�(��);�);�M�M�M�M�9�VW�)X�)X�Y�Y��������*�*�D�1�1�1����������� 2� 2� 4� 4�5�5�5�5�5rN)rDrErFr�rrrr�r�qs#������6�6�6�6�6rr�c� �eZdZd�Zd�Zd�ZdS)�TestAbstractServerc��|�t��5tj�����ddd��dS#1swxYwYdSr)r�r�r�AbstractServerrAr@s rr�zTestAbstractServer.test_closes���
�
�
�2�
3�
3�	,�	,��!�#�#�)�)�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,��&A�A�Ac�6�tj��}|�|j��|�t
��5|�tj���	����ddd��dS#1swxYwYdSr)
rr/rrAr�r�r1rrr�rRs  r�test_wait_closedz#TestAbstractServer.test_wait_closed�s����%�'�'������
�#�#�#�
�
�
�2�
3�
3�	K�	K��#�#�F�$9�$;�$;�$G�$G�$I�$I�J�J�J�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K�	K�	Ks�9B�B�Bc��|�t��5tj�����ddd��dS#1swxYwYdSr)r�r�rrr�r@s rr�z TestAbstractServer.test_get_loop�s���
�
�
�2�
3�
3�	/�	/��!�#�#�,�,�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/rN)rDrErFr�rr�rrrrr}sD������,�,�,�K�K�K�/�/�/�/�/rr�__main__)Q�__doc__�collections.abcrf�concurrent.futuresr�r�rrUr!rDrRr5r��ImportErrorr�r rr�rBr�r�rr8rOrrrrr	�multiprocessing.utilr
r��test.test_asynciorr�r}r�test.supportr
rrrrrr)r3r5rnrHrqr�rzr��BaseProtocolr�r�r�r�r��TestCaser�r�rrr�r
rrrrrir�r�r�r��_asyncior�r�rrDr\rrr�<module>rs�����������������	�	�	�	�	�	�	�	�����	�	�	�	�
�
�
�
�
�
�
�
���J�J�J�J������
�C�C�C���������
�
�
�
��������������������������������<�+�+�+��J�J�J�����������������#�#�#�#�#�#�#�#�#�#�#�#�P�P�P�P�P�P�1�1�1�1�1�1�������&�&�&�&�&�&�)�)�)�)�)�)�5�5�5�5�5�5�5�5�5�5�(�(�(����+�+�+�
�
�
�
�
�
�
�
�#'�#'�#'�#'�#'�'�"�#'�#'�#'�LH�H�H�H�H�k�H�H�H�'�'�'�'�'�g�.�'�'�'�@!'�!'�!'�!'�!'�g�&�!'�!'�!'�H'�'�'�'�'�w�+�'�'�'�2*:�*:�*:�*:�*:�7�5�*:�*:�*:�Zu�u�u�u�u�u�u�u�p1[?�[?�[?�[?�[?�[?�[?�[?�|�<�7���/�/�/�/�/�2�)�2�/�/�/�P�P�P�P�P�!4�!5�!+�!4�P�P�P�P�,����	�	�	�	�	�"5�	�	�	��w�y�*�+�+�)�	)�	)�	)�	)�	)�#:�#7�#-�#6�	)�	)�	)�0�w�y�/�*�*�L�	L�	L�	L�	L�	L�"9�"6�",�"5�	L�	L�	L��w�y�.�)�)�K�	K�	K�	K�	K�	K�!8�!5�!+�!4�	K�	K�	K�I�I�I�I�I�6�3�)�2�I�I�I�	�	�	�oF�oF�oF�oF�oF�*�%�oF�oF�oF�dC(�C(�C(�C(�C(��"�C(�C(�C(�Lc�c�c�c�c�X�.�c�c�c�LY-�Y-�Y-�Y-�Y-�(�#�Y-�Y-�Y-�x`9�`9�`9�`9�`9�`9�`9�`9�F4�4�4�4�4�/��1B�4�4�4�7��O�O�O�
7�7�7�7�7�2�H�4E�7�7�7�7��	�	�	�	��D�	����	6�	6�	6�	6�	6��"�	6�	6�	6�/�/�/�/�/��*�/�/�/�$�z����H�M�O�O�O�O�O��s�-�7�7�>J�J�J