Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.11/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.11/test/__pycache__/lock_tests.cpython-311.opt-1.pyc

�

SԚg�����dZddlZddlZddlZddlZddlmZmZddlZddl	Z	ddl
Z
ddlmZddl
mZe	jejd��Zd�ZGd�d	e��ZGd
�de	j��ZGd�d
e��ZGd�de��ZGd�de��ZGd�de��ZGd�de��ZGd�de��ZGd�de��ZGd�de��ZGd�de��ZdS)z/
Various tests for synchronization primitives.
�N)�start_new_thread�TIMEOUT_MAX)�support)�threading_helperz9platform doesn't support fork (no _at_fork_reinit method)c�4�tjd|z��dS)N�{�G�z�?)�time�sleep)�nthreads �,/usr/local/lib/python3.11/test/lock_tests.py�wait_threads_blockedr
s��	�J�u�w�������c�2�eZdZdZd	d�Zd�Zd�Zd�Zd�ZdS)
�Bunchz
    A bunch of threads.
    Fc�j�||_||_g|_g|_g|_||_d|_dS)z�
        Construct a bunch of `nthread` threads running the same function `func`.
        If `wait_before_exit` is True, the threads won't terminate until
        do_finish() is called.
        N)�funcr�started�finished�
exceptions�	_can_exit�_wait_thread)�selfrr�wait_before_exits    r�__init__zBunch.__init__!s?����	���������
����-�-��� ����rc�
�tj��}|j�|��	|���n1#t
$r$}|j�|��Yd}~nd}~wwxYw|j�|��tj	tj
��D]}|jrdS�
dS#|j�|��tj	tj
��D]}|jrw�wxYw�N)�	threading�	get_identr�appendr�
BaseExceptionrrr�sleeping_retry�
SHORT_TIMEOUTr)r�tid�exc�_s    r�taskz
Bunch.task/s%���!�#�#������C� � � �	��I�I�K�K�K�K���	(�	(�	(��O�"�"�3�'�'�'�'�'�'�'�'�����	(����
�M� � ��%�%�%��+�G�,A�B�B�
�
���>���E�E��
�
��
�M� � ��%�%�%��+�G�,A�B�B�
�
���>���E��
���s0�A�B<�
A2�A-�(B<�-A2�2B<�<ADc�t�tjtj��|_|j���	t
|j��D]}t|j	d���n
#d|_
�xYwtjtj��D]!}t|j
��|jkrn�"|S)N�T)r�wait_threads_exitrr"r�	__enter__�rangerrr&rr!�lenr)rr%s  rr*zBunch.__enter__<s���,�>�w�?T�U�U�����#�#�%�%�%�	��4�<�(�(�
0�
0�� ���B�/�/�/�/�
0��	�!�D�N������'��(=�>�>�	�	�A��4�<� � �D�L�0�0���1��s�,A+�+
A5c��tjtj��D]!}t|j��|jkrn�"|j�ddd��|j}d|_|rt|j
�d�|���dS)Nz threads raised exceptions)rr!r"r,rrr�__exit__r�ExceptionGroupr)r�exc_type�	exc_value�	tracebackr%rs      rr.zBunch.__exit__Ms����'��(=�>�>�	�	�A��4�=�!�!�T�\�1�1���2�	
��"�"�4��t�4�4�4��_�
�����	-� �D�I�!I�!I�!I�!+�-�-�
-�	-�	-rc��d|_dS�NT)r�rs r�	do_finishzBunch.do_finish\s
������rN)F)	�__name__�
__module__�__qualname__�__doc__rr&r*r.r6r(rrrrsn��������!�!�!�!�������"
-�
-�
-�����rrc� �eZdZd�Zd�Zd�ZdS)�BaseTestCasec�6�tj��|_dSr)r�threading_setup�_threadsr5s r�setUpzBaseTestCase.setUpas��(�8�:�:��
�
�
rc�R�tj|j�tj��dSr)r�threading_cleanupr?r�
reap_childrenr5s r�tearDownzBaseTestCase.tearDownds'���*�D�M�:�:�������rc�j�|�||dz��|�||dz��dS)Ng333333�?g$@)�assertGreaterEqual�
assertLess)r�actual�expecteds   r�
assertTimeoutzBaseTestCase.assertTimeouths<��	
�����3��7�7�7������4��0�0�0�0�0rN)r7r8r9r@rDrJr(rrr<r<`sA������;�;�;� � � �1�1�1�1�1rr<c�f�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�ZdS)�
BaseLockTestsz;
    Tests for both recursive and non-recursive locks.
    c��tjtj��D]}t|��|krn�|�t|��|��dSr)rr!r"r,�assertEqual)r�phaserIr%s    r�
wait_phasezBaseLockTests.wait_phasevs\���'��(=�>�>�	�	�A��5�z�z�X�%�%���&�����U���X�.�.�.�.�.rc�0�|���}~dSr)�locktype�r�locks  r�test_constructorzBaseLockTests.test_constructor|s���}�}�����D�Drc�v�|���}|�t|��d��~dS)Nz<unlocked .* object (.*)?at .*>)rR�assertRegex�reprrSs  r�	test_reprzBaseLockTests.test_repr�s3���}�}��������d���%F�G�G�G��D�Drc��|���}|���|�t|��d��~dS)Nz<locked .* object (.*)?at .*>)rR�acquirerWrXrSs  r�test_locked_reprzBaseLockTests.test_locked_repr�s@���}�}��������������d���%D�E�E�E��D�Drc�X�|���}|���~dSr)rRr[rSs  r�test_acquire_destroyz"BaseLockTests.test_acquire_destroy�s#���}�}�����������D�Drc��|���}|���|���~dSr�rRr[�releaserSs  r�test_acquire_releasez"BaseLockTests.test_acquire_release�s0���}�}�����������������D�Drc��|���}|�|�d����|���dS�NF)rR�
assertTruer[rarSs  r�test_try_acquirezBaseLockTests.test_try_acquire�s>���}�}����������U�+�+�,�,�,��������rc����|��������g���fd�}t|d��5	ddd��n#1swxYwY|��d������dS)Nc�X������d����dSrd�rr[�rT�results��r�fz3BaseLockTests.test_try_acquire_contended.<locals>.f�s'����M�M�$�,�,�u�-�-�.�.�.�.�.r�r)rRr[r�assertFalsera�rrlrTrks  @@r�test_try_acquire_contendedz(BaseLockTests.test_try_acquire_contended�s������}�}������������	/�	/�	/�	/�	/�	/�
�1�a�[�[�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�������#�#�#��������s�A�A�Ac���|���������fd�}d}t||��5}t|��|�t|j��d������ddd��n#1swxYwY|�t|j��|��dS)Nc�X����������dSr�r[ra�rTs�rrlz/BaseLockTests.test_acquire_contended.<locals>.f��!����L�L�N�N�N��L�L�N�N�N�N�Nr�r)rRr[rr
rNr,rra)rrl�N�bunchrTs    @r�test_acquire_contendedz$BaseLockTests.test_acquire_contended�s����}�}����������	�	�	�	�	�
��
�1�a�[�[�	�E� ��#�#�#����S���0�0�!�4�4�4�
�L�L�N�N�N�
	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
����U�^�,�,�a�0�0�0�0�0s�AB�B� Bc���|�����fd�}d�fd�	}�5	ddd��n#1swxYwYt|d��5	ddd��n#1swxYwY|�t��5�5t�#1swxYwY	ddd��n#1swxYwYt|d��5	ddd��dS#1swxYwYdS)Nc�X����������dSrrsrts�rrlz"BaseLockTests.test_with.<locals>.f�rurc�H���5|�|�	ddd��dS#1swxYwYdSrr()�errrTs �r�	with_lockz*BaseLockTests.test_with.<locals>.with_lock�s|����
�
��?��I�#�
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
�
�
s���rmr)rRr�assertRaises�	TypeError)rrlr~rTs   @r�	test_withzBaseLockTests.test_with�s3����}�}����	�	�	�	�	�	�	�	�	�	�	��	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��1�a�[�[�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��
�
�y�
)�
)�	 �	 ��
 �
 ���
 �
 �
 �
 ����
 �
 �
 �
 �
 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 ��1�a�[�[�	�	��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s`�1�5�5�A�A�!A�?B"�B
�
B	�B"�B	�B"�"B&�)B&�=C�C�Cc���|�����fd�}t|d��5	ddd��dS#1swxYwYdS)Nc�X����������dSrrsrts�rrlz)BaseLockTests.test_thread_leak.<locals>.f�rur�)rRr�rrlrTs  @r�test_thread_leakzBaseLockTests.test_thread_leak�s�����}�}����	�	�	�	�	��1�b�\�\�	�	��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s
�:�>�>c�P���|����|�t�jdd��|�t�jd���|�t�jd���|�t�jt
dz�����t
�������tj��}|�	��d�����tj��}|�
||z
d��g���fd�}t|d��5	ddd��n#1swxYwY|��d��|�
�dd	��dS)
NFrmi������timeoutg}Ô%�I�Trvc����tj��}����d�����tj��}��||z
��dS)N��?r�)r	�	monotonicrr[)�t1�t2rT�resultss  ��rrlz%BaseLockTests.test_timeout.<locals>.f�sY�����!�!�B��N�N�4�<�<��<�4�4�5�5�5���!�!�B��N�N�2��7�#�#�#�#�#rrr�)rRr�
ValueErrorr[�
OverflowErrorrrar	r�rerGrrnrJ)rr�r�rlrTr�s    @@r�test_timeoutzBaseLockTests.test_timeout�s������}�}�������*�d�l�E�1�=�=�=����*�d�l�D��A�A�A����-���u��E�E�E����-���{�Q���O�O�O����[��)�)�)�������
�^�
�
��������Q��/�/�0�0�0�
�^�
�
������R���#�#�#���	$�	$�	$�	$�	$�	$�
�1�a�[�[�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�������$�$�$����7�1�:�s�+�+�+�+�+s�E$�$E(�+E(c��|���}tj|��}|�|����dSr)rR�weakref�ref�assertIsNotNone�rrTr�s   r�test_weakref_existsz!BaseLockTests.test_weakref_exists�s>���}�}�����k�$�������S�S�U�U�#�#�#�#�#rc��|���}tj|��}~tj��|�|����dSr)rRr�r��gc�collect�assertIsNoner�s   r�test_weakref_deletedz"BaseLockTests.test_weakref_deletedsL���}�}�����k�$�����
�
�������#�#�%�%� � � � � rN)r7r8r9r:rPrUrYr\r^rbrfrpryr�r�r�r�r�r(rrrLrLqs���������/�/�/�������
������
������
	�	�	�1�1�1�$���:���,�,�,�6$�$�$�
