HEX
Server: nginx/1.28.0
System: Linux server-one 5.15.0-153-generic #163-Ubuntu SMP Thu Aug 7 16:37:18 UTC 2025 x86_64
User: root (0)
PHP: 8.3.23
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/supervisor/tests/__pycache__/test_xmlrpc.cpython-310.pyc
o

VƧ\ۋ�@s(ddlZddlmZddlmZddlmZddlmZddlmZGdd�dej�Z	Gd	d
�d
ej�Z
Gdd�dej�ZGd
d�dej�ZGdd�dej�Z
Gdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�d�ZGdd�de�ZGdd �d �ZdS)!�N)�DummySupervisor)�DummyRequest)�DummySupervisorRPCNamespace��	xmlrpclib)�httplibc@�eZdZdd�Zdd�ZdS)�GetFaultDescriptionTestscCs*ddlm}|�|jj�}|�|d�dS)Nr��xmlrpc�SHUTDOWN_STATE)�
supervisorr�getFaultDescription�Faultsr�assertEqual��selfr�desc�r�>/usr/lib/python3/dist-packages/supervisor/tests/test_xmlrpc.py�(test_returns_description_for_known_faultszAGetFaultDescriptionTests.test_returns_description_for_known_faultcCs&ddlm}|�d�}|�|d�dS)Nrr
i?B�UNKNOWN)r
rrrrrrr�&test_returns_unknown_for_unknown_faults
z?GetFaultDescriptionTests.test_returns_unknown_for_unknown_faultN)�__name__�
__module__�__qualname__rrrrrrr	
sr	c@s6eZdZdd�Zddd�Zdd�Zdd	�Zd
d�ZdS)
�
RPCErrorTestscC�ddlm}|S)Nr��RPCError)�supervisor.xmlrpcr)rrrrr�_getTargetClass�zRPCErrorTests._getTargetClassNcC�|��||�S�N�r!)r�code�extrarrr�_makeOne�zRPCErrorTests._makeOnecCs,ddlm}|�|jj�}|�|jd�dS)Nrr
�FAILED�r
rr(rr*r�text�rr�errr�#test_sets_text_with_fault_name_onlysz1RPCErrorTests.test_sets_text_with_fault_name_onlycCs.ddlm}|�|jjd�}|�|jd�dS)Nrr
�oopszFAILED: oopsr+r-rrr�(test_sets_text_with_fault_name_and_extra"sz6RPCErrorTests.test_sets_text_with_fault_name_and_extracCs8ddlm}|�|jjd�}|�t|�d|jj�dS)Nrr
z/nonexistentz%code=%r, text='NO_FILE: /nonexistent')r
rr(r�NO_FILEr�strr-rrr� test___str___shows_code_and_text's


�z.RPCErrorTests.test___str___shows_code_and_textr$)rrrr!r(r/r1r4rrrrrs
rc@�eZdZdd�ZdS)�XMLRPCMarshallingTestscCsXddlm}|�d�}|�|tjddd��t�dd�}|�|�}|�|t�|��dS)Nrr
�)r7T)�methodresponse�foo)r
r�xmlrpc_marshalrr�dumps�Fault)rr�data�faultrrr�test_xmlrpc_marshal/s

z*XMLRPCMarshallingTests.test_xmlrpc_marshalN)rrrr?rrrrr6.�r6c@s|eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�XMLRPCHandlerTestscCr)Nr)�supervisor_xmlrpc_handler)r rB)rrBrrrr!8r"z"XMLRPCHandlerTests._getTargetClasscCr#r$r%)r�supervisord�
subinterfacesrrrr(<r)zXMLRPCHandlerTests._makeOnecCsLt�}dt�fg}|�||�}|�|j|�ddlm}|�|jj|�dS)Nr
r)�RootRPCInterface)	rrr(rrCr rE�rpcinterface�	__class__)rr
rD�handlerrErrr�	test_ctor?szXMLRPCHandlerTests.test_ctorcCs\Gdd�d�}t�}dt�fg}|�||�}|�|�|d��d�|�|�|d��d�dS)Nc@r5)z4XMLRPCHandlerTests.test_match.<locals>.DummyRequest2cSs
||_dSr$)�uri)rrJrrr�__init__I�
z=XMLRPCHandlerTests.test_match.<locals>.DummyRequest2.__init__N)rrrrKrrrr�
DummyRequest2Hr@rMr
z/RPC2Tz/nopeF)rrr(r�match)rrMr
rDrHrrr�
test_matchGszXMLRPCHandlerTests.test_matchcCs�t�}dt�fg}|�||�}t�dd�}tdddd�}|�||�|jjj	}|�
t|�d�|�
|dd�|�
|dd	�|�
t|j�d
�|jd}|�
tjtj|�dS)Nr
)�a�bzsupervisor.noSuchMethod�
/what/ever����z0XML-RPC method called: supervisor.noSuchMethod()���zKXML-RPC method supervisor.noSuchMethod() returned fault: [1] UNKNOWN_METHODr7r)rrr(rr;r�continue_request�options�loggerr=r�len�	producers�assertRaisesr<�loads)rr
rDrHr=�request�logdata�xml_responserrr�"test_continue_request_nosuchmethodQs"

