Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/test/__pycache__/test_xmlrpc.cpython-38.opt-1.pyc
U

>��g^��@sddlZddlZddlZddlZddlZddlZddlmZddlmZ	ddl
ZddlZ
ddl
Z
ddlZ
ddlZddlZddlZddlZddlZddlmZzddlZWnek
r�dZYnXdddddge	�d	�d	ed	�d
dde	�d
�e	�d�e	�e�dddddd��d�gZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�Z Gdd�dej�Z!Gdd �d ej�Z"da#a$a%dNd!d"�Z&dOd#d$�Z'd%d&�Z(d'd(�Z)Gd)d*�d*ej�Z*Gd+d,�d,e*�Z+Gd-d.�d.e*�Z,Gd/d0�d0e*�Z-Gd1d2�d2e*�Z.Gd3d4�d4e.�Z/Gd5d6�d6e.�Z0e�1edkd7�Gd8d9�d9e*��Z2e�1edkd7�Gd:d;�d;ej��Z3Gd<d=�d=e*�Z4Gd>d?�d?ej�Z5Gd@dA�dAe
jj6�Z7GdBdC�dCej�Z8ej9dPdEdF��Z:GdGdH�dHej�Z;GdIdJ�dJej�Z<ej=dKdL��Z>e?dMk�r�e>�dS)Q�N)�mock)�supportzfoo@bar.baz.spamgH�zns�@i�z.zyx.41�my dog has fleasFu	䀀怀耀z
regular value�20050210T11:41:23)	��r�
��)�r����rrr	r
r)ZastringZafloatZanintZ
ashortlongZanotherlistZabase64Zb64bytesZb64bytearrayZboolean�unicodeuukey䀀Z	datetime1Z	datetime2Z	datetime3c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-S).�XMLRPCTestCasecCs.t�tf�}t�|�}|�t|dd�dS)Nr)�	xmlrpclib�dumps�alist�loads�assertEqual)�self�dump�load�r�//opt/cppython/lib/python3.8/test/test_xmlrpc.py�test_dump_load,s
zXMLRPCTestCase.test_dump_loadcCs6t�dddddd�}|�|t�d��t�|f�}tj|dd	�\}}|\}|�||�|�t|�tj�|�|�tj|d
d	�\}}|\}|�||�|�t|�tj�|�|�tj|dd�\}}|\}|�||�|�t|�tj�|�|�tj|d
d�\}}|\}|�||�|�t|�tj�|�|�dS)Nrrrr	r
rrT��use_builtin_typesF)Zuse_datetime�	�datetimerr�DateTimerr�assertIs�type�assertIsNone�rZdt�s�result�mZnewdtrrr�test_dump_bare_datetime1s.


z&XMLRPCTestCase.test_dump_bare_datetimecCs�t�dddddd�}|�|t�d��t�|f�}tj|dd	�\}}|\}|�||�|�t|�tj�|�|�tj|d
d	�\}}|\}|�||�|�t|�tj�|�|�dS)Nrrrr	r
rz00010210T11:41:23TrFrr#rrr�test_datetime_before_1900Ss
z(XMLRPCTestCase.test_datetime_before_1900cCsRt��}t�tj|fdd��\\}}|�|jt�tj|fdd�}|�|t�dS)NT��methodresponse)rrrrZassertIsInstance�value�str)r�dZnew_d�dummyr$rrr�test_bug_1164912es�zXMLRPCTestCase.test_bug_1164912cCsLGdd�dt�}|�}d|_d|_t�t�|f��\\}}|�||j�dS)Nc@seZdZdS)z-XMLRPCTestCase.test_newstyle_class.<locals>.TN)�__name__�
__module__�__qualname__rrrr�Tpsr3�dZHello)�object�x�yrrrr�__dict__)rr3�t�t2r.rrr�test_newstyle_classosz"XMLRPCTestCase.test_newstyle_classcCs|�ttjddf�dS)Nr�c)�assertRaises�
OverflowErrorrr�rrrr�test_dump_big_longxsz!XMLRPCTestCase.test_dump_big_longcCs|�ttjddif�dS)N�rr�r�r=�	TypeErrorrrr?rrr�test_dump_bad_dict{sz!XMLRPCTestCase.test_dump_bad_dictcCs6dddg}ddd|g}|�|�|�ttj|f�dS)NrrrB��)�appendr=rDrr)r�lr9rrr�test_dump_recursive_seq~s

z&XMLRPCTestCase.test_dump_recursive_seqcCs2ddd�}d|d�}||d<|�ttj|f�dS)Nr)�1�2rB)�3r-r9rC�rr-r9rrr�test_dump_recursive_dict�s

z'XMLRPCTestCase.test_dump_recursive_dictcCs�tjdkr |�ttjtd�f�t�tjtjf�|�ttjtjdf�|�ttjtjdf�dd�}t�	�}|�
tj|�|�
tj|�|�t|j
tjd|�|�t|j
tjd|�dS)Ni����rcSsdS�Nr�r$rrr�dummy_write�sz5XMLRPCTestCase.test_dump_big_int.<locals>.dummy_write)�sys�maxsizer=r>rr�int�MAXINT�MININT�
MarshallerZdump_int�rrSr&rrr�test_dump_big_int�s.

�

�

�
�
�z XMLRPCTestCase.test_dump_big_intcCs�t�td�f�t�ttj�ttj�f�t�ttjd�ttjd�f�dd�}t��}|�tj|�|�tj|�|�tjd|�|�tjd|�dS)NrP�*cSsdSrQrrRrrrrS�sz4XMLRPCTestCase.test_dump_double.<locals>.dummy_write)rr�floatrWrXrYZdump_doublerZrrr�test_dump_double�s��zXMLRPCTestCase.test_dump_doublecCsTtdg}tdgf}tj|dd�}|�|t�|�dd�|�ttj|f�dS)NT)�
allow_noner)rrrrrr=rD)rr+Zarg1�strgrrr�test_dump_none�s
�zXMLRPCTestCase.test_dump_nonecCs�ddi}tj|fdd�}d|}|�t�|�dd|�|�dd�}|�t�|�dd|�tj|fddd	�}|�t�|�dd|�|�dd�}|�t�|�dd|�d
}tj|fd|d�}|�t�|�dd|�|�t�|�d|�dS)
Nukey€¤u
value€¤�iso-8859-15��encodingz,<?xml version='1.0' encoding='iso-8859-15'?>r�xmlcharrefreplaceT)rdr*umethod€¤)rd�
methodnamer)rrrr�encode)rr+r`rfrrr�test_dump_encoding�s(�
�
�z!XMLRPCTestCase.test_dump_encodingcCs�d}|�|t�|��tttjfD]�}||�}t�|f�}tj|dd�\}}|\}|�||�|�t|�t�|�	|�tj|dd�\}}|\}|�||�|�t|�tj�|�	|�q"dS)NrTrF)
rr�Binary�bytes�	bytearrayrrr r!r")r�sampleZtype_r+r$r%r&�newvaluerrr�test_dump_bytes�s
zXMLRPCTestCase.test_dump_bytescCsFtj}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�
ResponseErrorr=r)rro�datarrr�test_loads_unsupported�sz%XMLRPCTestCase.test_loads_unsupportedcKsNd|}tj|f|�\}}|\}|�||�|�t|�t|��|�|�dS)Nz1<params><param><value>%s</value></param></params>)rrrr r!r")rr$r+�kwargsrr%r&rmrrr�check_loads�szXMLRPCTestCase.check_loadsc
Cs�|j}|dd�|dd�|dd�|dd�|dd�|d	d�|d
d�|dd
�|dt�d��|dddd�|dt�d��|dt�dddddd�dd�|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�Trz6<dateTime.iso8601>20050210T11:41:23</dateTime.iso8601>rrrrr	r
rzR<array><data><value><int>1</int></value><value><int>2</int></value></data></array>rz�<struct><member><name>b</name><value><int>2</int></value></member><member><name>a</name><value><int>1</int></value></member></struct>)�a�b)rsrrirr�r�checkrrr�test_load_standard_types�s:







������z'XMLRPCTestCase.test_load_standard_typescCs`|j}|dd�|dd�|dd�|dd�|dd�|d	d
�|dd�|d
t�d��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)rs�decimalZDecimalrwrrr�test_load_extension_typess




�
�z(XMLRPCTestCase.test_load_extension_typesc
Cs�|j}d}t�|��bd|d}|�t��|d|�d�d�W5QRX|�t��|d|�d�d�W5QRXW5QRXdS)Ni�rKrz<int>z</int>z<biginteger>z
</biginteger>)rsrZadjust_int_max_str_digitsr=�
ValueError)rrxZ	maxdigitsr$rrr�test_limit_intszXMLRPCTestCase.test_limit_intcCs(tj��}|�|�d�ddgif�dS)Nz
user@host.tldzhost.tld)Z
AuthorizationzBasic dXNlcg==)�xmlrpc�client�	TransportrZ
get_host_info)rZtransprrr�test_get_host_info(s
��z!XMLRPCTestCase.test_get_host_infocCs�zddl}Wntk
r$d}YnXd}ztj�d���Wn<tk
r^|�|d�Yntk
rz|�	|�YnXdS)NrFTzhttps://localhost:9999z&xmlrpc client's error with SSL support)
�ssl�ImportErrorrr��ServerProxyZbad_function�NotImplementedErrorZassertFalse�OSError�
assertTrue)rr�Zhas_sslrrr�test_ssl_presence/s
z XMLRPCTestCase.test_ssl_presencec	s�Gdd�dtjj�}�fdd�}tj�tjdf|��|��j�tj	|d�}|�
�|�|j�dj�j
�}t�|��&}|�|��d�|�|��d�W5QRXdS)	Nc@s$eZdZdZdZdd�Zdd�ZdS)z@XMLRPCTestCase.test_keepalive_disconnect.<locals>.RequestHandler�HTTP/1.1FcSs�t|j�d��}|j�|�|jr,d|_dStjddd�}|�	�}|�
tjj
�|�dt|��|��|j�|�d|_d|_dS)N�Content-LengthT)rGr)F)rV�headers�getZrfile�read�handledZclose_connectionrrrgZ
send_response�httpZ
HTTPStatusZOKZsend_header�lenZend_headersZwfile�write)r�length�responserrr�do_POSTBszHXMLRPCTestCase.test_keepalive_disconnect.<locals>.RequestHandler.do_POSTcWsdSrQr)r�format�argsrrr�log_messageQszLXMLRPCTestCase.test_keepalive_disconnect.<locals>.RequestHandler.log_messageN)r0r1r2�protocol_versionr�r�r�rrrr�RequestHandler>sr�cs$�j�td��������dS�Nr)�socket�
settimeoutr]�handle_requestr��serverrr�
run_serverUsz<XMLRPCTestCase.test_keepalive_disconnect.<locals>.run_serverr)�targetz
http://{}:{}/rG)r�r�ZBaseHTTPRequestHandlerZ
HTTPServerrZHOST�
addCleanup�server_close�	threading�Thread�start�joinr�Zserver_addressrr�r�method)rr�r��thread�url�prr�r�test_keepalive_disconnect=sz(XMLRPCTestCase.test_keepalive_disconnectN)r0r1r2rr'r(r/r;r@rErJrOr[r^rarhrnrqrsryr|r~r�r�r�rrrrr*s,"
	

rc@sLeZdZGdd�de�Zdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dS)�SimpleXMLRPCDispatcherTestCasec@seZdZdZdS)z*SimpleXMLRPCDispatcherTestCase.DispatchExczSRaised inside the dispatched functions when checking for
        chained exceptionsN)r0r1r2�__doc__rrrr�DispatchExcfsr�c	szd}�fdd�}tj��}|�|����j��}|�d|�W5QRX��|jj	|f���
|jj���
|jj�dS)z$Calls explicitly registered functionrAcs��|��dSrQ)r�)�paramsr?rr�dispatched_funcqszQSimpleXMLRPCDispatcherTestCase.test_call_registered_func.<locals>.dispatched_funcr�N)
rr��SimpleXMLRPCDispatcher�register_functionr=r��	_dispatchr�	exceptionr�r"�	__cause__�__context__)r�
exp_paramsr��
dispatcher�exc_ctxrr?r�test_call_registered_funcjs

z8SimpleXMLRPCDispatcherTestCase.test_call_registered_funcc	Cs~d}Gdd�d�}tj��}|�|��|�|j��}|�d|�W5QRX|�|jj	|f�|�
|jj�|�
|jj�dS)z3Calls a registered instance attribute as a functionrAc@seZdZdd�ZdS)zOSimpleXMLRPCDispatcherTestCase.test_call_instance_func.<locals>.DispatchedClasscWst�|��dSrQ�r�r�)rr�rrrr��sz_SimpleXMLRPCDispatcherTestCase.test_call_instance_func.<locals>.DispatchedClass.dispatched_funcN)r0r1r2r�rrrr�DispatchedClass�sr�r�N�
rr�r��register_instancer=r�r�rr�r�r"r�r�)rr�r�r�r�rrr�test_call_instance_func|s
z6SimpleXMLRPCDispatcherTestCase.test_call_instance_funcc	Cs�d}d}Gdd�d�}tj��}|�|��|�|j��}|�||�W5QRX|�|jj	||f�|�
|jj�|�
|jj�dS)z4Calls the registered instance's `_dispatch` functionr�rAc@seZdZdd�ZdS)zLSimpleXMLRPCDispatcherTestCase.test_call_dispatch_func.<locals>.TestInstancecSst�||��dSrQr�)rr�r�rrrr��s�zVSimpleXMLRPCDispatcherTestCase.test_call_dispatch_func.<locals>.TestInstance._dispatchN)r0r1r2r�rrrr�TestInstance�sr�Nr�)rZ
exp_methodr�r�r�r�rrr�test_call_dispatch_func�s
z6SimpleXMLRPCDispatcherTestCase.test_call_dispatch_funcc	Cs@tj��}|jddd�|�td��|�dd�W5QRXdS)z2Calls explicitly registered function which is NoneNr���name�Zparam)rr�r�r��assertRaisesRegex�	Exceptionr��rr�rrr�test_registered_func_is_none�s
z;SimpleXMLRPCDispatcherTestCase.test_registered_func_is_nonec	Cs>tj��}|�t��|�td��|�dd�W5QRXdS)z>Attempts to call nonexistent function on a registered instancer�r�N)rr�r�r�r5r�r�r�r�rrr�test_instance_has_no_func�s
z8SimpleXMLRPCDispatcherTestCase.test_instance_has_no_funcc	Cs2tj��}|�td��|�dd�W5QRXdS)z2Calls a function that the dispatcher cannot locater�r�N)rr�r�r�r�r�r�rrr�test_cannot_locate_func�s
z6SimpleXMLRPCDispatcherTestCase.test_cannot_locate_funcN)r0r1r2r�r�r�r�r�r�r�r�rrrrr�esr�c@seZdZdd�ZdS)�HelperTestCasecCs:|�t�d�d�|�t�d�d�|�t�d�d�dS)Nza&bza&amp;bza<bza&lt;bza>bza&gt;b)rr�escaper?rrr�test_escape�szHelperTestCase.test_escapeN)r0r1r2r�rrrrr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�
FaultTestCasecCs4t�dd�}|�t|�d�|�t|�t|��dS)Nr\�
Test Faultz<Fault 42: 'Test Fault'>)r�Faultr�reprr,)r�frrr�	test_repr�szFaultTestCase.test_reprcCsjt�dd�}t�|f�}t�|�\\}}|�|ddd��|�|d�t���|�}|�tjtj|�dS)Nr\r�)�	faultCode�faultString)rr�rrrrYr=)rr�r$Znewfr&rrr�test_dump_fault�szFaultTestCase.test_dump_faultcCs,|�ttjjtd�|�tj�td��dS�NZ__add�title)r=�AttributeErrorrr��resolve_dotted_attributer,r�r?rrr�test_dotted_attribute�s�z#FaultTestCase.test_dotted_attributeN)r0r1r2r�r�r�rrrrr��s
r�c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�DateTimeTestCasecCsdt�d��P}t�dddddddddg	�}||_t��}t��}|�t	|�t�
d	|��W5QRXdS)
Nztime.localtimei���r��1���%Y%m%dT%H:%M:%S)rZpatch�time�struct_timeZreturn_value�	localtimerrrr,�strftime)rZlocaltime_mockZtime_structr�r9rrr�test_default�s�

�zDateTimeTestCase.test_defaultc	Cs0d}t�|�}|�t|�t�dt�|���dS�Ngl]�ޮ��Ar�)rrrr,r�r�r�rNrrr�	test_time�s


�zDateTimeTestCase.test_timecCs"d}t�|�}|�t|�d�dS)N)	����	r�&�2rG�rz20070609T10:38:50)rrrr,rNrrr�test_time_tuple�s
z DateTimeTestCase.test_time_tuplecCs0t�d�}t�|�}|�t|�t�d|��dSr�)r�r�rrrr,r�rNrrr�test_time_struct�s

z!DateTimeTestCase.test_time_structcCs2t�dddddd�}t�|�}|�t|�d�dS)Nr�rrrBrFrGz20070102T03:04:05)rrrrr,rNrrr�test_datetime_datetime�s
z'DateTimeTestCase.test_datetime_datetimecCs>t�dddddd�}t�|�}dt|�}|�t|�|�dS)Nr�rrrBrFrGz%<DateTime '20070102T03:04:05' at %#x>)rrr�idrr�)rr-r9�valrrrr��s
zDateTimeTestCase.test_reprc
CsVd}t��}|�|�t�t�dddddd��}|�||�t�|�}|�||�dS)Nz 20070908T07:11:13  r�r��r�r	�
)rr�decoderrZ	_datetime)rr-�t1Ztrefr:rrr�test_decode�s

zDateTimeTestCase.test_decodec	Cs�tj��}t�|���}|�||k�|�||k�|tjdd�}|�||k�|�||k�|�d�}|�||k�|�||k�t�|���}|�||k�|�||k�|�d�}|��}|�	t
��|dkW5QRX|�	t
��||kW5QRX|�	t
��|t|�kW5QRX|�	t
��||kW5QRX|�	t
��|td�kW5QRX|�	t
��||kW5QRX|�	t
��|t|�kW5QRX|�	t
��||kW5QRXdS)NrF)Zsecondsr��asciii�)
r�nowrrZ	timetupler�Z	timedeltar�rgr=rDrkr])rr�ZdtimeZthenZdstrZ
dtime_thenZdbytesZdtuplerrr�test_comparison	s>


z DateTimeTestCase.test_comparisonN)r0r1r2r�r�r�r�r�r�r�r�rrrrr��s

r�c@s$eZdZdd�Zdd�Zdd�ZdS)�BinaryTestCasecCst��}|�t|�d�dS)N��rrirr,)rr9rrrr�7szBinaryTestCase.test_defaultcCs(d}t�|�}|�t|�t|d��dS�Nsabc123��zlatin-1rrNrrr�test_string;s
zBinaryTestCase.test_stringcCsZd}t�|�}t��}|�|�|�t|�t|d��t�|�}|�t|�t|d��dSr)�base64Zencodebytesrrir�rr,Z_binary)rr-�der�r:rrrr�@s


zBinaryTestCase.test_decodeN)r0r1r2r�rr�rrrrr�0sr�c
Cs,Gdd�d�}Gdd�dtjj�}|s.tjj}|d||ddd�}z�z�|��|j�	�\a
adt
tfa|��|�
�|��|�t�|�d	d
�d�|jdd
��}|jdd�dd��}|�}	|j|	dd�|��|dkr�|��|d8}q�Wntjk
�r
YnXW5|j��da|��XdS)Nc@s*eZdZdd�Zdd�ZGdd�d�ZdS)z&http_server.<locals>.TestInstanceClasscSs||SrQr�rr6r7rrr�divRsz*http_server.<locals>.TestInstanceClass.divcSs|dkrdSdS�Nr�This is the div functionr�rr�rrr�_methodHelpUsz2http_server.<locals>.TestInstanceClass._methodHelpc@seZdZedd��ZdS)z.http_server.<locals>.TestInstanceClass.FixturecSsdS)N�42rrrrr�getDataZsz6http_server.<locals>.TestInstanceClass.Fixture.getDataN)r0r1r2�staticmethodr
rrrr�FixtureYsrN)r0r1r2rrrrrrr�TestInstanceClassQsrc@seZdZdd�ZdS)z#http_server.<locals>.MyXMLRPCServercSs |j��\}}|�d�||fS�NT�r��accept�setblocking�rr$�portrrr�get_request_s
z/http_server.<locals>.MyXMLRPCServer.get_requestN�r0r1r2rrrrr�MyXMLRPCServer^sr��	localhostrF)rd�logRequests�bind_and_activate�http://%s:%dcSs|SrQr)r6rrr�<lambda>x�zhttp_server.<locals>.<lambda>�têštcSsdS��This is my functionTrrrrr�my_functionysz http_server.<locals>.my_function�addr�cSs||SrQr�r6r7rrr�_}szhttp_server.<locals>._T)Zallow_dotted_namesrr)rr��SimpleXMLRPCServer�SimpleXMLRPCRequestHandlerr��close�PORT�set�server_bind�getsockname�ADDR�URL�server_activate� register_introspection_functions�register_multicall_functionsr��powr�r��timeout)
�evt�numrequests�requestHandlerrdrr�servr$r'ZtestInstancerrr�http_serverPsB
�





r:cCspGdd�d�}dd�}Gdd�dtjj�}|s6tjj}Gdd�d|�}Gd	d
�d
�}|d|ddd
�}|j�d�|��z�z�|j�
�\aadttfa|�
�ddg}	|	D]&}
|�|
tj���}|��|��q�|�|	d��t�|�|	d��dd�d�|�d|��|�	�|dk�r4|��|d8}�qWntjk
�rNYnXW5|j��da|�	�XdS)Nc@seZdZdd�Zdd�ZdS)z,http_multi_server.<locals>.TestInstanceClasscSs||SrQrrrrrr�sz0http_multi_server.<locals>.TestInstanceClass.divcSs|dkrdSdSrrr
rrrr�sz8http_multi_server.<locals>.TestInstanceClass._methodHelpN)r0r1r2rrrrrrr�srcSsdSr"rrrrrr$�sz&http_multi_server.<locals>.my_functionc@seZdZdd�ZdS)z)http_multi_server.<locals>.MyXMLRPCServercSs |j��\}}|�d�||fSrrrrrrr�s
z5http_multi_server.<locals>.MyXMLRPCServer.get_requestNrrrrrr�src@seZdZgZdS)z+http_multi_server.<locals>.MyRequestHandlerN)r0r1r2Z	rpc_pathsrrrr�MyRequestHandler�sr;c@seZdZddd�ZdS)z+http_multi_server.<locals>.BrokenDispatcherNcSstd��dS)Nzbroken dispatcher)�RuntimeError)rrpZdispatch_method�pathrrr�_marshaled_dispatch�sz?http_multi_server.<locals>.BrokenDispatcher._marshaled_dispatch)NN)r0r1r2r>rrrr�BrokenDispatcher�sr?rF)rrrBr�/foo�/foo/barrrcSs||SrQrr&rrrr�r z#http_multi_server.<locals>.<lambda>r%�
/is/broken)rr�ZMultiPathXMLRPCServerr)r�r�r-r*r+r,r.r/r0r1Zadd_dispatcherr�r2r3Zget_dispatcherr�r4r�r5)r6r7r8rr$rr;r?r9�pathsr=r-rrr�http_multi_server�sD�



rDcCs`z*|jdks|jdkrWdS|j�d�}Wntk
rFt|�}YnX|r\d|��kr\dSdS)z�Returns True if the given ProtocolError is the product of a server-side
       exception caused by the 'temporarily unavailable' response sometimes
       given by operations on non-blocking sockets.r
NT�X-exceptionztemporarily unavailable)Zerrcoder�r�r�r,�lower)�eZexc_messrrr�is_unavailable_exception�srHcs|sdd�S�fdd�}|S)NcSs|SrQr)�funcrrrr�r z)make_request_and_skipIf.<locals>.<lambda>cs�fdd�}|S)Nc
sTzt�t���Wn2tjtfk
rD}zt|�s4�W5d}~XYnXt����dSrQ)	rr�r0r$�
ProtocolErrorr�rH�unittestZSkipTest)rrG��reasonrr�make_request_and_skip�szImake_request_and_skipIf.<locals>.decorator.<locals>.make_request_and_skipr)rIrNrLrr�	decorator�sz*make_request_and_skipIf.<locals>.decoratorr)Z	conditionrMrOrrLr�make_request_and_skipIf�s	rPc@s,eZdZdZdZee�Zdd�Zdd�Z	dS)�BaseServerTestCaseNrcCs`dtjj_t��|_|j|j|jf}tj	|j
|d�}|��|�|j
�|j��|j��dS)NT�r�r�)rr�r(�_send_traceback_headerr��Eventr6�
request_countr8r��
threadFuncr�r�r��wait�clear�rZ	serv_argsr�rrr�setUp�s


zBaseServerTestCase.setUpcCs|j��dtjj_dS�NF)r6rWrr�r(rSr?rrr�tearDowns
zBaseServerTestCase.tearDown)
r0r1r2r8rUrr:rVrZr\rrrrrQ�s
rQc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	e
ejj
dkd�dd��Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%S)&�SimpleServerTestCasecCsrz"t�t�}|�|�dd�d�WnJtjtfk
rl}z&t|�s\|�d|t	|dd�f�W5d}~XYnXdS)Nr�r����%s
%sr�r)
rr�r0rr4rJr�rH�fail�getattr�rr�rGrrr�test_simple1s
z!SimpleServerTestCase.test_simple1cCs~d}d}z&t�t�}|�|�||�||�WnJtjtfk
rx}z&t|�sh|�d|t	|dd�f�W5d}~XYnXdS)NuPŷtuhơnr_r�r)
rr�r0rr%rJr�rHr`ra�rZstart_stringZ
end_stringr�rGrrr�
test_nonasciis
�z"SimpleServerTestCase.test_nonasciicCs�d}d}z*tjtdd�}|�|�||�||�WnLtjtjfk
r~}z&t|�sn|�	d|t
|dd�f�W5d}~XYnXdS)N�€�¤rbrcr_r�r�rr�r0rr%rJr��errorrHr`rardrrr�test_client_encoding's�z)SimpleServerTestCase.test_client_encodingcCsvz$tjtdd�}|�|�d�d�WnLtjtjfk
rp}z&t|�s`|�	d|t
|dd�f�W5d}~XYnXdS)Nr�rcr\r_r�r)rr�r0rttêštrJr�rirHr`rarbrrr�test_nonascii_methodname5sz-SimpleServerTestCase.test_nonascii_methodnamec	CsTt�tj�tt���}|�dd�|��}W5QRX|�	|j
d�|�	|jd�dS)NZPOSTz/this-is-not-validi�z	Not Found)�
contextlib�closingr�r�ZHTTPConnectionr/r+ZrequestZgetresponser�statusrM)r�connr�rrr�test_404?s
zSimpleServerTestCase.test_404cCs�tddddddddd	d
g
�}z(t�t�}|j��}|�t|�|�WnJtjtfk
r�}z&t	|�s~|�
d|t|dd
�f�W5d}~XYnXdS)Nr4rr$r%r!zsystem.listMethodszsystem.methodHelpzsystem.methodSignaturezsystem.multicallrr_r�r)r,rr�r0�systemZlistMethodsrrJr�rHr`ra)rZexpected_methodsr��methrGrrr�test_introspection1Is�

z(SimpleServerTestCase.test_introspection1cCsvz&t�t�}|j�d�}|�|d�WnJtjtfk
rp}z&t|�s`|�	d|t
|dd�f�W5d}~XYnXdS)Nrr	r_r�r�rr�r0rqZ
methodHelprrJr�rHr`ra)rr�ZdivhelprGrrr�test_introspection2Ys
z(SimpleServerTestCase.test_introspection2rz)Docstrings are omitted with -O2 and abovecCsvz&t�t�}|j�d�}|�|d�WnJtjtfk
rp}z&t|�s`|�	d|t
|dd�f�W5d}~XYnXdS)Nr$r#r_r�rrt)rr�Z
myfunctionrGrrr�test_introspection3es
z(SimpleServerTestCase.test_introspection3cCsvz&t�t�}|j�d�}|�|d�WnJtjtfk
rp}z&t|�s`|�	d|t
|dd�f�W5d}~XYnXdS)Nrzsignatures not supportedr_r�r)rr�r0rqZmethodSignaturerrJr�rHr`ra)rr�ZdivsigrGrrr�test_introspection4ss
z(SimpleServerTestCase.test_introspection4cCs�zlt�t�}t�|�}|�dd�|�dd�|�dd�|�\}}}|�|d�|�|d�|�|d�WnJtjt	fk
r�}z&t
|�s�|�d	|t|d
d�f�W5d}~XYnXdS)NrrBr�r��r\rGr^r_r�r)
rr�r0�	MultiCallr%r4rrrJr�rHr`ra)rr��	multicall�
add_resultZ
pow_resultZ
div_resultrGrrr�test_multicall�s

z#SimpleServerTestCase.test_multicallcCs�zRt�t�}t�|�}|��|�}|�|jddd�|�|jddd�WnJtjtfk
r�}z&t	|�s�|�
d|t|dd�f�W5d}~XYnXdS)	Nrr�rr�z@<class 'Exception'>:method "this_is_not_exists" is not supportedr_r�r)rr�r0ryZthis_is_not_existsr�resultsrJr�rHr`ra)rr�rzr%rGrrr�test_non_existing_multicall�s

�z0SimpleServerTestCase.test_non_existing_multicallcCs4|�ttjjtd�|�tj�td��|��dSr�)r=r�rr�r�r,r�rcr?rrrr��s�z*SimpleServerTestCase.test_dotted_attributecCs,t�dttf�}|j��}|�|d�dS)N�http://%s:%d/RPC2r)rr�r/r+rr
r)rr�rprrr�test_allow_dotted_names_true�s
z1SimpleServerTestCase.test_allow_dotted_names_truecCs*t�dttf�}|�|�dd�d�dS)Nrru�éuaé)rr�r/r+rr%�rr�rrr�test_unicode_host�sz&SimpleServerTestCase.test_unicode_hostc	CsBt�t�ttf���$}|�dt�dt�d��d��W5QRXdS)Nz@POST /RPC2 HTTP/1.0
Content-Length: 100

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

r�)rlrmr��create_connectionr/r+�sendrg)rrorrr�test_partial_post�s�z&SimpleServerTestCase.test_partial_postc	CsJt�t��$}|�dd�|�|d�jd�W5QRX|�|d�jd�dS)NrrB�	transport�NN)rr�r0r%ZassertNotEqual�_connectionrr�rrr�test_context_manager�s��z)SimpleServerTestCase.test_context_managerc	CsTz&t�t��}|�dd�W5QRXWntjk
r<YnX|�|d�jd�dS)Nrrur�r�)rr�r0r%r�rr�r�rrr�!test_context_manager_method_error�s�z6SimpleServerTestCase.test_context_manager_method_errorN)r0r1r2rcrerjrkrprsrurPrT�flags�optimizervrwr|r~r�r�r�r�r�r�rrrrr]s(



�



r]c@s"eZdZeddd��Zdd�ZdS)�SimpleServerEncodingTestCaseNcCst|||d�dS)Nrb)r:)r6r7r8rdrrrrV�sz'SimpleServerEncodingTestCase.threadFunccCs�d}d}z&t�t�}|�|�||�||�WnLtjtjfk
rz}z&t|�sj|�	d|t
|dd�f�W5d}~XYnXdS)Nrfrgr_r�rrhrdrrr�test_server_encoding�s
�z1SimpleServerEncodingTestCase.test_server_encoding)NN)r0r1r2rrVr�rrrrr��sr�c@s0eZdZee�ZdZdd�Zdd�Zdd�Z	dS)	�MultiPathServerTestCasercCs:t�td�}|�|�dd�d�|�tj|jdd�dS)Nr@r�r�r^)rr�r0rr4r=r�r%�rr�rrr�
test_path1�sz"MultiPathServerTestCase.test_path1cCs:t�td�}|�|�dd�d�|�tj|jdd�dS)NrAr�r��)rr�r0rr%r=r�r4r�rrr�
test_path2�sz"MultiPathServerTestCase.test_path2cCs&t�td�}|�tj|jdd�dS)NrBr�r�)rr�r0r=r�r%r�rrr�
test_path3�sz"MultiPathServerTestCase.test_path3N)
r0r1r2rrDrVrUr�r�r�rrrrr��s
r�c@s,eZdZGdd�dejj�ZeZdd�ZdS)�BaseKeepaliveServerTestCasec@s,eZdZejjZdZgZdd�Z	dd�Z
dS)z*BaseKeepaliveServerTestCase.RequestHandlerr�cCs(|j�g�t|j�d|_|j�|�Sr�)�
myRequestsrHr��reqidx�parentClass�handler?rrrr�sz1BaseKeepaliveServerTestCase.RequestHandler.handlecCs$|j�|�}|j|j�|j�|SrQ)r��handle_one_requestr�r�rHZraw_requestline)rr%rrrr�sz=BaseKeepaliveServerTestCase.RequestHandler.handle_one_requestN)r0r1r2rr�r)r�r�r�r�r�rrrrr�s
r�cCsg|j_t�|�SrQ)r�r�rQrZr?rrrrZsz!BaseKeepaliveServerTestCase.setUpN)	r0r1r2rr�r)r�r8rZrrrrr��s
r�c@seZdZdd�ZdS)�KeepaliveServerTestCase1cCs�t�t�}|�|�dd�d�|�|�dd�d�|�|�dd�d�|d��|�t|jj�d�|�t|jjd�d�dS)Nr�r�r^r*rr
r�	rr�r0rr4r�r�r�ZassertGreaterEqualr�rrr�test_twos

z!KeepaliveServerTestCase1.test_twoN)r0r1r2r�rrrrr�sr�c@s eZdZdZdd�Zdd�ZdS)�KeepaliveServerTestCase2rcCs�t�t�}|�|�dd�d�|�|�dd�d�|�|�dd�d�|d��|�|�dd�d�|�|�dd�d�|�|�dd�d�|d��|�t|jj�d�|�t|jjd�d�|�t|jjd�d�dS)Nr�r�r^r*rr
���r�r�rrr�
test_close,s


z#KeepaliveServerTestCase2.test_closecCs`t�t�}|�|�dd�d�|d���|�|�dd�d�|d��|�t|jj�d�dS)Nr�r�r^r�r*r)	rr�r0rr4r*r�r�r�r�rrr�test_transport?s

z'KeepaliveServerTestCase2.test_transportN)r0r1r2rUr�r�rrrrr�(sr�z
requires gzipc@sVeZdZGdd�dejj�ZeZGdd�dej	�Z	dd�Z
dd�Zd	d
�Zdd�Z
d
S)�GzipServerTestCasec@s eZdZejjZdZdd�ZdS)z!GzipServerTestCase.RequestHandlerr�cCst|jd�|j_|j�|�S)N�content-length)rVr��	__class__�content_lengthr�r�r?rrrr�Rsz)GzipServerTestCase.RequestHandler.do_POSTN)	r0r1r2rr�r)r�r�r�rrrrr�Nsr�c@s eZdZdZdd�Zdd�ZdS)zGzipServerTestCase.TransportFcCs t|�dd��|_tj�||�S)Nr�r)rVZ	getheader�response_lengthrr��parse_response)rr�rrrr�[sz+GzipServerTestCase.Transport.parse_responsecCs"|jr|�dd�tj�|||�S)NzContent-Encoding�gzip)�	fake_gzipZ	putheaderrr��send_content)r�
connectionZbodyrrrr�_sz)GzipServerTestCase.Transport.send_contentN)r0r1r2r�r�r�rrrrr�Xsr�cCst�|�dSrQ)rQrZr?rrrrZeszGzipServerTestCase.setUpcCsv|��}d|_tjt|d�}|�|�dd�d�|jj}d|_|�|�dd�d�|jj}|�	||k�|d��dS�N�r�r�r�r^rr*)
r��encode_thresholdrr�r0rr4r�r�r�)rr9r�rurvrrr�test_gzip_requesthsz$GzipServerTestCase.test_gzip_requestc	Cs`|��}d|_d|_tjt|d�}|�tjt�	d��}|�|�
dd�W5QRX|d��dS)NTr�z\b400\br�r�r*)r�r�r�rr�r0r�rJ�re�compiler4)rr9r��cmrrr�test_bad_gzip_requestts�z(GzipServerTestCase.test_bad_gzip_requestcCs�|��}tjt|d�}|jj}d|j_|�|�dd�d�|j}d|j_|�|�dd�d�|d��|j}||j_|�	||k�dSr�)
r�rr�r0r8r�rr4r�r�)rr9r��oldrurvrrr�test_gzip_responses
z%GzipServerTestCase.test_gzip_responseN)r0r1r2rr�r)r�r8rr�rZr�r�r�rrrrr�Js
r�c@seZdZdd�ZdS)�GzipUtilTestCasec	Cszd}d|}t�|�}t�|�}|�t|�|�d|d}t�|�}|�td��t�|�W5QRXtj|dd�dS)Ni@�rz#max gzipped payload length exceededr
)Z
max_decode)rZgzip_encodeZgzip_decoderr�r�r})rZmax_gzip_decoderp�encodedZdecodedrrr�test_gzip_decode_limit�s


�z'GzipUtilTestCase.test_gzip_decode_limitN)r0r1r2r�rrrrr��sr�csreZdZGdd�dejj�ZeZdddddgZ�fdd	�Z	d
d�Z
dd
�Zdd�Zdd�Z
dd�Zdd�Z�ZS)�HeadersServerTestCasecs eZdZdZ�fdd�Z�ZS)z$HeadersServerTestCase.RequestHandlerNcs|j|j_t���SrQ)r�r��test_headers�superr�r?�r�rrr��s
z,HeadersServerTestCase.RequestHandler.do_POST)r0r1r2r�r��
__classcell__rrr�rr��sr�ZHostzAccept-EncodingzContent-Typez
User-Agentr�csd|j_t���SrQ)r�r�r�rZr?r�rrrZ�szHeadersServerTestCase.setUpcCsRt|jt|����}|�t|���|�|��D]\}}|�|�|�|�q2dSrQ)�sorted�standard_headers�list�keysZassertListEqual�itemsrr�)rr��
additionalZ
expected_keys�keyr+rrr�assertContainsAdditionalHeaders�sz5HeadersServerTestCase.assertContainsAdditionalHeaderscCs@tjtdgd�}|�|�dd�d�|jj}|�|ddi�dS)N��X-Test�foo�r�r�r�r^r�r��rr�r0rr4r�r�r��rr�r�rrr�test_header�sz!HeadersServerTestCase.test_headercCsDtjtddgd�}|�|�dd�d�|jj}|�|ddd	��dS)
Nr�)�
X-Test-Second�barr�r�r�r^r�r�)r�r�r�r�rrr�test_header_many�s��z&HeadersServerTestCase.test_header_manycCs:tjtgd�}|�|�dd�d�|jj}|�|i�dS)Nr�r�r�r^r�r�rrr�test_header_empty�sz'HeadersServerTestCase.test_header_emptycCs>tjtdd�}|�|�dd�d�|jj}|�|ddi�dS)N)r�r�r�r�r^r�r�r�r�rrr�test_header_tuple�sz'HeadersServerTestCase.test_header_tuplecCsFtjtddi��d�}|�|�dd�d�|jj}|�|ddi�dS)Nr�r�r�r�r�r^)	rr�r0r�rr4r�r�r�r�rrr�test_header_items�sz'HeadersServerTestCase.test_header_items)r0r1r2rr�r)r�r8r�rZr�r�r�r�r�r�r�rrr�rr��s�	r�c@s$eZdZdd�Zdd�Zdd�ZdS)�ServerProxyTestCasecCstj�|�d|_dS)Nzhttp://fake.localhost)rK�TestCaserZr�r?rrrrZ�szServerProxyTestCase.setUpcCs"t�|j�}|�|d��d�dS)Nr*)rr�r�rr�rrrr��szServerProxyTestCase.test_closecCs,t��}tj|j|d�}|�|d�|�dS)Nr�r�)rr�r�r�r)rr9r�rrrr��sz"ServerProxyTestCase.test_transportN)r0r1r2rZr�r�rrrrr��sr�cseZdZd�fdd�	Z�ZS)�FailingMessageClassNcs"|��}|dkrdSt��||�S)Nr�zI am broken)rFr�r�)rr�Zfailobjr�rrr��szFailingMessageClass.get)N)r0r1r2r�r�rrr�rr��sr�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�FailingServerTestCasecCsNt��|_|jdf}tjt|d�}|��|�|j�|j��|j�	�dS)NrrR)
r�rTr6r�r:r�r�r�rWrXrYrrrrZ�s


zFailingServerTestCase.setUpcCs*|j��dtjj_tjj}|tjj	_
dSr[)r6rWrr�r(rSr�r��HTTPMessager)�MessageClass)rZ
default_classrrrr\s

zFailingServerTestCase.tearDowncCs�tjjj}|�|d�dtjj_z"t�t�}|�|�dd�d�WnJtj	t
fk
r�}z&t|�s||�d|t
|dd�f�W5d}~XYnXdS)	NFTr�r�r^r_r�r)rr�r(rSrrr�r0r4rJr�rHr`ra)rZflagvalr�rGrrr�
test_basics


z FailingServerTestCase.test_basicc
Cs�ttjj_zt�t�}|�dd�Wnftj	t
fk
r�}zBt|�szt|d�rz|�
|j�d�dk�|�
|j�d�dk�W5d}~XYnX|�d�dS)Nr�r�r�rE�X-traceback�ProtocolError not raised)r�rr�r)r�rr�r0r4rJr�rH�hasattrr�r�r�r`rbrrr�test_fail_no_info#s

(z'FailingServerTestCase.test_fail_no_infoc
Cs�ttjj_dtjj_zt�t	�}|�
dd�Wnhtjtfk
r�}zDt
|�s�t|d�r�d}|�|j�d�|�|�|j�d�dk	�W5d}~XYnX|�d�dS)	NTr�r�r�z5invalid literal for int() with base 10: 'I am broken'rEr�r�)r�rr�r)r�r(rSrr�r0r4rJr�rHr�rr�r�r�r`)rr�rGZexpected_errrrr�test_fail_with_info3s


(z)FailingServerTestCase.test_fail_with_infoN)r0r1r2rZr\r�r�r�rrrrr��s
	r��utf-8ccs4tj}tjt��|d�t_ztjVW5|t_XdS)zhA variation on support.captured_stdout() which gives a text stream
    having a `buffer` attribute.
    rcN)rT�stdout�io�
TextIOWrapper�BytesIO)rdZorig_stdoutrrr�captured_stdoutIs
r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�CGIHandlerTestCasecCstj��|_dSrQ)rr��CGIXMLRPCRequestHandler�cgir?rrrrZWszCGIHandlerTestCase.setUpcCs
d|_dSrQ)r�r?rrrr\ZszCGIHandlerTestCase.tearDownc
Cs�t���~}d|d<t|jjd��}|j��W5QRX|�d�|��}|��d}d�	|��dd��}|�
|d	�|�
|d
�W5QRXdS)N�GETZREQUEST_METHODrcrr� rrFZ400zBad Request)r�EnvironmentVarGuardr�r�rdr��seekr��splitr�r)r�env�data_outr�rn�messagerrr�test_cgi_get]s

zCGIHandlerTestCase.test_cgi_getcCs�d}t���b}t|jjd��H}t���4}|�|�|�d�tt	|��|d<|j�
�W5QRXW5QRXW5QRX|�d�|��}|�t
jt
j|dd��||�d�d�}|�tt�d|��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>
        rcrZCONTENT_LENGTH�,z<?xmlzContent-Length: (\d+)r)rr�r�r�rdZcaptured_stdinr�r�r,r�r�r�r=rr�r�findrrVr��search�group)rrpr�r�Zdata_inr�Zcontentrrr�test_cgi_xmlrpc_responseos(
��

(
�z+CGIHandlerTestCase.test_cgi_xmlrpc_responseN)r0r1r2rZr\r�r�rrrrr�Vsr�c@s$eZdZdd�Zdd�Zdd�ZdS)�UseBuiltinTypesTestCasecs�g�_d}t�dddddd�}t�||fd�}�fd	d
�}tjjdddd�}|�|�|�|���	t
�j�d
��j\}}��	�j||g���t|�tj���t|�t
�dS)Nri�rG�����foobarcs�j�|�dSrQ)�log�extend)r�r?rrr��sz>UseBuiltinTypesTestCase.test_use_builtin_types.<locals>.foobarT)r_rdrr)r�rrrrr�r�r�r>rr�r r!rj)rZexpected_bytesZ
expected_dateZ	marshaledr��handlerZmybytesZmydaterr?r�test_use_builtin_types�s"�


z.UseBuiltinTypesTestCase.test_use_builtin_typescCstjjdd�}|�|j�dS)NTr)rr�r�r�r)rrrrr�*test_cgihandler_has_use_builtin_types_flag�szBUseBuiltinTypesTestCase.test_cgihandler_has_use_builtin_types_flagcCs(tjjddd�}|��|�|j�dS)NrTr)rr�r(r�r�rr�rrr�,test_xmlrpcserver_has_use_builtin_types_flag�s
�zDUseBuiltinTypesTestCase.test_xmlrpcserver_has_use_builtin_types_flagN)r0r1r2rrrrrrrr��sr�cCs0t�tttttttt	t
ttt
tttttt�dSrQ)rZrun_unittestrr�r�r�r�r�r]r�r�r�r�r�r�r�r�r�r�r�rrrr�	test_main�s"
�r�__main__)NN)N)r�)@rrr{rTr�rKr�
xmlrpc.clientr�rZ
xmlrpc.serverrZhttp.clientr�Zhttp.serverr�r�r�r�rl�testrr�r�rirkrrr�rr�r�r�r�r�r/r+r0r:rDrHrPrQr]r�r�r�r�r�ZskipIfr�r�r�r�r�r�r��contextmanagerr�r�r�Zreap_threadsrr0rrrr�<module>s�
���=WW
@
CH"C>ND!




F1le Man4ger