Your IP : 216.73.216.85


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/test_queue.cpython-35.opt-1.pyc



��Yf�2�@sPddlZddlZddlZddlmZejd�ZdZdd�ZGdd�dej	�Z
Gd	d
�d
�ZGdd�de�ZGd
d�deej
�ZGdd�deej
�ZGdd�deej
�ZGdd�de�ZGdd�dej�ZGdd�deej
�ZedkrLej�dS)�N)�support�	threading�cCs"|jdko!|j�|jkS)Nr)�maxsize�qsize)�q�r�4/opt/alt/python35/lib64/python3.5/test/test_queue.py�qfullsr
c@s(eZdZdd�Zdd�ZdS)�_TriggerThreadcCs5||_||_tj�|_tjj|�dS)N)�fn�argsrZEvent�startedEvent�Thread�__init__)�selfrr
rrr	rs		z_TriggerThread.__init__cCs.tjd�|jj�|j|j�dS)Ng�������?)�timeZsleepr�setrr
)rrrr	�runs	

z_TriggerThread.runN)�__name__�
__module__�__qualname__rrrrrr	rsrc@s4eZdZdd�Zdd�Zdd�ZdS)�BlockingTestMixincCs
d|_dS)N)�t)rrrr	�tearDown1szBlockingTestMixin.tearDowncCs�t||�|_|jj�||�|_|jjj�sQ|jd|�|jjd�|jj�r�|jd|�|jS)Nz,blocking function '%r' appeared not to block�
z,trigger function '%r' appeared to not return)	rr�start�resultr�is_set�fail�join�is_alive)r�
block_func�
block_args�trigger_func�trigger_argsrrr	�do_blocking_test4s
		z"BlockingTestMixin.do_blocking_testcCs�t||�|_|jj�z;y||�Wn|k
rG�YnX|jd|�Wd|jjd�|jj�r�|jd|�|jjj�s�|jd�XdS)Nzexpected exception of kind %rrz,trigger function '%r' appeared to not returnz(trigger thread ended but event never set)rrrrr r!rr)rr"r#r$r%Zexpected_exception_classrrr	�do_exceptional_blocking_testCs

		z.BlockingTestMixin.do_exceptional_blocking_testN)rrrrr&r'rrrr	r/src@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�BaseQueueTestMixincCsd|_tj�|_dS)Nr)�cumrZLock�cumlock)rrrr	�setUpYs	zBaseQueueTestMixin.setUpc%Cs-|j�rtd��|j|j��|j|j��|jd�|jd�|jd�tddddgddddgddddg�}|j�|j�|j�g}|j	|||j
jd�x;tt
d	�D])}|j|�|j|j�d
�q�W|jt|�d�dt
}dt
}|j|�|jt|�d�|j|j��|j|j��y$|j|dd�|jd�Wntjk
r�YnXy$|j|dd�|jd�Wntjk
rYnX|j|j|f|jf�|j|j|ddf|jf�xtt
�D]}|j�qTW|j|j�d�y!|jdd�|jd�Wntjk
r�YnXy!|jdd�|jd�Wntjk
r�YnX|j|jf|jd�|j|jd|jd�dS)Nz&Call this function with an empty queue�oiM���Queue�	LifoQueue�
PriorityQueuez&Didn't seem to queue the correct data!�zQueue should not be emptyzQueue should not be full��zQueue should be full�blockrz(Didn't appear to block with a full queue�timeoutg{�G�z�?z+Didn't appear to time-out with a full queueTrzQueue should be emptyz*Didn't appear to block with an empty queuez-Didn't appear to time-out with an empty queue�empty�)r6)Tr)r6)r�RuntimeError�
assertTruer6ZassertFalse�full�put�dict�get�assertEqual�	__class__r�range�
QUEUE_SIZEr
r�queue�Fullr&�Empty)rrZtarget_orderZactual_order�i�lastr:rrr	�simple_queue_test]sd


!



%z$BaseQueueTestMixin.simple_queue_testc
Cs[xT|j�}|dkr)|j�dS|j�|j|7_WdQRX|j�qWdS)Nr)r=�	task_doner*r))rr�xrrr	�worker�s

zBaseQueueTestMixin.workercCs�d|_x0dD](}tjd|jd|f�j�qWx!td�D]}|j|�qIW|j�|j|jt	td��d�xdD]}|jd	�q�W|j�dS)
Nrr1�targetr
�dz0q.join() did not block until all tasks were done)rr1)rr1���)
r)rrrJrr@r;r r>�sum)rrrErrr	�queue_join_test�s	
&