�
�
z5XMLRPCHandlerTests.test_continue_request_nosuchmethodc
Cs�t�}dt�fg}|�||�}t�dd�}tdddd�}|�||�|jjj	}|�
t|�d�|�
|dd�|�
|dd	�|�
t|j�d
�|jd}t�
|�}ddlm}	|�
|dd|	�|�
|jd
�|�
|jdd�|�
|jdt|��dS)Nr
rzsupervisor.getAPIVersionrRrSrT�1XML-RPC method called: supervisor.getAPIVersion()rU�?XML-RPC method supervisor.getAPIVersion() returned successfullyr7r��API_VERSIONT�Content-Type�text/xml�Content-Length)rrr(rr;rrVrWrXr=rrYrZr\�supervisor.rpcinterfacerd�_done�headers�
rr
rDrHr=r]r^r_�responserdrrr�#test_continue_request_methodsuccesscs,

�
�

z6XMLRPCHandlerTests.test_continue_request_methodsuccessc
Cs�t�}dt�fg}|�||�}d}tdddd�}|�||�|jjj}|�t	|�d�|�|dd�|�|dd�|�t	|j
�d	�|j
d
}t�|�}d
dl
m}	|�|d
d
|	�|�|jd�|�|jd
d�|�|jdt	|��dS)Nr
zp<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName>supervisor.getAPIVersion</methodName></methodCall>rRrSrTrarUrbr7rrcTrerfrg)rrr(rrVrWrXr=rrYrZrr\rhrdrirjrkrrr�*test_continue_request_no_params_in_requestys,

�
�

z=XMLRPCHandlerTests.test_continue_request_no_params_in_requestcC�t�}dt�fg}|�||�}d}tdddd�}|�||�|jjj}|�t	|�d�|�
|d�d��|�
t|�|dv�|�
|d�
d��|�|jd�dS)	Nr
zX<?xml version="1.0" encoding="UTF-8"?><methodCall><methodName></methodName></methodCall>rRr7r�XML-RPC request datazis invalid: no method name��rrr(rrVrWrXr=rrY�
assertTrue�
startswith�repr�endswith�_error�rr
rDrHr=r]r^rrr�1test_continue_request_400_if_method_name_is_empty�s
zDXMLRPCHandlerTests.test_continue_request_400_if_method_name_is_emptycCro)	Nr
z#this is not an xml-rpc request bodyrRr7rrp�is invalid: unmarshallablerqrrrxrrr�1test_continue_request_400_if_loads_raises_not_xml��
zDXMLRPCHandlerTests.test_continue_request_400_if_loads_raises_not_xmlcCro)	Nr
z&<methodName></methodName><junk></junk>rRr7rrprzrqrrrxrrr�3test_continue_request_400_if_loads_raises_weird_xml�r|zFXMLRPCHandlerTests.test_continue_request_400_if_loads_raises_weird_xmlcCs�t�}dt�fg}|�||�}t�dd�}tdddd�}|�||�|jjj	}|�
t|�d�|�
|dd�|�d|d	v�|�t
|�|d	v�|�d
|d	v�|�d|d	v�|�
|jd�dS)
Nr
rzsupervisor.raiseErrorrRrSrz.XML-RPC method called: supervisor.raiseError()�unexpected exceptionr7�	TracebackzValueError: error���rrr(rr;rrVrWrXr=rrYrsrurwrxrrr�<test_continue_request_500_if_rpcinterface_method_call_raises�s 

�zOXMLRPCHandlerTests.test_continue_request_500_if_rpcinterface_method_call_raisescCs�t�}dt�fg}|�||�}t�dd�}tdddd�}|�||�|jjj	}|�
t|�d�|�
|dd�|�
|dd	�|�d
|dv�|�t
|�|dv�|�d|dv�|�d
|dv�|�
|jd�dS)Nr
rz"supervisor.getXmlRpcUnmarshallablerR�rz;XML-RPC method called: supervisor.getXmlRpcUnmarshallable()r7zIXML-RPC method supervisor.getXmlRpcUnmarshallable() returned successfullyr~rSrzTypeError: cannot marshalr�r�rxrrr�0test_continue_request_500_if_xmlrpc_dumps_raises�s&

