
    daf                     ,   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Zd dlmZm	Z	m
Z
mZ d dlmZ d dlmZ 	 ej                    e
d       d Z G d	 d
ej&                        Zedk(  r ej,                          yy# e$ r  ej"                  d      w xY w)    N)cpython_onlyrequires_subprocessrequires_working_socketrequires_resource)threading_helper)TESTFNzselect.poll not definedT)modulec                 L    g }| D ]  \  }}||z  s|j                  |        |S )N)append)readyflagmatchfdmodes        )/root/Python-3.12.4/Lib/test/test_poll.pyfind_ready_matchingr      s4    E D$;LL L    c                       e Zd Zd Zd Z e        ed      d               Zd Ze	d        Z
ej                  d        Z ej                  ed      ej                  d	               Zy
)	PollTestsc                    t        j                         }d}d}t        |      }g }g }i }i }t        |      D ]  }	t	        j
                         \  }
}|j                  |
       |j                  |
t         j                         |j                  |t         j                         |j                  |
       |j                  |       |||
<   |
||<    g }|rZ|j                         }t        |t         j                        }|st        d      t        j                  |      }t	        j                  ||       |j                         }t        |t         j                        }|st        d      t        j                  |      }
t	        j                   |
|      }| j#                  t        |      |       |j                  |       t	        j$                  ||
          t	        j$                  |
       |j'                  ||
          |j'                  |
       |j)                  ||
          |rZ| j#                  ||g|z         y )N   s    This is a test.zno pipes ready for writingzno pipes ready for reading)selectpolllenrangeospiperegistermodifyPOLLINPOLLOUTr   r   RuntimeErrorrandomchoicewritereadassertEqualclose
unregisterremove)selfp	NUM_PIPESMSGMSG_LENreaderswritersr2ww2rirdwrbufsr   ready_writersready_readersbufs                    r   
test_poll1zPollTests.test_poll1!   s    KKM	!c(y! 	AWWYFBJJrNHHR'JJr6>>*NN2NN2CGCG	 FFHE/v~~FM "#?@@}-BHHRFFHE/v}}EM "#?@@}-B''"g&CSXw/KKHHSW"LL#b'#LL"NN3r7#' * 	uy01r   c                    t        j                         \  }}t        j                  |       t        j                  |       t        j                         }|j                  |       |j	                         }| j                  |d   |t        j                  f       t        t        d      5 }|j                         }t        j                         }|j                  |       |j	                         }| j                  |d   d   |       d d d        |j	                         }| j                  |d   t        j                  f       t        j                  t               t        j                         }| j                  t        |j
                  |       | j                  t        |j                  |       t        j                         }| j                  t        |j                  d       t        j                         } G d d      } G d d      }	| j                  t        |j
                   |       d       | j                  t        |j
                   |	       d       y # 1 sw Y   ZxY w)Nr   w   c                       e Zd Zy),PollTests.test_poll_unit_tests.<locals>.NopeN)__name__
__module____qualname__ r   r   Noper@   q   s    r   rE   c                       e Zd Zd Zy).PollTests.test_poll_unit_tests.<locals>.Almostc                      y)NfilenorD   )r+   s    r   rI   z5PollTests.test_poll_unit_tests.<locals>.Almost.filenou   s    r   N)rA   rB   rC   rI   rD   r   r   AlmostrG   t   s     r   rJ   )r   r   r(   r   r   r   r'   POLLNVALopenr   rI   unlinkassertRaises	TypeErrorr)   KeyError)
r+   FDr=   r,   rfr   pollsterrE   rJ   s
             r   test_poll_unit_testszPollTests.test_poll_unit_testsR   s   	A

KKM	

2FFH1FOO45&# 	*!BAJJqMAQqT!Wb)	* FFH1FOO45
		& KKM)QZZ3)Q\\15 KKM(ALL!4 ;;=	 		  	  	)X%6%6B)X%6%6!D;	* 	*s   ,AI""I,walltimec                 T   d}t        j                  |dt         j                  d      }| j                  |       |j                  }t        j                         }|j                  |t
        j                         dD ]  }|j                  |      }|g k(  r|d   \  }}|t
        j                  z  r'|j                         }	|	dk7  r| j                  d       \|t
        j                  z  r'|j                         }	|	s y | j                  |	d       | j                  d	|z          y )
