Your IP : 216.73.217.129


Current Path : /opt/alt/python39/lib64/python3.9/test/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/test/__pycache__/test_queue.cpython-39.pyc

a

XC?h�Q�@sddlZddlZddlZddlZddlZddlZddlmZddlm	Z	ej
ddgd�Zej
ddgd�Ze�
ed�Zd	Zd
d�ZGdd
�d
ej�ZGdd�d�ZGdd�de�ZGdd�de�ZGdd�deej�ZeGdd�deej��ZGdd�de�ZGdd�deej�ZeGdd�deej��ZGdd�de�ZGd d!�d!eej�ZeGd"d#�d#eej��ZGd$d%�d%e�Z Gd&d'�d'e�Z!Gd(d)�d)e!ej�Z"eGd*d+�d+e!ej��Z#Gd,d-�d-�Z$Gd.d/�d/e$ej�Z%eGd0d1�d1e$ej��Z&e'd2k�r�e�(�dS)3�N)�support)�
gc_collect�queueZ_queue)Zblocked)ZfreshzNo _queue module found�cCs|jdko|��|jkS�Nr)�maxsize�qsize)�q�r
�4/opt/alt/python39/lib64/python3.9/test/test_queue.py�qfullsrc@seZdZdd�Zdd�ZdS)�_TriggerThreadcCs&||_||_t��|_tj�|�dS�N)�fn�args�	threadingZEvent�startedEvent�Thread�__init__)�selfrrr
r
rrs
z_TriggerThread.__init__cCs$t�d�|j��|j|j�dS)N皙�����?)�time�sleepr�setrr�rr
r
r�runs	

z_TriggerThread.runN)�__name__�
__module__�__qualname__rrr
r
r
rr
sr
c@seZdZdd�Zdd�ZdS)�BlockingTestMixinc	CsXt||�}|��z4||�|_|j��s6|�d|�|jWt�|�St�|�0dS)Nz*blocking function %r appeared not to block)r
�start�resultr�is_set�failr�join_thread)r�
block_func�
block_args�trigger_func�trigger_args�threadr
r
r�do_blocking_test8s


�
�z"BlockingTestMixin.do_blocking_testc	Cs�t||�}|��zRz||�Wn|y4�Yn0|�d|�Wt�|�|j��s�|�d�n t�|�|j��s�|�d�0dS)Nzexpected exception of kind %rz(trigger thread ended but event never set)r
r r#rr$rr")rr%r&r'r(Zexpected_exception_classr)r
r
r�do_exceptional_blocking_testFs 
�

�

z.BlockingTestMixin.do_exceptional_blocking_testN)rrrr*r+r
r
r
rr6src@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�BaseQueueTestMixincCsd|_t��|_dSr)�cumrZLock�cumlockrr
r
r�setUpYszBaseQueueTestMixin.setUpcCsn|��rtd��|�|���|�|���|�d�|�d�|�d�tgd�gd�gd�d�}|��|��|��g}|�	|||j
jd	�tt
d
�D]}|�|�|�|��d�q�|�t|�d�d
t
}dt
}|�|�|�t|�d�|�|���|�|���z|j|dd�|�d�Wn|jj�yHYn0z|j|dd�|�d�Wn|jj�y~Yn0|�|j|f|jd�|�|j|ddf|jd�tt
�D]}|���q�|�|��d�z|jdd�|�d�Wn|jj�yYn0z|jdd�|�d�Wn|jj�y@Yn0|�|jd|jd�|�|jd|jd�dS)N�&Call this function with an empty queue�o�M��)r1r2r3)r3r2r1)r1r3r2)�Queue�	LifoQueue�
PriorityQueuez&Didn't seem to queue the correct data!��Queue should not be empty�Queue should not be full���Queue should be fullr��blockz(Didn't appear to block with a full queueg{�G�z�?�Ztimeoutz+Didn't appear to time-out with a full queuer
T�
�Queue should be emptyz*Didn't appear to block with an empty queuez-Didn't appear to time-out with an empty queue��empty)Tr@)r�RuntimeError�
assertTruerC�assertFalse�full�put�dict�get�assertEqual�	__class__r�range�
QUEUE_SIZErr#r�Fullr*�Empty)rr	Ztarget_orderZactual_order�i�lastrGr
r
r�basic_queue_test]sh


��

z#BaseQueueTestMixin.basic_queue_testcCs^|��}|dkr|��dS|j�|j|7_Wd�n1sF0Y|��qdSr)rJ�	task_doner.r-)rr	�xr
r
r�worker�s,zBaseQueueTestMixin.workercCs�d|_g}dD](}tj|j|fd�}|��|�|�qtd�D]}|�|�q@|��|�	|jt
td��d�dD]}|�d�qt|��|D]}|��q�dS)Nr)rr7��targetr�dz0q.join() did not block until all tasks were done���)r-rrrVr �appendrMrH�joinrK�sum)rr	ZthreadsrQr)r
r
r�queue_join_test�s"�z"BaseQueueTestMixin.queue_join_testcCs6|��}z|��Wnty&Yn0|�d�dS�Nz(Did not detect task count going negative)�	type2testrT�
ValueErrorr#�rr	r
r
r�test_queue_task_done�sz'BaseQueueTestMixin.test_queue_task_donecCsJ|��}|�|�|�|�z|��Wnty:Yn0|�d�dSr_)r`r^rTrar#rbr
r
r�test_queue_join�s

z"BaseQueueTestMixin.test_queue_joincCs"|�t�}|�|�|�|�dSr)r`rNrSrbr
r
r�
test_basic�s

zBaseQueueTestMixin.test_basiccCs~|�t�}|�t��|jddd�Wd�n1s80Y|�t��|jddd�Wd�n1sp0YdS�Nr7rZr?)r`rN�assertRaisesrarHrJrbr
r
r�&test_negative_timeout_raises_exception�s

,z9BaseQueueTestMixin.test_negative_timeout_raises_exceptioncCs�|�t�}tt�D]}|�d�q|�|jj��|�d�Wd�n1sP0Ytt�D]}|��qb|�|jj��|��Wd�n1s�0YdS)Nr7)	r`rNrM�
put_nowaitrgrrO�
get_nowaitrP�rr	rQr
r
r�test_nowait�s
(
zBaseQueueTestMixin.test_nowaitcCs�|�d�}|�d�|�d�|�d�|�|jj��|�d�Wd�n1sV0Y|�|��d�d|_|�|jj��|�d�Wd�n1s�0YdS)N�r7r:�)	r`rHrgrrOrirKrrrbr
r
r�test_shrinking_queue�s



(z'BaseQueueTestMixin.test_shrinking_queueN)
rrrr/rSrVr^rcrdrerhrlror
r
r
rr,Xs9


r,cseZdZ�fdd�Z�ZS)�	QueueTestcs|jj|_t���dSr)rr4r`�superr/r�rLr
rr/�s
zQueueTest.setUp�rrrr/�
__classcell__r
r
rrrrp�srpc@seZdZeZdS)�PyQueueTestN�rrr�py_queuerr
r
r
rru�sruc@seZdZeZdS)�
CQueueTestN�rrr�c_queuerr
r
r
rrx�srxcseZdZ�fdd�Z�ZS)�
LifoQueueTestcs|jj|_t���dSr)rr5r`rqr/rrrr
rr/s
zLifoQueueTest.setUprsr
r
rrrr{�sr{c@seZdZeZdS)�PyLifoQueueTestNrvr
r
r
rr|sr|c@seZdZeZdS)�CLifoQueueTestNryr
r
r
rr}
sr}cseZdZ�fdd�Z�ZS)�PriorityQueueTestcs|jj|_t���dSr)rr6r`rqr/rrrr
rr/s
zPriorityQueueTest.setUprsr
r
rrrr~sr~c@seZdZeZdS)�PyPriorityQueueTestNrvr
r
r
rrsrc@seZdZeZdS)�CPriorityQueueTestNryr
r
r
rr�sr�c@seZdZdS)�FailingQueueExceptionN�rrrr
r
r
rr� �r�cs,eZdZ�fdd�Zdd�Zdd�Z�ZS)�FailingQueueTestcs0|jj�G�fdd�d��}||_t���dS)Ncs0eZdZ�fdd�Z�fdd�Z�fdd�ZdS)z,FailingQueueTest.setUp.<locals>.FailingQueuecs"d|_d|_�j|g|�R�dS)NF)�
fail_next_put�
fail_next_getr)rr�r4r
rr)sz5FailingQueueTest.setUp.<locals>.FailingQueue.__init__cs |jrd|_td����||�S�NFzYou Lose)r�r��_put)r�itemr�r
rr�-sz1FailingQueueTest.setUp.<locals>.FailingQueue._putcs|jrd|_td����|�Sr�)r�r��_getrr�r
rr�2sz1FailingQueueTest.setUp.<locals>.FailingQueue._getN)rrrrr�r�r
r�r
r�FailingQueue(sr�)rr4r�rqr/)rr�rrr�rr/$szFailingQueueTest.setUpcCs�|��rtd��ttd�D]}|�|�qd|_z|jddd�|�d�Wnty`Yn0d|_z|jddd	�|�d�Wnty�Yn0|�d
�|�t	|�d�d|_z"|�
|jd|jd
�|�d�Wnty�Yn0|�d
�d|_z$|�|jd|jd
t�|�d�Wnt�y6Yn0|�d
�|�t	|�d�|��|�t	|�d�|�d
�|�t	|�d�|�
|jd|jd
�tt�D]}|���q�|�|��d�|�d�d|_
z|��|�d�Wnt�y�Yn0|�|��d�d|_
z|jdd	�|�d�Wnt�yDYn0|�|��d�|��|�|��d�d|_
z$|�|jd
|jdt�|�d�Wnt�y�Yn0|�|��d�|��|�|��d�dS)Nr0r7TZoopsrr=z)The queue didn't fail when it should haverr?rRr<)rGr
)rGTr@r9rA�firstr8rB)rrDrMrNrHr�r#r�rErr*rJr+r�rkr
r
r�failing_queue_test<s�

�


�z#FailingQueueTest.failing_queue_testcCs"|�t�}|�|�|�|�dSr)r�rNr�rbr
r
r�test_failing_queue�s

z#FailingQueueTest.test_failing_queue)rrrr/r�r�rtr
r
rrrr�"sQr�c@seZdZeZdS)�PyFailingQueueTestNrvr
r
r
rr��sr�c@seZdZeZdS)�CFailingQueueTestNryr
r
r
rr��sr�c@steZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�BaseSimpleQueueTestcCs|��|_dSr)r`r	rr
r
rr/�szBaseSimpleQueueTest.setUpcCsZz|��}Wnty*|�|�YdS0|�|�|��dkrt�|��d�qdS)Ng�?���MbP?)�pop�
IndexErrorrH�randomrr)rr	�seq�rnd�sentinel�valr
r
r�feed�s

zBaseSimpleQueueTest.feedcCs$|��}||krdS|�|�qdSr)rJr[�rr	�resultsr�r�r
r
r�consume�szBaseSimpleQueueTest.consumecCsRz|jdd�}Wq6|jjy0t�d�Yq0q6q||krBdS|�|�qdS)NFr=��h㈵��>)rJrrPrrr[r�r
r
r�consume_nonblock�sz$BaseSimpleQueueTest.consume_nonblockcCsHz|jdd�}Wq,|jjy&Yq0q,q||kr8dS|�|�qdS)Nr�r?)rJrrPr[r�r
r
r�consume_timeout�sz#BaseSimpleQueueTest.consume_timeoutcs�g�d�|������t�d��g��fdd��������fdd�t|�D�}�����fdd�t|�D�}t�||��Wd�n1s�0Y|���|���	��|�
���d��S)N�*cs��fdd�}|S)Nc
sFz�|i|��Wn.ty@}z��|�WYd}~n
d}~00dSr)�
BaseExceptionr[)r�kwargs�e)�
exceptions�fr
r�wrapper�szHBaseSimpleQueueTest.run_threads.<locals>.log_exceptions.<locals>.wrapperr
)r�r�)r�)r�r�log_exceptions�sz7BaseSimpleQueueTest.run_threads.<locals>.log_exceptionscs&g|]}tj�������fd��qS�rW�rr��.0rQ)�	feed_funcr�r	r�r�r�r
r�
<listcomp>�s�

�z3BaseSimpleQueueTest.run_threads.<locals>.<listcomp>cs$g|]}tj������fd��qSr�r�r�)�consume_funcr�r	r�r�r
rr��s�
�r)�copy�reverser�ZRandomrMrZ
start_threadsrFrErCrKr)rZ	n_threadsr	�inputsr�r�ZfeedersZ	consumersr
)	r�r�r�r�r	r�r�r�r�r�run_threads�s&
��
zBaseSimpleQueueTest.run_threadscCs�|j}|�|���|�|��d�|�d�|�|���|�|��d�|�d�|�d�|�d�|�|���|�|��d�|�|��d�|�|��d�|�|�	�d�|�|��d�|�|jdd�d�|�|���|�|��d�|�|jdd	�d�|�|���|�|��d�|�
|jj��|jdd�Wd�n1�s^0Y|�
|jj��|jd
d	�Wd�n1�s�0Y|�
|jj��|�	�Wd�n1�s�0Y|�|���|�|��d�dS)Nrr7r:rmrnFr=rr?r�)
r	rErCrKrrHrFrirJrjrgrrPrbr
r
rre�s:



,,(zBaseSimpleQueueTest.test_basiccCsJ|j}|�d�|�t��|jdd�Wd�n1s<0YdSrf)r	rHrgrarJrbr
r
rrhs
z:BaseSimpleQueueTest.test_negative_timeout_raises_exceptioncCs8|j}ttd��}|�d|||j|j�}|�||�dS)NrYr7)r	�listrMr�r�r�rK)rr	r�r�r
r
r�
test_orderszBaseSimpleQueueTest.test_ordercCs@d}|j}ttd��}|�||||j|j�}|�t|�|�dS�N�2�')r	r�rMr�r�r�rK�sorted�r�Nr	r�r�r
r
r�test_many_threads%s
z%BaseSimpleQueueTest.test_many_threadscCs@d}|j}ttd��}|�||||j|j�}|�t|�|�dSr�)r	r�rMr�r�r�rKr�r�r
r
r�test_many_threads_nonblock0s
�z.BaseSimpleQueueTest.test_many_threads_nonblockcCs@d}|j}ttd��}|�||||j|j�}|�t|�|�dS)Nr�i�)r	r�rMr�r�r�rKr�r�r
r
r�test_many_threads_timeout:s
�z-BaseSimpleQueueTest.test_many_threads_timeoutcCsdGdd�d�}d}|j}t|�D]}|�|��q t|�D]$}t�|���}t�|�|��q:dS)Nc@seZdZdS)z.BaseSimpleQueueTest.test_references.<locals>.CNr�r
r
r
r�CGsr��)r	rMrH�weakref�refrJrZassertIsNone)rr�r�r	rQZwrr
r
r�test_referencesDsz#BaseSimpleQueueTest.test_referencesN)rrrr/r�r�r�r�r�rerhr�r�r�r�r�r
r
r
rr��s

 %	

r�cs eZdZeZ�fdd�Z�ZS)�PySimpleQueueTestcs|jj|_t���dSr)rZ_PySimpleQueuer`rqr/rrrr
rr/Ws
zPySimpleQueueTest.setUp)rrrrwrr/rtr
r
rrrr�Tsr�cs0eZdZeZ�fdd�Zdd�Zdd�Z�ZS)�CSimpleQueueTestcs|jj|_t���dSr)r�SimpleQueuer`rqr/rrrr
rr/as
zCSimpleQueueTest.setUpcCs(|�|j|jj�|�|j|jj�dSr)ZassertIsr`rr�rr
r
r�test_is_defaultesz CSimpleQueueTest.test_is_defaultcs||j�t���d}g}G��fdd�dt�}|�}��t���~|�����|d|kr,q`q,|�|t	t
|d���dS)Nr�cs"eZdZdd�Z��fdd�ZdS)z2CSimpleQueueTest.test_reentrancy.<locals>.CircularcSs
||_dSr)Zcircularrr
r
rrusz;CSimpleQueueTest.test_reentrancy.<locals>.Circular.__init__cs��t���dSr)rH�nextr��genr	r
r�__del__xsz:CSimpleQueueTest.test_reentrancy.<locals>.Circular.__del__N)rrrrr�r
r�r
r�Circulartsr�rZr7)r	�	itertools�count�objectrHr�r[rJrKr�rM)rr�r�r��or
r�r�test_reentrancyisz CSimpleQueueTest.test_reentrancy)	rrrrzrr/r�r�rtr
r
rrrr�\sr��__main__))r�r�rrZunittestr��testrZtest.supportrZimport_fresh_modulerwrzZ
skipUnlessZneed_c_queuerNrrr
rr,rpZTestCaserurxr{r|r}r~rr��	Exceptionr�r�r�r�r�r�r�r�mainr
r
r
r�<module>sP "u5)