HEX
Server: Microsoft-IIS/10.0
System: Windows NT ITPWINWEBSVR22 10.0 build 20348 (Windows Server 2022) AMD64
User: www.conferencesearch.co.uk (0)
PHP: 8.3.30
Disabled: NONE
Upload Files
File: D:/Python311/Lib/test/test_asyncio/__pycache__/test_events.cpython-311.opt-1.pyc
�

��Vc�����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%m&Z&m'Z'd�Z(d�Z)d�Z*Gd�d��Z+Gd�dej,��Z-Gd�de-��Z.Gd�dej/��Z0Gd�dej,��Z1Gd�dej2��Z3Gd�dej4��Z5Gd�d ��Z6Gd!�d"��Z7ejd#kr*Gd$�d%e6ej8��Z9Gd&�d'e6e7ej8��Z:n�ddl;Z;Gd(�d)e6��Z<e=e;d*��rGd+�d,e<e7ej8��Z>e=e;d-��rGd.�d/e<e7ej8��Z?e=e;d0��rGd1�d2e<e7ej8��Z@Gd3�d%e<e7ej8��Z9d4�ZAGd5�d6ej8��ZBGd7�d8ej8��ZCGd9�d:ej8��ZDGd;�d<ej8��ZEGd=�d>��ZFGd?�d@eFej8��ZG	ddlHZHGdA�dBeFej8��ZIn#e
$rYnwxYwGdC�dDej8��ZJGdE�dFej8��ZKeLdGkrejM��dSdS)HzTests for events.py.�N)�mock)�win32�vxworks)�
coroutines)�events)�proactor_events)�selector_events)�utils)�support)�
socket_helper)�threading_helper)�	ALWAYS_EQ�LARGEST�SMALLESTc�.�tjd��dS�N)�asyncio�set_event_loop_policy���1D:\Python311\Lib\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(-st��
�|���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>.doit9s�����wr)r�new_event_loop�set_event_loop�run_until_complete)r-�loops  r�*_test_get_event_loop_new_process__sub_procr28sL������!�#�#�D���4� � � ��"�"�4�4�6�6�*�*�*rc�&�eZdZd�Zd�Zd�Zd�ZdS)�CoroLikec��dSrr)�self�vs  r�sendz
CoroLike.sendB����rc��dSrr�r6�excs  r�throwzCoroLike.throwEr9rc��dSrr�r6s r�closezCoroLike.closeHr9rc��dSrrr?s r�	__await__zCoroLike.__await__Kr9rN)�__name__�
__module__�__qualname__r8r=r@rBrrrr4r4AsP������
�
�
�
�
�
�
�
�
�
�
�
�
�
rr4c�<�eZdZdZdZdd�Zd�Zd�Zd�Zd�Z	d�Z
dS)	�MyBaseProtoNc��d|_d|_d|_|�4|���|_|���|_dSdS�N�INITIALr)�	transport�state�nbytes�
create_future�	connected�done�r6r1s  r�__init__zMyBaseProto.__init__SsS�������
�����	-�!�/�/�1�1�D�N��*�*�,�,�D�I�I�I�	-�	-rc�L�|j|vrtd|j�d|�����dS�Nzstate: z, expected: �rL�AssertionError�r6�expecteds  r�
_assert_statezMyBaseProto._assert_state[s?���:�X�%�	S� �!Q�4�:�!Q�!Q�X�!Q�!Q�R�R�R�	S�	Src��||_|�d��d|_|jr|j�d��dSdS�NrJ�	CONNECTED�rKrYrLrO�
set_result�r6rKs  r�connection_madezMyBaseProto.connection_made_sT��"������9�%�%�%� ��
��>�	,��N�%�%�d�+�+�+�+�+�	,�	,rc�j�|�d��|xjt|��z
c_dS�Nr\�rYrM�len�r6�datas  r�
data_receivedzMyBaseProto.data_receivedfs0�����;�'�'�'����s�4�y�y� ����rc�>�|�d��d|_dS)Nr\�EOF)rYrLr?s r�eof_receivedzMyBaseProto.eof_receivedjs!�����;�'�'�'���
�
�
rc��|�dd��d|_|jr|j�d��dSdS)Nr\ri�CLOSED�rYrLrPr^r;s  r�connection_lostzMyBaseProto.connection_lostnsO�����;��.�.�.���
��9�	'��I� � ��&�&�&�&�&�	'�	'rr)rCrDrErOrPrRrYr`rgrjrnrrrrGrGOs��������I��D�-�-�-�-�S�S�S�,�,�,�!�!�!����'�'�'�'�'rrGc���eZdZ�fd�Z�xZS)�MyProtoc�t��t���|��|�d��dS)Ns%GET / HTTP/1.0
Host: example.com

)�superr`�write)r6rK�	__class__s  �rr`zMyProto.connection_madevs4���
�����	�*�*�*����F�G�G�G�G�Gr�rCrDrEr`�
__classcell__�rts@rrprpusA�������H�H�H�H�H�H�H�H�Hrrpc�8�eZdZdZdd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�MyDatagramProtoNc�\�d|_d|_|�|���|_dSdSrI)rLrMrNrPrQs  rrRzMyDatagramProto.__init__~s9����
�����	-��*�*�,�,�D�I�I�I�	-�	-rc�P�|j|krtd|j�d|�����dSrTrUrWs  rrYzMyDatagramProto._assert_state��?���:��!�	S� �!Q�4�:�!Q�!Q�X�!Q�!Q�R�R�R�	S�	Src�L�||_|�d��d|_dS)NrJ�INITIALIZED�rKrYrLr_s  rr`zMyDatagramProto.connection_made�s(��"������9�%�%�%�"��
�
�
rc�j�|�d��|xjt|��z
c_dS�Nr~rc)r6rf�addrs   r�datagram_receivedz!MyDatagramProto.datagram_received�s0�����=�)�)�)����s�4�y�y� ����rc�0�|�d��dSr�)rYr;s  r�error_receivedzMyDatagramProto.error_received�s�����=�)�)�)�)�)rc��|�d��d|_|jr|j�d��dSdS)Nr~rlrmr;s  rrnzMyDatagramProto.connection_lost�sM�����=�)�)�)���
��9�	'��I� � ��&�&�&�&�&�	'�	'rr)
rCrDrErPrRrYr`r�r�rnrrrryry{s{�������D�-�-�-�-�S�S�S�#�#�#�
!�!�!�*�*�*�'�'�'�'�'rryc�8�eZdZdZdd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�MyReadPipeProtoNc�l�dg|_d|_d|_|�|���|_dSdSrI)rLrMrKrNrPrQs  rrRzMyReadPipeProto.__init__�sB���[��
��������	-��*�*�,�,�D�I�I�I�	-�	-rc�P�|j|krtd|j�d|�����dSrTrUrWs  rrYzMyReadPipeProto._assert_state�r|rc�t�||_|�dg��|j�d��dSr[)rKrYrL�appendr_s  rr`zMyReadPipeProto.connection_made�s;��"������I�;�'�'�'��
���+�&�&�&�&�&rc�n�|�ddg��|xjt|��z
c_dSr[rcres  rrgzMyReadPipeProto.data_received�s5�����I�{�3�4�4�4����s�4�y�y� ����rc�h�|�ddg��|j�d��dS)NrJr\ri)rYrLr�r?s rrjzMyReadPipeProto.eof_received�s7�����I�{�3�4�4�4��
���%� � � � � rc���d|jvr|j�d��|�gd���|j�d��|jr|j�d��dSdS)Nri)rJr\rirl)rLr�rYrPr^r;s  rrnzMyReadPipeProto.connection_lost�s�����
�"�	%��J���e�$�$�$����:�:�:�;�;�;��
���(�#�#�#��9�	'��I� � ��&�&�&�&�&�	'�	'rr)
rCrDrErPrRrYr`rgrjrnrrrr�r��s{�������D�-�-�-�-�S�S�S�'�'�'�
!�!�!�!�!�!�'�'�'�'�'rr�c�,�eZdZdZdd�Zd�Zd�Zd�ZdS)�MyWritePipeProtoNc�\�d|_d|_|�|���|_dSdS)NrJ)rLrKrNrPrQs  rrRzMyWritePipeProto.__init__�s9����
�����	-��*�*�,�,�D�I�I�I�	-�	-rc�P�|j|krtd|j�d|�����dSrTrUrWs  rrYzMyWritePipeProto._assert_state�r|rc�L�||_|�d��d|_dSr[rr_s  rr`z MyWritePipeProto.connection_made�s(��"������9�%�%�%� ��
�
�
rc��|�d��d|_|jr|j�d��dSdS�Nr\rlrmr;s  rrnz MyWritePipeProto.connection_lost�sM�����;�'�'�'���
��9�	'��I� � ��&�&�&�&�&�	'�	'rr)rCrDrErPrRrYr`rnrrrr�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)NrJc�:��i|]}|������Sr)rN)�.0�fdr1s  �r�
<dictcomp>z1MySubprocessProtocol.__init__.<locals>.<dictcomp>�s'���H�H�H��B�� 2� 2� 4� 4�H�H�Hr�r���)rLrKrNrO�	completed�range�disconnectsrf�
returncoder�Event�got_datarQs `rrRzMySubprocessProtocol.__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|�����dSrTrUrWs  rrYz"MySubprocessProtocol._assert_state�r|rc��||_|�d��d|_|j�d��dSr[r]r_s  rr`z$MySubprocessProtocol.connection_made�s@��"������9�%�%�%� ��
���!�!�$�'�'�'�'�'rc�r�|�d��d|_|j�d��dSr�)rYrLr�r^r;s  rrnz$MySubprocessProtocol.connection_lost�s9�����;�'�'�'���
���!�!�$�'�'�'�'�'rc��|�d��|j|xx|z
cc<|j|���dSrb)rYrfr��set)r6r�rfs   r�pipe_data_receivedz'MySubprocessProtocol.pipe_data_received�sM�����;�'�'�'��	�"�
�
�
���
�
�
��
�b��������rc��|�d��|r"|j|�|��dS|j|�|��dSrb)rYr��
set_exceptionr^)r6r�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���|_dSrb)rYrK�get_returncoder�r?s r�process_exitedz#MySubprocessProtocol.process_exiteds/�����;�'�'�'��.�7�7�9�9����rN)
rCrDrErRrYr`rnr�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#d#�Z$d]d$�Z%eje dud��d%���Z&d&�Z'e(j)d'��d(���Z*d)�Z+d*�Z,d+�Z-ejee.d,��d-��d.���Z/d/�Z0ejd0���Z1ejee.d1��d2��d3���Z2d^d4�Z3d^d5�Z4d^d6�Z5eje dud��d7���Z6ejeje dud��d8�����Z7eje dud��d9���Z8ejeje dud��d:�����Z9eje dud��d;���Z:ejeje dud��d<�����Z;eje dud��d=���Z<d>�Z=d?�Z>ejej?d@��dA���Z@dB�ZAdC�ZBdD�ZCejej?d@��dE���ZDdF�ZEdG�ZFejeGjHdHkdI��dJ���ZIejeGjHdHkdI��dK���ZJejeGjHdHkdI��ejeeKdL��dM��dN�����ZLejeGjHdHkdI��dO���ZMejeGjHdHkdI��dP���ZNejeGjHdHkdI��ejeeKdL��dM��eOjPdQdR��dS�������ZQejeGjHdHkdI��ejeeKdL��dM��eOjPdQdR��dT�������ZRdU�ZSdV�ZTdW�ZUdX�ZVdY�ZWdZ�ZX�xZYS)_�EventLoopTestsMixinc���t�����|���|_|�|j��dSr)rr�setUp�create_event_loopr1r/�r6rts �rr�zEventLoopTestsMixin.setUpsC���
���
�
�����*�*�,�,��	����D�I�&�&�&�&�&rc���|j���stj|j��|���tj��t�����dSr)	r1�	is_closed�
test_utils�run_briefly�
doCleanupsr�
gc_collectrr�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)�
assertTruer1�
is_runningr0)r�r6s��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�RuntimeErrorr1r0)r6r�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��|j���}|j�tjd����|j���}|�d||z
cxkodknc||z
��dS)N皙�����?g{�G�z�?g�������?)r1�timer0rr�r�)r6�t0�t1s   r�test_run_until_completez+EventLoopTestsMixin.test_run_until_complete's���
�Y�^�^�
�
���	�$�$�W�]�3�%7�%7�8�8�8�
�Y�^�^�
�
�������2��,�,�,�,��,�,�,�,�b��e�4�4�4�4�4rc�r���fd�}|��}��t�jj|��dS)Nc��r�K��j���tjd���d{V��dS)Nr�)r1�stoprr�r?s�r�cbz?EventLoopTestsMixin.test_run_until_complete_stopped.<locals>.cb/sA������I�N�N�����-��$�$�$�$�$�$�$�$�$�$�$r)r�r�r1r0)r6r��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�r1r���arg�resultsr6s ��r�callbackz5EventLoopTestsMixin.test_call_later.<locals>.callback9s-����N�N�3�����I�N�N�����rr�zhello world)r1�
call_later�run_forever�assertEqual�r6r�r�s` @r�test_call_laterz#EventLoopTestsMixin.test_call_later6su������	�	�	�	�	�	�	
�	���S�(�M�:�:�:��	����������=�/�2�2�2�2�2rc����g���fd�}�j�|dd���j������dg��dS)Nc�h����||f���j���dSrr�)�arg1�arg2r�r6s  ��rr�z4EventLoopTestsMixin.test_call_soon.<locals>.callbackDs1����N�N�D�$�<�(�(�(��I�N�N�����rr,�world)r,r�)r1�	call_soonr�r�r�s` @r�test_call_soonz"EventLoopTestsMixin.test_call_soonAsw������	�	�	�	�	�	�	
�	���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�rdr1r�r�s ��rr�z?EventLoopTestsMixin.test_call_soon_threadsafe.<locals>.callbackP�J����N�N�3�����7�|�|�q� �
!��	��� � � � � �
!�
!rc�f���j��d������dSr+)r1�call_soon_threadsafe�release)r��lockr6s���r�
run_in_threadzDEventLoopTestsMixin.test_call_soon_threadsafe.<locals>.run_in_threadUs,����I�*�*�8�W�=�=�=��L�L�N�N�N�N�Nr��targetr�r,)
�	threading�Lock�acquire�Thread�startr1r�r��joinr�)r6r��tr�r�r�s`  @@@r�test_call_soon_threadsafez-EventLoopTestsMixin.test_call_soon_threadsafeLs?���������~����	!�	!�	!�	!�	!�	!�
	�	�	�	�	�	�	�	
��������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>.callbackfr�rr,r�)r1r�r�r�r�r�s` @r�%test_call_soon_threadsafe_same_threadz9EventLoopTestsMixin.test_call_soon_threadsafe_same_threadcs�������	!�	!�	!�	!�	!�	!�
	
�	�&�&�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>.runqs����,�.�.�/�/r�yo)r1�run_in_executorr0r��assertNotEqualr�r)r6r�f2�res�	thread_ids     r�test_run_in_executorz(EventLoopTestsMixin.test_run_in_executorps~��	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>.runs���J�t�����rg�������?)r1r
�cancelr0�shutdown_default_executorr@r�r�r�r��assertFalse)r6rrrrs    @r�test_run_in_executor_cancelz/EventLoopTestsMixin.test_run_in_executor_cancelxs������	�	�	�	�	�	�	�	��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�r1�
remove_reader�filenor@)rf�
bytes_read�rr6s ���r�readerz8EventLoopTestsMixin.test_reader_callback.<locals>.reader�s����
��v�v�d�|�|����"�
�
�
����
�����
��!�!�$�'�'�'�'�'�����	� 7� 7����
�
� C� C�D�D�D����	�	�	�	�	s��
'�'sabcc�*��t���dkS)Nr��rd�r$s�r�<lambda>z:EventLoopTestsMixin.test_reader_callback.<locals>.<lambda>������J���1�0D�rsdefc�*��t���dkS)N�r(r)s�rr*z:EventLoopTestsMixin.test_reader_callback.<locals>.<lambda>�r+rsabcdef)�socket�
socketpair�setblocking�	bytearrayr1�
add_readerr#r�r8r��	run_untilr@r�r�r�)r6�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)r8r1r�)rfr6r4s ��r�writerz8EventLoopTestsMixin.test_writer_callback.<locals>.writer�s*���
�F�F�4�L�L�L��I�N�N�����rsxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr�)r.r/r0r1�
add_writerr#r�r��
remove_writerrr@rrdr�)r6r%r8rf�readr4s`    @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����SrrrAs�rr*z=EventLoopTestsMixin.test_add_signal_handler.<locals>.<lambda>�s����r)r��	TypeErrorr1�add_signal_handler�remove_signal_handler�
ValueError�signal�NSIGr�r=r�SIGINT�os�kill�getpidr�r3r�r��	getsignal�default_int_handler�r6rCrBs  @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���dSr@)r1r�)rBr6s��rrCzLEventLoopTestsMixin.test_signal_handling_while_selecting.<locals>.my_handler�s$����a�K�F��I�N�N�����r�{�G�z�?�<r��
r1rHrKrUrV�ITIMER_REALr�r�r�r�rSs` @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���dSr@)r�r1r�)rrBr6�	some_argss ���rrCzAEventLoopTestsMixin.test_signal_handling_args.<locals>.my_handlers:����a�K�F����T�9�-�-�-��I�N�N�����rr�rZr�r[)r6rCrBras` @@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)r1r0�assertIsInstancer�	Transport�Protocol�assertIsrK�assertIsNotNone�get_extra_inforP�
assertGreaterrMr@)r6�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�r1�rpr1r?s�rr*z<EventLoopTestsMixin.test_create_connection.<locals>.<lambda>�����T�Y�/�/�/�r)r��run_test_serverr1�create_connection�addressrp)r6�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���Srsrur?s�rr*zAEventLoopTestsMixin.test_create_unix_connection.<locals>.<lambda>(rvr)r(r��run_test_unix_serverr1�create_unix_connectionryrp)r6rmrzr{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)Nrd�peername�peercert�cipherr�rr�r��
ssl_object�compression)rirjr�rer#rd�strr%r�r��getpeercert)r6�clientrmr�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)r1r0rerrfrgr�rtrC�lowerr�rPrkrMr@)r6rlrmr�rnros      r�_basetest_create_ssl_connectionz3EventLoopTestsMixin._basetest_create_ssl_connectionKs�����-�-�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�r6s    �r�_dummy_ssl_create_contextzREventLoopTestsMixin._test_create_ssl_connection.<locals>._dummy_ssl_create_context_s/���� � ��#�+�*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)	r6rzrxrmr�r{r��m�cms	`        r�_test_create_ssl_connectionz/EventLoopTestsMixin._test_create_ssl_connectionWsm���$�$��)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���Srsrur?s�rr*z@EventLoopTestsMixin.test_create_ssl_connection.<locals>.<lambda>�rvr�r�)r�rw�	functools�partialr1rxryr�)r6rzrxs`  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���Srsrur?s�rr*zEEventLoopTestsMixin.test_create_ssl_unix_connection.<locals>.<lambda>�rvr�	127.0.0.1)�server_hostnamer�)	r(r�rr�r�r1r�ryr�)r6rmrzrxs`   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���Srsrur?s�rr*zGEventLoopTestsMixin.test_create_connection_local_addr.<locals>.<lambda>�rvr�
local_addrrrdr�)r�rwr�find_unused_portr1rxryr0rKrjr�r@)r6rz�port�frnrorXs`      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���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���Srsrur?s�rr*zNEventLoopTestsMixin.test_create_connection_local_addr_in_use.<locals>.<lambda>�rvrr�)r�rwr1rxryr��OSErrorr0r�r��errno�
EADDRINUSE�assertInr��strerror)r6rzr�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)rrrnr�r�)r6r<rtr1s  ��rrnzQEventLoopTestsMixin.test_connect_accepted_socket.<locals>.MyProto.connection_lost�s5������'�'��,�,�,����t�y�)�)�)�)�)rc�~��t���|��|j����dSr)rrrgrKrs)r6rfrt�expected_responses  ��rrgzOEventLoopTestsMixin.test_connect_accepted_socket.<locals>.MyProto.data_received�s8������%�%�d�+�+�+���$�$�%6�7�7�7�7�7r)rCrDrErnrgrv)rtr�r1s@��rrpr��s\��������
*�
*�
*�
*�
*�
*�
8�
8�
8�
8�
8�
8�
8�
8�
8�
8rrp�r�rr�)�backlogs	test datasrogerc�T��	tj��}����|��}|����|����|�d���|���dS#t$r}td|��Yd}~dSd}~wwxYw)N�cz8Failure in client thread in test_connect_accepted_socket)r.�wrap_socket�connect�sendallrr@�	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��daemonrtc����Srr��protos�rr*zBEventLoopTestsMixin.test_connect_accepted_socket.<locals>.<lambda>�s����rr�rl)r1rGr.�
create_server�getsocknamer�r�r��acceptr0�connect_accepted_socketr�rKr@r
�join_threadr�is_aliver�rLrMrd)r6�
server_sslr�rp�lsockr��thread�conn�_r�r�r1r�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�)r6�server_context�client_contexts   r� test_ssl_connect_accepted_socketz4EventLoopTestsMixin.test_ssl_connect_accepted_socket�s:��#�<�>�>��#�<�>�>���)�)�.�.�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)r.�
addCleanupr@r1r�rpr�LOOPBACK_TIMEOUT�assertRaisesRegexrJr0)r6�sock�coros   r�9test_connect_accepted_socket_ssl_timeout_for_plain_socketzMEventLoopTestsMixin.test_connect_accepted_socket_ssl_timeout_for_plain_socket�s����}��������
�#�#�#��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)Nr-�r)r.�AF_INET�SOCK_STREAM)�hostr�r�kw�familys    �r�getaddrinfozEEventLoopTestsMixin.create_server_multiple_hosts.<locals>.getaddrinfo�sR��������'�
Q���!3�Q��T�4�L�I�J�J���!3�Q��T�4��A�<N�O�P�Prc�D���j��|i|����Sr)r1�create_task)r�kwdsr�r6s  ��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)rrrrs  rrzDEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<listcomp>s.��<;�<;�<;�%)��r�1�a� �<;�<;�<;rc�,��t�j��Srrur?s�rr*zBEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<lambda>	s���G�D�I�,>�,>�rrc�B�h|]}|���d��S)r)�
getsockbyname)r�r�s  r�	<setcomp>zCEventLoopTestsMixin.create_server_multiple_hosts.<locals>.<setcomp>s)��K�K�K�D��*�*�,�,�Q�/�K�K�Kr)r�r.r�r	r�r1r�r�Mock�_start_serving�
_stop_servingr�r0r�r@�socketsr�)
r6r��hosts�	mock_sockr�unique_hostsr��server�server_hostsr�s
``       @r�create_server_multiple_hostsz0EventLoopTestsMixin.create_server_multiple_hosts�sm�����	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.8r)rr.r�r?s r�&test_create_server_multiple_hosts_ipv4z:EventLoopTestsMixin.test_create_server_multiple_hosts_ipv4s6���)�)�&�.�*K�*K�*K�	M�	M�	M�	M�	Mrc�J�|�tjgd���dS)N)�::1z::2r)rr.�AF_INET6r?s r�&test_create_server_multiple_hosts_ipv6z:EventLoopTestsMixin.test_create_server_multiple_hosts_ipv6s6���)�)�&�/�*?�*?�*?�	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�rr*z8EventLoopTestsMixin.test_create_server.<locals>.<lambda>s���E�r�0.0.0.0rr�r��xxxr\c����jdkSr��rMr�s�rr*z8EventLoopTestsMixin.test_create_server.<locals>.<lambda>&������q�0@�rr�rdr�rl)rpr1r�r0r�rdrr�r.r�r�rOrLr�r3rMrirKrjr@rP)r6r�rr�r�r�r�r�s       @r�test_create_serverz&EventLoopTestsMixin.test_create_servers������	�"�"���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�rr*zCEventLoopTestsMixin.test_create_server_reuse_port.<locals>.<lambda>?����E�rrrr�c����Srrr�s�rr*zCEventLoopTestsMixin.test_create_server_reuse_port.<locals>.<lambda>Lr'rT)�
reuse_port)rpr1r�r0r�rdrr�
getsockoptr.�
SOL_SOCKETr$r@r�r�r�)r6r�rr�r�s    @r�test_create_server_reuse_portz1EventLoopTestsMixin.test_create_server_reuse_port;s������	�"�"���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)rN�path�exists�unlink)r/s�rr*z7EventLoopTestsMixin._make_unix_server.<locals>.<lambda>Ws"�������t� 4� 4� H���4���r)r��gen_unix_socket_pathr�r1�create_unix_serverr0)r6�factory�kwargsr�rr/s     @r�_make_unix_serverz%EventLoopTestsMixin._make_unix_serverUsj����.�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)	Nrtc����Srrr�s�rr*z=EventLoopTestsMixin.test_create_unix_server.<locals>.<lambda>as���e�rr�rr\c����jdkSr�r!r�s�rr*z=EventLoopTestsMixin.test_create_unix_server.<locals>.<lambda>jr"rr�rl)rpr1r6r�rdrr.�AF_UNIXr�r�r0rOrLr�r3rMrKr@rP)r6rr/r�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�;�/�/�/�	������	�������rr:zNo UNIX Socketsc�h��t|j����tj��}|5|j��fd�d|���}|�t
d��5|j�|��ddd��n#1swxYwYddd��dS#1swxYwYdS)Nrtc����Srrr�s�rr*zOEventLoopTestsMixin.test_create_unix_server_path_socket_error.<locals>.<lambda>s���U�rz/test�r�z3path and sock can not be specified at the same time)rpr1r.r3r�rJr0)r6r�r�r�s   @r�)test_create_unix_server_path_socket_errorz=EventLoopTestsMixin.test_create_unix_server_path_socket_errorzs6����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)r6�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�)rIr1r�r0rr�r�)
r6r4rFrGrHr�rr�r�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�)rIr6)r6r4rFrGrHs     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)
Nrtc����Srrr�s�rr*z<EventLoopTestsMixin.test_create_server_ssl.<locals>.<lambda>�r'rr�rr\c����jdkSr�r!r�s�rr*z<EventLoopTestsMixin.test_create_server_ssl.<locals>.<lambda>�r"rr�r�rl)rpr1rKr��ONLYCERT�ONLYKEYrxrGr�r0rsrOr�rLr3rMr�rKr@rP)r6rr�r��f_cr�ror�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)
Nrtc����Srrr�s�rr*zAEventLoopTestsMixin.test_create_unix_server_ssl.<locals>.<lambda>�r'rr��r�r�rr\c����jdkSr�r!r�s�rr*zAEventLoopTestsMixin.test_create_unix_server_ssl.<locals>.<lambda>�r"rr�rl)rpr1rMr�rQrRr�rGr�r0rsrOr�rLr3rMrKr@rP)r6rr/rSr�ror�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)Nrtc����Srrr�s�rr*zJEventLoopTestsMixin.test_create_server_ssl_verify_failed.<locals>.<lambda>�r'r�check_hostnameTr��call_exception_handler�(?i)certificate.verify.failed)rpr1rKr��SIGNED_CERTFILEr�rA�PROTOCOL_TLS_CLIENTrCrD�
CERT_REQUIRED�verify_moder�r\rxrr��objectr�r�r�r0r��assertIsNonerKr@�r6rr�r��sslcontext_clientrSr�s      @r�$test_create_server_ssl_verify_failedz8EventLoopTestsMixin.test_create_server_ssl_verify_failed�sX����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)	Nrtc����Srrr�s�rr*zOEventLoopTestsMixin.test_create_unix_server_ssl_verify_failed.<locals>.<lambda>�r'rr\T�invalidrWr]r^)rpr1rMr�r_r�rAr`rCrDrarbr�r\r�rr�rcr�r�r�r0r�rdrKr@)r6rr/rfrSr�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)	Nrtc����Srrr�s�rr*zIEventLoopTestsMixin.test_create_server_ssl_match_failed.<locals>.<lambda>r'r�r�r\Tr�r]z=IP address mismatch, certificate is not valid for '127.0.0.1')rpr1rKr�r_r�rAr`rCrDrarb�load_verify_locations�
SIGNING_CAr�r\rxrr�rcr�r��CertificateErrorr0rdrKr@res      @r�#test_create_server_ssl_match_failedz7EventLoopTestsMixin.test_create_server_ssl_match_failedsj����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)Nrtc����Srrr�s�rr*zJEventLoopTestsMixin.test_create_unix_server_ssl_verified.<locals>.<lambda>7r'rrnr\T�	localhostrW)rpr1rMr�r_r�rAr`rCrDrarbrorpr�r\r�r0rOrKr@rP)r6rr/rfrSr�ror�s       @r�$test_create_unix_server_ssl_verifiedz8EventLoopTestsMixin.test_create_unix_server_ssl_verified2sW����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)	Nrtc����Srrr�s�rr*zEEventLoopTestsMixin.test_create_server_ssl_verified.<locals>.<lambda>Qr'rrnr\TrurW)r�r�)rpr1rKr�r_r�rAr`rCrDrarbrorpr�r\rxr0rOr��PEERCERTrKr@rP)	r6rr�r�rfrSr�ror�s	        @r�test_create_server_ssl_verifiedz3EventLoopTestsMixin.test_create_server_ssl_verifiedMs�����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�rrr`r^)r6rKrtr�s  ��rr`zPEventLoopTestsMixin.test_create_server_sock.<locals>.TestMyProto.connection_madeos5������'�'�	�2�2�2�� � ��&�&�&�&�&rru)rtr�s@�r�TestMyProtor}ns>��������
'�
'�
'�
'�
'�
'�
'�
'�
'�
'rr��rrr>rrr�r)
r1rNrpr.r�r0rr�r#r�r�r8r@)
r6r��sock_obr�rr�r�r�r�r�s
         @r�test_create_server_sockz+EventLoopTestsMixin.test_create_server_sockks<����	�'�'�)�)��	'�	'�	'�	'�	'�	'�	'�'�	'�	'�	'�
