a 5êdg$ã @s´ddlZddlZddlZddlZddlZddlZeedƒsDe d¡‚z e ¡Wn<e yŒZ z$e jej krve d¡‚‚WYdZ [ n dZ [ 00Gdd„dej ƒZ edkr°e ¡dS)éNÚepollztest works only on Linux 2.6zkernel doesn't support epoll()c@steZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„ZdS)Ú TestEPollcCst d¡|_|jg|_dS)N)ú 127.0.0.1r)ÚsocketÚ create_serverÚ serverSocketÚ connections©Úself©r ú+/usr/local/lib/python3.9/test/test_epoll.pyÚsetUp+s zTestEPoll.setUpcCs|jD] }| ¡qdS)N)rÚclose)r Zsktr r r ÚtearDown/s zTestEPoll.tearDownc Cs–t ¡}| d¡z| d|j ¡df¡Wn8tyf}z | |jdtj ¡WYd}~nd}~00t dƒ‚|j  ¡\}}|j   ||f¡||fS)NFrérz&Connect should have raised EINPROGRESS)rÚ setblockingÚconnectrÚ getsocknameÚOSErrorÚ assertEqualÚargsÚerrnoZ EINPROGRESSÚAssertionErrorÚacceptrÚextend)r ÚclientÚeÚserverÚaddrr r r Ú_connected_pair3s *zTestEPoll._connected_pairc CsÊzt d¡}Wn0ty>}ztt|ƒƒ‚WYd}~n d}~00| | ¡dk| ¡¡| |j ¡| ¡| |j¡|  t |j¡t tdƒrÆt dtj ¡ ¡tjtj d ¡tjdd ¡dS)NérÚ EPOLL_CLOEXECéÿÿÿÿ©Úflags) ÚselectrrrÚstrÚ assertTrueÚfilenoÚclosedrÚ assertRaisesÚ ValueErrorÚhasattrr!)r Úeprr r r Ú test_createAs"  zTestEPoll.test_createcCs¸| ttjddd¡| ttjd¡| ttjd¡| ttjd¡| ttjdg¡| ttji¡| ttjd¡| ttjd¡|jttjddttd ƒr´|jttjd d dS) NrééZfoor réþÿÿÿ)Úsizehintr!iD0r#)r*Ú TypeErrorr%rr+r,rr r r r Útest_badcreateQs zTestEPoll.test_badcreatecCsdt d¡,}| | ¡d¡| |j¡Wdƒn1s<0Y| |j¡| t|j¡dS)Nr r) r%rZ assertGreaterr(Ú assertFalser)r'r*r+)r r-r r r Útest_context_manager`s  * zTestEPoll.test_context_managercCsf| ¡\}}t d¡}z<| | ¡tjtjB¡| | ¡tjtjB¡W| ¡n | ¡0t d¡}z4| |tjtjB¡| |tjtjB¡W| ¡n | ¡0t d¡}z¤| t |jt ƒtjtjB¡| t |jdtjtjB¡| t |jdtjtjB¡| t |jdtjtjB¡| |tjtjB¡| t |j|tjtjB¡W| ¡n | ¡0dS)Nr/r"i') rr%rÚregisterr(ÚEPOLLINÚEPOLLOUTrr*r3Úobjectr+r)r rrr-r r r Útest_addgs<     ÿ  ÿ  ÿ  ÿ  ÿzTestEPoll.test_addc Cs| ¡\}}t d¡ˆ}tj | ¡¡}| | ¡tjtjB¡| | ¡tjtjB¡| dd¡}| dd¡}|  t |ƒd¡|  t |ƒd¡Wdƒn1s¤0Yz| dd¡Wn:t yø}z"|  |j dt j|¡WYd}~nd}~00| d¡dS)Nr/régÍÌÌÌÌÌì?rz%epoll on closed fd didn't raise EBADF)rr%rÚfromfdr(r7r8r9ÚpollrÚlenrrrÚEBADFZfail)r rrr-Zep2ÚeventsZevents2rr r r Ú test_fromfds    .,zTestEPoll.test_fromfdcCsº| ¡\}}t d¡}| | ¡tjtjBtjB¡| | ¡tjtjBtjB¡t  ¡}|  dd¡}t  ¡}|  ||dk||¡| ¡tjf| ¡tjfg}|  t |ƒt |ƒ¡|j ddd}|  |¡| d¡| d¡t  ¡}|  dd¡}t  ¡}|  ||d k¡| ¡tjtjBf| ¡tjtjBfg}|  t |ƒt |ƒ¡| | ¡¡| | ¡tj¡t  ¡}|  dd¡}t  ¡}|  ||d k¡| ¡tjfg}|  ||¡dS) Nr rr<gš™™™™™¹?)ÚtimeoutZ maxeventssHello!sworld!!!çð?ç{®Gáz„?)rr%rr7r(r8r9ÚEPOLLETÚtimeÚ monotonicr>r5rÚsortedÚsendallÚ unregisterÚmodify)r rrr-ÚnowrAÚthenZexpectedr r r Útest_control_and_wait¢sH   ÿ ÿ   ÿ    ÿ zTestEPoll.test_control_and_waitcCs,| ttjd¡| tt ¡jdtj¡dS)Nr1r")r*r+r%rr7r8r r r r Ú test_errorsÑsÿzTestEPoll.test_errorsc Cs¨| ¡\}}| ¡}t d¡}| |¡t ¡}| dd¡}t ¡}| ||dk¡|  ¡|  t ¡}|  |¡Wdƒn1sˆ0Y|  |jjtj¡dS)Nr rr<rE)rr(r%rr7rGrHr>r5rr*rrKrÚ exceptionrr@) r rrÚfdr-rMrArNÚcmr r r Útest_unregister_closedÖs     (z TestEPoll.test_unregister_closedcCs¸ttdƒ}| |j¡| ¡}t ¡}| | ¡t¡|  |j ¡| ¡|  |j ¡|  t |j¡| ¡|  t |j|tj¡|  t |jd¡|  t |j|tj¡|  t |j|¡dS)NÚrbrD)ÚopenÚ__file__Ú addCleanuprr(r%rZassertIsInstanceÚintr5r)r'r*r+rLr8r>r7rK)r Z open_filerRrr r r Ú test_closeçs    zTestEPoll.test_closecCs.t ¡}| |j¡| t | ¡¡d¡dS)NF)r%rrXrrÚosÚget_inheritabler()r rr r r Útest_fd_non_inheritableÿs z!TestEPoll.test_fd_non_inheritableN)Ú__name__Ú __module__Ú __qualname__r rrr.r4r6r;rBrOrPrTrZr]r r r r r)s&/rÚ__main__)rr[r%rrGZunittestr,ZSkipTestrrrZENOSYSZTestCaserr^Úmainr r r r Ús"     ]