�
�zCXMLRPCHandlerTests.test_continue_request_500_if_xmlrpc_dumps_raisescCs�Gdd�dt�}t�}dt�fd|�fg}|�||�}t�dd�}tdddd�}|�||�|jj	j
}|�t|�d�|�|d	d
�|�|dd�|�t|j
�d
�|�|jd�dS)Nc@r5)zUXMLRPCHandlerTests.test_continue_request_value_is_function.<locals>.DummyRPCNamespacecSsdd�}d|_|S)NcS�dS�Nr7r�rrrr�inner��zhXMLRPCHandlerTests.test_continue_request_value_is_function.<locals>.DummyRPCNamespace.foo.<locals>.innerg�������?)�delay�rr�rrrr9�szYXMLRPCHandlerTests.test_continue_request_value_is_function.<locals>.DummyRPCNamespace.fooN�rrrr9rrrr�DummyRPCNamespace�r@r�r
�ns1r�ns1.foorRrSrTz XML-RPC method called: ns1.foo()rUz.XML-RPC method ns1.foo() returned successfullyrF)�objectrrr(rr;rrVrWrXr=rrYrZri)rr�r
rDrHr=r]r^rrr�'test_continue_request_value_is_function�s&�

�
�z:XMLRPCHandlerTests.test_continue_request_value_is_functionc	Cs.d}t�}dt�fg}|�||�}|�|�}|\}}ddl}|�|d�|�|dd�|�|dd�|�|dd	�|�|d
d�|�|dd	�|�|d
d�|�|dd�|�|d|�dddddd��|�|dd�|�|dd
dd��|�|dgd��|�|dddigi�dS)Na�<?xml version="1.0"?>
        <methodCall>
        <methodName>examples.getStateName</methodName>
        <params>
        <param>
        <value><i4>41</i4></value>
        </param>
        <param>
        <value><string>foo</string></value>
        </param>
        <param>
        <value><string></string></value>
        </param>
        <param>
        <!-- xml-rpc spec allows strings without <string> tag -->
        <value>bar</value>
        </param>
        <param>
        <value></value>
        </param>
        <param>
        <value><boolean>1</boolean></value>
        </param>
        <param>
        <value><double>-12.214</double></value>
        </param>
        <param>
        <value>
        <dateTime.iso8601>19980717T14:08:55</dateTime.iso8601>
        </value>
        </param>
        <param>
        <value><base64>eW91IGNhbid0IHJlYWQgdGhpcyE=</base64></value>
        </param>
        <param>
        <struct>
        <member><name>j</name><value><i4>5</i4></value></member>
        <member><name>k</name><value>abc</value></member>
        </struct>
        </param>
        <param>
        <array>
          <data>
            <value><i4>12</i4></value>
            <value><string>abc</string></value>
            <value>def</value>
            <value><i4>34</i4></value>
          </data>
        </array>
        </param>
        <param>
        <struct>
          <member>
            <name>k</name>
            <value><array><data>
              <value><i4>1</i4></value>
              <struct></struct>
            </data></array></value>
          </member>
        </struct>
        </param>
        </params>
        </methodCall>
        r
