Your IP : 216.73.216.213


Current Path : /proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/
Upload File :
Current File : //proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/test_xmlrpc.cpython-34.pyc

�
g f5��@sWddlZddlZddlZddlZddlZddlmZddljZddl	Z
ddlZddl
Z
ddlZddlZddlZddlZddlmZyddlZWnek
r�dZYnXyddlZWnek
rdZYnXidd6dd6dVd
6dd6dgd
6ejd�d6dd6ed�d6dd6dd6dd6ejd�d6ejdX�d 6ejejdddddd��d!6gZGd"d#�d#ej�ZGd$d%�d%ej�ZGd&d'�d'ej�ZGd(d)�d)ej�ZGd*d+�d+ej�Z da!a"a#dd,d-�Z$dd.d/�Z%d0d1�Z&d2d3�Z'ej(ed4�Gd5d6�d6ej��Z)Gd7d8�d8e)�Z*Gd9d:�d:e)�Z+Gd;d<�d<e)�Z,Gd=d>�d>e,�Z-Gd?d@�d@e,�Z.ej/edkdA�GdBdC�dCe)��Z0ej/edkdA�GdDdE�dEej��Z1GdFdG�dGej�Z2GdHdI�dIejj3�Z4ej(ed4�GdJdK�dKej��Z5ej6dLdMdN��Z7GdOdP�dPej�Z8GdQdR�dRej�Z9ej:dSdT��Z;e<dUkrSe;�ndS)Y�N)�mock)�supportzfoo@bar.baz.spamZastringgH�zns�@Zafloat��ZanintZ
ashortlongz.zyx.41Zanotherlistsmy dog has fleasZabase64Zb64bytesZb64bytearrayFZbooleanu	䀀怀耀Zunicodez
regular valueuukey䀀z20050210T11:41:23Z	datetime1���
��)��Z	datetime2Z	datetime3c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�ZdS) �XMLRPCTestCasecCs=tjtf�}tj|�}|jt|dd�dS)Nr)�	xmlrpclib�dumps�alist�loads�assertEqual)�self�dump�load�r�5/opt/alt/python34/lib64/python3.4/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_datetime3s.	
	
	
	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_1900Us	
	z(XMLRPCTestCase.test_datetime_before_1900cCsutj�}tjtj|fdd��\\}}|j|jt�tj|fdd�}|j|t�dS)NZmethodresponseT)r
rrrZassertIsInstance�value�str)r�dZnew_d�dummyrrrr�test_bug_1164912gs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�Trsr-�dZHello)�object�x�yr
rrr�__dict__)rr-�t�t2r(rrr�test_newstyle_classqs			$z"XMLRPCTestCase.test_newstyle_classcCs|jttjd�dS)Nr�c�)r7)�assertRaises�
OverflowErrorr
r)rrrr�test_dump_big_longzsz!XMLRPCTestCase.test_dump_big_longcCs$|jttjidd6f�dS)Nrr�)rrr;)r8�	TypeErrorr
r)rrrr�test_dump_bad_dict}sz!XMLRPCTestCase.test_dump_bad_dictcCsKdddg}ddd|g}|j|�|jttj|f�dS)Nrrr;��)�appendr8r<r
r)r�lr3rrr�test_dump_recursive_seq�s
z&XMLRPCTestCase.test_dump_recursive_seqcCsOidd6dd6}idd6|d6}||d<|jttj|f�dS)Nr�1�2r;�3r'r3)r8r<r
r)rr'r3rrr�test_dump_recursive_dict�s
z'XMLRPCTestCase.test_dump_recursive_dictcCstjdkr1|jttjtd	�f�ntjtjtjf�|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�maxsizer8r9r
r�int�MAXINT�MININT�
MarshallerZdump_int)rrIr!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)NrrH�*cSsdS)Nr)rrrrrI�sz4XMLRPCTestCase.test_dump_double.<locals>.dummy_writel)r
r�floatrMrNrOZdump_double)rrIr!rrr�test_dump_double�szXMLRPCTestCase.test_dump_doublecCsptdg}tdgf}tj|dd�}|j|tj|�dd�|jttj|f�dS)N�
allow_noneTr)rr
rrrr8r<)rr%Zarg1Zstrgrrr�test_dump_none�s
	zXMLRPCTestCase.test_dump_nonecCsd}|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_bytescCs8tjj�}|j|jd�ddgif�dS)Nz
