
    daf
                    z   d 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	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 dd	lmZ ej2                  d
k(  r ej4                  d      ddlZddlmZ ddlmZ ddlmZ  d Z!ejD                  Z#d Z$d Z%d Z& ejN                  e	d       G d de jP                               Z) ejN                   e*e
d      d       G d de jP                               Z+ ejN                   e*ed      d       G d de jP                               Z, G d de jP                        Z- G d  d!e jP                        Z. G d" d#ejP                        Z/ G d$ d%ejP                        Z0 G d& d'      Z1 G d( d)e1e jP                        Z2 G d* d+e1e jP                        Z3 G d, d-ejP                        Z4 G d. d/ejP                        Z5 ejN                   e*ed0      d1       G d2 d3ejl                               Z7e8d4k(  r ejr                          yy)5zTests for unix_events.py.    N)_cleanup_tests)mock)support)	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     =/root/Python-3.12.4/Lib/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%   4   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r0   s    r   test_check_signalz.SelectorEventLoopSignalTests.test_check_signalE   sI    tyy..	5		//q	Br   c                 \    | j                   j                  t        j                  dz          y )Nr   )r-   _handle_signalr9   r:   r;   s    r   test_handle_signal_no_handlerz:SelectorEventLoopSignalTests.test_handle_signal_no_handlerK   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_handlersr9   r:   remove_signal_handlerr>   assert_called_with)r0   hs     r   $test_handle_signal_cancelled_handlerzASelectorEventLoopSignalTests.test_handle_signal_cancelled_handlerN   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   )r9   r:   valid_signalsr8   set_wakeup_fdside_effectr5   RuntimeErrorr-   add_signal_handlerSIGINTr0   m_signals     r   #test_add_signal_handler_setup_errorz@SelectorEventLoopSignalTests.test_add_signal_handler_setup_errorW   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_coroutinef   s	     s   z1coroutines cannot be used with add_signal_handler)	r9   r:   
addCleanupr#   assertRaisesRegexr6   r-   rR   rS   )r0   rU   rY   	coro_funccoro_objfuncs         r   'test_add_signal_handler_coroutine_errorzDSelectorEventLoopSignalTests.test_add_signal_handler_coroutine_errorb   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rK   r   r   r   r   rL   zFSelectorEventLoopSignalTests.test_add_signal_handler.<locals>.<lambda>x   rM   r   )r9   r:   rN   r-   rR   SIGHUPrD   getassertIsInstancer   rA   assertEqual	_callback)r0   rU   cbrG   s       r   test_add_signal_handlerz4SelectorEventLoopSignalTests.test_add_signal_handlers   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)r8   )fds    r   rO   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   Errrn          LLEr   rt   c                       yrK   r   r   r   r   rL   zTSelectorEventLoopSignalTests.test_add_signal_handler_install_error.<locals>.<lambda>   rM   r   )
r9   r:   rN   rO   OSErrorrP   r5   r-   rR   rS   )r0   rU   rO   rt   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ro   rp   rq   rr   EINVALr   r   r   rt   r{      ru   r   rt   c                       yrK   r   r   r   r   rL   zUSelectorEventLoopSignalTests.test_add_signal_handler_install_error2.<locals>.<lambda>   rM   r   c                       yrK   r   r   r   r   rL   zUSelectorEventLoopSignalTests.test_add_signal_handler_install_error2.<locals>.<lambda>   rM   r   r   )r9   r:   rN   rw   rP   r-   rD   rb   r5   rQ   rR   rS   assertFalseinfocalledre   rO   
call_countr0   	m_loggingrU   rt   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>.ErrNr|   r   r   r   rt   r      ru   r   rt   c                       yrK   r   r   r   r   rL   zUSelectorEventLoopSignalTests.test_add_signal_handler_install_error3.<locals>.<lambda>   rM   r      )rw   r9   rP   r:   rN   r5   rQ   r-   rR   rS   r   r   r   re   rO   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rK   r   r   r   r   rL   zISelectorEventLoopSignalTests.test_remove_signal_handler.<locals>.<lambda>   rM   r   r   )r9   r:   rN   r-   rR   rb   
assertTruerE   rO   r   re   SIG_DFL	call_argsrT   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rK   r   r   r   r   rL   zKSelectorEventLoopSignalTests.test_remove_signal_handler_2.<locals>.<lambda>   rM   r   r   )r9   r:   rS   rN   r-   rR   objectrD   rb   rO   
reset_mockr   rE   r   r   re   default_int_handlerr   rT   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rK   r   r   r   r   rL   zWSelectorEventLoopSignalTests.test_remove_signal_handler_cleanup_error.<locals>.<lambda>   rM   r   )r9   r:   rN   r-   rR   rb   r8   rO   rP   rE   r   r   )r0   r   rU   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rK   r   r   r   r   rL   zOSelectorEventLoopSignalTests.test_remove_signal_handler_error.<locals>.<lambda>   rM   r   )
r9   r:   rN   r-   rR   rb   rw   rP   r5   rE   rT   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rK   r   r   r   r   rL   zPSelectorEventLoopSignalTests.test_remove_signal_handler_error2.<locals>.<lambda>   rM   r   c                   $    e Zd Zej                  Zy)KSelectorEventLoopSignalTests.test_remove_signal_handler_error2.<locals>.ErrNr|   r   r   r   rt   r      ru   r   rt   )r9   r:   rN   r-   rR   rb   rw   rP   r5   rQ   rE   )r0   rU   rt   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rK   r   r   r   r   rL   z9SelectorEventLoopSignalTests.test_close.<locals>.<lambda>   rM   r   c                       yrK   r   r   r   r   rL   z9SelectorEventLoopSignalTests.test_close.<locals>.<lambda>   rM   r   r   r   rk   )r9   r:   rN   r-   rR   rb   SIGCHLDre   lenrD   rO   r   r#   assert_called_once_withrT   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rK   r   r   r   r   rL   zGSelectorEventLoopSignalTests.test_close_on_finalizing.<locals>.<lambda>  rM   r   r   Tz skipping signal handlers removalr   )r9   r:   rN   r-   rR   rb   re   r   rD   is_finalizingreturn_valuer   assertWarnsRegexResourceWarningr#   r   r   )r0   rU   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)ro   rp   rq   r+   r<   r?   rH   r   patchrV   r_   rh   rx   r   r   r   r   r   r   r   r   r   __classcell__r1   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  r2   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   rL   z]SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_sock.<locals>.<lambda>,  rM   r   )
test_utilsunix_socket_pathsocketr   bindlistenr#   r-   create_unix_serverrun_until_completewait_closed)r0   pathsockcorosrvs        r   *test_create_unix_server_existing_path_sockzKSelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_sock$  s    ((* 		<d==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   rL   zSSelectorEventLoopUnixSocketTests.test_create_unix_server_pathlike.<locals>.<lambda>5  rM   r   )	r   r   r   FakePathr-   r   r   r#   r   )r0   r   srv_coror   s       r    test_create_unix_server_pathlikezASelectorEventLoopUnixSocketTests.test_create_unix_server_pathlike1  s    ((* 	<d%%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   rL   zWSelectorEventLoopUnixSocketTests.test_create_unix_connection_pathlike.<locals>.<lambda>=  rM   r   )	r   r   r   r   r-   create_unix_connectionr5   FileNotFoundErrorr   r0   r   r   s      r   $test_create_unix_connection_pathlikezESelectorEventLoopUnixSocketTests.test_create_unix_connection_pathlike:  s    ((* 	3d%%d+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   rL   z`SelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsock.<locals>.<lambda>I  rM   r   zAddress.*is already in use)r   gen_unix_socket_pathrZ   r   unlinkopenr#   r-   r   r[   rw   r   r   s      r   -test_create_unix_server_existing_path_nonsockzNSelectorEventLoopUnixSocketTests.test_create_unix_server_existing_path_nonsockC  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   rL   zSSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_bool.<locals>.<lambda>O  rM   r   spamT)r   sslz"ssl argument must be an SSLContext)r-   r   r[   r6   r   r0   r   s     r    test_create_unix_server_ssl_boolzASelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_boolN  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   rL   zXSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosock.<locals>.<lambda>V  rM   r   r   z#path was not specified, and no sockr-   r   r[   r8   r   r   s     r   %test_create_unix_server_nopath_nosockzFSelectorEventLoopUnixSocketTests.test_create_unix_server_nopath_nosockU  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   rL   zXSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsock.<locals>.<lambda>^  rM   r   r   r   "A UNIX Domain Stream.*was expected)r   r-   r   r[   r8   r   r0   r   r   s      r   %test_create_unix_server_path_inetsockzFSelectorEventLoopUnixSocketTests.test_create_unix_server_path_inetsock[  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   rL   zUSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgram.<locals>.<lambda>g  rM   r   r   r   )r   r   
SOCK_DGRAMr-   r   r[   r8   r   r   s      r   "test_create_unix_server_path_dgramzCSelectorEventLoopUnixSocketTests.test_create_unix_server_path_dgramd  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   rL   z^SelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittype.<locals>.<lambda>x  rM   r   r   )r   r   rZ   r   r   r   r   SOCK_STREAMr   r   r-   r   r   r#   r   )r0   fnr   r   r   s        r   +test_create_unix_server_path_stream_bittypezLSelectorEventLoopUnixSocketTests.test_create_unix_server_path_stream_bittypem  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   rL   zfSelectorEventLoopUnixSocketTests.test_create_unix_server_ssl_timeout_with_plain_sock.<locals>.<lambda>  rM   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   rL   z\SelectorEventLoopUnixSocketTests.test_create_unix_connection_path_inetsock.<locals>.<lambda>  rM   r   r   r   )r   r-   r   r[   r8   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   rL   zUSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_error.<locals>.<lambda>  rM   r   z/testr   c                       y r   r   r   r   r   rL   zUSelectorEventLoopUnixSocketTests.test_create_unix_server_bind_error.<locals>.<lambda>  rM   r   )r   rB   r   r   rw   r   rP   r-   r   r5   r   r   r#   r   MemoryError)r0   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   rL   zXSelectorEventLoopUnixSocketTests.test_create_unix_connection_path_sock.<locals>.<lambda>  rM   r   r   zpath and sock can not be)r-   r   osdevnullr   r[   r8   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   rL   z\SelectorEventLoopUnixSocketTests.test_create_unix_connection_nopath_nosock.<locals>.<lambda>  rM   r   zno path and sock were specifiedr-   r   r[   r8   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   rL   z_SelectorEventLoopUnixSocketTests.test_create_unix_connection_nossl_serverhost.<locals>.<lambda>  rM   r   r   )server_hostnamez"server_hostname is only meaningfulr-   r   r	  r
  r[   r8   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   rL   z_SelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_noserverhost.<locals>.<lambda>  rM   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   rL   zjSelectorEventLoopUnixSocketTests.test_create_unix_connection_ssl_timeout_with_plain_sock.<locals>.<lambda>  rM   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   )ro   rp   rq   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)r0   r-   s     r   __init__z7SelectorEventLoopUnixSockSendfileTests.MyProto.__init__  s@     DLDK!DI))+DH!DN,,.DKr   c                 V    d| _         || _        | j                  j                  d        y rK   )r'  r$   r-  
