
    dafb                        d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ  ej"                         r ej$                  d      d	 Z G d
 dej(                        Z G d d      Zej.                  dk(  r- G d deej0                        Z G d deej0                        Znwd dlZ eed      r G d deej0                        Z eed      r G d deej0                        Z eed      r G d deej0                        Z G d deej0                        Ze dk(  r ejB                          yy)    N)proactor_events)cycleislice)Mock)utils)support)socket_helper!Not relevant to ProactorEventLoopc                  .    t        j                  d        y N)asyncioset_event_loop_policy     ?/root/Python-3.12.4/Lib/test/test_asyncio/test_sock_lowlevel.pytearDownModuler      s    !!$'r   c                   :    e Zd ZdZdZddZd Zd Zd Zd Z	d Z
y)	MyProtoNc                     d | _         d| _        d| _        |+|j                         | _        |j                         | _        y y )NINITIALr   )	transportstatenbytescreate_future	connecteddone)selfloops     r   __init__zMyProto.__init__   sB    
!//1DN**,DI r   c                 V    | j                   |vrt        d| j                   d|      y )Nzstate: z, expected: )r   AssertionError)r   expecteds     r   _assert_statezMyProto._assert_state!   s/    ::X% 74::.XL!QRR &r   c                     || _         | j                  d       d| _        | j                  r| j                  j	                  d        |j                  d       y )Nr   	CONNECTEDs%   GET / HTTP/1.0
Host: example.com

)r   r#   r   r   
set_resultwrite)r   r   s     r   connection_madezMyProto.connection_made%   sD    "9% 
>>NN%%d+FGr   c                 b    | j                  d       | xj                  t        |      z  c_        y )Nr%   )r#   r   len)r   datas     r   data_receivedzMyProto.data_received-   s"    ;'s4y r   c                 4    | j                  d       d| _        y )Nr%   EOF)r#   r   r   s    r   eof_receivedzMyProto.eof_received1   s    ;'
r   c                     | j                  dd       d| _        | j                  r| j                  j                  d        y y )Nr%   r.   CLOSED)r#   r   r   r&   )r   excs     r   connection_lostzMyProto.connection_lost5   s7    ;.
99II  & r   r   )__name__
__module____qualname__r   r   r   r#   r(   r,   r0   r4   r   r   r   r   r      s,    ID-SH!'r   r   c                        e Zd Zd Z f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d Zd Zd Zd Zd Zd Zd Zej4                  d        Zd Zd Zd Zd Z xZ S )BaseSockTestsMixinc                     t         r   )NotImplementedErrorr/   s    r   create_event_loopz$BaseSockTestsMixin.create_event_loop>   s    !!r   c                     | j                         | _        | j                  | j                         t        |           y r   )r<   r   set_event_loopsupersetUpr   	__class__s    r   r@   zBaseSockTestsMixin.setUpA   s.    **,	DII&r   c                     | j                   j                         st        j                  | j                          | j	                          t        j                          t        | !          y r   )	r   	is_closed
test_utilsrun_briefly
doCleanupsr   
gc_collectr?   tearDownrA   s    r   rI   zBaseSockTestsMixin.tearDownF   sF    yy""$""499-r   c                    t        | j                  t        j                        s| j                  j	                  d       |j                  d       | j                  t              5  | j                  j                  | j                  j                  ||j                               d d d        | j                  t              5  | j                  j                  | j                  j                  |d             d d d        | j                  t              5  | j                  j                  | j                  j                  |d             d d d        | j                  t              5  | j                  j                  | j                  j                  |t                            d d d        | j                  t              5  | j                  j                  | j                  j                  |             d d d        |j                  d       | j                  j                  | j                  j                  ||j                               | j                  j                  | j                  j                  |d             | j                  j                  | j                  j                  |d            }| j                  j                  | j                  j                  |d             |j!                          | j#                  |j%                  d             y # 1 sw Y   }xY w# 1 sw Y   7xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ^xY w)NT   GET / HTTP/1.0

   F   HTTP/1.0 200 OK)
