Your IP : 216.73.216.213


Current Path : /proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/
Upload File :
Current File : //proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/lock_tests.cpython-34.pyo

�
g f�k�@sadZddlZddlZddlmZmZddlZddlZddlm	Z	dd�Z
Gdd�de�ZGd	d
�d
ej
�ZGdd�de�ZGd
d�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�ZdS)z/
Various tests for synchronization primitives.
�N)�start_new_thread�TIMEOUT_MAX)�supportcCstjd�dS)Ng{�G�z�?)�time�sleep�rr�4/opt/alt/python34/lib64/python3.4/test/lock_tests.py�_waitsr	c@sIeZdZdZddd�Zdd�Zdd�Zd	d
�ZdS)�Bunchz
    A bunch of threads.
    Fc
s���_|�_g�_g�_|�_��fdd�}y(x!t|�D]}t|f�qSWWnd�_�YnXdS)z�
        Construct a bunch of `n` threads running the same function `f`.
        If `wait_before_exit` is True, the threads won't terminate until
        do_finish() is called.
        csVtj�}�jj|�z��Wd�jj|�x�jsPt�q=WXdS)N)�	threading�	get_ident�started�append�finished�	_can_exitr	)�tid)�f�selfrr�task!szBunch.__init__.<locals>.taskTN)r�nr
rr�ranger)rrrZwait_before_exitr�ir)rrr�__init__s				
		zBunch.__init__cCs*x#t|j�|jkr%t�qWdS)N)�lenr
rr	)rrrr�wait_for_started1szBunch.wait_for_startedcCs*x#t|j�|jkr%t�qWdS)N)rrrr	)rrrr�wait_for_finished5szBunch.wait_for_finishedcCs
d|_dS)NT)r)rrrr�	do_finish9szBunch.do_finishN)�__name__�
__module__�__qualname__�__doc__rrrrrrrrr
s
r
c@s4eZdZdd�Zdd�Zdd�ZdS)�BaseTestCasecCstj�|_dS)N)rZthreading_setup�_threads)rrrr�setUp>szBaseTestCase.setUpcCstj|j�tj�dS)N)rZthreading_cleanupr"Z
reap_children)rrrr�tearDownAszBaseTestCase.tearDowncCs,|j||d�|j||d�dS)Ng333333�?g$@)ZassertGreaterEqual�
assertLess)rZactualZexpectedrrr�
assertTimeoutEszBaseTestCase.assertTimeoutN)rrrr#r$r&rrrrr!=sr!c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�
BaseLockTestsz;
    Tests for both recursive and non-recursive locks.
    cCs|j�}~dS)N)�locktype)r�lockrrr�test_constructorSszBaseLockTests.test_constructorcCs|j�}t|�~dS)N)r(�repr)rr)rrr�	test_reprWs
zBaseLockTests.test_reprcCs|j�}|j�~dS)N)r(�acquire)rr)rrr�test_acquire_destroy\s
z"BaseLockTests.test_acquire_destroycCs'|j�}|j�|j�~dS)N)r(r-�release)rr)rrr�test_acquire_releaseas

z"BaseLockTests.test_acquire_releasecCs0|j�}|j|jd��|j�dS)NF)r(�
assertTruer-r/)rr)rrr�test_try_acquiregszBaseLockTests.test_try_acquirecsc|j���j�g���fdd�}t|d�j�|j�d��j�dS)Ncs�j�jd��dS)NF)rr-r)r)�resultrrrpsz3BaseLockTests.test_try_acquire_contended.<locals>.f�r)r(r-r
r�assertFalser/)rrr)r)r3r�test_try_acquire_contendedls
z(BaseLockTests.test_try_acquire_contendedcs�|j���j�d}�fdd�}t||�}|j�t�|jt|j�d��j�|j	�|jt|j�|�dS)N�cs�j��j�dS)N)r-r/r)r)rrrzs
z/BaseLockTests.test_acquire_contended.<locals>.fr)
r(r-r
rr	�assertEqualrrr/r)r�Nr�br)r)r�test_acquire_contendedvs