rzexamples.getStateName�)r7r9rS�r��bar��T�g!�rh�m(��i�����7zyou can't read this!�	�abc)�j�k�
)�r��def�"�r�)rrr(r\�datetimer)	r�sr
rDrH�result�params�methodr�rrr�test_iterparse_loads_methodcall�s(@
 z2XMLRPCHandlerTests.test_iterparse_loads_methodcallN)rrrr!r(rIrOr`rmrnryr{r}r�r�r�r�rrrrrA7s
rAc@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�
TraverseTestscC�Pddlm}Gdd�d�}Gdd�d�}|�}|�|_|�|j|j|dg�dS)Nrr
c@�eZdZdS)zFTraverseTests.test_security_disallows_underscore_methods.<locals>.RootN�rrrrrrr�RootQ�r�c@r5)zCTraverseTests.test_security_disallows_underscore_methods.<locals>.AcSr��NTrr�rrr�_dangerTr�zKTraverseTests.test_security_disallows_underscore_methods.<locals>.A._dangerN)rrrr�rrrr�ASr@r�z	a._danger�r
rrPr[r�traverse�rrr�r��rootrrr�*test_security_disallows_underscore_methodsOs�z8TraverseTests.test_security_disallows_underscore_methodscC�hddlm}Gdd�d�}Gdd�d�}Gdd�d�}|�}|�|_|�|j_|�|j|j|d	g�dS)
Nrr
c@r�)zDTraverseTests.test_security_disallows_object_traversal.<locals>.RootNr�rrrrr�]r�r�c@r�)zATraverseTests.test_security_disallows_object_traversal.<locals>.ANr�rrrrr�_r�r�c@r5)zATraverseTests.test_security_disallows_object_traversal.<locals>.BcSr�r�rr�rrr�dangerbr�zHTraverseTests.test_security_disallows_object_traversal.<locals>.B.dangerN)rrrr�rrrr�Bar@r�z
a.b.danger�r
rrPrQr[rr��rrr�r�r�r�rrr�(test_security_disallows_object_traversal[s
�z6TraverseTests.test_security_disallows_object_traversalcCs:ddlm}Gdd�d�}|�}|�|j|j|dd�dS)Nrr
c@r�)z9TraverseTests.test_namespace_name_not_found.<locals>.RootNr�rrrrr�lr�r�znotfound.hello)r
rr[rr�)rrr�r�rrr�test_namespace_name_not_foundjs�z+TraverseTests.test_namespace_name_not_foundcCr�)Nrr
c@r�)z6TraverseTests.test_method_name_not_found.<locals>.RootNr�rrrrr�tr�r�c@r�)z3TraverseTests.test_method_name_not_found.<locals>.ANr�rrrrr�vr�r�z
a.notfoundr�r�rrr�test_method_name_not_foundrs�z(TraverseTests.test_method_name_not_foundcCr�)
Nrr
c@r�)zGTraverseTests.test_method_name_exists_but_is_not_a_method.<locals>.RootNr�rrrrr�r�r�c@r�)zDTraverseTests.test_method_name_exists_but_is_not_a_method.<locals>.ANr�rrrrr��r�r�c@r�)zDTraverseTests.test_method_name_exists_but_is_not_a_method.<locals>.BNr�rrrrr��r�r�za.br�r�rrr�+test_method_name_exists_but_is_not_a_method}s
�z9TraverseTests.test_method_name_exists_but_is_not_a_methodcCsTddlm}Gdd�d�}Gdd�d�}|�}|�|_|�|j|j|ddd	g�dS)
Nrr
c@r�)z+TraverseTests.test_bad_params.<locals>.RootNr�rrrrr��r�r�c@r5)z(TraverseTests.test_bad_params.<locals>.AcS�d|S�NzHello %sr�r�namerrr�hello��z.TraverseTests.test_bad_params.<locals>.A.helloN�rrrr�rrrrr��r@r��a.hello�therer'r�r�rrr�test_bad_params�s
�zTraverseTests.test_bad_paramscCsVddlm}Gdd�d�}Gdd�d�}|�}|�|_|�|ddg�}|�|d	�dS)
Nrr
c@r�)z(TraverseTests.test_success.<locals>.RootNr�rrrrr��r�r�c@r5)z%TraverseTests.test_success.<locals>.AcSr�r�rr�rrrr��r�z+TraverseTests.test_success.<locals>.A.helloNr�rrrrr��r@r�r�r�zHello there)r
rrPr�r)rrr�r�r�r�rrr�test_success�szTraverseTests.test_successN)
rrrr�r�r�r�r�r�r�rrrrr�Nsr�c@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�SupervisorTransportTestscCr)Nr)�SupervisorTransport)r r�)rr�rrrr!�r"z(SupervisorTransportTests._getTargetClasscOs|��|i|��Sr$r%�r�arg�kwrrrr(��z!SupervisorTransportTests._makeOnecCsTddlm}|�ddd�}|��}|�t||j��|�|jd�|�|j	d�dS)Nrr
�user�passzunix:///foo/bar�	localhostz/foo/bar)
r
rr(�_get_connectionrs�
isinstance�UnixStreamHTTPConnectionr�host�
socketfile)rr�	transport�connrrr�test_ctor_unix�sz'SupervisorTransportTests.test_ctor_unixcCs|�t|jddd�dS)Nr�r�zunknown:///foo/bar)r[�
ValueErrorr(r�rrr�test_ctor_unknown�s
�z*SupervisorTransportTests.test_ctor_unknowncC�H|�ddd�}|��}|�t|tj��|�|jd�|�|jd�dS)Nr�r�zhttp://127.0.0.1:9001/�	127.0.0.1i)#�	r(r�rsr�r�HTTPConnectionrr��port�rr�r�rrr�test__get_connection_http_9001��
z7SupervisorTransportTests.test__get_connection_http_9001cCr�)Nr�r��http://127.0.0.1/r��Pr�r�rrr�test__get_connection_http_80�r�z5SupervisorTransportTests.test__get_connection_http_80cs`|�ddd�}tdd���fdd�}||_|�tj|jdd	d�|�|jd�|��j	d
�dS)Nr�r�r�rqr�c��Sr$rr��
dummy_connrr�getconn�r�zGSupervisorTransportTests.test_request_non_200_response.<locals>.getconnr��/T)
r(�DummyConnectionr�r[r�
ProtocolErrorr]r�
connection�closed�rr�r�rr�r�test_request_non_200_response�s

�z6SupervisorTransportTests.test_request_non_200_responsecs�|�ddd�}tdd���fdd�}||_|�tj|jdd	d�|�|jd�|��j	d
�|��j
dd�|��j
d
d	�|��j
dd�|��j
ddd�|��j
ddd�|��j
ddd�|��j
ddd�dS)Nr�r�r�rqr�cr�r$rrr�rrr��r�zCSupervisorTransportTests.test_request_400_response.<locals>.getconnr�r�Tr�POSTr7rS�r�rg�0rerf�
Authorization�Basic dXNlcjpwYXNz�Accept)r(r�r�r[rr�r]rr�r��requestargsr�rr�r�test_request_400_response�s$

��z2SupervisorTransportTests.test_request_400_responsecs�|�ddd�}d}td|���fdd�}||_|�dd	d
�}|�|j��|��jd�|��jdd
�|��jdd	�|��jdd�|��jddd�|��jddd�|��jddd�|��jddd�|�|d�dS)Nr�r�r�z�<?xml version="1.0"?>
        <methodResponse>
        <params>
        <param>
        <value><string>South Dakota</string></value>
        </param>
        </params>
        </methodResponse>��cr�r$rrr�rrr��r�zCSupervisorTransportTests.test_request_200_response.<locals>.getconnr�r�r�Frr�r7rSr�r�rgr�rerfr�r�r�)zSouth Dakota)r(r�r�r]rr�r�r�)rr�rlr�r�rr�r�test_request_200_response�s$