isinstancer   r   BaseProactorEventLoop	set_debugsetblockingassertRaises
ValueErrorrun_until_completesock_connectaddresssock_sendall	sock_recvsock_recv_into	bytearraysock_acceptclose
assertTrue
startswith)r   httpdsockr+   s       r   _basetest_sock_client_opsz,BaseSockTestsMixin._basetest_sock_client_opsO   s   $))_%J%JK II%T""":. A		,,II**4?AA "":. M		,,II**41JKMM "":. 5		,,II''d355 "":. A		,,II,,T9;?AA "":. 1		,,II))$/11
 			$$II""47	9		$$II""4)BC	Eyy++IId+- 			$$IId+	-

(:;<9A AM M5 5A A1 1s=   'A L"6L/6L<*>M	5M"L,/L9<M	MM c           	         |j                  d       | j                  j                  | j                  j                  ||j                               | j                  j                  | j                  j                  |d             t        d      }t        |      5 }| j                  j                  | j                  j                  ||d d             }| j                  j                  | j                  j                  |||d               d d d        |j                          | j                  |j                  d             y # 1 sw Y   :xY w)NFrK   rL   rM   )rQ   r   rT   rU   rV   rW   rZ   
memoryviewrY   r\   r]   r^   )r   r_   r`   r+   bufr   s         r   _basetest_sock_recv_intoz+BaseSockTestsMixin._basetest_sock_recv_intos   s   		$$II""47	9		$$II""4)BC	E 	>YY11		((s5Dz:<F II((		((s67|<>		> 	

(:;<	> 	>s   A1EEc                     t        j                         5 }t        j                         }| j                  ||       t        j                         }| j	                  ||       d d d        y # 1 sw Y   y xY wr   )rE   run_test_serversocketra   re   r   r_   r`   s      r   test_sock_client_opsz'BaseSockTestsMixin.test_sock_client_ops   s[    '') 	7U==?D**5$7==?D))%6		7 	7 	7s   AA++A4c                   K   |j                  d       | j                  j                  ||j                         d {    t	        j
                  | j                  j                  |d            }t	        j                  d       d {    |j                          t	        j
                  | j                  j                  |d             | j                  j                  |d       d {   }| j                  j                  |d       d {    | j                  |j                  d             y 7 7 7 M7 +wNFrL   r   rK   rM   )rQ   r   rU   rV   r   create_taskrX   sleepcancelrW   r]   r^   )r   r_   r`   taskr+   s        r   _basetest_sock_recv_racingz-BaseSockTestsMixin._basetest_sock_recv_racing   s     ii$$T5==999""499#6#6tT#BCmmAII""4)BC	EYY((t44ii!!$---(:;< 	: 	
 5-sG   ;D>D6AD>	D8
A"D>,D:-#D>D<&D>8D>:D><D>c           	        K   |j                  d       | j                  j                  ||j                         d {    t	        d      }t        |      5 }t        j                  | j                  j                  ||d d             }t        j                  d       d {    |j                          t        j                  | j                  j                  |d            }| j                  j                  ||d d        d {   }| j                  j                  |||d         d {    | j                  |j                  d             d d d         d {    y 7 +7 7 c7 ># 1 sw Y   xY w7 wrl   )rQ   r   rU   rV   rZ   rc   r   rm   rY   rn   ro   rW   r]   r^   )r   r_   r`   r+   rd   rp   r   s          r   _basetest_sock_recv_into_racingz2BaseSockTestsMixin._basetest_sock_recv_into_racing   sC    ii$$T5==999 	A&&		((s5Dz:<D--"""KKM&&		&&t-FGID9933D#et*EEF))**4VW>>>OODOO,>?@	A 