Nz?for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; doneTr   )shellstdoutbufsize)r   i  i  i  i@  i>  r[   r[   r[   r[   r[   r[   r[   r[   r[   r   z6error: pipe seems to be closed, but still returns datas   testing...
z,Unexpected return value from select.poll: %s)
subprocessPopenPIPEenterContextrY   r   r   r   r    POLLHUPreadlinefailr'   )
r+   cmdprocr,   rT   toutfdlistr   flagslines
             r   
test_poll2zPollTests.test_poll2~   s    P4
()+$KK;;=1fmm-A 	SD]]4(F"q	IBv~~%zz|3;IIVW&zz|  7		H6QR%	Sr   c                    t        j                         }|j                  d       | j                  t        |j                  d       d}|dk7  r| j                  d       | j                  t        |j                  dd       | j                  t        |j                  dd       | j                  t        |j                  dd       | j                  t        |j                  dd       y )N   l               zOverflow must have occurredr   r[   )r   r   r   rN   OverflowErrorrb   
ValueErrorr   )r+   rT   xs      r   
test_poll3zPollTests.test_poll3   s    ;;=!-@6II34 	*h&7&7B?-):):AwG*hooq"=-!WEr   c                    ddl m}m}m} t	        j
                         }|j                  d       | j                  t        |j                  d|dz          | j                  t        |j                  d|dz          | j                  t        |j
                  |dz          | j                  t        |j
                  |dz          y )Nr   )	USHRT_MAXINT_MAXUINT_MAXrk   )
	_testcapirr   rs   rt   r   r   r   rN   rm   r   )r+   rr   rs   rt   rT   s        r   test_poll_c_limitszPollTests.test_poll_c_limits   s    ::;;=! 	-):):Ay1}M-!Y]K-!D-1Er   c                    t        j                         \  }}| j                  t         j                  |       | j                  t         j                  |       g }t	        d      D ]H  }t        j
                  |      }| j                  t         j                  |       |j                  |       J t        j                         }|D ]"  }|j                  |t        j                         $ t        j                  |j                        }|j                          	 t        j                  d       |D ]  }|j!                  |        |j                  |t        j"                         | j%                  t&        |j                         t        j(                  |d       |j+                          y # t        j(                  |d       |j+                          w xY w)N
   )targetg      ?   spam)r   r   
addCleanupr(   r   dupr   r   r   r   r    	threadingThreadstarttimesleepr)   r!   rN   r"   r%   join)r+   rR   r=   rfdsr4   r   rT   ts           r   test_threaded_pollzPollTests.test_threaded_poll   sO   wwy1!$!$r 	ABOOBHHb)KKO	 ;;= 	1Bb&--0	1 HMM2		
	JJsO (##B'(a0lHMM: HHQ FFH HHQ FFHs   A-F0 0(Gz!Threading required for this test.c                 P   dD ]   }t        j                         \  }}t        j                         }|j	                  |t        j
                         t        j                  |j                  |f      }|j                          |j                  d       | j                  |j                                t        j                  |d       |j                          | j                  |j                                t        j                  |       t        j                  |       # y )N)Nir[   g      gg0.+)ry   argsg?)timeoutrz   )r   r   r   r   r   r    r}   r~   r   r   
assertTrueis_aliver%   assertFalser(   )r+   
timeout_msrR   r=   rT   poll_threads         r   !test_poll_blocks_with_negative_msz+PollTests.test_poll_blocks_with_negative_ms   s     A 	J 779DAq{{}Ha/#**(--zmTKS)OOK0023 HHQ [1134HHQKHHQK#	r   N)rA   rB   rC   r;   rU   r   r   ri   rp   r   rv   r   reap_threadsr   unittest
skipUnlessr}   r   rD   r   r   r   r      s    /2b'EX z"S # S8F" 	F 	F "" #6 X$GH"" # Ir   r   __main__)r   r\   r#   r   r}   r   r   test.supportr   r   r   r   r   test.support.os_helperr   r   AttributeErrorSkipTestr   TestCaser   rA   mainrD   r   r   <module>r      s    
        * )7
KK t $J!! JZ zHMMO s  7
(

5
667s   A; ;B