HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.7/test/__pycache__/lock_tests.cpython-37.pyc
B

��gq�@sdZddlZddlZddlmZmZddlZddlZddlZddl	m
Z
dd�ZGdd�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)�supportcCst�d�dS)Ng{�G�z�?)�time�sleep�rr�+/usr/local/lib/python3.7/test/lock_tests.py�_waitsr	c@s2eZdZdZddd�Zdd�Zdd�Zd	d
�ZdS)
�Bunchz
    A bunch of threads.
    Fcs|��_|�_g�_g�_|�_t���_�j����fdd�}y xt	|�D]}t
|d�qNWWnd�_�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.
        c	sDt��}�j�|�z
��Wd�j�|�x�js<t�q.WXdS)N)�	threading�	get_ident�started�append�finished�	_can_exitr	)�tid)�f�selfrr�task%s
zBunch.__init__.<locals>.taskrTN)r�nr
rrr�wait_threads_exit�wait_thread�	__enter__�ranger)rrrZwait_before_exitr�ir)rrr�__init__s


zBunch.__init__cCs xt|j�|jkrt�qWdS)N)�lenr
rr	)rrrr�wait_for_started6szBunch.wait_for_startedcCs0xt|j�|jkrt�qW|j�ddd�dS)N)rrrr	r�__exit__)rrrr�wait_for_finished:s
zBunch.wait_for_finishedcCs
d|_dS)NT)r)rrrr�	do_finish@szBunch.do_finishN)F)�__name__�
__module__�__qualname__�__doc__rrrr rrrrr
s

r
c@s$eZdZdd�Zdd�Zdd�ZdS)�BaseTestCasecCst��|_dS)N)rZthreading_setup�_threads)rrrr�setUpEszBaseTestCase.setUpcCstj|j�t��dS)N)rZthreading_cleanupr&Z
reap_children)rrrr�tearDownHszBaseTestCase.tearDowncCs$|�||d�|�||d�dS)Ng333333�?g$@)ZassertGreaterEqual�
assertLess)r�actualZexpectedrrr�
assertTimeoutLszBaseTestCase.assertTimeoutN)r!r"r#r'r(r+rrrrr%Dsr%c@sxeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�
BaseLockTestsz;
    Tests for both recursive and non-recursive locks.
    cCs|��}~dS)N)�locktype)r�lockrrr�test_constructorZszBaseLockTests.test_constructorcCs|��}|�t|�d�~dS)Nz<unlocked .* object (.*)?at .*>)r-�assertRegex�repr)rr.rrr�	test_repr^szBaseLockTests.test_reprcCs&|��}|��|�t|�d�~dS)Nz<locked .* object (.*)?at .*>)r-�acquirer0r1)rr.rrr�test_locked_reprcszBaseLockTests.test_locked_reprcCs|��}|��~dS)N)r-r3)rr.rrr�test_acquire_destroyisz"BaseLockTests.test_acquire_destroycCs|��}|��|��~dS)N)r-r3�release)rr.rrr�test_acquire_releasensz"BaseLockTests.test_acquire_releasecCs$|��}|�|�d��|��dS)NF)r-�
