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
U
Z±d~:ã@s„ddlZddlZddlZddlZddlZddlmZddlm    Z    ddl
m Z m Z m Z ddlZdd„Zdd    „Zejd
d „ƒZd d „ZejjgZejjgZejjgZeeefD]Zedd„eDƒ7Zqªejjdedd„dZejjdedd„dZejjdedd„dZ eedd„ƒƒZ!edd„ƒZ"edd„ƒZ#eee dd„ƒƒƒZ$eed d!„ƒƒZ%eed"d#„ƒƒZ&d$d%„Z'd&d'„Z(d(d)„Z)d*d+„Z*dS),éN)Úsuppressé)Ú_core)Úwait_all_tasks_blockedÚ    SequencerÚassert_checkpointscCs.z| dd¡qWntk
r(YnXdS)Nóxé)ÚsendÚBlockingIOError©Úsock©rúOd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\trio/_core/tests/test_io.pyÚ fill_socketsrcCs*z| d¡qWntk
r$YnXdS)Nr    )Úrecvr r rrrÚ drain_socketsrccs8t ¡}|D]}| d¡q |V|D] }| ¡q&dS)NF)Ú stdlib_socketÚ
socketpairÚ setblockingÚclose)Úpairr rrrr s  rcs(‡fdd„}d ˆj¡}||_|_|S)Ncs ˆ| ¡ƒS©N)Úfileno)Úfileobj©ÚfnrrÚfileno_wrapper+sz$using_fileno.<locals>.fileno_wrapperz<{} on fileno>)ÚformatÚ__name__Ú __qualname__)rrÚnamerrrÚ using_fileno*s   r"cCsg|] }t|ƒ‘qSr)r")Ú.0ÚfrrrÚ
<listcomp><sr%Ú wait_readablecCs|jSr©rrrrrÚ<lambda>Cór()ÚidsÚ wait_writablecCs|jSrr'rrrrr(Fr)Únotify_closingcCs|jSrr'rrrrr(Ir)c
ƒsÊ|\‰}tƒˆˆƒIdHW5QRXg‰‡‡‡fdd„}t ¡4IdHš2}| |¡tƒIdHˆgkspt‚| d¡W5QIdHRXtˆƒtƒˆ|ƒIdHW5QRXg‰‡‡‡fdd„}t ¡4IdHš0}| |¡tƒIdHˆgksút‚t|ƒW5QIdHRXg‰t ¡4IdHš&}| |¡tƒIdH|j     
¡W5QIdHRXˆdgksht‚tˆƒg‰t ¡4IdHš&}| |¡tƒIdH|j     
¡W5QIdHRXˆdgksÆt‚dS)Nc    “sfz$tƒˆˆƒIdHW5QRXWn tjk
rDˆ d¡YnXˆ d¡ˆ d¡dksbt‚dS)NÚ    cancelledÚreadableé
r)rrÚ    CancelledÚappendrÚAssertionErrorr)ÚaÚrecordr&rrÚ block_on_read\s
z&test_wait_basic.<locals>.block_on_readrc    “sTz$tƒˆˆƒIdHW5QRXWn tjk
rDˆ d¡Yn Xˆ d¡dS)Nr-Úwritable)rrr0r1r)r3r4r+rrÚblock_on_writess z'test_wait_basic.<locals>.block_on_writer-) rrÚ open_nurseryÚ
start_soonrr2r
rrÚ cancel_scopeÚcancel)rr&r+Úbr5Únurseryr7r)r3r4r&r+rÚtest_wait_basicPsB
 
      
 
 
 r>c
Ãsv|\}}t ¡4IdHšN}| ||¡tƒIdHt tj¡||ƒIdHW5QRX|j ¡W5QIdHRXdSr)    rr8r9rÚpytestÚraisesÚBusyResourceErrorr:r;)rr&r3r<r=rrrÚtest_double_read“s  rBc
Ãs~|\}}t|ƒt ¡4IdHšN}| ||¡tƒIdHt tj¡||ƒIdHW5QRX|j     ¡W5QIdHRXdSr)
rrr8r9rr?r@rAr:r;)rr+r3r<r=rrrÚtest_double_write s  rCc
ƒsz|\‰}‡‡fdd„}‡‡fdd„}tˆƒt ¡4IdHš.}| |¡| |¡tƒIdH|ˆƒW5QIdHRXdS)Nc    “s*t tj¡ˆˆƒIdHW5QRXdSr©r?r@rZClosedResourceErrorr)r3r&rrÚreader¶sz)test_interrupted_by_close.<locals>.readerc    “s*t tj¡ˆˆƒIdHW5QRXdSrrDr)r3r+rrÚwriterºsz)test_interrupted_by_close.<locals>.writer)rrr8r9r)rr&r+r,r<rErFr=r)r3r&r+rÚtest_interrupted_by_close®s
 
 rGc
ƒsÎg‰‡‡fdd„}‡‡fdd„}|\}}t|ƒt ¡4IdHš~}| ||¡| ||¡tƒIdHˆgksrt‚| d¡tƒIdHˆdgks–t‚t|ƒtƒIdHˆddgksºt‚W5QIdHRXdS)Nc“sˆ|ƒIdHˆ d¡dS)NÚr_task©r1r )r4r&rrrHÌsz3test_socket_simultaneous_read_write.<locals>.r_taskc“sˆ|ƒIdHˆ d¡dS)NÚw_taskrIr )r4r+rrrJÐsz3test_socket_simultaneous_read_write.<locals>.w_taskrrHrJ)rrr8r9rr2r
r)rr&r+rHrJr3r<r=r)r4r&r+rÚ#test_socket_simultaneous_read_writeÇs     
  rKc
