Your IP : 216.73.217.129


Current Path : /opt/alt/python38/lib64/python3.8/test/__pycache__/
Upload File :
Current File : //opt/alt/python38/lib64/python3.8/test/__pycache__/test_queue.cpython-38.pyc

U

i�flQ�@s�ddlZddlZddlZddlZddlZddlZddlmZejddgd�Z	ejddgd�Z
e�e
d�ZdZ
d	d
�ZGdd�dej�ZGd
d�d�ZGdd�de�ZGdd�de�ZGdd�deej�ZeGdd�deej��ZGdd�de�ZGdd�deej�ZeGdd�deej��ZGdd�de�ZGdd �d eej�ZeGd!d"�d"eej��ZGd#d$�d$e�ZGd%d&�d&e�ZGd'd(�d(eej�Z eGd)d*�d*eej��Z!Gd+d,�d,�Z"Gd-d.�d.e"ej�Z#eGd/d0�d0e"ej��Z$e%d1k�r�e�&�dS)2�N)�support�queueZ_queue)Zblocked)ZfreshzNo _queue module found�cCs|jdko|��|jkS�Nr)�maxsize�qsize)�q�r	�4/opt/alt/python38/lib64/python3.8/test/test_queue.py�qfullsrc@seZdZdd�Zdd�ZdS)�_TriggerThreadcCs&||_||_t��|_tj�|�dS�N)�fn�args�	threadingZEvent�startedEvent�Thread�__init__)�selfrrr	r	r
rs
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	r
rsrc@seZdZdd�Zdd�ZdS)�BlockingTestMixinc
CsRt||�}|��z,||�|_|j��s6|�d|�|jW�St�|d�XdS)N�
z*blocking function %r appeared not to block)r�startr�join_thread�resultr�is_set�fail)r�
block_func�
block_args�trigger_func�trigger_args�threadr	r	r
�do_blocking_test7s


�
z"BlockingTestMixin.do_blocking_testc
Cspt||�}|��z6z||�Wn|k
r6�YnX|�d|�W5t�|d�|j��sj|�d�XdS)Nrz(trigger thread ended but event never setzexpected exception of kind %r)rr rr!rr#r$)rr%r&r'r(Zexpected_exception_classr)r	r	r
�do_exceptional_blocking_testEs
�

z.BlockingTestMixin.do_exceptional_blocking_testN)rrrr*r+r	r	r	r
r5src@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�BaseQueueTestMixincCsd|_t��|_dSr)�cumrZLock�cumlockrr	r	r
�setUpXszBaseQueueTestMixin.setUpcCs||��rtd��|�|���|�|���|�d�|�d�|�d�tdddgdddgdddgd�}|��|��|��g}|�	|||j
jd�tt
d�D]}|�|�|�|��d�q�|�t|�d	�d
t
}dt
}|�|�|�t|�d�|�|���|�|���z|j|d
d�|�d�Wn|jjk
�rPYnXz|j|dd�|�d�Wn|jjk
�r�YnX|�|j|f|jd�|�|j|ddf|jd�tt
�D]}|���q�|�|��d�z|jd
d�|�d�Wn|jjk
�rYnXz|jdd�|�d�Wn|jjk
�rNYnX|�|jd|jd�|�|jd|jd�dS)N�&Call this function with an empty queue�oiM��)�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	Tr�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�
assertTruerA�assertFalse�full�put�dict�get�assertEqual�	__class__r�range�
QUEUE_SIZErr$r�Fullr*�Empty)rrZtarget_orderZactual_order�i�lastrEr	r	r
�basic_queue_test\sh



��

z#BaseQueueTestMixin.basic_queue_testc	CsJ|��}|dkr|��dS|j�|j|7_W5QRX|��qdSr)rH�	task_doner.r-)rr�xr	r	r
�worker�szBaseQueueTestMixin.workercCs�d|_g}dD](}tj|j|fd�}|��|�|�qtd�D]}|�|�q@|��|�	|jt
td��d�dD]}|�d�qt|��|D]}|��q�dS)Nr)rr6��targetr�dz0q.join() did not block until all tasks were done���)r-rrrTr �appendrKrF�joinrI�sum)rrZthreadsrOr)r	r	r
�queue_join_test�s"�z"BaseQueueTestMixin.queue_join_testcCs8|��}z|��Wntk
r(YnX|�d�dS�Nz(Did not detect task count going negative)�	type2testrR�
ValueErrorr$�rrr	r	r
�test_queue_task_done�sz'BaseQueueTestMixin.test_queue_task_donecCsL|��}|�|�|�|�z|��Wntk
r<YnX|�d�dSr])r^r\rRr_r$r`r	r	r
�test_queue_join�s

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

zBaseQueueTestMixin.test_basicc	CsV|�t�}|�t��|jddd�W5QRX|�t��|jddd�W5QRXdS�Nr6rXr>)r^rL�assertRaisesr_rFrHr`r	r	r
�&test_negative_timeout_raises_exception�s