set_result)r0   r$   s     r   connection_madez>SelectorEventLoopUnixSockSendfileTests.MyProto.connection_made  s"    DL&DNKK""4(r   c                 :    | j                   j                  |       y r   )r*  extend)r0   r*  s     r   data_receivedz<SelectorEventLoopUnixSockSendfileTests.MyProto.data_received  s    IIT"r   c                 H    d| _         | j                  j                  d        y rK   )r(  r,  r0  )r0   excs     r   connection_lostz>SelectorEventLoopUnixSockSendfileTests.MyProto.connection_lost  s    DKHH%r   c                 8   K   | j                    d {    y 7 wr   )r,  r;   s    r   r   z:SelectorEventLoopUnixSockSendfileTests.MyProto.wait_closed  s     ((NNs   N)ro   rp   rq   r.  r1  r4  r7  r   r   r   r   MyProtor%    s    	/	)
	#	&	r   r9  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fpr1   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?  r1   s    r   rB  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;  filerZ   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_RCVBUFrZ   r#   )r0   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)rN  c                       S r   r   )protos   r   rL   z@SelectorEventLoopUnixSockSendfileTests.prepare.<locals>.<lambda>
  s    E r   r   c                       j                   j                          j                   j                                j                          j                  j                                y r   )r$   r#   rQ  r   )rT  r0   servers   r   rN  z?SelectorEventLoopUnixSockSendfileTests.prepare.<locals>.cleanup  sF    OO!!#MM%++-.LLNMM&,,./r   )rO  r9  r-   r   find_unused_portr   HOSTrQ  create_serversock_connectr-  rZ   )r0   r   portsrv_sockrN  rT  rV  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   r[   r   SendfileNotAvailableErrorrQ  r-   _sock_sendfile_nativerF  re   tell)r0   r   rT  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   r[   r   r`  rQ  r-   ra  re   rF  rb  r0   r   rT  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re  )r]  ioBytesIOr[   r   r`  rQ  r-   ra  re   rF  rb  rg  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)Nrk   rf  r   )r]  r   rB   filenor   r[   r   r`  rQ  r-   ra  re   rF  rb  rg  s       r   #test_sock_sendfile_not_regular_filezJSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_not_regular_file4  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+  rF  ro  _sock_sendfile_native_implr   r=  rC   
