zmc
2023-12-22 9fdbf60165db0400c2e8e6be2dc6e88138ac719a
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
U
Z±dÞFã@svddlZddlZddlZddlZddlZddlmZmZmZm    Z    ddl
m Z m Z m Z mZejdkrnddlmZdd„Zdd    „Zd
d „Zd d „Zdd„Zdd„Zdd„ZejddGdd„dejjƒƒZGdd„dejjejjƒZddddœdd„Z dd „Z!d!d"„Z"d#d$„Z#d%d&„Z$d'd(„Z%d)d*„Z&d+d,„Z'd-d.„Z(d/d0„Z)d1d2„Z*d3d4„Z+d5d6„Z,d7d8„Z-d9d:„Z.d;d<„Z/d=d>„Z0dS)?éN)ÚAF_INETÚAF_INET6Ú SOCK_STREAMÚ IPPROTO_TCP)Ú reorder_for_rfc_6555_section_5_4Ú    close_allÚopen_tcp_streamÚformat_host_port)éé )ÚBaseExceptionGroupc
CsàGdd„dƒ}Gdd„dƒ}|ƒ}tƒ}| |¡W5QRX|jsHt‚|ƒ}t t¡&tƒ}| |¡t‚W5QRXW5QRX|jsŽt‚|ƒ}t t¡.tƒ}| |ƒ¡| |¡W5QRXW5QRX|jsÜt‚dS)Nc@seZdZdZdd„ZdS)ztest_close_all.<locals>.CloseMeFcSs
d|_dS©NT©Úclosed©Úself©rú`d:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\trio/tests/test_highlevel_open_tcp_stream.pyÚclosesz%test_close_all.<locals>.CloseMe.closeN)Ú__name__Ú
__module__Ú __qualname__rrrrrrÚCloseMesrc@seZdZdd„ZdS)z#test_close_all.<locals>.CloseKillercSst‚dS©N)ÚOSErrorrrrrrsz)test_close_all.<locals>.CloseKiller.closeN)rrrrrrrrÚ CloseKillersr)rÚaddrÚAssertionErrorÚpytestÚraisesÚ RuntimeErrorr)rrÚcÚto_closerrrÚtest_close_alls$
 
 
  r#cCsdd„}dd„}||fD]d}|dƒ|dƒ|dƒg}t|ƒ||dƒ|dƒ|dƒgksXt‚|dƒg}t|ƒ||dƒgkst‚q|dƒ|dƒ|dƒ|dƒg}t|ƒ}t|ƒ||ks¶t‚|dƒ|dƒ|dƒ|dƒ|dƒg}t|ƒ||dƒ|dƒ|dƒ|dƒ|dƒgks t‚dS)NcSstttdd |¡dffS)NÚz    10.0.0.{}éP)rrrÚformat©ÚirrrÚfake44s  ûz4test_reorder_for_rfc_6555_section_5_4.<locals>.fake4cSstttdd |¡dffS)Nr$z::{}r%)rrrr&r'rrrÚfake6=sz4test_reorder_for_rfc_6555_section_5_4.<locals>.fake6réé)rrÚlist)r)r*ZfakeÚtargetsÚorigrrrÚ%test_reorder_for_rfc_6555_section_5_43s      
 "r0cCsptddƒdkst‚tddƒdks$t‚tddƒdks6t‚tddƒdksHt‚td    d
ƒd ksZt‚td d
ƒd kslt‚dS) Nú    127.0.0.1r%z 127.0.0.1:80s    127.0.0.1z example.comi»zexample.com:443s example.comú::1Úhttpz
[::1]:https::1)r    rrrrrÚtest_format_host_portXs r4cÃsœtj ¡}| d¡IdH| ¡\}}| d¡td|ƒIdH}| ¡IdH\}}| d¡IdH| d¡IdHdkszt    ‚| 
¡IdH|  ¡|  ¡dS)N©r1rr+r1óx) ÚtrioÚsocketÚbindÚ getsocknameÚlistenrÚacceptZsend_allÚrecvrÚacloser)Z listen_sockÚ_Z listen_portÚ client_streamÚ server_sockrrrÚ*test_open_tcp_stream_real_socket_smoketestbs
 
rBc    ÃsPt t¡tddƒIdHW5QRXt t¡tddƒIdHW5QRXdS)Nr%r1s80)rrÚ
ValueErrorrÚ    TypeErrorrrrrÚ%test_open_tcp_stream_input_validationqs  rEc
Cs`t ¡N}z| d¡Wn tk
r8YW5QR£dSX| ¡ddkW5QR£SQRXdS)N)ú    127.0.0.2rFrrF)r8r9rr:)ÚsrrrÚcan_bind_127_0_0_2xs 
rHc Ãsxtj ¡b}| d¡IdH| ¡tƒr2d}nd}t| ¡d|iŽIdH4IdHšz}|j ¡d|ksnt‚ttjdƒr”|j     tjj
tjj ¡s”t‚|  ¡IdH\}}|  ¡IdH| ¡|d|ksÌt‚W5QIdHRXt t¡t| ¡ddiŽIdHW5QRXt| ¡ddiŽIdH4IdHš4}|  ¡IdH\}}| ¡||j ¡ksZt‚W5QIdHRXW5QRXdS)    Nr5rFr1Ú local_addressrÚIP_BIND_ADDRESS_NO_PORTz::z0.0.0.0)r7r8r9r;rHrr:rÚhasattrÚ
getsockoptÚ
IPPROTO_IPrJr<r>rrrr)ZlistenerrIr@rAZ remote_addrrrrÚtest_local_address_realsB ÿÿ ÿ  "ÿÿrNF)Úeqc@s€eZdZe ¡Ze ¡Ze ¡Ze ¡ZejddZ    ejddZ
ejddZ ejddZ ejddZ dd„Zdd„Zdd    „ZdS)
Ú
FakeSocketN)ÚdefaultFcÃs|d|_|d|_|j|jjks&t‚||jj|j<t ¡|jj|j<|jj|j\}}t     |¡IdH|dkrxt
dƒ‚|dkr†d|_ d|_ dS)Nrr+ÚerrorZsorryÚpostconnect_failT) ÚipÚportÚscenarioÚsocketsrr7Ú current_timeÚ connect_timesÚip_dictÚsleeprÚfailingÚ    succeeded)rÚsockaddrÚdelayÚresultrrrÚconnectÀs
 