z$BaseLockTests.test_acquire_contendedcsw|j���fdd�}d�fdd�}|�t|d�j�|jt|t�t|d�j�dS)Ncs�j��j�dS)N)r-r/r)r)rrr�s
z"BaseLockTests.test_with.<locals>.fc	s&��|dk	r|�nWdQXdS)Nr)�err)r)rr�_with�sz&BaseLockTests.test_with.<locals>._withr4)r(r
r�assertRaises�	TypeError)rrr=r)r)r�	test_with�szBaseLockTests.test_withcs�|j���fdd�}ttj��}t|d�j�ttj��|kr�tjd�|j|ttj���ndS)Ncs�j��j�dS)N)r-r/r)r)rrr�s
z)BaseLockTests.test_thread_leak.<locals>.f�g�������?)	r(rr�	enumerater
rrrr8)rrrr)r)r�test_thread_leak�s
zBaseLockTests.test_thread_leakcs*|j��|jt�jdd�|jt�jdd
�|jt�jdd�|jt�jdtd��jdt��j�tj�}|j�jdd��tj�}|j	||d�g���fdd�}t
|d�j�|j�d�|j
�dd	�dS)Nrr4�timeout�dg}Ô%�I�Tr7csFtj�}�j�jdd��tj�}�j||�dS)NrDg�?)rrr-)�t1�t2)r)�resultsrrr�sz%BaseLockTests.test_timeout.<locals>.fg�?i����)r(r>�
ValueErrorr-�
OverflowErrorrr/rr1r%r
rr5r&)rrFrGrr)r)rHr�test_timeout�s 
zBaseLockTests.test_timeoutN)rrrr r*r,r.r0r2r6r;r@rCrKrrrrr'Ns
r'c@s:eZdZdZdd�Zdd�Zdd�ZdS)	�	LockTestszn
    Tests for non-recursive, weak locks
    (which can be acquired and released from different threads).
    cs�|j��g���fdd�}t|f�xt��dkrSt�q7Wt�|jt��d��j�xt��dkr�t�q~W|jt��d�dS)Ncs2�j��jd��j��jd�dS)N)r-rr)r)�phaserrr�s


z#LockTests.test_reacquire.<locals>.frr4�)r(rrr	r8r/)rrr)r)rMr�test_reacquire�s

zLockTests.test_reacquirecsY|j���j��fdd�}t|d�}|j��j��j�dS)Ncs�j�dS)N)r/r)r)rrr�sz*LockTests.test_different_thread.<locals>.fr4)r(r-r
rr/)rrr:r)r)r�test_different_thread�s


zLockTests.test_different_threadcCsi|j�}|j�|j|jdd��|j�|j|j��|j|jdd��dS)NrDg{�G�z�?ZblockingF)r(r-r5r/�lockedr1)rr)rrr�test_state_after_timeout�s

z"LockTests.test_state_after_timeoutN)rrrr rOrPrRrrrrrL�srLc@sReZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�
RLockTestsz$
    Tests for recursive locks.
    cCsL|j�}|j�|j�|j�|j�|j�|j�dS)N)r(r-r/)rr)rrrrO�s




zRLockTests.test_reacquirecCsr|j�}|jt|j�|j�|j�|j�|j�|j�|j�|jt|j�dS)N)r(r>�RuntimeErrorr/r-)rr)rrr�test_release_unacquired�s





z"RLockTests.test_release_unacquiredcCsr|j�}|jt|j�|j�|j�|j�|j�|j�|j�|jt|j�dS)N)r(r>rT�
_release_saver-r/)rr)rrr�test_release_save_unacquireds





