
    0hhu%                         S r SSKrSSKrSSKrSSKrSSKJr  SSKrSSKr\	" \S5      (       d  \R                  " S5      e " S S\R                  5      r\S:X  a  \R                  " 5         gg)	z
Tests for kqueue wrapper.
    N)supportkqueueztest works only on BSDc                   l    \ rS rSrS rS rS rS rS rS r	S r
\R                  " 5       S	 5       rS
rg)
TestKQueue   c                 f   [         R                  " 5       nU R                  UR                  5       S:  UR                  5       5        U R                  UR                  (       + 5        UR                  5         U R                  UR                  5        U R                  [        UR                  5        g Nr   )selectr   
assertTruefilenoclosedcloseassertRaises
ValueError)selfkqs     9/opt/python-3.13.8/usr/lib/python3.13/test/test_kqueue.pytest_create_queueTestKQueue.test_create_queue   sj    ]]_		a5BII&

		"*bii0    c                 R   SSK JnJnJnJn  [
        R                  " [
        R                  [
        R                  5      nU R                  [
        R                  U5        [        R                  " U5      n[        R                  " S5      nU R                  UR                  U5        U R                  UR                  [        R                   5        U R                  UR"                  [        R$                  5        U R                  UR&                  S5        U R                  UR(                  S5        U R                  UR*                  S5        U R                  Xf5        U R-                  Xg5        U R/                  Xg:  5        U R/                  Xv:  5        XX44 HH  nU R1                  [2        XS 5        U R1                  [2        XS5        U R1                  [2        XS5        MJ     [        R                  " U[        R4                  5      nU R                  UR                  U5        U R                  UR                  [        R4                  5        U R                  UR"                  [        R$                  5        U R                  UR&                  S5        U R                  UR(                  S5        U R                  UR*                  S5        U R                  Xf5        U R-                  Xg5        [        R                  " U[        R4                  [        R6                  5      nU R                  UR                  U5        U R                  UR                  [        R4                  5        U R                  UR"                  [        R6                  5        U R                  UR&                  S5        U R                  UR(                  S5        U R                  UR*                  S5        U R                  Xf5        U R-                  Xg5        [        R                  " SSSSS	S
5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR"                  S5        U R                  UR&                  S5        U R                  UR(                  S	5        U R                  UR*                  S
5        U R                  Xf5        U R-                  Xg5        Sn	[        R                  " U	SSSU	S-
  U	5      nU R                  UR                  U	5        U R                  UR                  S5        U R                  UR"                  S5        U R                  UR&                  S5        U R                  UR(                  U	S-
  5        U R                  UR*                  U	5        U R                  Xf5        U R-                  Xg5        Sn	[        R                  " SSU	5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR"                  U	5        U R                  UR&                  S5        U R                  UR(                  S5        U R                  UR*                  S5        U R                  Xf5        U R-                  Xg5        Sn	[        R                  " SSSU	5      nU R                  UR                  S5        U R                  UR                  S5        U R                  UR"                  S5        U R                  UR&                  U	5        U R                  UR(                  S5        U R                  UR*                  S5        U R                  Xf5        U R-                  Xg5        g )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_eventTestKQueue.test_create_event   s   ++WWRZZ-"%]]2d#2&F$9$9:6#3#34A&!$1% B&
#$".Bi6i3i6 !
 ]]2v5562&F$:$:;6#3#34A&!$1% B&]]2v55v7K7KL2&F$:$:;6#7#78A&!$1% B&]]1aAq!,1%A&1%A&!$1% B&]]61aFQJ?6*A&1%A&&1*-6* B& ]]1a(1%A&6*A&!$1% B& ]]1aF+1%A&1%F+!$1% B&r   c           
         [         R                  " S5      n[         R                   " 5       nUR                  S5         UR                  SUR	                  5       S   45         UR                  5       u  pE[        R                  " 5       n[        R                  R                  UR                  5       5      n[        R                  " UR                  5       [        R                   [        R"                  [        R$                  -  5      nUR'                  U/S5        [        R                  " UR                  5       [        R(                  [        R"                  [        R$                  -  5      nUR'                  U/S5        [        R                  " UR                  5       [        R                   [        R"                  [        R$                  -  5      nUR'                  U/S5        [        R                  " UR                  5       [        R(                  [        R"                  [        R$                  -  5      nUR'                  U/S5        UR'                  S SS5      n	[+        S U	 5       5      n	U R                  U	[+        UR                  5       [        R                   4UR                  5       [        R                   4/5      5        UR-                  S5        UR-                  S	5        [/        S
5       H=  n
UR'                  S SS5      n	[1        U	5      S:X  a    O+[2        R4                  " S5        M?     U R7                  S5        [+        S U	 5       5      n	U R                  U	[+        UR                  5       [        R                   4UR                  5       [        R(                  4UR                  5       [        R                   4UR                  5       [        R(                  4/5      5        [        R                  " UR                  5       [        R                   [        R8                  5      nUR'                  U/S5        [        R                  " UR                  5       [        R(                  [        R8                  5      nUR'                  U/S5        [        R                  " UR                  5       [        R(                  [        R8                  5      nUR'                  U/SS5        UR'                  / SS5      n	[+        S U	 5       5      n	U R                  U	[+        UR                  5       [        R                   4/5      5        UR;                  5         UR;                  5         UR;                  5         g ! [
         a8  nU R                  UR                  S   [        R                  5         S nAGN_S nAff = f)N)	127.0.0.1r   Fr>   r   r   r    c              3   P   #    U  H  oR                   UR                  4v   M     g 7fNr+   r,   .0es     r   	<genexpr>.TestKQueue.test_queue_event.<locals>.<genexpr>        9&Qggqxx(&   $&s   Hello!s   world!!!
   g      ?z'timeout waiting for event notificationsc              3   P   #    U  H  oR                   UR                  4v   M     g 7fr@   rA   rB   s     r   rE   rF      rG   rH   gGz?c              3   P   #    U  H  oR                   UR                  4v   M     g 7fr@   rA   rB   s     r   rE   rF      rG   rH   )socketcreate_serversetblockingconnectgetsocknameOSErrorr*   argserrnoEINPROGRESSacceptr
   r   fromfdr   r)   r5   r/   KQ_EV_ENABLEcontrolr-   setsendrangelentimesleepfailKQ_EV_DELETEr   )r   serverSocketclientrD   serveraddrr   kq2r   eventsis              r   test_queue_eventTestKQueue.test_queue_eventq   sA   ++,<=5!	NNK)A)A)CA)FGH
 #**,]]_mm""299;/]]6==?!11!++f.A.AAC 	

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

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

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

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

B4AB4(9&99]]_f445&7 "8 	9 	S  	;QVVAY(9(9::	;s   $V 
W-WWc                    [         R                  " 5       n[        R                  " 5       u  p#UR	                  S5        [         R
                  " U[         R                  [         R                  [         R                  -  5      n[         R
                  " U[         R                  [         R                  [         R                  -  5      nUR                  XE/SS5      nU R                  U5        U R                  US   R                  [         R                  -  5        U R                  UR                  US   R                   5      S5        UR#                  5         UR#                  5         UR#                  5         g )Ns   foor   r   )r
   r   rL   
socketpairrZ   r)   r-   r/   rW   rX   r   assertFalser.   KQ_EV_ERRORr*   recvr1   r   )r   r   abevent1event2rs          r   testPairTestKQueue.testPair   s    ]]_  "	vq&"7"79I9IFL_L_9_`q&"7"79I9IFL_L_9_`JJ'A.1f&8&889!		*F3				

r   c                   ^ [         R                  " 5       n[        R                  " 5       u  p#[         R                  " U[         R
                  [         R                  [         R                  -  5      mUR                  T/S5        UR                  T4S5         " U4S jS5      nUR                  U" 5       S5        UR                  [        T/5      S5        UR                  5         UR                  5         UR                  5         g )Nr   c                   (   > \ rS rSrS rU 4S jrSrg)+TestKQueue.test_issue30058.<locals>.BadList   c                     gr	    )r   s    r   __len__3TestKQueue.test_issue30058.<locals>.BadList.__len__   s    r   c              3   :   >#    [        S5       H  nTv   M	     g 7f)Nd   )r[   )r   rg   r   s     r   __iter__4TestKQueue.test_issue30058.<locals>.BadList.__iter__   s     sAH $s   r{   N)__name__
__module____qualname____firstlineno__r|   r   __static_attributes__)r   s   r   BadListrx      s     r   r   )r
   r   rL   rk   r)   r-   r/   rW   rX   iterr   )r   r   ro   rp   r   r   s        @r   test_issue30058TestKQueue.test_issue30058   s    ]]_  "]]1f33V5E5EH[H[5[\


B4


B5!	 	 	

79a 


4:q!				

r   c                    [        [        S5      nU R                  UR                  5        UR	                  5       n[
        R                  " 5       nU R                  UR	                  5       [        5        U R                  UR                  5        UR                  5         U R                  UR                  5        U R                  [        UR                  5        UR                  5         U R                  [        UR                  S S5        g )Nrbr    )r%   __file__r(   r   r   r
   r   assertIsInstanceintrl   r   r   r   r   rX   )r   	open_filer7   r   s       r   
test_closeTestKQueue.test_close   s    4(		( 	fmmos3' 	&*fmm4 	 	*fnndA>r   c                     [         R                  " 5       nU R                  UR                  5        U R	                  [
        R                  " UR                  5       5      S5        g )NF)r
   r   r(   r   r*   r$   get_inheritabler   )r   r   s     r   test_fd_non_inheritable"TestKQueue.test_fd_non_inheritable   s>    %++FMMO<eDr   c                    [         R                  " 5       n[        R                  " 5       =nS:X  ab   U R	                  UR
                  5        U R                  [        S5         UR                  5         S S S 5        [        R                  " S5        g [        R                  " USS9  U R                  UR
                  5        g ! , (       d  f       NV= f!   [        R                  " S5         Ns= f! [        R                  " S5        f = f)Nr   zclosed kqueuer   )exitcode)r
   r   r$   forkr   r   assertRaisesRegexr   r   _exitr   wait_processrl   )r   r   pids      r   	test_forkTestKQueue.test_fork  s     779C".++JHMMO I
   q1V]]+ IHs;   1C #C4C 
CC C2 C C/-C2 2D
r{   N)r   r   r   r   r   r;   rh   rt   r   r   r   r   requires_forkr   r   r{   r   r   r   r      sG    1V'rOb 0?*E
 , ,r   r   __main__)__doc__rS   r$   r
   rL   testr   r]   unittesthasattrSkipTestTestCaser   r   mainr{   r   r   <module>r      sm     	     vx  


4
55D,"" D,N zMMO r   