contextlibsuppressr   CancelledErrorrQ  r5   KeyError	_selectorget_keyr0   r   rT  r,  ro  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rr  )r]  r-   r+  rF  ro  rs  r   r=  rC   r5   rw  rx  ry  rz  s        r   test_sock_sendfile_cancel2zASelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_cancel2K  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rP   r   )r]  rF  ro  r   rB   	cancelledr   r   BlockingIOErrorr-   rs  r   r=  rx  ry  assertIsNotNoneadd_done_callbackr   ANY)r0   r   rT  ro  r,  keys         r   !test_sock_sendfile_blocking_errorzHSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_blocking_errorX  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]  rF  ro  r-   r+  r   r   rw   rs  r   r=  r5   rw  rx  ry  	exceptionrd   r   r`  re   rb  )r0   r   rT  ro  r,  r6  s         r   &test_sock_sendfile_os_error_first_callzMSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_os_error_first_calle  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]  rF  ro  r-   r+  rw   r   r   rs  r   r=  r5   rw  rx  ry  r  assertIsre   rb  r0   r   rT  ro  r,  errr6  s          r   %test_sock_sendfile_os_error_next_callzLSelectorEventLoopUnixSockSendfileTests.test_sock_sendfile_os_error_next_calls  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]  rF  ro  r-   r+  r   r`  r   r   rs  r   r=  r5   rw  rx  ry  r  r  re   rb  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)ro   rp   rq   r=  r   Protocolr9  classmethodr>  rB  r+   rO  rQ  r]  rc  ri  rm  rp  r{  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   rB   rk  	RawIOBasepipero  r   r   startrZ   stopstatS_IFIFOst_moder0   blocking_patcherfstat_patcherm_fstatstr1   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  rZ   r%   r0   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  r1  rF   assert_reader_read_readyassertIsNoneresultr0   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  rF   max_sizer  r4  r0   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  rF   r  r   r-   readersr   run_brieflyr  eof_receivedr7  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  rP   r  rF   r  r   r  r-   r   r  r4  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  rw   rP   r   rB   _closer  rF   r  r   MockPatternMOCK_ANY)r0   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   rB   r-   
add_readerpause_readingr   r  )r0   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   rB   r  r#   rF   r  s      r   r   z%UnixReadPipeTransportTests.test_close  s8    %%'IIK	


		$$T*r   c                     | j                         }d|_        t        j                         |_        |j                          | j                  |j                  j                         y rK   )r  _closingr   rB   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  r7  rF   )r0   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  r7  rF   r  r#   r  r0   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  rw   r  r  r7  rF   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  r0   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_pipe3  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_pipe9  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   )ro   rp   rq   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   rB   rk  r  r  ro  r   r   r  rZ   r  r  S_IFSOCKr  r  s        r   r+   z!UnixWritePipeTransportTests.setUpI  s    &&(	"55g6J6JKIIr||4	()		%::&78 (--.