z'RLockTests.test_release_save_unacquiredc
sY|j���fdd�}t|dd�}z|jt�j�Wd|j�XdS)Ncs�j�dS)N)r-r)r)rrrsz+RLockTests.test_different_thread.<locals>.fr4T)r(r
r>rTr/r)rrr:r)r)rrPsz RLockTests.test_different_threadcs�|j��|j�j���j�|j�j���j�|j�j��g���fdd�}t|d�j�|j�d��j�|j�j���j�|j�j��dS)Ncs�j�j��dS)N)r�	_is_ownedr)r)r3rrr*sz$RLockTests.test__is_owned.<locals>.fr4r)r(r5rXr-r1r
rr/)rrr)r)r3r�test__is_owned"s



zRLockTests.test__is_ownedN)	rrrr rOrUrWrPrYrrrrrS�s	rSc@s^eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)�
EventTestsz"
    Tests for Event objects.
    cCs�|j�}|j|j��|j�|j|j��|j�|j|j��|j�|j|j��|j�|j|j��dS)N)�	eventtyper5Zis_set�setr1�clear)r�evtrrr�test_is_set9s



zEventTests.test_is_setcs�d}g�g����fdd�}t||�}|j�t�|jt��d��j�|j�|j�dg|�|j�dg|�dS)Nr7cs*�j�j���j�j��dS)N)r�waitr)r^�results1�results2rrrJsz#EventTests._check_notify.<locals>.frT)r
rr	r8rr\r)rr^r9rr:r)r^rarbr�
_check_notifyEs


zEventTests._check_notifycCs>|j�}|j|�|j�|j�|j|�dS)N)r[rcr\r])rr^rrr�test_notifyVs



zEventTests.test_notifycs�|j��g�g�d}���fdd�}t||�j�|j�dg|�x1�D])\}}|j|�|j|d�qgWg�g��j�t||�j�|j�dg|�x!�D]\}}|j|�q�WdS)Nr7csX�j�jd��tj�}�jd�}tj�}�j|||f�dS)Ngg�?)rr`r)rF�rrG)r^rarbrrrcs
z"EventTests.test_timeout.<locals>.fFg�?T)r[r
rr8r5r&r\r1)rr9rre�dtr)r^rarbrrK^s"

zEventTests.test_timeoutcs�|j��g�d}��fdd�}t||�}|j�tjd��j��j�|j�|j�dg|�dS)Nr7cs�j�jd��dS)Nr4)rr`r)r^rHrrr}sz(EventTests.test_set_and_clear.<locals>.fg�?T)	r[r
rrrr\r]rr8)rr9rr:r)r^rHr�test_set_and_clearws




zEventTests.test_set_and_clearcCs^|j�}|jj}|j�|jj}|j||�|jt|�t|��dS)N)r[Z_cond�_lockZ_reset_internal_locksZassertIsNotZassertIs�type)rr^Zold_lockZnew_lockrrr�test_reset_internal_locks�s
z$EventTests.test_reset_internal_locksN)
rrrr r_rcrdrKrgrjrrrrrZ4srZc@sveZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�ZdS)�ConditionTestsz(
    Tests for condition variables.
    c
Cs�|j�}|j�|j�|j�|j�tj�}|j|�}|j�|j|jd��|j�|j|jd��|j|jd��|j�|�|j|jd��WdQXdS)NF)�condtyper-r/rZLockr5r1)r�condr)rrr�test_acquire�s






