
    ;e$                     D   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          	  ej	                     n.# e
$ r&Zej        ej        k    r ej        d           dZ[ww xY w G d dej                  Zedk    r ej                     dS dS )	z
Tests for epoll wrapper.
    Nepollztest works only on Linux 2.6zkernel doesn't support epoll()c                   \    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dS )	TestEPollc                 R    t          j        d          | _        | j        g| _        d S )N)	127.0.0.1r   )socketcreate_serverserverSocketconnectionsselfs    &/usr/lib/python3.11/test/test_epoll.pysetUpzTestEPoll.setUp+   s*    "01ABB -.    c                 B    | j         D ]}|                                 d S )N)r   close)r   skts     r   tearDownzTestEPoll.tearDown/   s-    # 	 	CIIKKKK	 	r   c                    t          j                     }|                    d           	 |                    d| j                                        d         f           t          d          # t          $ r5}|                     |j        d         t          j
                   Y d }~nd }~ww xY w| 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_pair3   s    5!!!	KNNK):)F)F)H)H)KLMMM !!IJJJ  	; 	; 	;QVAY(9::::::::	; (//11 0111v~s   4A- -
B,7+B''B,c                    	 t          j        d          }n.# t          $ r!}t          t	          |                    d }~ww xY w|                     |                                dk    |                                           |                     |j                    |                                 |                     |j                   | 	                    t          |j                   t          t           d          rt          j        dt           j                                                   t          j        t           j                                                   t          j        d                                           d S d S )N   r   EPOLL_CLOEXECflags)selectr   r   r   str
assertTruefilenoclosedr   assertRaises
ValueErrorhasattrr)   )r   epr#   s      r   test_createzTestEPoll.test_createA   sF   	)b!!BB 	) 	) 	) Q(((	)		a555BI&&&



	"""*bi0006?++ 	*LV12288:::Lv3444::<<<Lq!!!'')))))	* 	*s    
A=Ac                 6   |                      t          t          j        ddd           |                      t          t          j        d           |                      t          t          j        d            |                      t          t          j        d           |                      t          t          j        dg           |                      t          t          j        i            |                      t          t          j        d           |                      t          t          j        d           |                      t          t          j        d           t          t          d	          r)|                      t          t          j        d
           d S d S )Nr         foo r   )sizehintr)   iD0  r+   )r2   	TypeErrorr-   r   r3   r4   r   r   s    r   test_badcreatezTestEPoll.test_badcreateQ   s7   )V\1a;;;)V\5999)V\4888)V\2666)V\E7;;;)V\2666*flA666*flB777*flR@@@6?++ 	Bgv|5AAAAA	B 	Br   c                 V   t          j        d          5 }|                     |                                d           |                     |j                   d d d            n# 1 swxY w Y   |                     |j                   |                     t          |j                   d S )Nr(   r   )	r-   r   assertGreaterr0   assertFalser1   r/   r2   r3   )r   r5   s     r   test_context_managerzTestEPoll.test_context_manager`   s    \" 	(ryy{{A...RY'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 		"""*bi00000s   AA$$A(+A(c                     |                                  \  }}t          j        d          }	 |                    |                                t          j        t          j        z             |                    |                                t          j        t          j        z             |                                 n# |                                 w xY wt          j        d          }	 |                    |t          j        t          j        z             |                    |t          j        t          j        z             |                                 n# |                                 w xY wt          j        d          }	 |                     t          |j        t                      t          j        t          j        z             |                     t          |j        d t          j        t          j        z             |                     t          |j        dt          j        t          j        z             |                     t          |j        dt          j        t          j        z             |                    |t          j        t          j        z             |                     t          |j        |t          j        t          j        z             |                                 d S # |                                 w xY w)Nr8   r*   i'  )r&   r-   r   registerr0   EPOLLINEPOLLOUTr   r2   r>   objectr3   r   )r   r$   r"   r5   s       r   test_addzTestEPoll.test_addg   sL   --//\!__	KK&/)IJJJKK&/)IJJJHHJJJJBHHJJJJ \!__	KK @AAAKK @AAAHHJJJJBHHJJJJ\!__	ifhh$nv>@ @ @id$nv>@ @ @ j"+r$nv>@ @ @ gr{E$nv>@ @ @ KK @AAAgr{F$nv>@ @ @ HHJJJJJBHHJJJJs&   A>C   C.AE E3EK7 7Lc                    |                                  \  }}t          j        d          5 }t          j                            |                                          }|                    |                                t          j        t          j        z             |                    |                                t          j        t          j        z             |                    dd          }|                    dd          }| 	                    t          |          d           | 	                    t          |          d           d d d            n# 1 swxY w Y   	 |                    dd           |                     d           d S # t          $ r7}| 	                    |j        d         t          j        |           Y d }~d S d }~ww xY w)Nr8   r      g?z%epoll on closed fd didn't raise EBADFr   )r&   r-   r   fromfdr0   rE   rF   rG   pollr   lenfailr   r   r   EBADF)r   r$   r"   r5   ep2eventsevents2r#   s           r   test_fromfdzTestEPoll.test_fromfd   s   --//\!__ 		.,%%biikk22CLL&.6?*JKKKLL&.6?*JKKKWWQ]]FhhsA&&GS[[!,,,S\\1---		. 		. 		. 		. 		. 		. 		. 		. 		. 		. 		. 		. 		. 		. 		.	?HHQNNN II=>>>>>  	8 	8 	8QVAYQ777777777	8s*   D"EE!E&F 