user@host.tldzhost.tld�
Authorization�Basic dXNlcg==)rZr[)�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�ImportErrorr\r]�ServerProxyZbad_function�NotImplementedErrorZassertFalse�OSError�
assertTrue)rr`Zhas_sslrrr�test_ssl_presence�s


z XMLRPCTestCase.test_ssl_presenceN)r*r+r,rr#r$r)r5r:r=rBrFrPrSrUrYr_rfrrrrr,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,rirrrrrg�srgc@s4eZdZdd�Zdd�Zdd�ZdS)�
FaultTestCasecCsHtjdd�}|jt|�d�|jt|�t|��dS)NrQz
Test Faultz<Fault 42: 'Test Fault'>)r
�Faultr�reprr&)r�frrr�	test_repr�szFaultTestCase.test_reprcCs�tjdd�}tj|f�}tj|�\\}}|j|idd6dd6�|j|d�tj�j|�}|jtjtj|�dS)NrQz
Test Fault�	faultCode�faultString)r
rkrrrrOr8)rrmrZnewfr!rrr�test_dump_fault�szFaultTestCase.test_dump_faultcCs<|jttjjtd�|jtjjtd��dS)N�__add�title)r8�AttributeErrorr\�server�resolve_dotted_attributer&re)rrrr�test_dotted_attribute�s	z#FaultTestCase.test_dotted_attributeN)r*r+r,rnrqrwrrrrrj�s
rjc@speZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�DateTimeTestCasecCs�tjd��t}tjdddddddddg	�}||_tj�}tj�}|jt	|�tj
d	|��WdQXdS)
Nztime.localtimei���r��1��z%Y%m%dT%H:%M:%S)rZpatch�timeZstruct_timeZreturn_value�	localtimer
rrr&�strftime)rZlocaltime_mockZtime_structrr3rrr�test_defaults$	zDateTimeTestCase.test_defaultcCsDd}tj|�}|jt|�tjdtj|���dS)Ngl]�ޮ��Az%Y%m%dT%H:%M:%S)r
rrr&r~r�r)rr'r3rrr�	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'r3rrr�test_time_tuplesz DateTimeTestCase.test_time_tuplecCsDtjd�}tj|�}|jt|�tjd|��dS)Ngl]�ޮ��Az%Y%m%dT%H:%M:%S)r~rr
rrr&r�)rr'r3rrr�test_time_structsz!DateTimeTestCase.test_time_structcCsGtjdddddd�}tj|�}|jt|�d�dS)Ni�rrr;r>r?z20070102T03:04:05)rr
rrr&)rr'r3rrr�test_datetime_datetimesz'DateTimeTestCase.test_datetime_datetimecCsWtjdddddd�}tj|�}dt|�}|jt|�|�dS)Ni�rrr;r>r?z$<DateTime '20070102T03:04:05' at %x>)rr
r�idrrl)rr'r3�valrrrrnszDateTimeTestCase.test_reprcCsyd}tj�}|j|�tjtjdddddd��}|j||�tj|�}|j||�dS)Nz 20070908T07:11:13  i�r��ryr�
)r
r�decoderrZ	_datetime)rr'�t1Ztrefr4rrr�test_decode%s
'zDateTimeTestCase.test_decodec3Cs'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
��|dkWdQX|j	t
��||kWdQX|j	t
��|t|�kWdQX|j	t
��||kWdQX|j	t
��|td�kWdQX|j	t
��||kWdQX|j	t
��|t|�kWdQX|j	t
��||kWdQXdS)NZsecondsr>z%Y%m%dT%H:%M:%S�asciii�)
r�nowr
rZ	timetuplereZ	timedeltar��encoder8r<rXrR)rr�ZdtimeZthenZdstrZ
dtime_thenZdbytesZdtuplerrr�test_comparison/s>z DateTimeTestCase.test_comparisonN)r*r+r,r�r�r�r�r�rnr�r�rrrrrx�s

rxc@s4eZdZdd�Zdd�Zdd�ZdS)�BinaryTestCasecCs&tj�}|jt|�d�dS)N�)r
rVrr&)rr3rrrr�]szBinaryTestCase.test_defaultcCs8d}tj|�}|jt|�t|d��dS)Nsabc123��zlatin-1)r
rVrr&)rr'r3rrr�test_stringaszBinaryTestCase.test_stringcCsd}tj|�}tj�}|j|�|jt|�t|d��tj|�}|jt|�t|d��dS)Nsabc123��zlatin-1)�base64Zencodebytesr
rVr�rr&Z_binary)rr'Zder�r4rrrr�fs
zBinaryTestCase.test_decodeN)r*r+r,r�r�r�rrrrr�Vsr�cCszGdd�d�}dd�}Gdd�dtjj�}|sPtjj}n|d|d	d
dd
�}z�y�|j�|jj�\aadttfa	|j
�|j�|j�|j
t�|j
d
d�d�|j
|�|�}|j|dd�|j�x$|dkr:|j�|d8}qWWntjk
rSYnXWd|jj�da|j�XdS)Nc@s;eZdZdd�Zdd�ZGdd�d�ZdS)z&http_server.<locals>.TestInstanceClasscSs||S)Nr)rr0r1rrr�divxsz*http_server.<locals>.TestInstanceClass.divcSs|dkrdSdS)Nr�zThis is the div functionr)r�namerrr�_methodHelp{s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�TestInstanceClassws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)�socket�accept�setblocking)rr�portrrr�get_request�s
z/http_server.<locals>.MyXMLRPCServer.get_requestN)r*r+r,r�rrrr�MyXMLRPCServer�sr��	localhostr�logRequestsF�bind_and_activatezhttp://%s:%dcSs||S)Nr)r0r1rrr�<lambda>�szhttp_server.<locals>.<lambda>�addZallow_dotted_namesTr)r�r)r\ru�SimpleXMLRPCServer�SimpleXMLRPCRequestHandler�server_bindr��getsockname�ADDR�PORT�URL�server_activate� register_introspection_functions�register_multicall_functions�register_function�powZregister_instance�set�handle_request�timeout�close)�evt�numrequests�requestHandlerr�r�r��servZtestInstancerrr�http_servervs8






	

	
r�cCs�Gdd�d�}dd�}Gdd�dtjj�}|sPtjj}nGdd�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)rr0r1rrrr��sz0http_multi_server.<locals>.TestInstanceClass.divcSs|dkrdSdS)Nr�zThis is the div functionr)rr�rrrr��sz8http_multi_server.<locals>.TestInstanceClass._methodHelpN)r*r+r,r�r�rrrrr��s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��s
z5http_multi_server.<locals>.MyXMLRPCServer.get_requestN)r*r+r,r�rrrrr��sr�c@seZdZgZdS)z+http_multi_server.<locals>.MyRequestHandlerN)r*r+r,Z	rpc_pathsrrrr�MyRequestHandler�sr�c@s"eZdZdddd�ZdS)z+http_multi_server.<locals>.BrokenDispatcherNcSstd��dS)Nzbroken dispatcher)�RuntimeError)r�dataZdispatch_method�pathrrr�_marshaled_dispatch�sz?http_multi_server.<locals>.BrokenDispatcher._marshaled_dispatch)r*r+r,r�rrrr�BrokenDispatcher�sr�r�rr�Fr�r;zhttp://%s:%dz/fooz/foo/barrcSs||S)Nr)r0r1rrrr��sz#http_multi_server.<locals>.<lambda>r�z
/is/broken)z	localhostr)r\ruZMultiPathXMLRPCServerr�r�Z
settimeoutr�r�r�r�r�r�Zadd_dispatcher�SimpleXMLRPCDispatcherr�r�Zget_dispatcherr�r�r�r�r�r�)r�r�r�r�r�r�r�r�r��pathsr�r'rrr�http_multi_server�s@



#

	
r�cCsyy8|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���)Zerrcode�headers�getrtr&�lower)�eZexc_messrrr�is_unavailable_exception�s
r�cs&|sdd�S�fdd�}|S)NcSs|S)Nr)�funcrrrr�sz)make_request_and_skipIf.<locals>.<lambda>cs�fdd�}|S)Ncsmytjt�j�Wn@tjtfk
rY}zt|�sG�nWYdd}~XnXtj���dS)N)	r
rbr�r��
ProtocolErrorrdr��unittestZSkipTest)rr�)�reasonrr�make_request_and_skip
szImake_request_and_skipIf.<locals>.decorator.<locals>.make_request_and_skipr)r�r�)r�rr�	decoratorsz*make_request_and_skipIf.<locals>.decoratorr)Z	conditionr�r�r)r�r�make_request_and_skipIfs
	r�z!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)NT�target�args)r\rur��_send_traceback_header�	threading�Eventr��
request_countr��Thread�
threadFunc�start�wait�clear)r�	serv_argsrrr�setUps
zBaseServerTestCase.setUpcCs |jj�dtjj_dS)NF)r�r�r\rur�r�)rrrr�tearDown*s
zBaseServerTestCase.tearDown)
r*r+r,r�r�r�r�r�r�r�rrrrr�s

r�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zee	j
jdkd�d
d��Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)�SimpleServerTestCasecCs�y/tjt�}|j|jdd�d�Wn`tjtfk
r�}z7t|�s|jd|t	|dd�f�nWYdd}~XnXdS)Nr�r�z%s
%sr�r�i�)
r
rbr�rr�r�rdr��fail�getattr)r�pr�rrr�test_simple12s z!SimpleServerTestCase.test_simple1cCs�d}d}y3tjt�}|j|j||�||�Wn`tjtfk
r�}z7t|�s�|jd|t	|dd�f�nWYdd}~XnXdS)NuPŷtuhơnz%s
%sr�r�)
r
rbr�rr�r�rdr�r�r�)rZstart_stringZ
end_stringr�r�rrr�
test_nonascii<sz"SimpleServerTestCase.test_nonasciicCsetjjtt�}|jdd�|j�}|j�|j|j	d�|j|j
d�dS)N�POSTz/this-is-not-validi�z	Not Found)Zhttplibr]�HTTPConnectionr�r��requestZgetresponser�r�statusr�)r�conn�responserrr�XXXtest_404Js
z SimpleServerTestCase.XXXtest_404cCs�tddddddddd	g	�}y8tjt�}|jj�}|jt|�|�Wn`tjtfk
r�}z7t	|�s�|j
d
|t|dd�f�nWYdd}~XnXdS)
Nr�r�r�r�zsystem.listMethodszsystem.methodHelpzsystem.methodSignaturezsystem.multicallr�z%s
%sr�r�)r�r
rbr��systemZlistMethodsrr�rdr�r�r�)rZexpected_methodsr��methr�rrr�test_introspection1Usz(SimpleServerTestCase.test_introspection1cCs�y5tjt�}|jjd�}|j|d�Wn`tjtfk
r�}z7t|�s�|j	d|t
|dd�f�nWYdd}~XnXdS)Nr�zThis is the div functionz%s
%sr�r�)r
rbr�r��
methodHelprr�rdr�r�r�)rr�Zdivhelpr�rrr�test_introspection2esz(SimpleServerTestCase.test_introspection2rz)Docstrings are omitted with -O2 and abovecCs�y5tjt�}|jjd�}|j|d�Wn`tjtfk
r�}z7t|�s�|j	d|t
|dd�f�nWYdd}~XnXdS)Nr�zThis is my functionz%s
%sr�r�)r
rbr�r�r�rr�rdr�r�r�)rr�Z
myfunctionr�rrr�test_introspection3qsz(SimpleServerTestCase.test_introspection3cCs�y5tjt�}|jjd�}|j|d�Wn`tjtfk
r�}z7t|�s�|j	d|t
|dd�f�nWYdd}~XnXdS)Nr�zsignatures not supportedz%s
%sr�r�)r
rbr�r�ZmethodSignaturerr�rdr�r�r�)rr�Zdivsigr�rrr�test_introspection4sz(SimpleServerTestCase.test_introspection4cCs�y�tjt�}tj|�}|jdd�|jdd�|jdd�|�\}}}|j|d
�|j|d�|j|d�Wn`tjt	fk
r�}z7t
|�s�|jd|t|dd	�f�nWYdd}~XnXdS)
Nrr;r�r��rQz%s
%sr�r�r?i�r;)
r
rbr��	MultiCallr�r�r�rr�rdr�r�r�)rr��	multicallZ
add_resultZ
pow_resultZ
div_resultr�rrr�test_multicall�sz#SimpleServerTestCase.test_multicallcCs�yktjt�}tj|�}|j�|�}|j|jddd�|j|jddd�Wn`tjtfk
r�}z7t	|�s�|j
d|t|dd�f�nWYdd}~XnXdS)	Nrrorrpz@<class 'Exception'>:method "this_is_not_exists" is not supportedz%s
%sr�r�)r
rbr�r�Zthis_is_not_existsrZresultsr�rdr�r�r�)rr�r�r r�rrr�test_non_existing_multicall�s
	z0SimpleServerTestCase.test_non_existing_multicallcCsF|jttjjtd�|jtjjtd��|j�dS)Nrrrs)r8rtr\rurvr&rer�)rrrrrw�s	z*SimpleServerTestCase.test_dotted_attributecCs<tjdttf�}|jj�}|j|d�dS)Nzhttp://%s:%d/RPC2r�)r