zConditionTests.test_acquirecCs#|j�}|jt|j�dS)N)rlr>rTr`)rrmrrr�test_unacquired_wait�sz#ConditionTests.test_unacquired_waitcCs#|j�}|jt|j�dS)N)rlr>rT�notify)rrmrrr�test_unacquired_notify�sz%ConditionTests.test_unacquired_notifycsd}g�g�d�����fdd�}t||�}|j�t�|j�g��j��jd�t�d��j�xt��dkr�t�q�W|j�d
gd�|j�g�t��j��jd�t�d��j�x't��t��d	kr6t�qW|j�dgddgd�|j�d
gd�t��j��j�t�d��j�xt��dkr�t�q�W|j�dgddgd�|j�dgddgd�|j	�dS)Nr7rcsj�j��j�}�j��j|�f��j��j�}�j��j|�f�dS)N)r-r`r/r)r3)rm�	phase_numrarbrrr�s



z'ConditionTests._check_notify.<locals>.f�r4TrN�)Tr4)Tr4)TrN)TrN)Tr4)TrN)TrN)Trs)
r
rr	r8r-rpr/rZ
notify_allr)rrmr9rr:r)rmrrrarbrrc�sN	






"


""zConditionTests._check_notifycCs*|j�}|j|�|j|�dS)N)rlrc)rrmrrrrd�s
zConditionTests.test_notifycs�|j��g�d}��fdd�}t||�j�|jt��|�x1�D])\}}|j|d�|j|�q]WdS)Nr7csV�j�tj�}�jd�}tj�}�j��j|||f�dS)Ng�?)r-rr`r/r)rFr3rG)rmrHrrr�s

z&ConditionTests.test_timeout.<locals>.fg�?)rlr
rr8rr&r5)rr9rrfr3r)rmrHrrK�szConditionTests.test_timeoutc
s��j��d����fdd�}t|d�}|j�xBtd�D]4}tjd����d7��j�WdQXqPW|j�dS)NrcsI��=�j�fdd��}�j|��j�d�WdQXdS)Ncs
�dkS)N�rr)�staterr�<lambda>sz8ConditionTests.test_waitfor.<locals>.f.<locals>.<lambda>ru)�wait_forr1r8)r3)rmrrvrrrs
z&ConditionTests.test_waitfor.<locals>.fr4rug{�G�z�?)rlr
rrrrrpr)rrr:rr)rmrrvr�test_waitfor
s


zConditionTests.test_waitforc
s��j��d�g�����fdd�}t|d�}|j�xBtd�D]4}tjd����d7��j�WdQXqYW|j��jt	��d�dS)Nrcsx��ltj�}�j�fdd�dd�}tj�|}�j|��j|d��jd�WdQXdS)Ncs
�dkS)Nrurr)rvrrrw%sz@ConditionTests.test_waitfor_timeout.<locals>.f.<locals>.<lambda>rDg�������?)rrxr5r&r)rfr3)rmrrv�successrrr"s!
z.ConditionTests.test_waitfor_timeout.<locals>.fr4rsg{�G�z�?)
rlr
rrrrrprr8r)rrr:rr)rmrrvrzr�test_waitfor_timeouts



z#ConditionTests.test_waitfor_timeoutN)rrrr rnrorqrcrdrKryr{rrrrrk�sArkc@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�ZdS)�BaseSemaphoreTestszB
    Common tests for {bounded, unbounded} semaphore objects.
    cCs:|jt|jdd�|jt|jdtj�dS)N�valuer4���)r>rI�semtype�sys�maxsize)rrrrr*;sz#BaseSemaphoreTests.test_constructorcCs^|jd�}|j�|j�|jd�}|j�|j�|j�|j�dS)Nr4rN)rr-r/)r�semrrrrn?s




zBaseSemaphoreTests.test_acquirecCs|j�}|j�~dS)N)rr-)rr�rrrr.Is
z'BaseSemaphoreTests.test_acquire_destroycs�|jd���j�d}g�g�d�����fdd�}t|d�}|j�x't��t��dkr�t�qhW|j��dgd�d�xtd�D]}�j�q�Wx't��t��dkr�t�q�W|jt	���dgddgd�d	�xtd�D]}�j�q:Wx't��t��d
krwt�qQW|jt	���dgddgdd	gd�|j
�jd���j�|j�dS)N��
rcs2�j��j���j��j��dS)N)r-rr)rrrarbr�rrrUs


z4BaseSemaphoreTests.test_acquire_contended.<locals>.f�r4�
rN�F)rr-r
rrr	r8rr/�sortedr5r)rr9rr:rr)rrrarbr�rr;Ns6