!�!�!�!�!rrLc�:�eZdZdZd�Zd�Zd�Zed���ZdS)�	LockTestszn
    Tests for non-recursive, weak locks
    (which can be acquired and released from different threads).
    c�:���|����g���fd�}tj��5t|d��|��d������|��d��ddd��dS#1swxYwYdS)Nc���������d��������d��dSr�r[r)rTrOs��rrlz#LockTests.test_reacquire.<locals>.fsG����L�L�N�N�N��L�L������L�L�N�N�N��L�L������rr(rm�)rRrr)rrPra�rrlrTrOs  @@r�test_reacquirezLockTests.test_reacquires������}�}������	�	�	�	�	�	��
/�
1�
1�	&�	&��Q��#�#�#��O�O�E�1�%�%�%�
�L�L�N�N�N��O�O�E�1�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&s�AB�B�Bc���|���������fd�}t|d��5	ddd��n#1swxYwY��������dS)Nc�0������dSr)rarts�rrlz*LockTests.test_different_thread.<locals>.f'�����L�L�N�N�N�N�Nrrm)rRr[rrar�s  @r�test_different_threadzLockTests.test_different_thread#s�����}�}����������	�	�	�	�	�
�1�a�[�[�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��������������s�A
�
A�Ac�p�|���}|���|�|�d�����|���|�|�����|�|�d�����dS)Nrr�F)�blocking)rRr[rnra�lockedrerSs  r�test_state_after_timeoutz"LockTests.test_state_after_timeout.s����}�}����������������d��3�3�4�4�4���������������'�'�'�������e��4�4�5�5�5�5�5rc��d�}|���}|���||��|���}|���|���||��dS)Nc�V�|���|���dSrrsrts r�use_lockz/LockTests.test_at_fork_reinit.<locals>.use_lock:s"��
�L�L�N�N�N��L�L�N�N�N�N�Nr)rR�_at_fork_reinitr[)rr�rT�lock2s    r�test_at_fork_reinitzLockTests.test_at_fork_reinit8s~��	�	�	��}�}�����������������
�
����
�
�
����
�������������rN)	r7r8r9r:r�r�r��
requires_forkr�r(rrr�r�
sf��������&�&�&�(	�	�	�6�6�6�����]���rr�c�6�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�
RLockTestsz$
    Tests for recursive locks.
    c��|���}|���|���|���|���|���|���dSrr`rSs  rr�zRLockTests.test_reacquirePsa���}�}�����������������������������������������rc��|���}|�t|j��|���|���|���|���|���|���|�t|j��dSr)rRr�RuntimeErrorrar[rSs  r�test_release_unacquiredz"RLockTests.test_release_unacquiredYs����}�}�������,���5�5�5����������������������������������������,���5�5�5�5�5rc��|���}|�t|j��|���|���|���|���|���|���|�t|j��dSr)rRrr��
_release_saver[rarSs  r�test_release_save_unacquiredz'RLockTests.test_release_save_unacquiredes����}�}�������,��(:�;�;�;����������������������������������������,��(:�;�;�;�;�;rc�`�����������d������������d����������������d������������d����������������d������g����fd�}tj��5t|d�����d����d��������	d�����d����d������ddd��dS#1swxYwYdS)Nrrm�r�c����������d�����d��������d��dS)Nr�)r[rrPra)rTrOrs���rrlz*RLockTests.test_recursion_count.<locals>.f�s[����L�L�N�N�N��L�L������O�O�E�1�%�%�%��L�L�N�N�N��L�L������rr()
rRrN�_recursion_countr[rarr)rrPrr�s` @@r�test_recursion_countzRLockTests.test_recursion_countqs7������}�}��������D�1�1�3�3�4�4�4�����������D�1�1�3�3�4�4�4�����������������D�1�1�3�3�4�4�4�����������D�1�1�3�3�4�4�4�����������������D�1�1�3�3�4�4�4���	�	�	�	�	�	�	��
/�
1�
1�		9�		9��Q��#�#�#��O�O�E�1�%�%�%����Q�� 5� 5� 7� 7�8�8�8�
�L�L������O�O�E�1�%�%�%����Q�� 5� 5� 7� 7�8�8�8�		9�		9�		9�		9�		9�		9�		9�		9�		9�		9�		9�		9����		9�		9�		9�		9�		9�		9s�4B"H#�#H'�*H'c�.��|�����fd�}t|dd��5}	|�t�j��|���n#|���wxYw	ddd��dS#1swxYwYdS)Nc�0������dSr)r[rts�rrlz+RLockTests.test_different_thread.<locals>.f�r�rrmT)rRrrr�rar6)rrlrxrTs   @rr�z RLockTests.test_different_thread�s�����}�}����	�	�	�	�	��1�a��
�
�	"�%�
"��!�!�,���=�=�=����!�!�!�!�����!�!�!�!����!�		"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�	"�	"s(�B
� A#�B
�#A9�9B
�
B�Bc�����|����|�����������|�����������|�������g���fd�}t|d��5	ddd��n#1swxYwY|��d������|�����������|�������dS)Nc�V����������dSr)r�	_is_ownedrjs��rrlz$RLockTests.test__is_owned.<locals>.f�s%����M�M�$�.�.�*�*�+�+�+�+�+rrmr)rRrnr�r[rerraros  @@r�test__is_ownedzRLockTests.test__is_owned�s|�����}�}����������)�)�*�*�*�������������(�(�)�)�)�������������(�(�)�)�)���	,�	,�	,�	,�	,�	,�
�1�a�[�[�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�������#�#�#�������������(�(�)�)�)�������������)�)�*�*�*�*�*s�C�C�!CN)
r7r8r9r:r�r�r�r�r�r�r(rrr�r�Lsy�����������
6�
6�
6�
<�
<�
<�!9�!9�!9�F
"�
"�
"�+�+�+�+�+rr�c�L�eZdZdZd�Zd�Zd�Zd�Zd�Ze	d���Z
d�Zd	S)
�
EventTestsz"
    Tests for Event objects.
    c�T�|���}|�|�����|���|�|�����|���|�|�����|���|�|�����|���|�|�����dSr)�	eventtypern�is_set�setre�clear�r�evts  r�test_is_setzEventTests.test_is_set�s����n�n������������&�&�&����	�	�	�����
�
���%�%�%����	�	�	�����
�
���%�%�%��	�	������������&�&�&��	�	������������&�&�&�&�&rc�j����d}g�g����fd�}t||��5t|��|�t���d������ddd��n#1swxYwY|��dg|z��|��dg|z��dS)Nrvc�������������������dSr)r�wait)r��results1�results2s���rrlz#EventTests._check_notify.<locals>.f�s=����O�O�C�H�H�J�J�'�'�'��O�O�C�H�H�J�J�'�'�'�'�'rrT)rr
rNr,r�)rr�rwrlr�r�s `  @@r�
_check_notifyzEventTests._check_notify�s�����
������	(�	(�	(�	(�	(�	(�	(��1�a�[�[�	�	� ��#�#�#����S��]�]�A�.�.�.�
�G�G�I�I�I�
	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
����D�6�A�:�.�.�.�����D�6�A�:�.�.�.�.�.s�AA4�4A8�;A8c���|���}|�|��|���|���|�|��dSr)r�r�r�r�r�s  r�test_notifyzEventTests.test_notify�sY���n�n�������3�������	�	�	��	�	�������3�����rc�*����|����g�g�d}���fd�}t||��5	ddd��n#1swxYwY|��dg|z���D]0\}}|�|��|�|d���1g�g�����t||��5	ddd��n#1swxYwY|��dg|z���D]\}}|�|���dS)Nrvc�������d����tj��}��d��}tj��}��|||z
f��dS)Ngr�)rr�r	r�)r��rr�r�r�r�s   ���rrlz"EventTests.test_timeout.<locals>.f�sh����O�O�C�H�H�S�M�M�*�*�*���!�!�B�����
�
�A���!�!�B��O�O�Q��R��L�)�)�)�)�)rFr�T)r�rrNrnrJr�re)rrwrlr��dtr�r�r�s     @@@rr�zEventTests.test_timeout�s�������n�n��������
��	*�	*�	*�	*�	*�	*�	*��1�a�[�[�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
����E�7�Q�;�/�/�/��	(�	(�E�A�r����Q�������r�3�'�'�'�'��������	�	�	�
�1�a�[�[�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
����D�6�A�:�.�.�.��	�	�E�A�r��O�O�A�����	�	s#�A�A�
A�C�C�Cc�8���|����g���fd�}d}t||��5t|����������ddd��n#1swxYwY|��dg|z��dS)Nc�l������tj����dSr)rr�r�LONG_TIMEOUT)�eventr�s��rrlz(EventTests.test_set_and_clear.<locals>.fs*����N�N�5�:�:�g�&:�;�;�<�<�<�<�<rrvT)r�rr
r�r�rN)rrlrwr�r�s   @@r�test_set_and_clearzEventTests.test_set_and_clear�s�������� � ����	=�	=�	=�	=�	=�	=�
��
�1�a�[�[�	�	� ��#�#�#�
�I�I�K�K�K��K�K�M�M�M�
	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
����4�&�1�*�-�-�-�-�-s�8A5�5A9�<A9c��|���}|j5|�|j�d����ddd��n#1swxYwY|���|j5|�|j�d����ddd��dS#1swxYwYdSrd)r��_condrnr[r�r�s  rr�zEventTests.test_at_fork_reinits6���n�n����
�Y�	7�	7����S�Y�.�.�u�5�5�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�������
�Y�	7�	7����S�Y�.�.�u�5�5�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s#�.A�A�A�<.B7�7B;�>B;c���|���}|�t|��d��|���|�t|��d��dS)Nz<\w+\.Event at .*: unset>z<\w+\.Event at .*: set>)r�rWrXr�r�s  rrYzEventTests.test_reprs^���n�n��������c���$@�A�A�A����	�	�	�����c���$>�?�?�?�?�?rN)r7r8r9r:r�r�r�r�r�r�r�rYr(rrr�r��s���������
'�
'�
'�/�/�/�( � � ����>.�.�.�&�7�7��]�7�@�@�@�@�@rr�c�B�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
S)�ConditionTestsz(
    Tests for condition variables.
    c��|���}|���|���|���|���tj��}|�|��}|���|�|�d����|���|�|�d����|�|�d����|���|5|�|�d����ddd��dS#1swxYwYdSrd)�condtyper[rar�Lockrnre)r�condrTs   r�test_acquirezConditionTests.test_acquire(sr���}�}����	
�������������������������~�����}�}�T�"�"��������������e�,�,�-�-�-�������������U�+�+�,�,�,�������e�,�,�-�-�-�������
�	2�	2����T�\�\�%�0�0�1�1�1�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2�	2����	2�	2�	2�	2�	2�	2s�)E9�9E=�E=c�n�|���}|�t|j��dSr)r�rr�r��rr�s  r�test_unacquired_waitz#ConditionTests.test_unacquired_wait;s-���}�}�������,��	�2�2�2�2�2rc�n�|���}|�t|j��dSr)r�rr��notifyr�s  r�test_unacquired_notifyz%ConditionTests.test_unacquired_notify?s-���}�}�������,���4�4�4�4�4rc������	�
�g�g�	g�
d�����	�
fd�}d}t||��5tjtj��D]}t	���|krn�����|��	g��d}������|��t|��d���
��tjtj��D]}t	�	��|krn�|��	dg|z��|��
g��tjtj��D]}t	���|krn�������d��t|��d���
��tjtj��D]*}t	�	��t	�
��z||zkrn�+||z
}|��	dg|zdg|zz��|��
dg|z��tjtj��D]}t	���|krn���������t|��d���
��tjtj��D]}t	�
��|krn�|��	dg|zdg|zz��|��
dg|zd	g|zz��ddd��dS#1swxYwYdS)
Nrc����������������}������|�f���������������}������|�f��dSr)r[rr�ra)rkr��	phase_num�readyr�r�s �����rrlz'ConditionTests._check_notify.<locals>.fSs�����L�L�N�N�N��L�L��#�#�#��Y�Y�[�[�F��L�L�N�N�N��O�O�V�Y�/�0�0�0��L�L�N�N�N��L�L��#�#�#��Y�Y�[�[�F��L�L�N�N�N��O�O�V�Y�/�0�0�0�0�0rrvr�rm)Trmr�)Tr�)Tr�)rrr!r"r,r�rNr[r�r
ra�
notify_all)rr�rlrwr%�count1�count2r�r�r�r�s `     @@@@rr�zConditionTests._check_notifyCs��������������	�
	1�
	1�
	1�
	1�
	1�
	1�
	1�
	1�
	1�
��
�1�a�[�[�@	T�@	T��+�G�,A�B�B�
�
���u�:�:��?�?��E�#�
�K�K�M�M�M����X�r�*�*�*��F��L�L�N�N�N��K�K����� ��(�(�(��I��L�L�N�N�N��+�G�,A�B�B�
�
���x�=�=�F�*�*��E�+�
���X�	�{�V�';�<�<�<����X�r�*�*�*��+�G�,A�B�B�
�
���u�:�:��'�'��E�(�
�L�L�N�N�N��K�K��N�N�N� ��#�#�#��I��L�L�N�N�N��+�G�,A�B�B�
�
���x�=�=�3�x�=�=�0�Q��Z�@�@��E�A���Z�F����X�	�{�V�';�y�k�F�>R�'R�S�S�S����X�	�{�V�';�<�<�<��+�G�,A�B�B�
�
���u�:�:��?�?��E�#�
�L�L�N�N�N��O�O���� ��#�#�#��I��L�L�N�N�N��+�G�,A�B�B�
�
���x�=�=�A�%�%��E�&����X�	�{�V�';�y�k�F�>R�'R�S�S�S����X�	�{�V�';�y�k�F�>R�'R�S�S�S�A@	T�@	T�@	T�@	T�@	T�@	T�@	T�@	T�@	T�@	T�@	T�@	T����@	T�@	T�@	T�@	T�@	T�@	Ts�LM�M�Mc��|���}|�|��|�|��dSr)r�r�r�s  rr�zConditionTests.test_notify�s=���}�}�������4� � � ����4� � � � � rc�L����|����d�g����fd�}d}t||��5	ddd��n#1swxYwY|�t���|���D]0\}}|�|���|�|���1dS)Nr�c�������tj��}�����}tj��}������||z
|f��dSr)r[r	r�r�rar)r�rkr�r�r�r�s   ���rrlz&ConditionTests.test_timeout.<locals>.f�si����L�L�N�N�N���!�!�B��Y�Y�w�'�'�F���!�!�B��L�L�N�N�N��N�N�B��G�V�,�-�-�-�-�-rrv)r�rrNr,rJrn)rrlrwr�rkr�r�r�s     @@@rr�zConditionTests.test_timeout�s������}�}��������	.�	.�	.�	.�	.�	.�	.�
��
�1�a�[�[�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�����W���q�)�)�)�!�	%�	%�J�B�����r�7�+�+�+�
���V�$�$�$�$�	%�	%s�A�A�
Ac�L���������d����fd�}t|d��5td��D]I}tjd���5�dz
�����ddd��n#1swxYwY�J	ddd��dS#1swxYwYdS)Nrc�����5���fd���}��|�����d��ddd��dS#1swxYwYdS)Nc����dkS�N�r(��states�r�<lambda>z8ConditionTests.test_waitfor.<locals>.f.<locals>.<lambda>�s���u��z�rr)�wait_forrerN)rkr�rrs ���rrlz&ConditionTests.test_waitfor.<locals>.f�s�����
+�
+����'9�'9�'9�'9�:�:������'�'�'�� � ���*�*�*�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+�
+����
+�
+�
+�
+�
+�
+s�AA�A�Armrr)r�rr+r	r
r�)rrl�ir�rs`  @@r�test_waitforzConditionTests.test_waitfor�sJ������}�}������	+�	+�	+�	+�	+�	+�	+��1�a�[�[�	"�	"��1�X�X�
"�
"���
�5�!�!�!��"�"��Q�J�E��K�K�M�M�M�"�"�"�"�"�"�"�"�"�"�"����"�"�"�"��
"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�	"�	"s5�(B�A?�3B�?B�B�B�B�B� Bc�����������d�g�����fd�}t|d��5td��D]I}tjd���5�dz
�����ddd��n#1swxYwY�J	ddd��n#1swxYwY��t���d��dS)Nrc�D���5tj��}���fd�d���}tj��|z
}��|����|d����d��ddd��dS#1swxYwYdS)Nc����dkSrr(rs�rrz@ConditionTests.test_waitfor_timeout.<locals>.f.<locals>.<lambda>�s����q��r皙�����?r�)r	r�rrnrJr)r�rkr�rr�successs  ����rrlz.ConditionTests.test_waitfor_timeout.<locals>.f�s�����
%�
%��^�%�%�����'8�'8�'8�'8�#��F�F���^�%�%��*��� � ��(�(�(��"�"�2�s�+�+�+����t�$�$�$�

%�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%�
%����
%�
%�
%�
%�
%�
%s�BB�B�Brmr�r)r�rr+r	r
r�rNr,)rrlrr�rr
s`  @@@r�test_waitfor_timeoutz#ConditionTests.test_waitfor_timeout�sj�������}�}��������	%�	%�	%�	%�	%�	%�	%�	%��1�a�[�[�	"�	"��1�X�X�
"�
"���
�5�!�!�!��"�"��Q�J�E��K�K�M�M�M�"�"�"�"�"�"�"�"�"�"�"����"�"�"�"��
"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�	
����W���q�)�)�)�)�)s5�(B�B�7B�B�B�
B�B�B �#B N)r7r8r9r:r�r�r�r�r�r�rrr(rrr�r�#s���������2�2�2�&3�3�3�5�5�5�`T�`T�`T�D!�!�!�%�%�%�4"�"�"� *�*�*�*�*rr�c�N�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
dS)
�BaseSemaphoreTestszB
    Common tests for {bounded, unbounded} semaphore objects.
    c��|�t|jd���|�t|jtj���dS)N���)�value)rr��semtype�sys�maxsizer5s rrUz#BaseSemaphoreTests.test_constructor�sF�����*�d�l�B��?�?�?����*�d�l�S�[�L��I�I�I�I�Irc�J�|�d��}|���|���|�d��}|���|���|���|���dS)Nrmr�)rr[ra�r�sems  rr�zBaseSemaphoreTests.test_acquire�sr���l�l�1�o�o�����
�
�
����
�
�
��l�l�1�o�o�����
�
�
����
�
�
����
�
�
����
�
�
�
�
rc�X�|���}|���~dSr)rr[rs  rr^z'BaseSemaphoreTests.test_acquire_destroys#���l�l�n�n�����
�
�
��C�Crc���
���
��d}|�|���
�
���g�g�g�d�
�
���
�fd�}��fd�}d}t||��5|dz
}||��|���zdg|z��d�
t	|��D]}�
����|}|||z��|�t
��z��dg|zdg|zz��d�
|dz
}t	|��D]}�
����|||z|z��|�t
��z��dg|zdg|zzdg|zz��|��
�d����d}	�
���ddd��n#1swxYwY|��d	g||z|z|	zz��dS)
N�rc�����������������������������dSrri)r�r�r�r�sem_resultss�����rrz7BaseSemaphoreTests.test_acquire_contended.<locals>.funcse������s�{�{�}�}�-�-�-��O�O�I�&�&�&����s�{�{�}�}�-�-�-��O�O�I�&�&�&�&�&rc���tjtj��D](}t���t���z|krdS�)dSr�rr!r"r,��countr%r�r�s  ��r�
wait_countz=BaseSemaphoreTests.test_acquire_contended.<locals>.wait_count�R����+�G�,A�B�B�
�
���x�=�=�3�x�=�=�0�E�9�9��E�E�:�
�
r�
rmr�FT)rr[rrNr+ra�sortedrn)r�	sem_valuerr#rwr�rr��count3�count4r�r�r�rrs          @@@@@rryz)BaseSemaphoreTests.test_acquire_contendeds���������	��l�l�9�%�%�����
�
�
��������	�	'�	'�	'�	'�	'�	'�	'�	'�	'�	�	�	�	�	�	�

��
�4��^�^�	�	���]�F��J�v�������X��0�1�#��,�?�?�?��I��9�%�%�
�
�����
�
�
�
��F��J�v���'�'�'����V�H�x�$7�8�8��S�6�\�Q�C�&�L�8�
:�
:�
:��I��!�m�F��6�]�]�
�
�����
�
�
�
��J�v����/�0�0�0����V�H�x�$7�8�8��S�6�\�Q�C�&�L�8�A�3��<�G�
I�
I�
I�
���S�[�[��/�/�0�0�0��F��K�K�M�M�M�9	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�<	
������6�F�?�V�#;�f�#D�E�	G�	G�	G�	G�	Gs�EF1�1F5�8F5c�*���	�
�d}|�|���
�
���g�g�	d����	�
fd�}��	fd�}t|d��5|dz
}||��|���	zdg|z��d�|}�
�|��|||z��|�t��	z��dg|zdg|zz��d�|dz
}�
�|��|||z|z��|�t��	z��dg|zdg|zzdg|zz��|��
�d�����
���ddd��dS#1swxYwYdS)	Nrrc���������������������dSrr�)r�r�r�rs����rrz2BaseSemaphoreTests.test_multirelease.<locals>.funcEsG����K�K�M�M�M��O�O�I�&�&�&��K�K�M�M�M��O�O�I�&�&�&�&�&rc���tjtj��D](}t���t���z|krdS�)dSrr r!s  ��rr#z8BaseSemaphoreTests.test_multirelease.<locals>.wait_countLr$rr%rmr�F)rr[rrNrar&rn)rr'rr#r�r�r(r�r�r�rs       @@@@r�test_multireleasez$BaseSemaphoreTests.test_multirelease=sN�������	��l�l�9�%�%�����
�
�
������	�	'�	'�	'�	'�	'�	'�	'�	'�	�	�	�	�	�	�
�4��_�_�	�	���]�F��J�v�������X��0�1�#��,�?�?�?��I��F��K�K������J�v���'�'�'����V�H�x�$7�8�8��S�6�\�Q�C�&�L�8�
:�
:�
:��I���]�F��K�K������J�v����/�0�0�0����V�H�x�$7�8�8��S�6�\�Q�C�&�L�8�A�3��<�G�
I�
I�
I�
���S�[�[��/�/�0�0�0�
�K�K�M�M�M�3	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�D'F�F�Fc��|�d��}|�|�d����|�|�d����|�|�d����|���|�|�d����dS)Nr�F)rrer[rnrars  rrfz#BaseSemaphoreTests.test_try_acquirels����l�l�1�o�o��������E�*�*�+�+�+�������E�*�*�+�+�+�������U�+�+�,�,�,����
�
�
�������E�*�*�+�+�+�+�+rc����|�d�������g���fd�}t|d��5	ddd��n#1swxYwY|�t	���dgdzdgdzz��dS)Nrc�������d��������d����dSrdri)r�rs��rrlz8BaseSemaphoreTests.test_try_acquire_contended.<locals>.fxsE����N�N�3�;�;�u�-�-�.�.�.��N�N�3�;�;�u�-�-�.�.�.�.�.rrvFrTr�)rr[rrNr&)rrlr�rs  @@rrpz-BaseSemaphoreTests.test_try_acquire_contendedts������l�l�1�o�o�����
�
�
���	/�	/�	/�	/�	/�	/��1�a�[�[�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
	
�������5�'�A�+���!��*C�E�E�E�E�Es�A�A�Ac��|�d��}|�t|jdd���|�|�d�����|�|�d�����|�|�d�����|���|�|�d�����tj��}|�|�d�����tj��|z
}|�	|d��dS)Nr�Fg�?r�g{�G�zt?r�)
rrr�r[rernrar	r�rJ)rr�tr�s    r�test_acquire_timeoutz'BaseSemaphoreTests.test_acquire_timeout�s���l�l�1�o�o�����*�c�k�5�#��F�F�F�������E��2�2�3�3�3�������E��2�2�3�3�3�������U��3�3�4�4�4����
�
�
�������E��2�2�3�3�3��N����������S��1�1�2�2�2�
�^�
�
��
!�����2�s�#�#�#�#�#rc�.��|���������fd�}t|d��5}td��|�|j������ddd��dS#1swxYwYdS)Nc�X����������dSrrs)rs�rrlz0BaseSemaphoreTests.test_default_value.<locals>.f�s!����K�K�M�M�M��K�K�M�M�M�M�Mrrm)rr[rr
rnrra)rrlrxrs   @r�test_default_valuez%BaseSemaphoreTests.test_default_value�s�����l�l�n�n�����
�
�
�	�	�	�	�	��1�a�[�[�	�E� ��#�#�#����U�^�,�,�,�
�K�K�M�M�M�
	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�>B
�
B�Bc������d���d��fd�	}|������d����������t
|t
������d��������dS)Nr�c�D���5����d���������5����d����|r|�	ddd��n#1swxYwYddd��dS#1swxYwYdSrd)rer[rarn)r}rrs ��r�_withz+BaseSemaphoreTests.test_with.<locals>._with�s%����
"�
"�������E� 2� 2�3�3�3����
�
�
��"�"��$�$�S�[�[��%7�%7�8�8�8��"�!�	�"�"�"�"�"�"�"�"�"�"�"�"����"�"�"�"�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"����
"�
"�
"�
"�
"�
"s5�?B�-A=�1B�=B	�B�B	�B�B�BFr)rrer[rarr�)rr9rs` @rr�zBaseSemaphoreTests.test_with�s������l�l�1�o�o��	"�	"�	"�	"�	"�	"�	"�	�����������E�*�*�+�+�+����
�
�
����)�U�I�6�6�6�������E�*�*�+�+�+����
�
�
�
�
rN)r7r8r9r:rUr�r^ryr-rfrpr3r6r�r(rrrr�s���������J�J�J�������
6G�6G�6G�p-�-�-�^,�,�,�F�F�F�$�$�$���� ����rrc��eZdZdZd�Zd�ZdS)�SemaphoreTestsz)
    Tests for unbounded semaphores.
    c���|�d��}|���|���|���|���dS�Nrm)rrar[rs  rr�z&SemaphoreTests.test_release_unacquired�sI���l�l�1�o�o�����
�
�
����
�
�
����
�
�
����
�
�
�
�
rc�z�|�d��}|�t|��d��|���|�t|��d��|���|���|�t|��d��dS)Nr�z<\w+\.Semaphore at .*: value=3>z<\w+\.Semaphore at .*: value=2>z<\w+\.Semaphore at .*: value=4>)rrWrXr[rars  rrYzSemaphoreTests.test_repr�s����l�l�1�o�o������c���$F�G�G�G����
�
�
�����c���$F�G�G�G����
�
�
����
�
�
�����c���$F�G�G�G�G�GrN�r7r8r9r:r�rYr(rrr;r;�sA�����������H�H�H�H�Hrr;c��eZdZdZd�Zd�ZdS)�BoundedSemaphoreTestsz'
    Tests for bounded semaphores.
    c��|���}|�t|j��|���|���|�t|j��dSr)rrr�rar[rs  rr�z-BoundedSemaphoreTests.test_release_unacquired�s_���l�l�n�n�����*�c�k�2�2�2����
�
�
����
�
�
����*�c�k�2�2�2�2�2rc���|�d��}|�t|��d��|���|�t|��d��dS)Nr�z(<\w+\.BoundedSemaphore at .*: value=3/3>z(<\w+\.BoundedSemaphore at .*: value=2/3>)rrWrXr[rs  rrYzBoundedSemaphoreTests.test_repr�s^���l�l�1�o�o������c���$O�P�P�P����
�
�
�����c���$O�P�P�P�P�PrNr?r(rrrArA�sA��������3�3�3�Q�Q�Q�Q�QrrAc�v�eZdZdZdZdZd�Zd�Zd�Zd�Z	dd	�Z
d
�Zd�Zd�Z
d
�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�BarrierTestsz$
    Tests for Barrier objects.
    rvg@c�R�|�|j|j���|_dS)Nr�)�barriertyperw�defaultTimeout�barrierr5s rr@zBarrierTests.setUp�s%���'�'����8K�'�L�L����rc�8�|j���dSr)rI�abortr5s rrDzBarrierTests.tearDown�s����������rc�d�t||j��5	ddd��dS#1swxYwYdSr)rrw�rrls  r�run_threadszBarrierTests.run_threads�s{��
�1�d�f�
�
�	�	��	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�%�)�)c�|�|jj}|�||j��t	|��D]�}|d�d��|�t
|d��||z��|j���|d�d��|�t
|d��|dz|z��|j�����|�|jjd��|�	|jj
��dS)NrTrm)rI�partiesrNrwr+rr,r��	n_waitingrn�broken)rr��n�mrs     r�	multipasszBarrierTests.multipass�s���L� ������D�F�#�#�#��q���	 �	 �A��A�J���d�#�#�#����S����_�_�a�!�e�4�4�4��L�������A�J���d�#�#�#����S����_�_�q�1�u��k�:�:�:��L������������/��3�3�3������,�-�-�-�-�-rrmc�L����ggg����fd�}��|��dS)z;
        Test that a barrier is passed in lockstep
        c�4��������dSr)rU)�passesr�rs���rrlz$BarrierTests.test_barrier.<locals>.f�s����N�N�7�F�+�+�+�+�+rN�rN)rrXrlr�s`` @r�test_barrierzBarrierTests.test_barrier�sM������b�'��	,�	,�	,�	,�	,�	,�	,���������rc�,�|�d��S)zC
        Test that a barrier works for 10 consecutive runs
        r%)rZr5s r�test_barrier_10zBarrierTests.test_barrier_10s��� � ��$�$�$rc�����g���fd�}��|����t���tt�j������dS)z9
        test the return value from barrier.wait
        c�d���j���}��|��dSr)rIr�r)r�r�rs ��rrlz(BarrierTests.test_wait_return.<locals>.f
s.�����!�!�#�#�A��N�N�1�����rN)rNrN�sumr+rw)rrlr�s` @r�test_wait_returnzBarrierTests.test_wait_returnsq������	�	�	�	�	�	�	
�����������W���s�5���=�=�'9�'9�:�:�:�:�:rc�����g��fd�}���j|������fd�}��|��dS)z,
        Test the 'action' callback
        c�2����d��dSr4)r)r�s�r�actionz(BarrierTests.test_action.<locals>.actions����N�N�4� � � � � rc�v��������t���d��dSr=)r�rNr,)rIr�rs���rrlz#BarrierTests.test_action.<locals>.fs2����L�L�N�N�N����S��\�\�1�-�-�-�-�-rN)rGrwrN)rrcrlrIr�s`  @@r�test_actionzBarrierTests.test_actions{�������	!�	!�	!�	!�	!��"�"�4�6�6�2�2��	.�	.�	.�	.�	.�	.�	.�	
