
    #)f%                        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k(  rdZ	nej                  dk(  rdZ	ndZ	defd	Z
dd
ZddZddZej                  j                  ej                  dk(  d      dd       Zej                  j                  ej                  dk7  d      dd       ZddZddZddZddZy)    N)FakeNetlinuxz<^\[Errno 107\] (Transport endpoint is|Socket) not connected$darwinz&^\[Errno 57\] Socket is not connected$z^\[Errno 10057\] Unknown error$returnc                  :    t               } | j                          | S N)r   enable)fns    U/var/www/html/flask-app/venv/lib/python3.12/site-packages/trio/_tests/test_fakenet.pyr
   r
      s    	BIIKI    c                    K   t                t        j                  j                  t        j                  j                        } t        j                  j                  t        j                  j                        }| j	                  d       d {    | j                         \  }}|dk(  sJ |dk7  sJ t        j                  t        d      5 }| j	                  d       d {    d d d        j                  j                  t        j                  k(  sJ t        j                  t        d      5 }|j	                  d|f       d {    d d d        |j                  j                  t        j                  k(  sJ |j                  d	| j                                d {    | j                  d
       d {   \  }}|d	k(  sJ ||j                         k(  sJ | j                  d|j                                d {    |j                  d
       d {   \  }}|dk(  sJ || j                         k(  sJ y 7 7 b# 1 sw Y   bxY w7 
# 1 sw Y   
xY w7 7 7 d7 Mw)Ntype	127.0.0.1r   r   r   z^\[\w+ \d+\] Invalid argument$match)z	192.0.2.1r   z7^\[\w+ \d+\] (Address (already )?in use|Unknown error)$   xyz
      abc)r
   triosocket
SOCK_DGRAMbindgetsocknamepytestraisesOSErrorvalueerrnoEINVAL
EADDRINUSEsendtorecvfrom)s1s2ipportexcdataaddrs          r   test_basic_udpr,      s    D			!7!7		8B			!7!7		8B
''"
###~~HB19	8
 (	gg&'''( 99??ell** 
Q
 +	gg{D)***+ 99??e....
))FBNN,
---{{2&JD$6>2>>###
))FBNN,
---{{2&JD$6>2>>####3 $ 	(( ( 	++ + .& .&s   BI1IA I1I'I	(I,AI18IIIAI1(I))I1I+AI1I-	I1!I/"%I1	III1II&!	I1+I1-I1/I1c                    K   t                t        j                  j                  t        j                  j                        } t        j                  j                  t        j                  j                        }| j	                  d       d {    |j                  d| j                                d {    | j                  d       d {   \  }}y 7 I7 #7 w)Nr   r   r   r   )r
   r   r   r   r   r#   r   r$   )r%   r&   r*   r+   s       r   test_msg_truncr.   ;   s     D			!7!7		8B			!7!7		8B
''"
###
))FBNN,
---{{2&JD$ $-&s6   BC!C'C!9C:C!C	C!C!C!c                  d	  K   t                t        j                  j                  t        j                  j                        } t        j                  j                  t        j                  j                        }t	        j
                  t        d      5  |j                  d       d{    ddd       | j                  d       d{    | j                         \  }}|dk(  sJ |dk7  sJ |j                  d	| j                                d{    | j                  d       d{   \  }}|d	k(  sJ ||j                         k(  sJ | j                  d
|j                                d{    |j                  d       d{   }|d
k(  sJ | j                  d|j                                d{   dk(  sJ t        d      }t	        j
                  t        d      5  |j                  |d       d{   \  }}ddd       |j                  |       d{   \  }}|dk(  sJ |dk(  sJ || j                         k(  sJ | j                  d|j                                d{   dk(  sJ t        d      }|j                  |       d{   }|dk(  sJ |dk(  sJ t        j                   dk(  r.t        j"                  j$                  dk(  rt        j&                  }	nd}	t	        j
                  t(        t*              5 }
|j-                  d       d{    ddd       
j.                  j0                  t0        j2                  k(  sJ t	        j
                  t        d      5  |j-                  d|	       d{    ddd       t	        j
                  t        d      5  |j                  d|	| j                                d{    ddd       t	        j
                  t4        d      5  |j                  d|	| j                         d       d{    ddd       y7 # 1 sw Y   xY w7 }7 77 !7 7 7 7 W# 1 sw Y   TxY w7 C7 7 7 K# 1 sw Y   KxY w7 # 1 sw Y   xY w7 # 1 sw Y   xY w7 t# 1 sw Y   yxY ww)z!Test all recv methods for codecovr   zcode will most likely hangr   r   Nr   r   r   r   s   defs   ghi   z^partial recvfrom_into$   )nbytess
   ghi          jkls
   jkl       r   cpython      mnoz"^FakeNet send flags must be 0, notzwrong number of arguments$z	extra arg)r
   r   r   r   r   r   NotImplementedErrorrecvr   r   r#   r$   	bytearrayrecvfrom_into	recv_intosysplatformimplementationnameMSG_MOREr   ENOTCONN_MSGsendr   r    ENOTCONN	TypeError)r%   r&   r'   r(   r*   r+   bufr2   buf2flagsr)   s              r   test_recv_methodsrH   D   s    D			!7!7		8B			!7!7		8B 
*2N	O ggbk ''"
###~~HB19 ))FBNN,
---{{2&JD$6>2>>### ))FBNN,
---D6> 62>>#34499
B-C	*2K	L ?!//A/>>? ++C00NVTQ;&&&2>>### 62>>#34499R=D<<%%FQ;'''
||w3#5#5#:#:i#G__ 
wl	3 sggfo99??enn,,	*2V	W %ggfe$$$%
 
*2V	W 9iir~~'78889	y(D	E Fiir~~'7EEEF Fk 	  $ .&
 . 5 ?? ? 1 5% 	  	%% % 	99 9 	FF Fs  BR0P>-P;.P>2R0QAR0QR00Q1AR07Q8R0Q.R0?Q /R0/Q QQ R0*Q-+AR08Q09(R0!Q3"A4R0Q9+Q6,Q90AR0<RRR#R0:%RR R$#R0&R$-R".R$2	R0;P>>Q	R0R0R0R0R0R0Q  Q*%	R00R03R06Q99R>R0RRR0RRR0"R$$R-)R0win32z"functions not in socket on windows)reasonc                  h  K   t         j                  dk7  rt                t        j                  j	                  t        j                  j
                        } t        j                  j	                  t        j                  j
                        }|j                  d       d {    t        j                  t        t              5 }|j                  dg       d {    d d d        j                  j                  t        j                  k(  sJ | j                  dgdd|j                                d {   d	k(  sJ |j!                  d
       d {   \  }}}}|dk(  sJ |g k(  sJ |dk(  sJ || j                         k(  sJ | j#                  d|j                                d {   dk(  sJ t%        d      }t%        d	      }|j'                  ||g       d {   }	|	\  }
}}}|
dk(  sJ |dk(  sJ |dk(  sJ |g k(  sJ |dk(  sJ || j                         k(  sJ | j#                  d|j                                d {   dk(  sJ t%        d      }|j'                  |g       d {   }	|	\  }
}}}|
dk(  sJ |dk(  sJ |g k(  sJ |t        j(                  k(  sJ || j                         k(  sJ t        j                  t*        d      5  | j-                  d       d {    d d d        y y 7 \7 %# 1 sw Y   %xY w7 7 7 j7 77 7 7 1# 1 sw Y   y xY ww)NrI   r   r   r   r6   r3    r   r0   r   s   xyzw   r1   s   xys   zw s   xyzwv   z.^'FakeSocket' object has no attribute 'share'$)r<   r=   r
   r   r   r   r   r   r   r   rA   sendmsgr   r    rC   r   recvmsgr#   r9   recvmsg_into	MSG_TRUNCAttributeErrorshare)r%   r&   r)   r*   ancdata	msg_flagsr+   buf1rF   retr2   s              r   test_nonwindows_functionalityrY      s    
 ||w
[[T[[%;%;<[[T[[%;%;<gg&''' ]]7,7 	'3**fX&&&	'yy%..00ZZ"a1ABBaGG13B+?(w	4v~"}A~r~~'''
 YYw(899Q>>||OOT4L11-0*)T{u}&&"}A~r~~''' YYx)9::a??|OOTF++-0*)T{u}"}F,,,,r~~''']]"R
 	 ((1+	 	Y  	( '	' 	' C+? : 2 ;+ 	 	s   B#L2%L&#L2	LL L$AL2;L<L2LAL20L15L2&L'A&L2L )L27L"8A%L2L&2L$3L&7L2LL	L2L2L2L2 L2"L2$L&&L/+L2z#windows-specific fakesocket testingc                    K   t         j                  dk(  rt                t        j                  j	                  t        j                  j
                        } t        j                  j	                  t        j                  j
                        }| j                  d       d {    t        j                  t        d      5  | j                  dgdd|j                                d {    d d d        t        j                  t        d	      5  |j                  d       d d d        t        j                  t        d
      5  |j                  g        d d d        t        j                  t              5  | j                  d       d d d        y y 7 7 # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   ZxY w# 1 sw Y   y xY ww)NrI   r   r   z0^'FakeSocket' object has no attribute 'sendmsg'$r   r3   rL   r   z0^'FakeSocket' object has no attribute 'recvmsg'$z5^'FakeSocket' object has no attribute 'recvmsg_into'$)r<   r=   r
   r   r   r   r   r   r   rS   rO   r   rP   rQ   r7   rT   )r%   r&   s     r   test_windows_functionalityr[      sn    
 ||w
[[T[[%;%;<[[T[[%;%;<gg&''']]"T
 	@ **fXr1bnn.>???	@ ]]"T
 	 JJqM	 ]]I
 	  OOB		 
 ]]./ 	HHQK	 	%  	( @	@ 	@	 		  	 
	 	s   B#G%F&G'F,F-F1#GF(&#G	F4!G<G GFF%!G(F1-G4F=9G G	Gc                     K   t                t        j                  t              5  t        j
                  j                          d d d        y # 1 sw Y   y xY wwr   )r
   r   r   r7   r   r   rL   r   r   test_basic_tcpr]      s<     D	*	+   s   $AA	AAAc                  R  K   t                t        j                  j                  t        j                  j                        } t	        j
                  t        d      5  | j                  t        j                  t        j                         d d d        t	        j
                  t        d      5  | j                  t        j                  t        j                  d       d d d        t	        j
                  t        d      5  | j                  t        j                  t        j                  d       d d d        t	        j
                  t        d      5  | j                  t        j                  t        j                  d       d d d        | j!                  d       t	        j
                  t        d	      5  | j!                  d       d d d        | j#                         rJ 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   xY w# 1 sw Y   NxY ww)
Nr   z0^FakeNet doesn't implement getsockopt\(\d, \d\)$r   z%^FakeNet always has IPV6_V6ONLY=True$Fz:^FakeNet doesn't implement setsockopt\(\d+, \d+, \.\.\.\)$Tr5   z(^FakeNet can't make inheritable sockets$)r
   r   r   r   r   r   r   
getsockoptIPPROTO_TCPTCP_NODELAYr7   
setsockoptIPPROTO_IPV6IPV6_V6ONLY
SOL_SOCKETSO_REUSEADDRset_inheritableget_inheritable)r%   s    r   test_not_implemented_functionsri      s    D			!7!7		8B 
J
 > 	f((&*<*<=> 
#J
 F 	f))6+=+=uEF 
T
 E 	f))6+=+=tDE 
T
 A 	f'')<)<a@A u	#M
 ! 	4 ! !!###7> >F FE EA A! !s~   AH' /G)#H'20G6"#H'0H5#H'0H4H'<HH')G3.H'6H ;H'HH'HH'H$ H'c                     K   t                t        j                  j                  t        j                  j                        } t	        j
                  t        t              5 }| j                          d d d        j                  j                  t        j                  k(  sJ | j                  d       d {    t	        j
                  t        d      5  | j                          d d d        y # 1 sw Y   xY w7 E# 1 sw Y   y xY ww)Nr   r   r   zI^This method seems to assume that self._binding has a remote UDPEndpoint$)r
   r   r   r   r   r   r   rA   getpeernamer   r    rC   r   AssertionError)r%   r)   s     r   test_getpeernamerm      s     D			!7!7		8B	wl	3 s
99??enn,,
''"
###	Y
  		   $ sC   A"D$C45AD:D ;DD+	D4C=9DDDc                  Z  K   t                t        j                  t        t	        j
                  dt        j                  j                               5  t        j                  j                         } d d d        t        j                  j                  t        j                  j                        } | j                         dk(  sJ | j                  d       d {    | j                         \  }}|dk(  sJ |dk7  sJ t        j                  j                  t        j                  t        j                        }|j                         dk(  sJ |j                  d       d {    |j                         ^}}}|d	k(  sJ |dk7  sJ |ddgk(  sJ y # 1 sw Y   'xY w7 7 >w)
Nz#FakeNet doesn't (yet) support type=r   r   )z0.0.0.0r   r   r   )familyr   )z::r   z::1)r
   r   r   r7   reescaper   r   SOCK_STREAMr   r   r   AF_INET6)r%   r'   r(   r&   _s        r   	test_initru     s^    D	ii1$++2I2I1JK

 " [[!" 
		!7!7		8B>>~-- ''.
!!!~~HB19 
		6??9J9J		KB>>y(( '')
>>#LBq;19A;;7" " " s>   AF+F5A)F+F'BF+*F)+/F+F$	F+)F+)r   N)r    rp   r   r<   r   r   trio.testing._fake_netr   r=   rA   r
   r,   r.   rH   markskipifrY   r[   r]   ri   rm   ru   rL   r   r   <module>ry      s     	  
   * <<7RL\\X<L5LG $B'>FB LLG$H  11h LLG$I  0 $F r   