,7
z)BaseSemaphoreTests.test_acquire_contendedcCsu|jd�}|j|jd��|j|jd��|j|jd��|j�|j|jd��dS)NrNF)rr1r-r5r/)rr�rrrr2qs
z#BaseSemaphoreTests.test_try_acquirecss|jd���j�g���fdd�}t|d�j�|jt��dgddgd�dS)	Nrucs0�j�jd���j�jd��dS)NF)rr-r)rHr�rrr}sz8BaseSemaphoreTests.test_try_acquire_contended.<locals>.fr7Fr�Trs)rr-r
rr8r�)rrr)rHr�rr6ys
z-BaseSemaphoreTests.test_try_acquire_contendedcCs�|jd�}|jt|jddd�|j|jdd��|j|jdd��|j|jdd��|j�|j|jdd��tj�}|j|jdd��tj�|}|j|d�dS)NrNFrDg�?g{�G�zt?g�?)	rr>rIr-r1r5r/rr&)rr��trfrrr�test_acquire_timeout�s
z'BaseSemaphoreTests.test_acquire_timeoutcsp|j���j��fdd�}t|d�}|j�t�|j|j��j�|j�dS)Ncs�j��j�dS)N)r-r/r)r�rrr�s
z0BaseSemaphoreTests.test_default_value.<locals>.fr4)	rr-r
rr	r5rr/r)rrr:r)r�r�test_default_value�s


z%BaseSemaphoreTests.test_default_valuecs��jd��d��fdd�}|��j�jd���j��jt|t��j�jd���j�dS)NrNcsc��W�j�jd���j���*�j�jd��|rS|�nWdQXWdQXdS)NF)r1r-r/r5)r<)rr�rrr=�s
z+BaseSemaphoreTests.test_with.<locals>._withF)rr1r-r/r>r?)rr=r)rr�rr@�s
zBaseSemaphoreTests.test_withN)
rrrr r*rnr.r;r2r6r�r�r@rrrrr|6s
#

r|c@s"eZdZdZdd�ZdS)�SemaphoreTestsz)
    Tests for unbounded semaphores.
    cCs;|jd�}|j�|j�|j�|j�dS)Nr4)rr/r-)rr�rrrrU�s



z&SemaphoreTests.test_release_unacquiredN)rrrr rUrrrrr��sr�c@s"eZdZdZdd�ZdS)�BoundedSemaphoreTestsz'
    Tests for bounded semaphores.
    cCsJ|j�}|jt|j�|j�|j�|jt|j�dS)N)rr>rIr/r-)rr�rrrrU�s


z-BoundedSemaphoreTests.test_release_unacquiredN)rrrr rUrrrrr��sr�c@s�eZdZdZdZdZdd�Zdd�Zdd	�Zd
d�Z	dd
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!S)"�BarrierTestsz$
    Tests for Barrier objects.
    r7g@cCs"|j|jd|j�|_dS)NrD)�barriertyper9�defaultTimeout�barrier)rrrrr#�szBarrierTests.setUpcCs|jj�dS)N)r��abort)rrrrr$�szBarrierTests.tearDowncCs+t||jd�}|�|j�dS)Nr4)r
r9r)rrr:rrr�run_threads�szBarrierTests.run_threadscCs�|jj}|j||j�x�t|�D]�}|djd�|jt|d�||�|jj�|djd�|jt|d�|d|�|jj�q,W|j|jjd�|j	|jj
�dS)NrTr4)r�Zpartiesr8r9rrrr`�	n_waitingr5�broken)rrHr�mrrrr�	multipass�s
"zBarrierTests.multipassr4cs5ggg����fdd�}�j|�dS)z;
        Test that a barrier is passed in lockstep
        cs�j���dS)N)r�r)�passesrHrrrr�sz$BarrierTests.test_barrier.<locals>.fN)r�)rr�rr)r�rHrr�test_barrier�szBarrierTests.test_barriercCs
|jd�S)zC
        Test that a barrier works for 10 consecutive runs
        r�)r�)rrrr�test_barrier_10�szBarrierTests.test_barrier_10csQg���fdd�}�j|��jt��tt�j���dS)z9
        test the return value from barrier.wait
        cs �jj�}�j|�dS)N)r�r`r)re)rHrrrrsz(BarrierTests.test_wait_return.<locals>.fN)r�r8�sumrr9)rrr)rHrr�test_wait_return�s
