ó {G_Tc@súdZddlZddlZddlZddlZddlZddlmZeedƒssej dƒ‚nyej ƒWn:e k r½Z e jej kr·ej dƒ‚n‚nXdejfd„ƒYZd „Zed kröeƒndS( s Tests for epoll wrapper. iÿÿÿÿN(t test_supporttepollstest works only on Linux 2.6skernel doesn't support epoll()t TestEPollcBsbeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z RS( cCsBtjƒ|_|jjdƒ|jjdƒ|jg|_dS(Ns 127.0.0.1ii(s 127.0.0.1i(tsockett serverSockettbindtlistent connections(tself((s+/usr/local/lib/python2.7/test/test_epoll.pytsetUp+scCs"x|jD]}|jƒq WdS(N(Rtclose(Rtskt((s+/usr/local/lib/python2.7/test/test_epoll.pyttearDown2scCs±tjƒ}|jtƒy$|jd|jjƒdfƒWn0tjk ro}|j|jdt j ƒn Xt dƒ‚|jj ƒ\}}|j j||fƒ||fS(Ns 127.0.0.1iis&Connect should have raised EINPROGRESS(Rt setblockingtFalsetconnectRt getsocknameterrort assertEqualtargsterrnot EINPROGRESStAssertionErrortacceptRtextend(Rtclienttetservertaddr((s+/usr/local/lib/python2.7/test/test_epoll.pyt_connected_pair6s  $ cCsŸytjdƒ}Wn%tk r:}tt|ƒƒ‚nX|j|jƒdk|jƒƒ|j|j ƒ|jƒ|j|jƒ|j t |jƒdS(Nii( tselectRtOSErrorRtstrt assertTruetfilenotclosedR t assertRaisest ValueError(RtepR((s+/usr/local/lib/python2.7/test/test_epoll.pyt test_createDs" cCs‘|jttjdddƒ|jttjdƒ|jttjdƒ|jttjdƒ|jttjdgƒ|jttjiƒdS(Niiitfoo((R$t TypeErrorRRtNone(R((s+/usr/local/lib/python2.7/test/test_epoll.pyttest_badcreateOs cCs¹|jƒ\}}tjdƒ}zD|j|jƒtjtjBƒ|j|jƒtjtjBƒWd|jƒXtjdƒ}z8|j|tjtjBƒ|j|tjtjBƒWd|jƒXtjdƒ}zÐ|jt |jt ƒtjtjBƒ|jt |jdtjtjBƒ|jt |jdtjtjBƒ|jt |jdtjtjBƒ|j|tjtjBƒ|jt |j|tjtjBƒWd|jƒXdS(Niiÿÿÿÿi'(RRRtregisterR"tEPOLLINtEPOLLOUTR R$R)tobjectR*R%tIOError(RRRR&((s+/usr/local/lib/python2.7/test/test_epoll.pyttest_addWs2 $  cCs+|jƒ\}}tjdƒ}tjj|jƒƒ}|j|jƒtjtjBƒ|j|jƒtjtjBƒ|jddƒ}|jddƒ}|j t |ƒdƒ|j t |ƒdƒ|j ƒy|jddƒWn0t k r}|j |j dtj|ƒnX|jdƒdS(NiiigÍÌÌÌÌÌì?is%epoll on closed fd didn't raise EBADF(RRRtfromfdR"R,R-R.tpollRtlenR R0RRtEBADFtfail(RRRR&tep2teventstevents2R((s+/usr/local/lib/python2.7/test/test_epoll.pyt test_fromfd}s   !cCsz|jƒ\}}tjdƒ}|j|jƒtjtjBtjBƒ|j|jƒtjtjBtjBƒtjƒ}|j ddƒ}tjƒ}|j ||dk||ƒ|j ƒ|jƒtjf|jƒtjfg}|j ƒ|j ||ƒ|j ddddƒ}|j |ƒ|j dƒ|j d ƒtjƒ}|j ddƒ}tjƒ}|j ||d kƒ|j ƒ|jƒtjtjBf|jƒtjtjBfg}|j ƒ|j ||ƒ|j|jƒƒ|j|jƒtjƒtjƒ}|j ddƒ}tjƒ}|j ||d kƒ|jƒtjfg}|j ||ƒdS( Niiigš™™™™™¹?ttimeoutgÍÌÌÌÌÌ@t maxeventssHello!sworld!!!g{®Gáz„?(RRRR,R"R-R.tEPOLLETttimeR3t assertFalsetsortRtsendt unregistertmodify(RRRR&tnowR8tthentexpected((s+/usr/local/lib/python2.7/test/test_epoll.pyttest_control_and_wait“sH             cCs<|jttjdƒ|jttjƒjdtjƒdS(Niþÿÿÿiÿÿÿÿ(R$R%RRR,R-(R((s+/usr/local/lib/python2.7/test/test_epoll.pyt test_errorsÄscCs–|jƒ\}}|jƒ}tjdƒ}|j|ƒtjƒ}|jddƒ}tjƒ}|j||dkƒ|jƒ|j |ƒdS(Niiig{®Gáz„?( RR"RRR,R>R3R?R RB(RRRtfdR&RDR8RE((s+/usr/local/lib/python2.7/test/test_epoll.pyttest_unregister_closedÉs     ( t__name__t __module__R R RR'R+R1R:RGRHRJ(((s+/usr/local/lib/python2.7/test/test_epoll.pyR)s     &  1 cCstjtƒdS(N(Rt run_unittestR(((s+/usr/local/lib/python2.7/test/test_epoll.pyt test_main×st__main__(t__doc__RRR>RtunittestttestRthasattrtSkipTestRR0RtENOSYStTestCaseRRNRK(((s+/usr/local/lib/python2.7/test/test_epoll.pyts$     ®