:.%%'YY[]]
!**+r   c                     t        j                  | j                  | j                  | j                  |      }| j                  t        |       |S r  )r   _UnixWritePipeTransportr-   r  r  rZ   r%   r  s      r   write_pipe_transportz0UnixWritePipeTransportTests.write_pipe_transport[  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  r1  rF   r  r  re   r  r  s      r   r  z%UnixWritePipeTransportTests.test_ctorb  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_eofk  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<  rF   r   r-   writersre   r)  _bufferr0   m_writer  s      r   
test_writez&UnixWritePipeTransportTests.test_writeo  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  re   r)  r   r  s      r   test_write_no_dataz.UnixWritePipeTransportTests.test_write_no_datax  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_readyre   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  re   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  rP   r<  rF   r)  r-   r  r	  re   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  rw   rP   r   rB   _fatal_errorr<  rF   r   r-   r  re   r)  r   
_conn_lostwarningr#   )r0   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<  re   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  r7  rF   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  re   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  re   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  rP   rF   r  re   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   rF   r  re   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   rw   rP   r   r  r  re   r   r  assert_not_calledr  r   r  r  r7  rF   )r0   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  re   r  r7  rF   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  re   r   r  r   r  r  r7  rF   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  r7  rF   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  rw   r  r  r7  rF   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   rB   	write_eofr#   rF   r  s     r   r   z&UnixWritePipeTransportTests.test_close;  sA    &&(yy{


