zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
U
Z±d!‹ã @spddlZddlZddlZddlZddlZddlZddlZddlZ    ddl
m Z m Z ddl mZddl mZddl mZddlmZmZddlmZmZGd    d
„d
ƒZejd d „ƒZd d„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z ej!j"e#edƒ dddd„ƒZ$d d!„Z%e d"d#„ƒZ&ej!j"e    j'd$k d%dd&d'„ƒZ(d(d)„Z)d*d+„Z*d,d-„Z+ej! ,d.d/ej-fej.d0ej/e d1g¡d2d3„ƒZ0d4d5„Z1d6d7„Z2ej3Gd8d9„d9ƒƒZ4ej! ,d:ej-e4d;d/d<d=d>fej.ej/e4d?d0d@dAd>e d1g¡dBdC„ƒZ5dDdE„Z6dFdG„Z7dHdI„Z8dJdK„Z9dLdM„Z:dNdO„Z;dPdQ„Z<dRdS„Z=dTdU„Z>dVdW„Z?ej!j"e#edXƒ dYddZd[„ƒZ@d\d]„ZAd^d_„ZBdS)`éNé)Ú creates_ipv6Ú
binds_ipv6)Ú_core)Ú_socket)Úsocket)Ú _NUMERIC_ONLYÚ    _try_sync)Úassert_checkpointsÚwait_all_tasks_blockedc@s,eZdZdd„Zdd„Zdd„Zdd„Zd    S)
ÚMonkeypatchedGAIcCs||_i|_g|_dS©N)Ú_orig_getaddrinfoÚ
_responsesÚrecord)ÚselfZorig_getaddrinfo©rúMd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\trio/tests/test_socket.pyÚ__init__szMonkeypatchedGAI.__init__cOs4t |j¡}|j||Ž}| ¡|j}|jr0t‚|Sr )ÚinspectÚ    signaturerÚbindÚapply_defaultsÚargsÚkwargsÚAssertionError)rrrÚsigÚboundZ frozenboundrrrÚ _frozenbinds   
zMonkeypatchedGAI._frozenbindcOs||j|j||Ž<dSr )rr)rÚresponserrrrrÚset&szMonkeypatchedGAI.setcOsX|j||Ž}|j |¡||jkr,|j|S|dtj@rF|j||ŽStd |¡ƒ‚dS)Néÿÿÿÿz'gai called with unexpected arguments {})    rrÚappendrÚ stdlib_socketÚAI_NUMERICHOSTrÚ RuntimeErrorÚformat)rrrrrrrÚ getaddrinfo)s  
 
 zMonkeypatchedGAI.getaddrinfoN)Ú__name__Ú
