Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib/python3.5/site-packages/fasteners/tests/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib/python3.5/site-packages/fasteners/tests/__pycache__/test_lock.cpython-35.pyc



V�EV45�@s�ddlZddlZddlZddlZddlmZddlZddlmZddlmZdZ	dd�e
dd�D�Zd	Zd
d�Z
ddd
�Zdd�ZGdd�dej�ZdS)�N)�futures)�test)�_utilsg�������?cCsg|]}d|d�qS)g{�G�z�?gY@�)�.0�xrr�J/opt/alt/python35/lib/python3.5/site-packages/fasteners/tests/test_lock.py�
<listcomp>$s	r	�i,cCsCd}x6|D].\}}||kr
||kr
|d7}q
W|S)Nr�r)�times�start�endZoverlaps�s�errr�_find_overlaps+s
rc
sntj��tj����fdd�}��fdd�}|dkrjtd|�td|�}|dkrtjd|��u}d}x1td|�D] }|j||�|d7}q�Wx1td|�D] }|j||�|d7}q�WWdQRXg}g}	xUt	��D]G\}
}}|
�j
krM|j||f�q|	j||f�qW||	fS)Ncsq�j��^tj�}tjt|tt��tj�}�j�j||f�tjt	�WdQRXdS)N)
�	read_lockr�now�time�sleep�
WORK_TIMES�len�append�READER�
NAPPY_TIME)�ident�
enter_time�	exit_time)�lock�start_stopsrr�	read_func7s
z#_spawn_variation.<locals>.read_funccsq�j��^tj�}tjt|tt��tj�}�j�j||f�tjt	�WdQRXdS)N)
�
write_lockrrrrrrr�WRITERr)rrr)rrrr�
write_funcBs
z$_spawn_variation.<locals>.write_funcr�max_workersr)�collections�deque�	fasteners�ReaderWriterLock�maxr�ThreadPoolExecutor�range�submit�listr"r)
�readers�writersr$r r#r�countZ_i�writer_times�reader_timesZ	lock_typer
�stopr)rrr�_spawn_variation3s,r4cCstjd|�}d|_|S)N�targetT)�	threading�Thread�daemon)r5�trrr�_daemon_thread`s	r:c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$S)%�ReadWriteLockTest�cstj��tjdd���j�tj��tj�����fdd����fdd�}g}x=td|j�D])}t	|�}|j
|�|j�q�Wx |r�|j�}|j�q�W|j
gt���|j
gt���dS)N�durationr
cs}�j��jt��dkr9�j|��j���j|�ztjtj�d�Wd�j|�XWdQRXdS)Nr�d)r!rr�extendrr�random�remove)�me)�active�dupsrrr�
acquire_checkps



z?ReadWriteLockTest.test_no_double_writers.<locals>.acquire_checkcs-tj�}x�j�s(�|�qWdS)N)r6�current_thread�expired)rB)rE�watchrr�run{sz5ReadWriteLockTest.test_no_double_writers.<locals>.runr)r'r(r�	StopWatchr
r%r&r+�THREAD_COUNTr:r�pop�join�assertEqualr-)�selfrI�threads�ir9r)rErCrDrrHr�test_no_double_writersis"

	z(ReadWriteLockTest.test_no_double_writerscstj��tjdd���j�tj��tj�����fdd����fdd�}g}x=td|j�D])}t	|�}|j
|�|j�q�Wx |r�|j�}|j�q�W|j
gt���|j
gt���dS)Nr=r
cs�|r�j}n	�j}|��p|sWt��dkrW�j|��j���j|�ztjtj�d�Wd�j|�XWdQRXdS)Nrr>)	rr!rrr?rrr@rA)rB�readerZ	lock_func)rCrDrrrrE�s	



zKReadWriteLockTest.test_no_concurrent_readers_writers.<locals>.acquire_checkcs?tj�}x,�j�s:�|tjddg��qWdS)NTF)r6rFrGr@�choice)rB)rErHrrrI�szAReadWriteLockTest.test_no_concurrent_readers_writers.<locals>.runr)r'r(rrJr
r%r&r+rKr:rrLrMrNr-)rOrIrPrQr9r)rErCrDrrHr�"test_no_concurrent_readers_writers�s"

	z4ReadWriteLockTest.test_no_concurrent_readers_writerscsUtj���j�j���fdd�}�jt|��j�j�dS)Nc
s:�j��'�j�j�j�td��WdQRXdS)N�Broken)r!rNr"�owner�RuntimeErrorr)rrOrr�blow_up�s
z4ReadWriteLockTest.test_writer_abort.<locals>.blow_up)r'r(�assertFalserW�assertRaisesrX)rOrYr)rrOr�test_writer_abort�s
z#ReadWriteLockTest.test_writer_abortcsUtj���j�j���fdd�}�jt|��j�j�dS)Nc
s:�j��'�j�j�j�td��WdQRXdS)NrV)rrNrrWrXr)rrOrrrY�s
z4ReadWriteLockTest.test_reader_abort.<locals>.blow_up)r'r(rZrWr[rX)rOrYr)rrOr�test_reader_abort�s
z#ReadWriteLockTest.test_reader_abortcs�tj��tj���fdd�}��fdd�}tjdd��N}xDtdd�D]3}|ddkr�|j|�qd|j|�qdWWdQRX|jd	t	d
d��D���dS)Ncs8�j��%�j��td��WdQRXWdQRXdS)NrV)rrXr)rrr�double_bad_reader�s

zEReadWriteLockTest.test_double_reader_abort.<locals>.double_bad_readerc	s(�j���j�j�WdQRXdS)N)r!rrWr)�	activatedrrr�happy_writer�s
z@ReadWriteLockTest.test_double_reader_abort.<locals>.happy_writerr$r<r��
cSs"g|]}|dkr|�qS)�wr)r�arrrr	�s	z>ReadWriteLockTest.test_double_reader_abort.<locals>.<listcomp>)
r'r(r%r&rr*r+r,rNr)rOr^r`rrQr)r_rr�test_double_reader_abort�sz*ReadWriteLockTest.test_double_reader_abortcs�tj��tj��tj�����fdd�}��fdd�}t|�}|j��jt	�|j
�j��t|�}|j�|j�|j�|j
dt���|j
ddgt���dS)Ncsc�j��P�j�x�js3tjd�qW�j���j�j�WdQRXWdQRXdS)Ng����MbP?)r�setZhas_pending_writersrrrrWr)r_rCrrr�
double_reader�s