zFakeSocket.connectcCs
d|_dSr rrrrrrÎszFakeSocket.closecOs|jr
t‚dSr)r\ÚKeyboardInterrupt)rÚargsÚkwargsrrrÚ
setsockoptÒszFakeSocket.setsockopt)rrrÚattrÚibrVÚfamilyÚtypeÚprotorTrUr]rr\rarrerrrrrP³s     rPc@s<eZdZdd„Zdd„Zdd„Zdd„Zd    d
„Zd d „Zd S)ÚScenarioc    CsŒdd„|Dƒ}tt|ƒƒt|ƒks&t‚i}|D].\}}}d|ksDt‚|dksPt‚||f||<q.||_||_||_||_d|_i|_i|_    dS)NcSsg|]\}}}|‘qSrr)Ú.0rTr?rrrÚ
<listcomp>Üsz%Scenario.__init__.<locals>.<listcomp>r)rRÚsuccessrS)
ÚlenÚsetrrUÚip_orderrZÚsupported_familiesÚ socket_countrWrY)    rrUÚip_listrrrqrZrTr_r`rrrÚ__init__Ús  zScenario.__init__cCs.||jkrtdƒ‚|jd7_t||||ƒS)Nz%pretending not to support this familyr+)rrrrsrP)rrhrirjrrrr8ìs
zScenario.socketcCs@d|kr tjj}||jddf}ntjj}||jf}|ttd|fS)Nú:rr$)r7r8rrUrrr)rrTrhr^rrrÚ_ip_to_gai_entryòs 
zScenario._ip_to_gai_entrycƒsf|dks t‚|ˆjkst‚|tjjks*t‚|tjjks:t‚|dksFt‚|dksRt‚‡fdd„ˆjDƒS)Nstest.example.comrcsg|]}ˆ |¡‘qSr)rw)rlrTrrrrmsz(Scenario.getaddrinfo.<locals>.<listcomp>)rrUr7r8Ú    AF_UNSPECrrq)rÚhostrUrhrirjÚflagsrrrÚ getaddrinfoûs   zScenario.getaddrinfocÃst‚dSr)ÚNotImplementedError)rr^rzrrrÚ getnameinfoszScenario.getnameinfocCs\|jt|jƒkst‚|j ¡D]8\}}||jks4t‚||k    rF|jsFt‚|j|jkst‚qdSr)rsrorWrÚitemsrZrrU)rr]rTr8rrrÚchecks 
zScenario.checkN)    rrrrur8rwr{r}rrrrrrkÙs         rkTr)Úipv4_supportedÚipv6_supportedÚ expect_errorc
 
ËsØtƒ}|r| tjj¡|r*| tjj¡t|||ƒ}tj |¡tj |¡z8t    d|f|ŽIdH}|dkspt
‚|  |j¡|j|fWSt
k
rœ‚Yn8|k
rÒ}    z|  d¡|    |fWY¢Sd}    ~    XYnXdS)Nztest.example.comr) rprr7r8rrrkZset_custom_hostname_resolverZset_custom_socket_factoryrrr)
rUrtr€rr‚rdrrrVÚstreamÚexcrrrÚ run_scenarios$      
r…cÃs8tddgƒIdH\}}|jdks$t‚t ¡dks4t‚dS)Nr%)ú1.2.3.4ç°rh‘í|¿?rnr†r‡©r…rTrr7rX©Úautojump_clockÚsockrVrrrÚtest_one_host_quick_success<srŒcÃs8tddgƒIdH\}}|jdks$t‚t ¡dks4t‚dS)NéQ)r†édrnr†rŽrˆr‰rrrÚtest_one_host_slow_successBsrcÃs<tddgtdIdH\}}t|tƒs(t‚t ¡dks8t‚dS)NéR)r†r‡rR©r‚r‡©r…rÚ
isinstancerr7rX©rŠr„rVrrrÚtest_one_host_quick_failHsÿr•cÃs<tddgtdIdH\}}t|tƒs(t‚t ¡dks8t‚dS)NéS)r†rŽrRr‘rŽr’r”rrrÚtest_one_host_slow_failPsÿr—cÃs,tddgtdIdH\}}t|tƒs(t‚dS)Nr–)r†r+rSr‘)r…rbr“rr”rrrÚ"test_one_host_failed_after_connectXs ÿr˜cÃsRtddddgƒIdH\}}|jdks(t‚t ¡dks8t‚|jddd    d
œksNt‚dS) Nr%©ú1.1.1.1r+rn©ú2.2.2.2r+rn©ú3.3.3.3皙™™™™É?rnržgffffffæ?rçÐ?çà?©ršrœrž©r…rTrr7rXrYr‰rrrÚtest_basic_fallthrough`sýþýr¤cÃsPtddddgƒIdH\}}|jdks(t‚t ¡dks8t‚|jddd    œksLt‚dS)
Nr%r™)rœçš™™™™™¹?rnrrœgffffffÖ?rr )ršrœr£r‰rrrÚtest_early_successssýþþr¦cÃsVtddddgddIdH\}}|jdks,t‚t ¡dks<t‚|jd    dd
d œksRt‚dS) Nr%r™r›rgÍÌÌÌÌÌÜ?©Úhappy_eyeballs_delayršr+rgÍÌÌÌÌÌì?r¢r£r‰rrrÚtest_custom_delay†sýù    ýr©cÃsVtdddddgƒIdH\}}|jdks*t‚t ¡dks:t‚|jdd    d
d d œksRt‚dS) Nr%©ršr¥rR©rœrŸrR©ržé
rn)ú4.4.4.4r rnr®gš™™™™™é?rr¥ç433333Ó?皙™™™™á?©ršrœržr®r£r‰rrrÚtest_custom_errors_expedite™s ûþ
ür²cÃs~tdddddgtdIdH\}}t|tƒs.t‚t|jtƒs>t‚t|jjƒdksRt‚t     ¡dksbt‚|j
d    d
d d d œkszt‚dS)Nr%rªr«)ržr­rR)r®r rRr‘égš™™™™™$@rr¥r¯r°r±) r…rr“rÚ    __cause__r roÚ
exceptionsr7rXrYr”rrrÚ test_all_fail®s&üø
ür¶cÃs¦tddddddgddIdH\}}|jd    jr2t‚|jd
jsZ|jd jsZ|jd jsZt‚|jd jrjt‚|jdksxt‚t ¡dksˆt‚|jddddddœks¢t‚dS)Nr%)ršr¡rR©rœr­rn)ržé    rn)r®érn)ú5.5.5.5r¡rRr+r§ršrœržr®rº)rœržr®g%@rr¡çø?g@g @)ršrœržr®rº)r…rWr]rrTr7rXrYr‰rrrÚtest_multi_successÅs6û÷ 
ÿ
þ
ýûr¼cÃsTtddddgddIdH\}}|jdks,t‚t ¡dks<t‚|jd    dd
œksPt‚dS) Nr%)ršr­rRr›)ú::3r¡rnr+r§r½r»r)ršr½r£r‰rrrÚtest_does_reorderãsû÷ þr¾cÃsXtdddddgdddIdH\}}|jd    ks0t‚t ¡d
ks@t‚|jd d d œksTt‚dS)Nr%)r2r­rn)rœrrn)r½r¥rn)r®rrnr+F)r¨r€r½çš™™™™™ñ?rçð?)r2r½r£r‰rrrÚtest_handles_no_ipv4÷s üõ þrÁcÃsXtdddddgdddIdH\}}|jd    ks0t‚t ¡d
ks@t‚|jd d d œksTt‚dS)Nr%)r2rrnr·)r½rrn)r®r¥rnr+F)r¨rr®r¿rrÀ)rœr®r£r‰rrrÚtest_handles_no_ipv6 s üõ þrÂcÃs,tdgtdIdH\}}dt|ƒks(t‚dS)Nr%r‘zno results found)r…rÚstrrr”rrrÚ test_no_hosts#srÄc    Ãsdt d¡*}tdddddgtdIdH\}}|‚W5QRX|jsDt‚t ¡dksTt‚|jdd    dS)
Nér%)ršr­rnr·r¬)r®r­rnr‘F)r])r7Z move_on_afterr…r Zcancelled_caughtrrXr)rŠZ cancel_scoper„rVrrrÚ test_cancel(s üø 
rÆ)1rÚsysr8rfr7Z trio.socketrrrrZtrio._highlevel_open_tcp_streamrrrr    Ú version_infoZexceptiongroupr r#r0r4rBrErHrNrGÚ
SocketTyperPÚabcZ SocketFactoryZHostnameResolverrkr…rŒrr•r—r˜r¤r¦r©r²r¶r¼r¾rÁrÂrÄrÆrrrrÚ<module>sL
 %
    2
%Fï )