a ze@sddlZddlZddlZddlZddlZddlZddlZddlmZm Z m Z z ej Wne yre dYn0ddZGdddejZedkredS) N)TESTFN reap_threads cpython_onlyzselect.poll not definedcCs(g}|D]\}}||@r||q|S)N)append)readyflagmatchfdmoder B/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_poll.pyfind_ready_matchings   r c@s\eZdZddZddZddZddZed d Ze d d Z e e d e ddZdS) PollTestscCsrt}d}d}t|}g}g}i}i}t|D]Z} t\} } || || tj|| tj | | | | | || <| || <q0g} |r\|} t | tj }|st dt |} t| ||} t | tj}|st dt |} t| |}|t||| |t|| t| ||| || ||| q|| |g|dS)N s This is a test.zno pipes ready for writingzno pipes ready for reading)selectpolllenrangeospiperegistermodifyPOLLINPOLLOUTrr RuntimeErrorrandomchoicewriteread assertEqualclose unregisterremove)selfpZ NUM_PIPESZMSGZMSG_LENreadersZwritersZr2wZw2riZrdwrZbufsrZ ready_writersZ ready_readersbufr r r test_poll1sL              zPollTests.test_poll1c Csht\}}t|t|t}|||}||d|tjftt dF}| }t}|||}||dd|Wdn1s0Y|}||d|tjft t t}| t |j|| t |j|t}| t|jdt}Gddd}Gddd} | t |j|d| t |j| ddS)Nrwc@s eZdZdS)z,PollTests.test_poll_unit_tests..NopeN)__name__ __module__ __qualname__r r r r Nopeksr/c@seZdZddZdS)z.PollTests.test_poll_unit_tests..AlmostcSsdS)Nfilenor )r#r r r r0osz5PollTests.test_poll_unit_tests..Almost.filenoN)r,r-r.r0r r r r Almostnsr1)rrr rrrrPOLLNVALopenrr0unlink assertRaises TypeErrorr!KeyError) r#ZFDr*r$rfr pollsterr/r1r r r test_poll_unit_testsLs4      2 zPollTests.test_poll_unit_testsc Csd}tj|dtjdd}|||jddd|j}t}| |tj dD]}||}|gkrjqR|d\}}|tj @r| } | dkrR| dqRqR|tj @r| } | sq|| dqRqR| d |qRdS) Nz?for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; doneTr)shellstdoutbufsize)riiii@i>r?r?r?r?r?r?r?r?r?z6error: pipe seems to be closed, but still returns datas testing... z,Unexpected return value from select.poll: %s) subprocessPopenPIPE __enter__ addCleanup__exit__r=rrrrPOLLHUPreadlinefailr) r#cmdprocr$r:ZtoutZfdlistr flagsliner r r test_poll2xs4       zPollTests.test_poll2cCst}|d|t|jdd}|dkr8|d|t|jdd|t|jdd|t|jdd|t|jdddS)NlzOverflow must have occurredrr?)rrrr5 OverflowErrorrI ValueErrorr)r#r:xr r r test_poll3s  zPollTests.test_poll3cCs~ddlm}m}m}t}|d|t|jd|d|t|j d|d|t|j|d|t|j|ddS)Nr) USHRT_MAXINT_MAXUINT_MAXrO) Z _testcapirUrVrWrrrr5rQr)r#rUrVrWr:r r r test_poll_c_limitss zPollTests.test_poll_c_limitsc Cst\}}|tj||tj|g}tdD]&}t|}|tj|||q4t}|D]}| |tj qht j |jd}| zRtd|D]}||q| |tj|t|jWt|d|nt|d|0dS)N )targetg?spam)rrrEr rduprrrrr threadingThreadstarttimesleepr!rr5rrjoin)r#r8r*Zrfdsr&r r:tr r r test_threaded_polls.        zPollTests.test_threaded_pollz!Threading required for this test.cCsdD]}t\}}t}||tjtj|j|fd}||j dd| | t |d| | | t|t|qdS)N)Nir?ggg0.+)rZargsg?)timeoutr[)rrrrrrr]r^r_rbZ assertTrueis_aliverZ assertFalser )r#Z timeout_msr8r*r:Z poll_threadr r r !test_poll_blocks_with_negative_mss    z+PollTests.test_poll_blocks_with_negative_msN)r,r-r.r)r;rNrTrrXrrdunittestZ skipUnlessr]rhr r r r rs1,   r__main__)rrArrr]r`riZ test.supportrrrrAttributeErrorZSkipTestr ZTestCaserr,mainr r r r s   M