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

�Ke�G���dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
mZddlmZddlmZddlmZej�d��ej�d�	��d
ZejZeed��Ze	jed��ZejjZe	jed
��Zd�ZejZejj fd�Z!er4er2Gd�de
j"e
j#��Z$Gd�de
j"e
j%��Z&ej'd���Z(Gd�de	j)��Z*Gd�de	j)��Z+Gd�de
j,��Z-Gd�de
j.��Z/Gd�de
j0e-��Z1erGd�d e
j"e-��Z2Gd!�d"e	j)��Z3Gd#�d$e	j)��Z4e5d%kre	j6��dSdS)&z
Test suite for socketserver.
�N)�
reap_children�verbose)�	os_helper)�
socket_helper)�threading_helper�networkT)�moduleshello world
�AF_UNIXzrequires Unix socketszrequires forkingc�\�ttd��rtj|��dSdS)z7Call signal.alarm when it exists (i.e. not on Windows).�alarmN)�hasattr�signalr)�ns �@/usr/local/apps/python3/lib/python3.11/test/test_socketserver.py�signal_alarmr$s/���v�w������Q��������c��t|ggg|��\}}}||vr|�|��Std|�����)Nz
timed out on )�_real_select�recv�RuntimeError)�sockr�timeout�r�w�xs      r�receiver,sK���D�6�2�r�7�3�3�G�A�q�!��q�y�y��y�y��|�|���l���6�7�7�7rc��eZdZdS)�ForkingUnixStreamServerN��__name__�
__module__�__qualname__�rrrr4��������rrc��eZdZdS)�ForkingUnixDatagramServerNrr#rrr&r&8r$rr&c#�K�tj��}|dkrtjd��	dV�n#�xYw	tj�|d���dS#tj�|d���wxYw)zBTests that a custom child process is not waited on (Issue 1540386)r�HN)�exitcode)�os�fork�_exit�test�support�wait_process)�testcase�pids  r�simple_subprocessr2=s�����
�'�)�)�C�
�a�x�x�
������4��
�
�
�
���
����	�	
��!�!�#��!�3�3�3�3�3����!�!�#��!�3�3�3�3���s�6�A �9�A � #Bc�p�eZdZdZd�Zd�Zd�Zd�Zej	d���Z
d�Zd�Zd	�Z
d
�Zed���Zed���Zed
���Zeed�����Zd�Zd�Zed���Zed���Zed���Zeed�����Zej	d���Zd�Zd�Zd�ZdS)�SocketServerTestzTest all socket servers.c�@�td��d|_g|_dS)N�<r)r�	port_seed�
test_files��selfs r�setUpzSocketServerTest.setUpOs"���R�����������rc��td��t��|jD]'}	tj|���#t
$rY�$wxYwg|jdd�<dS�Nr)rrr8r*�remove�OSError)r:�fns  r�tearDownzSocketServerTest.tearDownTsq���Q���������/�	�	�B�
��	�"�
�
�
�
���
�
�
���
������������s�=�
A
�	A
c��|tjkr	tdfSd}tjd|���}|j�|��|S)Nrzunix_socket.)�prefix�dir)�socket�AF_INET�HOST�tempfile�mktempr8�append)r:�protorDr@s    r�pickaddrzSocketServerTest.pickaddr_sO���F�N�"�"��!�9���C����C�@�@�@�B��O�"�"�2�&�&�&��Irc	�T�Gd�d|��}Gd�d|��}trtd��	|||��}n5#t$r(}|�d|�d|�d|����Yd}~nd}~wwxYw|�|j|j�����|S)	Nc��eZdZd�ZdS)�.SocketServerTest.make_server.<locals>.MyServerc�.�|�|����N)�
close_request�r:�request�client_addresss   r�handle_errorz;SocketServerTest.make_server.<locals>.MyServer.handle_errorls���"�"�7�+�+�+�rN)r r!r"rVr#rr�MyServerrOks#������
�
�
�
�
rrWc��eZdZd�ZdS)�/SocketServerTest.make_server.<locals>.MyHandlerc�l�|j���}|j�|��dSrQ)�rfile�readline�wfile�write)r:�lines  r�handlez6SocketServerTest.make_server.<locals>.MyHandler.handleqs1���z�*�*�,�,���
� � ��&�&�&�&�&rN�r r!r"r`r#rr�	MyHandlerrYps#������
'�
'�
'�
'�
'rrbzcreating serverzCannot create server (z, z): )r�print�PermissionError�skipTest�assertEqual�server_addressrE�getsockname)r:�addr�svrcls�hdlrbaserWrb�server�es        r�make_serverzSocketServerTest.make_serverjs��	�	�	�	�	�v�	�	�	�
	'�	'�	'�	'�	'��	'�	'�	'�
�,�E�+�,�,�,�	-��X�d�I�.�.�F�F���	-�	-�	-��M�M�M�!�6�6�4�4�4���,�
-�
-�
-�
-�
-�
-�
-�
-�����	-����	
����.��
�0I�0I�0K�0K�L�L�L��
s�A�
A3�A.�.A3c�|�|�|�|j��||��}|j}tr td|��td|��t
jd|z|jddi���}d|_	|�
��trtd��td	��D]*}trtd
|��||j|���+trtd��|���|�
��|���|�d|j�����t$r4t'|t(j��r|�|j��trtd
��dSdS)NzADDR =zCLASS =z
%s serving�
poll_interval�{�G�z�?��name�target�kwargsTzserver running�ztest clientzwaiting for server����done)rnrL�address_familyrgrrc�	threading�Thread�
serve_forever�daemon�start�range�shutdown�join�server_closerfrE�fileno�HAVE_FORKING�
isinstance�socketserver�ForkingMixIn�assertFalse�active_children)r:rjrk�testfuncrlri�t�is        r�
run_serverzSocketServerTest.run_servers����!�!�$�-�-��0E�"F�"F�"(�(�4�4���$���	%��(�D�!�!�!��)�V�$�$�$�����&��'�$�D�)�

+�
+�
+�����	���	�	�	��+�E�*�+�+�+��q���	2�	2�A��/��m�Q�/�/�/��H�V�*�D�1�1�1�1��/�E�.�/�/�/�������	����������������V�]�1�1�3�3�4�4�4��	5�J�v�|�/H�I�I�	5�
���V�3�4�4�4��!�E�&�M�M�M�M�M�!�!rc�p�tj|tj��5}|�|��|�t��t|d��x}}|rd|vrt|d��}||z
}|rd|v�|�|t��ddd��dS#1swxYwYdS�N�d�
)rE�SOCK_STREAM�connect�sendall�TEST_STRrrf�r:rKri�s�buf�datas      r�stream_examinezSocketServerTest.stream_examine�s���
�]�5�&�"4�
5�
5�	,��
�I�I�d�O�O�O�
�I�I�h���� ��C���(�C�$��
�5��+�+��q�#�����t����
�5��+�+�
���S�(�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s�A>B+�+B/�2B/c���tj|tj��5}tr8|tjkr(|�|�|����|�t|��t|d��x}}|rd|vrt|d��}||z
}|rd|v�|�	|t��ddd��dS#1swxYwYdSr�)
rE�
SOCK_DGRAM�HAVE_UNIX_SOCKETSr
�bindrL�sendtor�rrfr�s      r�
dgram_examinezSocketServerTest.dgram_examine�s$��
�]�5�&�"3�
4�
4�	,�� �
-�U�f�n�%<�%<����t�}�}�U�+�+�,�,�,�
�H�H�X�t�$�$�$� ��C���(�C�$��
�5��+�+��q�#�����t����
�5��+�+�
���S�(�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s�B)C�C�Cc�f�|�tjtj|j��dSrQ)r�r��	TCPServer�StreamRequestHandlerr�r9s r�test_TCPServerzSocketServerTest.test_TCPServer�s3������.�$�9��+�	-�	-�	-�	-�	-rc�f�|�tjtj|j��dSrQ)r�r��ThreadingTCPServerr�r�r9s r�test_ThreadingTCPServerz(SocketServerTest.test_ThreadingTCPServer�s3������7�$�9��+�	-�	-�	-�	-�	-rc��t|��5|�tjtj|j��ddd��dS#1swxYwYdSrQ)r2r�r��ForkingTCPServerr�r�r9s r�test_ForkingTCPServerz&SocketServerTest.test_ForkingTCPServer�s���
�t�
$�
$�	1�	1��O�O�L�9�(�=� �/�
1�
1�
1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1��1A�A�Ac�f�|�tjtj|j��dSrQ)r�r��UnixStreamServerr�r�r9s r�test_UnixStreamServerz&SocketServerTest.test_UnixStreamServer�s3������5�$�9��+�	-�	-�	-�	-�	-rc�f�|�tjtj|j��dSrQ)r�r��ThreadingUnixStreamServerr�r�r9s r�test_ThreadingUnixStreamServerz/SocketServerTest.test_ThreadingUnixStreamServer�s3������>�$�9��+�	-�	-�	-�	-�	-rc��t|��5|�ttj|j��ddd��dS#1swxYwYdSrQ)r2r�rr�r�r�r9s r�test_ForkingUnixStreamServerz-SocketServerTest.test_ForkingUnixStreamServer�s����t�
$�
$�	1�	1��O�O�3�(�=� �/�
1�
1�
1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s�,A	�	A
�A
c�f�|�tjtj|j��dSrQ)r�r��	UDPServer�DatagramRequestHandlerr�r9s r�test_UDPServerzSocketServerTest.test_UDPServer�s3������.�$�;��*�	,�	,�	,�	,�	,rc�f�|�tjtj|j��dSrQ)r�r��ThreadingUDPServerr�r�r9s r�test_ThreadingUDPServerz(SocketServerTest.test_ThreadingUDPServer�s3������7�$�;��*�	,�	,�	,�	,�	,rc��t|��5|�tjtj|j��ddd��dS#1swxYwYdSrQ)r2r�r��ForkingUDPServerr�r�r9s r�test_ForkingUDPServerz&SocketServerTest.test_ForkingUDPServer�s���
�t�
$�
$�	0�	0��O�O�L�9�(�?� �.�
0�
0�
0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�	0�	0r�c�f�|�tjtj|j��dSrQ)r�r��UnixDatagramServerr�r�r9s r�test_UnixDatagramServerz(SocketServerTest.test_UnixDatagramServer�s3������7�$�;��*�	,�	,�	,�	,�	,rc�f�|�tjtj|j��dSrQ)r�r��ThreadingUnixDatagramServerr�r�r9s r� test_ThreadingUnixDatagramServerz1SocketServerTest.test_ThreadingUnixDatagramServer�s3������@�$�;��*�	,�	,�	,�	,�	,rc�\�|�ttj|j��dSrQ)r�r&r�r�r�r9s r�test_ForkingUnixDatagramServerz/SocketServerTest.test_ForkingUnixDatagramServer�s3��	
���1�$�;��*�	,�	,�	,�	,�	,rc���Gd�dtj��}Gd�dtj��}g}td��D]Q}|tdf|��}tjd|jdd	i�
��}d|_|�	||f���R|D]-\}}|�
��|����.|D]-\}}|���|�
���.dS)Nc��eZdZdS)�0SocketServerTest.test_shutdown.<locals>.MyServerNrr#rrrWr���������DrrWc��eZdZdS)�1SocketServerTest.test_shutdown.<locals>.MyHandlerNrr#rrrbr�r�rrb�rzMyServer servingrprqrrT)r�r�r�rrGrzr{r|r}rJr~r�r�r�)r:rWrb�threadsr�r�r�s       r�
test_shutdownzSocketServerTest.test_shutdownsB��	�	�	�	�	�|�-�	�	�	�	�	�	�	�	��9�	�	�	����r���	#�	#�A���$���I�.�.�A�� �'���'��-�/�/�/�A��A�H��N�N�A�q�6�"�"�"�"��	�	�D�A�q�
�G�G�I�I�I�
�J�J�L�L�L�L��	�	�D�A�q�
�F�F�H�H�H�
�N�N�����	�	rc��Gd�dtjtj��}|tdfd���}|���dS)Nc��eZdZdS)�9SocketServerTest.test_close_immediately.<locals>.MyServerNrr#rrrWr�r�rrWrc��dSrQr#r#rr�<lambda>z9SocketServerTest.test_close_immediately.<locals>.<lambda>s��T�r)r��ThreadingMixInr�rGr�)r:rWrls   r�test_close_immediatelyz'SocketServerTest.test_close_immediatelyse��	�	�	�	�	�|�2�L�4J�	�	�	���4��)�\�\�2�2���������rc���td��D]Z}|�t��5tjt
dftj��ddd��n#1swxYwY�[dS)Nirw)r�assertRaises�
OverflowErrorr�r�rGr�)r:r�s  r�test_tcpserver_bind_leakz)SocketServerTest.test_tcpserver_bind_leak!s���
�t���	J�	J�A��"�"�=�1�1�
J�
J��&��b�z�'3�'H�J�J�J�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J����
J�
J�
J�
J��	J�	Js�'A�A#	�&A#	c���tjtdftj��5}	ddd��n#1swxYwY|�d|j�����dS)Nrrw)r�r�rGr�rfrEr�)r:rls  r�test_context_managerz%SocketServerTest.test_context_manager+s���
�
#�T�1�I�$0�$E�G�G�	�JP��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
����V�]�1�1�3�3�4�4�4�4�4s�5�9�9N)r r!r"�__doc__r;rArLrnr�reap_threadsr�r�r�r�r��requires_forkingr��requires_unix_socketsr�r�r�r�r�r�r�r�r�r�r�r�r�r#rrr4r4Ls������"�"����
	 �	 �	 �	�	�	����*�"� "� "�#�"� "�D,�,�,�	,�	,�	,�-�-�-�
-�-�-�
�1�1���1��-�-���-�
�-�-���-�
��1�1�����1�,�,�,�
,�,�,�
�0�0���0��,�,���,�
�,�,���,�
��,�,�����,�
�"���#�"��2���J�J�J�5�5�5�5�5rr4c�b�eZdZdZd�Zd�Zd�Zd�Zd�Ze	d���Z
e	d���Zd	�Zd
S)�ErrorHandlerTestz�Test that the servers pass normal exceptions from the handler to
    handle_error(), and that exiting exceptions like SystemExit and
    KeyboardInterrupt are not passed.c�B�tjtj��dSrQ)r�unlink�TESTFNr9s rrAzErrorHandlerTest.tearDown7s�����)�*�*�*�*�*rc�Z�tt��|�d���dS�NT��handled)�BaseErrorTestServer�
ValueError�check_resultr9s r�test_sync_handledz"ErrorHandlerTest.test_sync_handled:s-���J�'�'�'����$��'�'�'�'�'rc��|�t��5tt��ddd��n#1swxYwY|�d���dS�NFr�)r��
SystemExitr�r�r9s r�test_sync_not_handledz&ErrorHandlerTest.test_sync_not_handled>s���
�
�
�z�
*�
*�	,�	,��
�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,����%��(�(�(�(�(s�<�A�Ac�Z�tt��|�d���dSr�)�ThreadingErrorTestServerr�r�r9s r�test_threading_handledz'ErrorHandlerTest.test_threading_handledCs-�� ��,�,�,����$��'�'�'�'�'rc���tj��5}tt��|�d���|�|jt��ddd��dS#1swxYwYdSr�)r�catch_threading_exceptionr�r�r��assertIs�exc_type)r:�cms  r�test_threading_not_handledz+ErrorHandlerTest.test_threading_not_handledGs���
�
7�
9�
9�	3�R�$�Z�0�0�0����e��,�,�,��M�M�"�+�z�2�2�2�		3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	3�	3s�AA,�,A0�3A0c�Z�tt��|�d���dSr�)�ForkingErrorTestServerr�r�r9s r�test_forking_handledz%ErrorHandlerTest.test_forking_handledNs-���z�*�*�*����$��'�'�'�'�'rc�Z�tt��|�d���dSr�)r�r�r�r9s r�test_forking_not_handledz)ErrorHandlerTest.test_forking_not_handledSs-���z�*�*�*����%��(�(�(�(�(rc���ttj��5}dd|zz}|�|���|��ddd��dS#1swxYwYdS)N�Handler called
�Error handled
)�openrr�rf�read)r:r��log�expecteds    rr�zErrorHandlerTest.check_resultXs���
�)�"�
#�
#�	3�s�)�,=��,G�G�H����S�X�X�Z�Z��2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	3�	3s�1A�A�AN)
r r!r"r�rAr�r�r�r�r�r�r�r�r#rrr�r�2s�������)�)�+�+�+�(�(�(�)�)�)�
(�(�(�3�3�3��(�(���(��)�)���)�3�3�3�3�3rr�c�*��eZdZ�fd�Zd�Zd�Z�xZS)r�c���||_t���tdft��tj|j��5	ddd��n#1swxYwY	|���|�	��n#|�	��wxYw|�
��dSr=)�	exception�super�__init__rG�
BadHandlerrE�create_connectionrg�handle_requestr��	wait_done)r:r�	__class__s  �rr
zBaseErrorTestServer.__init___s����"���
�����$���J�/�/�/�
�
%�d�&9�
:�
:�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	 ����!�!�!���������D�����������������s�A�A"�%A"�*B�B)c��ttjd��5}|�d��ddd��dS#1swxYwYdS)N�ar)rrr�r^)r:rTrUrs    rrVz BaseErrorTestServer.handle_errorjs���
�)�"�C�
(�
(�	)�C��I�I�'�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�	)�	)s�>�A�Ac��dSrQr#r9s rrzBaseErrorTestServer.wait_donens���r)r r!r"r
rVr�
__classcell__�rs@rr�r�^sV�������	�	�	�	�	�)�)�)�
�
�
�
�
�
�
rr�c��eZdZd�ZdS)rc���ttjd��5}|�d��ddd��n#1swxYwY|j�d���)Nrrz
Test error)rrr�r^rlr)r:rs  rr`zBadHandler.handless���
�)�"�C�
(�
(�	*�C��I�I�(�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*��k�#�#�L�1�1�1s�=�A�ANrar#rrrrrs#������2�2�2�2�2rrc�.��eZdZ�fd�Z�fd�Zd�Z�xZS)r�c�j��tj��|_t��j|i|��dSrQ)rz�Eventrxr	r
�r:�pos�kwrs   �rr
z!ThreadingErrorTestServer.__init__{s4����O�%�%��	������#�$��$�$�$�$�$rc�l��t��j|i|��|j���dSrQ)r	�shutdown_requestrx�setrs   �rrz)ThreadingErrorTestServer.shutdown_requests2��� ���� �#�,��,�,�,��	�
�
�����rc�8�|j���dSrQ)rx�waitr9s rrz"ThreadingErrorTestServer.wait_done�s���	�������r)r r!r"r
rrrrs@rr�r�ys`�������%�%�%�%�%������������rr�c��eZdZdS)r�Nrr#rrr�r��s�������rr�c��eZdZd�Zd�ZdS)�SocketWriterTestc��Gd�dtj��}tjtdf|��}|�|j��t
j|jtjtj	��}|5|�
|j��ddd��n#1swxYwY|���|�
|jtj��|�|j|j��dS)Nc��eZdZd�ZdS)�-SocketWriterTest.test_basics.<locals>.Handlerc��|j|j_|j���|j_|j���|j_dSrQ)r]rlr��wfile_filenorT�request_filenor9s rr`z4SocketWriterTest.test_basics.<locals>.Handler.handle�sD��$(�J���!�+/�:�+<�+<�+>�+>���(�-1�\�-@�-@�-B�-B���*�*�*rNrar#rr�Handlerr'�s(������
C�
C�
C�
C�
Crr+r)r�r�r�rG�
addCleanupr�rEryr��IPPROTO_TCPr�rgr
�assertIsInstancer]�io�BufferedIOBaserfr)r*)r:r+rlr�s    r�test_basicszSocketWriterTest.test_basics�sF��	C�	C�	C�	C�	C�l�7�	C�	C�	C��'��q�	�7�;�;������+�,�,�,��M��!�6�#5�v�7I�
K�
K��
�	-�	-�
�I�I�f�+�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-����������f�l�B�,=�>�>�>�����,�f�.C�D�D�D�D�Ds�B'�'B+�.B+c�����	�
��tj�td���Gd�dtj��}t	jtdf|���|��j	��tj����fd�}tjtj|��}|�tjtj|��d�
d�	tj
�������	�
�fd�}tj|���}|�������|���|��jt)�
����|��
d��|��jd	��|��jtjj��|��	tjjd
z
��dS)N�pthread_killc��eZdZd�ZdS)�,SocketWriterTest.test_write.<locals>.Handlerc��|j�d��|j_|j���|j_dtjj	z}|j�|��|j_
dS)N�write data
�)r]r^rl�sent1r[r\�receivedr-r.�
SOCK_MAX_SIZE�sent2)r:�	big_chunks  rr`z3SocketWriterTest.test_write.<locals>.Handler.handle�sc��$(�J�$4�$4�_�$E�$E���!�'+�z�':�':�'<�'<���$�!�D�L�$>�>�	�$(�J�$4�$4�Y�$?�$?���!�!�!rNrar#rrr+r5�s(������
@�
@�
@�
@�
@rr+rc�0������dSrQ)r)�signum�frame�interrupteds  �r�signal_handlerz3SocketWriterTest.test_write.<locals>.signal_handler�s����O�O�����rc�`��tj�jtjtj��}|5|�d��5}|��j��|����|�d��|�	d��	��tj����td�����rn�;t|�	�����ddd��n#1swxYwYddd��dS#1swxYwYdS)N�rb�client response
r�T�)r)rEryr�r-�makefiler�rgr\r�rr�SIGUSR1r!�float�len)r��readerrA�main_threadr3�	received2�	response1rls  ������r�
run_clientz/SocketWriterTest.test_write.<locals>.run_client�s�����
�f�3�V�5G��"�$�$�A��
/�
/�A�J�J�t�$�$�
/���	�	�&�/�0�0�0�"�O�O�-�-�	��	�	�.�/�/�/����C� � � �� �L��f�n�=�=�=�"�'�'��a���'�9�9����
 ����
�
�.�.�	�#
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/����
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/����
/�
/�
/�
/�
/�
/s6�D#�	B6D�?D#�D	�D#�D	�D#�#D'�*D')rtr7rEr�)r-r.�
get_attributerr�r�r�rGr,r�rzrrH�	get_identr{r~r
r�rfr9rJr:r<r;)r:r+rB�originalrO�
backgroundrArLr3rMrNrls      @@@@@@r�
test_writezSocketWriterTest.test_write�s����������|�1�1�&�.�I�I��	@�	@�	@�	@�	@�l�7�	@�	@�	@��'��q�	�7�;�;������+�,�,�,��o�'�'��	�	�	�	�	��=����@�@������
�v�~�x�@�@�@��	��	��)�+�+��	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�,�%�Z�8�8�8�
������������������������s�9�~�~�6�6�6�����O�4�4�4������*>�?�?�?������t�|�'A�B�B�B�����D�L�$>��$D�E�E�E�E�ErN)r r!r"r1rTr#rrr$r$�s:������E�E�E�"8F�8F�8F�8F�8Frr$c� �eZdZd�Zd�Zd�ZdS)�MiscTestCasec� �g}tt��D]V}|�d��s?tt|��}t|dd��dkr|�|���W|�tj|��dS)N�_r!r�)rDr��
startswith�getattrrJ�assertCountEqual�__all__)r:rrs�
mod_objects    r�test_allzMiscTestCase.test_all�s�������%�%�	*�	*�D��?�?�3�'�'�
*�$�\�4�8�8�
��:�|�T�:�:�n�L�L��O�O�D�)�)�)�����l�2�H�=�=�=�=�=rc��Gd�dtj��}|tdftj��}t	j|jtj��}|�|j��|�	��|�
��|�|jd��|�
��dS)Nc��eZdZd�ZdZd�ZdS)�SMiscTestCase.test_shutdown_request_called_if_verify_request_false.<locals>.MyServerc��dS)NFr#rSs   r�verify_requestzbMiscTestCase.test_shutdown_request_called_if_verify_request_false.<locals>.MyServer.verify_request�s���urrc�f�|xjdz
c_tj�||��dS)NrF)�shutdown_calledr�r�r)r:rTs  rrzdMiscTestCase.test_shutdown_request_called_if_verify_request_false.<locals>.MyServer.shutdown_request�s5���$�$��)�$�$��&�7�7��g�F�F�F�F�FrN)r r!r"rcrerr#rrrWra�s>������
�
�
� �O�
G�
G�
G�
G�
GrrWrrF)r�r�rGr�rEryr�r�rg�closer
rfrer�)r:rWrlr�s    r�4test_shutdown_request_called_if_verify_request_falsezAMiscTestCase.test_shutdown_request_called_if_verify_request_false�s���	G�	G�	G�	G�	G�|�-�	G�	G�	G���4��)�\�%F�G�G���M�&�/��1C�D�D��	�	�	�&�'�(�(�(�	���	�	�	�����������/��3�3�3��������rc��Gd�dtjtj��}|tdftj��}td��D]G}t
j|j��5|�	��ddd��n#1swxYwY�H|�
t|j��d��|�
��dS)z�
        In #37193, users reported a memory leak
        due to the saving of every request thread. Ensure that
        not all threads are kept forever.
        c��eZdZdS)�2MiscTestCase.test_threads_reaped.<locals>.MyServerNrr#rrrWrjr�rrWr�
N)r�r�r�rGr�rrErrgr
�
assertLessrJ�_threadsr�)r:rWrlrs    r�test_threads_reapedz MiscTestCase.test_threads_reaped�s��	�	�	�	�	�|�2�L�4J�	�	�	���4��)�\�%F�G�G���r���	(�	(�A��)�&�*?�@�@�
(�
(��%�%�'�'�'�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(�
(����
(�
(�
(�
(������F�O�,�,�b�1�1�1��������s�+B�B	�B	N)r r!r"r^rgrnr#rrrVrV�sA������>�>�>����*����rrV�__main__)7r��
contextlibr/r*�selectrrErHrz�unittestr��test.supportr-rrrrrr.�requires�requires_working_socketr�rGr
r��
skipUnlessr��has_fork_supportr�r�rr�
SHORT_TIMEOUTrr�r�rr�r&�contextmanagerr2�TestCaser4r�r�r��BaseRequestHandlerrr�r�r�r$rVr �mainr#rr�<module>r}s���������	�	�	�	�	�	�	�	�
�
�
�
�
�
�
�
�
�
�
�
���������������������/�/�/�/�/�/�/�/�"�"�"�"�"�"�&�&�&�&�&�&�)�)�)�)�)�)�����i� � � ���$�$�D�$�1�1�1�������G�F�I�.�.��+��+�,=�,C�E�E���|�,��&�8�&�|�5G�H�H������}��!�\�7�8�8�8�8��
��
�
�
�
�
�
�,�";�".�"?�
�
�
�
�
�
�
�
�L�$=�$0�$C�
�
�
�
��4�4���4�c5�c5�c5�c5�c5�x�(�c5�c5�c5�L)3�)3�)3�)3�)3�x�(�)3�)3�)3�X
�
�
�
�
�,�0�
�
�
�(2�2�2�2�2��0�2�2�2������|�:������
�
�
�
�
�
��!:�<O�
�
�
�JF�JF�JF�JF�JF�x�(�JF�JF�JF�Z/�/�/�/�/�8�$�/�/�/�d�z����H�M�O�O�O�O�O��r