
    dafu%                         d Z ddlZddlZddlZddlZddlm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                          yy)	z
Tests for kqueue wrapper.
    N)supportkqueueztest works only on BSDc                   d    e Zd Zd Zd Zd Zd Zd Zd Zd Z	 e
j                         d        Zy	)

TestKQueuec                 \   t        j                         }| j                  |j                         dkD  |j                                | j                  |j                          |j                          | j                  |j                         | j                  t        |j                         y Nr   )selectr   
assertTruefilenoclosedcloseassertRaises
ValueError)selfkqs     +/root/Python-3.12.4/Lib/test/test_kqueue.pytest_create_queuezTestKQueue.test_create_queue   sj    ]]_		a5BII&

		"*bii0    c                 f   ddl m}m}m}m} t        j                  t
        j                  t
        j                        }| j                  t
        j                  |       t        j                  |      }t        j                  d      }| j                  |j                  |       | j                  |j                  t        j                          | j                  |j"                  t        j$                         | j                  |j&                  d       | j                  |j(                  d       | j                  |j*                  d       | j                  ||       | j-                  ||       | j/                  ||k         | j/                  ||k\         ||||fD ]J  }| j1                  t2        ||d        | j1                  t2        ||d       | j1                  t2        ||d       L t        j                  |t        j4                        }| j                  |j                  |       | j                  |j                  t        j4                         | j                  |j"                  t        j$                         | j                  |j&                  d       | j                  |j(                  d       | j                  |j*                  d       | j                  ||       | j-                  ||       t        j                  |t        j4                  t        j6                        }| j                  |j                  |       | j                  |j                  t        j4                         | j                  |j"                  t        j6                         | j                  |j&                  d       | j                  |j(                  d       | j                  |j*                  d       | j                  ||       | j-                  ||       t        j                  ddddd	d
      }| j                  |j                  d       | j                  |j                  d       | j                  |j"                  d       | j                  |j&                  d       | j                  |j(                  d	       | j                  |j*                  d
       | j                  ||       | j-                  ||       d}	t        j                  |	ddd|	dz
  |	      }| j                  |j                  |	       | j                  |j                  d       | j                  |j"                  d       | j                  |j&                  d       | j                  |j(                  |	dz
         | j                  |j*                  |	       | j                  ||       | j-                  ||       d}	t        j                  dd|	      }| j                  |j                  d       | j                  |j                  d       | j                  |j"                  |	       | j                  |j&                  d       | j                  |j(                  d       | j                  |j*                  d       | j                  ||       | j-                  ||       d}	t        j                  ddd|	      }| j                  |j                  d       | j                  |j                  d       | j                  |j"                  d       | j                  |j&                  |	       | j                  |j(                  d       | j                  |j*                  d       | j                  ||       | j-                  ||       y )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   ++WWRZZ-"%]]2d#2&F$9$9:6#3#34A&!$1%R B&U
#$b"b. 	7BiR6iR3iR6	7
 ]]2v5562&F$:$:;6#3#34A&!$1%R B&]]2v55v7K7KL2&F$:$:;6#7#7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           
      x   t        j                  d      }t        j                          }|j                  d       	 |j                  d|j	                         d   f       	 |j                         \  }}t        j                         }t        j                  j                  |j                               }t        j                  |j                         t        j                   t        j"                  t        j$                  z        }|j'                  |gd       t        j                  |j                         t        j(                  t        j"                  t        j$                  z        }|j'                  |gd       t        j                  |j                         t        j                   t        j"                  t        j$                  z        }|j'                  |gd       t        j                  |j                         t        j(                  t        j"                  t        j$                  z        }|j'                  |gd       |j'                  d dd      }	t+        d |	D              }	| j                  |	t+        |j                         t        j                   f|j                         t        j                   fg             |j-                  d       |j-                  d	       t/        d
      D ]:  }