__module__Ú __qualname__rrr r'rrrrr sr cCsttjƒ}| td|j¡|S)Nr')r r#r'Úsetattr)Z monkeypatchÚ
controllerrrrÚ    monkeygai4s
r-c Ãs"tƒ&tƒ4IdHšW5QIdHRXW5QRXtƒ@t t¡*tƒ4IdHš
t‚W5QIdHRXW5QRXW5QRXtƒ4IdHš
t‚W5QIdHRXdd„}t|ƒ4IdHš
t‚W5QIdHRXtƒBt t¡,t|ƒ4IdHš
t‚W5QIdHRXW5QRXW5QRXdS)NcSs
t|tƒSr )Ú
isinstanceÚ
ValueError)ÚexcrrrÚ_is_ValueErrorHsz&test__try_sync.<locals>._is_ValueError)r
r    ÚpytestÚraisesÚKeyErrorÚBlockingIOErrorr/)r1rrrÚtest__try_sync;s  ( r6cCsDtjtjkst‚tjtjks t‚tjtjks0t‚tjtjks@t‚dSr )ÚtsocketÚ
SOL_SOCKETr#rÚ TCP_NODELAYÚgaierrorÚntohsrrrrÚtest_socket_has_some_reexportsYsr<c
Ãsªdd„}tƒtjddtjdIdH}W5QRX||tjtjtjddfgƒtƒtjddtjdIdH}W5QRX||tjtjtjdd    fgƒ|j    d
d d d d d d dtƒt dd ¡IdH}W5QRX|d
ksÜt
‚|j ddksît
‚tƒ4t   tj¡}tjddddIdHW5QRXW5QRXtjh}| tj¡ttdƒrZ| tj¡|jj|kslt
‚tƒ.t   t¡t dd¡IdHW5QRXW5QRXdS)Ncs,dd„‰‡fdd„}||ƒ||ƒks(t‚dS)NcSs|\}}}}}|||fSr r)Úgai_tupÚfamilyÚtypeÚprotoÚ    canonnameÚsockaddrrrrÚinteresting_fieldslsz;test_getaddrinfo.<locals>.check.<locals>.interesting_fieldscs‡fdd„|DƒS)Ncsg|] }ˆ|ƒ‘qSrr)Ú.0r=©rCrrÚ
<listcomp>rszEtest_getaddrinfo.<locals>.check.<locals>.filtered.<locals>.<listcomp>r)Zgai_listrErrÚfilteredqsz1test_getaddrinfo.<locals>.check.<locals>.filtered©r)ÚgotÚexpectedrGrrErÚcheckfs ztest_getaddrinfo.<locals>.checkú    127.0.0.1Z12345©r?Ú)rLé90ú::1)rPrOrrÚxóhostÚportr©r>r?r@ÚflagsÚhostr!)rRrSrrrrÚ EAI_BADHINTSÚasdf)r
r7r'Ú SOCK_STREAMÚAF_INETÚ IPPROTO_TCPÚ
SOCK_DGRAMÚAF_INET6Ú IPPROTO_UDPr rrr2r3r:Ú EAI_SOCKTYPEÚaddÚ EAI_SERVICEÚhasattrrWÚvalueÚerrnor%)r-rKÚresÚexcinfoÚexpected_errnosrrrÚtest_getaddrinfoesR"ûÿþ "ûÿþ  *    rhc
Ãs6tjtjB}tƒt d|¡IdH}W5QRX|dks<t‚tƒ0t tj    ¡t dd¡IdHW5QRXW5QRXtƒ0t tj    ¡t dd¡IdHW5QRXW5QRXt dd¡\}}t dd¡IdH}|||fksæt‚t dtj¡IdH}|d|fks t‚t dtj¡IdH}||dfks2t‚dS)    N)rLiÒ)rLZ1234)z
google.coméPr)Ú    localhostri©rLrirLÚ80)
r#ÚNI_NUMERICHOSTÚNI_NUMERICSERVr
r7Ú getnameinforr2r3r:)Z
ni_numericrIrVZservicerrrÚtest_getnameinfo±s"  &&rpc
Ãsôt ¡\}}t|tjƒrt‚|f|Vt |¡}t|tjƒsBt‚| ¡| ¡ksVt‚| d¡IdH|     d¡dksxt‚W5QRXW5QRXt
  t ¡t d¡W5QRXGdd„dtj ƒ}|ƒ&}t
  t ¡t |¡W5QRXW5QRXdS)Nóxéc@s eZdZdS)z)test_from_stdlib_socket.<locals>.MySocketN)r(r)r*rrrrÚMySocketâsrs)r#Ú