zBReadWriteLockTest.test_double_reader_writer.<locals>.double_readerc	s(�j���j�j�WdQRXdS)N)r!rrWr)r_rrrr`�s
zAReadWriteLockTest.test_double_reader_writer.<locals>.happy_writerra�rrc)r'r(r%r&r6�Eventr:r
�wait�WAIT_TIMEOUT�
assertTrue�is_setrMrNrr-)rOrgr`rS�writerr)r_rCrr�test_double_reader_writer�s




z+ReadWriteLockTest.test_double_reader_writercstj��tj����fdd�}��fdd�}tjdd��d}xZtdd�D]I}|ddkr�|j|d	t|d
dk��qg|j|�qgWWdQRXdd��D�}d
d��D�}|j	dt
|��|j	dt
|��dS)Nc	s=�j��*|r"td��n�j�j�WdQRXdS)NrV)rrXrrW)rY)r_rrr�chaotic_readers
z=ReadWriteLockTest.test_reader_chaotic.<locals>.chaotic_readerc	s(�j���j�j�WdQRXdS)N)r!rrWr)r_rrrr`s
z;ReadWriteLockTest.test_reader_chaotic.<locals>.happy_writerr$r<rrarY�cSs"g|]}|dkr|�qS)rcr)rrdrrrr	s	z9ReadWriteLockTest.test_reader_chaotic.<locals>.<listcomp>cSs"g|]}|dkr|�qS)rhr)rrdrrrr	s	rbr
)r'r(r%r&rr*r+r,�boolrNr)rOrpr`rrQr/r.r)r_rr�test_reader_chaotics&z%ReadWriteLockTest.test_reader_chaoticcstj��tj����fdd�}��fdd�}tjdd��d}xZtdd�D]I}|ddkr�|j|d	t|d
dk��qg|j|�qgWWdQRXdd��D�}d
d��D�}|j	dt
|��|j	dt
|��dS)Nc	s=�j��*|r"td��n�j�j�WdQRXdS)NrV)r!rXrrW)rY)r_rrr�chaotic_writer"s
z=ReadWriteLockTest.test_writer_chaotic.<locals>.chaotic_writerc	s(�j���j�j�WdQRXdS)N)rrrWr)r_rrr�happy_reader)s
z;ReadWriteLockTest.test_writer_chaotic.<locals>.happy_readerr$r<rrarYrqcSs"g|]}|dkr|�qS)rcr)rrdrrrr	4s	z9ReadWriteLockTest.test_writer_chaotic.<locals>.<listcomp>cSs"g|]}|dkr|�qS)rhr)rrdrrrr	5s	r
rb)r'r(r%r&rr*r+r,rrrNr)rOrtrurrQr/r.r)r_rr�test_writer_chaotics&z%ReadWriteLockTest.test_writer_chaoticcCs�tj�}|j��f|j|j��|j��?|j|j��|j��|j|j��WdQRXWdQRXWdQRXdS)N)r'r(r!rl�	is_writerr�	is_reader)rOrrrr�test_writer_reader_writer9s