ƒsÒ|\}}| tjtjd¡d‰d‰i‰‡‡‡‡fdd„}‡‡‡fdd„}t ¡4IdHšB}| ||dd    ¡| ||d
d ¡| ||d ¡| ||d ¡W5QIdHRXˆd    ˆd ksºt‚ˆd ˆd ksÎt‚dS)Ni'i@Br    c    “sŠt |¡}d}|ˆkrrtd|ƒt| ˆ¡ƒ}|rtƒˆ|ƒIdHW5QRX| |¡}||7}|d|…=q.q| tj    ¡|ˆ|<dS)NrÚsent)
ÚrandomÚRandomÚprintÚ    bytearrayÚ    randrangerr
ÚshutdownrÚSHUT_WR)r ÚseedÚkeyÚrrLÚchunkÚthis_chunk_size)Ú    MAX_CHUNKÚNÚresultsr+rrÚsenderñs
 
 
 z,test_socket_actual_streaming.<locals>.senderc    “sXd}td|ƒtƒˆ|ƒIdHW5QRXt| ˆ¡ƒ}|sBqL||7}q|ˆ|<dS)NrÚreceived)rOrÚlenr)r rUr]rX)rYr[r&rrÚreceivers
 
z.test_socket_actual_streaming.<locals>.receiverrZsend_aéZsend_bZrecv_aZrecv_b)Ú
setsockoptrÚ
SOL_SOCKETÚ    SO_SNDBUFrr8r9r2)rr&r+r3r<r\r_r=r)rYrZr[r&r+rÚtest_socket_actual_streamingãs rdcÃsFd}d}ztj d¡Wntk
r0d}YnXd}|sB|sBt‚dS)NFéÿÿÿÿT)ÚtrioÚlowlevelr,ÚOSErrorr2)Z got_oserrorZ got_no_errorrrrÚ%test_notify_closing_on_invalid_objects
ric
ÃsZtjjtjjfD]D}t ¡}| ¡}W5QRXt t    ¡||ƒIdHW5QRXqdSr)
rfrgr&r+rÚsocketrr?r@rh)ÚwaitÚsrrrrÚtest_wait_on_invalid_object&s
 
 rmc    Ãsrdd„}t ¡\}}t ¡\}}t ¡\}}||||||fD]}| d¡q<|||ô|ä|Ô|ÄtƒIdH|dddt|ƒt|ƒt ¡4IdHšn}| tj|¡| tj    |¡| tj    |¡| tj|¡| tj    |¡tƒIdH|ddd|j
  ¡W5QIdHRX|dddW5QRXW5QRXW5QRXW5QRXW5QRXW5QRXdS)    NcSsbt ¡}t|ƒ|j}|jdkr>|j|ks.t‚|j|ks^t‚n |jdksLt‚|j||ks^t‚dS)N)ZepollZwindowsZkqueue)    rZcurrent_statisticsrOZ io_statisticsÚbackendZtasks_waiting_readr2Ztasks_waiting_writeZ tasks_waiting)Úexpected_readersÚexpected_writersZ
statisticsZiostatsrrrÚcheck3s
z)test_io_manager_statistics.<locals>.checkFr`r)rorpéé) rrrrrrr8r9r+r&r:r;)    rqZa1Zb1Úa2Zb2Úa3Zb3r r=rrrÚtest_io_manager_statistics2s*    (    rvc ƒsèdd„}t ¡d}t ¡4IdHšB}| |tjj|¡tƒIdH| ¡tƒIdH|j     
¡W5QIdHRXW5QRXt ¡x}|  ¡d}t ¡4IdHšB}| |tjj|¡tƒIdH| ¡tƒIdH|j     
¡W5QIdHRXW5QRXW5QRXt  ¡\}}|ª|š|  ¡†‰|  d¡|  d¡t|ƒt ¡4IdHšH}| |tjj|¡| |tjj|¡tƒIdH| ¡|j     
¡W5QIdHRXW5QRXW5QRXW5QRXt  ¡\}}| |ü|  ¡è‰td | ¡| ¡ˆ ¡¡ƒ|  d¡|  d¡t|ƒt ¡‰‡‡fdd„}t ¡4IdHšv}| |tjj|¡| |tjj|¡| |¡tƒIdH| ¡| d¡ˆ ¡IdHtƒIdH|j     
¡W5QIdHRXW5QRXW5QRXW5QRXdS)Nc    ×s&ttƒ||ŽIdHW5QRXdSr)rrh)Z
async_funcÚargsrrrÚ allow_OSErrorts
z8test_can_survive_unnotified_close.<locals>.allow_OSErrorFza={}, b={}, a2={}c“stj ˆ¡IdHˆ ¡dSr)rfrgr&Úsetr©rtÚerrÚwait_readable_a2_then_set°szDtest_can_survive_unnotified_close.<locals>.wait_readable_a2_then_setr)rrjrfr8r9rgr&rrr:r;Úduprrrr+rOrrÚEventr
rk)rxrlr=Ús2r3r<r|rrzrÚ!test_can_survive_unnotified_closebsX
  $  .     
 
 8 
 
 
 
 r€)+r?rjrÚselectrMÚerrnoÚ
contextlibrÚrZtestingrrrrfrrZfixturerr"rgr&Zwait_readable_optionsr+Zwait_writable_optionsr,Znotify_closing_optionsZ options_listÚmarkZ parametrizeZread_socket_testZwrite_socket_testZnotify_closing_testr>rBrCrGrKrdrirmrvr€rrrrÚ<module>sr  
        
 
 
ýÿÿÿ A
 
  1 0