Your IP : 216.73.216.52


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.pyc



��Yf���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b64bytearrayZbooleanFZunicodeu	䀀怀耀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�5/opt/alt/python35/lib64/python3.5/test/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�rrrr	r
z20050210T11: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)Nrrrrr	r
z00010210T11:41:23rTF)	rrr
rrrrrr)rrrr r!r"rrr�test_datetime_before_1900Vs	
	z(XMLRPCTestCase.test_datetime_before_1900cCsutj�}tjtj|fdd��\\}}|j|jt�tj|fdd�}|j|t�dS)N�methodresponseT)r
rrrZassertIsInstance�value�str)r�dZnew_d�dummyrrrr�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�yr
rrr�__dict__)rr.�t�t2r)rrr�test_newstyle_classrs			$z"XMLRPCTestCase.test_newstyle_classcCs|jttjd�dS)Nr�c�)r8)�assertRaises�
OverflowErrorr
r)rrrr�test_dump_big_long{sz!XMLRPCTestCase.test_dump_big_longcCs#|jttjddif�dS)Nrr�)rrr<)r9�	TypeErrorr
r)rrrr�test_dump_bad_dict~sz!XMLRPCTestCase.test_dump_bad_dictcCsKdddg}ddd|g}|j|�|jttj|f�dS)Nrrr<��)�appendr9r=r
r)r�lr4rrr�test_dump_recursive_seq�s
z&XMLRPCTestCase.test_dump_recursive_seqcCsKddddi}ddd|i}||d<|jttj|f�dS)N�1r�2�3r<r(r4)r9r=r
r)rr(r4rrr�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)rrrr�dummy_write�sz5XMLRPCTestCase.test_dump_big_int.<locals>.dummy_writeli���l)�sys�maxsizer9r:r
r�int�MAXINT�MININT�
MarshallerZdump_int)rrJr!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)NrrI�*cSsdS)Nr)rrrrrJ�sz4XMLRPCTestCase.test_dump_double.<locals>.dummy_writel)r
r�floatrNrOrPZdump_double)rrJr!rrr�test_dump_double�szXMLRPCTestCase.test_dump_doublecCsptdg}tdgf}tj|dd�}|j|tj|�dd�|jttj|f�dS)N�
allow_noneTr)rr
rrrr9r=)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)r
rrr�encode)rr&rVrZrrr�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)rZsampleZtype_r&rr 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
�
ResponseErrorr9r)rra�datarrr�test_loads_unsupported�s	z%XMLRPCTestCase.test_loads_unsupportedcCs8tjj�}|j|jd�ddgif�dS)Nz
user@host.tldzhost.tld�
Authorization�Basic dXNlcg==)rdre)�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�ImportErrorrfrg�ServerProxyZbad_function�NotImplementedErrorZassertFalse�OSError�
assertTrue)rrjZhas_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-LengthTr@r%F)r@)rM�headers�getZrfile�read�handledZclose_connectionr
rr[Z
send_response�httpZ
HTTPStatusZOKZsend_header�lenZend_headersZwfile�write)rZlength�responserrr�do_POSTs		
	zHXMLRPCTestCase.test_keepalive_disconnect.<locals>.RequestHandler.do_POSTN)r+r,r-�protocol_versionrtryrrrr�RequestHandlersr{cs.�jjtd���j��j�dS)Nr)�socket�
settimeoutrS�handle_requestr)�serverrr�
run_servers
z<XMLRPCTestCase.test_keepalive_disconnect.<locals>.run_serverr�targetz
http://{}:{}/r@)rurZBaseHTTPRequestHandlerZ
HTTPServerrZHOSTZ
addCleanup�server_close�	threading�Thread�start�join�formatZserver_addressr
rlr�method)rr{r�Zthread�url�pr)rr�test_keepalive_disconnects
z(XMLRPCTestCase.test_keepalive_disconnectN)r+r,r-rr#r$r*r6r;r>rCrGrQrTrWr\r`rcrirp�unittest�
skipUnlessr�r�rrrrr-s$"
	rc@sneZdZGdd�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)r+r,r-�__doc__rrrr�DispatchExc,sr�c
