
    z%i                    `   	 d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlmZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ e	j&                  dk(  r ej(                  d      d dlZd d	lmZ d d
lmZ d dlmZ d Zej8                  Zd Zd Zd Z  ejB                  ed       G d dejD                               Z# ejB                   e$ed      d       G d dejD                               Z% ejB                   e$ed      d       G d dejD                               Z& G d dejD                        Z' G d dejD                        Z( G d d ejD                        Z) G d! d"ejD                        Z* G d# d$      Z+ G d% d&e+ejD                        Z, G d' d(e+ejD                        Z- G d) d*ejD                        Z. G d+ d,ejD                        Z/ ejB                   e$ed-      d.       G d/ d0ej`                               Z1e2d1k(  r ejf                          yy)2    N)mock)	os_helper)socket_helper)wait_process)hashlib_helperwin32z	UNIX only)log)unix_events)utilsc                  .    t        j                  d        y N)asyncioset_event_loop_policy     V/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_asyncio/test_unix_events.pytearDownModuler       s    !!$'r   c                     d| z   S )N   r   exitcodes    r   EXITCODEr   '   s    8r   c                 B    d| cxk  rdk  sn t        d|        d| z
  S )N   D   zinvalid signum r   )AssertionError)signums    r   SIGNALr   +   s+    "vh7886>r   c                 `    | j                   y | j                   j                          d | _         y r   )_pipeclose)	transports    r   close_pipe_transportr#   1   s(     OOIOr   zSignals are not supportedc                   H    e Zd Z fdZd Zd Zd Z ej                  d      d        Z	 ej                  d      d        Z
 ej                  d      d        Z ej                  d      d	        Z ej                  d       ej                  d
      d               Z ej                  d       ej                  d
      d               Z ej                  d      d        Z ej                  d      d        Z ej                  d       ej                  d
      d               Z ej                  d      d        Z ej                  d      d        Z ej                  d      d        Z ej                  d       ej                  d      d               Z xZS )SelectorEventLoopSignalTestsc                     t         |           t        j                         | _        | j                  | j                         y r   supersetUpr   SelectorEventLooploopset_event_loopself	__class__s    r   r)   z"SelectorEventLoopSignalTests.setUp=   .    --/	DII&r   c                     | j                  t        | j                  j                  d       | j                  t        | j                  j                  t
        j                  dz          y )N1r   )assertRaises	TypeErrorr+   _check_signal
ValueErrorsignalNSIGr.   s    r   test_check_signalz.SelectorEventLoopSignalTests.test_check_signalB   sI    tyy..	5		//q	Br   c                 \    | j                   j                  t        j                  dz          y )Nr   )r+   _handle_signalr7   r8   r9   s    r   test_handle_signal_no_handlerz:SelectorEventLoopSignalTests.test_handle_signal_no_handlerH   s    		  q1r   c                    t        j                  t        j                         dt        j                               }|j	                          || j
                  j                  t        j                  dz   <   t        j                         | j
                  _	        | j
                  j                  t        j                  dz          | j
                  j                  j                  t        j                  dz          y )Nr   )r+   r   )r   Handler   Mockcancelr+   _signal_handlersr7   r8   remove_signal_handlerr<   assert_called_with)r.   hs     r   $test_handle_signal_cancelled_handlerzASelectorEventLoopSignalTests.test_handle_signal_cancelled_handlerK   s    NN499; $		-	
67		""6;;?3*.))+		'		  q1		''::6;;?Kr   zasyncio.unix_events.signalc                     t         j                  |_        t         j                  |_        t        |j                  _        | j                  t        | j                  j                  t         j                  d        y )Nc                       yNTr   r   r   r   <lambda>zRSelectorEventLoopSignalTests.test_add_signal_handler_setup_error.<locals>.<lambda>]       r   )r7   r8   valid_signalsr6   set_wakeup_fdside_effectr3   RuntimeErrorr+   add_signal_handlerSIGINTr.   m_signals     r   #test_add_signal_handler_setup_errorz@SelectorEventLoopSignalTests.test_add_signal_handler_setup_errorT   sP    !'!5!5-7*II((MM<	)r   c                    t         j                  |_        d }|} |       }| j                  |j                         ||fD ]=  }| j	                  t
        d| j                  j                  t         j                  |       ? y )Nc                     K   y wr   r   r   r   r   simple_coroutinez^SelectorEventLoopSignalTests.test_add_signal_handler_coroutine_error.<locals>.simple_coroutinec   s	     s   z1coroutines cannot be used with add_signal_handler)	r7   r8   
addCleanupr!   assertRaisesRegexr4   r+   rP   rQ   )r.   rS   rW   	coro_funccoro_objfuncs         r   'test_add_signal_handler_coroutine_errorzDSelectorEventLoopSignalTests.test_add_signal_handler_coroutine_error_   sn    	 %	;') 	%D""N		,,t%	%r   c                    t         j                  |_        t         j                  |_        d }| j                  j	                  t         j
                  |       | j                  j                  j                  t         j
                        }| j                  |t        j                         | j                  |j                  |       y )Nc                       yrI   r   r   r   r   rJ   zFSelectorEventLoopSignalTests.test_add_signal_handler.<locals>.<lambda>u   rK   r   )r7   r8   rL   r+   rP   SIGHUPrB   getassertIsInstancer   r?   assertEqual	_callback)r.   rS   cbrE   s       r   test_add_signal_handlerz4SelectorEventLoopSignalTests.test_add_signal_handlerp   s~    !'!5!5		$$V]]B7II&&**6==9a0b)r   c                    t         j                  |_        t         j                  |_        d }||_         G d dt              }||j                   _        | j                  || j                  j                  t         j                  d        y )Nc                 "    | dk(  r
t               y )N)r6   )fds    r   rM   zYSelectorEventLoopSignalTests.test_add_signal_handler_install_error.<locals>.set_wakeup_fd   s    Rx l" r   c                   $    e Zd Zej                  Zy)OSelectorEventLoopSignalTests.test_add_signal_handler_install_error.<locals>.ErrN)__name__
__module____qualname__errnoEFAULTr   r   r   Errrl          LLEr   rr   c                       yrI   r   r   r   r   rJ   zTSelectorEventLoopSignalTests.test_add_signal_handler_install_error.<locals>.<lambda>   rK   r   )
r7   r8   rL   rM   OSErrorrN   r3   r+   rP   rQ   )r.   rS   rM   rr   s       r   %test_add_signal_handler_install_errorzBSelectorEventLoopSignalTests.test_add_signal_handler_install_error{   si    !'!5!5	# "/	!' 	!&)#II((MM<	)r   zasyncio.base_events.loggerc                    t         j                  |_        t         j                  |_         G d dt              }||j                   _        d | j
                  j                  t         j                  <   | j                  t        | j
                  j                  t         j                  d        | j                  |j                  j                         | j                  d|j                   j"                         y )Nc                   $    e Zd Zej                  Zy)PSelectorEventLoopSignalTests.test_add_signal_handler_install_error2.<locals>.ErrNrm   rn   ro   rp   EINVALr   r   r   rr   ry      rs   r   rr   c                       yrI   r   r   r   r   rJ   zUSelectorEventLoopSignalTests.test_add_signal_handler_install_error2.<locals>.<lambda>   rK   r   c                       yrI   r   r   r   r   rJ   zUSelectorEventLoopSignalTests.test_add_signal_handler_install_error2.<locals>.<lambda>   rK   r   r   )r7   r8   rL   ru   rN   r+   rB   r`   r3   rO   rP   rQ   assertFalseinfocalledrc   rM   
call_countr.   	m_loggingrS   rr   s       r   &test_add_signal_handler_install_error2zCSelectorEventLoopSignalTests.test_add_signal_handler_install_error2   s     !'!5!5	!' 	!&)#4@		""6==1II((MM<	) 	../H22==>r   c                     G d dt               }||j                  _        t        j                  |_        t        j                  |_        | j                  t        | j                  j                  t        j                  d        | j                  |j                  j                         | j                  d|j                  j                         y )Nc                   $    e Zd Zej                  Zy)PSelectorEventLoopSignalTests.test_add_signal_handler_install_error3.<locals>.ErrNrz   r   r   r   rr   r      rs   r   rr   c                       yrI   r   r   r   r   rJ   zUSelectorEventLoopSignalTests.test_add_signal_handler_install_error3.<locals>.<lambda>   rK   r      )ru   r7   rN   r8   rL   r3   rO   r+   rP   rQ   r~   r   r   rc   rM   r   r   s       r   &test_add_signal_handler_install_error3zCSelectorEventLoopSignalTests.test_add_signal_handler_install_error3   s    	!' 	!&)#!'!5!5II((MM<	) 	../H22==>r   c                 8   t         j                  |_        t         j                  |_        | j                  j	                  t         j
                  d        | j                  | j                  j                  t         j
                               | j                  |j                  j                         | j                  |j                   j                         | j                  t         j
                  |j                  f|j                   j                  d          y )Nc                       yrI   r   r   r   r   rJ   zISelectorEventLoopSignalTests.test_remove_signal_handler.<locals>.<lambda>   rK   r   r   )r7   r8   rL   r+   rP   r`   
assertTruerC   rM   r   rc   SIG_DFL	call_argsrR   s     r   test_remove_signal_handlerz7SelectorEventLoopSignalTests.test_remove_signal_handler   s    !'!5!5		$$V]]LAII++FMM:	<..556../]]H,,-x/H/H/K	Mr   c                    t         j                  |_        t         j                  |_        t         j                  |_        | j                  j                  t         j                  d        t               | j                  j                  t         j                  <   |j                  j                          | j                  | j                  j                  t         j                               | j                  |j                  j                         | j                  |j                   j                         | j                  t         j                  |j                   f|j                   j"                  d          y )Nc                       yrI   r   r   r   r   rJ   zKSelectorEventLoopSignalTests.test_remove_signal_handler_2.<locals>.<lambda>   rK   r   r   )r7   r8   rQ   rL   r+   rP   objectrB   r`   rM   
reset_mockr   rC   r~   r   rc   default_int_handlerr   rR   s     r   test_remove_signal_handler_2z9SelectorEventLoopSignalTests.test_remove_signal_handler_2   s     --!'!5!5		$$V]]LA4:H		""6==1))+II++FMM:	<//667../]]H889OO%%a(	*r   c                 `   t         j                  |_        t         j                  |_        | j                  j	                  t         j
                  d        t        |j                  _        | j                  j                  t         j
                         | j                  |j                         y )Nc                       yrI   r   r   r   r   rJ   zWSelectorEventLoopSignalTests.test_remove_signal_handler_cleanup_error.<locals>.<lambda>   rK   r   )r7   r8   rL   r+   rP   r`   r6   rM   rN   rC   r   r   )r.   r   rS   s      r   (test_remove_signal_handler_cleanup_errorzESelectorEventLoopSignalTests.test_remove_signal_handler_cleanup_error   si     !'!5!5		$$V]]LA-7*		''6	'r   c                 J   t         j                  |_        t         j                  |_        | j                  j	                  t         j
                  d        t        |j                   _        | j                  t        | j                  j                  t         j
                         y )Nc                       yrI   r   r   r   r   rJ   zOSelectorEventLoopSignalTests.test_remove_signal_handler_error.<locals>.<lambda>   rK   r   )
r7   r8   rL   r+   rP   r`   ru   rN   r3   rC   rR   s     r    test_remove_signal_handler_errorz=SelectorEventLoopSignalTests.test_remove_signal_handler_error   sc    !'!5!5		$$V]]LA&-#TYY44fmm	Er   c                 `   t         j                  |_        t         j                  |_        | j                  j	                  t         j
                  d         G d dt              }||j                   _        | j                  t        | j                  j                  t         j
                         y )Nc                       yrI   r   r   r   r   rJ   zPSelectorEventLoopSignalTests.test_remove_signal_handler_error2.<locals>.<lambda>   rK   r   c                   $    e Zd Zej                  Zy)KSelectorEventLoopSignalTests.test_remove_signal_handler_error2.<locals>.ErrNrz   r   r   r   rr   r      rs   r   rr   )r7   r8   rL   r+   rP   r`   ru   rN   r3   rO   rC   )r.   rS   rr   s      r   !test_remove_signal_handler_error2z>SelectorEventLoopSignalTests.test_remove_signal_handler_error2   so    !'!5!5		$$V]]LA	!' 	!&)#$))996==	Jr   c                 ^   t         j                  |_        t         j                  |_        | j                  j	                  t         j
                  d        | j                  j	                  t         j                  d        | j                  t        | j                  j                        d       |j                  j                          | j                  j                          | j                  t        | j                  j                        d       |j                  j                  d       y )Nc                       yrI   r   r   r   r   rJ   z9SelectorEventLoopSignalTests.test_close.<locals>.<lambda>   rK   r   c                       yrI   r   r   r   r   rJ   z9SelectorEventLoopSignalTests.test_close.<locals>.<lambda>   rK   r   r   r   ri   )r7   r8   rL   r+   rP   r`   SIGCHLDrc   lenrB   rM   r   r!   assert_called_once_withrR   s     r   