assertTruer3r6)rr.rrr�test_try_acquiretszBaseLockTests.test_try_acquirecsJ|������g���fdd�}t|d���|��d����dS)Ncs����d��dS)NF)rr3r)r.�resultrrr}sz3BaseLockTests.test_try_acquire_contended.<locals>.f�r)r-r3r
r�assertFalser6)rrr)r.r:r�test_try_acquire_contendedysz(BaseLockTests.test_try_acquire_contendedcsp|������d}�fdd�}t||�}|��t�|�t|j�d����|�	�|�t|j�|�dS)N�cs������dS)N)r3r6r)r.rrr�sz/BaseLockTests.test_acquire_contended.<locals>.fr)
r-r3r
rr	�assertEqualrrr6r)r�Nr�br)r.r�test_acquire_contended�s
z$BaseLockTests.test_acquire_contendedcsV|����fdd�}d�fdd�	}|�t|d���|�t|t�t|d���dS)Ncs������dS)N)r3r6r)r.rrr�sz"BaseLockTests.test_with.<locals>.fc	s ��|dk	r|�WdQRXdS)Nr)�err)r.rr�_with�sz&BaseLockTests.test_with.<locals>._withr;)N)r-r
r�assertRaises�	TypeError)rrrDr)r.r�	test_with�szBaseLockTests.test_withcs`|����fdd�}tt���}t|d���tt���|kr\t�d�|�|tt����dS)Ncs������dS)N)r3r6r)r.rrr�sz)BaseLockTests.test_thread_leak.<locals>.f�g�������?)	r-rr�	enumerater
rrrr?)rrrr)r.r�test_thread_leak�s
zBaseLockTests.test_thread_leakcs�|���|�t�jdd�|jt�jdd�|jt�jdd�|jt�jtdd��jtd����t��}|�	�jdd��t��}|�
||d�g���fdd�}t|d���|�
�d�|��dd	�dS)
Nrr;i����)�timeoutg}Ô%�I�Tr>cs4t��}���jdd��t��}��||�dS)Ng�?)rK)r�	monotonicrr3)�t1�t2)r.�resultsrrr�sz%BaseLockTests.test_timeout.<locals>.fg�?)r-rE�
ValueErrorr3�
OverflowErrorrr6rrLr8r)r
rr<r+)rrMrNrr)r.rOr�test_timeout�s zBaseLockTests.test_timeoutcCs"|��}t�|�}|�|��dS)N)r-�weakref�refZassertIsNotNone)rr.rTrrr�test_weakref_exists�s
z!BaseLockTests.test_weakref_existscCs$|��}t�|�}~|�|��dS)N)r-rSrTZassertIsNone)rr.rTrrr�test_weakref_deleted�s
z"BaseLockTests.test_weakref_deletedN)r!r"r#r$r/r2r4r5r7r9r=rBrGrJrRrUrVrrrrr,Us
r,c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�	LockTestszn
    Tests for non-recursive, weak locks
    (which can be acquired and released from different threads).
    c	s�|���g���fdd�}t���nt|d�xt��dkrDt�q0Wt�|�t��d����xt��dkrzt�qfW|�t��d�WdQRXdS)Ncs(�����d������d�dS)N)r3rr)r.�phaserrr�s
z#LockTests.test_reacquire.<locals>.frrr;�)r-rrrrr	r?r6)rrr)r.rXr�test_reacquire�s



zLockTests.test_reacquirecsB|�������fdd�}t|d�}|��������dS)Ncs���dS)N)r6r)r.rrr�sz*LockTests.test_different_thread.<locals>.fr;)r-r3r
rr6)rrrAr)r.r�test_different_thread�s
zLockTests.test_different_threadcCsN|��}|��|�|jdd��|��|�|���|�|jdd��dS)Ng{�G�z�?)rKF)Zblocking)r-r3r<r6�lockedr8)rr.rrr�test_state_after_timeoutsz"LockTests.test_state_after_timeoutN)r!r"r#r$rZr[r]rrrrrW�srWc@s8eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�ZdS)
�
RLockTestsz$
    Tests for recursive locks.
    cCs<|��}|��|��|��|��|��|��dS)N)r-r3r6)rr.rrrrZszRLockTests.test_reacquirecCsX|��}|�t|j�|��|��|��|��|��|��|�t|j�dS)N)r-rE�RuntimeErrorr6r3)rr.rrr�test_release_unacquiredsz"RLockTests.test_release_unacquiredcCsX|��}|�t|j�|��|��|��|��|��|��|�t|j�dS)N)r-rEr_�
_release_saver3r6)rr.rrr�test_release_save_unacquired&sz'RLockTests.test_release_save_unacquiredcsJ|����fdd�}t|dd�}z|�t�j�Wd|��X|��dS)Ncs���dS)N)r3r)r.rrr5sz+RLockTests.test_different_thread.<locals>.fr;T)r-r
rEr_r6r r)rrrAr)r.rr[2s
z RLockTests.test_different_threadcs�|���|��������|��������|�����g���fdd�}t|d���|��d����|��������|�����dS)Ncs������dS)N)r�	_is_ownedr)r.r:rrrFsz$RLockTests.test__is_owned.<locals>.fr;r)r-r<rcr3r8r
rr6)rrr)r.r:r�test__is_owned>szRLockTests.test__is_ownedN)	r!r"r#r$rZr`rbr[rdrrrrr^
s	r^c@s@eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)�
EventTestsz"
    Tests for Event objects.
    cCsr|��}|�|���|��|�|���|��|�|���|��|�|���|��|�|���dS)N)�	eventtyper<Zis_set�setr8�clear)r�evtrrr�test_is_setUszEventTests.test_is_setcs|d}g�g����fdd�}t||�}|��t�|�t��d����|��|��dg|�|��dg|�dS)Nr>cs ������������dS)N)r�waitr)ri�results1�results2rrrfsz#EventTests._check_notify.<locals>.frT)r