�&�~�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�r>r�r�r�)r.r�r1rpr0rr�r�r�r�r�r�r�r@)r6r�r�rr�r�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)r6rKrt�f_protos  ��rr`zVEventLoopTestsMixin.test_create_server_dual_stack.<locals>.TestMyProto.connection_made�s5������'�'�	�2�2�2��"�"�4�(�(�(�(�(rru)rtr�s@�rr�r��s>��������
)�
)�
)�
)�
)�
)�
)�
)�
)�
)rr�rTr�r�rr�rr)r1rNrprr�r�r0r�r�r��assertGreaterEqualr.r�r8rKr@r)
r6r��	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)Nrrr�r)r1r�rpr0rr�r.r�r8r@r��ConnectionRefusedError)r6r�rr�r�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���dSrs)rrrRr1)�
inner_selfrtr6s ��rrRzXEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.TestMyDatagramProto.__init__�s&������ � �d�i� �0�0�0�0�0rc���t���||��|j�d|z|��dS)Nsresp:)rrr�rK�sendto)r6rfr�rts   �rr�zaEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.TestMyDatagramProto.datagram_received�s?������)�)�$��5�5�5���%�%�h�t�m�T�:�:�:�:�:r)rCrDrErRr�rv)rtr6s@�r�TestMyDatagramProtor��sW��������
1�
1�
1�
1�
1�
1�
;�
;�
;�
;�
;�
;�
;�
;�
;rr�)r�r�rdr~c�.��t�j���Srs�ryr1r?s�rr*zDEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.<lambda>�����O���3�3�3�r)�remote_addrrc����jSrr!)rs�rr*zDEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.<lambda>��	����
�rr�c����jSrr!)r�s�rr*zDEventLoopTestsMixin._test_create_datagram_endpoint.<locals>.<lambda>�r�r�rl)ryr1�create_datagram_endpointr0rjr.�getnameinfo�NI_NUMERICHOST�NI_NUMERICSERVrerrfr�rLrhrKr�r�r3rMrir@rP)r6r�r�r�r��s_transportrdr�r�rKr�rs`         @@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�r.r�r?s r�test_create_datagram_endpointz1EventLoopTestsMixin.test_create_datagram_endpoint�s!���+�+�,<�f�n�M�M�M�M�Mrc�F�|�dtj��dS)N)rr)r�r.rr?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)r�r�r�FzCan not create socket.c�.��t�j���Srsr�r?s�rr*zHEventLoopTestsMixin.test_create_datagram_endpoint_sock.<locals>.<lambda>r�rr>)r1r0r�r.�
SOCK_DGRAMr0�bind�failr�rerrfryr@rP)r6r��
local_address�infosr�r�r��cnameryr�rnros`           r�"test_create_datagram_endpoint_sockz6EventLoopTestsMixin.test_create_datagram_endpoint_socksl�����(�
��	�,�,�!�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��|���}t|tj��s)|���|�d��|�d|j��|���|�d|j��|�|j	��|�|j
��dS)Nz#loop is not a BaseSelectorEventLoopr�r)r��
isinstancer	�BaseSelectorEventLoopr@�skipTestr��
_internal_fdsrd�_csock�_ssockrQs  r�test_internal_fdsz%EventLoopTestsMixin.test_internal_fdss����%�%�'�'���$�� 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)Nrt�rbrc��,�K��j��fd�����d{V��\}}��|�����|�j����ddg�j����d�j��dS)Nc����Srrr�s�rr*zEEventLoopTestsMixin.test_read_pipe.<locals>.connect.<locals>.<lambda>3s����rrJr\r�r1�connect_read_piperhrKr�rLrM)r�p�pipeobjr�r6s  ���rr�z3EventLoopTestsMixin.test_read_pipe.<locals>.connect1s��������4�4��
�
�
�w�(�(�(�(�(�(�(�(�D�A�q��M�M�!�U�#�#�#��M�M�!�U�_�-�-�-����i��5�u�{�C�C�C����Q���-�-�-�-�-r�1c����jdkSr@r!r�s�rr*z4EventLoopTestsMixin.test_read_pipe.<locals>.<lambda><�������0A�rr��2345c����jdkS�Nrr!r�s�rr*z4EventLoopTestsMixin.test_read_pipe.<locals>.<lambda>@r�rrJr\r�rJr\rirl�pipe)r�r1rNr��io�openr0rsr�r3r�rMrLr@rPrirKrj)r6�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)	Nrtr�rr4zutf-8)�encodingc���K����fd�����d{V��\}}���fd�����d{V��\}}||fS)Nc����Srr��
read_protos�rr*zSEventLoopTestsMixin.test_unclosed_pipe_transport.<locals>.connect.<locals>.<lambda>Ys���
�rc����Srr��write_protos�rr*zSEventLoopTestsMixin.test_unclosed_pipe_transport.<locals>.connect.<locals>.<lambda>[s����r)r��connect_write_pipe)�read_transportr��write_transportr1r��rpipeobj�wpipeobjr�s   �����rr�zAEventLoopTestsMixin.test_unclosed_pipe_transport.<locals>.connectWs������&*�&<�&<�"�"�"�"�H�'.�'.�!.�!.�!.�!.�!.�!.��N�A�'+�'>�'>�#�#�#�#�X�(/�(/�"/�"/�"/�"/�"/�"/��O�Q�!�?�2�2rr�)r�r�r�rNr�r�r�r0r@r��repr�_pipe)r6r�r�r�r�r�r1r�r�r�r�s      @@@@@r�test_unclosed_pipe_transportz0EventLoopTestsMixin.test_unclosed_pipe_transportKs@��������%�%�'�'��$�$�/�/�/�
�&�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)Nrtr�rc��,�K��j��fd�����d{V��\}}��|�����|�j����ddg�j����d�j��dS)Nc����Srrr�s�rr*zKEventLoopTestsMixin.test_read_pty_output.<locals>.connect.<locals>.<lambda>ws���U�rrJr\rr�)rr��master_read_objr�r6s  ���rr�z9EventLoopTestsMixin.test_read_pty_output.<locals>.connectvs��������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�rr*z:EventLoopTestsMixin.test_read_pty_output.<locals>.<lambda>�s	�����rr�r�c����jdkSr�r!r�s�rr*z:EventLoopTestsMixin.test_read_pty_output.<locals>.<lambda>�r�rrJr\rr�r�)r�r1rNr�r�r�r0rsr�r3r�rMrLr@rKrPrirj)r6�master�slaver�r�r�s`   @@r�test_read_pty_outputz(EventLoopTestsMixin.test_read_pty_outputms������ �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�wbrrtc����Srrr�s�rr*z5EventLoopTestsMixin.test_write_pipe.<locals>.<lambda>�����u�rr\r�c�V��tj�d��}||z
}t|��Sr�rNr;rd)rf�chunkr�s  �rr&z3EventLoopTestsMixin.test_write_pipe.<locals>.reader�s)����G�E�4�(�(�E��E�M�D��t�9�9�rc�"������dkSr@r�rfr&s��rr*z5EventLoopTestsMixin.test_write_pipe.<locals>.<lambda>�������t����0A�rr�c�"������dkSr�rr�s��rr*z5EventLoopTestsMixin.test_write_pipe.<locals>.<lambda>�r�r�12345r�rl)rNr�r�r�r�r1r�r0rhrKr�rLrsr1r�r3r@rirjrP)
r6r�r�r�rKr�rfr�r&r�s
      @@@@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�rrtc����Srrr�s�rr*zIEventLoopTestsMixin.test_write_pipe_disconnect_on_close.<locals>.<lambda>�r�rr\r�rl)r.r/r0r�r��detachr�r1r�r0rhrKr�rLrs�	sock_recvr@rP)	r6�rsock�wsockr�r�rKr�rfr�s	        @r�#test_write_pipe_disconnect_on_closez7EventLoopTestsMixin.test_write_pipe_disconnect_on_close�sb����(�*�*���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�;�/�/�/�/�/rrr-c�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�rrtc����Srrr�s�rr*z4EventLoopTestsMixin.test_write_pty.<locals>.<lambda>�r�rr\r�c�V��tj�d��}||z
}t|��Srr��rfr�r�s  �rr&z2EventLoopTestsMixin.test_write_pty.<locals>.reader��)����G�F�D�)�)�E��E�M�D��t�9�9�rc�"������dkSr@rr�s��rr*z4EventLoopTestsMixin.test_write_pty.<locals>.<lambda>�r�r��timeoutr�c�"������dkSr�rr�s��rr*z4EventLoopTestsMixin.test_write_pty.<locals>.<lambda>�r�rr�r�rl)rNr�r�r�r�r1r�r0rhrKr�rLrsr1r�r3r�
SHORT_TIMEOUTr@rirjrP)
r6r��slave_write_objr�rKr�rfr�r�r&s
      @@@@r�test_write_ptyz"EventLoopTestsMixin.test_write_pty�s(�������
���
����'�%��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�rrtc����Srrr�s�rr*z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>	s���:�rrJr\r�c����Srrr�s�rr*z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>s���[�rc�V��tj�d��}||z
}t|��Srr�rs  �rr&z:EventLoopTestsMixin.test_bidirectional_pty.<locals>.readerrrr�c�"������dkSr@rr�s��rr*z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>"r�rr	�ac����jdkSr@r!r�s�rr*z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>)����
�0A�Q�0F�rr�r�c�"������dkSr�rr�s��rr*z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>0r�rr�sbcdec����jdkSr�r!r�s�rr*z<EventLoopTestsMixin.test_bidirectional_pty.<locals>.<lambda>7rrrr�rl)rNr��dup�tty�setrawr�r�r�r1r�r0rhrKr�rLrMr�r�r1rsr�r3rrr@rP)r6�
read_slave�write_slave�slave_read_obj�read_connectr�r�r
�
write_connectr�rfr�r�r&r�s          @@@@@r�test_bidirectional_ptyz*EventLoopTestsMixin.test_bidirectional_pty�s�������� �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�v���tj��\}}|�d���j��j�|d�����t
�dd��}|���|j����fd�}tj
��}�j�|����}�j���tj
��|z
}��|d����
|���d����t j�j��|���|j���j�|��|���|���dS)NFr��ovc���K�	�j��j����d{V��d}n#tj$rd}YnwxYw�j���n#�j���wxYw|S)N�	cancelled)r1r�rr�CancelledErrorr�)r
r�r6s ��r�mainz:EventLoopTestsMixin.test_prompt_cancellation.<locals>.mainPs������
!��	�#�#�A�H�-�-�-��������������)�
"�
"�
"�!����
"����
�	��� � � � ���	��� � � � �����Js&�'/�A �A�A �A�A � A;r�r%)r.r/r0r1r�r��getattrr��pendingr��	monotonicr��
assertLessr��resultr�rr&rr
r@)	r6r%r4r#r'r�r�elapsedr�s	`       @r�test_prompt_cancellationz,EventLoopTestsMixin.test_prompt_cancellationHs������ �"�"���1�	�
�
�e�����I�!�!�$�)�"5�"5�a��";�";�<�<��
�Q��d�
#�
#��
�	(��O�O�B�J�'�'�'�
	�
	�
	�
	�
	�
	��� � ���I�!�!�$�$�&�&�)�)���	�������.�"�"�U�*�������%�%�%���������[�1�1�1����'�0�!�(�;�;�;�
�	)����R�Z�(�(�(��	����"�"�"�	���	�	�	�	���	�	�	�	�	rc�0�����fd�}�jj�d�j_|�j_�fd�}�j�|�������jjd�jj�jjjjd���dS)Nc�F���jxjdz
c_���dSr@)r1�_run_once_counter)�
orig_run_oncer6s��r�	_run_oncez<EventLoopTestsMixin.test_timeout_rounding.<locals>._run_oncels(����I�'�'�1�,�'�'��M�O�O�O�O�Orrc���K��j}tjd���d{V��tjd���d{V��tjd���d{V��tjd���d{V��tjd���d{V��dS)NrYg-C��6?g���ư>g:�0�yE>g�����|�=)r1rr��r1r6s �r�waitz7EventLoopTestsMixin.test_timeout_rounding.<locals>.waitts�������9�D��-��%�%�%�%�%�%�%�%�%��-��%�%�%�%�%�%�%�%�%��-��%�%�%�%�%�%�%�%�%��-��%�%�%�%�%�%�%�%�%��-��&�&�&�&�&�&�&�&�&�&�&r�)�clock_resolution�selector)	r1r3r1r0�assertLessEqual�_clock_resolution�	_selectorrtrC)r6r3r6r2s`  @r�test_timeout_roundingz)EventLoopTestsMixin.test_timeout_roundingks�����	�	�	�	�	�	��	�+�
�&'��	�#�'��	��	'�	'�	'�	'�	'�	
�	�$�$�T�T�V�V�,�,�,�
	
���T�Y�8�"�!%��!<���,�6�?�
A�
A�	B�	B�	B�	B�	Brc���|���}d�}tj��\}}|�|j��|�|j��|�||��|�||��|���|�|�|����|�|�	|����dS)Nc��dSrrrrrr*zCEventLoopTestsMixin.test_remove_fds_after_closing.<locals>.<lambda>����4�r)
r�r.r/r�r@r2r9rr"r:�r6r1r�r%r4s     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��dSrrrrrr*z@EventLoopTestsMixin.test_add_fds_after_closing.<locals>.<lambda>�r@r)	r�r.r/r�r@r�r�r2r9rAs     r�test_add_fds_after_closingz.EventLoopTestsMixin.test_add_fds_after_closing�sj���%�%�'�'���<��� �"�"���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)r1r@r5s �r�
close_loopzEEventLoopTestsMixin.test_close_running_event_loop.<locals>.close_loop�s������I�O�O�����r)r1r�r�r0)r6rHr�s`  r�test_close_running_event_loopz1EventLoopTestsMixin.test_close_running_event_loop�s����	�	�	�	�	��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>.test�s�����Drc��dS�NFrrrrr*z0EventLoopTestsMixin.test_close.<locals>.<lambda>�s��u�rg�?g)r1r@r�r�r�r�rNr0r�r�r��call_atr�r�rHrK�SIGTERMr
rB�next)r6rL�funcr��fut�its      r�
test_closezEventLoopTestsMixin.test_close�s���	������	�	�	��}���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)ZrCrDrEr�r�r�r�r�r�r�rrrrr5r<�unittest�
skipUnlessr�rKrTr]rbrpr|r�skip_unless_bind_unix_socketr�r�r�r��skipIfr�r�r�r�r�r�r�r�rr�rrrr#r.r,r6r;r?rIrKrMrTrYrgrkrrrvrzr�r��IPV6_ENABLEDr�r�r�r�r�r�r�rr r�r�rNr�r�rr�requires_mac_verrr!r.r=rBrErIrUrvrws@rr�r�s�	�������'�'�'�'�'�
�����
E�
E�
E�$5�5�5�>�>�>�	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�.�.�.�4
'�
'�
'��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!�!�!�FB�B�B�4
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)rr rer%r�rKrP�r6r�s  r�check_terminatedz%SubprocessTestsMixin.check_terminated��O���<�7�"�	:��!�!�*�c�2�2�2�2�2�
���f�n�_�j�9�9�9�9�9rc��tjdkr|�|t��dS|�t
j|��dSr_)rr rer%r�rKr=r`s  r�check_killedz!SubprocessTestsMixin.check_killed�rbrc���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�)rNr/r��dirname�__file__r1�subprocess_execr�r�r�r�
executabler0rerOr�rL�get_pipe_transportrsr�r6r�r�r@r�rdr�rf�r6�progr��transpr��stdins      r�test_subprocess_execz)SubprocessTestsMixin.test_subprocess_exec�s����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)Nrfr\rsPython r�s
The Winnerrg)rNr/r�rhrir1rjr�r�r�rrkr0rerOr�rLrlrsr�r6�clearrfr�r�r@r�rdr�rms      r�test_subprocess_interactivez0SubprocessTestsMixin.test_subprocess_interactive�s9���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)rP)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)r1�subprocess_shellr�r�r�r0rerOrlr@r�r�r�r��allr��valuesrf�rstrip�r6r�ror�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�rp�stdout�stderr��r1rxr�r�r�r0rer�r�r�r@r|s    r�test_subprocess_exitcodez-SubprocessTestsMixin.test_subprocess_exitcodes����)�,�,�!�)�*>��	�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)Nrr�rr�r�r�)
r1rxr�r�r�r0rerdrlr�r�r�r@r|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�Nrf)rNr/r�rhrir1rjr�r�r�rrkr0rerOrOr�rdr�r@�r6rnr�ror�s     r�test_subprocess_killz)SubprocessTestsMixin.test_subprocess_kill3s����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�)rNr/r�rhrir1rjr�r�r�rrkr0rerO�	terminater�rar�r@r�s     r�test_subprocess_terminatez.SubprocessTestsMixin.test_subprocess_terminateCs����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�)rK�SIGHUP�SIG_DFLrNr/r�rhrir1rjr�r�r�rrkr0rerO�send_signalr�r�r�r@)r6�old_handlerrnr�ror�s      r�test_subprocess_send_signalz0SubprocessTestsMixin.test_subprocess_send_signalSsH��
�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)rNr/r�rhrir1rjr�r�r�rrkr0rerOrlrsr�r@r�rfr�r!r�rms      r�test_subprocess_stderrz+SubprocessTestsMixin.test_subprocess_stderrlsS���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)rNr/r�rhrir1rjr�r�r�rrk�
subprocess�STDOUTr0rerOrlrirdrsr�r�rfr!r�r@r�rms      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�rr�rsERR:BrokenPipeErrorsERR:OSError)rNr/r�rhrir1rjr�r�r�rrkr0rerOrlrsr�r6r�rfr@r�r r�r�r�rdr�)r6rnr�ror�rpr�s       r�#test_subprocess_close_client_streamz8SubprocessTestsMixin.test_subprocess_close_client_stream�sv���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)NrT)rpr�r��start_new_sessionr�r�r|s    r�"test_subprocess_wait_no_same_groupz7SubprocessTestsMixin.test_subprocess_wait_no_same_group�s����)�,�,�!�)�*>��	�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)r1rjr�SubprocessProtocol)rr6s �rr�zGSubprocessTestsMixin.test_subprocess_exec_invalid_args.<locals>.connect�s^�����+�$�)�+��*�������
�
�
�
�
�
�
�
�
rT��universal_newlines���bufsize��shell�r�rJr1r0�r6r�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�)r1rxrr�)�cmdrr6s  �rr�zHSubprocessTestsMixin.test_subprocess_shell_invalid_args.<locals>.connect�sk������
���,�$�)�,��*�������
�
�
�
�
�
�
�
�
r�lsz-lTr�r�r�Fr�rr�r�s` r�"test_subprocess_shell_invalid_argsz7SubprocessTestsMixin.test_subprocess_shell_invalid_args�s����	�	�	�	�	�	��
�
�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)rCrDrErardrqrtr}r�r�r�r�rVrYrr 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_loop�����,�.�.�.rN�rCrDrEr�rrrr�r��s#������	/�	/�	/�	/�	/rr�c�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�ProactorEventLoopTestsc�(�tj��Sr)r�ProactorEventLoopr?s rr�z(ProactorEventLoopTests.create_event_loop�r�rc�*�tjd����Nz(IocpEventLoop does not have add_reader()�rV�SkipTestr?s rr5z+ProactorEventLoopTests.test_reader_callback�����#�$N�O�O�Orc�*�tjd���r�r�r?s r�test_reader_callback_cancelz2ProactorEventLoopTests.test_reader_callback_cancel�r�rc�*�tjd����Nz(IocpEventLoop does not have add_writer()r�r?s rr<z+ProactorEventLoopTests.test_writer_callback�r�rc�*�tjd���r�r�r?s r�test_writer_callback_cancelz2ProactorEventLoopTests.test_writer_callback_cancelr�rc�*�tjd���r�r�r?s rrBz4ProactorEventLoopTests.test_remove_fds_after_closingr�rN)	rCrDrEr�r5r�r<r�rBrrrr�r��s������	/�	/�	/�	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)rrr�r�SafeChildWatcher�attach_loopr1�set_child_watcher�r6�watcherrts  �rr�zUnixEventLoopTestsMixin.setUp	sO����G�G�M�M�O�O�O��.�0�0�G�����	�*�*�*��%�g�.�.�.�.�.rc�p��tjd��t�����dSr)rr�rrr�r�s �rr�z UnixEventLoopTestsMixin.tearDowns0����%�d�+�+�+��G�G�������r)rCrDrEr�r�rvrws@rr�r�sQ�������	/�	/�	/�	/�	/�	�	�	�	�	�	�	�	�	rr��KqueueSelectorc����eZdZd�Zejdd��ejej	�
d��d���fd�����Zejdd���fd���Z�xZ
S)�KqueueEventLoopTestsc�L�tjtj����Sr)rr��	selectorsr�r?s rr�z&KqueueEventLoopTests.create_event_loops#���0��,�.�.�0�0�0rr�	�openbsdztest hangs on OpenBSDc�H��t�����dSr)rrr�r�s �rr�z)KqueueEventLoopTests.test_read_pty_outputs!������,�,�.�.�.�.�.rc�H��t�����dSr)rrrr�s �rrz#KqueueEventLoopTests.test_write_pty)s������&�&�(�(�(�(�(r)rCrDrEr�rr[rVrYrr r!r�rrvrws@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�r�r?s rr�z%EPollEventLoopTests.create_event_loop2s���0��1H�1J�1J�K�K�KrNr�rrrr�r�.s(������
L�
L�
L�
L�
Lrr��PollSelectorc��eZdZd�ZdS)�PollEventLoopTestsc�L�tjtj����Sr)rr�r�r�r?s rr�z$PollEventLoopTests.create_event_loop:s���0��1G�1I�1I�J�J�JrNr�rrrr�r�6s(������
K�
K�
K�
K�
Krr�c��eZdZd�ZdS)r�c�L�tjtj����Sr)rr�r��SelectSelectorr?s rr�z&SelectEventLoopTests.create_event_loopBs���,�Y�-E�-G�-G�H�H�HrNr�rrrr�r�>s(������	I�	I�	I�	I�	Irc��dSrr)rr5s  r�noopr�Fs���Drc���eZdZ�fd�Zd�Zd�Zd�Zd�Zd�Zd�Z	e
jee
jd��d	��d
���Z�xZS)�HandleTestsc���t�����tj��|_d|jj_dSr)rrr�rrr1�	get_debug�return_valuer�s �rr�zHandleTests.setUpLs4���
���
�
�����I�K�K��	�+/��	��(�(�(rc�v�d�}d}tj|||j��}|�|j|��|�|j|��|�|�����|���|�	|�����dS)Nc��|Srr�rs rr�z)HandleTests.test_handle.<locals>.callbackR����Krr)
r�Handler1rh�	_callback�_argsrr%rr�)r6r�r�hs    r�test_handlezHandleTests.test_handleQs���	�	�	����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)rJrrrr�z:HandleTests.test_callback_with_exception.<locals>.callback_s���,�,�rrzException in callback.*)r�r��handle�source_traceback)rrr1r]rr��_run�assert_called_withr��MockPattern�ANY�_source_traceback)r6r�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��dSrrrrrr*z1HandleTests.test_handle_weakref.<locals>.<lambda>qs��4�rrr�)�weakref�WeakValueDictionaryrr�r1)r6�wdr�s   r�test_handle_weakrefzHandleTests.test_handle_weakrefos4��
�
(�
*�
*���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 )r1r�r�rr�r�r��get_function_sourcer�r�r�types�	coroutiner�r��re�escape�assertRegexr��test_handle_repr�
partialmethod)r6r��filename�linenor��regex�method�cb_regexs        rrzHandleTests.test_handle_reprtss��+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�rr� created at r
z <Handle cancelled noop(1, 2) at )r1r�r�rir�	_getframe�f_linenorr�r�r�rr�r�r�r6�create_filename�
create_linenor�rrs      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�rEr��test_handle_source_traceback)rrrrer�listr�ri)r�rr6s  �r�check_source_tracebackzHHandleTests.test_handle_source_traceback.<locals>.check_source_traceback�sv����]�1�%�%�.��2�F��!�!�!�"5�t�<�<�<����Q�0��4�R�a�R�8�&�$�<�>�
?�
?�
?�
?�
?rr)	r�get_event_loop_policyr.�	set_debugr/r�r�r�r�)r6r1r(r�s`   rr&z(HandleTests.test_handle_source_traceback�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__>() runningr4z
CoroLike())r4rCr�r�iscoroutiner�r�_format_coroutinerE�
cr_running�cr_code)r6r�s  r�+test_coroutine_like_object_debug_formattingz7HandleTests.test_coroutine_like_object_debug_formatting�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)rCrDrEr�r�rr	rr#r&rVrWr��collections�abcr3rvrws@rr�r�Js��������0�0�0�0�0�
'�'�'����"���
-)�-)�-)�^B�B�B�4"�"�"�:�X������+�>�>�7�9�9�F�F�9�9�F�F�F�F�Frr�c�B��eZdZ�fd�Zd�Zd�Zd�Zd�Zd�Zd�Z	�xZ
S)�
TimerTestsc�x��t�����tj��|_dSr)rrr�rrr1r�s �rr�zTimerTests.setUp�s%���
���
�
�����I�K�K��	�	�	rc���tj��}tj|d�dt	j����}|�t|��t|����dS)Nc��dSrNrrrrr*z&TimerTests.test_hash.<locals>.<lambda>	���e�rr)r�r*r�TimerHandlerrr��hash�r6�whenr�s   r�	test_hashzTimerTests.test_hash	sZ���~�������m�m�R� $�	���
-�
-������a���$�t�*�*�-�-�-�-�-rc���tj��}tj|d�dt	j����}|�||�����dS)Nc��dSrNrrrrr*z&TimerTests.test_when.<locals>.<lambda>
	r;rr)r�r*rr<rrr�r?r>s   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�r*rr<rrrhr�r�rr%rr�rd)r6r�rr?r�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>)r1r�r�rr<r�r�rr�r�r)r6r��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�rHrz <TimerHandle when=123 noop() at rrr
z*<TimerHandle cancelled when=123 noop() at )r1r�r�rirrrrr<r�r�rr�r�rr s      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>.callbackD	r�rrg$@)r�r*rr<r1rr�rr�rh�NotImplemented�__eq__�__ne__r�rGrrr)r6r�r?�h1�h2�h3s      r�test_timer_comparisonz TimerTests.test_timer_comparisonC	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;)rCrDrEr�r@rCrFrJrLrUrvrws@rr7r7�s�������� � � � � �.�.�.�)�)�)�#�#�#�$<�<�<�N�N�N�*<(�<(�<(�<(�<(�<(�<(rr7c��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|��dSr@)rrr�AbstractEventLoopr��NotImplementedErrorr�r0r�r�r�r@r�r�rOr�r�r��set_default_executorr2r"r9r:rHrI�set_exception_handler�default_exception_handlerr]r�r*)r6r�r1s   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)Nru�)rurar)rrrrYr�rZr
r�r�rxr�r�r��sock_recv_into�sock_sendall�sock_connect�sock_accept�
sock_sendfile�sendfiler��sentinelr�r�rxrj)r�r1r6s  �r�innerz@AbstractEventLoopTests.test_not_implemented_async.<locals>.inner�	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.r0r@)r6rir1s`  r�test_not_implemented_asyncz1AbstractEventLoopTests.test_not_implemented_async�	sX���%	.�%	.�%	.�%	.�%	.�N�%�'�'���������(�(�(��
�
�����rN)rCrDrEr^rjrrrrWrW�	s3������44�44�44�l+�+�+�+�+rrWc�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�rZ�get_event_loopr/rcr.�get_child_watcherr��r6�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�DefaultEventLoopPolicyrd�_local�_looprorerYrhr@�r6rrr1s   r�test_get_event_loopzPolicyTests.test_get_event_loop�	s����/�1�1�����&�-�-�.�.�.��$�$�&�&�����d�G�$=�>�>�>��
�
�f�m�)�4�0�0�0��
�
�d�F�1�1�3�3�4�4�4��
�
�����rc�$�tj��}tj�|d|j���5}|���}|�|��ddd��n#1swxYwY|���dS)Nr/)�wraps)	rrurr�rcr/ror�r@)r6rr�m_set_event_loopr1s    r�(test_get_event_loop_calls_set_event_loopz4PolicyTests.test_get_event_loop_calls_set_event_loop�	s����/�1�1��
�Z�
�
��(��+��-�-�		6�0@��(�(�*�*�D�

�/�/��5�5�5�		6�		6�		6�		6�		6�		6�		6�		6�		6�		6�		6����		6�		6�		6�		6�	
�
�
�����s�*A1�1A5�8A5c��tj��}|�d��|�t|j��dSr)rrur/r�r�rorqs  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)rrur�r�ro)rrr6s �rr�z1PolicyTests.test_get_event_loop_thread.<locals>.f
s0����3�5�5�F����l�F�,A�B�B�B�B�Brr�)r�r�r�r�)r6�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)rrur.rerYr@rxs   r�test_new_event_loopzPolicyTests.test_new_event_loop
sK���/�1�1���$�$�&�&�����d�G�$=�>�>�>��
�
�����rc���tj��}|���}|�t|jt
����|���}|�|��|�||�����|�	||�����|�
��|�
��dSr)rruror�rGr/rcr.rh�assertIsNotr@)r6rr�old_loopr1s    r�test_set_event_loopzPolicyTests.test_set_event_loop%
s����/�1�1���(�(�*�*�����)�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)rernrhrqs  r�test_get_event_loop_policyz&PolicyTests.test_get_event_loop_policy2
sL���.�0�0�����f�g�&E�F�F�F��
�
�f�g�;�=�=�>�>�>�>�>rc�X�|�ttjt	����tj��}tj��}tj|��|�|tj����|�||��dSr)	r�rGrrrcr)rurhr�)r6�
old_policyrrs   r�test_set_event_loop_policyz&PolicyTests.test_set_event_loop_policy7
s�������w�4�f�h�h�	@�	@�	@��2�4�4�
��/�1�1���%�f�-�-�-��
�
�f�g�;�=�=�>�>�>������,�,�,�,�,rN)rCrDrErsryr}rrr�r�r�r�r�r�rrrrlrl�	s�������$�$�$�	�	�	���� ?�?�?�
�T�Z�9�:�:���;�:��������?�?�?�
	-�	-�	-�	-�	-rrlc�`��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_savedro�get_event_loop_savedr��_get_running_loop_impl�_set_running_loop_impl�get_running_loop_impl�get_event_loop_implrrrr�r.r1r/rr r�r�r�r�s  �rr�zGetEventLoopTestsMixin.setUpJ
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_)rr rr�rrr�r1r@r/r�rr�r�r�r�r�r�ror�s �rr�zGetEventLoopTestsMixin.tearDownd
sI���	?��|�w�&�
0��)�$�/�/�/��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���fd�}���j�|����d��dS)Nc���K�tj���}�j�|t
���d{V��}|���|Sr)�
concurrent�futures�ProcessPoolExecutorr1r
r2�shutdown)�poolr,r6s  �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�r1r0)r6r's` r�test_get_event_loop_new_processz6GetEventLoopTestsMixin.test_get_event_loop_new_processz
sm���
�>�@�@�@�
�
�
�
�
�
����	�,�,�T�T�V�V�4�4��
�
�
�
�
rc�����Gd�dt���G�fd�dtj��}tj��}	tj|����tj�����t��5}�����5tj	��ddd��n#1swxYwYddd��n#1swxYwY��
|jt��tj
d����t��5}�����5tj	��ddd��n#1swxYwYddd��n#1swxYwY��
|jt����td��5tj��ddd��n#1swxYwY��tj��d����fd�}��|����tj
�����t��5}�����5tj	��ddd��n#1swxYwYddd��n#1swxYwY��
|jt��tj
d����t��5}�����5tj	��ddd��n#1swxYwYddd��n#1swxYwY��
|jt��tj|��������n0#tj|��������wwxYw��td��5tj��ddd��n#1swxYwY��tj��d��dS)Nc��eZdZdS)�RGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.TestErrorN)rCrDrErrr�	TestErrorr��
s�������Drr�c���eZdZ�fd�ZdS)�OGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.Policyc�����rr)r6r�s �rroz^GetEventLoopTestsMixin.test_get_event_loop_returns_running_loop.<locals>.Policy.get_event_loop�
s����rN)rCrDrEro)r�s�r�Policyr��
s.�������
 �
 �
 �
 �
 �
 �
 rr��
no runningc���K���tj�������tj�������tj�����dSr�rhrror�r�r5s��rrRzMGetEventLoopTestsMixin.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�rrur)rr.�assertWarns�DeprecationWarningr�ror�rrir/r�r�r�rhr�r0r@)r6r�r�r�rRr�r1s`    @@r�(test_get_event_loop_returns_running_loopz?GetEventLoopTestsMixin.test_get_event_loop_returns_running_loop�
s������	�	�	�	�	�	�	�	�	�	 �	 �	 �	 �	 �	 �	 �W�3�	 �	 �	 ��2�4�4�
�(	��)�&�&�(�(�3�3�3��)�+�+�D��!�!�"4�5�5�
-���&�&�y�1�1�-�-��*�,�,�,�-�-�-�-�-�-�-�-�-�-�-����-�-�-�-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�
���R�[�(�3�3�3��"�4�(�(�(��!�!�"4�5�5�
-���&�&�y�1�1�-�-��*�,�,�,�-�-�-�-�-�-�-�-�-�-�-����-�-�-�-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�
���R�[�(�3�3�3��'�'��l�C�C�
+�
+��(�*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��M�M�'�3�5�5�t�<�<�<�
A�
A�
A�
A�
A�
A�

�#�#�D�D�F�F�+�+�+��"�4�(�(�(��!�!�"4�5�5�
-���&�&�y�1�1�-�-��*�,�,�,�-�-�-�-�-�-�-�-�-�-�-����-�-�-�-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�
���R�[�(�3�3�3��"�4�(�(�(��!�!�"4�5�5�
-���&�&�y�1�1�-�-��*�,�,�,�-�-�-�-�-�-�-�-�-�-�-����-�-�-�-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�
���R�[�(�3�3�3�
�)�*�5�5�5��
��
�
������
�)�*�5�5�5��
��
�
�����
�����
#�
#�L�,�
?�
?�	'�	'��$�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	
�
�
�g�/�1�1�4�8�8�8�8�8sf�A	N3�C�$C�8C�C	�C�C	�C�N3�C�N3�"C�#AN3�4F�
E*�F�*E.	�.F�1E.	�2F�5N3�F�N3�F�	>N3�G'�N3�'G+�+N3�.G+�/A;N3�*J7�J �J7� J$	�$J7�'J$	�(J7�+N3�7J;�;N3�>J;�?AN3�M�&M�:M�M
	�
M�
M
	�M�N3�M!�!N3�$M!�%#N3�3-O �>P�P"�%P"c�N���tj��}	tjtj����tj������j����t��5}tj	��}ddd��n#1swxYwY��|j����
|jt��tj
d����t��5}��td��5tj	��ddd��n#1swxYwYddd��n#1swxYwY��
|jt����td��5tj��ddd��n#1swxYwY��tj��d����fd�}��|����tj
�����t��5}��tj	�����ddd��n#1swxYwY��
|jt��tj
d����t��5}��td��5tj	��ddd��n#1swxYwYddd��n#1swxYwY��
|jt��tj|��������n0#tj|��������wwxYw��td��5tj��ddd��n#1swxYwY��tj��d��dS)Nz
no currentr�c���K���tj�������tj�������tj�����dSrr�r5s��rrRzNGetEventLoopTestsMixin.test_get_event_loop_returns_running_loop2.<locals>.func�
r�r)rr)rrur.r�r@r�r�ror�rrir/r�r�r�rhr�r0)r6r�r��loop2rRr1s`    @r�)test_get_event_loop_returns_running_loop2z@GetEventLoopTestsMixin.test_get_event_loop_returns_running_loop2�
s������2�4�4�
�(	��)�'�*H�*J�*J�K�K�K��)�+�+�D��O�O�D�J�'�'�'��!�!�"4�5�5�
1���.�0�0��
1�
1�
1�
1�
1�
1�
1�
1�
1�
1�
1����
1�
1�
1�
1��O�O�E�K�(�(�(����R�[�(�3�3�3��"�4�(�(�(��!�!�"4�5�5�
-���+�+�L�,�G�G�-�-��*�,�,�,�-�-�-�-�-�-�-�-�-�-�-����-�-�-�-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�
���R�[�(�3�3�3��'�'��l�C�C�
+�
+��(�*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+��M�M�'�3�5�5�t�<�<�<�
A�
A�
A�
A�
A�
A�

�#�#�D�D�F�F�+�+�+��"�4�(�(�(��!�!�"4�5�5�
>���
�
�g�4�6�6��=�=�=�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>�
>����
>�
>�
>�
>����R�[�(�3�3�3��"�4�(�(�(��!�!�"4�5�5�
-���+�+�L�,�G�G�-�-��*�,�,�,�-�-�-�-�-�-�-�-�-�-�-����-�-�-�-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-�
-����
-�
-�
-�
-�
���R�[�(�3�3�3�
�)�*�5�5�5��
��
�
������
�)�*�5�5�5��
��
�
�����
�����
#�
#�L�,�
?�
?�	'�	'��$�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�	
�
�
�g�/�1�1�4�8�8�8�8�8s�A,N�B#�N�#B'�'N�*B'�+A+N�E)�2E�E)�E	�E)�E	�E)�N�)E-�-N�0E-�1>N�/G�N�G�N�G�A;N�(J�:N�J
�
N�
J
�AN�L2�;L�L2�L	�L2�"L	�#L2�&N�2L6�6N�9L6�:#N�-N5�O3�3O7�:O7)rCrDrEr�r�r�r�r�r�rr r�r�r�rvrws@rr�r�C
s��������!��!�� ����/�/�/�/�/�4?�?�?�?�?�(�|�w���	�	�	�"69�69�69�p/9�/9�/9�/9�/9�/9�/9rr�c�F�eZdZejZejZejZ	ej
ZdS)�TestPyGetEventLoopN)rCrDrEr�_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)rCrDrEr�_c__get_running_loopr��_c__set_running_loopr��_c_get_running_loopr��_c_get_event_loopr�rrrr�r�s4������!'�!<��!'�!<�� &� :��$�6���rr�c��eZdZd�ZdS)�
TestServerc���tj��}|�|j��t	|���|�|��fd�dd����}|�|���|��|���|�|�	����dS)Nc����Srrr�s�rr*z*TestServer.test_get_loop.<locals>.<lambda>s���E�rrr)
rr.r�r@rpr0r�r��get_loop�wait_closed)r6r1rr�s   @r�
test_get_loopzTestServer.test_get_loop
s�����%�'�'������
�#�#�#���
�
���(�(��);�);�M�M�M�M�9�VW�)X�)X�Y�Y��������*�*�D�1�1�1����������� 2� 2� 4� 4�5�5�5�5�5rN)rCrDrEr�rrrr�r�s#������6�6�6�6�6rr�c� �eZdZd�Zd�Zd�ZdS)�TestAbstractServerc��|�t��5tj�����ddd��dS#1swxYwYdSr)r�rZr�AbstractServerr@r?s rrUzTestAbstractServer.test_closes���
�
�
�2�
3�
3�	,�	,��!�#�#�)�)�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,��&A�A�Ac�6�tj��}|�|j��|�t
��5|�tj���	����ddd��dS#1swxYwYdSr)
rr.r�r@r�rZr0rr�r�rQs  r�test_wait_closedz#TestAbstractServer.test_wait_closeds����%�'�'������
�#�#�#�
�
�
�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�rZrr�r�r?s rr�z TestAbstractServer.test_get_loop$s���
�
�
�2�
3�
3�	/�	/��!�#�#�,�,�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/r�N)rCrDrErUr�r�rrrr�r�sD������,�,�,�K�K�K�/�/�/�/�/rr��__main__)N�__doc__�collections.abcr4�concurrent.futuresr�r�r�rNr rrKr.r��ImportErrorr�rr�r�rr�rVrrrrrrrr	�test.test_asyncior
r�rLr�test.supportrr
rrrrr(r2r4rgrGrp�DatagramProtocolryr��BaseProtocolr�r�r�r�r]�TestCaser�r�r�r�r�r�r�r�r�r�r7rWrlr�r��_asyncior�r�r�rCr'rrr�<module>r�s�����������������	�	�	�	�	�	�	�	�����	�	�	�	�
�
�
�
�
�
�
�
���J�J�J�J������
�C�C�C���������
�
�
�
��������������������������������<�+�+���J�J�J�����������������#�#�#�#�#�#�#�#�#�#�#�#�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�*:�*:�*:�ZB�B�B�B�B�B�B�B�J.[?�[?�[?�[?�[?�[?�[?�[?�|�<�7��[I�/�/�/�/�/�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�LX-�X-�X-�X-�X-�(�#�X-�X-�X-�vo9�o9�o9�o9�o9�o9�o9�o9�d4�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�8J�J�J