s�d}�fdd�}tjj�}|j|��j�j��}|jd|�WdQRX�j|jj	|f��j
|jj��j
|jj�dS)	z$Calls explicitly registered functionrrr<cs�j|��dS)N)r�)�params)rrr�dispatched_func7szQSimpleXMLRPCDispatcherTestCase.test_call_registered_func.<locals>.dispatched_funcr�N)rrr<)
rfr�SimpleXMLRPCDispatcher�register_functionr9r��	_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)	z3Calls a registered instance attribute as a functionrrr<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�N)rrr<)
rfrr��register_instancer9r�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)	z4Calls the registered instance's `_dispatch` functionr�rrr<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�N)rrr<)
rfrr�r�r9r�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)z2Calls explicitly registered function which is NoneN�namer��param)r�)rfrr�r��assertRaisesRegex�	Exceptionr�)rr�rrr�test_registered_func_is_nonejsz;SimpleXMLRPCDispatcherTestCase.test_registered_func_is_nonec
CsMtjj�}|jt��|jtd��|jdd�WdQRXdS)z>Attempts to call nonexistent function on a registered instancer�r�N)r�)rfrr�r�r0r�r�r�)rr�rrr�test_instance_has_no_funcrsz8SimpleXMLRPCDispatcherTestCase.test_instance_has_no_funcc
Cs=tjj�}|jtd��|jdd�WdQRXdS)z2Calls a function that the dispatcher cannot locater�r�N)r�)rfrr�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)NrRz
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)NrRz
Test Fault�	faultCode�faultString)r
r�rrrrPr9)rr�rZnewfr!rrr�test_dump_fault�szFaultTestCase.test_dump_faultcCs<|jttjjtd�|jtjjtd��dS)N�__add�title)r9�AttributeErrorrfr�resolve_dotted_attributer'ro)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�timeZstruct_timeZreturn_value�	localtimer
rrr'�strftime)rZlocaltime_mockZtime_structr�r4rrr�test_default�s$	zDateTimeTestCase.test_defaultcCsDd}tj|�}|jt|�tjdtj|���dS)Ngl]�ޮ��Az%Y%m%dT%H:%M:%S)r
rrr'r�r�r�)rr(r4rrr�	test_time�szDateTimeTestCase.test_timec	Cs/d}tj|�}|jt|�d
�dS)N����	r�&�2r@�rz20070609T10:38:50)	r�r�r�rr�r�r@r�r)r
rrr')rr(r4rrr�test_time_tuple�sz DateTimeTestCase.test_time_tuplecCsDtjd�}tj|�}|jt|�tjd|��dS)Ngl]�ޮ��Az%Y%m%dT%H:%M:%S)r�r�r
rrr'r�)rr(r4rrr�test_time_struct�sz!DateTimeTestCase.test_time_structcCsGtjdddddd�}tj|�}|jt|�d�dS)Ni�rrr<r?r@z20070102T03:04:05)rr
rrr')rr(r4rrr�test_datetime_datetime�sz'DateTimeTestCase.test_datetime_datetimecCsWtjdddddd�}tj|�}dt|�}|jt|�|�dS)Ni�rrr<r?r@z%<DateTime '20070102T03:04:05' at %#x>)rr
r�idrr�)rr(r4�valrrrr��szDateTimeTestCase.test_reprcCsyd}tj�}|j|�tjtjdddddd��}|j||�tj|�}|j||�dS)Nz 20070908T07:11:13  i�r��r�r�
)r
r�decoderrZ	_datetime)rr(�t1Ztrefr5rrr�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�nowr
rZ	timetupleroZ	timedeltar�r[r9r=r_rS)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�)r
r]rr')rr4rrrr��szBinaryTestCase.test_defaultcCs8d}tj|�}|jt|�t|d��dS)Nsabc123��zlatin-1)r
r]rr')rr(r4rrr�test_stringszBinaryTestCase.test_stringcCsd}tj|�}tj�}|j|�|jt|�t|d��tj|�}|jt|�t|d��dS)Nsabc123��zlatin-1)�base64Zencodebytesr
r]r�rr'Z_binary)rr(Zder�r5rrrr�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)rr1r2rrr�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)zThis is my functionTrrrrr�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��	localhostrrX�logRequestsF�bind_and_activatezhttp://%s:%dcSs||S)Nr)r1r2rrr�<lambda>Bszhttp_server.<locals>.<lambda>�addcSs|S)Nr)r1rrrr�CsutêštZallow_dotted_namesTr)r�r)rfr�SimpleXMLRPCServer�SimpleXMLRPCRequestHandler�server_bindr|�getsockname�ADDR�PORT�URL�server_activate� register_introspection_functions�register_multicall_functionsr��powr��setr~�timeout�close)	�evt�numrequests�requestHandlerrXr�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)rr1r2rrrr�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)zThis is my functionTrrrrrr�^sz&http_multi_server.<locals>.my_functionc@seZdZdd�ZdS)z)http_multi_server.<locals>.MyXMLRPCServercSs,|jj�\}}|jd�||fS)NT)r|r�r�)rrr�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)rrbZdispatch_method�pathrrr�_marshaled_dispatchpsz?http_multi_server.<locals>.BrokenDispatcher._marshaled_dispatch)r+r,r-rrrrr�BrokenDispatcherosrr�rr�Fr�r<zhttp://%s:%dz/fooz/foo/barrcSs||S)Nr)r1r2rrrr��sz#http_multi_server.<locals>.<lambda>r�z
/is/broken)r�r)rfrZMultiPathXMLRPCServerr�r|r}r�r�r�r�r�r�Zadd_dispatcherr�r�r�Zget_dispatcherr�r�r�r~r�r�)r�r�r�r�r�r�rrr��pathsrr(rrr�http_multi_serverUs@



#

	
rcCsyy8|jdks!|jdkr%dS|jjd�}Wntk
rXt|�}YnX|rud|j�krudSdS)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.rNTzX-exceptionztemporarily unavailable���)Zerrcoderqrrr�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)	r
rlr�r��
ProtocolErrorrnrr�ZSkipTest)rr
)�reasonrr�make_request_and_skip�szImake_request_and_skipIf.<locals>.decorator.<locals>.make_request_and_skipr)rr)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)�BaseServerTestCaseNrcCssdtjj_tj�|_|j|j|jf}tj	d|j
d|�j�|jj�|jj
�dS)NTr�r�)rfrr��_send_traceback_headerr��Eventr��
request_countr�r��
threadFuncr��wait�clear)r�	serv_argsrrr�setUp�s
zBaseServerTestCase.setUpcCs |jj�dtjj_dS)NF)r�rrfrr�r)rrrr�tearDown�s
zBaseServerTestCase.tearDown)
r+r,r-r�rr�rrrrrrrrr�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
%srqr�i�)
r
rlr�rr�r
rnr�fail�getattr)rr�r
rrr�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
%srqr�)
r
rlr�rr�r
rnrrr)r�start_string�
end_stringr�r
rrr�
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€�¤rXziso-8859-15z%s
%srqr�)r
rlr�rr�r
r|�errorrrr)rr r!r�r
rrr�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)NrXr�rRz%s
%srqr�)r
rlr�rttêštr
r|r$rrr)rr�r
rrr�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)Zhttplibrg�HTTPConnectionr�r�ZrequestZgetresponser�r�statusr)r�connrxrrr�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
%srqr�)r�r
rlr��systemZlistMethodsrr
rnrrr)rZexpected_methodsr��methr
rrr�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
%srqr�)r
rlr�r+�
methodHelprr
rnrrr)rr�Zdivhelpr
rrr�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
%srqr�)r
rlr�r+r.rr
rnrrr)rr�Z
myfunctionr
rrr�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
%srqr�)r
rlr�r+ZmethodSignaturerr
rnrrr)rr�Zdivsigr
rrr�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��rRz%s
%srqr�r@i�r<)
r
rlr��	MultiCallr�r�r�rr
rnrrr)rr��	multicallZ
add_resultZ
pow_resultZ
div_resultr
rrr�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�rr�z@<class 'Exception'>:method "this_is_not_exists" is not supportedz%s
%srqr�)r
rlr�r3Zthis_is_not_existsrZresultsr
rnrrr)rr�r4r r
rrr�test_non_existing_multicallWs
	z0SimpleServerTestCase.test_non_existing_multicallcCsF|jttjjtd�|jtjjtd��|j�dS)Nr�r�)r9r�rfrr�r'ror)rrrrr�ls	z*SimpleServerTestCase.test_dotted_attributecCs<tjdttf�}|jj�}|j|d�dS)Nzhttp://%s:%d/RPC2r�)r