socketpairr.r7Ú
SocketTyperÚfrom_stdlib_socketÚfilenoÚsendÚrecvr2r3Ú    TypeErrorr)ÚsaÚsbÚtarsZmysockrrrÚtest_from_stdlib_socketÔs  
&  r~c Ãst ¡\}}t | ¡|j|j|j¡}|\|L|<| ¡| ¡ksLt‚|     d¡IdH| 
d¡dksnt‚W5QRXW5QRXW5QRXdS)Nrqé) r#rtr7Úfromfdrwr>r?r@rrxry)r{r|r}rrrÚ test_from_fdês  rc Ãsrdd„}t ¡\}}|P|@t ¡4IdHš}| ||¡| ||¡W5QIdHRXW5QRXW5QRXdS)NcÓs4tdƒ| d¡IdH| d¡IdHdks0t‚dS)Nz sending helloóhrr)Úprintrxryr)ÚsockrrrÚchildôsz%test_socketpair_simple.<locals>.child)r7rtrÚ open_nurseryÚ
start_soon)r…ÚaÚbÚnurseryrrrÚtest_socketpair_simpleós    r‹Ú    fromsharez windows only)Úreasonc Ãs”t ¡\}}|z|j| t ¡¡}t |¡}|B| ¡| ¡ksJt‚| d¡IdH|     d¡IdHdksrt‚W5QRXW5QRXW5QRXdS©Nrqrr)
r7rtÚshareÚosÚgetpidrŒrwrrxry)rˆr‰ZsharedÚa2rrrÚtest_fromshares  
r“c    Ãs8t ¡&}t|tjƒst‚|jtjks*t‚W5QRXdSr )r7rr.rurr>rZ©ÚsrrrÚ test_socket s
r–c    Ãs@t tjtj¡&}t|tjƒs"t‚|jtjks2t‚W5QRXdSr )r7rr]r\r.rurr>r”rrrÚtest_socket_v6sr—Úlinuxz
linux onlyc
ÃsÒddlm}m}m}m}g}||fD]$}||fD]}| t ||¡¡q0q$|D]~}tj| ¡d}|j    |j    ksrt
‚|j |j ks‚t
‚|  ¡t  | ¡||¡}    |    j    |j    ks¬t
‚|    j |j ks¼t
‚|     ¡| ¡qNdS)Nr)rZr]r\rY©rw)rrZr]r\rYr"r#r7rwr>rr?Údetachr€Úclose)
rZr]r\rYÚsocketsr>r?rZtsocket_socketZtsocket_from_fdrrrÚtest_sniff_sockoptss  rc    ÃsØt ¡}|’}||kst‚t| ¡tƒs,t‚| ¡r8t‚| d¡| ¡sNt‚| tj    tj
d¡|  tj    tj
¡rtt‚| tj    tj
d¡|  tj    tj
¡sšt‚W5QRX| ¡dks´t‚t |ƒt ¡.}| ¡}|  ¡|ksÞt‚| ¡dksît‚W5QRXt ¡}| ¡dkst‚| ¡| ¡dks,t‚dt|ƒks>t‚dt|ƒksPt‚dt|ƒksbt‚t t¡ |jW5QRXt ¡}t |¡}|jt |j¡ks¨t‚|j|jksºt‚|j|jksÌt‚| ¡dS)NTFr!rr>ryÚ
setsockopt)r7rrr.rwÚintÚget_inheritableÚset_inheritableržr[r9Ú
getsockoptÚreprršr›Údirr2r3ÚAttributeErrorrXr#rvr?Ú_tsocketZreal_socket_typer>r@)r„Zcm_enter_valueÚfdZ stdlib_sockrrrÚtest_SocketType_basics:s@  
 
 
r¨c Ãsœt ¡\}}|‚|r| ¡}|Zt|tjƒs6t‚| ¡| ¡ksJt‚| ¡| d¡IdH|     d¡IdHdkszt‚W5QRXW5QRXW5QRXdSrŽ)
r7rtÚdupr.rurrwr›rxry)rˆr‰r’rrrÚtest_SocketType_dupms  rªc
Ãsjt ¡\}}|²|¢| d¡IdH| d¡IdHdks@t‚|jrJt‚|jrTt‚| tj¡|jsjt‚|jrtt‚| d¡IdHdksŒt‚| d¡IdH| d¡IdHdks´t‚W5QRXW5QRXt ¡\}}|8|(|jrêt‚| tj¡|jrt‚W5QRXW5QRXt ¡\}}|:|*|jr:t‚| tj    ¡|jsRt‚W5QRXW5QRXdS)Nrqrróóy)
r7rtrxryrZdid_shutdown_SHUT_WRÚshutdownÚSHUT_WRÚSHUT_RDÚ    SHUT_RDWR©rˆr‰rrrÚtest_SocketType_shutdownys,  
 
 
 
,  
      r²zaddress, socket_typerLrP)Zmarksc Ãst |¡}t |¡}|à|Ð| |df¡IdH| d¡| ¡dd…}t ¡4IdHš&}| |j|¡|     ¡IdH\}}W5QIdHRX|P|| 