��������rc�&����g�g����fd�}��|����t���d����t����jdz
�����jj��dS)zK
        Test that an abort will put the barrier in a broken state
        c�b��	�j���}|�jdzkrt��j�����d��dS#t
j$r��d��YdSt$r�j���YdSwxYw�Nr�T)rIr�rwr�rr�BrokenBarrierErrorrK)rr�r�rs ���rrlz"BarrierTests.test_abort.<locals>.f(s����

��L�%�%�'�'������	�>�>�&�&���!�!�#�#�#�����%�%�%�%�%���/�
&�
&�
&�����%�%�%�%�%�%��
�
�
���"�"�$�$�$����
���s�AA!�!$B.�"B.�-B.rrmN)rNrNr,rwrerIrR)rrlr�r�s` @@r�
test_abortzBarrierTests.test_abort"s����������	�	�	�	�	�	�	�	
�����������X����*�*�*�����X�����q��1�1�1������+�,�,�,�,�,rc�@�����g�g�g�����fd�}��|����t���d����t����jdz
����t����j��dS)zL
        Test that a 'reset' on a barrier frees the waiting threads
        c����j���}|�jdzkrUtjtj��D]}�jj�jdz
krn��j���nZ	�j�����d��n*#tj
$r��d��YnwxYw�j�����d��dS)Nr�rmT)rIr�rwrr!r"rQ�resetrrri)rr%r�r��results3rs  ����rrlz"BarrierTests.test_reset.<locals>.fAs�����!�!�#�#�A��D�F�A�I�~�~� �/��0E�F�F���A��|�-�$�&�1�*�=�=���>���"�"�$�$�$�$�*��L�%�%�'�'�'��O�O�D�)�)�)�)�� �3�*�*�*��O�O�D�)�)�)�)�)�*����
�L�������O�O�D�!�!�!�!�!s�?.B.�.$C�CrrmN)rNrNr,rw)rrlr�r�rns` @@@r�
test_resetzBarrierTests.test_reset:s�������������	"�	"�	"�	"�	"�	"�	"�	"�$	
�����������X����*�*�*�����X�����q��1�1�1�����X�����/�/�/�/�/rc�x������g�g�g����j��������fd�}��|����t	���d����t	����jdz
����t	����j��dS)zF
        Test that a barrier can be reset after being broken.
        c�V��	�j���}|�jdzkrt��j�����d��nN#t
j$r��d��Yn(t$r�j���YnwxYw�����jdzkr�j��������j�����d��dSrh)	rIr�rwr�rrrirKrm)r�barrier2r�r�rnrs �����rrlz,BarrierTests.test_abort_and_reset.<locals>.fas"���

��L�%�%�'�'������	�>�>�&�&���!�!�#�#�#�����%�%�%�%���/�
&�
&�
&�����%�%�%�%�%��
�
�
���"�"�$�$�$���
�����}�}���$�&�!�)�+�+���"�"�$�$�$��M�M�O�O�O��L�������O�O�D�!�!�!�!�!s�AA � $B+�"B+�*B+rrmN)rGrwrNrNr,)rrlrrr�r�rns` @@@@r�test_abort_and_resetz!BarrierTests.test_abort_and_resetYs���������������#�#�D�F�+�+��	"�	"�	"�	"�	"�	"�	"�	"�	"�*	
�����������X����*�*�*�����X�����q��1�1�1�����X�����/�/�/�/�/rc�<���fd�}��|��dS)z$
        Test wait(timeout)
        c�����j���}|�jdzkrtj�jdz����tj�jj�jdz��dS)Nr�r)	rIr�rwr	r