rlr�r�r�r�r)rrrbrrr�test_allow_dotted_names_truevsz1SimpleServerTestCase.test_allow_dotted_names_truecCs9tjdttf�}|j|jdd�d�dS)Nzhttp://%s:%d/RPC2�a�éuaé)r
rlr�r�rr�)rrrrr�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�)	rurgr'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)r
rlr�r�ZassertNotEqual�_connectionr)rrrrr�test_context_manager�sz)SimpleServerTestCase.test_context_managercCsby-tjt��}|jdd�WdQRXWntjk
rDYnX|j|d�jd�dS)Nrr8r=)NN)r
rlr�r�r�rr>)rrrrr�!test_context_manager_method_error�sz6SimpleServerTestCase.test_context_manager_method_errorN)r+r,r-rr"r%r&r*r-r/rrK�flags�optimizer0r1r5r6r�r7r:r<r?r@rrrrr�s$




rc@s4eZdZedddd��Zdd�ZdS)�SimpleServerEncodingTestCaseNcCst|||d�dS)Nziso-8859-15)r)r�r�r�rXrrrr�sz'SimpleServerEncodingTestCase.threadFunccCs�d}d}y3tjt�}|j|j||�||�Wn`tjtjfk
r�}z4t|�s�|j	d|t
|dd�f�WYdd}~XnXdS)Nu€r#z%s
%srqr�)r
rlr�rr�r
r|r$rrr)rr r!r�r
rrr�test_server_encoding�sz1SimpleServerEncodingTestCase.test_server_encoding)r+r,r-r�rrDrrrrrC�srCc@sFeZdZee�ZdZdd�Zdd�Zdd�Z	dS)	�MultiPathServerTestCasercCsOtjtd�}|j|jdd�d�|jtj|jdd�dS)Nz/foor�r�i�)r
rlr�rr�r9r�r�)rr�rrr�
test_path1�sz"MultiPathServerTestCase.test_path1cCsOtjtd�}|j|jdd�d�|jtj|jdd�dS)Nz/foo/barr�r��)r
rlr�rr�r9r�r�)rr�rrr�
test_path2�sz"MultiPathServerTestCase.test_path2cCs3tjtd�}|jtj|jdd�dS)Nz
/is/brokenr�r�)r
rlr�r9r�r�)rr�rrr�
test_path3�sz"MultiPathServerTestCase.test_path3N)
r+r,r-r�rrrrFrHrIrrrrrE�s
rEc@s>eZdZGdd�dejj�ZeZdd�ZdS)�BaseKeepaliveServerTestCasec@s@eZdZejjZdZgZdd�Z	dd�Z
dS)z*BaseKeepaliveServerTestCase.RequestHandlerzHTTP/1.1cCs6|jjg�t|j�d|_|jj|�S)Nr)�
myRequestsrArv�reqidx�parentClass�handle)rrrrrN�sz1BaseKeepaliveServerTestCase.RequestHandler.handlecCs0|jj|�}|j|jj|j�|S)N)rM�handle_one_requestrKrLrAZraw_requestline)rr rrrrO�sz=BaseKeepaliveServerTestCase.RequestHandler.handle_one_requestN)r+r,r-rfrr�rMrzrKrNrOrrrrr{�s
r{cCsg|j_tj|�S)N)r{rKrr)rrrrr�sz!BaseKeepaliveServerTestCase.setUpN)	r+r,r-rfrr�r{r�rrrrrrJ�s
rJc@seZdZdd�ZdS)�KeepaliveServerTestCase1cCs�tjt�}|j|jdd�d�|j|jdd�d�|j|jdd�d�|d��|jt|jj�d�|jt|jjd	�d�dS)
Nr�r�r�rri�i�i�r)	r
rlr�rr�rvr{rK�assertGreaterEqual)rr�rrr�test_two�s
z!KeepaliveServerTestCase1.test_twoN)r+r,r-rRrrrrrP�srPc@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�r�rri�i�i�i�i�i�r���)	r
rlr�rr�rvr{rKrQ)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�r=r�ri�i�)	r
rlr�rr�r�rvr{rK)rr�rrr�test_transports
z'KeepaliveServerTestCase2.test_transportN)r+r,r-rrUrVrrrrrS�srSz
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)rMrq�	__class__�content_lengthrMry)rrrrrysz)GzipServerTestCase.RequestHandler.do_POSTN)	r+r,r-rfrr�rMrzryrrrrr{sr{c@s.eZdZdZdd�Zdd�ZdS)zGzipServerTestCase.TransportFcCs.t|jdd��|_tjj||�S)Nzcontent-lengthr)rMZ	getheader�response_lengthr
rh�parse_response)rrxrrrr[#sz+GzipServerTestCase.Transport.parse_responsecCs/|jr|jdd�tjj|||�S)NzContent-Encoding�gzip)�	fake_gzipZ	putheaderr
rh�send_content)rZ
connectionZbodyrrrr^'s	z)GzipServerTestCase.Transport.send_contentN)r+r,r-r]r[r^rrrrrh srhcCstj|�dS)N)rr)rrrrr-szGzipServerTestCase.setUpcCs�|j�}d|_tjtd|�}|j|jdd�d�|jj}d|_|j|jdd�d�|jj}|j	||k�|d��dS)Nr=r�r�rr�i�i�)
rh�encode_thresholdr
rlr�rr�r{rYro)rr4r�r8�brrr�test_gzip_request0s		z$GzipServerTestCase.test_gzip_requestc
Cs�|j�}d|_d|_tjtd|�}|jtjtj	d��}|�|j
dd�WdQRX|d��dS)NTr=z\b400\br�r�r�)rhr_r]r
rlr�r�r
�re�compiler�)rr4r��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)Nr=r�r�rr�i�i�)
rhr
rlr�r�r_rr�rZro)rr4r��oldr8r`rrr�test_gzip_responseGs	
	z%GzipServerTestCase.test_gzip_responseN)r+r,r-rfrr�r{r�r
rhrrarergrrrrrWs
rWc@seZdZdd�ZdS)�GzipUtilTestCasecCs�d}d|}tj|�}tj|�}|jt|�|�d|d}tj|�}|jtd��tj|�WdQRXtj|dd	�dS)
Nrisrz#max gzipped payload length exceededZ
max_decodeiPi@r)r
Zgzip_encodeZgzip_decoderrvr��
ValueError)rZmax_gzip_decoderbZencodedZdecodedrrr�test_gzip_decode_limitYs
	
z'GzipUtilTestCase.test_gzip_decode_limitN)r+r,r-rjrrrrrhVsrhc@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�)r
rlr�r)rr�rrrrUvszServerProxyTestCase.test_closecCs>tj�}tj|jd|�}|j|d�|�dS)Nr=)r
rhrlr�r)rr4r�rrrrVzsz"ServerProxyTestCase.test_transportN)r+r,r-rrUrVrrrrrkks
rkcs%eZdZd�fdd�Z�S)�FailingMessageClassNcs/|j�}|dkrdSt�j||�S)Nzcontent-lengthzI am broken)r	�superrr)r�keyZfailobj)rXrrrr�szFailingMessageClass.get)r+r,r-rrrr)rXrrm�srmc@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�FailingServerTestCasecCsXtj�|_|jdf}tjdtd|�j�|jj�|jj�dS)Nrr�r�)r�rr�r�rr�rr)rrrrrr�s

zFailingServerTestCase.setUpcCs;|jj�dtjj_tjj}|tjj	_
dS)NF)r�rrfrr�rrurg�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
%srqr�i�)rfrr�rrr
rlr�r�r
rnrrr)rZflagvalr�r
rrr�
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�rqzX-exceptionzX-tracebackzProtocolError not raised)rmrfrr�rrr
rlr�r�r
rnr�hasattrrorqrrr)rr�r
rrr�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�rqz5invalid literal for int() with base 10: 'I am broken'zX-exceptionzX-tracebackzProtocolError not raised)rmrfrr�rrr�rr
rlr�r�r
rnrrtrrqrrror)rr�r
Zexpected_errrrr�test_fail_with_info�s2z)FailingServerTestCase.test_fail_with_infoN)r+r,r-rrrsrurvrrrrrp�s

	rpzutf-8ccsPddl}tj}|j|j�d|�t_ztjVWd|t_XdS)zhA variation on support.captured_stdout() which gives a text stream
    having a `buffer` attribute.
    rNrX)�iorK�stdout�
TextIOWrapper�BytesIO)rXrwZorig_stdoutrrr�captured_stdout�s	r{c@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�CGIHandlerTestCasecCstjj�|_dS)N)rfr�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)NZGETZREQUEST_METHODrXrr� rr?Z400zBad Request)r�EnvironmentVarGuardr{r~rXr~�seekrs�splitr�r)r�env�data_outrNr(�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>
        rXrZCONTENT_LENGTH�,z<?xmlzContent-Length: (\d+)r)rr�r{r~rXZcaptured_stdinrwr�r'rvr~rsr9r
r�r�findrrMrb�search�group)rrbr�r�Zdata_inrNZcontentrrr�test_cgi_xmlrpc_response�s


"
#z+CGIHandlerTestCase.test_cgi_xmlrpc_responseN)r+r,r-rrr�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�r@�����foobarcs�jj|�dS)N)�log�extend)r�)rrrr�3sz>UseBuiltinTypesTestCase.test_use_builtin_types.<locals>.foobarrUTrXrr)r�rr
rrfrr�r�rrrvrrr^)rZexpected_bytesZ
expected_dateZ	marshaledr��handlerZmybytesZmydater)rr�test_use_builtin_types+s	

z.UseBuiltinTypesTestCase.test_use_builtin_typescCs)tjjdd�}|j|j�dS)NrT)rfrr}ror)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)rfrr�r�ror)rrrrr�,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�rrCrPrSrWrhrErkrpr|r�rrrr�	test_mainJs		r��__main__ir)	rrrrr	r
rrr)@r�rrKr�r�rZ
xmlrpc.clientrgr
Z
xmlrpc.serverrfZhttp.clientruZhttp.serverr|�osrbrw�
contextlibZtestrr\rkr�r]r_rrrlrr�r�r�r�r�r�r�r�rrrrr�rrrCrErJrPrSZskipIfrWrhrkrqrmrp�contextmanagerr{r|r�Zreap_threadsr�r+rrrr�<module>s�

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