zBarrierTests.test_wait_returncsVg��fdd�}�j�j|�����fdd�}�j|�dS)z,
        Test the 'action' callback
        cs�jd�dS)NT)rr)rHrr�actionsz(BarrierTests.test_action.<locals>.actioncs$�j��jt��d�dS)Nr4)r`r8rr)r�rHrrrrs
z#BarrierTests.test_action.<locals>.fN)r�r9r�)rr�rr)r�rHrr�test_actions
zBarrierTests.test_actioncs{g�g����fdd�}�j|��jt��d��jt���jd��j�jj�dS)zK
        Test that an abort will put the barrier in a broken state
        cs�yI�jj�}|�jdkr.t�n�jj��jd�Wn@tjk
rm�jd�Yntk
r��jj�YnXdS)NrNT)r�r`r9rTrr�BrokenBarrierErrorr�)r)rarbrrrrs	


z"BarrierTests.test_abort.<locals>.frr4N)r�r8rr9r1r�r�)rrr)rarbrr�
test_aborts

zBarrierTests.test_abortcs�g�g�g�����fdd�}�j|��jt��d��jt���jd��jt���j�dS)zL
        Test that a 'reset' on a barrier frees the waiting threads
        cs��jj�}|�jdkr_x*�jj�jdkrNtjd�q%W�jj�nCy�jj��jd�Wn"tj	k
r��jd�YnX�jj��jd�dS)NrNr4g����MbP?T)
r�r`r9r�rr�resetrrr�)r)rarb�results3rrrr4s

z"BarrierTests.test_reset.<locals>.frr4N)r�r8rr9)rrr)rarbr�rr�
test_reset-s
zBarrierTests.test_resetcs�g�g�g��j�j�������fdd�}�j|��jt��d��jt���jd��jt���j�dS)zF
        Test that a barrier can be reset after being broken.
        cs�yI�jj�}|�jdkr.t�n�jj��jd�Wn@tjk
rm�jd�Yntk
r��jj�YnX�j��jdkr��jj�n�j��jj��jd�dS)NrNT)	r�r`r9rTrrr�r�r�)r)�barrier2rarbr�rrrrSs 	




z,BarrierTests.test_abort_and_reset.<locals>.frr4N)r�r9r�r8r)rrr)r�rarbr�rr�test_abort_and_resetKs
z!BarrierTests.test_abort_and_resetcs#�fdd�}�j|�dS)z$
        Test wait(timeout)
        csR�jj�}|�jdkr2tjd�n�jtj�jjd�dS)NrNg�?g�?)r�r`r9rrr>rr�)r)rrrrqs
z$BarrierTests.test_timeout.<locals>.fN)r�)rrr)rrrKmszBarrierTests.test_timeoutcs>�j�jdd����fdd�}�j|�dS)z4
        Test the barrier's default timeout
        rDg333333�?csI�j�}|�jdkr/tjd�n�jtj�j�dS)NrNg�?)r`r9rrr>rr�)r)r�rrrr�sz,BarrierTests.test_default_timeout.<locals>.fN)r�r9r�)rrr)r�rr�test_default_timeout{sz!BarrierTests.test_default_timeoutcCs'|jd�}|j�|j�dS)Nr4)r�r`)rr:rrr�test_single_thread�s
zBarrierTests.test_single_threadN)rrrr r9r�r#r$r�r�r�r�r�r�r�r�r�rKr�r�rrrrr��s"
	"r�)r r�r�_threadrrrZunittestZtestrr	�objectr
ZTestCaser!r'rLrSrZrkr|r�r�r�rrrr�<module>s$+v.B\�|