'') 	
r   c                     | j                         }t        j                         |_        d|_        |j                          | j                  |j                  j                         y rK   )r  r   rB   r.  r  r#   r   r   r  s     r   test_close_closingz.UnixWritePipeTransportTests.test_close_closingD  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  r7  rF   r  s     r   test_write_eofz*UnixWritePipeTransportTests.test_write_eofK  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  r7  r   r  s     r   test_write_eof_pendingz2UnixWritePipeTransportTests.test_write_eof_pendingS  sR    &&(Y

(66==>r   r   )ro   rp   rq   r+   r  r  r  r   r   r  r  r
  r  r  r  r  r  r  r  r   r"  r%  r'  r*  r  r  r   r0  r2  r4  r   r   s   @r   r  r  G  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)ro   rp   rq   r   r   r   	MyWatcherr9  _  s    r   r:  )assertWarnsDeprecationWarningr   AbstractChildWatcher)r0   r:  s     r   test_warns_on_subclassingz3AbstractChildWatcherTests.test_warns_on_subclassing]  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   rB   r   r=  r5   NotImplementedErroradd_child_handlerremove_child_handlerattach_loopr#   	is_active	__enter____exit__r0   rh  watchers      r   test_not_implementedz.AbstractChildWatcherTests.test_not_implementedb  s    IIK..0!:!:Aq	B!=!=q	B!4!4a	9	0!2!2	4!2!2	4!1!11a	<r   N)ro   rp   rq   r>  rI  r   r   r   r6  r6  [  s    
<r   r6  c                       e Zd Zd Zy)BaseChildWatcherTestsc                     t        j                         }t        j                         }| j	                  t
        |j                  |       y r   )r   rB   r   BaseChildWatcherr5   r@  _do_waitpidrG  s      r   rI  z*BaseChildWatcherTests.test_not_implementedw  s6    IIK..0!4!4a	9r   N)ro   rp   rq   rI  r   r   r   rK  rK  u  s    9r   rK  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)NFrR   )r*   r+   r  r-   runningzombiesr   r   r   m_add_signal_handlercreate_watcherrH  rC  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               )Nrk   r   )r   r   )
