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

�Ke�����ddlZddlZddlZddlZddlZddlZddlmZddlmZ	ddl
ZddlZ
ddl
Z
ddlZ
ddlZddlZddlZddlZddlZddlmZddlmZddlmZddlmZddlmZmZmZ	ddlZn
#e$rdZYnwxYwejd�	��d
ddd
dge	j d��de!d��ddde	j"d��e	j"d��e	j"ejdd
dddd����d�gZ#Gd�dej$��Z%Gd�dej$��Z&Gd�d ej$��Z'Gd!�d"ej$��Z(Gd#�d$ej$��Z)Gd%�d&ej$��Z*dxa+xa,a-dNd'�Z.dOd(�Z/d)�Z0d*�Z1Gd+�d,ej$��Z2Gd-�d.e2��Z3Gd/�d0e2��Z4Gd1�d2e2��Z5Gd3�d4e2��Z6Gd5�d6e6��Z7Gd7�d8e6��Z8ej9edud9��Gd:�d;e2����Z:ej9edud9��Gd<�d=ej$����Z;Gd>�d?e2��Z<Gd@�dAej$��Z=GdB�dCe
jj>��Z?GdD�dEej$��Z@ejAdPdG���ZBGdH�dIej$��ZCGdJ�dKej$��ZDdL�ZEeFdMkrejG��dSdS)Q�N)�mock)�support)�	os_helper)�
socket_helper)�threading_helper)�	ALWAYS_EQ�LARGEST�SMALLESTT)�modulezfoo@bar.baz.spamgH�zns�@i�z.zyx.41�my dog has fleasFu	䀀怀耀z
regular value�20050210T11:41:23)	��r�
��)�r����rrrrr)�astring�afloat�anint�
ashortlong�anotherlist�abase64�b64bytes�b64bytearray�boolean�unicodeuukey䀀�	datetime1�	datetime2�	datetime3c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�XMLRPCTestCasec��tjtf��}tj|��}|�t|dd��dS)Nr)�	xmlrpclib�dumps�alist�loads�assertEqual)�self�dump�loads   �:/usr/local/apps/python3/lib/python3.11/test/test_xmlrpc.py�test_dump_loadzXMLRPCTestCase.test_dump_load2sF�����x�(�(����t�$�$�������Q���
�+�+�+�+�+�c�Z�tjdddddd��}|�|tjd����tj|f��}tj|d�	��\}}|\}|�||��|�t|��tj��|�|��tj|d
�	��\}}|\}|�||��|�t|��tj��|�|��tj|d���\}}|\}|�||��|�t|��tj��|�|��tj|d
���\}}|\}|�||��|�t|��tj��|�|��dS)NrrrrrrrT��use_builtin_typesF)�use_datetime�	�datetimer*r&�DateTimer'r)�assertIs�type�assertIsNone�r+�dt�s�result�m�newdts      r.�test_dump_bare_datetimez&XMLRPCTestCase.test_dump_bare_datetime7s���
�
�t�Q��B��B�
7�
7������Y�/�0C�D�D�E�E�E��O�R�E�"�"���O�A��>�>�>�	�����������#�#�#��
�
�d�5�k�k�8�#4�5�5�5����!�����O�A��?�?�?�	�����������#�#�#��
�
�d�5�k�k�9�#5�6�6�6����!�����O�A�D�9�9�9�	�����������#�#�#��
�
�d�5�k�k�8�#4�5�5�5����!�����O�A�E�:�:�:�	�����������#�#�#��
�
�d�5�k�k�9�#5�6�6�6����!�����r0c��tjdddddd��}|�|tjd����tj|f��}tj|d�	��\}}|\}|�||��|�t|��tj��|�|��tj|d
�	��\}}|\}|�||��|�t|��tj��|�|��dS)Nrrrrrrz00010210T11:41:23Tr2Fr5r;s      r.�test_datetime_before_1900z(XMLRPCTestCase.test_datetime_before_1900Ys!��
�
�q�1�b�"�b�"�
5�
5������Y�/�0C�D�D�E�E�E��O�R�E�"�"���O�A��>�>�>�	�����������#�#�#��
�
�d�5�k�k�8�#4�5�5�5����!�����O�A��?�?�?�	�����������#�#�#��
�
�d�5�k�k�9�#5�6�6�6����!�����r0c�,�tj��}tjtj|fd�����\\}}|�|jt��tj|fd���}|�|t��dS)NT��methodresponse)r&r7r)r'�assertIsInstance�value�str)r+�d�new_d�dummyr=s     r.�test_bug_1164912zXMLRPCTestCase.test_bug_1164912ks����� � ��%�O�I�O�Q�D�;?�-A�-A�-A�B�B���%�5����e�k�3�/�/�/�
�O�U�H�T�:�:�:�����a��%�%�%�%�%r0c���Gd�dt��}|��}d|_d|_tjtj|f����\\}}|�||j��dS)Nc��eZdZdS)�-XMLRPCTestCase.test_newstyle_class.<locals>.TN��__name__�
__module__�__qualname__�r0r.�TrPvs�������Dr0rV�d�Hello)�object�x�yr&r)r'r*�__dict__)r+rV�t�t2rLs     r.�test_newstyle_classz"XMLRPCTestCase.test_newstyle_classus���	�	�	�	�	��	�	�	�
�A�C�C��������"����!��)>�)>�?�?���"������Q�Z�(�(�(�(�(r0c�Z�|�ttjddzf��dS)Nr�c)�assertRaises�
OverflowErrorr&r'�r+s r.�test_dump_big_longz!XMLRPCTestCase.test_dump_big_long~s(�����-���1�b�5�(�C�C�C�C�Cr0c�X�|�ttjddif��dS)N�rr�r�rb�	TypeErrorr&r'rds r.�test_dump_bad_dictz!XMLRPCTestCase.test_dump_bad_dict�s(�����)�Y�_���|�o�F�F�F�F�Fr0c��gd�}ddd|g}|�|��|�ttj|f��dS)Nrgrh��)�appendrbrjr&r')r+�lr]s   r.�test_dump_recursive_seqz&XMLRPCTestCase.test_dump_recursive_seq�sI���G�G��
�q��1�I��	����������)�Y�_�q�d�;�;�;�;�;r0c�r�ddd�}d|d�}||d<|�ttj|f��dS)Nr)�1�2rh)�3rJr]ri�r+rJr]s   r.�test_dump_recursive_dictz'XMLRPCTestCase.test_dump_recursive_dict�sC����N�N����N�N����#�����)�Y�_�q�d�;�;�;�;�;r0c��tjdkr4|�ttjt
d��f��t	jtjtjf��|�ttjtjdzf��|�ttjtjdz
f��d�}t	j	��}|�
tj|��|�
tj|��|�t|j
tjdz|��|�t|j
tjdz
|��dS)Ni����rc��dS�NrU�r=s r.�dummy_writez5XMLRPCTestCase.test_dump_big_int.<locals>.dummy_write�����Dr0)�sys�maxsizerbrcr&r'�int�MAXINT�MININT�
Marshaller�dump_int�r+r}r?s   r.�test_dump_big_intz XMLRPCTestCase.test_dump_big_int�sZ���;�� � ����m�Y�_�"�5�z�z�m�
-�
-�
-�	���)�9�+;�<�=�=�=����-���$�+�A�-�/�	1�	1�	1����-���$�+�A�-�/�	1�	1�	1�	�	�	�
� �"�"��	�
�
�9�#�[�1�1�1�	�
�
�9�#�[�1�1�1����-���#�*�1�,�k�	;�	;�	;����-���#�*�1�,�k�	;�	;�	;�	;�	;r0c��tjtd��f��tjttj��ttj��f��tjttjdz��ttjdz
��f��d�}tj��}|�tj|��|�tj|��|�tjdz|��|�tjdz
|��dS)Nry�*c��dSr{rUr|s r.r}z4XMLRPCTestCase.test_dump_double.<locals>.dummy_write�r~r0)r&r'�floatr�r�r��dump_doubler�s   r.�test_dump_doublezXMLRPCTestCase.test_dump_double�s�����w���)�*�*�*����y�/�0�0��y�/�0�0�2�	3�	3�	3����y�/�"�4�5�5��y�/�"�4�5�5�7�	8�	8�	8�	�	�	�
� �"�"��	�
�
�i�&��4�4�4�	�
�
�i�&��4�4�4�	�
�
�i�&��+�[�9�9�9�	�
�
�i�&��+�[�9�9�9�9�9r0c��tdgz}tdgzf}tj|d���}|�|tj|��dd��|�ttj|f��dS)NT)�
allow_noner)r(r&r'r*r)rbrj)r+rH�arg1�strgs    r.�test_dump_nonezXMLRPCTestCase.test_dump_none�s������������ ����t��5�5�5������#�/�$�/�/��2�1�5�	7�	7�	7����)�Y�_�t�g�>�>�>�>�>r0c�f�ddi}tj|fd���}d|z}|�tj|��dd|��|�dd��}|�tj|��dd|��tj|fdd�	��}|�tj|��dd|��|�dd��}|�tj|��dd|��d
}tj|fd|���}|�tj|��dd|��|�tj|��d|��dS)
Nukey€¤u
value€¤�iso-8859-15��encodingz,<?xml version='1.0' encoding='iso-8859-15'?>r�xmlcharrefreplaceT)r�rFumethod€¤)r��
methodnamer)r&r'r*r)�encode)r+rHr�r�s    r.�test_dump_encodingz!XMLRPCTestCase.test_dump_encoding�s��� �"�$�����x�-�@�@�@��=��D��������.�.�q�1�!�4�e�<�<�<��{�{�=�*=�>�>��������.�.�q�1�!�4�e�<�<�<����x�-�.2�4�4�4��������.�.�q�1�!�4�e�<�<�<��{�{�=�*=�>�>��������.�.�q�1�!�4�e�<�<�<�'�
����x�-�*4�6�6�6��������.�.�q�1�!�4�e�<�<�<�������.�.�q�1�:�>�>�>�>�>r0c��d}|�|tj|����tttjfD�]}||��}tj|f��}tj|d���\}}|\}|�||��|�t|��t��|�	|��tj|d���\}}|\}|�||��|�t|��tj��|�	|����
dS)Nr
Tr2F)
r*r&�Binary�bytes�	bytearrayr'r)r8r9r:)r+�sample�type_rHr=r>r?�newvalues        r.�test_dump_byteszXMLRPCTestCase.test_dump_bytes�s5��$�������!1�&�!9�!9�:�:�:��I�y�'7�7�	!�	!�E��E�&�M�M�E�����)�)�A�!���T�B�B�B�I�F�A� �K�X����X�v�.�.�.��M�M�$�x�.�.�%�0�0�0����a� � � �!���U�C�C�C�I�F�A� �K�X����X�v�.�.�.��M�M�$�x�.�.�)�*:�;�;�;����a� � � � �	!�	!r0c���tj}d}|�|tj|��d}|�|tj|��d}|�|tj|��dS)Nz6<params><param><value><spam/></value></param></params>zT<params><param><value><array><value><spam/></value></array></value></param></params>z�<params><param><value><struct><member><name>a</name><value><spam/></value></member><member><name>b</name><value><spam/></value></member></struct></value></param></params>)r&�
ResponseErrorrbr))r+r��datas   r.�test_loads_unsupportedz%XMLRPCTestCase.test_loads_unsupported�su��!�/�
�G�����-���$�?�?�?�4��	
���-���$�?�?�?�5��	
���-���$�?�?�?�?�?r0c��d|z}tj|fi|��\}}|\}|�||��|�t	|��t	|����|�|��dS)Nz1<params><param><value>%s</value></param></params>)r&r)r*r8r9r:)r+r=rH�kwargsr,r>r?r�s        r.�check_loadszXMLRPCTestCase.check_loads�s~��B�Q�F���O�D�3�3�F�3�3�	����������5�)�)�)��
�
�d�8�n�n�d�5�k�k�2�2�2����!�����r0c���|j}|dd��|dd��|dd��|dd��|dd��|d	d��|d
d��|dd
��|dtjd����|ddd���|dtjd����|dt	jdddddd��d���|dddg��|dddd���dS)N�stringz<string>string</string>u4<string>𝔘𝔫𝔦𝔠𝔬𝔡𝔢 string</string>u#𝔘𝔫𝔦𝔠𝔬𝔡𝔢 stringz<int>2056183947</int>i��zz<int>-2056183947</int>iuq�z<i4>2056183947</i4>z<double>46093.78125</double>g���@z<boolean>0</boolean>Fz%<base64>AGJ5dGUgc3RyaW5n/w==</base64>s
byte string�Tr2z6<dateTime.iso8601>20050210T11:41:23</dateTime.iso8601>rrrrrrrzR<array><data><value><int>1</int></value><value><int>2</int></value></data></array>rz�<struct><member><name>b</name><value><int>2</int></value></member><member><name>a</name><value><int>1</int></value></member></struct>)�a�b)r�r&r�r7r6�r+�checks  r.�test_load_standard_typesz'XMLRPCTestCase.test_load_standard_types�s���� ��
��h��!�!�!�
��'��2�2�2�
��D�Fk�l�l�l�
��%�z�2�2�2�
��&��4�4�4�
��#�Z�0�0�0�
��,�k�:�:�:�
��$�e�,�,�,�
��5���5�6�6�	8�	8�	8�
��5�$��	>�	>�	>�	>�
��F�� �!4�5�5�	7�	7�	7�
��F����a��R��R�8�8� $�	&�	&�	&�	&�	�� �"#�Q��	)�	)�	)�	���"#��+�+�	-�	-�	-�	-�	-r0c��|j}|dd��|dd��|dd��|dd��|dd��|d	d
��|dd��|d
tjd����dS)Nz<nil/>z	<ex:nil/>z<i1>205</i1>��z<i2>20561</i2>iQPz<i8>9876543210</i8>l�`	z-<biginteger>98765432100123456789</biginteger>l5�?�4*UUz<float>93.78125</float>grW@z.<bigdecimal>9876543210.0123456789</bigdecimal>z9876543210.0123456789)r��decimal�Decimalr�s  r.�test_load_extension_typesz(XMLRPCTestCase.test_load_extension_typess���� ��
��h�����
��k�4� � � �
��n�c�"�"�"�
����&�&�&�
��#�Z�0�0�0�
��=�"�	$�	$�	$�
��'��2�2�2�
��>��o�5�6�6�	8�	8�	8�	8�	8r0c��|j}d}tj|��5d|dzz}|�t��5|d|�d�d��ddd��n#1swxYwY|�t��5|d|�d�d��ddd��n#1swxYwYddd��dS#1swxYwYdS)Ni�rsrz<int>z</int>z<biginteger>z
</biginteger>)r�r�adjust_int_max_str_digitsrb�
ValueError)r+r��	maxdigitsr=s    r.�test_limit_intzXMLRPCTestCase.test_limit_int$s���� ���	�
�
.�y�
9�
9�	=�	=��y�1�}�%�A��"�"�:�.�.�
/�
/���'�a�'�'�'��.�.�.�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/�
/����
/�
/�
/�
/��"�"�:�.�.�
=�
=���5�Q�5�5�5�t�<�<�<�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=����
=�
=�
=�
=�		=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=�	=�	=sY�#B8�A�B8�A"	�"B8�%A"	�&B8�B �B8� B$	�$B8�'B$	�(B8�8B<�?B<c��tj���}|�|�d��ddgif��dS)Nz
user@host.tldzhost.tld)�
AuthorizationzBasic dXNlcg==)�xmlrpc�client�	Transportr*�
get_host_info)r+�transps  r.�test_get_host_infoz!XMLRPCTestCase.test_get_host_info.s]����(�(�*�*������-�-�o�>�>�%�?�@�"�F�	G�	G�	G�	G�	Gr0c�.�	ddl}d}n#t$rd}YnwxYw	tj�d�����dS#t$r|�|d��YdSt$r|�	|��YdSwxYw)NrTFzhttps://localhost:9999z&xmlrpc client's error with SSL support)
�ssl�ImportErrorr�r��ServerProxy�bad_function�NotImplementedError�assertFalse�OSError�
assertTrue)r+r��has_ssls   r.�test_ssl_presencez XMLRPCTestCase.test_ssl_presence5s���	��J�J�J��G�G���	�	�	��G�G�G�	����	%��M�%�%�&>�?�?�L�L�N�N�N�N�N��"�	P�	P�	P����W�&N�O�O�O�O�O�O��	%�	%�	%��O�O�G�$�$�$�$�$�$�	%���s#�	���1A� B�2B�Bc�v��Gd�dtjj��}�fd�}tj�tjdf|���|��j��tj	|���}|�
��|�|j��dj�j
�}tj|��5}|�|���d��|�|���d��ddd��dS#1swxYwYdS)Nc�"�eZdZdZdZd�Zd�ZdS)�@XMLRPCTestCase.test_keepalive_disconnect.<locals>.RequestHandler�HTTP/1.1Fc��t|j�d����}|j�|��|jr	d|_dStjdd���}|�	��}|�
tjj
��|�dt|����|���|j�|��d|_d|_dS)N�Content-LengthT)rnrEF)r��headers�get�rfile�read�handled�close_connectionr&r'r��
send_response�http�
HTTPStatus�OK�send_header�len�end_headers�wfile�write)r+�length�responses   r.�do_POSTzHXMLRPCTestCase.test_keepalive_disconnect.<locals>.RequestHandler.do_POSTHs����T�\�-�-�.>�?�?�@�@���
����'�'�'��<��,0�D�)��F�$�?�4��E�E�E��#�?�?�,�,���"�"�4�?�#5�6�6�6�� � �!1�3�x�=�=�A�A�A�� � �"�"�"��
� � ��*�*�*�#���(-��%�%�%r0c��dSr{rU)r+�format�argss   r.�log_messagezLXMLRPCTestCase.test_keepalive_disconnect.<locals>.RequestHandler.log_messageWs���r0N)rRrSrT�protocol_versionr�r�r�rUr0r.�RequestHandlerr�Ds=������)���G�

.�

.�

.�
�
�
�
�
r0r�c����j�td������������dS�Nr)�socket�
settimeoutr��handle_request)�servers�r.�
run_serverz<XMLRPCTestCase.test_keepalive_disconnect.<locals>.run_server[sI����M�$�$�U�1�X�X�.�.�.��!�!�#�#�#��!�!�#�#�#�#�#r0r)�targetz
http://{}:{}/rn)r�r��BaseHTTPRequestHandler�
HTTPServerr�HOST�
addCleanup�server_close�	threading�Thread�start�joinr��server_addressr&r�r*�method)r+r�r��thread�url�pr�s      @r.�test_keepalive_disconnectz(XMLRPCTestCase.test_keepalive_disconnectCsu���	�	�	�	�	�T�[�?�	�	�	�.	$�	$�	$�	$�	$�
��'�'��);�Q�(?��P�P������+�,�,�,��!��4�4�4�������������$�$�$�$�o�$�f�&;�<��
�
"�3�
'�
'�	,�1����Q�X�X�Z�Z��+�+�+����Q�X�X�Z�Z��+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s�AD.�.D2�5D2N)rRrSrTr/rArCrMr_rerkrqrwr�r�r�r�r�r�r�r�r�r�r�r�rrUr0r.r$r$0sk������,�,�,�
���D���$&�&�&�)�)�)�D�D�D�G�G�G�<�<�<�<�<�<�;�;�;�,:�:�:� ?�?�?�?�?�?�*!�!�!�&@�@�@����-�-�-�68�8�8�=�=�=�G�G�G�%�%�%�%,�%,�%,�%,�%,r0r$c�N�eZdZGd�de��Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�SimpleXMLRPCDispatcherTestCasec��eZdZdS)�*SimpleXMLRPCDispatcherTestCase.DispatchExcNrQrUr0r.�DispatchExcrls������	�	r0rc����	d}�fd�}tj���}|�|�����j��5}|�d|��ddd��n#1swxYwY��|jj	|f����
|jj����
|jj��dS)Nrgc�.����|���r{)r)�paramsr+s �r.�dispatched_funczQSimpleXMLRPCDispatcherTestCase.test_call_registered_func.<locals>.dispatched_funcws����"�"�6�*�*�*r0r)
r�r��SimpleXMLRPCDispatcher�register_functionrbr�	_dispatchr*�	exceptionr�r:�	__cause__�__context__)r+�
exp_paramsr�
dispatcher�exc_ctxs`    r.�test_call_registered_funcz8SimpleXMLRPCDispatcherTestCase.test_call_registered_funcps7���2��
�	+�	+�	+�	+�	+��]�9�9�;�;�
��$�$�_�5�5�5�
�
�
�t�/�
0�
0�	@�G�� � �!2�J�?�?�?�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@����	@�	@�	@�	@�����*�/�*��?�?�?����'�+�5�6�6�6����'�+�7�8�8�8�8�8s�A:�:A>�A>c���	d}Gd�d��}tj���}|�|����|�|j��5}|�d|��ddd��n#1swxYwY|�|jj	|f��|�
|jj��|�
|jj��dS)Nrgc��eZdZd�ZdS)�OSimpleXMLRPCDispatcherTestCase.test_call_instance_func.<locals>.DispatchedClassc�6�t�|���r{�rr)r+r
s  r.rz_SimpleXMLRPCDispatcherTestCase.test_call_instance_func.<locals>.DispatchedClass.dispatched_func�s��4�@�@��H�H�Hr0N)rRrSrTrrUr0r.�DispatchedClassr�s(������
I�
I�
I�
I�
Ir0rr�
r�r�r�register_instancerbrrr*rr�r:rr)r+rrrrs     r.�test_call_instance_funcz6SimpleXMLRPCDispatcherTestCase.test_call_instance_func�sU��A��
�	I�	I�	I�	I�	I�	I�	I�	I��]�9�9�;�;�
��$�$�_�_�%6�%6�7�7�7�
�
�
�t�/�
0�
0�	@�G�� � �!2�J�?�?�?�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@�	@����	@�	@�	@�	@�����*�/�*��?�?�?����'�+�5�6�6�6����'�+�7�8�8�8�8�8s�&B	�	B
�B
c���	d}d}Gd�d��}tj���}|�|����|�|j��5}|�||��ddd��n#1swxYwY|�|jj	||f��|�
|jj��|�
|jj��dS)Nr�rgc��eZdZd�ZdS)�LSimpleXMLRPCDispatcherTestCase.test_call_dispatch_func.<locals>.TestInstancec�8�t�||���r{r)r+r�r
s   r.rzVSimpleXMLRPCDispatcherTestCase.test_call_dispatch_func.<locals>.TestInstance._dispatch�s��4�@�@��F�$�$�$r0N)rRrSrTrrUr0r.�TestInstancer!�s#������
$�
$�
$�
$�
$r0r#r)r+�
exp_methodrr#rrs      r.�test_call_dispatch_funcz6SimpleXMLRPCDispatcherTestCase.test_call_dispatch_func�sB��B��
��
�	$�	$�	$�	$�	$�	$�	$�	$�
�]�9�9�;�;�
��$�$�\�\�^�^�4�4�4�
�
�
�t�/�
0�
0�	9�G�� � ��Z�8�8�8�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9�	9����	9�	9�	9�	9�����*�/�*�j�1I�J�J�J����'�+�5�6�6�6����'�+�7�8�8�8�8�8s�(B�B�Bc��	tj���}|�dd���|�t
d��5|�dd��ddd��dS#1swxYwYdS)Nr���name��param)r�r�rr
�assertRaisesRegex�	Exceptionr�r+rs  r.�test_registered_func_is_nonez;SimpleXMLRPCDispatcherTestCase.test_registered_func_is_none�s���@��]�9�9�;�;�
��$�$�T��$�9�9�9�
�
#�
#�I�x�
8�
8�	7�	7�� � ��:�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�A6�6A:�=A:c��	tj���}|�t	����|�td��5|�dd��ddd��dS#1swxYwYdS�Nr�r))r�r�rrrYr+r,rr-s  r.�test_instance_has_no_funcz8SimpleXMLRPCDispatcherTestCase.test_instance_has_no_func�s���L��]�9�9�;�;�
��$�$�V�X�X�.�.�.�
�
#�
#�I�x�
8�
8�	7�	7�� � ��:�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�B�B�Bc���	tj���}|�td��5|�dd��ddd��dS#1swxYwYdSr0)r�r�rr+r,rr-s  r.�test_cannot_locate_funcz6SimpleXMLRPCDispatcherTestCase.test_cannot_locate_func�s���@��]�9�9�;�;�
�
�
#�
#�I�x�
8�
8�	7�	7�� � ��:�6�6�6�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7�	7����	7�	7�	7�	7�	7�	7s�A�A#�&A#N)rRrSrTr,rrrr%r.r1r3rUr0r.rrks������������i����9�9�9�$9�9�9�&9�9�9�*7�7�7�7�7�7�7�7�7�7�7r0rc��eZdZd�ZdS)�HelperTestCasec��|�tjd��d��|�tjd��d��|�tjd��d��dS)Nza&bza&amp;bza<bza&lt;bza>bza&gt;b)r*r&�escaperds r.�test_escapezHelperTestCase.test_escape�sk������)�%�0�0�)�<�<�<�����)�%�0�0�(�;�;�;�����)�%�0�0�(�;�;�;�;�;r0N)rRrSrTr8rUr0r.r5r5�s#������<�<�<�<�<r0r5c� �eZdZd�Zd�Zd�ZdS)�
FaultTestCasec���tjdd��}|�t|��d��|�t|��t	|����dS)Nr��
Test Faultz<Fault 42: 'Test Fault'>)r&�Faultr*�reprrI)r+�fs  r.�	test_reprzFaultTestCase.test_repr�sX���O�B��-�-������a���"<�=�=�=�����a���#�a�&�&�)�)�)�)�)r0c��tjdd��}tj|f��}tj|��\\}}|�|ddd���|�|d��tj���|��}|�tjtj|��dS)Nr�r<)�	faultCode�faultString)r&r=r'r)r*r�rb)r+r?r=�newfr?s     r.�test_dump_faultzFaultTestCase.test_dump_fault�s����O�B��-�-���O�Q�D�!�!���_�Q�'�'�
��������R��M�M�N�N�N�����D�!�!�!�� �"�"�(�(��+�+�����)�/�9�?�A�>�>�>�>�>r0c���|�ttjjt
d��|�tj�t
d����dS�N�__add�title)rb�AttributeErrorr�r��resolve_dotted_attributerIr�rds r.�test_dotted_attributez#FaultTestCase.test_dotted_attribute�sW��	
���.� �-�@�#�w�	P�	P�	P�����
�>�>�s�G�L�L�M�M�M�M�Mr0N)rRrSrTr@rErLrUr0r.r:r:�sF������*�*�*�
?�?�?�N�N�N�N�Nr0r:c�>�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�DateTimeTestCasec�R�tjd��5}tjgd���}||_tj��}t
j��}|�t|��tj
d|����ddd��dS#1swxYwYdS)Nztime.localtime)	i���r��1r��r�%Y%m%dT%H:%M:%S)r�patch�time�struct_time�return_value�	localtimer&r7r*rI�strftime)r+�localtime_mock�time_structrZr]s     r.�test_defaultzDateTimeTestCase.test_default�s���
�Z�(�
)�
)�	J�^��*�3�3�3�5�5�K�*5�N�'���(�(�I��"�$�$�A����S��V�V�!�]�+<�i�H�H�
J�
J�
J�
	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J����	J�	J�	J�	J�	J�	Js�A:B�B �#B c	���d}tj|��}|�t|��t	jdt	j|������dS�Ngl]�ޮ��ArU)r&r7r*rIrWr[rZrvs   r.�	test_timezDateTimeTestCase.test_time�s`������q�!�!������Q�����'8�$�.��:K�:K�L�L�	N�	N�	N�	N�	Nr0c�x�d}tj|��}|�t|��d��dS)N)	����	r�&�2rn�rz20070609T10:38:50)r&r7r*rIrvs   r.�test_time_tuplez DateTimeTestCase.test_time_tuple�s:��'����q�!�!������Q���!4�5�5�5�5�5r0c���tjd��}tj|��}|�t|��tjd|����dSr`)rWrZr&r7r*rIr[rvs   r.�test_time_structz!DateTimeTestCase.test_time_struct�sQ���N�,�-�-����q�!�!������Q�����/@�!�!D�!D�E�E�E�E�Er0c��tjdddddd��}tj|��}|�t	|��d��dS)Nrcrrrhrmrnz20070102T03:04:05)r6r&r7r*rIrvs   r.�test_datetime_datetimez'DateTimeTestCase.test_datetime_datetime�sO����d�1�Q�q��1�-�-����q�!�!������Q���!4�5�5�5�5�5r0c���tjdddddd��}tj|��}dt|��z}|�t|��|��dS)Nrcrrrhrmrnz%<DateTime '20070102T03:04:05' at %#x>)r6r&r7�idr*r>)r+rJr]�vals    r.r@zDateTimeTestCase.test_repr�s^����d�1�Q�q��1�-�-����q�!�!��
4�r�!�u�u�
<������a���#�&�&�&�&�&r0c
�0�d}tj��}|�|��tjtjdddddd����}|�||��tj|��}|�||��dS)Nz 20070908T07:11:13  rcre�rPr�
)r&r7�decoder6r*�	_datetime)r+rJ�t1�trefr^s     r.�test_decodezDateTimeTestCase.test_decodes���"��
�
�
!�
!��
�	�	�!�����!�(�"3�D��1�Q�r�"�"E�"E�F�F������T�"�"�"�
�
 ��
#�
#������T�"�"�"�"�"r0c�D�tj���}tj|�����}|�||k��|�||k��|tjd���z}|�||k��|�||k��|�d��}|�||k��|�||k��tj|�����}|�||k��|�||k��|�d��}|���}|�	|dk��|�||k��|�	|t|��k��|�||k��|�t��5|td��kddd��n#1swxYwY|�t��5||kddd��n#1swxYwY|�t��5|t|��kddd��n#1swxYwY|�t��5||kddd��n#1swxYwY|�|tk��|�	|tk��|�|tk��|�	|tk��|�|tk��|�	|tk��|�	|t k��|�|t k��|�	|t k��|�|t k��dS)Nrm)�secondsrU�asciii�)r6�nowr&r7�	timetupler��	timedeltar[r�r�r�rbrjr�rr	r
)r+r|�dtime�then�dstr�
dtime_then�dbytes�dtuples        r.�test_comparisonz DateTimeTestCase.test_comparisons}����#�#�%�%���"�3�=�=�?�?�3�3��	
������%�%�%�����u��%�%�%��X�'��2�2�2�2�������
�&�&�&�������%�%�%��|�|�-�.�.�������
�&�&�&������
�&�&�&��'����(8�(8�9�9�
����
�d�*�+�+�+�����z�)�*�*�*����W�%�%������������$��'�'�'�������(�(�(�����)�F�"3�"3�3�4�4�4�������(�(�(�
�
�
�y�
)�
)�	 �	 ��E�$�K�K���	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �
�
�
�y�
)�
)�	�	��F�N�N�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�
�
�y�
)�
)�	'�	'��Y�v�&�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'�
�
�
�y�
)�
)�	�	��V�O�O�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
�����*�+�+�+�����)�+�,�,�,�������(�(�(�������)�)�)������(�)�)�)�����'�)�*�*�*������)�*�*�*������(�)�)�)�����(�*�+�+�+������)�*�*�*�*�*sH�H4�4H8�;H8�I,�,I0�3I0�J1�1J5�8J5�K)�)K-�0K-N)rRrSrTr^rarirkrmr@rxr�rUr0r.rNrN�s�������J�J�J�N�N�N�6�6�6�
F�F�F�
6�6�6�
'�'�'�#�#�#�,+�,+�,+�,+�,+r0rNc� �eZdZd�Zd�Zd�ZdS)�BinaryTestCasec�r�tj��}|�t|��d��dS)N��r&r�r*rI)r+r]s  r.r^zBinaryTestCase.test_defaultEs2�����������Q����$�$�$�$�$r0c��d}tj|��}|�t|��t|d����dS�Nsabc123��zlatin-1r�rvs   r.�test_stringzBinaryTestCase.test_stringIsC��)����Q��������Q����Q�	�!2�!2�3�3�3�3�3r0c�n�d}tj|��}tj��}|�|��|�t
|��t
|d����tj|��}|�t
|��t
|d����dSr�)�base64�encodebytesr&r�rtr*rI�_binary)r+rJ�dervr^s     r.rxzBinaryTestCase.test_decodeNs���)��
�
��
"�
"��
�
�
�
��
�	�	�"�
�
�
�����R���#�a��"3�"3�4�4�4�
�
�r�
"�
"������R���#�a��"3�"3�4�4�4�4�4r0N)rRrSrTr^r�rxrUr0r.r�r�>sA������%�%�%�4�4�4�
5�5�5�5�5r0r�c��Gd�d��}Gd�dtjj��}|stjj}|d||dd���}	|���|j���\aadttfza	|�
��|���|���|�
t��|�
d	�d
��|j
d���}|�
d�
��d���}|��}	|�|	d���|���|dkr|���|dz}|dk�n#t$$rYnwxYw|j���da|���dS#|j���da|���wxYw)Nc�4�eZdZd�Zd�ZGd�d��ZdS)�&http_server.<locals>.TestInstanceClassc��||zSr{rU�r+rZr[s   r.�divz*http_server.<locals>.TestInstanceClass.div`�����6�Mr0c��|dkrdSdS�Nr��This is the div functionrU�r+r(s  r.�_methodHelpz2http_server.<locals>.TestInstanceClass._methodHelpc����u�}�}�1�1��}r0c�$�eZdZed���ZdS)�.http_server.<locals>.TestInstanceClass.Fixturec��dS)N�42rUrUr0r.�getDataz6http_server.<locals>.TestInstanceClass.Fixture.getDatahs���tr0N)rRrSrT�staticmethodr�rUr0r.�Fixturer�gs-������
�
�
��\�
�
�
r0r�N)rRrSrTr�r�r�rUr0r.�TestInstanceClassr�_sZ������	�	�	�	2�	2�	2�	�	�	�	�	�	�	�	�	�	r0r�c��eZdZd�ZdS)�#http_server.<locals>.MyXMLRPCServerc�l�|j���\}}|�d��||fS�NT�r��accept�setblocking�r+r=�ports   r.�get_requestz/http_server.<locals>.MyXMLRPCServer.get_requestm�6���k�(�(�*�*�G�A�t�
�M�M�$�����d�7�Nr0N�rRrSrTr�rUr0r.�MyXMLRPCServerr�l�#������	�	�	�	�	r0r���	localhostrF)r��logRequests�bind_and_activate�http://%s:%dc��|Sr{rU)rZs r.�<lambda>zhttp_server.<locals>.<lambda>�s���r0�têštc��	dSr�rUrUr0r.�my_functionz http_server.<locals>.my_function�s
��%��4r0�addr'c��||zSr{rU�rZr[s  r.�_zhttp_server.<locals>._�s���q�5�Lr0T)�allow_dotted_namesrr)r�r��SimpleXMLRPCServer�SimpleXMLRPCRequestHandler�server_bindr��getsockname�ADDR�PORT�URL�server_activate� register_introspection_functions�register_multicall_functionsr
�powr�setr��TimeoutError�close)
�evt�numrequests�requestHandlerr�r�r��servr�r��testInstances
          r.�http_serverr�^sa�����������������9�����B���A���>�*�N�#+�&+�u�F�F�F�D�#��������[�,�,�.�.�
��d�
�d�D�\�)���������-�-�/�/�/��)�)�+�+�+����s�#�#�#����{�{�H�5�5�5�	
�	�	�	�
 �	�	�
�	�	�U�	�	+�	+�	�	�
,�	+�	�(�(�*�*�����|���E�E�E����	�	�	��A�o�o����!�!�!��1��K��A�o�o����
�
�
���
����	
������������	�	�	�	�	��	
������������	�	�	�	���s+�D7F�G�
F�G�F�G�1G9c��Gd�d��}d�}Gd�dtjj��}|stjj}Gd�d|��}Gd�d	��}|d
|dd���}|j�d
��|���	|j���\aa	dttfza
|���gd�}	|	D]u}
|�|
tj�
����}|���|���|�|
fd�d���v|�|	d���t$��|�|	d���d�d��|�d|����|���|dkr|���|dz}|dk�n#t*$rYnwxYw|j���da	|���dS#|j���da	|���wxYw)Nc��eZdZd�Zd�ZdS)�,http_multi_server.<locals>.TestInstanceClassc��||zSr{rUr�s   r.r�z0http_multi_server.<locals>.TestInstanceClass.div�r�r0c��|dkrdSdSr�rUr�s  r.r�z8http_multi_server.<locals>.TestInstanceClass._methodHelp�r�r0N)rRrSrTr�r�rUr0r.r�r��s2������	�	�	�	2�	2�	2�	2�	2r0r�c��	dSr�rUrUr0r.r�z&http_multi_server.<locals>.my_function�s
��!��tr0c��eZdZd�ZdS)�)http_multi_server.<locals>.MyXMLRPCServerc�l�|j���\}}|�d��||fSr�r�r�s   r.r�z5http_multi_server.<locals>.MyXMLRPCServer.get_request�r�r0Nr�rUr0r.r�r��r�r0r�c��eZdZgZdS)�+http_multi_server.<locals>.MyRequestHandlerN)rRrSrT�	rpc_pathsrUr0r.�MyRequestHandlerr��s�������	�	�	r0r�c��eZdZdd�ZdS)�+http_multi_server.<locals>.BrokenDispatcherNc� �td���)Nzbroken dispatcher)�RuntimeError)r+r��dispatch_method�paths    r.�_marshaled_dispatchz?http_multi_server.<locals>.BrokenDispatcher._marshaled_dispatch�s���2�3�3�3r0�NN)rRrSrTr�rUr0r.�BrokenDispatcherr��s(������	4�	4�	4�	4�	4�	4r0r�r�F)r�r�rhr�)
�/foo�/foo/bar�/foo?k=v�	/foo#frag�
/foo?k=v#fragr��/�/RPC2�?k=v�#fragc��|Sr{rU)rs r.r�z#http_multi_server.<locals>.<lambda>�s��q�r0�testrrc��||zSr{rUr�s  r.r�z#http_multi_server.<locals>.<lambda>�s
��A�a�C�r0r��
/is/broken)r�r��MultiPathXMLRPCServerr�r�r�r�r�r�r�r�r��add_dispatcherrr�r�r
�get_dispatcherr�r�r�r�r�)r�r�r�r�r�r�r�r�r��pathsr�rJs            r.�http_multi_serverr�s��2�2�2�2�2�2�2�2�����������<�����B���A�������>����4�4�4�4�4�4�4�4��>�*�,<�&+�u�F�F�F�D��K���1����������"��[�,�,�.�.�
��d�
�d�D�\�)��������
�
�
��
�	:�	:�D��#�#�D�&�-�*N�*N�*P�*P�Q�Q�A�
�.�.�0�0�0�
�*�*�,�,�,�
���� 0� 0� 0�&�9�9�9�9����E�!�H�%�%�7�7��<�<�<����E�!�H�%�%�7�7����O�O�O����L�*:�*:�*<�*<�=�=�=����	�	�	��A�o�o����!�!�!��1��K��A�o�o����
�
�
���
����	
������������	�	�	�	�	��	
������������	�	�	�	���s+�E7H�I�
H�I�H�I�1Jc���		|jdks|j�dS|j�d��}n#t$rt	|��}YnwxYw|rd|���vrdSdSdS)NrT�X-exceptionztemporarily unavailable)�errcoder�r�rJrI�lower)�e�exc_messs  r.�is_unavailable_exceptionr�s���7�
��9��?�?�a�i�/��4��9�=�=��/�/���������q�6�6����������-����1A�1A�A�A��t���A�As�2�2�A�
Ac���|sd�S�fd�}|S)Nc��|Sr{rU)�funcs r.r�z)make_request_and_skipIf.<locals>.<lambda>�s��D�r0c����fd�}|S)Nc����	tjt�����n3#tjt
f$r}t
|��s�Yd}~nd}~wwxYwtj����r{)	r&r�r�r��
ProtocolErrorr�r�unittest�SkipTest)r+r�reasons  �r.�make_request_and_skipzImake_request_and_skipIf.<locals>.decorator.<locals>.make_request_and_skip�s����
��%�c�*�*�6�6�8�8�8�8���+�W�5�
�
�
�/��2�2������������
�����#�F�+�+�+s�+/�A�A�ArU)r
rrs  �r.�	decoratorz*make_request_and_skipIf.<locals>.decorator�s$���	,�	,�	,�	,�	,�%�$r0rU)�	conditionrrs ` r.�make_request_and_skipIfr�s7����!� � � �%�%�%�%�%��r0c�8�eZdZdZdZee��Zd�Zd�Z	dS)�BaseServerTestCaseNrc��dtjj_t	j��|_|j|j|jf}t	j	|j
|���}|���|�|j
��|j���|j���dS)NT�r�r�)r�r�r��_send_traceback_headerr��Eventr��
request_countr�r��
threadFuncr�r�r��wait�clear�r+�	serv_argsr�s   r.�setUpzBaseServerTestCase.setUps���BF��
�(�?��?�$�$����X�t�1�4�3F�G�	��!���y�I�I�I�������������$�$�$�	
��
�
������������r0c�d�|j���dtjj_dS�NF)r�rr�r�r�rrds r.�tearDownzBaseServerTestCase.tearDowns(����
�
����CH��
�(�?�?�?r0)
rRrSrTr�rr�r�rr!r$rUr0r.rrsP�������N��M���k�*�*�J�
�
�
�H�H�H�H�Hr0rc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	e
ejj
dkd	��d
���Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�SimpleServerTestCasec
�R�	tjt��}|�|�dd��d��dS#tjtf$rI}t|��s/|�|�dt|dd������Yd}~dSYd}~dSd}~wwxYw)Nrdrr���
r�r�)
r&r�r�r*r�r
r�r�fail�getattr�r+rrs   r.�test_simple1z!SimpleServerTestCase.test_simple1#s���	E��%�c�*�*�A����Q�U�U�1�Q�Z�Z��.�.�.�.�.���'��1�	E�	E�	E�+�A�.�.�
E��	�	�a�a�a���I�r�)B�)B�)B�C�D�D�D�D�D�D�D�D�D�
E�
E�
E�
E�
E�
E�����	E���s�AA�B&�8B!�!B&c
�`�d}d}	tjt��}|�|�||��||z��dS#tjtf$rI}t|��s/|�|�dt|dd������Yd}~dSYd}~dSd}~wwxYw)NuPŷtuhơnr)r�r�)
r&r�r�r*r�r
r�rr*r+�r+�start_string�
end_stringrrs     r.�
test_nonasciiz"SimpleServerTestCase.test_nonascii-s���C��;�
�	E��%�c�*�*�A����Q�U�U�<��<�<�)�J�6�
8�
8�
8�
8�
8���'��1�	E�	E�	E�+�A�.�.�
E��	�	�a�a�a���I�r�)B�)B�)B�C�D�D�D�D�D�D�D�D�D�
E�
E�
E�
E�
E�
E�����	E���s�AA�B-�$8B(�(B-c
�n�d}d}	tjtd���}|�|�||��||z��dS#tjtjf$rI}t|��s/|�	|�dt|dd������Yd}~dSYd}~dSd}~wwxYw)N�€�¤r�r�r)r�r��r&r�r�r*r�r
r��errorrr*r+r/s     r.�test_client_encodingz)SimpleServerTestCase.test_client_encoding:s������
�	E��%�c�M�B�B�B�A����Q�U�U�<��<�<�)�J�6�
8�
8�
8�
8�
8���'���6�	E�	E�	E�+�A�.�.�
E��	�	�a�a�a���I�r�)B�)B�)B�C�D�D�D�D�D�D�D�D�D�
E�
E�
E�
E�
E�
E�����	E���s�AA�B4�+8B/�/B4c
�^�	tjtd���}|�|�d��d��dS#tjtjf$rI}t|��s/|�	|�dt|dd������Yd}~dSYd}~dSd}~wwxYw)Nr{r�r�r)r�r�)r&r�r�r*�têštr
r�r7rr*r+r,s   r.�test_nonascii_methodnamez-SimpleServerTestCase.test_nonascii_methodnameHs���	E��%�c�G�<�<�<�A����Q�X�X�b�\�\�2�.�.�.�.�.���'���6�	E�	E�	E�+�A�.�.�
E��	�	�a�a�a���I�r�)B�)B�)B�C�D�D�D�D�D�D�D�D�D�
E�
E�
E�
E�
E�
E�����	E���s�AA�B,�#8B'�'B,c�n�tjtj�t
t����5}|�dd��|���}ddd��n#1swxYwY|�	|j
d��|�	|jd��dS)N�POSTz/this-is-not-validi�z	Not Found)�
contextlib�closingr�r��HTTPConnectionr�r��request�getresponser*�statusr)r+�connr�s   r.�test_404zSimpleServerTestCase.test_404Rs����
��� :� :�4�� F� F�
G�
G�	*�4��L�L��!5�6�6�6��'�'�)�)�H�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*�	
�����#�.�.�.������+�6�6�6�6�6s�+A4�4A8�;A8c
��tgd���}	tjt��}|j���}|�t|��|��dS#tjtf$rI}t|��s/|�
|�dt|dd������Yd}~dSYd}~dSd}~wwxYw)N)
r�r�r�r�r�zsystem.listMethodszsystem.methodHelpzsystem.methodSignaturezsystem.multicallr�r)r�r�)r�r&r�r��system�listMethodsr*r
r�rr*r+)r+�expected_methodsr�methrs     r.�test_introspection1z(SimpleServerTestCase.test_introspection1\s	��� +� +� +�,�,��	E��%�c�*�*�A��8�'�'�)�)�D����S��Y�Y�(8�9�9�9�9�9���'��1�	E�	E�	E�+�A�.�.�
E��	�	�a�a�a���I�r�)B�)B�)B�C�D�D�D�D�D�D�D�D�D�
E�
E�
E�
E�
E�
E�����	E���s�AA*�*C	�8C�C	c
�^�	tjt��}|j�d��}|�|d��dS#tjtf$rI}t|��s/|�	|�dt|dd������Yd}~dSYd}~dSd}~wwxYw)Nr�r�r)r�r��r&r�r�rG�
methodHelpr*r
r�rr*r+)r+r�divhelprs    r.�test_introspection2z(SimpleServerTestCase.test_introspection2ls���		E��%�c�*�*�A��h�)�)�%�0�0�G����W�&@�A�A�A�A�A���'��1�	E�	E�	E�+�A�.�.�
E��	�	�a�a�a���I�r�)B�)B�)B�C�D�D�D�D�D�D�D�D�D�
E�
E�
E�
E�
E�
E�����	E�����A	A
�
B,�#8B'�'B,rz)Docstrings are omitted with -O2 and abovec
�^�	tjt��}|j�d��}|�|d��dS#tjtf$rI}t|��s/|�	|�dt|dd������Yd}~dSYd}~dSd}~wwxYw)Nr�zThis is my functionr)r�r�rM)r+r�
myfunctionrs    r.�test_introspection3z(SimpleServerTestCase.test_introspection3xs���		E��%�c�*�*�A���,�,�]�;�;�J����Z�)>�?�?�?�?�?���'��1�	E�	E�	E�+�A�.�.�
E��	�	�a�a�a���I�r�)B�)B�)B�C�D�D�D�D�D�D�D�D�D�
E�
E�
E�
E�
E�
E�����	E���rQc
�^�	tjt��}|j�d��}|�|d��dS#tjtf$rI}t|��s/|�	|�dt|dd������Yd}~dSYd}~dSd}~wwxYw)Nr�zsignatures not supportedr)r�r�)r&r�r�rG�methodSignaturer*r
r�rr*r+)r+r�divsigrs    r.�test_introspection4z(SimpleServerTestCase.test_introspection4�s���	E��%�c�*�*�A��X�-�-�e�4�4�F����V�%?�@�@�@�@�@���'��1�	E�	E�	E�+�A�.�.�
E��	�	�a�a�a���I�r�)B�)B�)B�C�D�D�D�D�D�D�D�D�D�
E�
E�
E�
E�
E�
E�����	E���rQc
�J�	tjt��}tj|��}|�dd��|�dd��|�dd��|��\}}}|�|d��|�|d��|�|d��dS#tjtf$rI}t|��s/|�|�d	t|d
d������Yd}~dSYd}~dSd}~wwxYw)Nrrhrdrr�r�rnr(r)r�r�)
r&r�r��	MultiCallr�r�r�r*r
r�rr*r+)r+r�	multicall�
add_result�
pow_result�
div_resultrs       r.�test_multicallz#SimpleServerTestCase.test_multicall�sZ��	E��%�c�*�*�A�!�+�A�.�.�I��M�M�!�A�����M�M�!�A�����M�M�#�b�!�!�!�1:����.�J�
�J����Z��-�-�-����Z��.�.�.����Z��1�1�1�1�1���'��1�	E�	E�	E�+�A�.�.�
E��	�	�a�a�a���I�r�)B�)B�)B�C�D�D�D�D�D�D�D�D�D�
E�
E�
E�
E�
E�
E�����	E���s�B?C�D"�8D�D"c
��	tjt��}tj|��}|���|��}|�|jddd��|�|jddd��dS#tjtf$rI}t|��s/|�
|�dt|dd������Yd}~dSYd}~dSd}~wwxYw)	NrrBrrCz@<class 'Exception'>:method "this_is_not_exists" is not supportedr)r�r�)r&r�r�r[�this_is_not_existsr*�resultsr
r�rr*r+)r+rr\r>rs     r.�test_non_existing_multicallz0SimpleServerTestCase.test_non_existing_multicall�s<��	E��%�c�*�*�A�!�+�A�.�.�I��(�(�*�*�*��Y�[�[�F�
���V�^�A�.�{�;�Q�?�?�?����V�^�A�.�}�=�#�
$�
$�
$�
$�
$���'��1�	E�	E�	E�+�A�.�.�
E��	�	�a�a�a���I�r�)B�)B�)B�C�D�D�D�D�D�D�D�D�D�
E�
E�
E�
E�
E�
E�����	E���s�BB�C<�38C7�7C<c��|�ttjjt
d��|�tj�t
d����|���dSrG)rbrJr�r�rKrIr�r-rds r.rLz*SimpleServerTestCase.test_dotted_attribute�sk�����.� �-�@�#�w�	P�	P�	P�	
����
�>�>�s�G�L�L�M�M�M�	
�������r0c��tjdttfz��}|j���}|�|d��dS)N�http://%s:%d/RPC2r�)r&r�r�r�r�r�r*)r+r�r�s   r.�test_allow_dotted_names_truez1SimpleServerTestCase.test_allow_dotted_names_true�sK���&�':�d�D�\�'I�J�J���~�%�%�'�'������t�$�$�$�$�$r0c��tjdttfz��}|�|�dd��d��dS)Nrgr��éuaé)r&r�r�r�r*r��r+r�s  r.�test_unicode_hostz&SimpleServerTestCase.test_unicode_host�sF���&�':�d�D�\�'I�J�J��������C��0�0�'�:�:�:�:�:r0c��tjtjtt
f����5}|�dt�dt
�d��d����ddd��dS#1swxYwYdS)Nz@POST /RPC2 HTTP/1.0
Content-Length: 100

