a 5êdg#ã@sndZddlZddlZddlZddlZddlZddlZeedƒsHe d¡‚Gdd„dej ƒZ e dkrje  ¡dS)z Tests for kqueue wrapper. éNÚkqueueztest works only on BSDc@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)Ú TestKQueuecCsTt ¡}| | ¡dk| ¡¡| |j ¡| ¡| |j¡| t|j¡dS©Nr)ÚselectrÚ assertTrueÚfilenoÚclosedÚcloseÚ assertRaisesÚ ValueError)ÚselfÚkq©rú,/usr/local/lib/python3.9/test/test_kqueue.pyÚtest_create_queues  zTestKQueue.test_create_queuec Cs&ddlm}m}m}m}t tjtj¡}|  tj |¡t   |¡}t   d¡}|  |j|¡|  |jt j¡|  |jt j¡|  |jd¡|  |jd¡|  |jd¡|  ||¡| ||¡| ||k¡| ||k¡||||fD]4}| t||d¡| t||d¡| t||d¡qât   |t j¡}|  |j|¡|  |jt j¡|  |jt j¡|  |jd¡|  |jd¡|  |jd¡|  ||¡| ||¡t   |t jt j¡}|  |j|¡|  |jt j¡|  |jt j¡|  |jd¡|  |jd¡|  |jd¡|  ||¡| ||¡t   ddddd d ¡}|  |jd¡|  |jd¡|  |jd¡|  |jd¡|  |jd ¡|  |jd ¡|  ||¡| ||¡d } t   | ddd| d| ¡}|  |j| ¡|  |jd¡|  |jd¡|  |jd¡|  |j| d¡|  |j| ¡|  ||¡| ||¡d } t   dd| ¡}|  |jd¡|  |jd¡|  |j| ¡|  |jd¡|  |jd¡|  |jd¡|  ||¡| ||¡d } t   ddd| ¡}|  |jd¡|  |jd¡|  |jd¡|  |j| ¡|  |jd¡|  |jd¡|  ||¡| ||¡dS)Nr)ÚltÚleÚgtÚgeièéÚevéééééiÿiÿÿlÿÿ)ÚoperatorrrrrÚosÚopenÚdevnullÚO_WRONLYÚ addCleanupr rÚkeventÚ assertEqualÚidentÚfilterÚKQ_FILTER_READÚflagsÚ KQ_EV_ADDZfflagsÚdataZudataZassertNotEqualrr Ú TypeErrorÚKQ_FILTER_WRITEZ KQ_EV_ONESHOT) r rrrrÚfdrÚotherÚopZbignumrrrÚtest_create_events˜               zTestKQueue.test_create_eventc Csöt d¡}t ¡}| d¡z| d| ¡df¡Wn8tyn}z | |jdtj ¡WYd}~n d}~00|  ¡\}}t   ¡}t j   | ¡¡}t  | ¡t jt jt jB¡}| |gd¡t  | ¡t jt jt jB¡}| |gd¡t  | ¡t jt jt jB¡}| |gd¡t  | ¡t jt jt jB¡}| |gd¡| ddd¡} tdd„| Dƒƒ} | | t| ¡t jf| ¡t jfgƒ¡| d ¡| d ¡td ƒD]2} | ddd¡} t| ƒdkrÆqÞt d ¡q | d ¡tdd„| Dƒƒ} | | t| ¡t jf| ¡t jf| ¡t jf| ¡t jfgƒ¡t  | ¡t jt j¡}| |gd¡t  | ¡t jt j¡}| |gd¡t  | ¡t jt j¡}| |gdd¡| gdd¡} tdd„| Dƒƒ} | | t| ¡t jfgƒ¡| ¡| ¡| ¡dS)N)ú 127.0.0.1rFr0rrrcss|]}|j|jfVqdS©N©r$r%©Ú.0ÚerrrÚ ’óz.TestKQueue.test_queue_event..sHello!sworld!!!é gð?z'timeout waiting for event notificationscss|]}|j|jfVqdSr1r2r3rrrr6£r7g®Gáz®ï?css|]}|j|jfVqdSr1r2r3rrrr6¹r7)ÚsocketÚ create_serverÚ setblockingÚconnectÚ getsocknameÚOSErrorr#ÚargsÚerrnoZ EINPROGRESSÚacceptrrÚfromfdrr"r+r(Ú KQ_EV_ENABLEÚcontrolr&ÚsetÚsendÚrangeÚlenÚtimeÚsleepZfailZ KQ_EV_DELETEr ) r Z serverSocketÚclientr5ZserverÚaddrr Zkq2rÚeventsÚirrrÚtest_queue_eventps”  *   þ  þ  þ  þ  þ        ü þ þ þ ÿzTestKQueue.test_queue_eventcCs´t ¡}t ¡\}}| d¡t |tjtjtjB¡}t |tjtjtjB¡}|  ||gdd¡}|  |¡|  |dj tj @¡| | |dj¡d¡| ¡| ¡| ¡dS)Nsfoorr)rrr9Ú socketpairrFr"r&r(rCrDrÚ assertFalser'Z KQ_EV_ERRORr#Úrecvr)r )r r ÚaÚbZevent1Zevent2ÚrrrrÚtestPairÁs   zTestKQueue.testPaircs–t ¡}t ¡\}}t |tjtjtjB¡‰| ˆgd¡| ˆfd¡G‡fdd„dƒ}| |ƒd¡| t ˆgƒd¡|  ¡|  ¡|  ¡dS)Nrcs eZdZdd„Z‡fdd„ZdS)z+TestKQueue.test_issue30058..BadListcSsdSrr)r rrrÚ__len__Üsz3TestKQueue.test_issue30058..BadList.__len__c3stdƒD] }ˆVqdS)Néd)rG)r rN©rrrÚ__iter__Þs z4TestKQueue.test_issue30058..BadList.__iter__N)Ú__name__Ú __module__Ú __qualname__rWrZrrYrrÚBadListÛsr^) rrr9rPr"r&r(rCrDÚiterr )r r rSrTr^rrYrÚtest_issue30058Ñs zTestKQueue.test_issue30058cCs‚ttdƒ}| |j¡| ¡}t ¡}| | ¡t¡|  |j ¡| ¡|  |j ¡|  t |j¡| ¡|  t |jdd¡dS)NÚrbr)rÚ__file__r!r rrrZassertIsInstanceÚintrQrrr r rD)r Z open_filer,rrrrÚ test_closeés    zTestKQueue.test_closecCs.t ¡}| |j¡| t | ¡¡d¡dS)NF)rrr!r r#rÚget_inheritabler)r rrrrÚtest_fd_non_inheritableþs z"TestKQueue.test_fd_non_inheritableN) r[r\r]rr/rOrVr`rdrfrrrrrsYQrÚ__main__) Ú__doc__r@rrr9rIZunittestÚhasattrZSkipTestZTestCaserr[ÚmainrrrrÚs  w