isinstancerH  r   SafeChildWatcherassertGreaterrS  popitempoprw  rR  ChildProcessError)r0   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   )rS  )r0   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   )r0   ra  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   )rT  r   r9   r   rH  	_sig_chldr;   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   rB   )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)rd  r_  )r0   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^   rp  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   rB   rH  rR  rA  r   r   rf  rb  r   r   r   ignore_warningsrS  clearr0   ro  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   Frv     )r   rB   rH  rR  rA  r   r   rf  rb  r    r   r   r   ry  rS  rz  r0   ro  	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  Frv  r  )r   rB   rH  rR  rA  r   r   rf  rb  r   r    r   r   ry  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   rw  )r   rB   rH  rb  r   rf  rA  r   r   r    ry  r   r   r{  s      r   test_sigchld_race_conditionz2ChildWatcherTestsMixin.test_sigchld_race_conditionO  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  irx  )r   rB   rH  rR  rA  r   r   rb  r    rf  r   r   r   ry  r  s       r   test_sigchld_replace_handlerz3ChildWatcherTestsMixin.test_sigchld_replace_handlere  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   rB   rH  rR  rA  r   r   rB  rb  r   ry  rf  r{  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   rB   rH  rR  rA  r   r   rS  rf  r   r   rb  r   ry  r{  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   rB   rH  rR  rA  r   rB  r   rb  r   ry  rf  r   r   )r0   ro  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   rB   rH  rR  rA  r8   rP   r   r   r   loggerre   rf  r   r   )r0   ro  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   rB   rH  rR  rA  r   r   rb  r   r	  r_  WNOHANGr   ry  rf  rW  r   FastChildWatcherr   r{  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   rB   ry  rH  rR  rb  r   rf  rA  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<   rE   rR   Frt  )r   rB   rH  rR  rA  r-   r  r   r   rC  r   r9   r   rf  rb  r   )r0   ro  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  rE   zA loop is being detached   r  rR   r  Fr  )r   rB   rH  rR  rA  r-   r   r   r   RuntimeWarningrC  r   r9   r   rb  r   r    r   r   r  rf  r   )r0   ro  r  r  r  r  m_remove_signal_handlerrT  s           r   test_set_loop_race_conditionz3ChildWatcherTestsMixin.test_set_loop_race_conditionD  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?   rt  A   r  @   r   rE   )r   rB   rH  rR  rb  r   rf  rA  re   r   
_callbacksrW  r   r  _zombiesr   r   r-   r#   r   r9   r   r   )r0   ro  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+)ro   rp   rq   r   r   r   r   r  ry  r+   r_  rb  rd  rg  rq  r}  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   s   @r   rP  rP  ~  s[   jj''

I>O	0&#4	 #* #*J @+ @+D -+ -+^ * ** #+ #+J * *. * *4 4 4@ , ," 6 6< + +( 0 0< ;3 ;3z < <r   rP  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   rX  r;   s    r   rU  z$SafeChildWatcherTests.create_watcher  @    $$& 	.!!(,>?++-	. 	. 	.   .AANro   rp   rq   rU  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  r;   s    r   rU  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   DefaultEventLoopPolicyr;   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_watcherrd   r   ThreadedChildWatcherr  PidfdChildWatcher)r0   m_can_use_pidfdpolicyrH  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  )r0   r  rH  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.   rE  rd   get_event_loopr   AbstractEventLoopr  r  r  r<  r  rX  r  r  r#   )rH  r  r0   s    r   rh  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  rm  )r  r  r  r  r<  r  r   rX  	threadingThreadr  join)r0   rh  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  rE  r.   r  r  r  r<  r   rX  r  rC  r  r  r#   )r0   r  r-   rH  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)
ro   rp   rq   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   rE  r-   r.   r;   s    r   r+   zTestFunctional.setUp  s$    **,	tyy)r   c                 b    | j                   j                          t        j                  d        y r   )r-   r#   r   r.   r;   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)r[   r8   r;   s   r   assert_raiseszFTestFunctional.test_add_reader_invalid_argument.<locals>.assert_raises  s    ))*6LMMr   c                       y r   r   r   r   r   rL   zATestFunctional.test_add_reader_invalid_argument.<locals>.<lambda>  rM   r   )r-   r  r   r  remove_readerremove_writer)r0   r  rg   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)r[   rQ   r;   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   rL   zWTestFunctional.test_add_reader_or_writer_transport_fd.<locals>.runner.<locals>.<lambda>0  s    ((* r   r   c                       y r   r   r   r   r   rL   zWTestFunctional.test_add_reader_or_writer_transport_fd.<locals>.runner.<locals>.<lambda>3  rM   r   )r-   create_connectionr  ro  r  r  r   r#   )r  prrg   r  rsockr0   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#   )r0   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)ro   rp   rq   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  rZ   r#   r  r;  r<  get_event_loop_policyr  r<  stridencoderQ   BaseExceptionascii_exitreadre   assertNotEqualintr   )r0   r-   rwr]  er  s          r   test_fork_not_share_event_loopz'TestFork.test_fork_not_share_event_loopW  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                 (     j                  t               t        j                  d      j	                         } j                  |j
                         |j                         |j                         |j                         fd fd}t        j                   |              j                  t        j                          j                  j                                 j                  j                                y )Nr  c                      fd} t        j                   t         j                  |        j                          	 t        j                  d       )Nc                  N    j                          t        j                          y r   )setsysexit)argschild_handleds    r   