G,GGc                 d   |                                  \  }}t          j        d          }|                    |                                t          j        t          j        z  t          j        z             |                    |                                t          j        t          j        z  t          j        z             t          j	                    }|
                    dd          }t          j	                    }|                     ||z
  dk    ||z
             |                                t          j        f|                                t          j        fg}|                     t          |          t          |                     |
                    dd          }|                     |           |                    d           |                    d           t          j	                    }|
                    dd          }t          j	                    }|                     ||z
  d	k               |                                t          j        t          j        z  f|                                t          j        t          j        z  fg}|                     t          |          t          |                     |                    |                                           |                    |                                t          j                   t          j	                    }|
                    dd          }t          j	                    }|                     ||z
  d	k               |                                t          j        fg}|                     ||           d S )
Nr(   r   rK   g?)timeout	maxeventss   Hello!s   world!!!      ?{Gz?)r&   r-   r   rE   r0   rF   rG   EPOLLETtime	monotonicrM   rB   r   sortedsendall
unregistermodify)r   r"   r$   r5   nowrR   thenexpecteds           r   test_control_and_waitzTestEPoll.test_control_and_wait   s   --//\"
FMMOONV_4v~E	G 	G 	G
FMMOONV_4v~E	G 	G 	G nA~c)4#:666]]__fo6]]__fo68)9)9::: 22    	y!!!{###na~d*+++]]__fnv&FG]]__fnv&FGI)9)9::: 	fmmoo&&&
		&--//6?333nA~d*+++]]__fo67*****r   c                     |                      t          t          j        d           |                      t          t          j                    j        dt          j                   d S )Nr<   r*   )r2   r3   r-   r   rE   rF   r   s    r   test_errorszTestEPoll.test_errors   sR    *flB777*flnn&=r .	* 	* 	* 	* 	*r   c                 h   |                                  \  }}|                                }t          j        d          }|                    |           t          j                    }|                    dd          }t          j                    }|                     ||z
  dk               |	                                 | 
                    t                    5 }|                    |           d d d            n# 1 swxY w Y   |                     |j        j        t          j                   d S )Nr(   r   rK   rY   )r&   r0   r-   r   rE   r[   r\   rM   rB   r   r2   r   r_   r   	exceptionr   rP   )	r   r$   r"   fdr5   ra   rR   rb   cms	            r   test_unregister_closedz TestEPoll.test_unregister_closed   s5   --//]]__\"
FnA~d*+++w'' 	2MM"	 	 	 	 	 	 	 	 	 	 	 	 	 	 	+U[99999s   C==DDc                 8   t          t          d          }|                     |j                   |                                }t          j                    }|                     |                                t                     | 	                    |j
                   |                                 |                     |j
                   |                     t          |j                   |                                 |                     t          |j        |t
          j                   |                     t          |j        d           |                     t          |j        |t
          j                   |                     t          |j        |           d S )NrbrX   )open__file__
addCleanupr   r0   r-   r   assertIsInstanceintrB   r1   r/   r2   r3   r`   rF   rM   rE   r_   )r   	open_fileri   r   s       r   
test_closezTestEPoll.test_close   s:   4((		((( 	ellnnc222&&& 	%%%*el333 	 	*elBGGG*ej#666*enb&.III*e&6;;;;;r   c                     t          j                    }|                     |j                   |                     t          j        |                                          d           d S )NF)r-   r   rp   r   r   osget_inheritabler0   )r   r   s     r   test_fd_non_inheritablez!TestEPoll.test_fd_non_inheritable   sP    $$$+ELLNN;;UCCCCCr   N)__name__
__module____qualname__r   r   r&   r6   r?   rC   rI   rT   rd   rf   rk   rt   rx   r;   r   r   r   r   )   s        / / /    * * * B B B1 1 1$ $ $L? ? ?*-+ -+ -+^* * *
: : :"< < <0D D D D Dr   r   __main__)__doc__r   rv   r-   r   r[   unittestr4   SkipTestr   r   r#   ENOSYSTestCaser   ry   mainr;   r   r   <module>r      s,  *   				    wvw <
(
:
;
;;
FLNNNN 
 
 
w%,h @AAA	

YD YD YD YD YD! YD YD YDx zHMOOOOO s   A A3!A..A3