rHrrri)rrs �rrlz$BarrierTests.test_timeout.<locals>.fs}�����!�!�#�#�A��D�F�a�K����
�4�.��2�3�3�3����i�:�"�l�/��1D�q�1H�
J�
J�
J�
J�
JrNrYrMs` rr�zBarrierTests.test_timeout{s=���	J�	J�	J�	J�	J�	
��������rc����d}��d|������fd�}tj��}t|d��5	ddd��n#1swxYwYtj��|z
}��||��dS)z4
        Test the barrier's default timeout
        rr�r�c�R����tj�j��dSr)rrrir�)rIrs��rrlz,BarrierTests.test_default_timeout.<locals>.f�s/������i�:�%�l�
,�
,�
,�
,�
,rrmN)rGr	r�rrF)rr�rl�
start_timer�rIs`    @r�test_default_timeoutz!BarrierTests.test_default_timeout�s��������"�"�1�g�"�6�6��	,�	,�	,�	,�	,�	,��^�%�%�
�
�1�a�[�[�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�^�
�
�
�
*������G�,�,�,�,�,s�A�A�Ac��|�d��}|���|���dSr=)rGr�)r�bs  r�test_single_threadzBarrierTests.test_single_thread�s3�����Q����	������	�������rc�r���|�d���tj�|�t	���d����fd�}d}t||��5tjtj��D]}�j|krn�|�t	���d����	���ddd��n#1swxYwY|�t	���d����
��|�t	���d��dS)Nr�z!<\w+\.Barrier at .*: waiters=0/3>c�2�������dSr)r�)rIr�s��rrlz!BarrierTests.test_repr.<locals>.f�s����L�L��!�!�!�!�!rr�z!<\w+\.Barrier at .*: waiters=2/3>z<\w+\.Barrier at .*: broken>)rGrr�rWrXrr!r"rQr�rK)rrlrwr%rIr�s    @@rrYzBarrierTests.test_repr�s������"�"�1�%�%���&������g���(L�M�M�M�	"�	"�	"�	"�	"�	"�
��
�1�a�[�[�		"�		"��+�G�,A�B�B�
�
���$��)�)��E�*����T�'�]�]�A�
C�
C�
C�
�L�L��!�!�!�		"�		"�		"�		"�		"�		"�		"�		"�		"�		"�		"����		"�		"�		"�		"�	
����g���=�	?�	?�	?�	�
�
��������g���8�	:�	:�	:�	:�	:s�A'C�C�CN)rm)r7r8r9r:rwrHr@rDrNrUrZr\r`rerjrorsr�ryr|rYr(rrrErE�s��������	
�A��N�M�M�M�������.�.�.�����%�%�%�
;�
;�
;����-�-�-�00�0�0�> 0� 0� 0�D���-�-�-� ���
:�:�:�:�:rrE) r:�osr�rr	�_threadrrr�unittestr��testr�test.supportr�
skipUnless�has_fork_supportr�r
�objectr�TestCaser<rLr�r�r�r�rr;rArEr(rr�<module>r�s�����
�	�	�	�	�	�	�	�
�
�
�
�����1�1�1�1�1�1�1�1�������������������)�)�)�)�)�)�$��#�G�$<�%C�D�D�
�
 � � �@�@�@�@�@�F�@�@�@�F1�1�1�1�1�8�$�1�1�1�"V!�V!�V!�V!�V!�L�V!�V!�V!�r?�?�?�?�?�
�?�?�?�Dd+�d+�d+�d+�d+��d+�d+�d+�Nm@�m@�m@�m@�m@��m@�m@�m@�`G*�G*�G*�G*�G*�\�G*�G*�G*�TA�A�A�A�A��A�A�A�FH�H�H�H�H�'�H�H�H�.Q�Q�Q�Q�Q�.�Q�Q�Q�(\:�\:�\:�\:�\:�<�\:�\:�\:�\:�\:r

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists