
    <e#                         d Z ddlZddlZddlZddlZddlZddlZ eed          s ej        d           G d dej	                  Z
edk    r ej                     dS dS )z
Tests for kqueue wrapper.
    Nkqueueztest works only on BSDc                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	
TestKQueuec                 z   t          j                    }|                     |                                dk    |                                           |                     |j                    |                                 |                     |j                   |                     t          |j                   d S Nr   )selectr   
assertTruefilenoclosedcloseassertRaises
ValueError)selfkqs     '/usr/lib/python3.11/test/test_kqueue.pytest_create_queuezTestKQueue.test_create_queue   s    ]__		a555BI&&&



	"""*bi00000    c                 H   ddl m}m}m}m} t          j        t
          j        t
          j                  }| 	                    t
          j
        |           t          j        |          }t          j        d          }|                     |j        |           |                     |j        t          j                   |                     |j        t          j                   |                     |j        d           |                     |j        d           |                     |j        d           |                     ||           |                     ||           |                     ||k                |                     ||k               ||||fD ]Y}|                     t2          ||d            |                     t2          ||d           |                     t2          ||d           Zt          j        |t          j                  }|                     |j        |           |                     |j        t          j                   |                     |j        t          j                   |                     |j        d           |                     |j        d           |                     |j        d           |                     ||           |                     ||           t          j        |t          j        t          j                  }|                     |j        |           |                     |j        t          j                   |                     |j        t          j                   |                     |j        d           |                     |j        d           |                     |j        d           |                     ||           |                     ||           t          j        ddddd	d
          }|                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d	           |                     |j        d
           |                     ||           |                     ||           d}	t          j        |	ddd|	dz
  |	          }|                     |j        |	           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        |	dz
             |                     |j        |	           |                     ||           |                     ||           d}	t          j        dd|	          }|                     |j        d           |                     |j        d           |                     |j        |	           |                     |j        d           |                     |j        d           |                     |j        d           |                     ||           |                     ||           d}	t          j        ddd|	          }|                     |j        d           |                     |j        d           |                     |j        d           |                     |j        |	           |                     |j        d           |                     |j        d           |                     ||           |                     ||           d S )Nr   )ltlegtgei     ev               i  i  l    )operatorr   r   r   r   osopendevnullO_WRONLY
addCleanupr   r   keventassertEqualidentfilterKQ_FILTER_READflags	KQ_EV_ADDfflagsdataudataassertNotEqualr	   r   	TypeErrorKQ_FILTER_WRITEKQ_EV_ONESHOT)
r   r   r   r   r   fdr   otheropbignums
             r   test_create_eventzTestKQueue.test_create_event   s   ++++++++++++WRZ--"%%%]2d##2&&&F$9:::6#3444A&&&!$$$1%%%R   B&&&U
###$$$b"b. 	7 	7BiR666iR333iR6666]2v5662&&&F$:;;;6#3444A&&&!$$$1%%%R   B&&&]2v5v7KLL2&&&F$:;;;6#7888A&&&!$$$1%%%R   B&&&]1aAq!,,1%%%A&&&1%%%A&&&!$$$1%%%R   B&&&]61aFQJ??6***A&&&1%%%A&&&&1*---6***R   B&&& ]1a((1%%%A&&&6***A&&&!$$$1%%%R   B&&& ]1aF++1%%%A&&&1%%%F+++!$$$1%%%R   B&&&&&r   c           
         t          j        d          }t          j                     }|                    d           	 |                    d|                                d         f           nB# t
          $ r5}|                     |j        d         t          j	                   Y d }~nd }~ww xY w|
                                \  }}t          j                    }t          j                            |                                          }t          j        |                                t          j        t          j        t          j        z            }|                    |gd           t          j        |                                t          j        t          j        t          j        z            }|                    |gd           t          j        |                                t          j        t          j        t          j        z            }|                    |gd           t          j        |                                t          j        t          j        t          j        z            }|                    |gd           |                    d dd          }	t+          d |	D                       }	|                     |	t+          |                                t          j        f|                                t          j        fg                     |                    d           |                    d	           t/          d
          D ]B}
|                    d dd          }	t1          |	          dk    r n*t3          j        d           C|                     d           t+          d |	D                       }	|                     |	t+          |                                t          j        f|                                t          j        f|                                t          j        f|                                t          j        fg                     t          j        |                                t          j        t          j                  }|                    |gd           t          j        |                                t          j        t          j                  }|                    |gd           t          j        |                                t          j        t          j                  }|                    |gdd           |                    g dd          }	t+          d |	D                       }	|                     |	t+          |                                t          j        fg                     |                                 |                                 |                                 d S )N)	127.0.0.1r   Fr:   r   r   r   c              3   2   K   | ]}|j         |j        fV  d S Nr(   r)   .0es     r   	<genexpr>z.TestKQueue.test_queue_event.<locals>.<genexpr>   +      99Qagqx(999999r   s   Hello!s   world!!!
   g      ?z'timeout waiting for event notificationsc              3   2   K   | ]}|j         |j        fV  d S r<   r=   r>   s     r   rA   z.TestKQueue.test_queue_event.<locals>.<genexpr>   rB   r   gGz?c              3   2   K   | ]}|j         |j        fV  d S r<   r=   r>   s     r   rA   z.TestKQueue.test_queue_event.<locals>.<genexpr>   rB   r   )socketcreate_serversetblockingconnectgetsocknameOSErrorr'   argserrnoEINPROGRESSacceptr   r   fromfdr
   r&   r2   r,   KQ_EV_ENABLEcontrolr*   setsendrangelentimesleepfailKQ_EV_DELETEr   )r   serverSocketclientr@   serveraddrr   kq2r   eventsis              r   test_queue_eventzTestKQueue.test_queue_eventp   s   +,<==5!!!	NNK)A)A)C)CA)FGHHH
 	  	; 	; 	;QVAY(9::::::::	;
 $**,,]__m""299;;//]6==??!1!+f.AAC C 	

B4]6==??!0!+f.AAC C 	

B4]6==??!1!+f.AAC C 	RD!]6==??!0!+f.AAC C 	RD!D!Q''99&99999]]__f45]]__f45&7 "8 "8 	9 	9 	9 	IK    r 	A 	AAZZa++F6{{aJsOOOOII?@@@99&99999]]__f45]]__f34]]__f45]]__f34	&6 "7 "7 	8 	8 	8 ]6==??!1!.0 0 	

B4]6==??!0!.0 0 	

B4]6==??!0!.0 0 	

B4AB4((99&99999]]__f45&7 "8 "8 	9 	9 	9 	s   /A. .
B-8+B((B-c                    t          j                    }t          j                    \  }}|                    d           t          j        |t           j        t           j        t           j        z            }t          j        |t           j        t           j        t           j        z            }|	                    ||gdd          }| 
                    |           |                     |d         j        t           j        z             |                     |                    |d         j                  d           |                                 |                                 |                                 d S )Ns   foor   r   )r   r   rF   
socketpairrT   r&   r*   r,   rQ   rR   r	   assertFalser+   KQ_EV_ERRORr'   recvr.   r   )r   r   abevent1event2rs          r   testPairzTestKQueue.testPair   s   ]__ ""1	vq&"79IFL_9_``q&"79IFL_9_``JJ'A..1f&88999!	**F333								





r   c                 >   t          j                    }t          j                    \  }}t          j        |t           j        t           j        t           j        z            |                    gd           |                    fd            G fdd          }|                     |            d           |                    t          g          d           |
                                 |
                                 |
                                 d S )Nr   c                        e Zd Zd Z fdZdS )+TestKQueue.test_issue30058.<locals>.BadListc                     dS r    )r   s    r   __len__z3TestKQueue.test_issue30058.<locals>.BadList.__len__   s    qr   c              3   8   K   t          d          D ]}V  d S )Nd   )rU   )r   ra   r   s     r   __iter__z4TestKQueue.test_issue30058.<locals>.BadList.__iter__   s1      s  AHHHH r   N)__name__
__module____qualname__rs   rv   )r   s   r   BadListrp      s=                r   rz   )r   r   rF   rd   r&   r*   r,   rQ   rR   iterr   )r   r   rh   ri   rz   r   s        @r   test_issue30058zTestKQueue.test_issue30058   s   ]__ ""1]1f3V5EH[5[\\


B4


B5!	 	 	 	 	 	 	 	 	 	 	

7799a   


4::q!!!								





r   c                 H   t          t          d          }|                     |j                   |                                }t          j                    }|                     |                                t                     | 	                    |j
                   |                                 |                     |j
                   |                     t          |j                   |                                 |                     t          |j        d d           d S )Nrbr   )r"   __file__r%   r   r
   r   r   assertIsInstanceintre   r   r	   r   r   rR   )r   	open_filer4   r   s       r   
test_closezTestKQueue.test_close   s    4((		((( 	fmmoos333''' 	&&&*fm444 	 	*fndA>>>>>r   c                     t          j                    }|                     |j                   |                     t          j        |                                          d           d S )NF)r   r   r%   r   r'   r!   get_inheritabler
   )r   r   s     r   test_fd_non_inheritablez"TestKQueue.test_fd_non_inheritable   sP    %%%+FMMOO<<eDDDDDr   N)
rw   rx   ry   r   r8   rb   rm   r|   r   r   rr   r   r   r   r      s        1 1 1V' V' V'rO O Ob     0? ? ?*E E E E Er   r   __main__)__doc__rM   r!   r   rF   rW   unittesthasattrSkipTestTestCaser   rw   mainrr   r   r   <module>r      s      				    wvx   6
(
4
5
55sE sE sE sE sE" sE sE sEl zHMOOOOO r   