rbr�r�r�r�r)rrur�rrr�test_allow_dotted_names_true�sz1SimpleServerTestCase.test_allow_dotted_names_truecCs9tjdttf�}|j|jdd�d�dS)Nzhttp://%s:%d/RPC2�a�éuaé)r
rbr�r�rr�)rrurrr�test_unicode_host�sz&SimpleServerTestCase.test_unicode_hostcCs3tjjtt�}|jdd�|j�dS)Nr�z*/RPC2 HTTP/1.0
Content-Length: 100

bye)�httpr]r�r�r�r�r�)rr�rrr�test_partial_post�sz&SimpleServerTestCase.test_partial_postN)r*r+r,r�r�r�r�r�r�rJ�flags�optimizer�r�rrrwrrrrrrrr�1s



r�c@sFeZdZee�ZdZdd�Zdd�Zdd�Z	dS)	�MultiPathServerTestCasercCsOtjtd�}|j|jdd�d�|jtj|jdd�dS)Nz/foor�r�i�)r
rbr�rr�r8rkr�)rr�rrr�
test_path1�sz"MultiPathServerTestCase.test_path1cCsOtjtd�}|j|jdd�d�|jtj|jdd�dS)Nz/foo/barr�r��)r
rbr�rr�r8rkr�)rr�rrr�
test_path2�sz"MultiPathServerTestCase.test_path2cCs3tjtd�}|jtj|jdd�dS)Nz
/is/brokenr�r�)r
rbr�r8rkr�)rr�rrr�
test_path3�sz"MultiPathServerTestCase.test_path3N)
r*r+r,r�r�r�r�rr
rrrrrr
�s
r
c@s>eZdZGdd�dejj�ZeZdd�ZdS)�BaseKeepaliveServerTestCasec@s@eZdZejjZdZgZdd�Z	dd�Z
dS)z*BaseKeepaliveServerTestCase.RequestHandlerzHTTP/1.1cCs6|jjg�t|j�d|_|jj|�S)Nr)�
myRequestsr@�len�reqidx�parentClass�handle)rrrrr�sz1BaseKeepaliveServerTestCase.RequestHandler.handlecCs0|jj|�}|j|jj|j�|S)N)r�handle_one_requestrrr@Zraw_requestline)rr rrrr�sz=BaseKeepaliveServerTestCase.RequestHandler.handle_one_requestN)r*r+r,r\rur�r�protocol_versionrrrrrrr�RequestHandler�s
rcCsg|j_tj|�S)N)rrr�r�)rrrrr��sz!BaseKeepaliveServerTestCase.setUpN)	r*r+r,r\rur�rr�r�rrrrr�s
rc@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
rbr�rr�rrr�assertGreaterEqual)rr�rrr�test_two�s
z!KeepaliveServerTestCase1.test_twoN)r*r+r,rrrrrr�src@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
rbr�rr�rrrr)rr�rrr�
test_closes

 z#KeepaliveServerTestCase2.test_closecCs�tjt�}|j|jdd�d�|d�j�|j|jdd�d�|d��|jt|jj�d�dS)Nr�r��	transportr�ri�i�)	r