�z2SupervisorTransportTests.test_request_200_responsecsP|�ddd�}tdd���fdd�}||_|�dd	d
�|��|��j�dS)Nr�r�r�r�zH<?xml version="1.0"?>
        <methodResponse><params/></methodResponse>cr�r$rrr�rrr�r�z4SupervisorTransportTests.test_close.<locals>.getconnr�r�r�)r(r�r�r]�closersr�r�rr�r�
test_close�s
z#SupervisorTransportTests.test_closeN)
rrrr!r(r�r�r�r�r�r�rrrrrrr��sr�c@sveZdZdd�Zddd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�TestDeferredXMLRPCResponsecCr)Nr)�DeferredXMLRPCResponse)r r)rrrrrr!r"z*TestDeferredXMLRPCResponse._getTargetClassNcCs:|durtddddd�}|durt�}d|_|��||�Sr�)r�Dummyr�r!)rr]�callbackrrrr(sz#TestDeferredXMLRPCResponse._makeOnecCsVt�}d|_|jd|d�}|�|j|�|�|jd�|�|jd�|�|jd�dS)Nr7r])r]rg�?F)rr�r(rrr]�finished�rr�instrrrrIsz$TestDeferredXMLRPCResponse.test_ctorcCs&|��}d|_|��}|�|d�dS)NTr�)r(r�morer�rr	r�rrr�test_more_finished sz-TestDeferredXMLRPCResponse.test_more_finishedcs>ddlm��fdd�}d|_|j|d�}|�|����dS)Nr��NOT_DONE_YETcr�r$rrr
rrr(r�zTTestDeferredXMLRPCResponse.test_more_callback_returns_not_done_yet.<locals>.callbackr7�r)�supervisor.httprr�r(rr
rrr
r�'test_more_callback_returns_not_done_yet&s
zBTestDeferredXMLRPCResponse.test_more_callback_returns_not_done_yetcszddlm�m���fdd�}d|_|j|d�}|�|��d�|�t|jj	�d�|�
d|jj	dv�|�
|j�dS)Nr�rrcs
��j��r$)�UNKNOWN_METHODr�rrrrr0rLzOTestDeferredXMLRPCResponse.test_more_callback_raises_RPCError.<locals>.callbackr7rr)r rrr�r(rr
rYr]rZrsrrrrr�"test_more_callback_raises_RPCError.sz=TestDeferredXMLRPCResponse.test_more_callback_raises_RPCErrorcCsddd�}d|_|j|d�}|�|��d�|�t|jj�d�|�d|jjdv�|�|j�dS)NcSr�)Nr�rrrrrr:r�zMTestDeferredXMLRPCResponse.test_more_callback_returns_value.<locals>.callbackr7rr�r)	r�r(rr
rYr]rZrsrrrrr� test_more_callback_returns_value9sz;TestDeferredXMLRPCResponse.test_more_callback_returns_valuecCs�dd�}d|_|j|d�}|�|��d�|�|jjd�|�|j�|jjj	j
j}|�t|�d�|d\}}|�|d�|�d|v�dS)	NcSstd���Nr9)r�rrrrrDr�z[TestDeferredXMLRPCResponse.test_more_callback_raises_unexpected_exception.<locals>.callbackr7rr�rzXML-RPC response callback errorr)
r�r(rr
r]rwrsr�channel�serverrX�loggedrY)rrr	r�src�msgrrr�.test_more_callback_raises_unexpected_exceptionCszITestDeferredXMLRPCResponse.test_more_callback_raises_unexpected_exceptioncCsT|��}d|j_|jj�d�|�d�|�t|jj�d�|�|jj	dd�dS)N�1.0zConnection: keep-aliver�r7�
Connectionz
Keep-Alive)
r(r]�version�header�append�getresponserrYrZrj�rr	rrr�'test_getresponse_http_10_with_keepaliveQs
zBTestDeferredXMLRPCResponse.test_getresponse_http_10_with_keepalivecCsF|��}d|j_|�d�|�t|jj�d�|�|jjdd�dS)Nrr�r7rr�r(r]r r#rrYrZrjr$rrr�%test_getresponse_http_10_no_keepaliveY�

z@TestDeferredXMLRPCResponse.test_getresponse_http_10_no_keepalivecCsD|��}d|j_|�d�|�t|jj�d�|�d|jjv�dS)N�1.1r�r7r)	r(r]r r#rrYrZrsrjr$rrr�&test_getresponse_http_11_without_close`s

zATestDeferredXMLRPCResponse.test_getresponse_http_11_without_closecCsT|��}|jj�d�d|j_|�d�|�t|jj�d�|�|jj	dd�dS)NzConnection: closer)r�r7rr)
r(r]r!r"r r#rrYrZrjr$rrr�#test_getresponse_http_11_with_closegs
z>TestDeferredXMLRPCResponse.test_getresponse_http_11_with_closecCsF|��}d|j_|�d�|�t|jj�d�|�|jjdd�dS)Nr�r7rrr&r$rrr�test_getresponse_http_unknownor(z8TestDeferredXMLRPCResponse.test_getresponse_http_unknown)NN)rrrr!r(rIrrrrrr%r'r*r+r,rrrrr
s
	
rc@s�eZdZd%dd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$S)&�TestSystemNamespaceRPCInterfacercC�ddlm}||�S)Nr)�SystemNamespaceRPCInterface)r r/)r�
namespacesr/rrrr(w�z(TestSystemNamespaceRPCInterface._makeOnecCs$|��}|��}|�|gd��dS)N)�system.listMethods�system.methodHelp�system.methodSignature�system.multicall)r(�listMethodsrrrrr�test_listMethods_gardenpath{s�z;TestSystemNamespaceRPCInterface.test_listMethods_gardenpathcCsBGdd�dt�}|�}|�d|fg�}|��}|�|gd��dS)Nc@r)z_TestSystemNamespaceRPCInterface.test_listMethods_omits_underscore_attrs.<locals>.DummyNamespacecS�dSr$rr�rrrr9��zcTestSystemNamespaceRPCInterface.test_listMethods_omits_underscore_attrs.<locals>.DummyNamespace.foocSr8r$rr�rrr�_bar�r9zdTestSystemNamespaceRPCInterface.test_listMethods_omits_underscore_attrs.<locals>.DummyNamespace._barN)rrrr9r:rrrr�DummyNamespace�sr;r�)r�r2r3r4r5)r�r(r6r)rr;r�r	r�rrr�'test_listMethods_omits_underscore_attrs�s�zGTestSystemNamespaceRPCInterface.test_listMethods_omits_underscore_attrscCs$|��}|�d�}|�d|v�dS)Nr2�array)r(�
methodHelprsrrrr�test_methodHelp_known_method�s
z<TestSystemNamespaceRPCInterface.test_methodHelp_known_methodcC�(ddlm}|��}|�||jd�dS�Nrrz
wont.be.found)r rr(r[r>�rrr	rrr�test_methodHelp_unknown_method��z>TestSystemNamespaceRPCInterface.test_methodHelp_unknown_methodcCs&|��}|�d�}|�|ddg�dS)Nr4r=�string)r(�methodSignaturerrrrr�!test_methodSignature_known_method�s
zATestSystemNamespaceRPCInterface.test_methodSignature_known_methodcCr@rA)r rr(r[rFrBrrr�#test_methodSignature_unknown_method�rDzCTestSystemNamespaceRPCInterface.test_methodSignature_unknown_methodcCsFddlm}Gdd�dt�}|�}|�d|fg�}|�||jd�dS)Nrrc@r5)zYTestSystemNamespaceRPCInterface.test_methodSignature_with_bad_sig.<locals>.DummyNamespacecSr�)z @param string name The thingNrr�rrrr9�r9z]TestSystemNamespaceRPCInterface.test_methodSignature_with_bad_sig.<locals>.DummyNamespace.fooNr�rrrrr;�r@r;r�r�)r rr�r(r[rF)rrr;r�r	rrr�!test_methodSignature_with_bad_sig�s
zATestSystemNamespaceRPCInterface.test_methodSignature_with_bad_sigcC�Bddlm}|��}ddig}|�|�}|�||jdd�g�dS)Nr�r�
methodNamer5z:INCORRECT_PARAMETERS: Recursive system.multicall forbidden��	faultCode�faultString�r rr(�	multicallr�INCORRECT_PARAMETERS�rrr	�calls�resultsrrr�#test_multicall_faults_for_recursion��

��zCTestSystemNamespaceRPCInterface.test_multicall_faults_for_recursioncCs>ddlm}|��}ig}|�|�}|�||jdd�g�dS)NrrKz#INCORRECT_PARAMETERS: No methodNamerMrPrSrrr�,test_multicall_faults_for_missing_methodName�s
��zLTestSystemNamespaceRPCInterface.test_multicall_faults_for_missing_methodNamecCrJ)NrrKrLzbad.stopProcessrrM)r rr(rQrrrSrrr�2test_multicall_faults_for_methodName_bad_namespace�rWzRTestSystemNamespaceRPCInterface.test_multicall_faults_for_methodName_bad_namespacecCs`ddlm}Gdd�dt�}|�}|�d|fg�}ddig}|�|�}|�||jdd	�g�dS)
NrrKc@r�)zoTestSystemNamespaceRPCInterface.test_multicall_faults_for_methodName_good_ns_bad_method.<locals>.DummyNamespaceNr�rrrrr;�r�r;r�rLzns1.badrrM)r rr�r(rQrr)rrr;r�r	rTrUrrr�7test_multicall_faults_for_methodName_good_ns_bad_method�s

��zWTestSystemNamespaceRPCInterface.test_multicall_faults_for_methodName_good_ns_bad_methodcCs&|��}g}|�|�}|�|g�dSr$)r(rQr)rr	rTrUrrr�4test_multicall_returns_empty_results_for_empty_calls�s
zTTestSystemNamespaceRPCInterface.test_multicall_returns_empty_results_for_empty_callscCsfGdd�dt�}|�}|�d|fg�}ddgd�ddgd�ddgd�g}|�|�}|�|gd	��dS)
Nc@r5)znTestSystemNamespaceRPCInterface.test_multicall_performs_noncallback_functions_serially.<locals>.DummyNamespacecSs|S)z  @param string name Process namerr�rrr�say�szrTestSystemNamespaceRPCInterface.test_multicall_performs_noncallback_functions_serially.<locals>.DummyNamespace.sayN)rrrr\rrrrr;�r@r;r�zns1.say�Alvin�rLr��Simon�Theodore)r]r_r`)r�r(rQr)rr;r�r	rTrUrrr�6test_multicall_performs_noncallback_functions_serially�s