z+ReadWriteLockTest.test_writer_reader_writercCs�g}tj�}|j��.|j|j��|jdt|��WdQRX|j��%|jd�|j|j	��WdQRX|j��.|j|j��|jdt|��WdQRX|j
|j��|j
|j	��dS)Nrr)r'r(rrlrxrNrr!rrwrZ)rO�resultsrrrr�test_single_reader_writerBs



z+ReadWriteLockTest.test_single_reader_writerc
stj���fdd�}�j��(|jt|�|j�j��WdQRX|j�j��|j�j��dS)Nc	s�j��WdQRXdS)N)r!r)rrr�writer_funcTs
z<ReadWriteLockTest.test_reader_to_writer.<locals>.writer_func)r'r(rr[rXrZrwrx)rOr|r)rr�test_reader_to_writerQs
z'ReadWriteLockTest.test_reader_to_writerc	s�tj����fdd�}�j��(�j|���j�j��WdQRX�j�j���j�j��dS)Nc	s>�j��+�j�j���j�j��WdQRXdS)N)rrlrwrxr)rrOrr�reader_funcbs
z<ReadWriteLockTest.test_writer_to_reader.<locals>.reader_func)r'r(r!ZassertIsNonerZrxrw)rOr~r)rrOr�test_writer_to_reader_s
z'ReadWriteLockTest.test_writer_to_readercCs�tj�}|j��e|j|j��|j|j��|j��|j|j��WdQRX|j|j��WdQRX|j|j��|j|j��dS)N)r'r(r!rZrxrlrw)rOrrrr�test_double_writerns

z$ReadWriteLockTest.test_double_writercCs�tj�}|j��e|j|j��|j|j��|j��|j|j��WdQRX|j|j��WdQRX|j|j��|j|j��dS)N)r'r(rrlrxrZrw)rOrrrr�test_double_readerzs

z$ReadWriteLockTest.test_double_readercCs�tdd�\}}|jdt|��|jdt|��xL|D]D\}}|jdt|||��|jdt|||��qHWx0|D](\}}|jdt|||��q�WdS)Nrbrr)r4rNrr)rOr1r2r
r3rrr�test_multi_reader_multi_writer�s z0ReadWriteLockTest.test_multi_reader_multi_writercCsqtdd�\}}|jdt|��|jdt|��|d\}}|jdt|||��dS)N�	rr)r4rNrr)rOr1r2r
r3rrr�test_multi_reader_single_writer�s
z1ReadWriteLockTest.test_multi_reader_single_writercCsxtdd�\}}|jdt|��|jdt|��x0|D](\}}|jdt|||��qHWdS)Nrrbr)r4rNrr)rOr1r2r
r3rrr�test_multi_writer�s
z#ReadWriteLockTest.test_multi_writerN)�__name__�
__module__�__qualname__rKrRrUr\r]rerorsrvryr{r}rr�r�r�r�r�rrrrr;fs$#+	
r;)r%r@r6rZ
concurrentrr'rrrr+rrkrr4r:ZTestCaser;rrrr�<module>s-