rr	r?rrgr)rrir@rrAr)rirlrmr�
_check_notifyas
zEventTests._check_notifycCs0|��}|�|�|��|��|�|�dS)N)rfrnrgrh)rrirrr�test_notifyrs

zEventTests.test_notifycs�|���g�g�d}���fdd�}t||���|��dg|�x&�D]\}}|�|�|�|d�qJWg�g����t||���|��dg|�x�D]\}}|�|�q�WdS)Nr>cs@����d��t��}��d�}t��}��|||f�dS)Ngg�?)rrkrrL)rM�rrN)rirlrmrrrs

z"EventTests.test_timeout.<locals>.fFg�?T)rfr
rr?r<r+rgr8)rr@rrp�dtr)rirlrmrrRzs"
zEventTests.test_timeoutcsn|���g�d�d}���fdd�}t||�}|��t���������|��|��dg|�dS)Ng�?r>cs�����d��dS)N�)rrkr)rirOrKrrr�sz(EventTests.test_set_and_clear.<locals>.fT)	rfr
rrrrgrhrr?)rr@rrAr)rirOrKr�test_set_and_clear�s

zEventTests.test_set_and_clearc	Cs\|��}|j�|�|j�d��WdQRX|��|j�|�|j�d��WdQRXdS)NF)rfZ_condr<r3Z_reset_internal_locks)rrirrr�test_reset_internal_locks�sz$EventTests.test_reset_internal_locksN)
r!r"r#r$rjrnrorRrsrtrrrrrePsrec@sPeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�ZdS)�ConditionTestsz(
    Tests for condition variables.
    c	Cs�|��}|��|��|��|��t��}|�|�}|��|�|�d��|��|�|�d��|�|�d��|��|�|�|�d��WdQRXdS)NF)�condtyper3r6rZLockr<r8)r�condr.rrr�test_acquire�s
zConditionTests.test_acquirecCs|��}|�t|j�dS)N)rvrEr_rk)rrwrrr�test_unacquired_wait�sz#ConditionTests.test_unacquired_waitcCs|��}|�t|j�dS)N)rvrEr_�notify)rrwrrr�test_unacquired_notify�sz%ConditionTests.test_unacquired_notifycs�d}g�g�g�d������fdd�}t||�}|��xt��dkrPt�q<W���|��g������d�t�d����xt��dkr�t�q�W|��dgd�|��g�xt��dkr�t�q�W�����d�t�d����x t��t��d	k�rt�q�W|��dgdd
gd�|��d
gd�xt��dk�rft��qNW�����	�t�d����xt��dk�r�t��q�W|��dgdd
gd�|��d
gddgd�|�
�dS)Nr>rcsd����������}�����|�f�����������}�����|�f�dS)N)r3rrkr6)r:)rw�	phase_num�readyrlrmrrr�s

z'ConditionTests._check_notify.<locals>.f�r;)Tr;rY�)TrY)Tr~)r
rrr	rhr?r3rzr6Z
notify_allr)rrwr@rrAr)rwr|r}rlrmrrn�sX






zConditionTests._check_notifycCs |��}|�|�|�|�dS)N)rvrn)rrwrrrros
zConditionTests.test_notifycsh|���g�d}��fdd�}t||���|�t��|�x&�D]\}}|�|d�|�|�qBWdS)Nr>cs@���t��}��d�}t��}�����|||f�dS)Ng�?)r3rrLrkr6r)rMr:rN)rwrOrrr"s
z&ConditionTests.test_timeout.<locals>.fg�?)rvr
rr?rr+r<)rr@rrqr:r)rwrOrrRszConditionTests.test_timeoutc
sv����d����fdd�}t|d�}|��x:td�D].}t�d����d7����WdQRXq8W|��dS)Nrc	s<��.���fdd��}��|����d�WdQRXdS)Ncs�dkS)Nrrrr)�staterr�<lambda>9�z8ConditionTests.test_waitfor.<locals>.f.<locals>.<lambda>rr)�wait_forr8r?)r:)rwrr�rrr7s
z&ConditionTests.test_waitfor.<locals>.fr;rrg{�G�z�?)rvr
rrrrrzr)rrrArr)rwrr�r�test_waitfor4s

zConditionTests.test_waitforc
s�����d�g�����fdd�}t|d�}|��x:td�D].}t�d����d7����WdQRXq>W|����t	��d�dS)Nrc	s^��Pt��}�j�fdd�dd�}t��|}��|���|d���d�WdQRXdS)Ncs�dkS)Nrrrr)r�rrr�Lr�z@ConditionTests.test_waitfor_timeout.<locals>.f.<locals>.<lambda>g�������?)rK)rrLr�r<r+r)rqr:)rwrr��successrrrIs
z.ConditionTests.test_waitfor_timeout.<locals>.fr;r~g{�G�z�?)
rvr
rrrrrzrr?r)rrrArr)rwrr�r�r�test_waitfor_timeoutEs