on_sigtermzJTestFork.test_fork_signal_handling.<locals>.child_main.<locals>.on_sigterm  s    !!#
r   r   )r9   SIGTERMr&  timesleep)r+  r*  child_starteds    r   
child_mainz6TestFork.test_fork_signal_handling.<locals>.child_main~  s;     MM&..*5

1 r   c                    K   t        j                         } | j                  t        j                  fd       j                        }|j                          j                          t        j                  |j                  t        j                         |j                  t        j                         d }j                  t        j                   |              d {   d       y 7 
w)Nc                  $    j                         S r   )r&  )r)  parent_handleds    r   rL   zBTestFork.test_fork_signal_handling.<locals>.main.<locals>.<lambda>  s    .BTBTBV r   r  timeoutc                  J   K   t        j                  d       d {    y7 wNg?rs  )r   r.  r   r   r   r^   z>TestFork.test_fork_signal_handling.<locals>.main.<locals>.func  s      mmC((( )s   #!#rs  )r   r  rR   r9   r,  Processr  waitr	  killr]  r  r   SHORT_TIMEOUTre   create_task)r-   processr^   r0  r/  ctxr3  r0   s      r   mainz0TestFork.test_fork_signal_handling.<locals>.main  s     ++-D##FNN4VWkkk4GMMO GGGKK0LL!6!6L7
 7#6#6tv#>>C>s   C#C3&C1'C3r4  )rZ   multiprocessing_cleanup_testsmultiprocessingget_contextManagershutdownEventr   runr9  r   r;  r   is_setr   )r0   managerr?  r*  r0  r/  r>  r3  s   `  @@@@@r   test_fork_signal_handlingz"TestFork.test_fork_signal_handlingq  s    56 ))&1++-(() 		D 	D" 	DF7#8#89..01,,./r   c                    | j                  t               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r7  )r   r.  value)r  s   r   r0  z2TestFork.test_fork_asyncio_run.<locals>.child_main  s%     --$$$FL %s   +)+c                  8    t        j                                 S r   r   rF  r0  s   r   rL   z0TestFork.test_fork_asyncio_run.<locals>.<lambda>      W[[-F r   r  rs  rZ   r@  rA  rB  rC  rD  Valuer8  r  r  re   rM  r0   r>  rH  r=  r0  r  s       @@r   test_fork_asyncio_runzTestFork.test_fork_asyncio_run  s    56))&1++-(()sA&	 ++%F+Gr*r   c                    | j                  t               t        j                  d      }|j	                         }| j                  |j
                         |j                  dd      fd|j                  fd      }|j                          |j                          | j                  j                  d       y )Nr  rK  r   c                     K   t        j                  t        j                  dd       d {   } | j	                          d {   _        y 7 "7 w)Nz-cpass)r   create_subprocess_execr'  
executabler9  rM  )procr  s    r   r0  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   rO  rP  s   r   rL   z7TestFork.test_fork_asyncio_subprocess.<locals>.<lambda>  rQ  r   r  r   rR  rT  s       @@r   test_fork_asyncio_subprocessz%TestFork.test_fork_asyncio_subprocess  s    56))&1++-(()sA&	- ++%F+Gq)r   N)	ro   rp   rq   r!  r	   requires_hashdigestrI  rU  r]  r   r   r   r  r  T  sk    *4 (^''.+0 /+0Z (^''.+ /+$ (^''.* /*r   r  __main__):__doc__rt  rr   rk  rA  multiprocessing.utilr   r@  r	  r9   r   r  r'  r  r-  r  r   r  testr   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  r6  rK  rP  r  r  r  r  IsolatedAsyncioTestCaser  ro   r?  r   r   r   <module>ri     sG      	  P 	    
       " & % '<<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(*>?n*x// n* @n*` zHMMO r   