z9BaseQueueTestMixin.test_negative_timeout_raises_exceptionc	Cs�|�t�}tt�D]}|�d�q|�|jj��|�d�W5QRXtt�D]}|��qN|�|jj��|��W5QRXdS)Nr6)	r^rLrK�
put_nowaitrerrM�
get_nowaitrN�rrrOr	r	r
�test_nowait�s

zBaseQueueTestMixin.test_nowaitc	Cs�|�d�}|�d�|�d�|�d�|�|jj��|�d�W5QRX|�|��d�d|_|�|jj��|�d�W5QRXdS)N�r6r9�)	r^rFrerrMrgrIrrr`r	r	r
�test_shrinking_queue�s



z'BaseQueueTestMixin.test_shrinking_queueN)
rrrr/rQrTr\rarbrcrfrjrmr	r	r	r
r,Ws9


r,cseZdZ�fdd�Z�ZS)�	QueueTestcs|jj|_t���dSr
)rr3r^�superr/r�rJr	r
r/�s
zQueueTest.setUp�rrrr/�
__classcell__r	r	rpr
rn�srnc@seZdZeZdS)�PyQueueTestN�rrr�py_queuerr	r	r	r
rs�srsc@seZdZeZdS)�
CQueueTestN�rrr�c_queuerr	r	r	r
rv�srvcseZdZ�fdd�Z�ZS)�
LifoQueueTestcs|jj|_t���dSr
)rr4r^ror/rrpr	r
r/s
zLifoQueueTest.setUprqr	r	rpr
ry�sryc@seZdZeZdS)�PyLifoQueueTestNrtr	r	r	r
rzsrzc@seZdZeZdS)�CLifoQueueTestNrwr	r	r	r
r{	sr{cseZdZ�fdd�Z�ZS)�PriorityQueueTestcs|jj|_t���dSr
)rr5r^ror/rrpr	r
r/s
zPriorityQueueTest.setUprqr	r	rpr
r|sr|c@seZdZeZdS)�PyPriorityQueueTestNrtr	r	r	r
r}sr}c@seZdZeZdS)�CPriorityQueueTestNrwr	r	r	r
r~sr~c@seZdZdS)�FailingQueueExceptionN�rrrr	r	r	r
rsrcs,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|f|��dS)NF)�
fail_next_put�
fail_next_getr)rr�r3r	r
r(sz5FailingQueueTest.setUp.<locals>.FailingQueue.__init__cs |jrd|_td����||�S�NFzYou Lose)r�r�_put)r�itemr�r	r
r�,sz1FailingQueueTest.setUp.<locals>.FailingQueue._putcs|jrd|_td����|�Sr�)r�r�_getrr�r	r
r�1sz1FailingQueueTest.setUp.<locals>.FailingQueue._getN)rrrrr�r�r	r�r	r
�FailingQueue'sr�)rr3r�ror/)rr�rpr�r
r/#szFailingQueueTest.setUpcCs�|��rtd��ttd�D]}|�|�qd|_z|jddd�|�d�Wntk
rbYnXd|_z|jddd	�|�d�Wntk
r�YnX|�d
�|�t	|�d�d|_z"|�
|jd|jd
�|�d�Wntk
r�YnX|�d
�d|_z$|�|jd|jd
t�|�d�Wntk
�r>YnX|�d
�|�t	|�d�|��|�t	|�d�|�d
�|�t	|�d�|�
|jd|jd
�tt�D]}|���q�|�|��d�|�d�d|_
z|��|�d�Wntk
�rYnX|�|��d�d|_
z|jdd	�|�d�Wntk
�rPYnX|�|��d�|��|�|��d�d|_
z$|�|jd
|jdt�|�d�Wntk
�r�YnX|�|��d�|��|�|��d�dS)Nr0r6TZoopsrr<z)The queue didn't fail when it should haverr>rPr;)rEr	)rETrr8r?�firstr7r@)rrBrKrLrFr�r$rrCrr*rHr+r�rir	r	r
�failing_queue_test;s�

�


�z#FailingQueueTest.failing_queue_testcCs"|�t�}|�|�|�|�dSr
)r�rLr�r`r	r	r
�test_failing_queue�s