�
zVTestSystemNamespaceRPCInterface.test_multicall_performs_noncallback_functions_seriallycs�ddl�ddlm�m�G���fdd�dt�}|�}|�d|fg�}ddiddig}|�|�}�jd	d
�}�jdt	d
�}|�
|||g�dS)Nrrc�&eZdZ��fdd�Z�fdd�ZdS)zeTestSystemNamespaceRPCInterface.test_multicall_catches_noncallback_exceptions.<locals>.DummyNamespacec���jd��r��BAD_NAMEr�rrr�bad_name��znTestSystemNamespaceRPCInterface.test_multicall_catches_noncallback_exceptions.<locals>.DummyNamespace.bad_namec�
t�j��r$��OSError�ENOENTr���errnorr�os_errorrLznTestSystemNamespaceRPCInterface.test_multicall_catches_noncallback_exceptions.<locals>.DummyNamespace.os_errorN�rrrrfrnr�rrrmrrr;�sr;r�rL�ns1.bad_name�ns1.os_error�
BAD_NAME: foorM�FAILED: %s:2)rmr rrr�r(rQrer*rjr)rr;r�r	rTrUrfrnrrpr�-test_multicall_catches_noncallback_exceptions�s
��zMTestSystemNamespaceRPCInterface.test_multicall_catches_noncallback_exceptionsc
s�ddl�ddlm�m�ddlm}G���fdd�dt�}|�}|�d|fg�}ddidd	ig}|�|�}|}||urC|�}||us<�j	d
d�}�j
dtd�}	|�|||	g�dS)
Nrrr
crb)zbTestSystemNamespaceRPCInterface.test_multicall_catches_callback_exceptions.<locals>.DummyNamespacecs��fdd�}|S)Ncrcrrdrrrrr�rgzzTestSystemNamespaceRPCInterface.test_multicall_catches_callback_exceptions.<locals>.DummyNamespace.bad_name.<locals>.innerrr�rrrrfszkTestSystemNamespaceRPCInterface.test_multicall_catches_callback_exceptions.<locals>.DummyNamespace.bad_namecs�fdd�}|S)Ncrhr$rirrlrrr�rLzzTestSystemNamespaceRPCInterface.test_multicall_catches_callback_exceptions.<locals>.DummyNamespace.os_error.<locals>.innerrr�rlrrrnszkTestSystemNamespaceRPCInterface.test_multicall_catches_callback_exceptions.<locals>.DummyNamespace.os_errorNrorrprrr;sr;r�rLrqrrrsrMrt)
rmr rrrrr�r(rQrer*rjr)
rrr;r�r	rTrrUrfrnrrpr�*test_multicall_catches_callback_exceptions
s&	
���zJTestSystemNamespaceRPCInterface.test_multicall_catches_callback_exceptionscs�ddlm�G�fdd�dt�}|�}|�d|fg�}dddid	�d
ddid	�g}|�|�}�}|�ur;|�}|�us4|�|ddg�dS)
Nrr
cs,eZdZ�fdd�Z�fdd�Zdd�ZdS)zkTestSystemNamespaceRPCInterface.test_multicall_performs_callback_functions_serially.<locals>.DummyNamespacecs���dg|_dg|_dS)N�stop result�start result)�stop_results�
start_resultsr�r
rrrK+s�ztTestSystemNamespaceRPCInterface.test_multicall_performs_callback_functions_serially.<locals>.DummyNamespace.__init__cs��fdd�}|S)Ncs�j�d�}|�ur
d�_|S)NrT)ry�pop�stopped)r�)rrrrr�0sz�TestSystemNamespaceRPCInterface.test_multicall_performs_callback_functions_serially.<locals>.DummyNamespace.stopProcess.<locals>.innerr�rr�r�r
r�r�stopProcess/szwTestSystemNamespaceRPCInterface.test_multicall_performs_callback_functions_serially.<locals>.DummyNamespace.stopProcesscs�fdd�}|S)Ncs�jstd���j�d�S)NzThis should not raiser)r|�	Exceptionrzr{rr�rrr�7sz�TestSystemNamespaceRPCInterface.test_multicall_performs_callback_functions_serially.<locals>.DummyNamespace.startProcess.<locals>.innerrr}rr�r�startProcess6szxTestSystemNamespaceRPCInterface.test_multicall_performs_callback_functions_serially.<locals>.DummyNamespace.startProcessN)rrrrKr~r�rr
rrr;*sr;r�zns1.stopProcessr�r9r^zns1.startProcessrwrx)rrr�r(rQr)rr;r�r	rTrrUrr
r�3test_multicall_performs_callback_functions_serially(s"���
�zSTestSystemNamespaceRPCInterface.test_multicall_performs_callback_functions_seriallyN)r)rrrr(r7r<r?rCrGrHrIrVrXrYrZr[rarurvr�rrrrr-vs$
	r-c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�Test_gettagscCr.)Nr)�gettags)r r�)r�commentr�rrr�_callFUTIr1zTest_gettags._callFUTcC�"d}|�|�}|�|ddg�dS)Nz@foo�rNNNr�)rr9r�r�r��r�r�r�linesr�rrr�test_one_atpartM�
�zTest_gettags.test_one_atpartcCr�)Nz
@foo arrayr�)rr9r=r�r�r�r�rrr�test_two_atpartsUr�zTest_gettags.test_two_atpartscCr�)Nz@foo array namer�)rr9r=r�r�r�r�rrr�test_three_atparts]r�zTest_gettags.test_three_atpartscCr�)Nz@foo array name textr�)rr9r=r�r,r�r�rrr�test_four_atpartser�zTest_gettags.test_four_atpartsN)rrrr�r�r�r�r�rrrrr�Hsr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�Test_capped_intcCr.)Nr)�
capped_int)r r�)r�valuer�rrrr�nr1zTest_capped_int._callFUTcCs|�|�d�d�dS)N�42�*)rr�r�rrr�test_converts_value_to_integerrsz.Test_capped_int.test_converts_value_to_integercCs*ddlm}|�|�|jd�|j�dS�Nrrr7)�supervisor.compatrrr��MININT�rrrrr�test_caps_value_below_minintu�z,Test_capped_int.test_caps_value_below_minintcCs*ddlm}|�|�|jd�|j�dSr�)r�rrr��MAXINTr�rrr�test_caps_value_above_maxintyr�z,Test_capped_int.test_caps_value_above_maxintN)rrrr�r�r�r�rrrrr�ms
r�c@seZdZd	dd�Zdd�ZdS)
�
DummyResponser�r��reasoncCs||_||_||_dSr$)�status�bodyr��rr�r�r�rrrrKs
zDummyResponse.__init__cC�|jSr$)r�r�rrr�read��zDummyResponse.readN�r�r�r�)rrrrKr�rrrrr�~s
r�c@r�)rNr�rrrrr�r�rc@s2eZdZdZddd�Zdd�Zd	d
�Zdd�Zd
S)r�Fr�r�r�cCst|||�|_dSr$)r�rlr�rrrrK�r�zDummyConnection.__init__cCr�r$)rlr�rrrr#�r�zDummyConnection.getresponsecOs||_||_dSr$)r��	requestkwr�rrrr]�s
zDummyConnection.requestcCs
d|_dSr�)r�r�rrrr�rLzDummyConnection.closeNr�)rrrr�rKr#r]rrrrrr��s
r�)�unittest�supervisor.tests.baserrrr�rr�TestCaser	rr6rAr�r�rr-r�r�r�r�rr�rrrr�<module>s,	UglS%