rbr�rr�r�rrr)rr�rrr�test_transport"s
z'KeepaliveServerTestCase2.test_transportN)r*r+r,r�rrrrrrrsrz
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)rLr��	__class__�content_lengthr�do_POST)rrrrr#5sz)GzipServerTestCase.RequestHandler.do_POSTN)	r*r+r,r\rur�rrr#rrrrr1src@s.eZdZdZdd�Zdd�ZdS)zGzipServerTestCase.TransportFcCs.t|jdd��|_tjj||�S)Nzcontent-lengthr)rLZ	getheader�response_lengthr
r^�parse_response)rr�rrrr%>sz+GzipServerTestCase.Transport.parse_responsecCs2|jr|jdd�ntjj|||�S)NzContent-Encoding�gzip)�	fake_gzipZ	putheaderr
r^�send_content)rZ
connectionZbodyrrrr(Bs	z)GzipServerTestCase.Transport.send_contentN)r*r+r,r'r%r(rrrrr^;sr^cCstj|�dS)N)r�r�)rrrrr�HszGzipServerTestCase.setUpcCs�|j�}d|_tjtd|�}|j|jdd�d�|jj}d|_|j|jdd�d�|jj}|j	||k�|d��dS)Nrr�r�rr�i�i�)
r^�encode_thresholdr
rbr�rr�rr"re)rr3r�r�brrr�test_gzip_requestKs		z$GzipServerTestCase.test_gzip_requestc
Cs|j�}d|_d|_tjtd|�}|jtjtj	d��}|�|j
dd�WdQX|d��dS)NTrz\b400\br�r�r�)r^r)r'r
rbr��assertRaisesRegexr��re�compiler�)rr3r��cmrrr�test_bad_gzip_requestWs		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)Nrr�r�rr�i�i�)
r^r
rbr�r�r)rr�r$re)rr3r��oldrr*rrr�test_gzip_responsebs	
	z%GzipServerTestCase.test_gzip_responseN)r*r+r,r\rur�rr�r