test_closez'SelectorEventLoopSignalTests.test_close   s    !'!5!5		$$V]]LA		$$V^^\BTYY778!<))+		TYY778!<66r:r   zasyncio.unix_events.sysc                    t         j                  |_        t         j                  |_        | j                  j	                  t         j
                  d        | j                  t        | j                  j                        d       d|j                  _
        |j                   j                          | j                  t        d      5  | j                  j                          d d d        | j                  t        | j                  j                        d       | j                  |j                   j                          y # 1 sw Y   ^xY w)Nc                       yrI   r   r   r   r   rJ   zGSelectorEventLoopSignalTests.test_close_on_finalizing.<locals>.<lambda>
  rK   r   r   Tz skipping signal handlers removalr   )r7   r8   rL   r+   rP   r`   rc   r   rB   is_finalizingreturn_valuer   assertWarnsRegexResourceWarningr!   r~   r   )r.   rS   m_syss      r   test_close_on_finalizingz5SelectorEventLoopSignalTests.test_close_on_finalizing  s     !'!5!5		$$V]]LATYY778!<+/(""$""?#EG 	IIOO	 	TYY778!<//0	 	s   D>>E)rm   rn   ro   r)   r:   r=   rF   r   patchrT   r]   rf   rv   r   r   r   r   r   r   r   r   r   __classcell__r/   s   @r   r%   r%   :   s   '
B2L TZZ,-) .) TZZ,-% .%  TZZ,-* .* TZZ,-) .)$ TZZ,-TZZ,-? . .?  TZZ,-TZZ,-? . .? TZZ,-M .M TZZ,-* .*" TZZ,-TZZ,-( . .( TZZ,-E .E TZZ,-
J .
J TZZ,-; .;  TZZ)*TZZ,-1 . +1r   r%   AF_UNIXzUNIX Sockets are not supportedc                   B    e Zd Z fdZej
                  d        Zej
                  d        Zd Zd Z	d Z
d Zd Zd	 Z ej                   eed
      d      ej
                  d               Zd Zd Z ej,                  d      d        Zd Zd Zd Zd Zd Z xZS ) SelectorEventLoopUnixSocketTestsc                     t         |           t        j                         | _        | j                  | j                         y r   r'   r-   s    r   r)   z&SelectorEventLoopUnixSocketTests.setUp  r0   r   c                    t        j                         5 }t        j                  t        j                        }|j	                  |       |j                  d       |j                          | j                  j                  d |      }| j                  j                  |      }|j                          | j                  j                  |j                                d d d        y # 1 sw Y   y xY w)Nr   c                       y r   r   r   r   r   rJ   z]SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_sock.<locals>.<lambda>)  rK   r   )
test_utilsunix_socket_pathsocketr   bindlistenr!   r+   create_unix_serverrun_until_completewait_closed)r.   pathsockcorosrvs        r   *test_create_unix_server_existing_path_sockzKSelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_sock!  s    ((* 		<d==0DIIdOKKNJJL99//dCD))..t4CIIKII(():;		< 		< 		<s   CC%%C.c                 b   t        j                         5 }t        j                  |      }| j                  j                  d |      }| j                  j                  |      }|j                          | j                  j                  |j                                d d d        y # 1 sw Y   y xY w)Nc                       y r   r   r   r   r   rJ   zRSelectorEventLoopUnixSocketTests.test_create_unix_server_pathlib.<locals>.<lambda>2  rK   r   )	r   r   pathlibPathr+   r   r   r!   r   )r.   r   srv_coror   s       r   test_create_unix_server_pathlibz@SelectorEventLoopUnixSocketTests.test_create_unix_server_pathlib.  s    ((* 	<d<<%Dyy33L$GH))..x8CIIKII(():;	< 	< 	<s   BB%%B.c                 D   t        j                         5 }t        j                  |      }| j                  j                  d |      }| j                  t              5  | j                  j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                       y r   r   r   r   r   rJ   zVSelectorEventLoopUnixSocketTests.test_create_unix_connection_pathlib.<locals>.<lambda>:  rK   r   )	r   r   r   r   r+   create_unix_connectionr3   FileNotFoundErrorr   r.   r   r   s      r   #test_create_unix_connection_pathlibzDSelectorEventLoopUnixSocketTests.test_create_unix_connection_pathlib7  s    ((* 	3d<<%D9933L$GD""#45 3 		,,T23	3 	33 3	3 	3s$   ABB
9B
B	BBc                 f   t        j                         }| j                  t        j                  |       t        |d      j                          | j                  j                  d |      }| j                  t        d      5  | j                  j                  |       d d d        y # 1 sw Y   y xY w)Nwbc                       y r   r   r   r   r   rJ   z`SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsock.<locals>.<lambda>F  rK   r   zAddress.*is already in use)r   gen_unix_socket_pathrX   r   unlinkopenr!   r+   r   rY   ru   r   r   s      r   -test_create_unix_server_existing_path_nonsockzNSelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsock@  s    ..0	(($/T4 yy++L$?##G$@B 	/II((.	/ 	/ 	/s   B''B0c                     | j                   j                  d dd      }| j                  t        d      5  | j                   j	                  |       d d d        y # 1 sw Y   y xY w)Nc                       y r   r   r   r   r   rJ   zSSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_bool.<locals>.<lambda>L  rK   r   spamT)r   sslz"ssl argument must be an SSLContext)r+   r   rY   r4   r   r.   r   s     r    test_create_unix_server_ssl_boolzASelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_boolK  s]    yy++Lv04 , 6##I$HJ 	/II((.	/ 	/ 	/   AA$c                     | j                   j                  d d       }| j                  t        d      5  | j                   j	                  |       d d d        y # 1 sw Y   y xY w)Nc                       y r   r   r   r   r   rJ   zXSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosock.<locals>.<lambda>S  rK   r   r   z#path was not specified, and no sockr+   r   rY   r6   r   r   s     r   %test_create_unix_server_nopath_nosockzFSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosockR  sV    yy++Lt+D##J$IK 	/II((.	/ 	/ 	/s   AA#c                 $   t        j                          }|5  | j                  j                  d d |      }| j                  t        d      5  | j                  j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                       y r   r   r   r   r   rJ   zXSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsock.<locals>.<lambda>[  rK   r   r   r   "A UNIX Domain Stream.*was expected)r   r+   r   rY   r6   r   r.   r   r   s      r   %test_create_unix_server_path_inetsockzFSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsockX  s    }} 	399//459 0 ;D''
(LN 3		,,T23	3 	33 3	3 	3s#   6BA:)B:B	?BBc                 `   t        j                   t         j                  t         j                        }|5  | j                  j	                  d d |      }| j                  t        d      5  | j                  j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                       y r   r   r   r   r   rJ   zUSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgram.<locals>.<lambda>d  rK   r   r   r   )r   r   
SOCK_DGRAMr+   r   rY   r6   r   r   s      r   "test_create_unix_server_path_dgramzCSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgrama  s    }}V^^V->->? 	399//459 0 ;D''
(LN 3		,,T23	3 	33 3	3 	3s#   6B$+BB$B!	B$$B-SOCK_NONBLOCKz$no socket.SOCK_NONBLOCK (linux only)c                 (   t        j                         }| j                  t        j                  |       t        j
                  t
        j                  t
        j                  t
        j                  z        }|5  |j                  |       | j                  j                  d d |      }| j                  j                  |      }|j                          | j                  j                  |j                                d d d        y # 1 sw Y   y xY w)Nc                       y r   r   r   r   r   rJ   z^SelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittype.<locals>.<lambda>u  rK   r   r   )r   r   rX   r   r   r   r   SOCK_STREAMr   r   r+   r   r   r!   r   )r.   fnr   r   r   s        r   +test_create_unix_server_path_stream_bittypezLSelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittypej  s     ,,.	(("-}}V^^#//&2F2FFH 	<IIbM99//459 0 ;D))..t4CIIKII(():;	< 	< 	<s   :BDDc                     | j                   j                  d dd      }| j                  t        d      5  | j                   j	                  |       d d d        y # 1 sw Y   y xY w)Nc                       y r   r   r   r   r   rJ   zfSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_timeout_with_plain_sock.<locals>.<lambda>|  rK   r   r   r   r   ssl_handshake_timeout1ssl_handshake_timeout is only meaningful with sslr   r   s     r   3test_create_unix_server_ssl_timeout_with_plain_sockzTSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_timeout_with_plain_sock{  sa    yy++LvBC , E##CE 	/ II((.	/ 	/ 	/r   c                 "   t        j                          }|5  | j                  j                  d |      }| j                  t        d      5  | j                  j                  |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                       y r   r   r   r   r   rJ   z\SelectorEventLoopUnixSocketTests.test_create_unix_connection_path_inetsock.<locals>.<lambda>  rK   r   r   r   )r   r+   r   rY   r6   r   r   s      r   )test_create_unix_connection_path_inetsockzJSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_inetsock  s    }} 	39933L9= 4 ?D''
(LN 3		,,T23	3 	33 3	3 	3s#   5BA9(B9B	>BBzasyncio.unix_events.socketc                    t        j                         }||j                  _        t        |j
                  _        | j                  j                  d d      }| j                  t              5  | j                  j                  |       d d d        | j                  |j                  j                         t        |j
                  _        | j                  j                  d d      }| j                  t              5  | j                  j                  |       d d d        | j                  |j                  j                         y # 1 sw Y   xY w# 1 sw Y   ;xY w)Nc                       y r   r   r   r   r   rJ   zUSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_error.<locals>.<lambda>  rK   r   z/testr   c                       y r   r   r   r   r   rJ   zUSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_error.<locals>.<lambda>  rK   r   )r   r@   r   r   ru   r   rN   r+   r   r3   r   r   r!   r   MemoryError)r.   m_socketr   r   s       r   "test_create_unix_server_bind_errorzCSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_error  s     yy{'+$ '		yy++Lw+Gw' 	/II((.	/

))* +		yy++Lw+G{+ 	/II((.	/

))*	/ 	/	/ 	/s   .E	?E	EEc                     | j                   j                  d t        j                  t	                     }| j                  t        d      5  | j                   j                  |       d d d        y # 1 sw Y   y xY w)Nc                       y r   r   r   r   r   rJ   zXSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sock.<locals>.<lambda>  rK   r   r   zpath and sock can not be)r+   r   osdevnullr   rY   r6   r   r   s     r   %test_create_unix_connection_path_sockzFSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sock  s`    yy//"**68 0 5##J0JK 	/II((.	/ 	/ 	/s   A11A:c                     | j                   j                  d d       }| j                  t        d      5  | j                   j	                  |       d d d        y # 1 sw Y   y xY w)Nc                       y r   r   r   r   r   rJ   z\SelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosock.<locals>.<lambda>  rK   r   zno path and sock were specifiedr+   r   rY   r6   r   r   s     r   )test_create_unix_connection_nopath_nosockzJSelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosock  sV    yy//$ ##J$EG 	/II((.	/ 	/ 	/s   AA"c                     | j                   j                  d t        j                  d      }| j	                  t
        d      5  | j                   j                  |       d d d        y # 1 sw Y   y xY w)Nc                       y r   r   r   r   r   rJ   z_SelectorEventLoopUnixSocketTests.test_create_unix_connection_nossl_serverhost.<locals>.<lambda>  rK   r   r   )server_hostnamez"server_hostname is only meaningfulr+   r   r  r	  rY   r6   r   r   s     r   ,test_create_unix_connection_nossl_serverhostzMSelectorEventLoopUnixSocketTests.test_create_unix_connection_nossl_serverhost  sa    yy//"**f 0 >##J$HJ 	/II((.	/ 	/ 	/   A))A2c                     | j                   j                  d t        j                  d      }| j	                  t
        d      5  | j                   j                  |       d d d        y # 1 sw Y   y xY w)Nc                       y r   r   r   r   r   rJ   z_SelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_noserverhost.<locals>.<lambda>  rK   r   T)r   z/you have to pass server_hostname when using sslr  r   s     r   ,test_create_unix_connection_ssl_noserverhostzMSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_noserverhost  sf    yy//"**$ 0 0 ##IK 	/ II((.	/ 	/ 	/r  c                     | j                   j                  d dd      }| j                  t        d      5  | j                   j	                  |       d d d        y # 1 sw Y   y xY w)Nc                       y r   r   r   r   r   rJ   zjSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_timeout_with_plain_sock.<locals>.<lambda>  rK   r   r   r   r   r   r  r   s     r   7test_create_unix_connection_ssl_timeout_with_plain_sockzXSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_timeout_with_plain_sock  sa    yy//6BC 0 E##CE 	/ II((.	/ 	/ 	/r   )rm   rn   ro   r)   r   skip_unless_bind_unix_socketr   r   r   r   r   r   r   r   unittest
