Your IP : 216.73.216.85


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/test_xmlrpc.cpython-35.opt-2.pyc



���]���3@s�ddlZddlZddlZddlZddlZddlmZddljZddl	Z
ddlZddlZddl
ZddlZddlZddlZddlZddlZddlmZyddlZWnek
rdZYnXyddlZWnek
r,dZYnXddddddZdd	dd
gdejd�ddded�dddddddejd�dejd\�d!ejejdd	dddd��igZGd"d#�d#ej�ZGd$d%�d%ej�ZGd&d'�d'ej�ZGd(d)�d)ej�Z Gd*d+�d+ej�Z!Gd,d-�d-ej�Z"da#a$a%ddd.d/�Z&dd0d1�Z'd2d3�Z(d4d5�Z)ej*ed6�Gd7d8�d8ej��Z+Gd9d:�d:e+�Z,Gd;d<�d<e+�Z-Gd=d>�d>e+�Z.Gd?d@�d@e+�Z/GdAdB�dBe/�Z0GdCdD�dDe/�Z1ej2edkdE�GdFdG�dGe+��Z3ej2edkdE�GdHdI�dIej��Z4GdJdK�dKej�Z5GdLdM�dMejj6�Z7ej*ed6�GdNdO�dOej��Z8ej9dPdQdR��Z:GdSdT�dTej�Z;GdUdV�dVej�Z<ej=dWdX��Z>e?dYkr�e>�dS)]�N)�mock)�supportZastringzfoo@bar.baz.spamZafloatgH�zns�@Zanint��Z
ashortlongZanotherlistz.zyx.41Zabase64smy dog has fleasZb64bytesZb64bytearrayZbooleanF�unicodeu	䀀怀耀uukey䀀z
regular valueZ	datetime1z20050210T11:41:23Z	datetime2���
��)��Z	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"�Zejed#�d$d%��Zd&S)'�XMLRPCTestCasecCs=tjtf�}tj|�}|jt|dd�dS)Nr)�	xmlrpclib�dumps�alist�loads�assertEqual)�self�dump�load�r�0/opt/alt/python35/lib64/python3.5/test_xmlrpc.py�test_dump_load/szXMLRPCTestCase.test_dump_loadcCs�tjdddddd�}|j|tjd��tj|f�}tj|dd	�\}}|\}|j||�|jt|�tj�|j|�tj|dd
�\}}|\}|j||�|jt|�tj�|j|�tj|dd	�\}}|\}|j||�|jt|�tj�|j|�tj|dd
�\}}|\}|j||�|jt|�tj�|j|�dS)Ni�rrr	r
rz20050210T11:41:23�use_builtin_typesTFZuse_datetime)	�datetimerr�DateTimerr�assertIs�type�assertIsNone)r�dt�s�result�m�newdtrrr�test_dump_bare_datetime4s.	
	
	
	z&XMLRPCTestCase.test_dump_bare_datetimecCstjdddddd�}|j|tjd��tj|f�}tj|dd	�\}}|\}|j||�|jt|�tj�|j|�tj|dd
�\}}|\}|j||�|jt|�tj�|j|�dS)Nrrrr	r
rz00010210T11:41:23rTF)	rrrrrrrrr)rrr r!r"r#rrr�test_datetime_before_1900Vs	
	z(XMLRPCTestCase.test_datetime_before_1900cCsutj�}tjtj|fdd��\\}}|j|jt�tj|fdd�}|j|t�dS)N�methodresponseT)rrrrZassertIsInstance�value�str)r�dZnew_d�dummyr rrr�test_bug_1164912hszXMLRPCTestCase.test_bug_1164912cCslGdd�dt�}|�}d|_d|_tjtj|f��\\}}|j||j�dS)Nc@seZdZdS)z-XMLRPCTestCase.test_newstyle_class.<locals>.TN)�__name__�
__module__�__qualname__rrrr�Tssr/�dZHello)�object�x�yrrrr�__dict__)rr/�t�t2r*rrr�test_newstyle_classrs			$z"XMLRPCTestCase.test_newstyle_classcCs|jttjd�dS)Nr�c�)r9)�assertRaises�
OverflowErrorrr)rrrr�test_dump_big_long{sz!XMLRPCTestCase.test_dump_big_longcCs#|jttjddif�dS)Nrr�)rrr=)r:�	TypeErrorrr)rrrr�test_dump_bad_dict~sz!XMLRPCTestCase.test_dump_bad_dictcCsKdddg}ddd|g}|j|�|jttj|f�dS)Nrrr=��)�appendr:r>rr)r�lr5rrr�test_dump_recursive_seq�s
z&XMLRPCTestCase.test_dump_recursive_seqcCsKddddi}ddd|i}||d<|jttj|f�dS)N�1r�2�3r=r)r5)r:r>rr)rr)r5rrr�test_dump_recursive_dict�s
z'XMLRPCTestCase.test_dump_recursive_dictcCs	tjdkr.|jttjtd	�f�tjtjtjf�|jttjtjdf�|jttjtjdf�dd�}tj	�}|j
tj|�|j
tj|�|jt|j
tjd|�|jt|j
tjd|�dS)
Nr�r�"cSsdS)Nr)r rrr�dummy_write�sz5XMLRPCTestCase.test_dump_big_int.<locals>.dummy_writeli���l)�sys�maxsizer:r;rr�int�MAXINT�MININT�
MarshallerZdump_int)rrKr"rrr�test_dump_big_int�s z XMLRPCTestCase.test_dump_big_intcCs�tjtd�f�tjttj�ttj�f�tjttjd�ttjd�f�dd�}tj�}|jtj|�|jtj|�|jtjd|�|jtjd|�dS)NrrJ�*cSsdS)Nr)r rrrrK�sz4XMLRPCTestCase.test_dump_double.<locals>.dummy_writel)rr�floatrOrPrQZdump_double)rrKr"rrr�test_dump_double�szXMLRPCTestCase.test_dump_doublecCsptdg}tdgf}tj|dd�}|j|tj|�dd�|jttj|f�dS)N�
allow_noneTr)rrrrrr:r>)rr'Zarg1�strgrrr�test_dump_none�s
	zXMLRPCTestCase.test_dump_nonecCsZddi}tj|fdd�}d|}|jtj|�dd|�|jdd�}|jtj|�dd|�tj|fdddd	�}|jtj|�dd|�|jdd�}|jtj|�dd|�d
}tj|fddd|�}|jtj|�dd|�|jtj|�d|�dS)
Nukey€¤u
value€¤�encodingziso-8859-15z,<?xml version='1.0' encoding='iso-8859-15'?>r�xmlcharrefreplacer&Tumethod€¤�
methodnamer)rrrr�encode)rr'rWr[rrr�test_dump_encoding�s"	
!!	!!	!z!XMLRPCTestCase.test_dump_encodingcCsd}|j|tj|��x�tttjfD]�}||�}tj|f�}tj|dd�\}}|\}|j||�|jt|�t�|j	|�tj|dd�\}}|\}|j||�|jt|�tj�|j	|�q2WdS)Nsmy dog has fleasrTF)
rr�Binary�bytes�	bytearrayrrrrr)r�sampleZtype_r'r r!r"Znewvaluerrr�test_dump_bytes�s	
	zXMLRPCTestCase.test_dump_bytescCsatj}d}|j|tj|�d}|j|tj|�d}|j|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)rrc�datarrr�test_loads_unsupported�s	z%XMLRPCTestCase.test_loads_unsupportedcCs8tjj�}|j|jd�ddgif�dS)Nz
user@host.tldzhost.tld�
Authorization�Basic dXNlcg==)rfrg)�xmlrpc�client�	TransportrZ
get_host_info)rZtransprrr�test_get_host_info�sz!XMLRPCTestCase.test_get_host_infocCs�yddl}Wntk
r*d}YnXd}ytjjd�j�Wn@tk
ro|j|d�Yntk
r�|j	|�YnXdS)NrFTzhttps://localhost:9999z&xmlrpc client's error with SSL support)
�ssl�ImportErrorrhri�ServerProxyZbad_function�NotImplementedErrorZassertFalse�OSError�
assertTrue)rrlZhas_sslrrr�test_ssl_presence�s


z XMLRPCTestCase.test_ssl_presencez!Threading required for this test.c
s�Gdd�dtjj�}�fdd�}tjjtjdf|��|j�j�tj	d|�}|j
�|j|j�dj�j
�}tj|��3}|j|j�d�|j|j�d�WdQRXdS)	Nc@s(eZdZdZdZdd�ZdS)z@XMLRPCTestCase.test_keepalive_disconnect.<locals>.RequestHandlerzHTTP/1.1FcSs�t|jjd��}|jj|�|jr>d|_dStjddd�}|j	�}|j
tjj
�|jdt|��|j�|jj|�d|_d|_dS)NzContent-LengthTrAr&F)rA)rN�headers�getZrfile�read�handledZclose_connectionrrr\Z
send_response�httpZ
HTTPStatusZOKZsend_header�lenZend_headersZwfile�write)r�length�responserrr�do_POSTs		
	zHXMLRPCTestCase.test_keepalive_disconnect.<locals>.RequestHandler.do_POSTN)r,r-r.�protocol_versionrvr|rrrr�RequestHandlersr~cs.�jjtd���j��j�dS)Nr)�socket�
settimeoutrT�handle_requestr)�serverrr�
run_servers
z<XMLRPCTestCase.test_keepalive_disconnect.<locals>.run_serverr�targetz
http://{}:{}/rA)rwr�ZBaseHTTPRequestHandlerZ
HTTPServerrZHOSTZ
addCleanup�server_close�	threading�Thread�start�join�formatZserver_addressrrnr�method)rr~r��thread�url�pr)r�r�test_keepalive_disconnects
z(XMLRPCTestCase.test_keepalive_disconnectN)r,r-r.rr$r%r+r7r<r?rDrHrRrUrXr]rbrerkrr�unittest�
skipUnlessr�r�rrrrr
-s$"
	r
c@sneZdZGdd�de�Zdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dS)�SimpleXMLRPCDispatcherTestCasec@seZdZdS)z*SimpleXMLRPCDispatcherTestCase.DispatchExcN)r,r-r.rrrr�DispatchExc,sr�c
s�d}�fdd�}tjj�}|j|��j�j��}|jd|�WdQRX�j|jj	|f��j
|jj��j
|jj�dS)Nrrr=cs�j|��dS)N)r�)�params)rrr�dispatched_func7szQSimpleXMLRPCDispatcherTestCase.test_call_registered_func.<locals>.dispatched_funcr�)rrr=)
rhr��SimpleXMLRPCDispatcher�register_functionr:r��	_dispatchr�	exception�argsr�	__cause__�__context__)r�
exp_paramsr��
dispatcher�exc_ctxr)rr�test_call_registered_func0s
z8SimpleXMLRPCDispatcherTestCase.test_call_registered_funcc
Cs�d}Gdd�d�}tjj�}|j|��|j|j��}|jd|�WdQRX|j|jj	|f�|j
|jj�|j
|jj�dS)Nrrr=c@seZdZdd�ZdS)zOSimpleXMLRPCDispatcherTestCase.test_call_instance_func.<locals>.DispatchedClasscWstj|��dS)N)r�r�)rr�rrrr�Jsz_SimpleXMLRPCDispatcherTestCase.test_call_instance_func.<locals>.DispatchedClass.dispatched_funcN)r,r-r.r�rrrr�DispatchedClassIsr�r�)rrr=)
rhr�r��register_instancer:r�r�rr�r�rr�r�)rr�r�r�r�rrr�test_call_instance_funcBsz6SimpleXMLRPCDispatcherTestCase.test_call_instance_funccCs�d}d}Gdd�d�}tjj�}|j|��|j|j��}|j||�WdQRX|j|jj	||f�|j
|jj�|j
|jj�dS)Nr�rrr=c@seZdZdd�ZdS)zLSimpleXMLRPCDispatcherTestCase.test_call_dispatch_func.<locals>.TestInstancecSstj||��dS)N)r�r�)rr�r�rrrr�^szVSimpleXMLRPCDispatcherTestCase.test_call_dispatch_func.<locals>.TestInstance._dispatchN)r,r-r.r�rrrr�TestInstance]sr�)rrr=)
rhr�r�r�r:r�r�rr�r�rr�r�)rZ
exp_methodr�r�r�r�rrr�test_call_dispatch_funcUsz6SimpleXMLRPCDispatcherTestCase.test_call_dispatch_funcc
CsPtjj�}|jddd�|jtd��|jdd�WdQRXdS)N�namer��param)r�)rhr�r�r��assertRaisesRegex�	Exceptionr�)rr�rrr�test_registered_func_is_nonejsz;SimpleXMLRPCDispatcherTestCase.test_registered_func_is_nonec
CsMtjj�}|jt��|jtd��|jdd�WdQRXdS)Nr�r�)r�)rhr�r�r�r1r�r�r�)rr�rrr�test_instance_has_no_funcrsz8SimpleXMLRPCDispatcherTestCase.test_instance_has_no_funcc
Cs=tjj�}|jtd��|jdd�WdQRXdS)Nr�r�)r�)rhr�r�r�r�r�)rr�rrr�test_cannot_locate_funczsz6SimpleXMLRPCDispatcherTestCase.test_cannot_locate_funcN)r,r-r.r�r�r�r�r�r�r�r�rrrrr�+sr�c@seZdZdd�ZdS)�HelperTestCasecCsO|jtjd�d�|jtjd�d�|jtjd�d�dS)Nza&bza&amp;bza<bza&lt;bza>bza&gt;b)rr�escape)rrrr�test_escape�szHelperTestCase.test_escapeN)r,r-r.r�rrrrr��sr�c@s4eZdZdd�Zdd�Zdd�ZdS)�
FaultTestCasecCsHtjdd�}|jt|�d�|jt|�t|��dS)NrSz
Test Faultz<Fault 42: 'Test Fault'>)r�Faultr�reprr()r�frrr�	test_repr�szFaultTestCase.test_reprcCs�tjdd�}tj|f�}tj|�\\}}|j|ddddi�|j|d�tj�j|�}|jtjtj|�dS)NrSz
Test Fault�	faultCode�faultString)rr�rrrrQr:)rr�r Znewfr"rrr�test_dump_fault�szFaultTestCase.test_dump_faultcCs<|jttjjtd�|jtjjtd��dS)N�__add�title)r:�AttributeErrorrhr��resolve_dotted_attributer(rq)rrrr�test_dotted_attribute�s	z#FaultTestCase.test_dotted_attributeN)r,r-r.r�r�r�rrrrr��s
r�c@speZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�DateTimeTestCasecCs�tjd��t}tjdddddddddg	�}||_tj�}tj�}|jt	|�tj
d	|��WdQRXdS)
Nztime.localtimei���r��1��z%Y%m%dT%H:%M:%S)rZpatch�time�struct_timeZreturn_value�	localtimerrrr(�strftime)rZlocaltime_mockZtime_structr�r5rrr�test_default�s$	zDateTimeTestCase.test_defaultcCsDd}tj|�}|jt|�tjdtj|���dS)Ngl]�ޮ��Az%Y%m%dT%H:%M:%S)rrrr(r�r�r�)rr)r5rrr�	test_time�szDateTimeTestCase.test_timec	Cs/d}tj|�}|jt|�d
�dS)N����	r�&�2rA�rz20070609T10:38:50)	r�r�r�rr�r�rAr�r)rrrr()rr)r5rrr�test_time_tuple�sz DateTimeTestCase.test_time_tuplecCsDtjd�}tj|�}|jt|�tjd|��dS)Ngl]�ޮ��Az%Y%m%dT%H:%M:%S)r�r�rrrr(r�)rr)r5rrr�test_time_struct�sz!DateTimeTestCase.test_time_structcCsGtjdddddd�}tj|�}|jt|�d�dS)Ni�rrr=r@rAz20070102T03:04:05)rrrrr()rr)r5rrr�test_datetime_datetime�sz'DateTimeTestCase.test_datetime_datetimecCsWtjdddddd�}tj|�}dt|�}|jt|�|�dS)Ni�rrr=r@rAz%<DateTime '20070102T03:04:05' at %#x>)rrr�idrr�)rr)r5�valrrrr��szDateTimeTestCase.test_reprcCsyd}tj�}|j|�tjtjdddddd��}|j||�tj|�}|j||�dS)Nz 20070908T07:11:13  i�r��r�r	�
)rr�decoderrZ	_datetime)rr)�t1Ztrefr6rrr�test_decode�s
'zDateTimeTestCase.test_decodec:Cs/tjj�}tj|j��}|j||k�|j||k�|tjdd�}|j||k�|j||k�|jd�}|j||k�|j||k�tj|j��}|j||k�|j||k�|jd�}|j�}|j	t
��|dkWdQRX|j	t
��||kWdQRX|j	t
��|t|�kWdQRX|j	t
��||kWdQRX|j	t
��|td�kWdQRX|j	t
��||kWdQRX|j	t
��|t|�kWdQRX|j	t
��||kWdQRXdS)NZsecondsr@z%Y%m%dT%H:%M:%S�asciii�)
r�nowrrZ	timetuplerqZ	timedeltar�r\r:r>r`rT)rr�ZdtimeZthenZdstrZ
dtime_thenZdbytesZdtuplerrr�test_comparison�s>z DateTimeTestCase.test_comparisonN)r,r-r.r�r�r�r�r�r�r�r�rrrrr��s

r�c@s4eZdZdd�Zdd�Zdd�ZdS)�BinaryTestCasecCs&tj�}|jt|�d�dS)N�)rr^rr()rr5rrrr��szBinaryTestCase.test_defaultcCs8d}tj|�}|jt|�t|d��dS)Nsabc123��zlatin-1)rr^rr()rr)r5rrr�test_stringszBinaryTestCase.test_stringcCsd}tj|�}tj�}|j|�|jt|�t|d��tj|�}|jt|�t|d��dS)Nsabc123��zlatin-1)�base64Zencodebytesrr^r�rr(Z_binary)rr)�der�r6rrrr�s
zBinaryTestCase.test_decodeN)r,r-r.r�r�r�rrrrr��sr�c	Cs�Gdd�d�}dd�}Gdd�dtjj�}|sMtjj}|d|d	|d
ddd�}zy�|j�|jj�\aad
ttfa	|j
�|j�|j�|j
t�|j
dd�d�|j
dd�d�|j
|�|�}|j|dd�|j�x$|dkrS|j�|d8}q0WWntjk
rlYnXWd|jj�da|j�XdS)Nc@s;eZdZdd�Zdd�ZGdd�d�ZdS)z&http_server.<locals>.TestInstanceClasscSs||S)Nr)rr2r3rrr�divsz*http_server.<locals>.TestInstanceClass.divcSs|dkrdSdS)Nr�zThis is the div functionr)rr�rrr�_methodHelpsz2http_server.<locals>.TestInstanceClass._methodHelpc@s"eZdZedd��ZdS)z.http_server.<locals>.TestInstanceClass.FixturecSsdS)N�42rrrrr�getData sz6http_server.<locals>.TestInstanceClass.Fixture.getDataN)r,r-r.�staticmethodr�rrrr�Fixturesr�N)r,r-r.r�r�r�rrrr�TestInstanceClasssr�cSsdS)NTrrrrr�my_function$sz http_server.<locals>.my_functionc@seZdZdd�ZdS)z#http_server.<locals>.MyXMLRPCServercSs,|jj�\}}|jd�||fS)NT)r�accept�setblocking)rr �portrrr�get_request)s
z/http_server.<locals>.MyXMLRPCServer.get_requestN)r,r-r.r�rrrr�MyXMLRPCServer(sr��	localhostrrY�logRequestsF�bind_and_activatezhttp://%s:%dcSs||S)Nr)r2r3rrr�<lambda>Bszhttp_server.<locals>.<lambda>�addcSs|S)Nr)r2rrrr�CsutêštZallow_dotted_namesTr)r�r)rhr��SimpleXMLRPCServer�SimpleXMLRPCRequestHandler�server_bindr�getsockname�ADDR�PORT�URL�server_activate� register_introspection_functions�register_multicall_functionsr��powr��setr��timeout�close)	�evt�numrequests�requestHandlerrYr�r�r��servZtestInstancerrr�http_servers<






	

	
rcCs�Gdd�d�}dd�}Gdd�dtjj�}|sMtjj}Gdd�d|�}Gd	d
�d
�}|d|d
ddd�}|jjd�|j�zy|jj�\aa	dtt	fa
|j�ddg}	x=|	D]5}
|j|
tjj
��}|j�|j�q�W|j|	d�jt�|j|	d�jdd�d�|jd|��|j�x$|dkr�|j�|d8}q�WWntjk
r�YnXWd|jj�da	|j�XdS)Nc@s(eZdZdd�Zdd�ZdS)z,http_multi_server.<locals>.TestInstanceClasscSs||S)Nr)rr2r3rrrr�Wsz0http_multi_server.<locals>.TestInstanceClass.divcSs|dkrdSdS)Nr�zThis is the div functionr)rr�rrrr�Zsz8http_multi_server.<locals>.TestInstanceClass._methodHelpN)r,r-r.r�r�rrrrr�Vsr�cSsdS)NTrrrrrr�^sz&http_multi_server.<locals>.my_functionc@seZdZdd�ZdS)z)http_multi_server.<locals>.MyXMLRPCServercSs,|jj�\}}|jd�||fS)NT)rr�r�)rr r�rrrr�cs
z5http_multi_server.<locals>.MyXMLRPCServer.get_requestN)r,r-r.r�rrrrr�bsr�c@seZdZgZdS)z+http_multi_server.<locals>.MyRequestHandlerN)r,r-r.Z	rpc_pathsrrrr�MyRequestHandlerlsrc@s"eZdZdddd�ZdS)z+http_multi_server.<locals>.BrokenDispatcherNcSstd��dS)Nzbroken dispatcher)�RuntimeError)rrdZdispatch_method�pathrrr�_marshaled_dispatchpsz?http_multi_server.<locals>.BrokenDispatcher._marshaled_dispatch)r,r-r.r	rrrr�BrokenDispatcherosr
r�rr�Fr�r=zhttp://%s:%dz/fooz/foo/barrcSs||S)Nr)r2r3rrrr��sz#http_multi_server.<locals>.<lambda>r�z
/is/broken)r�r)rhr�ZMultiPathXMLRPCServerr�rr�r�r�r�r�r�r�Zadd_dispatcherr�r�r�Zget_dispatcherr�r�r�r�r�r)rrrr�r�r�rr
r�pathsrr)rrr�http_multi_serverUs@



#

	
rcCsyy8|jdks!|jdkr%dS|jjd�}Wntk
rXt|�}YnX|rud|j�krudSdS)NrTzX-exceptionztemporarily unavailable���)Zerrcodersrtr�r(�lower)�eZexc_messrrr�is_unavailable_exception�s
rcs&|sdd�S�fdd�}|S)NcSs|S)Nr)�funcrrrr��sz)make_request_and_skipIf.<locals>.<lambda>cs�fdd�}|S)Ncsjytjt�j�Wn=tjtfk
rV}zt|�sD�WYdd}~XnXtj���dS)N)	rrnr�r��
ProtocolErrorrprr�ZSkipTest)rr)�reasonrr�make_request_and_skip�szImake_request_and_skipIf.<locals>.decorator.<locals>.make_request_and_skipr)rr)rrr�	decorator�sz*make_request_and_skipIf.<locals>.decoratorr)Z	conditionrrr)rr�make_request_and_skipIf�s
	rz!Threading required for this test.c@s@eZdZdZdZee�Zdd�Zdd�Z	dS)�BaseServerTestCaseNrcCssdtjj_tj�|_|j|j|jf}tj	d|j
d|�j�|jj�|jj
�dS)NTr�r�)rhr�r��_send_traceback_headerr��Eventr�
request_countrr��
threadFuncr��wait�clear)r�	serv_argsrrr�setUp�s
zBaseServerTestCase.setUpcCs |jj�dtjj_dS)NF)rrrhr�r�r)rrrr�tearDown�s
zBaseServerTestCase.tearDown)
r,r-r.rrr�rrrr rrrrr�s

rc@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)&�SimpleServerTestCasecCs�y/tjt�}|j|jdd�d�Wn]tjtfk
r�}z4t|�s||jd|t	|dd�f�WYdd}~XnXdS)Nr�r�z%s
%srsr�i�)
rrnr�rr�rrpr�fail�getattr)rr�rrrr�test_simple1�s z!SimpleServerTestCase.test_simple1cCs�d}d}y3tjt�}|j|j||�||�Wn]tjtfk
r�}z4t|�s�|jd|t	|dd�f�WYdd}~XnXdS)NuPŷtuhơnz%s
%srsr�)
rrnr�rr�rrprr"r#)r�start_string�
end_stringr�rrrr�
test_nonascii�sz"SimpleServerTestCase.test_nonasciicCs�d}d}y9tjtdd�}|j|j||�||�Wn`tjtjfk
r�}z4t|�s�|j	d|t
|dd�f�WYdd}~XnXdS)Nu€�¤rYziso-8859-15z%s
%srsr�)rrnr�rr�rr�errorrr"r#)rr%r&r�rrrr�test_client_encoding�sz)SimpleServerTestCase.test_client_encodingcCs�y2tjtdd�}|j|jd�d�Wn`tjtjfk
r�}z4t|�s�|j	d|t
|dd�f�WYdd}~XnXdS)NrYr�rSz%s
%srsr�)rrnr�rttêštrrr)rr"r#)rr�rrrr�test_nonascii_methodname�sz-SimpleServerTestCase.test_nonascii_methodnamecCsetjjtt�}|jdd�|j�}|j�|j|j	d�|j|j
d�dS)NZPOSTz/this-is-not-validi�z	Not Found)�httplibri�HTTPConnectionr�r�ZrequestZgetresponserr�statusr)r�connr{rrr�XXXtest_404s
z SimpleServerTestCase.XXXtest_404cCs�tddddddddd	d
g
�}y8tjt�}|jj�}|jt|�|�Wn]tjtfk
r�}z4t	|�s�|j
d|t|dd
�f�WYdd}~XnXdS)Nr�r�r�r�utêštzsystem.listMethodszsystem.methodHelpzsystem.methodSignaturezsystem.multicallr�z%s
%srsr�)r�rrnr��systemZlistMethodsrrrprr"r#)rZexpected_methodsr��methrrrr�test_introspection1sz(SimpleServerTestCase.test_introspection1cCs�y5tjt�}|jjd�}|j|d�Wn]tjtfk
r�}z4t|�s�|j	d|t
|dd�f�WYdd}~XnXdS)Nr�zThis is the div functionz%s
%srsr�)rrnr�r1�
methodHelprrrprr"r#)rr�Zdivhelprrrr�test_introspection2sz(SimpleServerTestCase.test_introspection2rz)Docstrings are omitted with -O2 and abovecCs�y5tjt�}|jjd�}|j|d�Wn]tjtfk
r�}z4t|�s�|j	d|t
|dd�f�WYdd}~XnXdS)Nr�zThis is my functionz%s
%srsr�)rrnr�r1r4rrrprr"r#)rr�Z
myfunctionrrrr�test_introspection3+sz(SimpleServerTestCase.test_introspection3cCs�y5tjt�}|jjd�}|j|d�Wn]tjtfk
r�}z4t|�s�|j	d|t
|dd�f�WYdd}~XnXdS)Nr�zsignatures not supportedz%s
%srsr�)rrnr�r1ZmethodSignaturerrrprr"r#)rr�Zdivsigrrrr�test_introspection49sz(SimpleServerTestCase.test_introspection4cCs�y�tjt�}tj|�}|jdd�|jdd�|jdd�|�\}}}|j|d
�|j|d�|j|d�Wn]tjt	fk
r�}z4t
|�s�|jd|t|dd	�f�WYdd}~XnXdS)
Nrr=r�r��rSz%s
%srsr�rAi�r=)
rrnr��	MultiCallr�r�r�rrrprr"r#)rr��	multicall�
add_resultZ
pow_resultZ
div_resultrrrr�test_multicallFsz#SimpleServerTestCase.test_multicallcCs�yktjt�}tj|�}|j�|�}|j|jddd�|j|jddd�Wn]tjtfk
r�}z4t	|�s�|j
d|t|dd�f�WYdd}~XnXdS)	Nrr�rr�z@<class 'Exception'>:method "this_is_not_exists" is not supportedz%s
%srsr�)rrnr�r9Zthis_is_not_existsr�resultsrrprr"r#)rr�r:r!rrrr�test_non_existing_multicallWs
	z0SimpleServerTestCase.test_non_existing_multicallcCsF|jttjjtd�|jtjjtd��|j�dS)Nr�r�)r:r�rhr�r�r(rqr$)rrrrr�ls	z*SimpleServerTestCase.test_dotted_attributecCs<tjdttf�}|jj�}|j|d�dS)Nzhttp://%s:%d/RPC2r�)rrnr�r�r�r�r)rr�rdrrr�test_allow_dotted_names_truevsz1SimpleServerTestCase.test_allow_dotted_names_truecCs9tjdttf�}|j|jdd�d�dS)Nzhttp://%s:%d/RPC2�a�éuaé)rrnr�r�rr�)rr�rrr�test_unicode_host|sz&SimpleServerTestCase.test_unicode_hostcCsEtjjtt�}|jdjtt�jd��|j�dS)NzwPOST /RPC2 HTTP/1.0
Content-Length: 100

bye HTTP/1.1
Host: {}:{}
Accept-Encoding: identity
Content-Length: 0

r�)	rwrir-r�r��sendr�r\r)rr/rrr�test_partial_post�sz&SimpleServerTestCase.test_partial_postcCs_tjt��0}|jdd�|j|d�jd�WdQRX|j|d�jd�dS)Nrr=�	transport)NN)NN)rrnr�r�ZassertNotEqual�_connectionr)rr�rrr�test_context_manager�sz)SimpleServerTestCase.test_context_managercCsby-tjt��}|jdd�WdQRXWntjk
rDYnX|j|d�jd�dS)Nrr@rE)NN)rrnr�r�r�rrF)rr�rrr�!test_context_manager_method_error�sz6SimpleServerTestCase.test_context_manager_method_errorN)r,r-r.r$r'r*r+r0r3r5rrL�flags�optimizer6r7r<r>r�r?rBrDrGrHrrrrr!�s$




r!c@s4eZdZedddd��Zdd�ZdS)�SimpleServerEncodingTestCaseNcCst|||d�dS)Nziso-8859-15)r)rrrrYrrrr�sz'SimpleServerEncodingTestCase.threadFunccCs�d}d}y3tjt�}|j|j||�||�Wn`tjtjfk
r�}z4t|�s�|j	d|t
|dd�f�WYdd}~XnXdS)Nu€r(z%s
%srsr�)rrnr�rr�rrr)rr"r#)rr%r&r�rrrr�test_server_encoding�sz1SimpleServerEncodingTestCase.test_server_encoding)r,r-r.r�rrLrrrrrK�srKc@sFeZdZee�ZdZdd�Zdd�Zdd�Z	dS)	�MultiPathServerTestCasercCsOtjtd�}|j|jdd�d�|jtj|jdd�dS)Nz/foor�r�i�)rrnr�rr�r:r�r�)rr�rrr�
test_path1�sz"MultiPathServerTestCase.test_path1cCsOtjtd�}|j|jdd�d�|jtj|jdd�dS)Nz/foo/barr�r��)rrnr�rr�r:r�r�)rr�rrr�
test_path2�sz"MultiPathServerTestCase.test_path2cCs3tjtd�}|jtj|jdd�dS)Nz
/is/brokenr�r�)rrnr�r:r�r�)rr�rrr�
test_path3�sz"MultiPathServerTestCase.test_path3N)
r,r-r.r�rrrrNrPrQrrrrrM�s
rMc@s>eZdZGdd�dejj�ZeZdd�ZdS)�BaseKeepaliveServerTestCasec@s@eZdZejjZdZgZdd�Z	dd�Z
dS)z*BaseKeepaliveServerTestCase.RequestHandlerzHTTP/1.1cCs6|jjg�t|j�d|_|jj|�S)Nr)�
myRequestsrBrx�reqidx�parentClass�handle)rrrrrV�sz1BaseKeepaliveServerTestCase.RequestHandler.handlecCs0|jj|�}|j|jj|j�|S)N)rU�handle_one_requestrSrTrBZraw_requestline)rr!rrrrW�sz=BaseKeepaliveServerTestCase.RequestHandler.handle_one_requestN)r,r-r.rhr�r�rUr}rSrVrWrrrrr~�s
r~cCsg|j_tj|�S)N)r~rSrr)rrrrr�sz!BaseKeepaliveServerTestCase.setUpN)	r,r-r.rhr�r�r~rrrrrrrR�s
rRc@seZdZdd�ZdS)�KeepaliveServerTestCase1cCs�tjt�}|j|jdd�d�|j|jdd�d�|j|jdd�d�|d��|jt|jj�d�|jt|jjd	�d�dS)
Nr�r�rrri�i�i�r
)	rrnr�rr�rxr~rS�assertGreaterEqual)rr�rrr�test_two�s
z!KeepaliveServerTestCase1.test_twoN)r,r-r.rZrrrrrX�srXc@s.eZdZdZdd�Zdd�ZdS)�KeepaliveServerTestCase2rcCs1tjt�}|j|jdd�d�|j|jdd�d�|j|jdd�d�|d��|j|jdd�d	�|j|jdd�d
�|j|jdd�d�|d��|jt|jj�d�|jt|jjd�d�|jt|jjd
�d�dS)Nr�r�rrri�i�i�i�i�i�r
���)	rrnr�rr�rxr~rSrY)rr�rrr�
test_close�s

 z#KeepaliveServerTestCase2.test_closecCs�tjt�}|j|jdd�d�|d�j�|j|jdd�d�|d��|jt|jj�d�dS)Nr�r�rErri�i�)	rrnr�rr�rrxr~rS)rr�rrr�test_transports
z'KeepaliveServerTestCase2.test_transportN)r,r-r.rr]r^rrrrr[�sr[z
requires gzipc@s{eZdZGdd�dejj�ZeZGdd�dej	�Z	dd�Z
dd�Zd	d
�Zdd�Z
d
S)�GzipServerTestCasec@s.eZdZejjZdZdd�ZdS)z!GzipServerTestCase.RequestHandlerzHTTP/1.1cCs)t|jd�|j_|jj|�S)Nzcontent-length)rNrs�	__class__�content_lengthrUr|)rrrrr|sz)GzipServerTestCase.RequestHandler.do_POSTN)	r,r-r.rhr�r�rUr}r|rrrrr~sr~c@s.eZdZdZdd�Zdd�ZdS)zGzipServerTestCase.TransportFcCs.t|jdd��|_tjj||�S)Nzcontent-lengthr)rNZ	getheader�response_lengthrrj�parse_response)rr{rrrrc#sz+GzipServerTestCase.Transport.parse_responsecCs/|jr|jdd�tjj|||�S)NzContent-Encoding�gzip)�	fake_gzipZ	putheaderrrj�send_content)r�
connectionZbodyrrrrf's	z)GzipServerTestCase.Transport.send_contentN)r,r-r.rercrfrrrrrj srjcCstj|�dS)N)rr)rrrrr-szGzipServerTestCase.setUpcCs�|j�}d|_tjtd|�}|j|jdd�d�|jj}d|_|j|jdd�d�|jj}|j	||k�|d��dS)NrEr�r�rri�i�)
rj�encode_thresholdrrnr�rr�r~rarq)rr5r�r@�brrr�test_gzip_request0s		z$GzipServerTestCase.test_gzip_requestc
Cs�|j�}d|_d|_tjtd|�}|jtjtj	d��}|�|j
dd�WdQRX|d��dS)NTrEz\b400\br�r�r)rjrhrerrnr�r�r�re�compiler�)rr5r��cmrrr�test_bad_gzip_request<s		z(GzipServerTestCase.test_bad_gzip_requestcCs�|j�}tjtd|�}|jj}d|j_|j|jdd�d�|j}d|j_|j|jdd�d�|d��|j}||j_|j	||k�dS)NrEr�r�rri�i�)
rjrrnr�rrhrr�rbrq)rr5r��oldr@rirrr�test_gzip_responseGs	
	z%GzipServerTestCase.test_gzip_responseN)r,r-r.rhr�r�r~rrrjrrjrnrprrrrr_s
r_c@seZdZdd�ZdS)�GzipUtilTestCasecCs�d}d|}tj|�}tj|�}|jt|�|�d|d}tj|�}|jtd��tj|�WdQRXtj|dd	�dS)
Nrisrz#max gzipped payload length exceededZ
max_decodeiPi@r
)rZgzip_encodeZgzip_decoderrxr��
ValueError)rZmax_gzip_decoderd�encodedZdecodedrrr�test_gzip_decode_limitYs
	
z'GzipUtilTestCase.test_gzip_decode_limitN)r,r-r.rtrrrrrqVsrqc@s4eZdZdd�Zdd�Zdd�ZdS)�ServerProxyTestCasecCs/tjj|�tr"t|_n	d|_dS)Nzhttp://)r��TestCaserr�r�r�)rrrrrlszServerProxyTestCase.setUpcCs/tj|j�}|j|d��d�dS)Nr)rrnr�r)rr�rrrr]vszServerProxyTestCase.test_closecCs>tj�}tj|jd|�}|j|d�|�dS)NrE)rrjrnr�r)rr5r�rrrr^zsz"ServerProxyTestCase.test_transportN)r,r-r.rr]r^rrrrruks
rucs%eZdZd�fdd�Z�S)�FailingMessageClassNcs/|j�}|dkrdSt�j||�S)Nzcontent-lengthzI am broken)r�superrt)r�keyZfailobj)r`rrrt�szFailingMessageClass.get)r,r-r.rtrr)r`rrw�srwc@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�FailingServerTestCasecCsXtj�|_|jdf}tjdtd|�j�|jj�|jj�dS)Nrr�r�)r�rrr�rr�rr)rrrrrr�s

zFailingServerTestCase.setUpcCs;|jj�dtjj_tjj}|tjj	_
dS)NF)rrrhr�r�rrwri�HTTPMessager��MessageClass)rZ
default_classrrrr �s
zFailingServerTestCase.tearDowncCs�tjjj}|j|d�dtjj_y/tjt�}|j|jdd�d�Wn]tj	t
fk
r�}z4t|�s�|jd|t
|dd�f�WYdd}~XnXdS)	NFTr�r�z%s
%srsr�i�)rhr�r�rrrrnr�r�rrprr"r#)rZflagvalr�rrrr�
test_basic�s z FailingServerTestCase.test_basiccCs�ttjj_y#tjt�}|jdd�Wn�tj	t
fk
r�}z_t|�r�t|d�r�|j
|jjd�dk�|j
|jjd�dk�WYdd}~XnX|jd�dS)Nr�r�rszX-exceptionzX-tracebackzProtocolError not raised)rwrhr�r�r|rrnr�r�rrpr�hasattrrqrsrtr")rr�rrrr�test_fail_no_info�s2z'FailingServerTestCase.test_fail_no_infocCs�ttjj_dtjj_y#tjt	�}|j
dd�Wn�tjtfk
r�}zbt
|�r�t|d�r�d}|j|jjd�|�|j|jjd�dk	�WYdd}~XnX|jd�dS)	NTr�r�rsz5invalid literal for int() with base 10: 'I am broken'zX-exceptionzX-tracebackzProtocolError not raised)rwrhr�r�r|r�rrrnr�r�rrprr~rrsrtrqr")rr�rZexpected_errrrr�test_fail_with_info�s2z)FailingServerTestCase.test_fail_with_infoN)r,r-r.rr r}rr�rrrrrz�s

	rzzutf-8ccsPddl}tj}|j|j�d|�t_ztjVWd|t_XdS)NrrY)�iorL�stdout�
TextIOWrapper�BytesIO)rYr�Zorig_stdoutrrr�captured_stdout�s	r�c@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�CGIHandlerTestCasecCstjj�|_dS)N)rhr��CGIXMLRPCRequestHandler�cgi)rrrrr�szCGIHandlerTestCase.setUpcCs
d|_dS)N)r�)rrrrr �szCGIHandlerTestCase.tearDowncCs�tj���}d|d<td|jj��}|jj�WdQRX|jd�|j�}|j�d}dj	|j�dd��}|j
|d	�|j
|d
�WdQRXdS)N�GETZREQUEST_METHODrYrr� rr@Z400zBad Request)r�EnvironmentVarGuardr�r�rYr��seekru�splitr�r)r�env�data_outrVr.�messagerrr�test_cgi_get�s

zCGIHandlerTestCase.test_cgi_getcCsd}tj��y}td|jj��Z}tj��D}|j|�|jd�tt	|��|d<|jj
�WdQRXWdQRXWdQRX|jd�|j�}|jt
jt
j|dd��||jd�d�}|jttjd|�jd��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>
        rYrZCONTENT_LENGTH�,z<?xmlzContent-Length: (\d+)r)rr�r�r�rYZcaptured_stdinryr�r(rxr�rur:rr�r�findrrNrk�search�group)rrdr�r�Zdata_inrVZcontentrrr�test_cgi_xmlrpc_response�s


"
#z+CGIHandlerTestCase.test_cgi_xmlrpc_responseN)r,r-r.rr r�r�rrrrr��sr�c@s4eZdZdd�Zdd�Zdd�ZdS)�UseBuiltinTypesTestCasecsg�_d}tjdddddd�}tj||fd�}�fd	d
�}tjjddd
ddd�}|j|�|j|��j	t
�j�d��j\}}�j	�j||g��jt|�tj��jt|�t
�dS)Nsmy dog has fleasi�rA�����foobarcs�jj|�dS)N)�log�extend)r�)rrrr�3sz>UseBuiltinTypesTestCase.test_use_builtin_types.<locals>.foobarrVTrYrr)r�rrrrhr�r�r�r	rrxrrr_)rZexpected_bytesZ
expected_dateZ	marshaledr��handlerZmybytesZmydater)rr�test_use_builtin_types+s	

z.UseBuiltinTypesTestCase.test_use_builtin_typescCs)tjjdd�}|j|j�dS)NrT)rhr�r�rqr)rr�rrr�*test_cgihandler_has_use_builtin_types_flag?szBUseBuiltinTypesTestCase.test_cgihandler_has_use_builtin_types_flagcCs6tjjddd�}|j�|j|j�dS)Nr�rrT)r�r)rhr�r�r�rqr)rr�rrr�,test_xmlrpcserver_has_use_builtin_types_flagCs	
zDUseBuiltinTypesTestCase.test_xmlrpcserver_has_use_builtin_types_flagN)r,r-r.r�r�r�rrrrr�)sr�cCsAtjtttttttt	t
ttt
ttttt�dS)N)rZrun_unittestr
r�r�r�r�r�r!rKrXr[r_rqrMrurzr�r�rrrr�	test_mainJs		r��__main__ir
)	rrrr	r
rrrr
)@r�rrLr�r�r�
xmlrpc.clientrirZ
xmlrpc.serverrhZhttp.clientrwZhttp.serverr�osrkr��
contextlibZtestrrdrmr�r^r`rrrvr
r�r�r�r�r�r�r�r�rrrrr�rr!rKrMrRrXr[ZskipIfr_rqrur{rwrz�contextmanagerr�r�r�Zreap_threadsr�r,rrrr�<module>s�

			'�WW?C�""C"L
D!