r^r�r+r0r2rrrrr -s
r c@seZdZdd�ZdS)�GzipUtilTestCasec
Cs�d}d|}tj|�}tj|�}|jt|�|�d|d}tj|�}|jtd��tj|�WdQXtj|dd	�dS)
Nrisrz#max gzipped payload length exceededZ
max_decodeiPi@r�)r
Zgzip_encodeZgzip_decoderrr,�
ValueError)rZmax_gzip_decoder�ZencodedZdecodedrrr�test_gzip_decode_limitts
	
z'GzipUtilTestCase.test_gzip_decode_limitN)r*r+r,r5rrrrr3qsr3c@s4eZdZdd�Zdd�Zdd�ZdS)�ServerProxyTestCasecCs/tjj|�tr"t|_n	d|_dS)Nzhttp://)r��TestCaser�r�r��url)rrrrr��szServerProxyTestCase.setUpcCs/tj|j�}|j|d��d�dS)Nr�)r
rbr8r)rr�rrrr�szServerProxyTestCase.test_closecCs>tj�}tj|jd|�}|j|d�|�dS)Nr)r
r^rbr8r)rr3r�rrrr�sz"ServerProxyTestCase.test_transportN)r*r+r,r�rrrrrrr6�s
r6cs%eZdZd�fdd�Z�S)�FailingMessageClassNcs/|j�}|dkrdSt�j||�S)Nzcontent-lengthzI am broken)r��superr�)r�keyZfailobj)r!rrr��szFailingMessageClass.get)r*r+r,r�rr)r!rr9�sr9c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�FailingServerTestCasecCsXtj�|_|jdf}tjdtd|�j�|jj�|jj�dS)Nrr�r�)r�r�r�r�r�r�r�r�)rr�rrrr��s