z#FailingQueueTest.test_failing_queue)rrrr/r�r�rrr	r	rpr
r�!sQr�c@seZdZeZdS)�PyFailingQueueTestNrtr	r	r	r
r��sr�c@seZdZeZdS)�CFailingQueueTestNrwr	r	r	r
r��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^rrr	r	r
r/�szBaseSimpleQueueTest.setUpcCsRz|��}Wntk
r"YdSX|�|�|��dkrt�|��d�qdS)Ng�?���MbP?)�pop�
IndexErrorrF�randomrr)rr�seq�rnd�valr	r	r
�feed�s
zBaseSimpleQueueTest.feedcCs$|��}||krdS|�|�qdSr
)rHrY�rr�results�sentinelr�r	r	r
�consume�szBaseSimpleQueueTest.consumecCsTz|jdd�}Wq8|jjk
r2t�d�YqXq8q||krDdS|�|�qdS)NFr<��h㈵��>)rHrrNrrrYr�r	r	r
�consume_nonblock�sz$BaseSimpleQueueTest.consume_nonblockcCsJz|jdd�}Wq.|jjk
r(YqXq.q||kr:dS|�|�qdS)Nr�r>)rHrrNrYr�r	r	r
�consume_timeout�sz#BaseSimpleQueueTest.consume_timeoutc		s�g�d�|�g|����t�d��g��fdd�������fdd�t|�D�}�����fdd�t|�D�}t�||��W5QRX|���|�����|�	��
�d��S)N�*cs��fdd�}|S)Nc
s@z�||�Wn,tk
r:}z��|�W5d}~XYnXdSr
)�
BaseExceptionrY)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�rU�rr��.0rO)�	feed_funcr�rr�r�r	r
�
<listcomp>�s�
�z3BaseSimpleQueueTest.run_threads.<locals>.<listcomp>cs$g|]}tj������fd��qSr�r�r�)�consume_funcr�rr�r�r	r
r��s�
�r)�reverser�ZRandomrKrZ
start_threadsrDrCrArIr)	rZ	n_feedersZn_consumersr�inputsr�r�ZfeedersZ	consumersr	)	r�r�r�r�rr�r�r�r�r
�run_threads�s&
��

zBaseSimpleQueueTest.run_threadsc	Cs�|j}|�|���|�|��d�|�d�|�|���|�|��d�|�d�|�d�|�d�|�|���|�|��d�|�|��d�|�|��d�|�|�	�d�|�|��d�|�|jdd�d�|�|���|�|��d�|�|jdd	�d�|�|���|�|��d�|�
|jj��|jdd�W5QRX|�
|jj��|jd
d	�W5QRX|�
|jj��|�	�W5QRX|�|���|�|��d�dS)Nrr6r9rkrlFr<rr>r�)
rrCrArIrrFrDrgrHrhrerrNr`r	r	r
rc�s:



zBaseSimpleQueueTest.test_basicc	Cs6|j}|�d�|�t��|jdd�W5QRXdSrd)rrFrer_rHr`r	r	r
rfs
z:BaseSimpleQueueTest.test_negative_timeout_raises_exceptioncCs:|j}ttd��}|�dd|||j|j�}|�||�dS)NrWr6)r�listrKr�r�r�rI)rrr�r�r	r	r
�
test_orderszBaseSimpleQueueTest.test_ordercCsBd}|j}ttd��}|�|||||j|j�}|�t|�|�dS�N�2�')rr�rKr�r�r�rI�sorted�r�Nrr�r�r	r	r
�test_many_threads$s
z%BaseSimpleQueueTest.test_many_threadscCsBd}|j}ttd��}|�|||||j|j�}|�t|�|�dSr�)rr�rKr�r�r�rIr�r�r	r	r
�test_many_threads_nonblock/s�z.BaseSimpleQueueTest.test_many_threads_nonblockcCsBd}|j}ttd��}|�|||||j|j�}|�t|�|�dS)Nr�i�)rr�rKr�r�r�rIr�r�r	r	r
�test_many_threads_timeout9s�z-BaseSimpleQueueTest.test_many_threads_timeoutcCs^Gdd�d�}d}|j}t|�D]}|�|��q t|�D]}t�|���}|�|��q:dS)Nc@seZdZdS)z.BaseSimpleQueueTest.test_references.<locals>.CNr�r	r	r	r
�CFsr��)rrKrF�weakref�refrHZassertIsNone)rr�r�rrOZwrr	r	r
�test_referencesCsz#BaseSimpleQueueTest.test_referencesN)rrrr/r�r�r�r�r�rcrfr�r�r�r�r�r	r	r	r
r��s


!%	

r�cs eZdZeZ�fdd�Z�ZS)�PySimpleQueueTestcs|jj|_t���dSr
)rZ_PySimpleQueuer^ror/rrpr	r
r/Us
zPySimpleQueueTest.setUp)rrrrurr/rrr	r	rpr
r�Rsr�cs0eZdZeZ�fdd�Zdd�Zdd�Z�ZS)�CSimpleQueueTestcs|jj|_t���dSr
)r�SimpleQueuer^ror/rrpr	r
r/_s
zCSimpleQueueTest.setUpcCs(|�|j|jj�|�|j|jj�dSr
)ZassertIsr^rr�rr	r	r
�test_is_defaultcsz 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	r
rssz;CSimpleQueueTest.test_reentrancy.<locals>.Circular.__init__cs��t���dSr
)rF�nextr��genrr	r
�__del__vsz:CSimpleQueueTest.test_reentrancy.<locals>.Circular.__del__N)rrrrr�r	r�r	r
�Circularrsr�rXr6)r�	itertools�count�objectrFr�rYrHrIr�rK)rr�r�r��or	r�r
�test_reentrancygsz CSimpleQueueTest.test_reentrancy)	rrrrxrr/r�r�rrr	r	rpr
r�Zsr��__main__)'r�r�rrZunittestr�ZtestrZimport_fresh_modulerurxZ
skipUnlessZneed_c_queuerLrrrrr,rnZTestCasersrvryrzr{r|r}r~�	Exceptionrr�r�r�r�r�r�r�mainr	r	r	r
�<module>sN "u4)