
    daf%                     h   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ddlmZ  e	ed      s ej                  d      	  ej                           G d dej                        Zed	k(  r ej$                          yy# e$ r1Zej                  ej                  k(  r ej                  d       dZ[ww xY w)
z
Tests for epoll wrapper.
    N)supportepollztest works only on Linux 2.6zkernel doesn't support epoll()c                   Z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)	TestEPollc                 \    t        j                  d      | _        | j                  g| _        y )N)	127.0.0.1r   )socketcreate_serverserverSocketconnectionsselfs    */root/Python-3.12.4/Lib/test/test_epoll.pysetUpzTestEPoll.setUp,   s'    "001AB --.    c                 F    | j                   D ]  }|j                           y )N)r   close)r   skts     r   tearDownzTestEPoll.tearDown0   s     ## 	CIIK	r   c                    t        j                          }|j                  d       	 |j                  d| j                  j	                         d   f       t        d      # t        $ r7}| j                  |j                  d   t        j                         Y d }~nd }~ww xY w| j                  j                         \  }}| j                  j                  ||f       ||fS )NFr      z&Connect should have raised EINPROGRESSr   )r	   setblockingconnectr   getsocknameAssertionErrorOSErrorassertEqualargserrnoEINPROGRESSacceptr   extend)r   clienteserveraddrs        r   _connected_pairzTestEPoll._connected_pair4   s    5!	KNNK):):)F)F)H)KLM !!IJJ  	;QVVAY(9(9::	; ((//1 01v~s   .A   	B )-BB c                    	 t        j                  d      }| j                  |j                         dkD  |j                                | j                  |j                          |j                          | j                  |j                         | j                  t        |j                         t        t         d      rt        j                  dt         j                        j                          t        j                  t         j                        j                          t        j                  d      j                          y y # t        $ r}t        t	        |            d }~ww xY w)N   r   EPOLL_CLOEXECflags)selectr   r   r   str
assertTruefilenoclosedr   assertRaises
ValueErrorhasattrr*   )r   epr$   s      r   test_createzTestEPoll.test_createB   s    	)b!B 			a5BII&

		"*bii06?+LLV11288:LLv334::<LLq!'') ,  	) Q((	)s   E	 		E+E&&E+c                    | j                  t        t        j                  ddd       | j                  t        t        j                  d       | j                  t        t        j                  d        | j                  t        t        j                  d       | j                  t        t        j                  dg       | j                  t        t        j                  i        | j                  t        t        j                  d       | j                  t        t        j                  d       | j                  t        t        j                  d       t        t        d	      r'| j                  t        t        j                  d
       y y )Nr         foo r   )sizehintr*   iD0  r,   )r3   	TypeErrorr.   r   r4   r5   r   r   s    r   test_badcreatezTestEPoll.test_badcreateR   s    )V\\1a;)V\\59)V\\48)V\\26)V\\E7;)V\\26*fllA6*fllB7*fllR@6?+gv||5A ,r   c                 D   t        j                  d      5 }| j                  |j                         d       | j	                  |j
                         d d d        | j                  j
                         | j                  t        |j                         y # 1 sw Y   ExY w)Nr)   r   )	r.   r   assertGreaterr1   assertFalser2   r0   r3   r4   )r   r6   s     r   test_context_managerzTestEPoll.test_context_managera   ss    \\" 	(ryy{A.RYY'	( 			"*bii0		( 	(s   <BBc                 H   | j                         \  }}t        j                  d      }	 |j                  |j	                         t        j
                  t        j                  z         |j                  |j	                         t        j
                  t        j                  z         |j                          t        j                  d      }	 |j                  |t        j
                  t        j                  z         |j                  |t        j
                  t        j                  z         |j                          t        j                  d      }	 | j                  t        |j                  t               t        j
                  t        j                  z         | j                  t        |j                  d t        j
                  t        j                  z         | j                  t        |j                  dt        j
                  t        j                  z         | j                  t        |j                  dt        j
                  t        j                  z         |j                  |t        j
                  t        j                  z         | j                  t        |j                  |t        j
                  t        j                  z         |j                          y # |j                          w xY w# |j                          w xY w# |j                          w xY w)Nr9   r+   i'  )r'   r.   r   registerr1   EPOLLINEPOLLOUTr   r3   r?   objectr4   r   )r   r%   r#   r6   s       r   test_addzTestEPoll.test_addh   s   --/\\!_	KK&//)IJKK&//)IJHHJ \\!_	KK @AKK @AHHJ\\!_	ifh$nnv>@id$nnv>@ j"++r$nnv>@ gr{{E$nnv>@ KK @Agr{{F$nnv>@ HHJ9 HHJ HHJ( HHJs&   A>K% A"K: E>L %K7:LL!c                 X   | j                         \  }}t        j                  d      5 }t        j                  j                  |j	                               }|j                  |j	                         t        j                  t        j                  z         |j                  |j	                         t        j                  t        j                  z         |j                  dd      }|j                  dd      }| j                  t        |      d       | j                  t        |      d       d d d        	 j                  dd       | j                  d       y # 1 sw Y   .xY w# t        $ r8}| j                  |j                  d   t        j                  |       Y d }~y d }~ww xY w)Nr9   r      g?z%epoll on closed fd didn't raise EBADFr   )r'   r.   r   fromfdr1   rF   rG   rH   pollr   lenfailr   r   r   EBADF)r   r%   r#   r6   ep2eventsevents2r$   s           r   test_fromfdzTestEPoll.test_fromfd   s,   --/\\!_ 		.,,%%biik2CLL&..6??*JKLL&..6??*JKWWQ]FhhsA&GS[!,S\1-		.	?HHQN II=>!		. 		.  	8QVVAYQ77	8s$   DE8E( E%(	F)1.F$$F)c                 \   | j                         \  }}t        j                  d      }|j                  |j	                         t        j
                  t        j                  z  t        j                  z         |j                  |j	                         t        j
                  t        j                  z  t        j                  z         t        j                         }|j                  dd      }t        j                         }| j                  ||z
  dkD  ||z
         |j	                         t        j                  f|j	                         t        j                  fg}| j                  t        |      t        |             |j                  dd      }| j                  |       |j                  d       |j                  d       g }t        j                   t        j"                        D ]f  }t        j                         }||j                  dd      z  }t        j                         }| j                  ||z
  d	kD         t%        |      d