z#ConditionTests.test_waitfor_timeoutN)r!r"r#r$rxryr{rnrorRr�r�rrrrru�sJruc@sXeZdZdZdd�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|jtjd�dS)N���)�value)rErP�semtype�sys�maxsize)rrrrr/bsz#BaseSemaphoreTests.test_constructorcCsH|�d�}|��|��|�d�}|��|��|��|��dS)Nr;rY)r�r3r6)r�semrrrrxfs

zBaseSemaphoreTests.test_acquirecCs|��}|��~dS)N)r�r3)rr�rrrr5psz'BaseSemaphoreTests.test_acquire_destroycs�|�d�����d}g�g�g�d������fdd�}t|d�}|��xt��t��dkrjt�qNW|���dgd�d�xtd�D]}���q�Wxt��t��dkr�t�q�W|�t	���dgddgd�d	�xtd�D]}���q�Wx"t��t��d
k�r$t��qW|�t	���dgddgdd	gd�|�
��d�����|��|��dgd
�dS)N��
rcs4��������������������dS)N)rr3r)r|rlrmr��sem_resultsrrr}s
z4BaseSemaphoreTests.test_acquire_contended.<locals>.f�r;�
rY�FT�)r�r3r
rrr	r?rr6�sortedr<r)rr@rrArr)r|rlrmr�r�rrBus:



$.z)BaseSemaphoreTests.test_acquire_contendedcCsV|�d�}|�|�d��|�|�d��|�|�d��|��|�|�d��dS)NrYF)r�r8r3r<r6)rr�rrrr9�s
z#BaseSemaphoreTests.test_try_acquirecsV|�d�����g���fdd�}t|d���|�t��dgddgd�dS)	Nrrcs$����d������d��dS)NF)rr3r)rOr�rrr�sz8BaseSemaphoreTests.test_try_acquire_contended.<locals>.fr>Fr�Tr~)r�r3r
rr?r�)rrr)rOr�rr=�s
z-BaseSemaphoreTests.test_try_acquire_contendedcCs�|�d�}|jt|jddd�|�|jdd��|�|jdd��|�|jdd��|��|�|jdd��t��}|�|jdd��t��|}|�	|d�dS)NrYFg�?)rKg{�G�zt?g�?)
r�rErPr3r8r<r6rrLr+)rr��trqrrr�test_acquire_timeout�s
z'BaseSemaphoreTests.test_acquire_timeoutcsT|�������fdd�}t|d�}|��t�|�|j����|��dS)Ncs������dS)N)r3r6r)r�rrr�sz0BaseSemaphoreTests.test_default_value.<locals>.fr;)	r�r3r
rr	r<rr6r)rrrAr)r�r�test_default_value�s
z%BaseSemaphoreTests.test_default_valuecsb��d��d��fdd�	}|�����d�������t|t�����d�����dS)NrYc
sT��F����d�����������d��|r<|�WdQRXWdQRXdS)NF)r8r3r6r<)rC)rr�rrrD�sz+BaseSemaphoreTests.test_with.<locals>._withF)N)r�r8r3r6rErF)rrDr)rr�rrG�s
zBaseSemaphoreTests.test_withN)
r!r"r#r$r/rxr5rBr9r=r�r�rGrrrrr�]s
%

r�c@seZdZdZdd�ZdS)�SemaphoreTestsz)
    Tests for unbounded semaphores.
    cCs.|�d�}|��|��|��|��dS)Nr;)r�r6r3)rr�rrrr`�s

z&SemaphoreTests.test_release_unacquiredN)r!r"r#r$r`rrrrr��sr�c@seZdZdZdd�ZdS)�BoundedSemaphoreTestsz'
    Tests for bounded semaphores.
    cCs8|��}|�t|j�|��|��|�t|j�dS)N)r�rErPr6r3)rr�rrrr`�s
z-BoundedSemaphoreTests.test_release_unacquiredN)r!r"r#r$r`rrrrr��sr�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.
    r>g@cCs|j|j|jd�|_dS)N)rK)�barriertyper@�defaultTimeout�barrier)rrrrr'�szBarrierTests.setUpcCs|j��dS)N)r��abort)rrrrr(szBarrierTests.tearDowncCs"t||jd�}|�|��dS)Nr;)r
