a ze$ @sdZddlZddlZddlZddlZddlZddlZeedsHedz e Wn<e yZ z$e jej krzedWYdZ [ n dZ [ 00Gdddej ZedkredS) z Tests for epoll wrapper. Nepollztest works only on Linux 2.6zkernel doesn't support epoll()c@steZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZdS) TestEPollcCstd|_|jg|_dS)N) 127.0.0.1r)socket create_server serverSocket connectionsselfr C/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_epoll.pysetUp+s zTestEPoll.setUpcCs|jD] }|qdS)N)rclose)r Zsktr r r tearDown/s zTestEPoll.tearDownc Cst}|dz|d|jdfWn8tyf}z ||jdtj WYd}~nd}~00t d|j \}}|j ||f||fS)NFrrz&Connect should have raised EINPROGRESS)r setblockingconnectr getsocknameOSError assertEqualargserrnoZ EINPROGRESSAssertionErroracceptrextend)r clienteserveraddrr r r _connected_pair3s *zTestEPoll._connected_pairc Csztd}Wn0ty>}ztt|WYd}~n d}~00||dk|||j |||j| t |jt tdrtdtj tjtj dtjdddS)Nr EPOLL_CLOEXECflags) selectrrrstr assertTruefilenoclosedr assertRaises ValueErrorhasattrr!)r eprr r r test_createAs"  zTestEPoll.test_createcCs|ttjddd|ttjd|ttjd|ttjd|ttjdg|ttji|ttjd|ttjd|jttjddttd r|jttjd d dS) NrZfoor r)sizehintr!iD0r#)r* TypeErrorr%rr+r,rr r r r test_badcreateQs zTestEPoll.test_badcreatecCsdtd,}||d||jWdn1s<0Y||j|t|jdS)Nr r) r%rZ assertGreaterr( assertFalser)r'r*r+)r r-r r r test_context_manager`s  * zTestEPoll.test_context_managercCsf|\}}td}z<||tjtjB||tjtjBW|n |0td}z4||tjtjB||tjtjBW|n |0td}z|t |jt tjtjB|t |jdtjtjB|t |jdtjtjB|t |jdtjtjB||tjtjB|t |j|tjtjBW|n |0dS)Nr/r"i') rr%rregisterr(EPOLLINEPOLLOUTrr*r3objectr+r)r rrr-r r r test_addgs<             zTestEPoll.test_addc Cs|\}}td}tj|}||tjtjB||tjtjB|dd}|dd}| t |d| t |dWdn1s0Yz|ddWn:t y}z"| |j dt j|WYd}~nd}~00|ddS)Nr/rg?rz%epoll on closed fd didn't raise EBADF)rr%rfromfdr(r7r8r9pollrlenrrrEBADFZfail)r rrr-Zep2eventsZevents2rr r r test_fromfds    .,zTestEPoll.test_fromfdcCs|\}}td}||tjtjBtjB||tjtjBtjBt }| dd}t }| ||dk|||tjf|tjfg}| t |t ||j ddd}| ||d|dt }| dd}t }| ||d k|tjtjBf|tjtjBfg}| t |t |||||tjt }| dd}t }| ||d k|tjfg}| ||dS) Nr rr<g?)timeoutZ maxeventssHello!sworld!!!?{Gz?)rr%rr7r(r8r9EPOLLETtime monotonicr>r5rsortedsendall unregistermodify)r rrr-nowrAthenZexpectedr r r test_control_and_waitsH            zTestEPoll.test_control_and_waitcCs,|ttjd|ttjdtjdS)Nr1r")r*r+r%rr7r8r r r r test_errorsszTestEPoll.test_errorsc Cs|\}}|}td}||t}|dd}t}|||dk| | t }| |Wdn1s0Y| |jjtjdS)Nr rr<rE)rr(r%rr7rGrHr>r5rr*rrKr exceptionrr@) r rrfdr-rMrArNcmr r r test_unregister_closeds     (z TestEPoll.test_unregister_closedcCsttd}||j|}t}||t| |j || |j | t |j|| t |j|tj| t |jd| t |j|tj| t |j|dS)NrbrD)open__file__ addCleanuprr(r%rZassertIsInstanceintr5r)r'r*r+rLr8r>r7rK)r Z open_filerRrr r r test_closes    zTestEPoll.test_closecCs.t}||j|t|ddS)NF)r%rrXrrosget_inheritabler()r rr r r test_fd_non_inheritables z!TestEPoll.test_fd_non_inheritableN)__name__ __module__ __qualname__r rrr.r4r6r;rBrOrPrTrZr]r r r r r)s&/r__main__)__doc__rr[r%rrGZunittestr,ZSkipTestrrrZENOSYSZTestCaserr^mainr r r r s$     ]