Your IP : 216.73.217.129


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-2.pyc



���]�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�//opt/alt/python35/lib64/python3.5/test_queue.py�qfullsr
c@s(eZdZdd�Zdd�ZdS)�_TriggerThreadcCs5||_||_tj�|_tjj|�dS)N)�fn�argsr�Event�startedEvent�Thread�__init__)�selfrr
rrr	rs		z_TriggerThread.__init__cCs.tjd�|jj�|j|j�dS)Ng�������?)�time�sleepr�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)rrrr!r"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)�cumr�Lock�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�)r9)Tr)r9)r�RuntimeError�
assertTruer9ZassertFalse�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)
Nrr4�targetr
�dz0q.join() did not block until all tasks were done)rr4)rr4���)
r+rrrMrrCr>r"rA�sum)rrrHrrr	�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)�	type2testrK�
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)rSrRrKrTr!)rrrrr	�test_queue_join�s


z"BaseQueueTestMixin.test_queue_joincCs-|jt�}|j|�|j|�dS)N)rSrDrJ)rrrrr	�test_simple_queue�s
z$BaseQueueTestMixin.test_simple_queuecCsg|jt�}|jt��|jddd�WdQRX|jt��|jddd�WdQRXdS)Nr4r8rPrP)rSrD�assertRaisesrTr>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)Nr4)	rSrDrC�
put_nowaitrXrErF�
get_nowaitrG)rrrHrrr	�test_nowait�szBaseQueueTestMixin.test_nowaitcCs�|jd�}|jd�|jd�|jd�|jtj��|jd�WdQRX|j|j�d�d|_|jtj��|jd�WdQRXdS)Nr6r4r5�)	rSr>rXrErFrZrArr)rrrrr	�test_shrinking_queue�s


	z'BaseQueueTestMixin.test_shrinking_queueN)
rrrr.rJrMrRrUrVrWrYr\r^rrrr	r*Xs9



r*c@seZdZejZdS)�	QueueTestN)rrrrEr1rSrrrr	r_�sr_c@seZdZejZdS)�
LifoQueueTestN)rrrrEr2rSrrrr	r`�sr`c@seZdZejZdS)�PriorityQueueTestN)rrrrEr3rSrrrr	ra�srac@seZdZdS)�FailingQueueExceptionN)rrrrrrr	rb�srbc@s4eZdZdd�Zdd�Zdd�ZdS)�FailingQueuecGs)d|_d|_tjj||�dS)NF)�
fail_next_put�
fail_next_getrEr1r)rr
rrr	r�s		zFailingQueue.__init__cCs1|jrd|_td��tjj||�S)NFzYou Lose)rdrbrEr1�_put)r�itemrrr	rf�s		zFailingQueue._putcCs.|jrd|_td��tjj|�S)NFzYou Lose)rerbrEr1�_get)rrrr	rhs		zFailingQueue._getN)rrrrrfrhrrrr	rc�srcc@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 queuer4TZoopsr7rz)The queue didn't fail when it should haver8g�������?rIzQueue should be fullr=rzQueue should not be fullzQueue should be empty�firstzQueue should not be emptyr9)r=)r=Tr)r=)r9)rr;rCrDr>rdr!rbr<r
r(r@r)re)rrrHrrr	�failing_queue_tests�	
	

	

	




	

	

	

z#FailingQueueTest.failing_queue_testcCs*tt�}|j|�|j|�dS)N)rcrDrk)rrrrr	�test_failing_queue]s
z#FailingQueueTest.test_failing_queueN)rrrrkrlrrrr	ri
sQri�__main__)rErZunittestZtestr�
import_modulerrDr
rrrr*ZTestCaser_r`ra�	Exceptionrbr1rcrir�mainrrrr	�<module>s" )�[