! 	: #
 F>	A 	A 	sk   ;E?E(E?AE1#E+$A%E1	E-
&E10E/1$E1E?"E=#E?+E1-E1/E11E:6E?c                    K   |j                  d       |j                  d       |j                  t        j                  t        j
                  d       |j                  d       t        j                   j                  j                  ||j                                     }t        j                  d       d {    |j                         d   j                  d       5  | d {    d}|dk\  r, j                  t              5  	 |j!                  d|z         t        j                   j                  j%                  |d
            }t        j                  d       d {    |j'                           fd}t        j                   |             } j                  j%                  |d       d {    |j)                  t        j*                         | d {   } j-                  |j/                  d             d d d        y 7 [7 -# 1 sw Y   nxY wt#        |d	z        }|dk\  rE7 7 7 Z# 1 sw Y   y xY ww)Nz	127.0.0.1r      rL   Fr                 s   helloc                     K   d} 	 j                   j                  d       d {   }|s| S | |j                         z  } <7 w)Nr   rw   )r   rX   strip)rvrd   r   servers     r   recv_allz?BaseSockTestsMixin._basetest_sock_send_racing.<locals>.recv_all   sH      $		 3 3FD AAC!	#))+%B	 As   #AAAs   world)bindlisten
setsockoptrh   
SOL_SOCKET	SO_SNDBUFrQ   r   rm   r   rU   getsocknamern   acceptrR   BlockingIOErrorsendintrW   ro   shutdownSHUT_WRr]   endswith)r   listenerr`   rp   sizer   r+   r~   s   `      @r   _basetest_sock_send_racingz-BaseSockTestsMixin._basetest_sock_send_racing   s    &' 	))6+;+;TB""II""4)=)=)?@BmmA"1%5!  	5JJ D!)&&7 /		$+. 
 &&		&&tX68D--"""KKM& &&xz2D ))((x888MM&..):DOODMM(34A 	5  	5	 	
 
/ / 4!8}	 !) # 9= 	5  	5s   B8I<H=*I'I-H. IH%AI,I -AI I(I)I*$I
IIH&	"I IIIIIc                 f  K   |j                  d       |j                         }|j                  d       t        j                  | j
                  j                  ||            }t        j                  d       d {    |j                          |j                  d       d}t        d      D ](  }	 | j
                  j                  ||       d {     y  | j                  |       y 7 o7 # t        $ r}|}Y d }~Qd }~wt        $ r"}|}t        |dd      dk7  rY d }~ JY d }~zd }~ww xY ww)	Nru   Fr   rv   zMax retries reached   winerrori&'  )r   r   rQ   r   rm   r   rU   rn   ro   r   rangeConnectionRefusedErrorOSErrorgetattrskipTest)r   r   r`   addrrp   skip_reasonies           r   _basetest_sock_connect_racingz0BaseSockTestsMixin._basetest_sock_connect_racing   s	    &'##%""499#9#9$#EFmmA+s 	Aii,,T4888 	  	k"- 	 9)    1j!,5 6s`   A:D1<C,=5D13C0C.C0D1.C00	D.9D ;D1 D.D)D1)D..D1c           
      (   t        j                         5 }t        j                         }|5  | j                  j	                  t        j                  | j                  ||      d             d d d        t        j                         }|5  | j                  j	                  t        j                  | j                  ||      d             d d d        d d d        t        j                         }t        j                         }|5  |5  | j                  j	                  t        j                  | j                  ||      d             d d d        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   6xY w# 1 sw Y   y xY wN
   )
rE   rg   rh   r   rT   r   wait_forrq   rs   r   )r   r_   r`   r   s       r   test_sock_client_racingz*BaseSockTestsMixin.test_sock_client_racing  sg   '') 	LU==?D G		,,W-=-=33E4@".F GG ==?D L		,,W-=-=88Er.K LL	L ==?}} 	Ft 	FII(()9)9//$?*E F	F 	F 	FG GL L	L 	L	F 	F 	F 	Fsa   E0A E,E0
A E$
E0FA E<FE!	E0$E-	)E00E9<F	FFc           
      .   t        j                          }t        j                          }|5  |5  | j                  j                  t        j                  | j                  ||      d             d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr   )rh   r   rT   r   r   r   )r   r   r`   s      r   test_sock_client_connect_racingz2BaseSockTestsMixin.test_sock_client_connect_racing  s    ==?}} 	It 	III(()9)9228TBB*H I	I 	I 	I 	I 	I 	Is#   BA A?.B?B	BBc                   K   t        j                          }|j                  d       d}d|dz  z  }| j                  j                  ||       d {    | j                  j	                  |dd|z  z   dz          d {    t        j                  | j                  j	                  ||            }| j                  j                  ||       d {   }| j                  |j                  d             |j                  d	      d
k(  r<|| j                  j                  ||       d {   z  }|j                  d	      d
k(  r<|d |j                  d	      dz    }|t        |      d  }|}t        d      }	t        t        |	t        |                  }
| j!                  ||
       |t        |      z  }	 | j                  j                  ||       d {   }|sn?t        t        |	t        |                  }
| j!                  ||
       |t        |      z  }f| j!                  |d       | d {    |j#                          y 7 7 7 7 )7 7 #wNFi@B s
   0123456789r   s   POST /loop HTTP/1.0
s   Content-Length: %d
s   
rM   s   

rx   r   )rh   rQ   r   rU   rW   r   rm   rX   r]   r^   findindexr*   r   bytesr   assertEqualr\   )r   rV   r`   	DATA_SIZEchunkrp   r+   headersr   checkerr"   s              r   _basetest_huge_contentz)BaseSockTestsMixin._basetest_huge_content  s(    }}	b1ii$$T7333ii$$T&@&?)&K'L&-'.0 	0 	0
 ""499#9#9$#FGYY((y99 	(:;<ii$*$))--dI>>>D ii$* 3

;/!34CLM"&T34x(D	,,T9==DVGSY78HT8,CID  	q!



G 	4	0 :
 ? > 	sv   AII
,I>I?AIIAI*I+IBIIAI4I5IIIIIIc                     t        j                         5 }| j                  j                  | j	                  |j
                               d d d        y # 1 sw Y   y xY wr   )rE   rg   r   rT   r   rV   r   r_   s     r   test_huge_contentz$BaseSockTestsMixin.test_huge_contentG  sI    '') 	<UII((++EMM:<	< 	< 	<   5AAc                    K   t        j                          }|j                  d       d}d|dz  z  }| j                  j                  ||       d {    | j                  j	                  |dd|z  z   dz          d {    t        j                  | j                  j	                  ||            }t        |      }t        |      }| j                  j                  ||       d {   }t        |d |       }	| j                  |	j                  d             |	j                  d	      d
k(  rG| j                  j                  ||       d {   }t        |d |       }	|	j                  d	      d
k(  rG|	d |	j                  d	      dz    }
|	t        |
      d  }	|}t!        d      }t        t#        |t        |	                  }| j%                  |	|       |t        |	      z  }	 | j                  j                  ||       d {   }|d | }	|	sn?t        t#        |t        |	                  }| j%                  |	|       |t        |	      z  }k| j%                  |d       | d {    |j'                          y 7 -7 7 7 :7 7 #wr   )rh   rQ   r   rU   rW   r   rm   rZ   rc   rY   r   r]   r^   r   r   r*   r   r   r   r\   )r   rV   r`   r   r   rp   arrayrd   r   r+   r   r   r   r"   s                 r   _basetest_huge_content_recvintoz2BaseSockTestsMixin._basetest_huge_content_recvintoL  sb    }}	b1ii$$T7333ii$$T&@&?)&K'L&-'.0 	0 	0
 ""499#9#9$#FG)$yy//c::S&\" 	(:;<ii$*9933D#>>FWf&D ii$* 3

;/!34CLM"&T34x(D	9933D#>>Fw<DVGSY78HT8,CID  	q!



S 	4	0 ; ? ? 	sv   AJI>,J>J?A(J'J(A%JJ&J5BJJ
A"J(J)JJJJ
JJc                     t        j                         5 }| j                  j                  | j	                  |j
                               d d d        y # 1 sw Y   y xY wr   )rE   rg   r   rT   r   rV   r   s     r   test_huge_content_recvintoz-BaseSockTestsMixin.test_huge_content_recvinto~  sN    '') 	EUII((44U]]CE	E 	E 	Er   c                   K   d}t        j                   t         j                  t         j                        5 }|j                  d       | j                  j                  |||       d {    | j                  j                  |d       d {   \  }}| j                  ||       | j                  ||       d d d        y 7 X7 6# 1 sw Y   y xY ww)N   F   )rh   AF_INET
SOCK_DGRAMrQ   r   sock_sendtosock_recvfromr   )r   server_addressr+   r`   received_data	from_addrs         r   _basetest_datagram_recvfromz.BaseSockTestsMixin._basetest_datagram_recvfrom  s     ]]6>>6+<+<= 	8U#))''dNCCC-1YY-D-Dd. ($M9]D1Y7	8 	8C(	8 	8s@   5C2C)C*#CC+C9	CCCCCc                     t        j                         5 }| j                  j                  | j	                  |             d d d        y # 1 sw Y   y xY wr   )rE   run_udp_echo_serverr   rT   r   r   r   s     r   test_recvfromz BaseSockTestsMixin.test_recvfrom  sJ    ++- 	BII((00@B	B 	B 	B   +A		Ac                   K   t        j                   t         j                  t         j                        5 }|j                  d       t	        d      }d}| j
                  j                  |||       d {    | j
                  j                  ||       d {   \  }}| j                  |d       | j                  ||       | j                  ||       t	        d      }| j
                  j                  |||       d {    | j
                  j                  ||d       d {   \  }}| j                  |d       | j                  |d d |d d        | j                  ||       d d d        y 7 7 7 u7 R# 1 sw Y   y xY ww)NFr   r   rw   )	rh   r   r   rQ   rZ   r   r   sock_recvfrom_intor   )r   r   r`   rd   r+   	num_bytesr   s          r    _basetest_datagram_recvfrom_intoz3BaseSockTestsMixin._basetest_datagram_recvfrom_into  sd    ]]6>>6+<+<= 	8U#D/C!D))''dNCCC)-)E)Ec* $ IyY-S$'Y7D/C))''dNCCC)-)E)Ec4*! $! IyY-S$Zet5Y7%	8 	8
 D$ D$!	8 	8sf   3F?E;4E35#E;E5A(E;E7$E;&E9'AE;*	F3E;5E;7E;9E;;F Fc                     t        j                         5 }| j                  j                  | j	                  |             d d d        y # 1 sw Y   y xY wr   )rE   r   r   rT   r   r   s     r   test_recvfrom_intoz%BaseSockTestsMixin.test_recvfrom_into  sJ    ++- 	GII((55nEG	G 	G 	Gr   c                   K   d}t        j                   t         j                  t         j                        5 j                  d       t	              j
                  _        j                  j                  t               j                  _	        | j                  j                  fd       | j                  j                  ||       d {    | j                  j                  d       d {   \  }}| j                  ||       | j                  ||       d d d        y 7 X7 6# 1 sw Y   y xY ww)Nr   F)side_effectc                  2    t         dj                        S )Nsendto)setattrr   )	mock_sockr`   s   r   <lambda>zGBaseSockTestsMixin._basetest_datagram_sendto_blocking.<locals>.<lambda>  s    	8T[[A r   r   )rh   r   r   rQ   r   
gettimeoutr   configure_mockr   filenor   	call_soonr   r   r   )r   r   r+   r   r   r   r`   s        @@r   "_basetest_datagram_sendto_blockingz5BaseSockTestsMixin._basetest_datagram_sendto_blocking  s
     ]]6>>6+<+<= 	8U#T
I#'??I +++H#{{IIIA ))''	4HHH-1YY-D-Dd. ($M9]D1Y7	8 	8 I(	8 	8sA   5E BD4D0#D4;D2<+D4'	E 0D42D44D=9E c                 B   t         j                  dk(  r9t        | j                  t        j
                        rt        j                  d      t        j                         5 }| j                  j                  | j                  |             d d d        y # 1 sw Y   y xY w)Nwin32r
   )sysplatformrN   r   r   ProactorEventLoopunittestSkipTestrE   r   rT   r   r   s     r   test_sendto_blockingz'BaseSockTestsMixin.test_sendto_blocking  s|    <<7"$))W%>%>?''(KLL++- 	III((77GI	I 	I 	Is   !+BBc                 *   t        j                         5 }t        j                  t        j                        }| j	                  ||       t        j                  t        j                        }| j                  ||       d d d        y # 1 sw Y   y xY wr   )rE   run_test_unix_serverrh   AF_UNIXra   re   ri   s      r   test_unix_sock_client_opsz,BaseSockTestsMixin.test_unix_sock_client_ops  si    ,,. 	7%==0D**5$7==0D))%6		7 	7 	7s   A+B		Bc                    d }	 t        j                          }|j                  d       |j                         }|j                          t        j                          }|j	                  d       | j                  t              5  | j                  j                  | j                  j                  ||             d d d        |j                          y # j                          w xY w# 1 sw Y   /xY w)Nru   F)
rh   r   r   r\   rQ   rR   r   r   rT   rU   )r   rV   sr`   s       r   test_sock_client_failz(BaseSockTestsMixin.test_sock_client_fail  s    	AFF#$mmoGGGI}}56 	7II((		&&tW57	7 	

 GGI	7 	7s   5C 6C'C$'C0c                    t        j                          }|j                  d       |j                  d       |j                  d       t        j                          }|j	                  |j                                | j                  j                  |      }| j                  j                  |      \  }}| j                  |j                         d       | j                  ||j                                | j                  |j                         |j                                |j                          |j                          |j                          y )NFru   rv   r   )rh   rQ   r   r   connectr   r   r[   rT   r   r   getpeernamer\   )r   r   clientfconnr   s         r   test_sock_acceptz#BaseSockTestsMixin.test_sock_accept  s    ==?U#&'x++-.II!!(+YY11!4
d*A.v1134++-x/C/C/EF

r   c                    t        j                          }|j                  d       |j                  d       |j                  d       |j	                         }t        j                  | j                  j                  |      d      }| j                  t
        j                        5  | j                  j                  |       d d d        |j                          t        j                          }|j                  d       | j                  j                  ||      }| j                  t              5  | j                  j                  |       d d d        |j                          y # 1 sw Y   xY w# 1 sw Y   &xY w)NFru   rv   g?)rh   rQ   r   r   r   r   r   r   r[   rR   TimeoutErrorrT   r\   rU   r   )r   r   sockaddrr   r   s        r   test_cancel_sock_acceptz*BaseSockTestsMixin.test_cancel_sock_accept  s   ==?U#&''')TYY228<cBw334 	,II((+	, 	5!II""68456 	,II((+	, 		, 	,	, 	,s   &E%0E1%E.1E:c                     t        j                         5 }d } j                  j                    j                  j                  |j
                  dt        j                  i      }|D ]h  \  }}}}}	 t        j                  |||      }|j                  d        j                  j                   j                  j                  ||              n  j                  d        j                  j                   fd|      }	 j                  j                  |	      \  }
} j                  |
t        j                          j                  |t        j                           j                  j                  |j"                          j%                  |j&                  d       |
j)                          d d d        y # t        $ r Y `w xY w# 1 sw Y   y xY w)Ntype)familyr   protoFzCan not create socket.c                  0    t         j                        S )N)r   )r   r   r/   s   r   r   z@BaseSockTestsMixin.test_create_connection_sock.<locals>.<lambda>  s    TYY/ r   r`   r   )rE   rg   r   rT   getaddrinforV   rh   SOCK_STREAMrQ   rU   BaseExceptionfailcreate_connectionassertIsInstancer   	TransportProtocolr   assertGreaterr   r\   )r   r_   r`   infosr   r   r   cnamerV   r   trprs   `           r   test_create_connection_sockz.BaseSockTestsMixin.test_create_connection_sock	  s   '') 	UDII00%		%%]]=)/););=>E 8= 43eUG!==TOD$$U+II00		..tW=?
 4 		23		++/d , <AYY11!4FB!!"g&7&78!!"g&6&67II((1ryy!,HHJ3	 	 % 	 	s2   AG2AF<C#G<	G	GG		GG)!r5   r6   r7   r<   r@   rI   ra   re   rj   rq   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   skip_unless_bind_unix_socketr   r   r   r   r  __classcell__)rB   s   @r   r9   r9   <   s    "
"=H="7= (-5n#<F I*X<
0dE
	8B
8,G
8*I //7 07""&r   r9   r   c                       e Zd Zd Zy)SelectEventLoopTestsc                 *    t        j                         S r   )r   SelectorEventLoopr/   s    r   r<   z&SelectEventLoopTests.create_event_loop+      ,,..r   Nr5   r6   r7   r<   r   r   r   r  r  (  s    	/r   r  c                   $    e Zd Zd Zd Zd Zd Zy)ProactorEventLoopTestsc                 *    t        j                         S r   )r   r   r/   s    r   r<   z(ProactorEventLoopTests.create_event_loop2  r  r   c                 r  K   d } |       }|j                         } |       }|j                         } |       }|j                         }|j                  t        j                         |j	                          | j
                  j                   ||            }	| j
                  j                   ||            }
t        j                  d       d {    | j
                  j                  |d|       d {    | j                  |
 d {   d       | j
                  j                  |d|       d {    | j                  |	 d {   d       | j
                  j                   ||            }	t        j                  d       d {    | j
                  j                  |d|       d {    | j                  |	 d {   d       | j
                  j                   ||            }	t        j                  d       d {    |j                  d|       | j                  |	 d {   d       |j                  t        j                         |j	                          |j                  t        j                         |j	                          y 7 7 7 7 n7 \7 7 7 7 7 w)Nc                      t        j                   t         j                  t         j                        } | j                  d       | j	                  d       | S )NFru   )rh   r   r   rQ   r   r   s    r   create_socketz^ProactorEventLoopTests._basetest_datagram_send_to_non_listening_address.<locals>.create_socket@  s<    }}V^^V5F5FG  '		*+r   r      a   b   cr      d)r   r   rh   	SHUT_RDWRr\   r   rm   r   rn   r   r   r   )r   recvfromr  socket_1addr_1socket_2addr_2socket_3addr_3socket_1_recv_tasksocket_2_recv_tasks              r   0_basetest_datagram_send_to_non_listening_addresszGProactorEventLoopTests._basetest_datagram_send_to_non_listening_address6  s*     %H))+F$H))+F %H))+Ff../NN!%!6!6x7I!J!%!6!6x7I!J--"""))''$???#55t<))''$???#55t<!%!6!6x7I!J--""" ))''$???#55s;!%!6!6x7I!J--""" OOD&)#55t<f../NNf../NN1 #?5?5" @5"
 6s   CJ7J$J79J :J7J#)J78J&9J7J)AJ7J,$J75J/6J7