r@r)rrrArrr�run_threadsszBarrierTests.run_threadscCs�|jj}|�||j�xtt|�D]h}|d�d�|�t|d�||�|j��|d�d�|�t|d�|d|�|j��q W|�|jjd�|�	|jj
�dS)NrTr;)r�Zpartiesr?r@rrrrk�	n_waitingr<�broken)rrOr�mrrrr�	multipasss
zBarrierTests.multipassr;cs&ggg����fdd�}��|�dS)z;
        Test that a barrier is passed in lockstep
        cs�����dS)N)r�r)�passesrOrrrrsz$BarrierTests.test_barrier.<locals>.fN)r�)rr�rr)r�rOrr�test_barrierszBarrierTests.test_barriercCs
|�d�S)zC
        Test that a barrier works for 10 consecutive runs
        r�)r�)rrrr�test_barrier_10szBarrierTests.test_barrier_10cs:g���fdd�}��|���t��tt�j���dS)z9
        test the return value from barrier.wait
        cs�j��}��|�dS)N)r�rkr)rp)rOrrrr)s
z(BarrierTests.test_wait_return.<locals>.fN)r�r?�sumrr@)rrr)rOrr�test_wait_return$s
zBarrierTests.test_wait_returncs<g��fdd�}���j|�����fdd�}��|�dS)z,
        Test the 'action' callback
        cs��d�dS)NT)rr)rOrr�action5sz(BarrierTests.test_action.<locals>.actioncs�����t��d�dS)Nr;)rkr?rr)r�rOrrrr8sz#BarrierTests.test_action.<locals>.fN)r�r@r�)rr�rr)r�rOrr�test_action0s
zBarrierTests.test_actioncsZg�g����fdd�}��|���t��d���t���jd����jj�dS)zK
        Test that an abort will put the barrier in a broken state
        csvy4�j��}|�jdkrt��j����d�Wn<tjk
rT��d�Yntk
rp�j��YnXdS)NrYT)r�rkr@r_rr�BrokenBarrierErrorr�)r)rlrmrrrrDs


z"BarrierTests.test_abort.<locals>.frr;N)r�r?rr@r8r�r�)rrr)rlrmrr�
test_abort>s
zBarrierTests.test_abortcsdg�g�g�����fdd�}��|���t��d���t���jd���t���j�dS)zL
        Test that a 'reset' on a barrier frees the waiting threads
        cs��j��}|�jdkrFx �jj�jdkr8t�d�qW�j��n:y�j����d�Wn tj	k
r~��d�YnX�j����d�dS)NrYr;g����MbP?T)
r�rkr@r�rr�resetrrr�)r)rlrm�results3rrrr]s


z"BarrierTests.test_reset.<locals>.frr;N)r�r?rr@)rrr)rlrmr�rr�
test_resetVs
zBarrierTests.test_resetcsrg�g�g����j�������fdd�}��|���t��d���t���jd���t���j�dS)zF
        Test that a barrier can be reset after being broken.
        cs�y4�j��}|�jdkrt��j����d�Wn<tjk
rT��d�Yntk
rp�j��YnX����jdkr��j������j����d�dS)NrYT)	r�rkr@r_rrr�r�r�)r)�barrier2rlrmr�rrrr|s 




z,BarrierTests.test_abort_and_reset.<locals>.frr;N)r�r@r�r?r)rrr)r�rlrmr�rr�test_abort_and_resetts
z!BarrierTests.test_abort_and_resetcs�fdd�}��|�dS)z$
        Test wait(timeout)
        cs:�j��}|�jdkr"t�d���tj�jjd�dS)NrYg�?g�?)r�rkr@rrrErr�)r)rrrr�s


z$BarrierTests.test_timeout.<locals>.fN)r�)rrr)rrrR�szBarrierTests.test_timeoutcs,�j�jdd����fdd�}��|�dS)z4
        Test the barrier's default timeout
        g333333�?)rKcs4���}|�jdkr t�d���tj�j�dS)NrYg�?)rkr@rrrErr�)r)r�rrrr�s
z,BarrierTests.test_default_timeout.<locals>.fN)r�r@r�)rrr)r�rr�test_default_timeout�sz!BarrierTests.test_default_timeoutcCs|�d�}|��|��dS)Nr;)r�rk)rrArrr�test_single_thread�s
zBarrierTests.test_single_threadN)r;)r!r"r#r$r@r�r'r(r�r�r�r�r�r�r�r�r�rRr�r�rrrrr��s"
	"r�)r$r�r�_threadrrrZunittestrSZtestrr	�objectr
ZTestCaser%r,rWr^rerur�r�r�r�rrrr�<module>s*11C^0~