Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_thread.cpython-311.opt-2.pyc
�

�KeG"���ddlZddlZddlZddlmZddlmZddlZddl	Z	ddl
Z
ddlmZejd���dZ
dZd	Zej��Zd
�ZGd�dej��ZGd
�de��ZGd�d��ZGd�de��ZGd�dej��ZGd�dej��Zedkrej��dSdS)�N)�support)�threading_helper)�
lock_testsT)�module�
�g{�G�z�?c��	tjr1t5t|��ddd��dS#1swxYwYdSdS�N)r�verbose�_print_mutex�print)�args �:/usr/local/apps/python3/lib/python3.11/test/test_thread.py�
verbose_printrs���<����
�	�	��#�J�J�J�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	��s�2�6�6c��eZdZd�ZdS)�BasicThreadTestc�H�tj��|_|j���tj��|_tj��|_d|_d|_d|_tj
��}|jtjg|�R�dS�Nr)
�thread�
allocate_lock�
done_mutex�acquire�
running_mutex�random_mutex�created�running�
next_identr�threading_setup�
addCleanup�threading_cleanup)�self�keys  r�setUpzBasicThreadTest.setUps��� �.�0�0�������!�!�!�#�1�3�3���"�0�2�2�������������.�0�0�����(�:�A�S�A�A�A�A�A�A�N)�__name__�
__module__�__qualname__r#�r$rrrs(������
B�
B�
B�
B�
Br$rc�t�eZdZd�Zd�Zd�Zd�Zeje	j
dvd��d���Zd�Zd	�Z
d
S)�ThreadRunningTestsc��|j5|xjdz
c_td|jz��tj|j|jf��|xjdz
c_|xjdz
c_ddd��dS#1swxYwYdS)N�zcreating task %s)rrrr�start_new_thread�taskrr�r!s r�newtaskzThreadRunningTests.newtask,s���
�
�	�	��O�O�q� �O�O��,�t��>�?�?�?��#�D�I���/A�B�B�B��L�L�A��L�L��L�L�A��L�L�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A(A=�=B�Bc	���|j5tj��dz}ddd��n#1swxYwYtd|�dt|dz���d���t	j|��td|z��|j5|xjdzc_|jtkr$|jdkr|j
���ddd��dS#1swxYwYdS)	N���@�task � will run for ���.A�usztask %s doner,r)r�randomr�round�time�sleeprrr�NUMTASKSr�release)r!�ident�delays   rr.zThreadRunningTests.task4sh��
�
�	.�	.��M�O�O�g�-�E�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.��
�U�U�U�E�%��)�<L�<L�<L�<L�M�N�N�N��
�5�����n�u�,�-�-�-�
�
�	*�	*��L�L�A��L�L��|�x�'�'�D�L�A�,=�,=���'�'�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	*�	*s�+�/�/�	AC�C�"Cc�"�tj��5tt��D]}|����td��|j���td��ddd��dS#1swxYwYdS)Nz waiting for tasks to complete...�all tasks done)r�wait_threads_exit�ranger;r0rrr�r!�is  r�test_starting_threadsz(ThreadRunningTests.test_starting_threads?s���
�
/�
1�
1�	,�	,��8�_�_�
�
����������<�=�=�=��O�#�#�%�%�%��*�+�+�+�
	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s�A#B�B�Bc���|�tj��dd��tjd��|�tj��dd��dS)Nrzinitial stack size is not 0zstack_size not reset to default)�assertEqualr�
stack_sizer/s r�test_stack_sizez"ThreadRunningTests.test_stack_sizeHs]������*�,�,�a�1N�O�O�O���!��������*�,�,�a�1R�S�S�S�S�Sr$)�nt�posixztest meant for nt and posixc��	tjd��nD#t$rtd��Yn)tj$r|�d��YnwxYwd}dD]S}tj|��|�tj��|||z��td|z���TdD]�}td|z��d	|_d	|_tj
��5tt��D]}|�
���td
��|j���td��ddd��n#1swxYwY��tjd	��dS)Niz3caught expected ValueError setting stack_size(4096)z4platform does not support changing thread stack sizez&stack_size(%d) failed - should succeed)��rzsuccessfully set stack_size(%d))rMrNztrying stack_size = (%d)rz!waiting for all tasks to completer@)rrH�
ValueErrorr�error�skipTestrGrrrrArBr;r0rr)r!�fail_msg�tssrDs    r�test_nt_and_posix_stack_sizez/ThreadRunningTests.test_nt_and_posix_stack_sizeOs���	"���d�#�#�#�#���	0�	0�	0��/�
0�
0�
0�
0�
0��|�	"�	"�	"��M�M�!�
"�
"�
"�
"�
"�	"����<��(�	C�	C�C���c�"�"�"����V�.�0�0�#�x�#�~�F�F�F��;�c�A�B�B�B�B�%�
	0�
	0�C��4�s�:�;�;�;��D�O��D�L�!�3�5�5�
0�
0��x���#�#�A��L�L�N�N�N�N��A�B�B�B���'�'�)�)�)��.�/�/�/�

0�
0�
0�
0�
0�
0�
0�
0�
0�
0�
0����
0�
0�
0�
0��	��!�����s'��A�#A�A�*A#E�E	� E	c�����tj��}tj�������g���fd�}t	j��5tj|d���stjt����|�
tj��|dz������g�tj
|�fd���}~�s.tjt��tj����.|�
tj��|��ddd��dS#1swxYwYdS)Nc�����d����������dSr
)�appendrr<)�mut�starteds��rr.z,ThreadRunningTests.test__count.<locals>.taskus3����N�N�4� � � ��K�K�M�M�M��K�K�M�M�M�M�Mr$r(r,c�.����d��Sr
)rW)�_�dones �r�<lambda>z0ThreadRunningTests.test__count.<locals>.<lambda>�s���T�[�[��->�->�r$)r�_countrrrrAr-r9r:�
POLL_SLEEPrGr<�weakref�refr�
gc_collect)r!�origr.�wrr\rXrYs    @@@r�test__countzThreadRunningTests.test__countns�������}�����"�$�$�����
�
�
���	�	�	�	�	�	�
�
/�
1�
1�	4�	4��#�D�"�-�-�-��
'��
�:�&�&�&��
'����V�]�_�_�d�Q�h�7�7�7��K�K�M�M�M��D���T�#>�#>�#>�#>�?�?�B���
%��
�:�&�&�&��"�$�$�$��
%�
���V�]�_�_�d�3�3�3�!	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	4�	4s�C#E	�	E
�E
c�x���fd�}tj���tj��5}t	j��5����tj|d������ddd��n#1swxYwY|�t|j
j��d��|�|j
j
|��|�|j
jd��|�|j
j��ddd��dS#1swxYwYdS)Nc�J������td���)N�task failed)r<rO)rYs�rr.z:ThreadRunningTests.test_unraisable_exception.<locals>.task�s!����O�O�����]�+�+�+r$r(rhz&Exception ignored in thread started by)rrr�catch_unraisable_exceptionrrArr-rG�str�
unraisable�	exc_value�assertIs�object�err_msg�assertIsNotNone�
exc_traceback)r!r.�cmrYs   @r�test_unraisable_exceptionz,ThreadRunningTests.test_unraisable_exception�s����	,�	,�	,�	,�	,��&�(�(��
�
/�
1�
1�
	>�R�!�3�5�5�
"�
"����!�!�!��'��b�1�1�1����!�!�!�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"�
"����
"�
"�
"�
"�

���S���!8�9�9�=�I�I�I��M�M�"�-�.��5�5�5����R�]�2�E�
G�
G�
G�� � ���!<�=�=�=�
	>�
	>�
	>�
	>�
	>�
	>�
	>�
	>�
	>�
	>�
	>�
	>����
	>�
	>�
	>�
	>�
	>�
	>s6�D/�>B�?D/�B	�D/�B	�BD/�/D3�6D3N)r%r&r'r0r.rErI�unittest�skipIf�os�namerTrersr(r$rr*r**s����������	*�	*�	*�,�,�,�T�T�T��X�_�R�W�O�3�5R�S�S���T�S��<4�4�4�<>�>�>�>�>r$r*c��eZdZd�Zd�ZdS)�Barrierc��||_d|_tj��|_tj��|_|j���dSr)�num_threads�waitingrr�
checkin_mutex�checkout_mutexr)r!r{s  r�__init__zBarrier.__init__�sN��&������$�2�4�4���$�2�4�4�����#�#�%�%�%�%�%r$c���|j���|jdz|_|j|jkr*|jdz
|_|j���dS|j���|j���|jdz
|_|jdkr|j���dS|j���dS)Nr,r)r}rr|r{r~r<r/s r�enterz
Barrier.enter�s�����"�"�$�$�$��|�a�'����<�4�+�+�+��+�a�/�D�L���'�'�)�)�)��F���"�"�$�$�$���#�#�%�%�%��|�a�'����<�1�����&�&�(�(�(��F���#�#�%�%�%�%�%r$N)r%r&r'rr�r(r$rryry�s2������&�&�&�&�&�&�&�&r$ryc��eZdZd�Zd�ZdS)�BarrierTestc�z�tj��5tt��|_t|_t
t��D]}tj|j	|f���td��|j���td��ddd��dS#1swxYwYdS)Nzwaiting for tasks to endz
tasks done)
rrAryr;�barrrBrr-�task2rrrrCs  r�test_barrierzBarrierTest.test_barrier�s���
�
/�
1�
1�	(�	(��x�(�(�D�H�#�D�L��8�_�_�
:�
:���'��
�Q�D�9�9�9�9��4�5�5�5��O�#�#�%�%�%��,�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(�	(�	(s�BB0�0B4�7B4c
�R�tt��D]�}|dkrd}n5|j5tj��dz}ddd��n#1swxYwYt	d|�dt|dz���d���t
j|��t	d|�d|����|j�	��t	d|z����|j
5|xjd	zc_|jdk}ddd��n#1swxYwY|r|j�
��dSdS)
Nrr2r3r4r5r6z
 entering ztask %s leaving barrierr,)rB�NUMTRIPSrr7rr8r9r:r�r�rrrr<)r!r=rDr>�finisheds     rr�zBarrierTest.task2�s����x���	=�	=�A���z�z�����&�6�6�"�M�O�O�g�5�E�6�6�6�6�6�6�6�6�6�6�6����6�6�6�6��M� �5�5�%����"4�"4�"4�"4�6�
7�
7�
7��J�u�����M�5�5�5�!�!�<�=�=�=��H�N�N�����3�e�;�<�<�<�<�
�
�	)�	)��L�L�A��L�L��|�q�(�H�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)��	&��O�#�#�%�%�%�%�%�	&�	&s#�A
�
A	�A	�C?�?D�DN)r%r&r'r�r�r(r$rr�r��s2������(�(�(�&�&�&�&�&r$r�c��eZdZejZdS)�	LockTestsN)r%r&r'rr�locktyper(r$rr�r��s�������#�H�H�Hr$r�c�d�eZdZd�Zej��ejd�����Zd�Z	dS)�TestForkInThreadc�F�tj��\|_|_dSr
)rv�pipe�read_fd�write_fdr/s rr#zTestForkInThread.setUp�s��&(�g�i�i�#���d�m�m�mr$c���d��fd�}tj��5tj||j|jf��|�tj|jd��d��tj	|j��ddd��n#1swxYwY|�
���tj�d���dS)Nc����tj����rdS	tj|��tj|d��tjd��dS#tjd��wxYw)N�OKr)rv�fork�close�write�_exit)r�r��pids  �r�fork_threadz7TestForkInThread.test_forkinthread.<locals>.fork_thread�sg����'�)�)�C��
���
����!�!�!����5�)�)�)�������������������s�)A�A/�r�r)�exitcode)
rrArr-r�r�rGrv�readr�rpr�wait_process)r!r�r�s  @r�test_forkinthreadz"TestForkInThread.test_forkinthread�s
�����	�	�	�	�	� �
/�
1�
1�	$�	$��#�K�$�,��
�1N�O�O�O����R�W�T�\�1�5�5�u�=�=�=��H�T�]�#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$�
	
���S�!�!�!���S�1�-�-�-�-�-�-s�A)B�B�Bc��	tj|j��n#t$rYnwxYw	tj|j��dS#t$rYdSwxYwr
)rvr�r��OSErrorr�r/s r�tearDownzTestForkInThread.tearDowns{��	��H�T�\�"�"�"�"���	�	�	��D�	����	��H�T�]�#�#�#�#�#���	�	�	��D�D�	���s��
)�)�A�
A�AN)
r%r&r'r#r�
requires_forkr�reap_threadsr�r�r(r$rr�r��sg������0�0�0��W�����"�.�.�#�"���.�6	�	�	�	�	r$r��__main__)rvrtr7�testr�test.supportr�_threadrr9r`r�requires_working_threadingr;r�r_rrr�TestCaserr*ryr�r�r�r%�mainr(r$r�<module>r�s���	�	�	�	�����
�
�
�
�������)�)�)�)�)�)�������������������+��+�4�8�8�8�8�
����
�
�#�v�#�%�%�����B�B�B�B�B�h�'�B�B�B�r>�r>�r>�r>�r>��r>�r>�r>�j&�&�&�&�&�&�&�&�2#&�#&�#&�#&�#&�/�#&�#&�#&�J$�$�$�$�$�
�$�$�$�$�*�*�*�*�*�x�(�*�*�*�Z�z����H�M�O�O�O�O�O��r$