
    daf/                        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 ej                  dk7  r ej                  d      d dl
Z
d dlZd dlZd dlmZ d dlmZ d Z G d d	ej$                        Z G d
 dej(                        Z G d de      Z G d de      Z G d de      Z G d de      Zedk(  r ej6                          yy)    N)mockwin32zWindows only)windows_events)utilsc                  .    t        j                  d        y N)asyncioset_event_loop_policy     @/root/Python-3.12.4/Lib/test/test_asyncio/test_windows_events.pytearDownModuler      s    !!$'r   c                       e Zd Zd Zd Zd Zy)
UpperProtoc                     g | _         y r   )bufselfs    r   __init__zUpperProto.__init__   s	    r   c                     || _         y r   )trans)r   r   s     r   connection_madezUpperProto.connection_made   s	    
r   c                     | j                   j                  |       d|v r]| j                  j                  dj	                  | j                         j                                | j                  j                          y y )N   
r   )r   appendr   writejoinupperclose)r   datas     r   data_receivedzUpperProto.data_received    sV    D=JJSXXdhh/5578JJ r   N)__name__
__module____qualname__r   r   r!   r   r   r   r   r      s    r   r   c                       e Zd Zd Zd Zd Zy)WindowsEventsTestCasec                 (    || _         t        |       y r   )_unraisableprint)r   
unraisables     r   _unraisablehookz%WindowsEventsTestCase._unraisablehook(   s     &jr   c                 f    t         j                  | _        d | _        | j                  t         _        y r   )sysunraisablehook_prev_unraisablehookr(   r+   r   s    r   setUpzWindowsEventsTestCase.setUp.   s&    $'$6$6!!11r   c                 d    | j                   t        _        | j                  | j                         y r   )r/   r-   r.   assertIsNoner(   r   s    r   tearDownzWindowsEventsTestCase.tearDown3   s$    !66$**+r   N)r"   r#   r$   r+   r0   r3   r   r   r   r&   r&   '   s    2
,r   r&   c                       e Zd Zd Zy)ProactorLoopCtrlCc                 d   d }t        j                  |      }t        j                         }	 |j	                  |j
                         |j                          | j                  d       | j                  |       |j                          y # t        $ r Y -w xY w# | j                  |       w xY w)Nc                  t    t        j                  d       t        j                  t        j                         y )Ng?)timesleepsignalraise_signalSIGINTr   r   r   SIGINT_after_delayz9ProactorLoopCtrlC.test_ctrl_c.<locals>.SIGINT_after_delay;   s    JJsO.r   targetz%should not fall through 'run_forever')	threadingThreadr	   new_event_loop	call_soonstartrun_foreverfailKeyboardInterrupt
close_loopr   )r   r=   threadloops       r   test_ctrl_czProactorLoopCtrlC.test_ctrl_c9   s    	/ !!);<%%'	"NN6<<(II=> OOD!	 ! 		 OOD!s#   <B 	BB BB B/N)r"   r#   r$   rK   r   r   r   r5   r5   7   s    r   r5   c                       e Zd Zd Zy)ProactorMultithreadingc                     dd fd}t        j                  |      }|j                          |j                          | j	                         y )NFc                  J   K   t        j                  d       d {    y 7 w)Nr   )r	   r9   r   r   r   corozAProactorMultithreading.test_run_from_nonmain_thread.<locals>.coroQ   s     --"""s   #!#c                  ~    t        j                         } | j                                 | j                          dy )NT)r	   rB   run_until_completer   )rJ   rP   finisheds    r   funczAProactorMultithreading.test_run_from_nonmain_thread.<locals>.funcT   s/    ))+D##DF+JJLHr   r>   )r@   rA   rD   r   
assertTrue)r   rT   rI   rP   rS   s      @@r   test_run_from_nonmain_threadz3ProactorMultithreading.test_run_from_nonmain_threadN   sB    	#	 !!.!r   N)r"   r#   r$   rV   r   r   r   rM   rM   M   s    "r   rM   c                   f     e Zd Z f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 )ProactorTestsc                     t         |           t        j                         | _        | j                  | j                         y r   )superr0   r	   ProactorEventLooprJ   set_event_loop)r   	__class__s    r   r0   zProactorTests.setUpd   s.    --/	DII&r   c                    t        j                         \  }}| j                  j                  |t	        j
                               }t	        j                  | j                  j                  |d      | j                        }|j                          | j                  j                  |       | j                  |j                         d       |j                          y )Nd   rJ   r   )socket
socketpairrJ   _make_socket_transportr	   Protocolensure_future	sock_recvr   rR   assertEqualresult)r   abr   fs        r   
test_closezProactorTests.test_closei   s      "1		00G4D4D4FG!!$))"5"5a"=DIIN		$$Q'S)		r   c                     dt        j                         z  }t        j                  |      }| j	                  t
              5  t        j                  |       d d d        |j                          y # 1 sw Y   xY w)Nz\\.\pipe\test_double_bind-%s)osgetpidr   
PipeServerassertRaisesPermissionErrorr   )r   ADDRESSserver1s      r   test_double_bindzProactorTests.test_double_bindr   s\    1BIIK? ++G4/ 	/%%g.	/	/ 	/s   A11A:c                 z    | j                   j                  | j                               }| j                  |d       y Ndone)rJ   rR   
_test_piperg   r   ress     r   	test_pipezProactorTests.test_pipey   s-    ii**4??+<=f%r   c                 b  K   dt        j                         z  }| j                  t              5  | j                  j                  t        j                  |       d {    d d d        | j                  j                  t        |       d {   \  }| j                  |t        j                         g }t        d      D ]  }t        j                  | j                        }t        j                  || j                        | j                  j                  fd|       d {   \  }}| j                  |t        j                          | j#                  |       |j%                  ||f        t'        |      D ]6  \  }\  }}	|	j)                  dj+                  |      j-                                8 t'        |      D ]_  \  }\  }}	|j/                          d {   }
| j#                  |
dj+                  |      j-                                |	j1                          a |j1                          | j                  t              5  | j                  j                  t        j                  |       d {    d d d        y7 +# 1 sw Y   +xY w7 7 t7 7 %# 1 sw Y   yxY ww)Nz\\.\pipe\_test_pipe-%s   r`   c                       S r   r   )protocols   r   <lambda>z*ProactorTests._test_pipe.<locals>.<lambda>   s     r   z	lower-{}
z	LOWER-{}
rx   )rn   ro   rq   FileNotFoundErrorrJ   create_pipe_connectionr	   rd   start_serving_piper   assertIsInstancer   rp   rangeStreamReaderStreamReaderProtocol	Transportrg   r   	enumerater   formatencodereadliner   )r   rs   serverclientsistream_readerr   protorwresponser   s              @r   ry   zProactorTests._test_pipe}   sI    +biik901 	+))22  '+ + +	+ 55! !fn&?&?@q 	3A#00dii@M33M9=DH!%!A!A '"+ +LE5!!%):):;Xu-NNM512	3 #7+ 	5IAv1GGL''*1134	5 #7+ 	IAv1ZZ\)HX|':':1'='D'D'FGGGI	
 	01 	+))22  '+ + +	+ A+	+ 	+!+ *+	+ s   -J/.JJ	J#+J/JBJ/(J)B9J/"J#A*J/.J#;J!<J# 	J/	JJ	J/J/J/!J##J,(J/c                    t               }t        j                  |_        t        j
                  j                  t        d|      5 }| j                  j                  j                  d      }| j                  j                  |      }|j                          | j                  t        j                        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)NConnectPipe)side_effectpipe_address)OSError_overlappedERROR_PIPE_BUSYwinerrorr   patchobjectrJ   	_proactorconnect_pipecreate_taskcancelrq   r	   CancelledErrorrR   )r   excconnectrP   tasks        r   test_connect_pipe_cancelz&ProactorTests.test_connect_pipe_cancel   s    i"22ZZ{M+.  0 	33:99&&33NCD99((.D KKM""7#9#9: 3		,,T23	3 	33 3	3 	3s%   A0C/6C#C/#C,	(C//C8c                 >   t        j                  d ddd       }| j                  t        j                  |       d}| j
                  j                  j                  ||      }| j
                  j                         }| j
                  j                  |      }| j
                  j                         |z
  }| j                  |d       | j                  |j                                | j                  ||t        j                  z
         t        j                   |       | j
                  j                  j                  |d      }| j
                  j                  |      }| j                  |d       | j#                  |j                                |j%                          y )NTFg      ?
   )r   CreateEvent
addCleanup_winapiCloseHandlerJ   r   wait_for_handler8   rR   rg   assertFalserh   assertGreaterEqual
test_utils	CLOCK_RESSetEventrU   r   )r   eventtimeoutfutrD   rx   elapseds          r   test_wait_for_handlez"ProactorTests.test_wait_for_handle   s4   ''dE4@++U3 ii!!11%A		 yy++C0)).."U*u%&:3G3G)GHU# ii!!11%<yy++C0t$

% 	

r   c                    t        j                  d ddd       }| j                  t        j                  |       | j
                  j                  j                  |d      }|j                          | j                  t        j                        5  | j
                  j                  |       d d d        | j
                  j                  j                  |      }|j                          |j                          y # 1 sw Y   OxY w)NTFr   )r   r   r   r   r   rJ   r   r   r   rq   r	   r   rR   )r   r   r   s      r   test_wait_for_handle_cancelz)ProactorTests.test_wait_for_handle_cancel   s    ''dE4@++U3 ii!!11%<

w556 	.II((-	.
 ii!!11%8



	. 	.s   C88Dc                    t        j                         | j                  _        | j                  j	                  d d       }| j                  j                          | j                  j                          | j                  j                          | j                  j                          | j                  j                  |       | j                  | j                         | j                  | j                  j                  j                         y )Nc                       y r   r   r   r   r   r   z;ProactorTests.test_read_self_pipe_restart.<locals>.<lambda>       r   )r   MockrJ   call_exception_handlerrun_in_executorstoprE   rR   rH   r   called)r   rk   s     r   test_read_self_pipe_restartz)ProactorTests.test_read_self_pipe_restart   s     ,099;		(
 II%%dL9								 			$$Q' 			"99@@Ar   c                    | j                   j                  }t        j                  t        j                        }d }| j	                  t
              5  |j                  ||       d d d        | j	                  t
              5  |j                  |d|       d d d        |j                          y # 1 sw Y   LxY w# 1 sw Y   &xY w)N)types   abc)addr)	rJ   r   ra   
SOCK_DGRAMrq   	TypeErrorr   sendtor   )r   proactorsockbad_addresss       r    test_address_argument_type_errorz.ProactorTests.test_address_argument_type_error   s    99&&}}&"3"34y) 	0T;/	0y) 	<OOD&{O;	<

		0 	0	< 	<s   B0B<0B9<Cc                 z    | j                   j                  | j                               }| j                  |d       y rw   )rJ   rR   _test_client_pipe_statrg   rz   s     r   test_client_pipe_statz#ProactorTests.test_client_pipe_stat  s/    ii**4+F+F+HIf%r   c                   K   dt        j                         z  fd}| j                  t              5   |        d {    d d d        | j                  j                  t        j                         d {   \  }| j                  |t        j                         g | j                  j                  fd       t        d      D ]*  }| j                  j                   |              d {    , | j                  t              d       |j!                          | j                  t              5   |        d {    d d d        y7 # 1 sw Y   xY w7 7 r7 !# 1 sw Y   yxY ww)Nz!\\.\pipe\test_client_pipe_stat-%sc                  P  K   t        j                        } 	 t        j                  t        j                               t        j                  |        y # t        $ r(}|j
                  t         j                  k7  r Y d }~Bd }~ww xY w# t        j                  |        w xY wwr   )r   r   r   r   r   r   r   )hers   s     r   probez3ProactorTests._test_client_pipe_stat.<locals>.probe  s     ''0A'##K$;$;G$DE
 ##A&	  ::!<!<< = ##A&s:   B&(A B&	B	!B?B B		B B##B&c                 &    j                  |      S r   )r   )_r    errorss     r   r   z6ProactorTests._test_client_pipe_stat.<locals>.<lambda>   s    d8K r   r~   r   rx   )rn   ro   rq   r   rJ   r   r	   rd   r   r   rp   set_exception_handlerr   r   rg   lenr   )r   r   r   r   rs   r   s       @@r   r   z$ProactorTests._test_client_pipe_stat
  s4    6D		' 01 	'MM	 55g6F6FPPfn&?&?@		''(KLq 	1A))''000	1 	Va001 	'MM	 % 	 	 Q 1 	 sx   2E6EEE5E6;E$<A7E63E&4AE6;E*E(E*	E6EE!	E6&E6(E**E3/E6c                     t        j                          fd}t        j                  |      }t        j                         dz   } j                  j                  |j                          j                  sY j                  j                           j                  j                          t        j                         |k\  rn j                  sYj                          |j                          y )Nc                      j                         sC j                  j                  d        t        j                  d       j                         sBy y )Nc                       y r   r   r   r   r   r   zEProactorTests.test_loop_restart.<locals>.threadMain.<locals>.<lambda>4  r   r   g{Gz?)is_setrJ   call_soon_threadsafer8   r9   )r   r   s   r   