skipUnlesshasattrr   r   r   r   r   r   r  r
  r  r  r  r  r   r   s   @r   r   r     s    '
 //
< 0
< //< 0<3	///33 X9?A//< 0A</3 TZZ,-+ .+"/////r   r   sendfilezsendfile is not supportedc                        e Zd Zddz  Z G d dej
                        Ze fd       Ze fd       Z	 fdZ
ddZd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )&SelectorEventLoopUnixSockSendfileTestss   12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde12345abcde   c                   *    e Zd Zd Zd Zd Zd Zd Zy).SelectorEventLoopUnixSockSendfileTests.MyProtoc                     d| _         d| _        t               | _        |j	                         | _        d | _        |j	                         | _        y )NF)startedclosed	bytearraydatacreate_futurefutr"   _ready)r.   r+   s     r   __init__z7SelectorEventLoopUnixSockSendfileTests.MyProto.__init__  s@     DLDK!DI))+DH!DN,,.DKr   c                 V    d| _         || _        | j                  j                  d        y rI   )r&  r"   r,  
set_result)r.   r"   s     r   connection_madez>SelectorEventLoopUnixSockSendfileTests.MyProto.connection_made  s"    DL&DNKK""4(r   c                 :    | j                   j                  |       y r   )r)  extend)r.   r)  s     r   data_receivedz<SelectorEventLoopUnixSockSendfileTests.MyProto.data_received  s    IIT"r   c                 H    d| _         | j                  j                  d        y rI   )r'  r+  r/  )r.   excs     r   connection_lostz>SelectorEventLoopUnixSockSendfileTests.MyProto.connection_lost  s    DKHH%r   c                 8   K   | j                    d {    y 7 wr   )r+  r9   s    r   r   z:SelectorEventLoopUnixSockSendfileTests.MyProto.wait_closed  s     ((NNs   N)rm   rn   ro   r-  r0  r3  r6  r   r   r   r   MyProtor$    s    	/	)
	#	&	r   r8  c                     t        t        j                  d      5 }|j                  | j                         d d d        t
        |           y # 1 sw Y   xY w)Nr   )r   r   TESTFNwriteDATAr(   
setUpClass)clsfpr/   s     r   r=  z1SelectorEventLoopUnixSockSendfileTests.setUpClass  sE    )""D) 	RHHSXX		 	s   AAc                 h    t        j                  t         j                         t        |           y r   )r   r   r:  r(   tearDownClass)r>  r/   s    r   rA  z4SelectorEventLoopUnixSockSendfileTests.tearDownClass  s"    ))*r   c                    t        j                         | _        | j                  | j                         t	        t
        j                  d      | _        | j                  | j                  j                         t        | -          y )Nrb)r   new_event_loopr+   r,   r   r   r:  filerX   r!   r(   r)   r-   s    r   r)   z,SelectorEventLoopUnixSockSendfileTests.setUp  sV    **,	DII&))40			(r   c                    t        j                   t         j                  t         j                        }|j                  d       |j	                  t         j
                  t         j                  d       |j	                  t         j
                  t         j                  d       |r| j                  |j                         |S )NFr"  )
r   AF_INETr   setblocking
setsockopt
SOL_SOCKET	SO_SNDBUF	SO_RCVBUFrX   r!   )r.   cleanupr   s      r   make_socketz2SelectorEventLoopUnixSockSendfileTests.make_socket  sz    }}V^^V-?-?@))6+;+;TB))6+;+;TBOODJJ'r   c                 8    | j                   j                  |      S r   )r+   r   r   s     r   run_loopz/SelectorEventLoopUnixSockSendfileTests.run_loop  s    yy++D11r   c                 .     j                         } j                   j                        t        j                         } j                  d      }|j                  t        j                  |f        j                   j                  j                  fd|             j                   j                  j                  |t        j                  |f              j                  j                          fd} j                  |       |fS )NF)rM  c                       S r   r   )protos   r   rJ   z@SelectorEventLoopUnixSockSendfileTests.prepare.<locals>.<lambda>  s    E r   r   c                       j                   j                          j                   j                                j                          j                  j                                y r   )r"   r!   rP  r   )rS  r.   servers   r   rM  z?SelectorEventLoopUnixSockSendfileTests.prepare.<locals>.cleanup  sF    OO!!#MM%++-.LLNMM&,,./r   )rN  r8  r+   r   find_unused_portr   HOSTrP  create_serversock_connectr,  rX   )r.   r   portsrv_sockrM  rS  rU  s   `    @@r   preparez.SelectorEventLoopUnixSockSendfileTests.prepare   s    !TYY'--/##E#2}))401tyy66  7  * +dii,,TM4F4F3MNOell#	0 	 U{r   c           
         | j                         \  }}t        j                  dg       5  | j                  t        j
                  d      5  | j                  | j                  j                  || j                  dd              d d d        d d d        | j                  | j                  j                         d       y # 1 sw Y   <xY w# 1 sw Y   @xY w)Nzasyncio.unix_events.os)specz$os[.]sendfile[(][)] is not availabler   )r\  r   r   rY   r   SendfileNotAvailableErrorrP  r+   _sock_sendfile_nativerE  rc   tell)r.   r   rS  s      r    test_sock_sendfile_not_availablezGSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_available  s    llneZZ0r: 	H''(I(I(NP Hdii==dDII>?G HH	H
 	)1-	H H	H 	Hs#   !C8B?C?C	CCc           	      V   | j                         \  }}t               }| j                  t        j                  d      5  | j                  | j                  j                  ||dd              d d d        | j                  | j                  j                         d       y # 1 sw Y   4xY wNnot a regular filer   )r\  r   rY   r   r_  rP  r+   r`  rc   rE  ra  r.   r   rS  fs       r   test_sock_sendfile_not_a_filezDSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_a_file  s    llneH##G$E$E$8: 	DMM$))99$:;TC D	D 	)1-		D 	Ds   .BB(c           	      j   | j                         \  }}t        j                         }| j                  t        j
                  d      5  | j                  | j                  j                  ||dd              d d d        | j                  | j                  j                         d       y # 1 sw Y   4xY wrd  )r\  ioBytesIOrY   r   r_  rP  r+   r`  rc   rE  ra  rf  s       r   test_sock_sendfile_iobufferzBSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_iobuffer(  s    llneJJL##G$E$E$8: 	DMM$))99$:;TC D	D 	)1-		D 	Ds   .B))B2c           	         | j                         \  }}t        j                         }d|j                  _        | j                  t        j                  d      5  | j                  | j                  j                  ||dd              d d d        | j                  | j                  j                         d       y # 1 sw Y   4xY w)Nri   re  r   )r\  r   r@   filenor   rY   r   r_  rP  r+   r`  rc   rE  ra  rf  s       r   #test_sock_sendfile_not_regular_filezJSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_regular_file1  s    llneIIK "##G$E$E$8: 	DMM$))99$:;TC D	D 	)1-		D 	Ds   .B::Cc                 L   | j                         \  }}| j                  j                         }| j                  j	                         }| j                  j                  |d ||dd t        | j                        d       |j                          t        j                  t        j                        5  | j                  |       d d d        | j                  t              5  | j                  j                   j#                  |       d d d        y # 1 sw Y   MxY w# 1 sw Y   y xY wNr   )r\  r+   r*  rE  rn  _sock_sendfile_native_implr   r<  rA   