¡kr²| ¡ks¸nt ‚|  d¡IdH|  d¡IdHdksàt ‚W5QRXW5QRXW5QRXdS)Nrérrqrr)r7rrÚlistenÚ getsocknamerr†r‡ÚconnectÚacceptÚ getpeernamerrxry)ÚaddressÚ socket_typeÚlistenerÚclientÚaddrrŠÚserverÚ client_addrrrrÚtest_SocketType_simple_server”s    
 
 
""rÀc
ÃsŒt ¡\}}|r|b| ¡r$t‚| d¡IdHt |¡IdH| ¡sPt‚| d¡IdHdksht‚| ¡rtt‚W5QRXW5QRXdSrŽ)r7rtZ is_readablerrxrÚ wait_readableryr±rrrÚtest_SocketType_is_readable¬s    rÂcCs8ztjddtjdWntjk
r.YdSXdSdS)Nú1.2.3.4r©r>FT)r#r'r]r:rrrrÚgai_without_v4mapped_is_buggyºs
rÅc@s,eZdZe ¡Ze ¡Ze ¡Ze ¡ZdS)Ú    AddressesN)    r(r)r*ÚattrÚibÚbind_allrjÚ    arbitraryÚ    broadcastrrrrrÆÃsrÆzsocket_type, addrsz0.0.0.0rÃz255.255.255.255)rÉrjrÊrËz::ú1::2z::ffff:255.255.255.255c     ƒs4|tjk‰‡fdd„‰‡fdd„}tj|dú‰dD]T}ˆj|dfdd    IdH}|||jdfƒˆj|dfd
d    IdH}|||jdfƒq6d D]’‰‡‡fd d „}|||jdfƒIdH|jdfƒˆr¸||dƒIdHdƒ||dƒIdHdƒ||dƒIdHdƒ||dƒIdHdƒ||dƒIdHdƒ||dƒIdHdƒ||dƒIdHdƒ||dƒIdHdƒ||dƒIdHdƒ||dƒIdHdƒˆ tjtj    d
¡||dƒIdHdƒ||dƒIdH|j
dfƒˆrJt ƒsJˆ tjtj    d¡t   tj¡}|dƒIdHW5QRXtjh}ttdƒr8| tj¡|jj|ksJt‚ztjtjtjd }Wnttfk
rzYn(X|jd!ˆd    IdHd!ksšt‚| ¡t   t¡|d"ƒIdHW5QRXt   t¡|d#ƒIdHW5QRXt   t¡*ˆr |d$ƒIdHn|d%ƒIdHW5QRXqW5QRXdS)&Ncsˆrt|ƒdkr|d7}q|S)Né)r)Úlen)r½)Úv6rrÚpadçs 
z$test_SocketType_resolve.<locals>.padcsˆ|ƒˆ|ƒkst‚dSr rH)ÚactualrJ)rÐrrÚ    assert_eqísz*test_SocketType_resolve.<locals>.assert_eqrÄ)NrNriT)ÚlocalF)FTc—sˆj|dˆiŽIdHS)NrÓ)Ú_resolve_address_nocp)r)rÓr„rrreþsz$test_SocketType_resolve.<locals>.resÚhttp)rÌri)rÌrirr)rÌrir)rÌrirr)rÌrirrr)rÌrirrr)rÌrl)rÌrlr)rÌrlrr)rÌrlrr)rÌrlrrr)rÃrÕ)z::ffff:1.2.3.4ri)z <broadcast>é{rÖ)rÃriÚEAI_ADDRFAMILY)r>r?rXrÃ)rÃ)rÃrirrr)rÃrirr)r7r]rrÔrÉrjrÊržÚ IPPROTO_IPV6Ú IPV6_V6ONLYrËrÅr2r3r:Ú
EAI_NONAMErbr`r×rcrdrZ
AF_NETLINKr\r¥ÚOSErrorr›r/)    rºÚaddrsrÒÚnullrIrerfrgZ netlink_sockr)rÓrÐr„rÏrÚtest_SocketType_resolveÌsl
 
   ÿ
ÿÿ   rÞc
ÃsÆt ¡x}| d¡IdH| ¡ddks.t‚| d¡t ¡6}| d| ¡df¡IdH| ¡| ¡ksrt‚W5QRXW5QRXt ¡.}t     tj
¡| d¡IdHW5QRXW5QRXdS)N)rjrrrLé
rjrr)z1.2:3r!) r7rrrµrr´r¶r¸r2r3r:)r„Zsock2rrrÚ test_SocketType_unresolved_namesCs
 
 
(
ràc ƒs>t ¡\}}|"|t |¡‰| d¡| d¡t ¡H}| ¡t    ƒ.t
  tj ¡ˆ  d¡IdHW5QRXW5QRXW5QRXt    ƒˆ  d¡IdHdkW5QRXt    ƒ,t
  t¡ˆ  d¡IdHW5QRXW5QRX‡fdd„}t ¡4IdHš&}| |¡tƒIdH| d¡W5QIdHRX‡fdd    „}t ¡4IdHš&}| |¡tƒIdH|j ¡W5QIdHRXt |¡‰‡‡fd
d „}‡‡fd d „}t ¡4IdHšZ}| |¡| |¡tƒIdH| d¡| d¡tƒIdH| d¡| d¡W5QIdHRXW5QRXW5QRXdS)NFó1rßZhahac    “s.tƒˆ d¡IdHdks t‚W5QRXdS)Nrßó2©r
ryrr©r}rrÚdo_successful_blocking_recvmszGtest_SocketType_non_blocking_paths.<locals>.do_successful_blocking_recvrâc
“s>tƒ.t tj¡ˆ d¡IdHW5QRXW5QRXdS)Nrß)r
r2r3rÚ    CancelledryrrärrÚdo_cancelled_blocking_recvwszFtest_SocketType_non_blocking_paths.<locals>.do_cancelled_blocking_recvc    “sXtƒˆ d¡IdHdks t‚W5QRXtƒˆ d¡IdHdksJt‚W5QRXdS)Nrróaóbrãr©r}ÚtbrrÚt1‰s"z.test_SocketType_non_blocking_paths.<locals>.t1c    “sXtƒˆ d¡IdHdks t‚W5QRXtƒˆ d¡IdHdksJt‚W5QRXdS)NrrrérèrãrrêrrÚt2s"z.test_SocketType_non_blocking_paths.<locals>.t2rérè)r#rtr7rvÚ setblockingrxrÚ CancelScopeÚcancelr
r2r3ræryrzr†r‡r Ú cancel_scope)rˆr‰ZcscoperårŠrçrìrírrêrÚ"test_SocketType_non_blocking_pathsVsJ 
 
 
 
. $ 
 
 
 
 
 
 
 
ròc ƒsžt ¡,‰t t¡ˆ d¡IdHW5QRXW5QRXt ¡J‰t ¡6‰ˆ ¡t tj    ¡ˆ d¡IdHW5QRXW5QRXW5QRXt ¡À‰t ¡¬‰t ¡˜}| 
d¡IdH|  ¡G‡‡fdd„dt jƒ}ˆj  ¡|ƒˆ_ tƒ2t tj    ¡ˆ | ¡¡IdHW5QRXW5QRXˆ ¡dksBt‚W5QRXW5QRXW5QRXt ¡,‰t t¡ˆ d¡IdHW5QRXW5QRXdS)Nrjrk©rLrcseZdZ‡‡fdd„ZdS)z3test_SocketType_connect_paths.<locals>.CancelSocketcs6ˆ ¡t | ¡|j|j¡ˆ_ˆjj||Žt‚dSr )    rðr#r€ršr>r?Ú_sockr¶r5©rrr©rñr„rrr¶¸sÿz;test_SocketType_connect_paths.<locals>.CancelSocket.connectN)r(r)r*r¶rrörrÚ CancelSocket·sr÷r!)rLr)r7rr2r3r/r¶rrïrðrærr´r#rôr›r
rµrwrrÛ)r»r÷rrörÚtest_SocketType_connect_paths¡s,
 $
 
.
 
 
(0
 røc ƒsˆt ¡v‰t ¡b}‡fdd„}||_tƒ.t tj¡|     d¡IdHW5QRXW5QRX| 
¡dkspt ‚W5QRXW5QRXdS)NcŸsˆ ¡t ¡IdHdSr )rðrÚ
checkpointrõ©rñrrrÔÛszVtest_resolve_address_exception_in_connect_closes_socket.<locals>._resolve_address_nocprNr!) rrïr7rrÔr
r2r3rær¶rwr)r„rÔrrúrÚ7test_resolve_address_exception_in_connect_closes_socketÖs
 
 $rûc
Ãsüt ¡\}}|Ô|Ä| d¡IdHdks0t‚| dtj¡IdHdksLt‚| d¡IdHdksdt‚| d¡IdHtdƒ}| |¡IdH|dks˜t‚t|dƒrÖ|     dgg¡IdHdks¾t‚| d¡IdHdksÖt‚W5QRXW5QRXtj
tj d}tj
tj d}|2| |  d    ¡IdH|  d    ¡IdH|  ¡d
|  ¡dfg}|D]V}| d|¡IdHdksrt‚| d¡IdH\}}|dks”t‚||  ¡ksRt‚qRttd ƒr4| dtj|  ¡¡IdH| d tj|  ¡¡IdH| d |  ¡¡IdH| d¡IdH\}}|dks"t‚||  ¡ks4t‚| d|  ¡¡IdHdksTt‚tdƒ}| |¡IdH\}}|dks~t‚|dksŒt‚||  ¡ksžt‚t|dƒr| d|  ¡¡IdHdksÊt‚| d¡IdH\}}}    }|dksðt‚|gksþt‚|    dks t‚||  ¡kst‚t|dƒrÒ| d|  ¡¡IdHdksJt‚tdƒ}
tdƒ} | |
| g¡IdH} | \}}}    }|dksˆt‚|
dks–t‚| dks¤t‚|gks²t‚|    dksÀt‚||  ¡ksÒt‚t|dƒr0|D]L}|     ddggd|¡IdHdks
t‚| d¡IdHd|  ¡fksât‚qâW5QRXW5QRXtj
tj d}tj
tj d}|Ž|~|  d    ¡IdH| |  ¡¡IdH| d¡IdH| d ¡IdH| d¡IdHdksÊt‚| d¡IdHd ksät‚W5QRXW5QRXdS)Nrqrrrßs
xÚsendmsgsxxxrrMrórjÚMSG_MOREsyyyszzzs    xxxyyyzzzs
xxxÚrecvmsgrÚ recvmsg_intosxyzwrÍrsxyszwsyzsxyz)r7rtrxrryÚMSG_PEEKÚ    bytearrayÚ    recv_intorbrürr\rrµÚsendtoÚrecvfromrýÚ recvfrom_intorþrÿr¶) rˆr‰ÚbufÚtargetsÚtargetÚdatar½ÚnbytesZancdataZ    msg_flagsZbuf1Úbuf2ÚretrrrÚtest_send_recv_variantsæsˆ   
,
       $: r cÃsÔ| ddd¡|jdddtd|jdddtd| dd    d¡| dd
d¡dt dd¡IdHksht‚dt dd¡IdHks‚t‚dt d d¡IdHksœt‚dt d
d¡IdHks¶t‚dt dd¡IdHksÐt‚dS) Nu
ok faß.des xn--fa-hia.derizok ::1rP)rUs::1Úbadzfass.dez xn--fa-hia.deufaß.de)r rr7r'r)r-rrrÚ    test_idnaFsrcÃs4t d¡IdHdkst‚t d¡IdHdks0t‚dS)NZudpéZtcpé)r7ÚgetprotobynamerrrrrÚtest_getprotobynameXsrc    ÃsGdd„dƒ}|ƒ}t |¡dks&t‚tjdddfdtjddfddtjdfdddtjffD]$}tjd|žŽIdHd|˜ksZt‚qZt dd¡IdH}d    }||ks¢t‚t d
d¡IdHd ks¼t‚t d¡|ksÎt‚|j    d d ddddddt dd¡IdHd kst‚dS)Nc@seZdZdd„Zdd„ZdS)z5test_custom_hostname_resolver.<locals>.CustomResolvercÓsd||||||fS)NÚ
custom_gair)rrVrSr>r?r@rUrrrr'aszAtest_custom_hostname_resolver.<locals>.CustomResolver.getaddrinfocÓs
d||fS)NÚ
custom_gnir)rrBrUrrrrodszAtest_custom_hostname_resolver.<locals>.CustomResolver.getnameinfoN)r(r)r*r'rorrrrÚCustomResolver`srrrjÚfooró    localhostuföö)rs
xn--f-1gaarrrrrrˆ)rrˆrrQrRrSrTrV)rjr)rrr)
r7Zset_custom_hostname_resolverrrZrYr[Ú AI_CANONNAMEr'ror )r-rZcrÚvalsrIrJrrrÚtest_custom_hostname_resolver_s,    üýü  rc
ÃsäGdd„dƒ}|ƒ}t |¡dks&t‚t ¡dtjtjdfksBt‚t ddd¡dksXt‚t ¡ ¡}tj|d    }t|d
ƒs~t‚|     ¡t 
¡\}}|2|"t|d
ƒs¬t‚t|d
ƒsºt‚W5QRXW5QRXt d¡|ksàt‚dS) Nc@seZdZdd„ZdS)z7test_custom_socket_factory.<locals>.CustomSocketFactorycSs d|||fS)NÚhir)rr>r?r@rrrrsz>test_custom_socket_factory.<locals>.CustomSocketFactory.socketN)r(r)r*rrrrrÚCustomSocketFactoryŒsrrrrrrr)rrrrrr™r) r7Zset_custom_socket_factoryrrrZrYr#ršrbr›rt)rZcsfr§Úwrappedrˆr‰rrrÚtest_custom_socket_factory‹s    "rc    Ãs"t t¡t ¡W5QRXdSr )r2r3rzr7rurrrrÚtest_SocketType_is_abstract¦s r ÚAF_UNIXzno unix domain socketsc    Ãsxdd„}t ¡}d |¡}||ƒIdHW5QRXz*t d¡ ¡ d¡}|d|ƒIdHWntk
rrYnXdS)Nc Ós¬tjtjd”}| |¡IdH| d¡tjtjd`}| |¡IdH| ¡IdH\}}|.| d¡IdH| d¡IdHdksŠt    ‚W5QRXW5QRXW5QRXdS)NrÄrßrqrr)
r7rr!rr´r¶r·rxryr)ÚpathÚlsockÚcsockÚssockÚ_rrrÚ check_AF_UNIX°s
z.test_unix_domain_socket.<locals>.check_AF_UNIXz{}/sockr³Úasciis trio-test-)ÚtempfileÚTemporaryDirectoryr&rÚurandomÚhexÚencodeÚFileNotFoundError)r'Ztmpdirr"ÚcookierrrÚtest_unix_domain_socket«s
 
r0c ƒsÖt ¡\}}|¼|¬| d¡dd‰z| ˆ¡q,Wntk
rNYnXt |¡‰‡‡fdd„}‡fdd„}t ¡4IdHš.}|     |¡|     |¡t
ƒIdHˆ  ¡W5QIdHRXW5QRXW5QRXdS)NFrqiŸ†c    “s,t tj¡ˆ ˆ¡IdHW5QRXdSr )r2r3rÚClosedResourceErrorrxr©rˆr    rrÚsenderØsz)test_interrupted_by_close.<locals>.senderc    “s,t tj¡ˆ d¡IdHW5QRXdS)Nrr)r2r3rr1ryr)rˆrrÚreceiverÜsz+test_interrupted_by_close.<locals>.receiver) r#rtrîrxr5r7rvrr†r‡r r›)Za_stdlibZb_stdlibr3r4rŠrr2rÚtest_interrupted_by_closeÉs   
 
 
 
 r5c     Ãs d}g}t|dƒD]d}zt ¡\}}WnBtk
rj}z$|jtjtjfksPt‚WY¢qzW5d}~XYnX|||g7}qt     ¡4IdHš6}|D]}| 
tj |¡qt  ¡IdH|j  ¡W5QIdHRX|D] }| ¡qÐ||ddkrtd|dd›dƒdS)NiˆrrrzUnable to open more than z     sockets.)Úranger#rtrÛrdZEMFILEZENFILErrr†r‡rÁr rñrðr›rƒ)    ÚtotalrœrQrˆr‰ÚerŠr•r„rrrÚtest_many_socketsçs$
r9)Crdr2rÇrrr#rr)ÚsysÚ_sysZ_core.tests.tutilrrrNrrr¦r7rr    Ztestingr
r r Zfixturer-r6r<rhrpr~rr‹ÚmarkZskipifrbr“r–r—Úplatformrr¨rªr²Z parametrizerZÚparamr]rÀrÂrÅr•rÆrÞràròrørûr rrrrr r0r5r9rrrrÚ<module>s¢   
 L#     
 
 
3 þþ
    üþ    üøöþ
_K5`,