bye HTTP/1.1
Host: �:z2
Accept-Encoding: identity
Content-Length: 0

r{)r>r?r��create_connectionr�r��sendr�)r+rDs  r.�test_partial_postz&SimpleServerTestCase.test_partial_post�s���
�
�� 8�$��� F� F�
G�
G�	C�4��I�I�2� $�2�2�'+�2�2�2�
39�&��/�/�
C�
C�
C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C�	C����	C�	C�	C�	C�	C�	Cs�:A:�:A>�A>c�$�tjt��5}|�dd��|�|d��jd��ddd��n#1swxYwY|�|d��jd��dS)Nrrh�	transportr�)r&r�r�r��assertNotEqual�_connectionr*rks  r.�test_context_managerz)SimpleServerTestCase.test_context_manager�s���
�
"�3�
'�
'�	.�6��J�J�q�!���������{� 3� 3� ?� ,�
.�
.�
.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	
������,�,�8�%�	'�	'�	'�	'�	's�;A!�!A%�(A%c�
�	tjt��5}|�dd��ddd��n#1swxYwYn#tj$rYnwxYw|�|d��jd��dS)Nrr�rsr�)r&r�r�r�r=r*rurks  r.�!test_context_manager_method_errorz6SimpleServerTestCase.test_context_manager_method_error�s���	��&�s�+�+�
#�v��
�
�1�c�"�"�"�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#�
#����
#�
#�
#�
#�����	�	�	��D�	����������,�,�8�%�	'�	'�	'�	'�	's1�A
�>�A
�A�A
�A�A
�
A�AN)rRrSrTr-r2r8r;rErKrPrr�flags�optimizerTrXr`rdrLrhrlrqrvrxrUr0r.r&r&"sc������E�E�E�E�E�E�E�E�E�E�E�E�7�7�7�
E�
E�
E� 
E�
E�
E���S�Y�/�1�4�@�B�B�
E�
E�B�B�
E�E�E�E�E�E�E�"E�E�E�*���%�%�%�;�;�;�C�C�C�'�'�'�'�'�'�'�'r0r&c�,�eZdZedd���Zd�ZdS)�SimpleServerEncodingTestCaseNc�*�t|||d��dS)Nr�)r�)r�r�r�r�s    r.rz'SimpleServerEncodingTestCase.threadFunc�s���C��n�m�D�D�D�D�Dr0c
�j�d}d}	tjt��}|�|�||��||z��dS#tjtjf$rI}t|��s/|�	|�dt|dd������Yd}~dSYd}~dSd}~wwxYw)Nr4r5r)r�r�r6r/s     r.�test_server_encodingz1SimpleServerEncodingTestCase.test_server_encoding�s������
�	E��%�c�*�*�A����Q�U�U�<��<�<�)�J�6�
8�
8�
8�
8�
8���'���6�	E�	E�	E�+�A�.�.�
E��	�	�a�a�a���I�r�)B�)B�)B�C�D�D�D�D�D�D�D�D�D�
E�
E�
E�
E�
E�
E�����	E���s�AA�B2�)8B-�-B2r�)rRrSrTr�rrrUr0r.r|r|�sJ�������E�E�E��\�E�E�E�E�E�Er0r|c�j�eZdZee��ZdZd�Zd�Zd�Z	d�Z
d�Zd�Zd�Z
d	�Zd
�Zd�Zd�Zd
S)�MultiPathServerTestCaserc���tjtdz��}|�|�dd��d��|�tj|jdd��dS)Nr�rdrrr()r&r�r�r*r�rbr=r��r+rs  r.�
test_path1z"MultiPathServerTestCase.test_path1s\���!�#�f�*�-�-��������q����T�*�*�*����)�/�1�5�!�Q�7�7�7�7�7r0c���tjtdz��}|�|�dd��d��|�tj|jdd��dS)Nr�rdrr�)r&r�r�r*r�rbr=r�r�s  r.�
test_path2z"MultiPathServerTestCase.test_path2s\���!�#�j�.�1�1��������q����S�)�)�)����)�/�1�5�!�Q�7�7�7�7�7r0c��tjtdz��}|�tj|jdd��dS)Nr�rdrr�r&r�r�rbr=r�r�s  r.�
test_path3z"MultiPathServerTestCase.test_path3
s;���!�#�l�"2�3�3�����)�/�1�5�!�Q�7�7�7�7�7r0c��tjtdz��}|�tj|jdd��dS)Nz/invalidrdrrr�r�s  r.�test_invalid_pathz)MultiPathServerTestCase.test_invalid_paths:���!�#�j�.�1�1�����)�/�1�5�!�Q�7�7�7�7�7r0c��tjtdz��}|�|���d��dS)Nr��r&r�r�r*r�r�s  r.�test_path_query_fragmentz0MultiPathServerTestCase.test_path_query_fragments;���!�#�o�"5�6�6����������?�3�3�3�3�3r0c��tjtdz��}|�|���d��dS)Nr�r�r�s  r.�test_path_fragmentz*MultiPathServerTestCase.test_path_fragments:���!�#�k�/�2�2����������;�/�/�/�/�/r0c��tjtdz��}|�|���d��dS)Nr�r�r�s  r.�test_path_queryz'MultiPathServerTestCase.test_path_querys:���!�#�j�.�1�1����������:�.�.�.�.�.r0c��tjt��}|�|���d��dS)Nr�r�r�s  r.�test_empty_pathz'MultiPathServerTestCase.test_empty_paths6���!�#�&�&����������7�+�+�+�+�+r0c��tjtdz��}|�|���d��dS)Nr�r�r�s  r.�test_root_pathz&MultiPathServerTestCase.test_root_path"s:���!�#��)�,�,����������3�'�'�'�'�'r0c��tjtdz��}|�|���d��dS)Nr�r�r�s  r.�test_empty_path_queryz-MultiPathServerTestCase.test_empty_path_query&s:���!�#��,�/�/����������6�*�*�*�*�*r0c��tjtdz��}|�|���d��dS)Nr�r�r�s  r.�test_empty_path_fragmentz0MultiPathServerTestCase.test_empty_path_fragment*s:���!�#��-�0�0����������7�+�+�+�+�+r0N)rRrSrTr�rrrr�r�r�r�r�r�r�r�r�r�r�rUr0r.r�r��s���������/�0�0�J��M�8�8�8�
8�8�8�
8�8�8�8�8�8�4�4�4�0�0�0�/�/�/�,�,�,�(�(�(�+�+�+�,�,�,�,�,r0r�c�H�eZdZGd�dejj��ZeZd�ZdS)�BaseKeepaliveServerTestCasec�:�eZdZejjZdZgZd�Z	d�Z
dS)�*BaseKeepaliveServerTestCase.RequestHandlerr�c��|j�g��t|j��dz
|_|j�|��Sr�)�
myRequestsror��reqidx�parentClass�handlerds r.r�z1BaseKeepaliveServerTestCase.RequestHandler.handle8sE���O�"�"�2�&�&�&��d�o�.�.�q�0�D�K��#�*�*�4�0�0�0r0c��|j�|��}|j|j�|j��|Sr{)r��handle_one_requestr�r�ro�raw_requestline)r+r>s  r.r�z=BaseKeepaliveServerTestCase.RequestHandler.handle_one_request<s=���%�8�8��>�>�F��O�D�K�(�/�/��0D�E�E�E��Mr0N)rRrSrTr�r�r�r�r�r�r�r�rUr0r.r�r�4sG�������m�>��%���
�	1�	1�	1�	�	�	�	�	r0r�c�N�g|j_t�|��Sr{)r�r�rr!rds r.r!z!BaseKeepaliveServerTestCase.setUpBs!��)+���&�!�'�'��-�-�-r0N)	rRrSrTr�r�r�r�r�r!rUr0r.r�r�1sY�������������A����$�N�.�.�.�.�.r0r�c��eZdZd�ZdS)�KeepaliveServerTestCase1c��tjt��}|�|�dd��d��|�|�dd��d��|�|�dd��d��|d����|�t|jj��d��|�t|jjd��d��dS)Nrdrrr(r�rrr�	r&r�r�r*r�r�r�r��assertGreaterEqualr�s  r.�test_twoz!KeepaliveServerTestCase1.test_twoJs����!�#�&�&��������q����T�*�*�*�������q����T�*�*�*�������q����T�*�*�*����'�
�
����	
����T�0�;�<�<�a�@�@�@�	
����D�$7�$B�2�$F� G� G��K�K�K�K�Kr0N)rRrSrTr�rUr0r.r�r�Is(������
L�
L�
L�
L�
Lr0r�c��eZdZdZd�Zd�ZdS)�KeepaliveServerTestCase2rc��tjt��}|�|�dd��d��|�|�dd��d��|�|�dd��d��|d����|�|�dd��d��|�|�dd��d��|�|�dd��d��|d����|�t|jj��d��|�t|jjd��d��|�t|jjd��d��dS)Nrdrrr(r�rr���r�r�s  r.�
test_closez#KeepaliveServerTestCase2.test_close`s����!�#�&�&��������q����T�*�*�*�������q����T�*�*�*�������q����T�*�*�*����'�
�
����������q����T�*�*�*�������q����T�*�*�*�������q����T�*�*�*����'�
�
����	
����T�0�;�<�<�a�@�@�@�����D�$7�$B�2�$F� G� G��K�K�K�����D�$7�$B�2�$F� G� G��K�K�K�K�Kr0c��tjt��}|�|�dd��d��|d�����|�|�dd��d��|d����|�t
|jj��d��dS)Nrdrrr(rsr�r)	r&r�r�r*r�r�r�r�r�r�s  r.�test_transportz'KeepaliveServerTestCase2.test_transportss����!�#�&�&��������q����T�*�*�*�	��+��������������q����T�*�*�*����'�
�
��������T�0�;�<�<�a�@�@�@�@�@r0N)rRrSrTrr�r�rUr0r.r�r�\s?�������M�L�L�L�&A�A�A�A�Ar0r�z
requires gzipc��eZdZGd�dejj��ZeZGd�dej	��Z	d�Z
d�Zd�Zd�Z
d	S)
�GzipServerTestCasec�0�eZdZejjZdZd�ZdS)�!GzipServerTestCase.RequestHandlerr�c�~�t|jd��|j_|j�|��S)N�content-length)r�r��	__class__�content_lengthr�r�rds r.r�z)GzipServerTestCase.RequestHandler.do_POST�s3��,/���=M�0N�,O�,O�D�N�)��#�+�+�D�1�1�1r0N)	rRrSrTr�r�r�r�r�r�rUr0r.r�r��s3�������m�>��%��	2�	2�	2�	2�	2r0r�c��eZdZdZd�Zd�ZdS)�GzipServerTestCase.TransportFc��t|�dd����|_tj�||��S)Nr�r)r��	getheader�response_lengthr&r��parse_response)r+r�s  r.r�z+GzipServerTestCase.Transport.parse_response�s<��!$�X�%7�%7�8H�!�%L�%L�!M�!M�D� ��&�5�5�d�H�E�E�Er0c�~�|jr|�dd��tj�|||��S)NzContent-Encoding�gzip)�	fake_gzip�	putheaderr&r��send_content)r+�
connection�bodys   r.r�z)GzipServerTestCase.Transport.send_content�s?���~�
A��$�$�%7��@�@�@��&�3�3�D�*�d�K�K�Kr0N)rRrSrTr�r�r�rUr0r.r�r��s?�������	�	F�	F�	F�	L�	L�	L�	L�	Lr0r�c�:�t�|��dSr{)rr!rds r.r!zGzipServerTestCase.setUp�s��� � ��&�&�&�&�&r0c��|���}d|_tjt|���}|�|�dd��d��|jj}d|_|�|�dd��d��|jj}|�	||k��|d����dS�N�rsrdrrr(rr�)
r��encode_thresholdr&r�r�r*r�r�r�r�)r+r]rr�r�s     r.�test_gzip_requestz$GzipServerTestCase.test_gzip_request�s����N�N����!����!�#��3�3�3��������q����T�*�*�*���.�����������q����T�*�*�*���.������!��������'�
�
�����r0c�j�|���}d|_d|_tjt
|���}|�tjtj	d����}|5|�
dd��ddd��n#1swxYwY|d����dS)NTr�z\b400\brdrrr�)r�r�r�r&r�r�r+r
�re�compiler�)r+r]r�cms    r.�test_bad_gzip_requestz(GzipServerTestCase.test_bad_gzip_request�s����N�N����!�������!�#��3�3�3��
�
#�
#�I�$;�$&�J�z�$:�$:�<�<��
�	�	�
�E�E�!�Q�K�K�K�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	����'�
�
�����s�2B�B�Bc���|���}tjt|���}|jj}d|j_|�|�dd��d��|j}d|j_|�|�dd��d��|d����|j}||j_|�	||k��dSr�)
r�r&r�r�r�r�r*r�r�r�)r+r]r�oldr�r�s      r.�test_gzip_responsez%GzipServerTestCase.test_gzip_response�s����N�N�����!�#��3�3�3���!�2��/3���,�������q����T�*�*�*�
���/0���,�������q����T�*�*�*����'�
�
����
���/2���,�����!������r0N)rRrSrTr�r�r�r�r�r&r�r!r�r�r�rUr0r.r�r�~s�������2�2�2�2�2���A�2�2�2�$�N�L�L�L�L�L�I�'�L�L�L�'�'�'�
�
�
�	�	�	�����r0r�c��eZdZd�ZdS)�GzipUtilTestCasec��d}d|z}tj|��}tj|��}|�t	|��|��d|dzz}tj|��}|�td��5tj|��ddd��n#1swxYwYtj|d���dS)Ni@�rz#max gzipped payload length exceededr)�
max_decode)r&�gzip_encode�gzip_decoder*r�r+r�)r+�max_gzip_decoder��encoded�decodeds     r.�test_gzip_decode_limitz'GzipUtilTestCase.test_gzip_decode_limit�s
��*����&���'��-�-���'��0�0������W����7�7�7���!�+�,���'��-�-��
�
#�
#�J�$I�K�K�	+�	+��!�'�*�*�*�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+�	+����	+�	+�	+�	+�	��g�"�5�5�5�5�5�5s�
B+�+B/�2B/N)rRrSrTr�rUr0r.r�r��s#������6�6�6�6�6r0r�c�~��eZdZGd�dejj��ZeZgd�Z�fd�Z	d�Z
d�Zd�Zd�Z
d	�Zd
�Z�xZS)�HeadersServerTestCasec�"��eZdZdZ�fd�Z�xZS)�$HeadersServerTestCase.RequestHandlerNc�f��|j|j_t�����Sr{)r�r��test_headers�superr��r+r�s �r.r�z,HeadersServerTestCase.RequestHandler.do_POST�s#���*.�,�D�N�'��7�7�?�?�$�$�$r0)rRrSrTr�r��
__classcell__�r�s@r.r�r��s=���������	%�	%�	%�	%�	%�	%�	%�	%�	%r0r�)�HostzAccept-EncodingzContent-Typez
User-Agentr�c�\��d|j_t�����Sr{)r�r�r�r!r�s �r.r!zHeadersServerTestCase.setUp�s ���+/���(��w�w�}�}���r0c�b�t|jt|�����z��}|�t|�����|��|���D].\}}|�|�|��|���/dSr{)�sorted�standard_headers�list�keys�assertListEqual�itemsr*r�)r+r��
additional�
expected_keys�keyrHs      r.�assertContainsAdditionalHeadersz5HeadersServerTestCase.assertContainsAdditionalHeaders�s����t�4�t�J�O�O�<M�<M�7N�7N�N�O�O�
����V�G�L�L�N�N�3�3�]�C�C�C�$�*�*�,�,�	6�	6�J�C�����W�[�[��-�-�u�5�5�5�5�	6�	6r0c���tjtdg���}|�|�dd��d��|jj}|�|ddi��dS)N��X-Test�foo�r�rdrrr(r�r��r&r�r�r*r�r�r�r��r+rr�s   r.�test_headerz!HeadersServerTestCase.test_header�si���!�#�0A�/B�C�C�C��������q�!���d�+�+�+��%�2���,�,�W�x��6G�H�H�H�H�Hr0c���tjtddg���}|�|�dd��d��|jj}|�|ddd	���dS)
Nr�)�
X-Test-Second�barr�rdrrr(r�r)r�rrrs   r.�test_header_manyz&HeadersServerTestCase.test_header_many�s����!��+�-E�F�
H�
H�
H��������q�!���d�+�+�+��%�2���,�,����>�>�	@�	@�	@�	@�	@r0c���tjtg���}|�|�dd��d��|jj}|�|i��dS)Nr�rdrrr(rrs   r.�test_header_emptyz'HeadersServerTestCase.test_header_empty�s`���!�#�r�2�2�2��������q�!���d�+�+�+��%�2���,�,�W�b�9�9�9�9�9r0c���tjtd���}|�|�dd��d��|jj}|�|ddi��dS)N)r�r�rdrrr(r�r�rrs   r.�test_header_tuplez'HeadersServerTestCase.test_header_tuplesf���!�#�/C�D�D�D��������q�!���d�+�+�+��%�2���,�,�W�x��6G�H�H�H�H�Hr0c��tjtddi������}|�|�dd��d��|jj}|�|ddi��dS)Nr�r�r�rdrrr()	r&r�r�r�r*r�r�r�r�rs   r.�test_header_itemsz'HeadersServerTestCase.test_header_itemssv���!�#��%�/@�/F�/F�/H�/H�I�I�I��������q�!���d�+�+�+��%�2���,�,�W�x��6G�H�H�H�H�Hr0)rRrSrTr�r�r�r�r�r�r!r�rrrr
rr�r�s@r.r�r��s��������%�%�%�%�%���A�%�%�%�$�N����������6�6�6�I�I�I�@�@�@�:�:�:�I�I�I�I�I�I�I�I�I�Ir0r�c� �eZdZd�Zd�Zd�ZdS)�ServerProxyTestCasec�R�tj�|��d|_dS)Nzhttp://fake.localhost)r�TestCaser!rrds r.r!zServerProxyTestCase.setUps&�������%�%�%�+����r0c��tj|j��}|�|d����d��dS)Nr�)r&r�rr*r�s  r.r�zServerProxyTestCase.test_closes>���!�$�(�+�+��������7�����t�,�,�,�,�,r0c��tj��}tj|j|���}|�|d��|��dS)Nr�rs)r&r�r�rr*)r+r]rs   r.r�z"ServerProxyTestCase.test_transportsK����!�!���!�$�(�a�8�8�8�������;����+�+�+�+�+r0N)rRrSrTr!r�r�rUr0r.rrsA������+�+�+�-�-�-�,�,�,�,�,r0rc� ��eZdZd�fd�	Z�xZS)�FailingMessageClassNc���|���}|dkrdSt���||��S)Nr�zI am broken)rr�r�)r+r��failobjr�s   �r.r�zFailingMessageClass.get(s9����i�i�k�k���"�"�"� �=��w�w�{�{�3��(�(�(r0r{)rRrSrTr�r�r�s@r.rr's=�������)�)�)�)�)�)�)�)�)�)r0rc�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�FailingServerTestCasec�>�tj��|_|jdf}tjt|���}|���|�|j��|j���|j�	��dS)Nrr)
r�rr�r�r�r�r�r�rrrs   r.r!zFailingServerTestCase.setUp0s{���?�$�$����X�q�M�	��!��9�E�E�E�������������$�$�$�	
��
�
������������r0c��|j���dtjj_tjj}|tjj	_
dSr#)r�rr�r�r�rr�r��HTTPMessager��MessageClass)r+�
default_classs  r.r$zFailingServerTestCase.tearDown<s;����
�
����BG��
�(�?���/�
�@M��
�0�=�=�=r0c
���tjjj}|�|d��dtjj_	tjt��}|�|�dd��d��dS#t
j	tf$rI}t|��s/|�|�dt|dd������Yd}~dSYd}~dSd}~wwxYw)	NFTrdrrr(r)r�r�)r�r�r�rr*r&r�r�r�r
r�rr*r+)r+�flagvalrrs    r.�
test_basicz FailingServerTestCase.test_basicEs���-�2�I������%�(�(�(�CG��
�(�?�	E��%�c�*�*�A����Q�U�U�1�Q�Z�Z��.�.�.�.�.���'��1�	E�	E�	E�+�A�.�.�
E��	�	�a�a�a���I�r�)B�)B�)B�C�D�D�D�D�D�D�D�D�D�
E�
E�
E�
E�
E�
E�����	E���s�AB	�	C(�8C#�#C(c� �ttjj_	tjt��}|�dd��|�	d��dS#t
j
tf$r�}t|��stt|d��rj|�|j�d��du��|�|j�d��du��Yd}~dSYd}~dSYd}~dSd}~wwxYw)Nrdrr�ProtocolError not raisedr�r�X-traceback)rr�r�r�rr&r�r�r�r*r
r�r�hasattrr�r�r�r,s   r.�test_fail_no_infoz'FailingServerTestCase.test_fail_no_infoWsD��@S��
�0�=�
	2��%�c�*�*�A�
�E�E�!�A�J�J�J�
�I�I�0�1�1�1�1�1���'��1�	F�	F�	F�+�A�.�.�
F�7�1�i�3H�3H�
F�����	�
�
�m� <� <�� D�E�E�E�����	�
�
�m� <� <�� D�E�E�E�E�E�E�E�E�E�
F�
F�
F�
F�
F�
F�
F�
F�
F�
F�
F�
F�����	F���s�/A#�#D
�9A=D�D
c�N�ttjj_dtjj_	tjt��}|�
dd��|�d��dS#tjtf$r�}t|��sut|d��rkd}|�|j�d��|��|�|j�d��du��Yd}~dSYd}~dSYd}~dSd}~wwxYw)	NTrdrrr"r�z5invalid literal for int() with base 10: 'I am broken'rr#)rr�r�r�rr�rr&r�r�r�r*r
r�rr$r*r�r�r�)r+rr�expected_errs    r.�test_fail_with_infoz)FailingServerTestCase.test_fail_with_infogsY��@S��
�0�=�CG��
�(�?�	2��%�c�*�*�A�
�E�E�!�A�J�J�J�
�I�I�0�1�1�1�1�1���'��1�	J�	J�	J�+�A�.�.�
J�7�1�i�3H�3H�
J�V��� � �����}�!=�!=�|�L�L�L�����	�
�
�m� <� <�D� H�I�I�I�I�I�I�I�I�I�	
J�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J�����	J���s�/A9�9D$�A>D�D$N)rRrSrTr!r$r r%r(rUr0r.rr/se������
�
�
�N�N�N�E�E�E�$2�2�2� 2�2�2�2�2r0r�utf-8c#��K�	tj}tjtj��|���t_	tjV�|t_dS#|t_wxYw)Nr�)r�stdout�io�
TextIOWrapper�BytesIO)r��orig_stdouts  r.�captured_stdoutr0}sb������*�K��!�"�*�,�,��B�B�B�C�J�!��j���� ��
�
�
��[��
� � � � s�A�A,c�&�eZdZd�Zd�Zd�Zd�ZdS)�CGIHandlerTestCasec�L�tj���|_dSr{)r�r��CGIXMLRPCRequestHandler�cgirds r.r!zCGIHandlerTestCase.setUp�s���=�8�8�:�:����r0c��d|_dSr{)r5rds r.r$zCGIHandlerTestCase.tearDown�s
������r0c�:�tj��5}d|d<t|jj���5}|j���ddd��n#1swxYwY|�d��|���}|���d}d�	|���dd���}|�
|d	��|�
|d
��ddd��dS#1swxYwYdS)N�GET�REQUEST_METHODr�rr� rrm�400zBad Request)r�EnvironmentVarGuardr0r5r�r��seekr��splitr�r*)r+�env�data_outr�rC�messages      r.�test_cgi_getzCGIHandlerTestCase.test_cgi_get�s|��
�
*�
,�
,�	5��$)�C� �!�!�$�(�*;�<�<�<�
*����'�'�)�)�)�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*����
*�
*�
*�
*�
�M�M�!�����]�]�_�_�F��\�\�^�^�A�&�F��h�h�v�|�|�~�~�a��c�2�3�3�G����V�U�+�+�+����W�m�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s5� D�A�D�A	�D�!A	�"B!D�D�Dc�|�d}tj��5}t|jj���5}tj��5}|�|��|�d��tt|����|d<|j���ddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwY|�d��|���}|�
tjtj|dd���||�d��d�}|�t't)jd|���d����t|����dS)	Naw<?xml version='1.0'?>
        <methodCall>
            <methodName>test_method</methodName>
            <params>
                <param>
                    <value><string>foo</string></value>
                </param>
                <param>
                    <value><string>bar</string></value>
                </param>
            </params>
        </methodCall>
        r�r�CONTENT_LENGTH�,z<?xmlzContent-Length: (\d+)r)rr<r0r5r�r�captured_stdinr�r=rIr�r�r�rbr&r=r)�findr*r�r��search�group)r+r�r?r@�data_inr��contents       r.�test_cgi_xmlrpc_responsez+CGIHandlerTestCase.test_cgi_xmlrpc_response�s;�����
*�
,�
,�	&��
�d�h�&7�
8�
8�
8�	&�<D�
�
#�
%�
%�	&�)0��M�M�$�����L�L��O�O�O�$'��D�	�	�N�N�C� �!��H�#�#�%�%�%�
	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	�
�
�a����������	
���)�/�9�?�F�2�3�3�K�H�H�H�����W�-�-�.�.�/�������	�2�F�;�;�A�A�!�D�D�E�E���L�L�	�	�	�	�	sY�C"�C�A#B4�(C�4B8�8C�;B8�<C�?C"�C	�C"�C	�C"�"C&�)C&N)rRrSrTr!r$rBrLrUr0r.r2r2�sP������;�;�;����5�5�5�$(�(�(�(�(r0r2c� �eZdZd�Zd�Zd�ZdS)�UseBuiltinTypesTestCasec�d��g�_d}tjdddddd��}tj||fd��}�fd	�}tj�d
dd
���}|�|��|�|����	t�j��d���j\}}��	�j||g����t|��tj����t|��t��dS)
Nr
i�rn�����foobarc�<���j�|��dSr{)�log�extend)r�r+s �r.rTz>UseBuiltinTypesTestCase.test_use_builtin_types.<locals>.foobar�s����H�O�O�D�!�!�!�!�!r0T)r�r�r3r)rVr6r&r'r�r�rr
r�r*r�r8r9r�)r+�expected_bytes�
expected_date�	marshaledrT�handler�mybytes�mydates`       r.�test_use_builtin_typesz.UseBuiltinTypesTestCase.test_use_builtin_types�s*������,�� �)�$��2�r�2�r�B�B�
��O�^�]�$C�X�N�N�	�	"�	"�	"�	"�	"��-�6�6��d�d�7�D�D���!�!�&�)�)�)��#�#�I�.�.�.�����T�X����*�*�*��(���������N�M�#B�C�C�C��
�
�d�6�l�l�H�$5�6�6�6��
�
�d�7�m�m�U�+�+�+�+�+r0c�z�tj�d���}|�|j��dS)NTr2)r�r�r4r�r3)r+r[s  r.�*test_cgihandler_has_use_builtin_types_flagzBUseBuiltinTypesTestCase.test_cgihandler_has_use_builtin_types_flag�s5���-�7�7�$�7�O�O������1�2�2�2�2�2r0c��tj�dd���}|���|�|j��dS)Nr�Tr2)r�r�r�r�r�r3rks  r.�,test_xmlrpcserver_has_use_builtin_types_flagzDUseBuiltinTypesTestCase.test_xmlrpcserver_has_use_builtin_types_flag�sQ����1�1�2B�"�2�$�$������������0�1�1�1�1�1r0N)rRrSrTr^r`rbrUr0r.rNrN�sA������,�,�,�(3�3�3�2�2�2�2�2r0rNc�d�tj��}tjtjg|�R�dSr{)r�threading_setupr�addModuleCleanup�threading_cleanup)�thread_infos r.�setUpModulerh�s3��"�2�4�4�K���.�@�O�;�O�O�O�O�O�Or0�__main__r�r{)r))Hr�r6r�rrWrr�
xmlrpc.clientr�r&�
xmlrpc.serverr��http.clientr��http.serverr�r�r�r,r>r�r�test.supportrrrrr	r
r�r��requires_working_socketr�r�r7r(rr$rr5r:rNr�r�r�r�r�rrrrr&r|r�r�r�r��skipIfr�r�r�rrrr�contextmanagerr0r2rNrhrR�mainrUr0r.�<module>rss"��
�
�
�
���������
�
�
�
���������������!�!�!�!�!�!�����������������
�
�
�
�����	�	�	�	�	�	�	�	�����������"�"�"�"�"�"�&�&�&�&�&�&�)�)�)�)�)�)�5�5�5�5�5�5�5�5�5�5���K�K�K�K�������D�D�D����� ���t�,�,�,�,�'����#��%�Y�%�&9�:�:�)�#�)�$7�8�8��)�'�)�y�)�*=�>�>�)�y�)�;�=�=�)�y�)�)��)�$��2�r�2�r�B�B�D�D�
�
�	
��$x,�x,�x,�x,�x,�X�&�x,�x,�x,�v	T7�T7�T7�T7�T7�X�%6�T7�T7�T7�n<�<�<�<�<�X�&�<�<�<�N�N�N�N�N�H�%�N�N�N�.\+�\+�\+�\+�\+�x�(�\+�\+�\+�~5�5�5�5�5�X�&�5�5�5�6����t�c�
>�>�>�>�@D�D�D�D�P���"��� H�H�H�H�H��*�H�H�H�6D'�D'�D'�D'�D'�-�D'�D'�D'�NE�E�E�E�E�#5�E�E�E�(/,�/,�/,�/,�/,�0�/,�/,�/,�h.�.�.�.�.�"4�.�.�.�0L�L�L�L�L�:�L�L�L�&A�A�A�A�A�:�A�A�A�D�������/�/�@�@�@�@�@�+�@�@�0�/�@�F�������/�/�6�6�6�6�6�x�(�6�6�0�/�6�&:I�:I�:I�:I�:I�.�:I�:I�:I�|,�,�,�,�,�(�+�,�,�,�&)�)�)�)�)�$�+�1�)�)�)�K2�K2�K2�K2�K2�H�-�K2�K2�K2�\��	!�	!�	!���	!�A�A�A�A�A��*�A�A�A�H2�2�2�2�2�h�/�2�2�2�BP�P�P�
�z����H�M�O�O�O�O�O��s�,A1�1A;�:A;