contextlibsuppressr   CancelledErrorrP  r3   KeyError	_selectorget_keyr.   r   rS  r+  rn  s        r   test_sock_sendfile_cancel1zASelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_cancel1;  s    llneii%%'!!#		,,S$f-.c$))na	I

  !7!78 	MM#	x( 	.II''-	. 	.	 		. 	.s   0D&DDD#c                 @   | j                         \  }}| j                  j                         }| j                  j	                         }| j                  j                  |d ||dd t        | j                        d       |j                          | j                  j                  ||j	                         ||dd t        | j                        d       | j                  t              5  | j                  j                  j                  |       d d d        y # 1 sw Y   y xY wrq  )r\  r+   r*  rE  rn  rr  r   r<  rA   r3   rv  rw  rx  ry  s        r   test_sock_sendfile_cancel2zASelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_cancel2H  s    llneii%%'!!#		,,S$f-.c$))na	I

		,,S$++-v-.c$))na	Ix( 	.II''-	. 	. 	.s   %&DDc                 8   | j                         \  }}| j                  j                         }t        j                         }d|j
                  _        t        j                  dt                     5  | j                  j                  |d ||dd t        | j                        d       d d d        | j                  j                  j                  |      }| j                  |       |j                   j#                  t        j$                         y # 1 sw Y   ixY w)NFos.sendfilerN   r   )r\  rE  rn  r   r@   	cancelledr   r   BlockingIOErrorr+   rr  r   r<  rw  rx  assertIsNotNoneadd_done_callbackr   ANY)r.   r   rS  rn  r+  keys         r   !test_sock_sendfile_blocking_errorzHSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_blocking_errorU  s    llne!!#iik%*"ZZ?3DE 	MII00dD&12D#dii.!M	M ii!!))$/S!55dhh?	M 	Ms   26DDc                    | j                         \  }}| j                  j                         }| j                  j	                         }t        j                  dt                     5  | j                  j                  |d ||dd t        | j                        d       d d d        | j                  t              5  | j                  j                  j                  |       d d d        |j                         }| j!                  |t"        j$                         | j'                  d| j                  j)                                y # 1 sw Y   xY w# 1 sw Y   pxY w)Nr~  r  r   )r\  rE  rn  r+   r*  r   r   ru   rr  r   r<  r3   rv  rw  rx  	exceptionrb   r   r_  rc   ra  )r.   r   rS  rn  r+  r5  s         r   &test_sock_sendfile_os_error_first_callzMSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_os_error_first_callb  s   llne!!#ii%%'ZZ79= 	MII00dD&12D#dii.!M	M x( 	.II''-	.mmoc7#D#DEDIINN,-	M 	M	. 	.s   '6E:&EEEc                    | j                         \  }}| j                  j                         }| j                  j	                         }t               }t        j                  d|      5  | j                  j                  ||j                         ||dd t        | j                        d       d d d        | j                  t              5  | j                  j                  j                  |       d d d        |j                         }| j!                  ||       | j#                  d| j                  j%                                y # 1 sw Y   xY w# 1 sw Y   bxY wNr~  r  i  )r\  rE  rn  r+   r*  ru   r   r   rr  r   r<  r3   rv  rw  rx  r  assertIsrc   ra  r.   r   rS  rn  r+  errr5  s          r   %test_sock_sendfile_os_error_next_callzLSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_os_error_next_callp  s   llne!!#ii%%'iZZ37 	7II00dkkm15v15tS^157	7
 x( 	.II''-	.mmoc3tyy~~/0	7 	7
	. 	.s   )AE
&EEEc                    | j                         \  }}| j                  j                         }| j                  j	                         }t        j                         }t        j                  d|      5  | j                  j                  ||j                         ||dd t        | j                        d       d d d        | j                  t              5  | j                  j                  j                  |       d d d        |j!                         }| j#                  ||       | j%                  d| j                  j'                                y # 1 sw Y   xY w# 1 sw Y   bxY wr  )r\  rE  rn  r+   r*  r   r_  r   r   rr  r   r<  r3   rv  rw  rx  r  r  rc   ra  r  s          r   test_sock_sendfile_exceptionzCSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_exception  s
   llne!!#ii%%'//1ZZ37 	7II00dkkm15v15tS^157	7
 x( 	.II''-	.mmoc3tyy~~/0	7 	7
	. 	.s   3AE&EEE$)T)rm   rn   ro   r<  r   Protocolr8  classmethodr=  rA  r)   rN  rP  r\  rb  rh  rl  ro  rz  r|  r  r  r  r  r   r   s   @r   r!  r!    s     $D'"" 2  
    2,......@.1"1r   r!  c                   *    e Zd Z fdZddZd Z ej                  d      d        Z ej                  d      d        Z	 ej                  d      d        Z
 ej                  d       ej                  d      d	               Z ej                  d      d
        Z ej                  d      d        Z ej                  d      d        Z ej                  d      d        Z ej                  d      d        Zd Zd Zd Zd Zd Zd Z xZS )UnixReadPipeTransportTestsc                    t         |           | j                         | _        t	        j
                  t        j                        | _        t        j                  t        j                        | _        d| j                  j                  _        t        j                   d      }|j#                          | j%                  |j&                         t        j                   d      }|j#                         }t        j                         }t(        j*                  |_        ||_        | j%                  |j&                         y N)spec_set   zos.set_blockingzos.fstat)r(   r)   new_test_loopr+   r   make_test_protocolr   r  protocolr   r@   rj  	RawIOBasepipern  r   r   startrX   stopstatS_IFIFOst_moder.   blocking_patcherfstat_patcherm_fstatstr/   s        r   r)   z UnixReadPipeTransportTests.setUp  s    &&(	"55g6F6FGIIr||4	()		%::&78 (--.