zFailingServerTestCase.setUpcCs;|jj�dtjj_tjj}|tjj	_
dS)NF)r�r�r\rur�r�rr]�HTTPMessager��MessageClass)rZ
default_classrrrr��s
zFailingServerTestCase.tearDowncCs�tjjj}|j|d�dtjj_y/tjt�}|j|jdd�d�Wn`tj	t
fk
r�}z7t|�s�|jd|t
|dd�f�nWYdd}~XnXdS)	NFTr�r�z%s
%sr�r�i�)r\rur�r�rr
rbr�r�r�rdr�r�r�)rZflagvalr�r�rrr�
test_basic�s z FailingServerTestCase.test_basiccCs�ttjj_y#tjt�}|jdd�Wn�tj	t
fk
r�}zbt|�r�t|d�r�|j
|jjd�dk�|j
|jjd�dk�nWYdd}~XnX|jd�dS)Nr�r�r�zX-exceptionzX-tracebackzProtocolError not raised)r9r\rur�r>r
rbr�r�r�rdr��hasattrrer�r�r�)rr�r�rrr�test_fail_no_info�s5z'FailingServerTestCase.test_fail_no_infocCs�ttjj_dtjj_y#tjt	�}|j
dd�Wn�tjtfk
r�}zet
|�r�t|d�r�d}|j|jjd�|�|j|jjd�dk	�nWYdd}~XnX|jd�dS)	NTr�r�r�z5invalid literal for int() with base 10: 'I am broken'zX-exceptionzX-tracebackzProtocolError not raised)r9r\rur�r>r�r�r
rbr�r�r�rdr�r@rr�r�rer�)rr�r�Zexpected_errrrr�test_fail_with_info�s5z)FailingServerTestCase.test_fail_with_infoN)r*r+r,r�r�r?rArBrrrrr<�s

	r<zutf-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.
    rN�encoding)�iorJ�stdout�
TextIOWrapper�BytesIO)rCrDZorig_stdoutrrr�captured_stdout�s	rHc@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�CGIHandlerTestCasecCstjj�|_dS)N)r\ru�CGIXMLRPCRequestHandler�cgi)rrrrr�szCGIHandlerTestCase.setUpcCs
d|_dS)N)rK)rrrrr�szCGIHandlerTestCase.tearDowncCs�tj���}d|d<td|jj��}|jj�WdQX|jd�|j�}|j�d}dj	|j�dd��}|j
|d	�|j
|d
�WdQXdS)NZGETZREQUEST_METHODrCrr� rr>Z400zBad Request)r�EnvironmentVarGuardrHrKrCr��seek�read�split�joinr)r�env�data_outrr��messagerrr�test_cgi_gets

zCGIHandlerTestCase.test_cgi_getcCsd}tj��w}td|jj��Y}tj��D}|j|�|jd�tt	|��|d<|jj
�WdQXWdQXWdQX|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>
        rCrZCONTENT_LENGTH�,z<?xmlzContent-Length: (\d+)r)rrMrHrKrCZcaptured_stdin�writerNr&rr�rOr8r
rkr�findrrLr-�search�group)rr�rRrSZdata_inrZcontentrrr�test_cgi_xmlrpc_responses



#z+CGIHandlerTestCase.test_cgi_xmlrpc_responseN)r*r+r,r�r�rUr[rrrrrI�srIc@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�)rrrraMsz>UseBuiltinTypesTestCase.test_use_builtin_types.<locals>.foobarrTTrCrr)rbrr
rr\rur�r�r�rrrrrW)rZexpected_bytesZ
expected_dateZ	marshaledra�handlerZmybytesZmydater)rr�test_use_builtin_typesEs	

z.UseBuiltinTypesTestCase.test_use_builtin_typescCs)tjjdd�}|j|j�dS)NrT)r\rurJrer)rrdrrr�*test_cgihandler_has_use_builtin_types_flagYszBUseBuiltinTypesTestCase.test_cgihandler_has_use_builtin_types_flagcCs6tjjddd�}|j�|j|j�dS)Nr�rrT)z	localhostr)r\rur�Zserver_closerer)rrurrr�,test_xmlrpcserver_has_use_builtin_types_flag]s	
zDUseBuiltinTypesTestCase.test_xmlrpcserver_has_use_builtin_types_flagN)r*r+r,rerfrgrrrrr\Csr\cCs;tjtttttttt	t
ttt
ttt�dS)N)rZrun_unittestrrgrxr�rjr\r�rrr r3r
r6r<rIrrrr�	test_mainds			rh�__main__ir�)	rrrrr	r
rrr�)=r�rrJr~r�rZ
xmlrpc.clientr]r
Z
xmlrpc.serverr\Zhttp.clientrr��osr-rD�
contextlibZtestrr&rar�rVrXrrr7rrgrjrxr�r�r�r�r�r�r�r�Z
skipUnlessr�r�r
rrrZskipIfr r3r6r=r9r<�contextmanagerrHrIr\Zreap_threadsrhr*rrrr�<module>s�





(�W=C�""C"L
D!