J1AJ7J3&J74J55A)J7 J7#J7&J7)J7,J7/J71J73J75J7c                 d      fd} j                   j                   j                  |             y )Nc                 b   K   j                   j                  | d       d {   \  }}|S 7 	wNr   )r   r   )rh   r+   _r   s      r   r  z]ProactorEventLoopTests.test_datagram_send_to_non_listening_address_recvfrom.<locals>.recvfromq  s/      $		 7 7 EEa Fs    /-
/r   rT   r%  )r   r  s   ` r   4test_datagram_send_to_non_listening_address_recvfromzKProactorEventLoopTests.test_datagram_send_to_non_listening_address_recvfromp  s-     II((EEr   c                 d      fd} j                   j                   j                  |             y )Nc                    K   t        d      }j                  j                  | |d       d {   \  }}|d | S 7 wr(  )rZ   r   r   )rh   rd   lengthr)  r   s       r   recvfrom_intozgProactorEventLoopTests.test_datagram_send_to_non_listening_address_recvfrom_into.<locals>.recvfrom_into{  sH     o"&))">">vs?C#E E	7F|#Es   ,><>r*  )r   r/  s   ` r   9test_datagram_send_to_non_listening_address_recvfrom_intozPProactorEventLoopTests.test_datagram_send_to_non_listening_address_recvfrom_intoz  s-    $ II((EE!#$r   N)r5   r6   r7   r<   r%  r+  r0  r   r   r   r  r  /  s    	/7	t			$r   r  KqueueSelectorc                       e Zd Zd Zy)KqueueEventLoopTestsc                 P    t        j                  t        j                               S r   )r   r  	selectorsr1  r/   s    r   r<   z&KqueueEventLoopTests.create_event_loop  s!    00,,.0 0r   Nr  r   r   r   r3  r3    s    0r   r3  EpollSelectorc                       e Zd Zd Zy)EPollEventLoopTestsc                 P    t        j                  t        j                               S r   )r   r  r5  r6  r/   s    r   r<   z%EPollEventLoopTests.create_event_loop  s    001H1H1JKKr   Nr  r   r   r   r8  r8    s    Lr   r8  PollSelectorc                       e Zd Zd Zy)PollEventLoopTestsc                 P    t        j                  t        j                               S r   )r   r  r5  r:  r/   s    r   r<   z$PollEventLoopTests.create_event_loop  s    001G1G1IJJr   Nr  r   r   r   r<  r<    s    Kr   r<  c                       e Zd Zd Zy)r  c                 P    t        j                  t        j                               S r   )r   r  r5  SelectSelectorr/   s    r   r<   z&SelectEventLoopTests.create_event_loop  s    ,,Y-E-E-GHHr   Nr  r   r   r   r  r    s    	Ir   __main__)"rh   r   r   r   r   	itertoolsr   r   unittest.mockr   test.test_asyncior   rE   testr   test.supportr	   tcp_blackholer   r   r  r   r9   r   TestCaser  r  r5  hasattrr3  r8  r<  r5   mainr   r   r   <module>rK     sG     
  # #  1  &= 
(

?
@@($'g $'Ng gT <<7/1)22/T$!3!+!4!4T$n y*+	0#5#-#6#6	0 y/*	L"4","5"5	L y.)	K!3!+!4!4	KI1)22I zHMMO r   