|j'                  d dd      }	t1        |	      dk(  r n(t3        j4                  d       < | j7                  d       t+        d |	D              }	| j                  |	t+        |j                         t        j                   f|j                         t        j(                  f|j                         t        j                   f|j                         t        j(                  fg             t        j                  |j                         t        j                   t        j8                        }|j'                  |gd       t        j                  |j                         t        j(                  t        j8                        }|j'                  |gd       t        j                  |j                         t        j(                  t        j8                        }|j'                  |gdd       |j'                  g dd      }	t+        d |	D              }	| j                  |	t+        |j                         t        j                   fg             |j;                          |j;                          |j;                          y # t
        $ r8}| j                  |j                  d   t        j                         Y d }~Sd }~ww xY w)N)	127.0.0.1r   Fr;   r   r   r   c              3   L   K   | ]  }|j                   |j                  f  y wNr)   r*   .0es     r   	<genexpr>z.TestKQueue.test_queue_event.<locals>.<genexpr>        9Qaggqxx(9   "$s   Hello!s   world!!!
   g      ?z'timeout waiting for event notificationsc              3   L   K   | ]  }|j                   |j                  f  y wr=   r>   r?   s     r   rB   z.TestKQueue.test_queue_event.<locals>.<genexpr>   rC   rD   gGz?c              3   L   K   | ]  }|j                   |j                  f  y wr=   r>   r?   s     r   rB   z.TestKQueue.test_queue_event.<locals>.<genexpr>   rC   rD   )socketcreate_serversetblockingconnectgetsocknameOSErrorr(   argserrnoEINPROGRESSacceptr	   r   fromfdr   r'   r3   r-   KQ_EV_ENABLEcontrolr+   setsendrangelentimesleepfailKQ_EV_DELETEr   )r   serverSocketclientrA   serveraddrr   kq2r   eventsis              r   test_queue_eventzTestKQueue.test_queue_eventq   sJ   ++,<=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AZZa+F6{aJJsO		A 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   $U8 8	V9-V44V9c                    t        j                         }t        j                         \  }}|j	                  d       t        j
                  |t         j                  t         j                  t         j                  z        }t        j
                  |t         j                  t         j                  t         j                  z        }|j                  ||gdd      }| j                  |       | j                  |d   j                  t         j                  z         | j                  |j                  |d   j                         d       |j#                          |j#                          |j#                          y )Ns   foor   r   )r	   r   rH   
socketpairrV   r'   r+   r-   rS   rT   r
   assertFalser,   KQ_EV_ERRORr(   recvr/   r   )r   r   abevent1event2rs          r   testPairzTestKQueue.testPair   s    ]]_  "1	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                    t        j                         }t        j                         \  }}t        j                  |t         j
                  t         j                  t         j                  z        |j                  gd       |j                  fd        G fdd      }|j                   |       d       |j                  t        g      d       |j                          |j                          |j                          y )Nr   c                       e Zd Zd Z fdZy)+TestKQueue.test_issue30058.<locals>.BadListc                      yr    )r   s    r   __len__z3TestKQueue.test_issue30058.<locals>.BadList.__len__   s    r   c              3   6   K   t        d      D ]  }  y w)Nd   )rW   )r   rc   r   s     r   __iter__z4TestKQueue.test_issue30058.<locals>.BadList.__iter__   s     s AHs   N)__name__
__module____qualname__ru   rx   )r   s   r   BadListrr      s    r   r|   )r	   r   rH   rf   r'   r+   r-   rS   rT   iterr   )r   r   rj   rk   r|   r   s        @r   test_issue30058zTestKQueue.test_issue30058   s    ]]_  "1]]1f33V5E5EH[H[5[\


B4


B5!	 	 	

79a 


4:q!				

r   c                    t        t        d      }| j                  |j                         |j	                         }t        j                         }| j                  |j	                         t               | j                  |j                         |j                          | j                  |j                         | j                  t        |j                         |j                          | j                  t        |j                  d d       y )Nrbr   )r#   __file__r&   r   r   r	   r   assertIsInstanceintrg   r   r
   r   r   rT   )r   	open_filer5   r   s       r   
test_closezTestKQueue.test_close   s    4(		( 	fmmos3' 	&*fmm4 	 	*fnndA>r   c                     t        j                         }| j                  |j                         | j	                  t        j                  |j                               d       y )NF)r	   r   r&   r   r(   r"   get_inheritabler   )r   r   s     r   test_fd_non_inheritablez"TestKQueue.test_fd_non_inheritable   s>    %++FMMO<eDr   c                    t        j                         }t        j                         x}dk(  ra	 | j	                  |j
                         | j                  t        d      5  |j                          d d d        t        j                  d       y t        j                  |d       | j                  |j
                         y # 1 sw Y   RxY w#  t        j                  d       Y nxY w# t        j                  d       w xY w)Nr   zclosed kqueuer   )exitcode)r	   r   r"   forkr
   r   assertRaisesRegexr   r   _exitr   wait_processrg   )r   r   pids      r   	test_forkzTestKQueue.test_fork  s     779C".++JH $MMO$
   q1V]]+$ $s/   1C  C1C CC C'%C* *DN)ry   rz   r{   r   r9   rd   ro   r~   r   r   r   requires_forkr   rt   r   r   r   r      sI    1V'rOb 0?*E
 W, ,r   r   __main__)__doc__rO   r"   r	   rH   testr   rY   unittesthasattrSkipTestTestCaser   ry   mainrt   r   r   <module>r      sn     	     vx 
(

4
55D,"" D,N zHMMO r   