z"BaseQueueTestMixin.queue_join_testcCs@|j�}y|j�Wntk
r.YnX|jd�dS)Nz(Did not detect task count going negative)�	type2testrH�
ValueErrorr)rrrrr	�test_queue_task_done�s
z'BaseQueueTestMixin.test_queue_task_donecCsZ|j�}|j|�|j|�y|j�Wntk
rHYnX|jd�dS)Nz(Did not detect task count going negative)rPrOrHrQr)rrrrr	�test_queue_join�s


z"BaseQueueTestMixin.test_queue_joincCs-|jt�}|j|�|j|�dS)N)rPrArG)rrrrr	�test_simple_queue�s
z$BaseQueueTestMixin.test_simple_queuecCsg|jt�}|jt��|jddd�WdQRX|jt��|jddd�WdQRXdS)Nr1r5rMrM)rPrA�assertRaisesrQr;r=)rrrrr	�&test_negative_timeout_raises_exception�s
z9BaseQueueTestMixin.test_negative_timeout_raises_exceptioncCs�|jt�}x!tt�D]}|jd�qW|jtj��|jd�WdQRXxtt�D]}|j�qgW|jtj��|j�WdQRXdS)Nr1)	rPrAr@�
put_nowaitrUrBrCZ
get_nowaitrD)rrrErrr	�test_nowait�szBaseQueueTestMixin.test_nowaitcCs�|jd�}|jd�|jd�|jd�|jtj��|jd�WdQRX|j|j�d�d|_|jtj��|jd�WdQRXdS)Nr3r1r2�)	rPr;rUrBrCrWr>rr)rrrrr	�test_shrinking_queue�s


	z'BaseQueueTestMixin.test_shrinking_queueN)
rrrr+rGrJrOrRrSrTrVrXrZrrrr	r(Xs9



r(c@seZdZejZdS)�	QueueTestN)rrrrBr.rPrrrr	r[�sr[c@seZdZejZdS)�
LifoQueueTestN)rrrrBr/rPrrrr	r\�sr\c@seZdZejZdS)�PriorityQueueTestN)rrrrBr0rPrrrr	r]�sr]c@seZdZdS)�FailingQueueExceptionN)rrrrrrr	r^�sr^c@s4eZdZdd�Zdd�Zdd�ZdS)�FailingQueuecGs)d|_d|_tjj||�dS)NF)�
fail_next_put�
fail_next_getrBr.r)rr
rrr	r�s		zFailingQueue.__init__cCs1|jrd|_td��tjj||�S)NFzYou Lose)r`r^rBr.�_put)r�itemrrr	rb�s		zFailingQueue._putcCs.|jrd|_td��tjj|�S)NFzYou Lose)rar^rBr.�_get)rrrr	rds		zFailingQueue._getN)rrrrrbrdrrrr	r_�sr_c@s(eZdZdd�Zdd�ZdS)�FailingQueueTestc<Cs�|j�rtd��x%ttd�D]}|j|�q)Wd|_y$|jddd�|jd�Wntk
r�YnXd|_y$|jddd	�|jd�Wntk
r�YnX|jd
�|jt	|�d�d|_y-|j
|jd|jf�|jd�Wntk
r1YnX|jd
�d|_y0|j|jd|jft�|jd�Wntk
r�YnX|jd
�|jt	|�d�|j�|jt	|�d�|jd
�|jt	|�d�|j
|jd|jf�xtt�D]}|j�qW|j|j�d�|jd�d|_
y|j�|jd�Wntk
r�YnX|j|j�d�d|_
y!|jdd	�|jd�Wntk
r�YnX|j|j�d�|j�|j|j�d�d|_
y0|j|jf|jdt�|jd�Wntk
rgYnX|j|j�d�|j�|j|j�d�dS)Nz&Call this function with an empty queuer1TZoopsr4rz)The queue didn't fail when it should haver5g�������?rFzQueue should be fullr:rzQueue should not be fullzQueue should be empty�firstzQueue should not be emptyr6)r:)r:Tr)r:)r6)rr8r@rAr;r`rr^r9r
r&r=r'ra)rrrErrr	�failing_queue_tests�	
	

	

	




	

	

	

z#FailingQueueTest.failing_queue_testcCs*tt�}|j|�|j|�dS)N)r_rArg)rrrrr	�test_failing_queue]s
z#FailingQueueTest.test_failing_queueN)rrrrgrhrrrr	re
sQre�__main__)rBrZunittestZtestr�
import_modulerrAr
rrrr(ZTestCaser[r\r]�	Exceptionr^r.r_rer�mainrrrr	�<module>s" )�[