threadMainz3ProactorTests.test_loop_restart.<locals>.threadMain2  s5    kkm		..|<

4  kkmr   r>   r   )r@   EventrA   r8   rJ   rC   rD   r(   r   rE   setr   )r   r   thrend_timer   s   `   @r   test_loop_restartzProactorTests.test_loop_restart.  s      	! j1
 99;#		CII&""IINNII!!#yy{h&	 "" 	

r   )r"   r#   r$   r0   rl   ru   r|   ry   r   r   r   r   r   r   r   r   __classcell__)r]   s   @r   rX   rX   b   sG    '
&$L3<"B8	&"Hr   rX   c                       e Zd Zd Zd Zy)WinPolicyTestsc                      fd}t        j                         }	 t        j                  t        j                                t        j                   |              t        j                  |       y # t        j                  |       w xY w)Nc                  r   K    j                  t        j                         t        j                         y wr   )r   r	   get_running_loopSelectorEventLoopr   s   r   mainz5WinPolicyTests.test_selector_win_policy.<locals>.mainJ  *     !!((*))+   47)r	   get_event_loop_policyr
   WindowsSelectorEventLoopPolicyrunr   r   
old_policys   `  r   test_selector_win_policyz'WinPolicyTests.test_selector_win_policyI  b    	+
 224
	6))668:KK))*5G))*5   AA3 3B
c                      fd}t        j                         }	 t        j                  t        j                                t        j                   |              t        j                  |       y # t        j                  |       w xY w)Nc                  r   K    j                  t        j                         t        j                         y wr   )r   r	   r   r[   r   s   r   r   z5WinPolicyTests.test_proactor_win_policy.<locals>.mainX  r   r   )r	   r   r
   WindowsProactorEventLoopPolicyr   r   s   `  r   test_proactor_win_policyz'WinPolicyTests.test_proactor_win_policyW  r   r   N)r"   r#   r$   r   r   r   r   r   r   r   G  s    66r   r   __main__)rn   r:   ra   r-   r8   r@   unittestr   platformSkipTestr   r   r	   r   test.test_asyncior   r   r   rd   r   TestCaser&   r5   rM   rX   r   r"   r   r   r   r   <module>r     s    	   
    <<7
(

N
++    " 1(!! ,J// , - ,"2 "*b) bJ6* 6> zHMMO r   