:.%%'YY[\\
!**+r   c                     t        j                  | j                  | j                  | j                  |      }| j                  t        |       |S Nwaiter)r
   _UnixReadPipeTransportr+   r  r  rX   r#   r.   r  r"   s      r   read_pipe_transportz.UnixReadPipeTransportTests.read_pipe_transport  s@    66tyy$))7;}}>DF	 	,i8r   c                 f   | j                   j                         }| j                  |      }| j                   j                  |       | j                  j
                  j                  |       | j                   j                  d|j                         | j                  |j                                y Nr  r  )r+   r*  r  r   r  r0  rD   assert_reader_read_readyassertIsNoneresultr.   r  trs      r   	test_ctorz$UnixReadPipeTransportTests.test_ctor  s}    ((*%%V%4		$$V,%%88<		2>>2&--/*r   zos.readc                     | j                         }d|_        |j                          |j                  d|j                         | j
                  j                  j                  d       y N   datar  )r  r   r  rD   max_sizer  r3  r.   m_readr  s      r   test__read_readyz+UnixReadPipeTransportTests.test__read_ready  sN    %%'%
!!!R[[1##66w?r   c                    | j                         }d|_        |j                          |j                  d|j                         | j                  | j                  j                         t        j                  | j                         | j                  j                  j                          | j                  j                  j                  d        y )Nr   r  )r  r   r  rD   r  r~   r+   readersr   run_brieflyr  eof_receivedr6  r  s      r   test__read_ready_eofz/UnixReadPipeTransportTests.test__read_ready_eof  s    %%'!
!!!R[[1**+tyy)""557%%88>r   c                 .   | j                         }t        |_        |j                          |j	                  d|j
                         t        j                  | j                         | j                  | j                  j                  j                         y Nr  )r  r  rN   r  rD   r  r   r  r+   r~   r  r3  r   r  s      r   test__read_ready_blockedz3UnixReadPipeTransportTests.test__read_ready_blocked  sf    %%',
!!!R[[1tyy)44;;<r   asyncio.log.logger.errorc                 p   | j                         }t               }||_        t        j                         |_        |j                          |j                  d|j                         |j
                  j                  |       |j                  t        j                  d      t        t        t        f       y )Nr  z;Fatal read error on pipe transport
protocol:.*
transport:.*)exc_info)r  ru   rN   r   r@   _closer  rD   r  r   MockPatternMOCK_ANY)r.   r  m_logexcr  r  s        r   test__read_ready_errorz1UnixReadPipeTransportTests.test__read_ready_error  s     %%'i IIK	
!!!R[[1
		$$S)##""./ x2	 	$ 	4r   c                     | j                         }t        j                         }| j                  j	                  d|       |j                          | j                  | j                  j                         y r  )r  r   r@   r+   
add_readerpause_readingr~   r  )r.   r  r  ms       r   test_pause_readingz-UnixReadPipeTransportTests.test_pause_reading  sS    %%'IIK		Q"
**+r   c                     | j                         }|j                          |j                          | j                  j	                  d|j
                         y r  )r  r  resume_readingr+   r  r  r  s      r   test_resume_readingz.UnixReadPipeTransportTests.test_resume_reading  s@    %%'

		2>>2r   c                     | j                         }t        j                         |_        |j	                          |j                  j                  d        y r   )r  r   r@   r  r!   rD   r  s      r   r   z%UnixReadPipeTransportTests.test_close  s8    %%'IIK	


		$$T*r   c                     | j                         }d|_        t        j                         |_        |j                          | j                  |j                  j                         y rI   )r  _closingr   r@   r  r!   r~   r   r  s      r   test_close_already_closingz5UnixReadPipeTransportTests.test_close_already_closing  sE    %%'IIK	

))*r   c                 j   | j                         }t               }|j                  |       | j                  |j	                                | j                  | j                  j                         t        j                  | j                         | j                  j                  j                  |       y r   )r  r   r  r   
is_closingr~   r+   r  r   r  r  r6  rD   )r.   r  r  r  s       r   test__closez&UnixReadPipeTransportTests.test__close  sv    %%'h
		#(**+tyy)%%88=r   c                    | j                         }| j                  |j                         | j                  |j                         d }|j	                  |       | j
                  j                  j                  |       | j                  j                  j                          | j                  |j                         | j                  |j                         y r   )r  r  	_protocol_loop_call_connection_lostr  r6  rD   r  r!   r  r.   r  r  s      r   test__call_connection_lostz5UnixReadPipeTransportTests.test__call_connection_lost  s    %%'R\\*RXX&
  %%%88=		**,",,'"((#r   c                    | j                         }| j                  |j                         | j                  |j                         t	               }|j                  |       | j                  j                  j                  |       | j                  j                  j                          | j                  |j                         | j                  |j                         y r   )r  r  r  r  ru   r  r  r6  rD   r  r!   r  r  s      r   #test__call_connection_lost_with_errz>UnixReadPipeTransportTests.test__call_connection_lost_with_err  s    %%'R\\*RXX&i
  %%%88=		**,",,'"((#r   c                     | j                         }|j                          t        j                  | j                         | j                  |j                         |j                          y r   )r  r!   r   r  r+   r  r  r  r.   r  s     r   !test_pause_reading_on_closed_pipez<UnixReadPipeTransportTests.test_pause_reading_on_closed_pipe)  sI    %%'

tyy)"((#
r   c                 d    | j                         }|j                          |j                          y r   )r  r  r  s     r   !test_pause_reading_on_paused_pipez<UnixReadPipeTransportTests.test_pause_reading_on_paused_pipe0  s(    %%'

r   c                     | j                         }|j                          t        j                  | j                         | j                  |j                         |j                          y r   )r  r!   r   r  r+   r  r  r  r  s     r   "test_resume_reading_on_closed_pipez=UnixReadPipeTransportTests.test_resume_reading_on_closed_pipe6  sI    %%'

tyy)"((#
r   c                 D    | j                         }|j                          y r   )r  r  r  s     r   "test_resume_reading_on_paused_pipez=UnixReadPipeTransportTests.test_resume_reading_on_paused_pipe=  s    %%' 	r   r   )rm   rn   ro   r)   r  r  r   r   r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r   r   s   @r   r  r    s]   ,$+ TZZ	@ @ TZZ		? 	? TZZ	= = TZZ*+TZZ	4  ,4 TZZ	, , TZZ	3 3 TZZ	+ + TZZ	+ + TZZ	> >$$r   r  c                   P    e Zd Z fdZddZd Zd Z ej                  d      d        Z	 ej                  d      d        Z
 ej                  d      d        Z ej                  d      d	        Z ej                  d      d
        Z ej                  d       ej                  d      d               Z ej                  d      d        Zd Z ej                  d      d        Z ej                  d      d        Z ej                  d      d        Z ej                  d      d        Z ej                  d       ej                  d      d               Z ej                  d      d        Z ej                  d      d        Zd Zd Zd Zd Zd Zd Z xZS )UnixWritePipeTransportTestsc                    t         |           | j                         | _        t	        j
                  t        j                        | _        t        j                  t        j                        | _        d| j                  j                  _        t        j                   d      }|j#                          | j%                  |j&                         t        j                   d      }|j#                         }t        j                         }t(        j*                  |_        ||_        | j%                  |j&                         y r  )r(   r)   r  r+   r   r  r   BaseProtocolr  r   r@   rj  r  r  rn  r   r   r  rX   r  r  S_IFSOCKr  r  s        r   r)   z!UnixWritePipeTransportTests.setUpF  s    &&(	"55g6J6JKIIr||4	()		%::&78 (--.

:.%%'YY[]]
!**+r   c                     t        j                  | j                  | j                  | j                  |      }| j                  t        |       |S r  )r
   _UnixWritePipeTransportr+   r  r  rX   r#   r  s      r   write_pipe_transportz0UnixWritePipeTransportTests.write_pipe_transportX  s@    77		4998<?EG	 	,i8r   c                 h   | j                   j                         }| j                  |      }| j                   j                  |       | j                  j
                  j                  |       | j                   j                  d|j                         | j                  d |j                                y r  )r+   r*  r  r   r  r0  rD   r  r  rc   r  r  s      r   r  z%UnixWritePipeTransportTests.test_ctor_  s    ((*&&f&5		$$V,%%88<		2>>2v}}/r   c                 b    | j                         }| j                  |j                                y r   )r  r   can_write_eofr  s     r   test_can_write_eofz.UnixWritePipeTransportTests.test_can_write_eofh  s%    &&(((*+r   zos.writec                 
   | j                         }d|_        |j                  d       |j                  dd       | j	                  | j
                  j                         | j                  t               |j                         y )N   r  r  )
r  r   r;  rD   r~   r+   writersrc   r(  _bufferr.   m_writer  s      r   
test_writez&UnixWritePipeTransportTests.test_writel  sb    &&( 
""1g.**+bjj1r   c                    | j                         }|j                  d       | j                  |j                         | j                  | j                  j
                         | j                  t        d      |j                         y )Nr   )	r  r;  r~   r   r+   r  rc   r(  r  r   s      r   test_write_no_dataz.UnixWritePipeTransportTests.test_write_no_datau  s]    &&(
(**+34r   c                     | j                         }d|_        |j                  d       | j                  j	                  d|j
                         | j                  t        d      |j                         y )Nr   r  r     ta)	r  r   r;  r+   assert_writer_write_readyrc   r(  r  r   s      r   test_write_partialz.UnixWritePipeTransportTests.test_write_partial}  sU    &&( 
		2??35)2::6r   c                 ~   | j                         }| j                  j                  d|j                         t	        d      |_        |j                  d       | j                  |j                         | j                  j                  d|j                         | j                  t	        d      |j
                         y )Nr  s   previousr  s   previousdata)r  r+   
add_writerr  r(  r  r;  r~   r   r  rc   r   s      r   test_write_bufferz-UnixWritePipeTransportTests.test_write_buffer  s    &&(		Q0{+

(		2??3?3RZZ@r   c                 0   | j                         }t               |_        |j                  d       |j	                  dt        d             | j                  j                  d|j                         | j                  t        d      |j                         y r  )r  r  rN   r;  rD   r(  r+   r  r  rc   r  r   s      r   test_write_againz,UnixWritePipeTransportTests.test_write_again  sm    &&(-/
""1i&89		2??37+RZZ8r   zasyncio.unix_events.loggerc                    | j                         }t               }||_        t        j                         |_        |j                  d       |j                  dd       | j                  | j                  j                         | j                  t               |j                         |j
                  j                  |d       | j                  d|j                         |j                  d       | j                  d|j                         |j                  d       |j                  d       |j                  d       |j                  d       |j                  j                  d       |j!                          y )Nr  r  z#Fatal write error on pipe transportr   r   z=pipe closed by peer or os.write(pipe, data) raised exception.)r  ru   rN   r   r@   _fatal_errorr;  rD   r~   r+   r  rc   r(  r  
_conn_lostwarningr!   )r.   r  m_logr  r  s        r   test_write_errz*UnixWritePipeTransportTests.test_write_err  s    &&(i!))+
""1g.**+bjj1
**A	C 	BMM*
BMM*



((K	M

r   c                     | j                         }|j                          |j                  d       | j                  |j                  d       |j                  d       | j                  |j                  d       y )Nr  r   r   )r  r  r;  rc   r  r   s      r   test_write_closez,UnixWritePipeTransportTests.test_write_close  sZ    &&(

*
*r   c                    | j                         }|j                          | j                  | j                  j                         | j                  | j                  j
                         | j                  |j                                t        j                  | j                         | j                  j                  j                  d        y r   )r  r  r~   r+   r  r  r   r  r   r  r  r6  rD   r  s     r   r  z,UnixWritePipeTransportTests.test__read_ready  s    &&(
**+**+(tyy)%%88>r   c                 P   | j                         }| j                  j                  d|j                         t	        d      |_        d|_        |j                          | j                  | j                  j                         | j                  t	               |j
                         y )Nr  r  r  )
r  r+   r  r  r(  r  r   r~   r  rc   r   s      r   test__write_readyz-UnixWritePipeTransportTests.test__write_ready  st    &&(		Q0w'
 
**+bjj1r   c                 T   | j                         }| j                  j                  d|j                         t	        d      |_        d|_        |j                          | j                  j                  d|j                         | j                  t	        d      |j
                         y )Nr  r        a)	r  r+   r  r  r(  r  r   r  rc   r   s      r   test__write_ready_partialz5UnixWritePipeTransportTests.test__write_ready_partial  sv    &&(		Q0w'
 
		2??34"**5r   c                    | j                         }| j                  j                  d|j                         t	        d      |_        t               |_        |j                          |j                  dt	        d             | j                  j                  d|j                         | j                  t	        d      |j
                         y )Nr  r  )r  r+   r  r  r(  r  r  rN   rD   r  rc   r   s      r   test__write_ready_againz3UnixWritePipeTransportTests.test__write_ready_again  s    &&(		Q0w'
-/
""1i&89		2??37+RZZ8r   c                    | j                         }| j                  j                  d|j                         t	        d      |_        d|_        |j                          |j                  dt	        d             | j                  j                  d|j                         | j                  t	        d      |j
                         y )Nr  r  r   )
r  r+   r  r  r(  r  r   rD   r  rc   r   s      r   test__write_ready_emptyz3UnixWritePipeTransportTests.test__write_ready_empty  s    &&(		Q0w'
 
""1i&89		2??37+RZZ8r   r  c                    | j                         }| j                  j                  d|j                         t	        d      |_        t               x|_        }|j                          | j                  | j                  j                         | j                  | j                  j                         | j                  t	               |j
                         | j                  |j                                |j                          | j                  d|j                         t!        j"                  | j                         | j$                  j&                  j)                  |       y )Nr  r  r   )r  r+   r  r  r(  r  ru   rN   r~   r  r  rc   r   r  assert_not_calledr  r   r  r  r6  rD   )r.   r  r  r  r  s        r   test__write_ready_errz1UnixWritePipeTransportTests.test__write_ready_err  s     &&(		Q0w'
$+I-c
**+**+bjj1(""$BMM*tyy)%%88=r   c                 :   | j                         }| j                  j                  d|j                         d|_        t        d      |_        d|_        |j                          | j                  | j                  j                         | j                  | j                  j                         | j                  t               |j                         | j                  j                  j                  d        | j                  j                   j                          y )Nr  Tr  r  )r  r+   r  r  r  r(  r  r   r~   r  r  rc   r  r6  rD   r  r!   r   s      r   test__write_ready_closingz5UnixWritePipeTransportTests.test__write_ready_closing  s    &&(		Q0w'
 
**+**+bjj1%%88>		**,r   c                    | j                         }| j                  j                  d|j                         | j                  j	                  d|j
                         ddg|_        |j                          | j                  |j                         | j                  | j                  j                         | j                  | j                  j                         | j                  g |j                         | j                  |j                                t        j                   | j                         | j"                  j$                  j'                  d        y )Nr  s   dar  )r  r+   r  r  r  r  r  abortr~   r   r  r  rc   r   r  r   r  r  r6  rD   r   s      r   
test_abortz&UnixWritePipeTransportTests.test_abort  s    &&(		Q0		Q/U^


(**+**+RZZ((tyy)%%88>r   c                    | j                         }| j                  |j                         | j                  |j                         d }|j	                  |       | j
                  j                  j                  |       | j                  j                  j                          | j                  |j                         | j                  |j                         y r   )r  r  r  r  r  r  r6  rD   r  r!   r  r  s      r   r  z6UnixWritePipeTransportTests.test__call_connection_lost  s    &&(R\\*RXX&
  %%%88=		**,",,'"((#r   c                    | j                         }| j                  |j                         | j                  |j                         t	               }|j                  |       | j                  j                  j                  |       | j                  j                  j                          | j                  |j                         | j                  |j                         y r   )r  r  r  r  ru   r  r  r6  rD   r  r!   r  r  s      r   r  z?UnixWritePipeTransportTests.test__call_connection_lost_with_err+  s    &&(R\\*RXX&i
  %%%88=		**,",,'"((#r   c                     | j                         }t        j                         |_        |j	                          |j                  j                          |j	                          y r   )r  r   r@   	write_eofr!   rD   r  s     r   r   z&UnixWritePipeTransportTests.test_close8  sA    &&(yy{


'') 	
r   c                     | j                         }t        j                         |_        d|_        |j                          | j                  |j                  j                         y rI   )r  r   r@   r-  r  r!   r~   r   r  s     r   test_close_closingz.UnixWritePipeTransportTests.test_close_closingA  sE    &&(yy{

,,-r   c                 T   | j                         }|j                          | j                  |j                                | j	                  | j
                  j                         t        j                  | j
                         | j                  j                  j                  d        y r   )r  r-  r   r  r~   r+   r  r   r  r  r6  rD   r  s     r   test_write_eofz*UnixWritePipeTransportTests.test_write_eofH  sm    &&(
(**+tyy)%%88>r   c                     | j                         }dg|_        |j                          | j                  |j	                                | j                  | j                  j                  j                         y )Nr  )	r  r  r-  r   r  r~   r  r6  r   r  s     r   test_write_eof_pendingz2UnixWritePipeTransportTests.test_write_eof_pendingP  sR    &&(Y

(66==>r   r   )rm   rn   ro   r)   r  r  r  r   r   r  r  r	  r  r  r  r  r  r  r  r  r!  r$  r&  r)  r  r  r   r/  r1  r3  r   r   s   @r   r  r  D  s   ,$0, TZZ
2 2 TZZ
5 5 TZZ
7 7 TZZ
A A TZZ
9 9 TZZ,-TZZ
  .2 TZZ
+ +? TZZ
2 2 TZZ
6 6 TZZ
9 9 TZZ
9 9 TZZ*+TZZ
>  ,> TZZ
- - TZZ
? ?$$.??r   r  c                       e Zd Zd Zd Zy)AbstractChildWatcherTestsc                     | j                  t              5   G d dt        j                        }d d d        y # 1 sw Y   y xY w)Nc                       e Zd Zy)FAbstractChildWatcherTests.test_warns_on_subclassing.<locals>.MyWatcherN)rm   rn   ro   r   r   r   	MyWatcherr8  \  s    r   r9  )assertWarnsDeprecationWarningr   AbstractChildWatcher)r.   r9  s     r   test_warns_on_subclassingz3AbstractChildWatcherTests.test_warns_on_subclassingZ  s8    01 	G88 	 	 	s	   9Ac                 "   t        j                         }t        j                         }| j	                  t
        |j                  ||       | j	                  t
        |j                  |       | j	                  t
        |j                  |       | j	                  t
        |j                         | j	                  t
        |j                         | j	                  t
        |j                         | j	                  t
        |j                  |||       y r   )r   r@   r   r<  r3   NotImplementedErroradd_child_handlerremove_child_handlerattach_loopr!   	is_active	__enter____exit__r.   rg  watchers      r   test_not_implementedz.AbstractChildWatcherTests.test_not_implemented_  s    IIK..0!:!:Aq	B!=!=q	B!4!4a	9	0!2!2	4!2!2	4!1!11a	<r   N)rm   rn   ro   r=  rH  r   r   r   r5  r5  X  s    
<r   r5  c                       e Zd Zd Zy)BaseChildWatcherTestsc                     t        j                         }t        j                         }| j	                  t
        |j                  |       y r   )r   r@   r
   BaseChildWatcherr3   r?  _do_waitpidrF  s      r   rH  z*BaseChildWatcherTests.test_not_implementedt  s6    IIK..0!4!4a	9r   N)rm   rn   ro   rH  r   r   r   rJ  rJ  r  s    9r   rJ  c                   h    e Zd Zej                  j                  ej                  d      Z fdZ	d Z
d Zd Zd Zd Zed        Zed	        Zed
        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Z xZS )ChildWatcherTestsMixinr  c                 d   t         |           | j                         | _        d| _        i | _        t        j                  j                  | j                  d      5 | _	        | j                         | _        | j                  j                  | j                         d d d        y # 1 sw Y   y xY w)NFrP   )r(   r)   r  r+   runningzombiesr   r   r   m_add_signal_handlercreate_watcherrG  rB  r-   s    r   r)   zChildWatcherTestsMixin.setUp  s    &&(	ZZ		/1 	0484M..0DLLL$$TYY/	0 	0 	0s   A B&&B/c                 >   t        | j                  t        j                        s|dk7  r| j	                  |d       	 |dk  r| j
                  j                         S || j
                  j                  |      fS # t        $ r Y nw xY w| j                  ryt               )Nri   r   )r   r   )
isinstancerG  r   SafeChildWatcherassertGreaterrR  popitempoprv  rQ  ChildProcessError)r.   pidflagss      r   waitpidzChildWatcherTestsMixin.waitpid  s    dllG$<$<=sA&	Qw||++--DLL,,S111 		<<#%%s   A9 A9 9	BBc                 "    || j                   |<   y r   )rR  )r.   r\  statuss      r   
add_zombiez!ChildWatcherTestsMixin.add_zombie  s    "Sr   c                 @    |dkD  r|dz
  S d|cxk  r	dk  r|dz
  S  |S |S )Nr   i  r   )r.   r`  s     r   waitstatus_to_exitcodez-ChildWatcherTestsMixin.waitstatus_to_exitcode  s:    E>E>!V#e#E>! $ M6Mr   c                     | j                   j                  t        j                  | j                  j
                         y r   )rS  r   r7   r   rG  	_sig_chldr9   s    r   test_create_watcherz*ChildWatcherTestsMixin.test_create_watcher  s)    !!99NNDLL22	4r   c                       fd}|S )Nc                     d } |d| j                         5   |d| j                        5 } | |       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                 N    t        j                  | |t         j                        S )N)wrapsnew_callable)r   r   r@   )targetwrappers     r   r   zIChildWatcherTestsMixin.waitpid_mocks.<locals>.wrapped_func.<locals>.patch  s    zz&/3yy: :r   z*asyncio.unix_events.waitstatus_to_exitcodez
os.waitpid)rc  r^  )r.   r   	m_waitpidr\   s      r   wrapped_funcz:ChildWatcherTestsMixin.waitpid_mocks.<locals>.wrapped_func  s`    : CTE`E`a &|T\\2&6?T9%& & & & & &s!   A
AAA	AAr   )r\   ro  s   ` r   waitpid_mocksz$ChildWatcherTestsMixin.waitpid_mocks  s    	& r   c                    t        j                         }| j                  5  d| _        | j                  j	                  d|ddd       d d d        | j                  |j                         | j                  j                          | j                  |j                         d| _        | j                  dt        d             | j                  j                          |j                  ddddd       |j                          | j                  dt        d             | j                  5  | j                  j                          d d d        | j                  |j                         | j                  j                          | j                  j                          | j                  |j                         y # 1 sw Y   pxY w# 1 sw Y   xY w)	NT*   	   
      F      )r   r@   rG  rQ  r@  r~   r   re  ra  r   r   r   ignore_warningsrR  clearr.   rn  callbacks      r   test_sigchldz#ChildWatcherTestsMixin.test_sigchld  s_    99;\\ 	DDLLL**2xBC	D 	) 	 ) HRL) ((RB; 	HRL)!! 	%LL""$	% 	) 	 )?	D 	D,	% 	%s   'F6(G6G Gc                 z   t        j                         }t        j                         }| j                  5  d| _        | j                  j	                  d|dd       d d d        | j                  |j                         | j                  |j                         | j                  5  | j                  j	                  d|dd       d d d        | j                  |j                         | j                  |j                         | j                  j                          | j                  |j                         | j                  |j                         | j                  dt        d             | j                  j                          |j                  dd	dd       | j                  |j                         |j                          | j                  j                          | j                  |j                         | j                  |j                         | j                  dt        d
             d| _        | j                  j                          |j                  dd
dd       | j                  |j                         |j                          | j                  dt        d             | j                  dt        d             | j                  5  | j                  j                          d d d        | j                  |j                         | j                  |j                         | j                  j                          | j                  j                          | j                  |j                         | j                  |j                         y # 1 sw Y   >xY w# 1 sw Y   xY w# 1 sw Y   xY w)NT+         ,         r  l   Fru     )r   r@   rG  rQ  r@  r~   r   re  ra  r   r   r   r   rx  rR  ry  r.   rn  	callback1	callback2s       r   test_sigchld_two_childrenz0ChildWatcherTestsMixin.test_sigchld_two_children  s   IIK	IIK	 \\ 	@DLLL**2y!Q?	@ 	))*))* \\ 	CLL**2y#rB	C 	))*))* 	 ))*))* 	F1I& ))"b!Q7))* 	 ))*))* 	HSM* ))"c3;))* 	HRL)HRL)!! 	%LL""$	% 	))*))* 	 ))*))*w	@ 	@	C 	CP	% 	%s#   &N%N$N1N!$N.1N:c                 f   t        j                         }t        j                         }| j                  5  d| _        | j                  j	                  d|dd       d d d        | j                  |j                         | j                  |j                         | j                  5  | j                  j	                  d|dd       d d d        | j                  |j                         | j                  |j                         | j                  j                          | j                  |j                         | j                  |j                         | j                  dt        d             | j                  dt        d	             d
| _        | j                  j                          |j                  dddd       |j                  dddd       |j                          |j                          | j                  dt        d             | j                  dt        d             | j                  5  | j                  j                          d d d        | j                  |j                         | j                  |j                         y # 1 sw Y   4xY w# 1 sw Y   xY w# 1 sw Y   ZxY w)NT-      r  .   i{  r  N   r  Fru  r  )r   r@   rG  rQ  r@  r~   r   re  ra  r   r   r   r   rx  r  s       r   .test_sigchld_two_children_terminating_togetherzEChildWatcherTestsMixin.test_sigchld_two_children_terminating_together  s   IIK	IIK	 \\ 	ADLLL**2y"a@	A 	))*))* \\ 	DLL**2y$C	D 	))*))* 	 ))*))* 	HRL)F1I& ))"b"a8))"b$; 	HRL)HRL)!! 	%LL""$	% 	))*))*Q	A 	A	D 	D8	% 	%s#   &J%J3J'JJ$'J0c                 >   t        j                         }| j                  5  | j                  dt	        d             | j                  j                          | j                  j                  d|dd       d d d        |j                  dddd       |j                          | j                  dt        d             | j                  5  | j                  j                          d d d        | j                  |j                         y # 1 sw Y   xY w# 1 sw Y   1xY w)N2   r  r   rv  )r   r@   rG  ra  r   re  r@  r   r   r   rx  r~   r   rz  s      r   test_sigchld_race_conditionz2ChildWatcherTestsMixin.test_sigchld_race_conditionL  s     99;\\ 	@OOB,LL""$LL**2xB?	@ 	((Q26 	F1I&!! 	%LL""$	% 	)	@ 	@	% 	%s   ADDDDc                 B   t        j                         }t        j                         }| j                  5  d| _        | j                  j	                  d|d       d d d        | j                  |j                         | j                  |j                         | j                  5  | j                  j	                  d|d       d d d        | j                  |j                         | j                  |j                         d| _        | j                  dt        d             | j                  j                          |j                  ddd       | j                  |j                         |j                          | j                  dt        d             | j                  5  | j                  j                          d d d        | j                  |j                         | j                  |j                         y # 1 sw Y   xY w# 1 sw Y   HxY w# 1 sw Y   ZxY w)	NT3         Fr  irw  )r   r@   rG  rQ  r@  r~   r   ra  r   re  r   r   r   rx  r  s       r   test_sigchld_replace_handlerz3ChildWatcherTestsMixin.test_sigchld_replace_handlerb  s   IIK	IIK	 \\ 	>DLLL**2y"=	> 	))*))* \\ 	>LL**2y"=	> 	))*))* F1I& ))"b"5))* 	HRL)!! 	%LL""$	% 	))*))*=	> 	>	> 	>$	% 	%s#   %G;$H!H;HHHc                 H   t        j                         }| j                  5  d| _        | j                  j	                  d|d       d d d        | j                  |j                         | j                  j                  d       | j                  |j                         d| _        | j                  dt        d             | j                  5  | j                  j                          d d d        | j                  |j                         y # 1 sw Y   xY w# 1 sw Y   1xY w)NT4   i  Fc   )r   r@   rG  rQ  r@  r~   r   rA  ra  r   rx  re  rz  s      r   test_sigchld_remove_handlerz2ChildWatcherTestsMixin.test_sigchld_remove_handler  s    99; \\ 	?DLLL**2x>	? 	) 	))"-) HRL)!! 	%LL""$	% 	)#	? 	?	% 	%s   %DDDD!c                 t   t        j                         }| j                  5  d| _        | j                  j	                  d|d       d d d        | j                  |j                         d| j                  d<   d| _        | j                  j                          |j                  ddd       |j                          | j                  dt        d             | j                  5  | j                  j                          d d d        | j                  |j                         y # 1 sw Y   xY w# 1 sw Y   1xY w)NT5   ii  Fe   )r   r@   rG  rQ  r@  r~   r   rR  re  r   r   ra  r   rx  rz  s      r   test_sigchld_unknown_statusz2ChildWatcherTestsMixin.test_sigchld_unknown_status  s    99; \\ 	>DLLL**2x=	> 	)  R ((T37 	HSM*!! 	%LL""$	% 	))	> 	>"	% 	%s   %D"#D."D+.D7c                    t        j                         }t        j                         }t        j                         }| j                  5  d| _        | j                  j	                  d|d       | j                  j	                  d|d       | j                  j	                  d|d       d d d        | j                  | j                  j                  d             | j                  | j                  j                  d             | j                  | j                  j                  d             | j                  | j                  j                  d             | j                  dt        d             | j                  dt        d             | j                  dt        d             d	| _        | j                  5  | j                  j                          d d d        | j                  |j                         | j                  |j                         |j                  ddd       y # 1 sw Y   xY w# 1 sw Y   `xY w)
NT6   r   7   r   8   r  r   F)r   r@   rG  rQ  r@  r   rA  r~   ra  r   rx  re  r   r   )r.   rn  r  r  	callback3s        r   test_remove_child_handlerz0ChildWatcherTestsMixin.test_remove_child_handler  s   IIK	IIK	IIK	 \\ 	=DLLL**2y!<LL**2y!<LL**2y!<		= 	99"=> 	99"=>::2>?::2>? 	HQK(HQK(HQK(!! 	%LL""$	% 	))*))*))"a31	= 	=&	% 	%s   	AH)<H6)H36H?c                    t        j                         }| j                  5  d| _        | j                  j	                  d|       d d d        t
        |_        t         j                  j                  t        j                  d      5 }| j                  | j                  j                         d        | j                  |j                         d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NT9   error)r   r@   rG  rQ  r@  r6   rN   r   r   r	   loggerrc   re  r   r   )r.   rn  r{  m_errors       r    test_sigchld_unhandled_exceptionz7ChildWatcherTestsMixin.test_sigchld_unhandled_exception  s    99; \\ 	9DLLL**2x8	9
 !+	ZZszz&( 	,+2T\\335t<OOGNN+		, 	,	9 	9	, 	,s   $CAC!C!C*c                    t        j                         }| j                  5  d| _        | j                  j	                  d|       d d d        | j                  |j                         d| _        | j                  dt        d             t        j                  dt        j                         |j                          | j                  5  | j                  j                          d d d        t        | j                  t         j"                        r| j                  |j                         y |j%                  dd       y # 1 sw Y   xY w# 1 sw Y   hxY w)NT:   Fr     )r   r@   rG  rQ  r@  r~   r   ra  r   r  r^  WNOHANGr   rx  re  rV  r   FastChildWatcherr   rz  s      r   #test_sigchld_child_reaped_elsewherez:ChildWatcherTestsMixin.test_sigchld_child_reaped_elsewhere  s     99;\\ 	9DLLL**2x8	9 	) HQK( 	

2rzz" !! 	%LL""$	% dllG$<$<= X__-,,R51	9 	9 	% 	%s   $E 
E E	Ec                 P   t        j                         }t        j                         }| j                  5  | j                  5  d| _        | j                  dt        d             | j                  dt        d             | j                  j                          | j                  j                  d|       | j                  j                  d|       d d d        d d d        |j                  dd       | j                  |j                         y # 1 sw Y   ?xY w# 1 sw Y   CxY w)NTiO  r  iQ  r  iP  )r   r@   rx  rG  rQ  ra  r   re  r@  r   r~   r   r  s       r   ,test_sigchld_unknown_pid_during_registrationzCChildWatcherTestsMixin.test_sigchld_unknown_pid_during_registration  s     IIK	IIK	!! 
	;4<< 
	;DLOOC!-OOC".LL""$LL**3	:LL**3	:
	; 
	; 	))#q1))*
	; 
	; 
	; 
	;s$   DBDDD	DD%c                 D   t        j                         }| j                  5  d| _        | j                  j	                  d|       d d d        | j
                  }| j                         | _        t         j                  j                  } ||d      5 } || j
                  d      5 }| j                  j                  | j
                         |j                  t        j                         |j                  t        j                  | j                  j                         d d d        d d d        d| _        | j                  dt        d             | j                  j                          |j                  dd       y # 1 sw Y   :xY w# 1 sw Y   mxY w# 1 sw Y   qxY w)NT<   rC   rP   Frs  )r   r@   rG  rQ  r@  r+   r  r   r   rB  r   r7   r   re  ra  r   )r.   rn  r{  old_loopr   m_old_remove	m_new_adds          r   test_set_loopz$ChildWatcherTestsMixin.test_set_loop"  s@    99;\\ 	9DLLL**2x8	9
 99&&(	

!!845 	849923	87@LL$$TYY/00 -- 6 68	8 	8 HQK( ((Q/1	9 	9	8 	8 	8 	8s0   $E=F%A9F
F=F
F	FFc                    t        j                         }t        j                         }t        j                         }| j                  5  d| _        | j                  j	                  d|       | j                  j	                  d|       | j                  j	                  d|       d d d        | j
                  }d | _        t         j                  j                  |d      5 }| j                  t        d      5  | j                  j                  d        d d d        |j                  t        j                         d d d        | j                  dt        d             | j                  dt!        d             | j#                  |j$                         | j#                  |j$                         | j#                  |j$                         | j'                         | _        t         j                  j                  | j
                  d	      5 }| j                  j                  | j
                         |j                  t        j                  | j                  j(                         |j                  dd       |j                  dd
       | j#                  |j$                         d d d        |j+                          |j+                          d| _        | j                  dt        d             | j                  j)                          | j#                  |j$                         | j#                  |j$                         |j                  dd       y # 1 sw Y   xY w# 1 sw Y   JxY w# 1 sw Y   0xY w# 1 sw Y   xY w)NT=   >   in  rC   zA loop is being detached   r  rP   r  Fr  )r   r@   rG  rQ  r@  r+   r   r   r   RuntimeWarningrB  r   r7   r   ra  r   r   r~   r   r  re  r   )r.   rn  r  r  r  r  m_remove_signal_handlerrS  s           r   test_set_loop_race_conditionz3ChildWatcherTestsMixin.test_set_loop_race_conditionA  s    IIK	IIK	IIK	\\ 	;DLLL**2y9LL**2y9LL**3	:		; 99	ZZ13 	 6M&&"$>@ /((./ $;; 	  	HRL)F1I& 	))*))*))* &&(	ZZ		/1 		/4HLL$$TYY/ 88 6 68--b"5--b"5Y--.		/ 	 Xb\* ))*))*))#r2k	; 	;/ /	  	 ,		/ 		/s>   	AM M(7M'M(BM5MM%	 M((M25M>c                 \   t        j                         }| j                  5  d| _        | j	                  dt        d             | j	                  dt        d             | j                  j                          | j                  j                  d|       | j                  j                  d|       | j                  t        | j                  j                        d       t        | j                  t        j                        r/| j                  t        | j                  j                        d       t         j                  j!                  | j"                  d      5 }| j                  j%                          |j'                  t(        j*                         | j-                  | j                  j                         t        | j                  t        j                        r%| j-                  | j                  j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)	NT?   rs  A   r  @   r   rC   )r   r@   rG  rQ  ra  r   re  r@  rc   r   
_callbacksrV  r   r  _zombiesr   r   r+   r!   r   r7   r   r~   )r.   rn  r  r  s       r   r   z!ChildWatcherTestsMixin.test_close  s    IIK	\\ 	<DLOOB,OOB-LL""$LL**2y9LL**2y9S!8!891=$,,(@(@A  T\\%:%:!;Q?""II+- 
<0G""$'??NN$  !8!89dllG,D,DE$$T\\%:%:;
<	< 	<
< 
<	< 	<s%   D<H"B(HH"H	H""H+)rm   rn   ro   r   r   r   r	   r  rx  r)   r^  ra  rc  rf  rp  r|  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   s   @r   rO  rO  {  s[   jj''

I>O	0&#4	 #* #*J @+ @+D -+ -+^ * ** #+ #+J * *. * *4 4 4@ , ," 6 6< + +( 0 0< ;3 ;3z < <r   rO  c                       e Zd Zd Zy)SafeChildWatcherTestsc                     t        j                         5  t        j                  dt               t	        j
                         cd d d        S # 1 sw Y   y xY wNignore)warningscatch_warningssimplefilterr;  r   rW  r9   s    r   rT  z$SafeChildWatcherTests.create_watcher  @    $$& 	.!!(,>?++-	. 	. 	.   .AANrm   rn   ro   rT  r   r   r   r  r        .r   r  c                       e Zd Zd Zy)FastChildWatcherTestsc                     t        j                         5  t        j                  dt               t	        j
                         cd d d        S # 1 sw Y   y xY wr  )r  r  r  r;  r   r  r9   s    r   rT  z$FastChildWatcherTests.create_watcher  r  r  Nr  r   r   r   r  r    r  r   r  c                   T    e Zd Zd Z ej
                  d      d        Zd Zd Zd Z	y)PolicyTestsc                 *    t        j                         S r   )r   DefaultEventLoopPolicyr9   s    r   create_policyzPolicyTests.create_policy  s    --//r   z!asyncio.unix_events.can_use_pidfdc                    d|_         | j                         }| j                  |j                         | j	                  t
              5  |j                         }d d d        | j                  t        j                         | j                  |j                  |       | j	                  t
              5  | j                  ||j                                d d d        d|_         | j                         }| j                  |j                         | j	                  t
              5  |j                         }d d d        | j                  |t        j                         | j                  |j                  |       | j	                  t
              5  | j                  ||j                                d d d        y # 1 sw Y   _xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NFT)r   r  r  _watcherr:  r;  get_child_watcherrb   r   ThreadedChildWatcherr  PidfdChildWatcher)r.   m_can_use_pidfdpolicyrG  s       r   test_get_default_child_watcherz*PolicyTests.test_get_default_child_watcher  s   ',$##%&//*01 	1..0G	1gw'C'CDfoow/01 	?MM'6#;#;#=>	? (,$##%&//*01 	1..0G	1gw'@'@Afoow/01 	?MM'6#;#;#=>	? 	?!	1 	1
	? 	?	1 	1
	? 	?s0   F62!G"G!G6G GGG$c                    | j                         }t        j                         5  t        j                  dt               t        j                         }|j                  |       d d d        | j                  |j                         | j                  t              5  | j                  ||j                                d d d        y # 1 sw Y   dxY w# 1 sw Y   y xY wr  )r  r  r  r  r;  r   r  set_child_watcherr  r  r:  r  )r.   r  rG  s      r    test_get_child_watcher_after_setz,PolicyTests.test_get_child_watcher_after_set  s    ##%$$& 	.!!(,>?..0G$$W-	.
 	foow/01 	?MM'6#;#;#=>	? 	?	. 	.	? 	?s   A C!CCCc                 l     fd} j                         t        j                         5  t        j                  dt               j                  t        j                                d d d        t        j                  |      }|j                          |j                          y # 1 sw Y   @xY w)Nc                     j                  j                                j                  j                         t        j
                         t        j                         5  t        j                  dt               j                         } d d d        j                   t        j                         j                  | j                         j                         j                          y # 1 sw Y   cxY wr  )r,   rD  rb   get_event_loopr   AbstractEventLoopr  r  r  r;  r  rW  r  r  r!   )rG  r  r.   s    r   rg  z4PolicyTests.test_get_child_watcher_thread.<locals>.f  s    !!&"7"7"9:!!&"7"7"9")";";=((* 5%%h0BC 2245 !!'7+C+CDgmm,!!#))+5 5s   #+C00C9r  rl  )r  r  r  r  r;  r  r   rW  	threadingThreadr  join)r.   rg  thr  s   `  @r   test_get_child_watcher_threadz)PolicyTests.test_get_child_watcher_thread  s    	, ##%$$& 	A!!(,>?$$W%=%=%?@	A Q'


		A 	As   >B**B3c                    | j                         }|j                         }|j                  |       t        j                         5  t        j
                  dt               t        j                         }|j                  |       d d d        j                  |       | j                  |j                  |       |j                         }|j                  |       | j                  |j                  |       |j                  d        | j                  |j                  d        |j                          |j                          y # 1 sw Y   xY wr  )r  rD  r,   r  r  r  r;  r   rW  r  rB  r  r  r!   )r.   r  r+   rG  new_loops        r   ,test_child_watcher_replace_mainloop_existingz8PolicyTests.test_child_watcher_replace_mainloop_existing  s    ##%$$&d# $$& 	.!!(,>?..0G$$W-	. 	D!gmmT*((*h'gmmX.d#gmmT*

%	. 	.s   A EEN)
rm   rn   ro   r  r   r   r  r  r  r  r   r   r   r  r    s6    0 TZZ34? 5?.	?2r   r  c                   $    e Zd Zd Zd Zd Zd Zy)TestFunctionalc                 t    t        j                         | _        t        j                  | j                         y r   )r   rD  r+   r,   r9   s    r   r)   zTestFunctional.setUp  s$    **,	tyy)r   c                 b    | j                   j                          t        j                  d        y r   )r+   r!   r   r,   r9   s    r   tearDownzTestFunctional.tearDown  s    		t$r   c                      fd}d } |       5   j                   j                  t               |       d d d         |       5   j                   j                  t               |       d d d         |       5   j                   j	                  t                      d d d         |       5   j                   j                  t                      d d d        y # 1 sw Y   xY w# 1 sw Y   |xY w# 1 sw Y   UxY w# 1 sw Y   y xY w)Nc                  0     j                  t        d      S )NzInvalid file object)rY   r6   r9   s   r   assert_raiseszFTestFunctional.test_add_reader_invalid_argument.<locals>.assert_raises  s    ))*6LMMr   c                       y r   r   r   r   r   rJ   zATestFunctional.test_add_reader_invalid_argument.<locals>.<lambda>  rK   r   )r+   r  r   r  remove_readerremove_writer)r.   r  re   s   `  r    test_add_reader_invalid_argumentz/TestFunctional.test_add_reader_invalid_argument  s    	N _ 	/II  2.	/_ 	/II  2.	/ _ 	.II##FH-	._ 	.II##FH-	. 	.	/ 	/	/ 	/	. 	.	. 	.s/   %C%C%9$C1,$C=C"%C.1C:=Dc                      fd fd}t        j                         \  }	  j                  j                   |              j	                          |j	                          y # j	                          |j	                          w xY w)Nc                  0     j                  t        d      S )Nz'File descriptor .* is used by transport)rY   rO   r9   s   r   r  zLTestFunctional.test_add_reader_or_writer_transport_fd.<locals>.assert_raises&  s    )):< <r   c                    K   j                   j                  d        d {   \  } }	 d }        5  j                   j                  |       d d d                5  j                   j                  j                         |       d d d                5  j                   j	                         d d d                5  j                   j	                  j                                d d d                5  j                   j                  |       d d d                5  j                   j                  j                         |       d d d                5  j                   j                         d d d                5  j                   j                  j                                d d d        | j                          y 7 # 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   ;xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   uxY w# | j                          w xY ww)Nc                  *    t        j                         S r   )r   r  r   r   r   rJ   zWTestFunctional.test_add_reader_or_writer_transport_fd.<locals>.runner.<locals>.<lambda>-  s    ((* r   r   c                       y r   r   r   r   r   rJ   zWTestFunctional.test_add_reader_or_writer_transport_fd.<locals>.runner.<locals>.<lambda>0  rK   r   )r+   create_connectionr  rn  r  r  r  r!   )r  prre   r  rsockr.   s      r   runnerzETestFunctional.test_add_reader_or_writer_transport_fd.<locals>.runner+  s    9966* 7 8 8FB!"_ 4II((34"_ =II((<= #_ 3II++E23"_ <II++ELLN;< #_ 4II((34"_ =II((<= #_ 3II++E23"_ <II++ELLN;< 
784 4= =3 3< <4 4= =3 3< < 
s   "IGI
H= GH= $+G&H= G3:H= 	*H 3H= HH= .+HH= (H%H= *H1=H= IG#H= &G0+H= 3G=8H=  H
H= HH= H"H= %H.*H= 1H:6H= =II)r   
socketpairr+   r   r!   )r.   r	  wsockr  r  s   `  @@r   &test_add_reader_or_writer_transport_fdz5TestFunctional.test_add_reader_or_writer_transport_fd%  sb    	<
	< ((*u	II((2KKMKKM KKMKKMs    A) )"BN)rm   rn   ro   r)   r  r   r  r   r   r   r  r    s    *%. )r   r  forkzrequires os.fork()c                       e Zd Zd Z ej
                  d      d        Z ej
                  d      d        Z ej
                  d      d        Zy)TestForkc           	        K   t        j                         }t        j                         \  }}| j	                  t        j
                  |       | j	                  t        j
                  |       t        j                         }|dk(  r	 | j                  t              5  t        j                         j                         }d d d        t        j                  |dt        t        |            j                         z          t        j$                  d       y t        j&                  |d      }| j)                  |d d d|       | j+                  t-        |dd        t        |             t/        |d       y # 1 sw Y   xY w# t        $ r t        j                  |d       Y t         $ r:}t        j                  |dt#        |      j                         z          Y d }~d }~ww xY w# t        j$                  d       w xY ww)Nr   s   LOOP:s   NO LOOPs   ERROR:d   r  r   )r   get_running_loopr  r  rX   r!   r  r:  r;  get_event_loop_policyr  r;  stridencoderO   BaseExceptionascii_exitreadrc   assertNotEqualintr   )r.   r+   rwr\  er  s          r   test_fork_not_share_event_loopz'TestFork.test_fork_not_share_event_loopT  st    '')wwy1!$!$ggi!8	%%&89 L"88:IIKDLHs2d8}';';'==>  WWQ_FVBQZ6:F12JD:q)L L   (J'  ;Ia(99::; sb   BHF #E8 AF A7H8F=F G'#G* %G'-0G"G* "G''G* *HHmd5c                     t        j                  d      j                         } j                  |j                         |j                         |j                         |j                         fd fd}t        j                   |               j                  j                                 j                  j                                y )Nr  c                  t    t        j                   t         j                   fd       j                          y )Nc                  $    j                         S r   set)argschild_handleds    r   rJ   zHTestFork.test_fork_signal_handling.<locals>.child_main.<locals>.<lambda>z  s    8I8I8K r   )r7   SIGTERMr&  )r(  child_starteds   r   
child_mainz6TestFork.test_fork_signal_handling.<locals>.child_mainy  s"    MM&..*KLr   c                    K   t        j                         } | j                  t        j                  fd       j                        }|j                          j                          t        j                  |j                  t        j                         |j                          d }j                  t        j                   |              d {   d       y 7 
w)Nc                  $    j                         S r   r%  )r'  parent_handleds    r   rJ   zBTestFork.test_fork_signal_handling.<locals>.main.<locals>.<lambda>  s    .BTBTBV r   r  c                  J   K   t        j                  d       d {    y7 wNg?rr  )r   sleepr   r   r   r\   z>TestFork.test_fork_signal_handling.<locals>.main.<locals>.func  s      mmC((( )s   #!#rr  )r   r  rP   r7   r)  Processr  waitr  killr\  r  rc   create_task)r+   processr\   r+  r*  ctxr.  r.   s      r   mainz0TestFork.test_fork_signal_handling.<locals>.main}  s     ++-D##FNN4VWkkk4GMMO GGGKK0LLN
 7#6#6tv#>>C>s   CC#C!C#)multiprocessingget_contextManagerrX   shutdownEventr   runr~   is_setr   )r.   managerr8  r(  r+  r*  r7  r.  s   `  @@@@@r   test_fork_signal_handlingz"TestFork.test_fork_signal_handlingn  s     ))&1++-(() 	 	D 	D" 	DF..01,,./r   c                 X   t        j                  d      }|j                         }| j                  |j                         |j                  dd      fd|j                  fd      }|j                          |j                          | j                  j                  d       y )Nr  ir   c                  Z   K   t        j                  d       d {    d _        y 7 wr0  )r   r1  value)r  s   r   r+  z2TestFork.test_fork_asyncio_run.<locals>.child_main  s%     --$$$FL %s   +)+c                  8    t        j                                 S r   r   r>  r+  s   r   rJ   z0TestFork.test_fork_asyncio_run.<locals>.<lambda>      W[[-F r   r  rr  r9  r:  r;  rX   r<  Valuer2  r  r  rc   rE  r.   r7  r@  r6  r+  r  s       @@r   test_fork_asyncio_runzTestFork.test_fork_asyncio_run  s~    ))&1++-(()sA&	 ++%F+Gr*r   c                 X   t        j                  d      }|j                         }| j                  |j                         |j                  dd      fd|j                  fd      }|j                          |j                          | j                  j                  d       y )Nr  rC  r   c                     K   t        j                  t        j                  dd       d {   } | j	                          d {   _        y 7 "7 w)Nz-cpass)r   create_subprocess_execsys
executabler3  rE  )procr  s    r   r+  z9TestFork.test_fork_asyncio_subprocess.<locals>.child_main  s<      77fUUD!%,FL V,s!   )AAAAAAc                  8    t        j                                 S r   rG  rH  s   r   rJ   z7TestFork.test_fork_asyncio_subprocess.<locals>.<lambda>  rI  r   r  r   rJ  rL  s       @@r   test_fork_asyncio_subprocessz%TestFork.test_fork_asyncio_subprocess  s~    ))&1++-(()sA&	- ++%F+Gq)r   N)	rm   rn   ro   r   r   requires_hashdigestrA  rM  rV  r   r   r   r  r  Q  sk    *4 (^''."0 /"0H (^''.+ /+  (^''.* /*r   r  __main__)4rs  rp   rj  r9  r  r   r7   r   r  rR  r  r  r   r  test.supportr   r   r   r   platformSkipTestr   r	   r
   test.test_asyncior   r   r   r  r  r   r   r#   r  TestCaser%   r  r   r!  r  r  r5  rJ  rO  r  r  r  r  IsolatedAsyncioTestCaser  rm   r8  r   r   r   <module>r_     sA      	  	     
     " & % '<<7
(

K
((    1( 88 V89Z1:#6#6 Z1 :Z1z WVY/57g/z':': g/7g/T WR,02J1Z-@-@ J12J1Zn!4!4 nbQ?*"5"5 Q?h< 1 1 <49H-- 9b< b<J.3Z5H5H ..3Z5H5H .Z(## ZzCX&& CL WR(*>?a*x// a* @a*F zHMMO r   