k\  sf n |j	                         t        j
                  t        j                  z  f|j	                         t        j
                  t        j                  z  fg}| j                  t        |      t        |             |j'                  |j	                                |j)                  |j	                         t        j                         t        j                         }|j                  dd      }t        j                         }| j                  ||z
  d	kD         |j	                         t        j                  fg}| j                  ||       y )Nr)   r   rL   g?)timeout	maxeventss   Hello!s   world!!!      ?{Gz?r9   )r'   r.   r   rF   r1   rG   rH   EPOLLETtime	monotonicrN   rC   r   sortedsendallr   
busy_retrySHORT_TIMEOUTrO   
unregistermodify)	r   r#   r%   r6   nowrS   thenexpected_s	            r   test_control_and_waitzTestEPoll.test_control_and_wait   s   --/\\"
FMMONNV__4v~~E	G
FMMONNV__4v~~E	G nnA~~c)4#:6]]_foo6]]_foo68)9: 2  	y!{# ##G$9$9: 	A.."Cbggc1o%F>>#DTCZ$./6{a	 ]]_fnnv&FG]]_fnnv&FGI)9: 	fmmo&
		&--/6??3nnA~~d*+]]_foo67*r   c                     | j                  t        t        j                  d       | j                  t        t        j                         j                  dt        j
                         y )Nr=   r+   )r3   r4   r.   r   rF   rG   r   s    r   test_errorszTestEPoll.test_errors   s?    *fllB7*flln&=&=r ..	*r   c                 6   | j                         \  }}|j                         }t        j                  d      }|j	                  |       t        j                         }|j                  dd      }t        j                         }| j                  ||z
  dkD         |j                          | j                  t              5 }|j                  |       d d d        | j                  j                  j                  t        j                          y # 1 sw Y   >xY w)Nr)   r   rL   rZ   )r'   r1   r.   r   rF   r\   r]   rN   rC   r   r3   r   rb   r   	exceptionr   rQ   )	r   r%   r#   fdr6   rd   rS   re   cms	            r   test_unregister_closedz TestEPoll.test_unregister_closed   s    --/]]_\\"
FnnA~~d*+w' 	2MM"	++U[[9	 	s    DDc                    t        t        d      }| j                  |j                         |j	                         }t        j                         }| j                  |j	                         t               | j                  |j                         |j                          | j                  |j                         | j                  t        |j                         |j                          | j                  t        |j                  |t
        j                         | j                  t        |j                   d       | j                  t        |j"                  |t
        j                         | j                  t        |j$                  |       y )NrbrY   )open__file__
addCleanupr   r1   r.   r   assertIsInstanceintrC   r2   r0   r3   r4   rc   rG   rN   rF   rb   )r   	open_filerm   r   s       r   
test_closezTestEPoll.test_close   s   4(		( 	ellnc2& 	%*ell3 	 	*ellBG*ejj#6*ennb&..I*e&6&6;r   c                     t        j                         }| j                  |j                         | j	                  t        j                  |j                               d       y )NF)r.   r   rt   r   r   osget_inheritabler1   )r   r   s     r   test_fd_non_inheritablez!TestEPoll.test_fd_non_inheritable  s>    $++ELLN;UCr   N)__name__
__module____qualname__r   r   r'   r7   r@   rD   rJ   rU   rh   rj   ro   rx   r|   r<   r   r   r   r   *   sG    /* B1$L?*3+j*
:"<0Dr   r   __main__)__doc__r   rz   r.   r	   r\   unittesttestr   r5   SkipTestr   r   r$   ENOSYSTestCaser   r}   mainr<   r   r   <module>r      s   *  	     vw
(

:
;;
FLLN_D!! _DD zHMMO O  
ww%,,h @AA	
s   A; ;B1 ,B,,B1