HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/supervisor/tests/__pycache__/test_rpcinterfaces.cpython-36.pyc
3

�k�`m��@sNddlZddlZddlZddlZddlZddlZddlmZddlmZddlm	Z	ddlm
Z
ddlmZddlmZddlm
Z
dd	lmZdd
lmZddlmZmZddlmZGd
d�dej�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�dej�ZGdd�dej�ZGdd�d�Zdd�Zedk�rJejdd�dS)�N)�DummyOptions)�DummySupervisor)�DummyProcess)�DummyPConfig)�DummyPGroupConfig)�DummyProcessGroup)�PopulatedDummySupervisor)�_NOW)�_TIMEFORMAT)�	as_string�PY2)�	Automaticc@s$eZdZdd�Zdd�Zdd�ZdS)�TestBasecCsdS)N�)�selfrr�(/usr/lib/python3.6/test_rpcinterfaces.py�setUpszTestBase.setUpcCsdS)Nr)rrrr�tearDownszTestBase.tearDowncOsZddlm}y|||�Wn2|jk
rL}z|j|j|�WYdd}~Xn
Xtd��dS)Nr)�xmlrpczDidn't raise)�
supervisorr�RPCError�assertEqual�code�AssertionError)rr�callable�args�kwr�instrrr�_assertRPCErrors zTestBase._assertRPCErrorN)�__name__�
__module__�__qualname__rrrrrrrrsrc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�MainXMLRPCInterfaceTestscCsddlm}|jS)Nr)r)rrZRootRPCInterface)rrrrr�_getTargetClass(sz(MainXMLRPCInterfaceTests._getTargetClasscOs|j�||�S)N)r#)rrrrrr�_makeOne,sz!MainXMLRPCInterfaceTests._makeOnecCs|jdg�}|j|jd�dS)Nr)rN)r$rr)r�	interfacerrr�	test_ctor/sz"MainXMLRPCInterfaceTests.test_ctorcCs�t�}|jd|fg�}ddlm}|j|jj|j|dg�|j|jj|j|dg�|j|jj|j|ddg�|j	|j|dg�d�dS)	N�dummyr)rznotthere.hellozsupervisor._readFilezdummy.hello�zHello!)
�DummyRPCInterfacer$rrr�FaultsZUNKNOWN_METHODZtraverse�INCORRECT_PARAMETERSr)rr'r%rrrr�
test_traverse3s



z&MainXMLRPCInterfaceTests.test_traverseN)rr r!r#r$r&r,rrrrr"&sr"c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAdB�Z#dCdD�Z$dEdF�Z%dGdH�Z&dIdJ�Z'dKdL�Z(dMdN�Z)dOdP�Z*dQdR�Z+dSdT�Z,dUdV�Z-dWdX�Z.dYdZ�Z/d[d\�Z0d]d^�Z1d_d`�Z2dadb�Z3dcdd�Z4dedf�Z5dgdh�Z6didj�Z7dkdl�Z8dmdn�Z9dodp�Z:dqdr�Z;dsdt�Z<dudv�Z=dwdx�Z>dydz�Z?d{d|�Z@d}d~�ZAdd��ZBd�d��ZCd�d��ZDd�d��ZEd�d��ZFd�d��ZGd�d��ZHd�d��ZId�d��ZJd�d��ZKd�d��ZLd�d��ZMd�d��ZNd�d��ZOd�d��ZPd�d��ZQd�d��ZRd�d��ZSd�d��ZTd�d��ZUd�d��ZVd�d��ZWd�d��ZXd�d��ZYd�d��ZZd�d��Z[d�d��Z\d�d��Z]d�d��Z^d�d��Z_d�d��Z`d�d��Zad�d��Zbd�d„Zcd�dĄZdd�dƄZed�dȄZfd�dʄZgd�d̄Zhd�d΄Zid�dЄZjd�d҄Zkd�dԄZld�dքZmd�d؄Znd�dڄZod�d܄Zpd�dބZqd�d�Zrd�d�Zsd�d�Ztd�d�Zud�d�Zvd�d�Zwd�d�Zxd�d�Zyd�S)��'SupervisorNamespaceXMLRPCInterfaceTestscCsddlm}|jS)Nr)�rpcinterface)rr.�SupervisorNamespaceRPCInterface)rr.rrrr#Csz7SupervisorNamespaceXMLRPCInterfaceTests._getTargetClasscOs|j�||�S)N)r#)rrrrrrr$Gsz0SupervisorNamespaceXMLRPCInterfaceTests._makeOnecCsbddlm}ddlm}t�}|j|�}|jd�|j|jd�|j	|j
_|j|j
j|jd�dS)Nr)r)�SupervisorStates�foo)rr�supervisor.supervisordr0rr$Z_updater�update_textZSHUTDOWN�options�moodrr*ZSHUTDOWN_STATE)rrr0�supervisordr%rrr�test_updateJs


z3SupervisorNamespaceXMLRPCInterfaceTests.test_updatecCsDddlm}t�}|j|�}|j�}|j||j�|j|jd�dS)Nr)r.�
getAPIVersion)rr.rr$r8rZAPI_VERSIONr3)rr.r6r%�versionrrr�test_getAPIVersionUs
z:SupervisorNamespaceXMLRPCInterfaceTests.test_getAPIVersioncCs$t�}|j|�}|j|j|j�dS)N)rr$rr8Z
getVersion)rr6r%rrr�3test_getAPIVersion_aliased_to_deprecated_getVersion]s
z[SupervisorNamespaceXMLRPCInterfaceTests.test_getAPIVersion_aliased_to_deprecated_getVersioncCsDt�}|j|�}|j�}ddlm}|j||j�|j|jd�dS)Nr)r4�getSupervisorVersion)rr$r<rr4r�VERSIONr3)rr6r%r9r4rrr�test_getSupervisorVersionbs
zASupervisorNamespaceXMLRPCInterfaceTests.test_getSupervisorVersioncCs:t�}|j|�}|j�}|j||jj�|j|jd�dS)N�getIdentification)rr$r?rr4�
identifierr3)rr6r%r@rrr�test_getIdentificationks

z>SupervisorNamespaceXMLRPCInterfaceTests.test_getIdentificationcCsfddlm}t�}|j|�}|j�}|jj}||�}|j|d|�|j|d|�|j|jd�dS)Nr)�getSupervisorStateDescription�	statecode�	statename�getState)	�supervisor.statesrBrr$rEr4r5rr3)rrBr6r%Z	stateinforCrDrrr�
test_getStaters
z5SupervisorNamespaceXMLRPCInterfaceTests.test_getStatecCs>t�}t|�}|j|�}|j|j�|j��|j|jd�dS)N�getPID)rrr$rrHZget_pidr3)rr4r6r%rrr�test_getPID}s

z3SupervisorNamespaceXMLRPCInterfaceTests.test_getPIDcCs$t�}|j|�}|j|j|j�dS)N)rr$rZreadMainLog�readLog)rr6r%rrr�.test_readLog_aliased_to_deprecated_readMainLog�s
zVSupervisorNamespaceXMLRPCInterfaceTests.test_readLog_aliased_to_deprecated_readMainLogcCs8ddlm}t�}|j|�}|j|jj|jddd�dS)Nr)rr()�offset�length)rrrr$rr*�NO_FILErJ)rrr6r%rrr�test_readLog_unreadable�s

z?SupervisorNamespaceXMLRPCInterfaceTests.test_readLog_unreadablecCs�ddlm}t�}|j|�}z`|jj}t|d��}|jdd�WdQRX|j|j	j
|jddd�|j|j	j
|jd	d
d�Wdtj
|�XdS)Nr)rzw+�xir()rLrM���rQrQ)rrrr$r4�logfile�open�writerr*�
BAD_ARGUMENTSrJ�os�remove)rrr6r%rR�frrr�test_readLog_badargs�s


z<SupervisorNamespaceXMLRPCInterfaceTests.test_readLog_badargscCs�t�}|j|�}|jj}z�t|d��"}|jdd�|jdd�WdQRX|jddd�}|j|jd�|j|dddd�|jddd�}|j|dd�|jddd�}|j|dd�|jd	dd�}|j|d
�Wdt	j
|�XdS)Nzw+rPi�yr)rLrMrJ�����yyyy)rr$r4rRrSrTrJrr3rVrW)rr6r%rRrX�datarrr�test_readLog�s"
z4SupervisorNamespaceXMLRPCInterfaceTests.test_readLogcCs2ddlm}t�}|j|�}|j|jj|j�dS)Nr)r)rrrr$rr*rN�clearLog)rrr6r%rrr�test_clearLog_unreadable�s
[email protected]_clearLog_unreadablecCsfddlm}t�}|jg|_ttjtj	tj��|_
t|�}|j|�}|j
|j|j�|j|jd�dS)Nr)rr`)rrrrR�existing�OSError�errnoZEPERMrV�strerrorZremove_exceptionrr$�assertRaisesrr`rr3)rrr4r6r%rrr�test_clearLog_unremoveable�s

zBSupervisorNamespaceXMLRPCInterfaceTests.test_clearLog_unremoveablecCs~t�}|jg|_t|�}|j|�}|j�}|j|jd�|j|d�|j|jd|j�x |j	j
jD]}|j|jd�qdWdS)Nr`Tr)
rrRrbrr$r`rr3Zremovedr4ZloggerZhandlersZreopened)rr4r6r%�resultZhandlerrrr�
test_clearLog�s

z5SupervisorNamespaceXMLRPCInterfaceTests.test_clearLogcCs8t�}|j|�}|j�}|j|d�|j|jjd�dS)NTr(rQ)rr$Zshutdownrr4r5)rr6r%�valuerrr�
test_shutdown�s

z5SupervisorNamespaceXMLRPCInterfaceTests.test_shutdowncCs8t�}|j|�}|j�}|j|d�|j|jjd�dS)NTr)rr$Zrestartrr4r5)rr6r%rjrrr�test_restart�s

z4SupervisorNamespaceXMLRPCInterfaceTests.test_restartcsnt�}t|�}|j|�}t|d�gt|d�gt|d�gg��fdd�|_|j�}|j|dgdgdggg�dS)NZaddedZchangedZdroppedcs�S)Nrr)�changesrr�<lambda>�szKSupervisorNamespaceXMLRPCInterfaceTests.test_reloadConfig.<locals>.<lambda>)rrr$rZdiff_to_active�reloadConfigr)rr4r6r%rjr)rmr�test_reloadConfig�s


z9SupervisorNamespaceXMLRPCInterfaceTests.test_reloadConfigcCsHddlm}t�}dd�}||_t|�}|j|�}|j|jj|j	�dS)Nr)rc_std��dS)Nr1)�
ValueError)�argrrrr�	raise_exc�szmSupervisorNamespaceXMLRPCInterfaceTests.test_reloadConfig_process_config_raises_ValueError.<locals>.raise_exc)
rrrZprocess_configrr$rr*ZCANT_REREADro)rrr4rsr6r%rrr�2test_reloadConfig_process_config_raises_ValueError�s
zZSupervisorNamespaceXMLRPCInterfaceTests.test_reloadConfig_process_config_raises_ValueErrorc	Cs�ddlm}ddlm}t�}||�}t|dtdd�}t|d|gd�}|g|j_	|j
|�}|jd�}|j|�|j
t|jj��dg�|j|jj|jd�|j
t|jj��dg�|j|jj|jd	�|j
t|jj��dg�dS)
Nr)�
Supervisor)rr1F)�	autostart�group1)�pconfigs�asdf)r2rurrrr�__file__rr4�process_group_configsr$�addProcessGroup�
assertTruer�list�process_groups�keysrr*Z
ALREADY_ADDED�BAD_NAME)	rrurr4r6�pconfig�gconfigr%rhrrr�test_addProcessGroup�s"







z<SupervisorNamespaceXMLRPCInterfaceTests.test_addProcessGroupcCs�ddlm}t�}||�}t|dtdd�}t|d|gd�}|g|j_|j|�}|j	d�|j
d�}|j|�|jt
|jj��g�dS)Nr)rur1F)rvrw)rx)r2rurrrzrr4r{r$r|�removeProcessGroupr}rr~rr�)rrur4r6r�r�r%rhrrr�test_removeProcessGroups




z?SupervisorNamespaceXMLRPCInterfaceTests.test_removeProcessGroupcCsrddlm}ddlm}t�}||�}t|dtdd�}t|d|gd�}|g|j_	|j
|�}|j|jj
|jd	�dS)
Nr)ru)rr1F)rvrw)rxry)r2rurrrrrzrr4r{r$rr*r�r�)rrurr4r6r�r�r%rrr� test_removeProcessGroup_bad_names


zHSupervisorNamespaceXMLRPCInterfaceTests.test_removeProcessGroup_bad_namec	Cs�ddlm}ddlm}t�}||�}t|dtdd�}t|d|gd�}|g|j_	t
|�}d	g|_d|i|_|j
|�}|j|jj|jd�dS)
Nr)ru)rr1F)rvrw)rx�{)r2rurrrrrzrr4r{rZunstopped_processesrr$rr*Z
STILL_RUNNINGr�)	rrurr4r6r�r��processr%rrr�%test_removeProcessGroup_still_running+s



zMSupervisorNamespaceXMLRPCInterfaceTests.test_removeProcessGroup_still_runningcCs^ddlm}t�}t|dtdd�}t|d|�}|jddd�|j|�}|j|j	j
|jd�dS)Nr)rr1F)rv�pid�
)rrrrrzr�set_procattrr$rr*ZALREADY_STARTED�startProcess)rrr4r�r6r%rrr�!test_startProcess_already_started:s
zISupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_already_startedcCs�ddlm}ddlm}t�}t|dtdd�}t|d|�}|jddd�|jdd	|j	�|j
|�}|j|jj
|jd�|jdjd}|j|jd�dS)
Nr)r)�
ProcessStatesr1F)rvr�r��state)rrrFr�rrrzrr��UNKNOWNr$rr*�FAILEDr�r�	processesr�spawned)rrr�r4r�r6r%r�rrr�test_startProcess_unknown_stateFs

zGSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_unknown_statecCsPt�}t|dtdd�}t|d|�}|j|�}ddlm}|j|jj	|j
d�dS)Nr1F)rvrwr)rz
group2:foo)rrrzrr$rrrr*r�r�)rr4r�r6r%rrrr� test_startProcess_bad_group_nameVs

zHSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_bad_group_namecCsPt�}t|dtdd�}t|d|�}|j|�}ddlm}|j|jj	|j
d�dS)Nr1F)rvrwr)rz
group1:bar)rrrzrr$rrrr*r�r�)rr4r�r6r%rrrr�"test_startProcess_bad_process_name_s

zJSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_bad_process_namecCsrt�}t|dddd�}ddlm}t|d|�}|jdjd}||_|j|�}ddl	m
}|j|jj
|jd�dS)Nr1z/foo/barF)rvr)�NotFound)r)rr�supervisor.optionsr�rrr��execv_arg_exceptionr$rrrr*rNr�)rr4r�r�r6r�r%rrrr� test_startProcess_file_not_foundhs

zHSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_file_not_foundcCsrt�}t|dddd�}ddlm}t|d|�}|jdjd}||_|j|�}ddl	m
}|j|jj
|jd�dS)Nr1z/foo/barF)rvr)�
NotExecutable)r)rrr�r�rrr�r�r$rrrr*ZNOT_EXECUTABLEr�)rr4r�r�r6r�r%rrrr�%test_startProcess_file_not_executablets

zMSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_file_not_executablecCs�ddlm}t�}t|dtdd�}ddlm}t|d|�}|jdd|j	�|j
djd}d|_|j
|�}|j|jj|jd�dS)	Nr)rr1F)rv)r�r��abc)rrrrrz�supervisor.processr�rr��STOPPEDrr��spawnerrr$rr*�SPAWN_ERRORr�)rrr4r�r�r6r�r%rrr�test_startProcess_spawnerr�s
zBSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_spawnerrcCs�t�}t|dtddd�}ddlm}t|d|�}|jdd|j�|j|�}|j	d�}|j
djd}|j|j
d�|j|jd	�|j|_|j|d�dS)
Nr1Fg{�G�z�?)rv�	startsecsr)r�r�Tr�)rrrzr�r�rr�r�r$r�rr�rr�r3�RUNNINGr�)rr4r�r�r6r%rhr�rrr�test_startProcess�s


z9SupervisorNamespaceXMLRPCInterfaceTests.test_startProcessc	s�ddlm}t�}t|dtdd�}ddlm�t|d|�}|jdd�j	�|j
djd���fdd	�}�fd
d�}|�_|�_
|j|�}|jd�}|j|jj|�dS)Nr)rr1F)rv)r�r�csd�_�j�_dS)NT)r��STARTINGr�r)r�r�rr�spawn�sz[SupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_spawnerr_in_onwait.<locals>.spawncs
d�_dS)Nr�)r�r)r�rr�
transition�sz`SupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_spawnerr_in_onwait.<locals>.transition)rrrrrzr�r�rr�r�rr�r�r�r$r�rr*r�)	rrr4r�r6r�r�r%�callbackr)r�r�r�$test_startProcess_spawnerr_in_onwait�s

zLSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_spawnerr_in_onwaitcs�t�}t|dtdd�}ddlm�t|d|�}|jdd�j�|jdj	d���fdd�}|�_
|j|�}|jd�}�j
�_|j|�d	�dS)
Nr1F)rvr)r�r�csd�_�j�_dS)NT)r�r�r�r)r�r�rrr��szZSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_success_in_onwait.<locals>.spawnT)rrrzr�r�rr�r�rr�r�r$r�r�r�r)rr4r�r6r�r%r�r)r�r�r�#test_startProcess_success_in_onwait�s

zKSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_success_in_onwaitcCs�t�}t|dtdd�}ddlm}t|d|�}|jdd|j�|j|�}|j	ddd�}|j
|d�|jdjd}|j
|j
d�|j
|jd	�dS)
Nr1F)rvr)r�r�)�waitTr�)rrrzr�r�rr�r�r$r�rrr�r�r3)rr4r�r�r6r%rhr�rrr�test_startProcess_nowait�s
[email protected]_startProcess_nowaitc
s�t�}t|dtdd�}ddlm�ddlm}t|d|�}|jdd�j	�|j
|�}|jdjd���fdd	�}|�_
|jdd
�}|�}|j||j�|j�jd�|j|jd��j�_dd
lm}	|j|	jj|�dS)Nr1F)rvr)r�)�httpr�csd�_�j�_dS)NT)r�r�r�r)r�r�rrr��szjSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_abnormal_term_process_not_running.<locals>.spawn�dTr�)r)rrrzr�r�rr�rr�r�r$rr�r�r�r�NOT_DONE_YETr�r3ZBACKOFFr�rrr*ZABNORMAL_TERMINATION)
rr4r�r�r6r%r�r�rhrr)r�r�r�3test_startProcess_abnormal_term_process_not_running�s$
z[SupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_abnormal_term_process_not_runningcCs�t�}t|dtddd�}t|dtddd�}t|d||�}d	d
lm}|jdd|j�|jdd|j�|j|�}|j	d�|j
|jd
�dS)N�process1Fg{�G�z�?)rvr��process2�)�priorityr�r1r)r�r�zfoo:*�startProcessGroup)rrrzrr�r�r�r�r$r�rr3)rr4�pconfig1�pconfig2r6r�r%rrr�/test_startProcess_splat_calls_startProcessGroup�s



zWSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_splat_calls_startProcessGroupcCs�t�}t|dtddd�}t|dtddd�}t|d||�}dd	lm}dd
lm}|jdd|j	�|jdd|j	�|j
|�}|jd�}|j|�d|j
ddd
�d|j
ddd
�g�|j|jd�|jdjd}	|j|	jd�|jdjd}
|j|
jd�dS)Nr�r(g{�G�z�?)r�r�r�r�r1r)r�)r*r��OK)�group�status�description�namer�T)rrrzrr�r��supervisor.xmlrpcr*r�r�r$r�r�SUCCESSr3rr�r�)rr4r�r�r6r�r*r%r�r�r�rrr�test_startProcessGroup�s8



z>SupervisorNamespaceXMLRPCInterfaceTests.test_startProcessGroupc	Cs�t�}t|dtddd�}t|dtddd�}t|d||�}dd	lm}|jdd
|j�|jdd
|j�|j|�}|j	ddd�}dd
l
m}|j|�d|j
ddd�d|j
ddd�g�dS)Nr�r(g{�G�z�?)r�r�r�r�r1r)r�r�F)r�)r*r�)r�r�r�r�)rrrzrr�r�r�r�r$r�r�r*rr�)	rr4r�r�r6r�r%r�r*rrr�test_startProcessGroup_nowaits.


zESupervisorNamespaceXMLRPCInterfaceTests.test_startProcessGroup_nowaitcCs4ddlm}t�}|j|�}|j|jj|jd�dS)Nr)rr1)rrrr$rr*r�r�)rrr6r%rrr�test_startProcessGroup_badname2s


zFSupervisorNamespaceXMLRPCInterfaceTests.test_startProcessGroup_badnamecCs�t�}t|dtddd�}t|dtddd�}t|d||�}dd	lm}|jdd
|j�|jdd
|j�|j|�}|j	�}ddl
m}|j|�d|j
ddd
�d|j
ddd
�g�|j|jd�|jdjd}	|j|	jd�|jdjd}
|j|
jd�dS)Nr�r(g{�G�z�?)r�r�r�r�r1r)r�r�)r*r�)r�r�r�r�r�T)rrrzrr�r�r�r�r$�startAllProcessesr�r*rr�r3rr�r�)rr4r�r�r6r�r%r�r*r�r�rrr�test_startAllProcesses:s8


z>SupervisorNamespaceXMLRPCInterfaceTests.test_startAllProcessesc	Cs�t�}t|dtddd�}t|dtddd�}t|d||�}dd	lm}|jdd
|j�|jdd
|j�|j|�}|j	dd�}dd
l
m}|j|�d|j
ddd�d|j
ddd�g�dS)Nr�r(g{�G�z�?)r�r�r�r�r1r)r�r�F)r�)r*r�)r�r�r�r�)rrrzrr�r�r�r�r$r�r�r*rr�)	rr4r�r�r6r�r%r�r*rrr�test_startAllProcesses_nowait^s.


zESupervisorNamespaceXMLRPCInterfaceTests.test_startAllProcesses_nowaitcCs�t�}t|dd�}ddlm}t|d|�}|jdd|j�|j|�}|jd�}|j	|�|j
|jd�|jdj
d}|j
|jd�|j
|jd�|j|j�|j
|j|j�|j	|j�|j
t|jdj
�d�|j
|jd�dS)Nr1z/bin/foor)r�r��stopProcessr()rrr�r�rr�r�r$r�r}rr3rr�ZbackoffZdelay�assertFalse�killingr�r��stop_report_called�len)rr4r�r�r6r%rhr�rrr�test_stopProcesszs"


z8SupervisorNamespaceXMLRPCInterfaceTests.test_stopProcesscCs�t�}t|dt�}ddlm}t|d|�}|jdd|j�|j|�}|j	ddd�}|j
|d�|jdjd}|j
|j
d�|j|j�|j
|jd�dS)	Nr1r)r�r�F)r�Tr�)rrrzr�r�rr�r�r$r�rrr��stop_calledr}r�r3)rr4r�r�r6r%rhr�rrr�test_stopProcess_nowait�s
z?SupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_nowaitc	s�t�}t|dd�}ddlm}t|d|�}|jdjd}|j|j|j	g��fdd�}||_
|j|�}|jd�}|j
|jd�|j|��dS)Nr1z/bin/foor)r�cs
�jd�S)Nr)�popr)�Lrr�	get_state�sz]SupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_success_in_onwait.<locals>.get_stater�)rrr�r�rrr�r��STOPPINGr�r�r$r�rr3r})	rr4r�r�r6r�r�r%r�r)r�r�"test_stopProcess_success_in_onwait�s

zJSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_success_in_onwaitc
s�ddlm}t�}t|dd�}ddlm}t|d|�}|jdjd}|j	|j
|j
g��fdd�}||_|j|�}|j
d�}	|j|	�|�|j|jd�dS)	Nr)r�r1z/bin/foo)r�cs
�jd�S)Nr)r�r)r�rrr��szYSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_NDY_in_onwait.<locals>.get_stater�)�supervisor.httpr�rrr�r�rrr�r�r�r�r$r�rr3)
rr�r4r�r�r6r�r�r%r�r)r�r�test_stopProcess_NDY_in_onwait�s

zFSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_NDY_in_onwaitcCs2ddlm}t�}|j|�}|j|j|jd�dS)Nr)r*r1)r�r*rr$rr�r�)rr*r6r%rrr�test_stopProcess_bad_name�s

zASupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_bad_namecCsfddlm}ddlm}t�}t|dd�}t|d|�}|jdd|j�|j	|�}|j
|j|jd�dS)Nr)r�)r*r1z/bin/foor�)
rFr�r�r*rrrr�ZEXITEDr$r�NOT_RUNNINGr�)rr�r*r4r�r6r%rrr�test_stopProcess_not_running�s
zDSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_not_runningcCs\ddlm}t�}t|dd�}t|d|�}|jdddd��|j|�}|j|j|j	d�dS)Nr)r*r1z/bin/foo�stopcSsdS)NZunstoppablerrrrrrn�szQSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_failed.<locals>.<lambda>)
r�r*rrrr�r$rr�r�)rr*r4r�r6r%rrr�test_stopProcess_failed�s
z?SupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_failedc
Cs t�}t|dddd�}t|dddd�}dd	lm}t|d
||�}|jdd|j�|jdd|j�|j|�}|jd
�}|j	|j
d�dd
lm}|j
}	x|�}	|	|j
k	r�Pq�Wddlm}
|j	|	|
jd
ddd�|
jd
ddd�g�|jd
jd}|j	|jd�|jd
jd}|j	|jd�dS)Nr�z/bin/foor()r�r�z	/bin/foo2r�r)r�r1r��stopProcessGroup)r�)r*r�)r�r�r�r�T)rrr�r�rr�r�r$r�rr3rr�r�r�r*r�rr�r�)
rr4r�r�r�r6r%r�r�rjr*r�r�rrr�test_stopProcessGroup�s>


z=SupervisorNamespaceXMLRPCInterfaceTests.test_stopProcessGroupc	Cs�t�}t|dtdd�}t|dtdd�}t|d||�}ddlm}|jdd	|j�|jdd	|j�|j|�}|j	dd
d�}ddl
m}|j|�dd
d|j
d�dd
d|j
d�g�dS)Nr�r()r�r�r�r1r)r�r�F)r�)r*r�)r�r�r�r�)rrrzrr�r�r�r�r$r�r�r*rr�)	rr4r�r�r6r�r%r�r*rrr�test_stopProcessGroup_nowait�s*
zDSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcessGroup_nowaitcCs4ddlm}t�}|j|�}|j|jj|jd�dS)Nr)rr1)rrrr$rr*r�r�)rrr6r%rrr�test_stopProcessGroup_badnames


zESupervisorNamespaceXMLRPCInterfaceTests.test_stopProcessGroup_badnamecCs�t�}t|dtddd�}t|dtddd�}t|d||�}d	d
lm}|jdd|j�|jdd|j�|j|�}|j	d�|j
|jd
�dS)Nr�Fg{�G�z�?)rvr�r�r�)r�r�r1r)r�r�zfoo:*r�)rrrzrr�r�r�r�r$r�rr3)rr4r�r�r6r�r%rrr�-test_stopProcess_splat_calls_stopProcessGroups



zUSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_splat_calls_stopProcessGroupc
Cst�}t|dddd�}t|dddd�}dd	lm}t|d
||�}|jdd|j�|jdd|j�|j|�}|j�}|j	|j
d�dd
lm}|j
}	x|�}	|	|j
k	r�Pq�Wddlm}
|j	|	|
jd
ddd�|
jd
ddd�g�|jd
jd}|j	|jd�|jd
jd}|j	|jd�dS)Nr�z/bin/foor()r�r�z	/bin/foo2r�r)r�r1r��stopAllProcesses)r�)r*r�)r�r�r�r�T)rrr�r�rr�r�r$r�rr3rr�r�r�r*r�rr�r�)
rr4r�r�r�r6r%r�r�rjr*r�r�rrr�test_stopAllProcesses-s>

z=SupervisorNamespaceXMLRPCInterfaceTests.test_stopAllProcessesc	Cs�t�}t|dtdd�}t|dtdd�}t|d||�}ddlm}|jdd	|j�|jdd	|j�|j|�}|j	d
d�}ddl
m}|j|�d|j
d
dd�d|j
d
dd�g�dS)Nr�r()r�r�r�r1r)r�r�F)r�)r*r�)r�r�r�r�)rrrzrr�r�r�r�r$r�r�r*rr�)	rr4r�r�r6r�r%r�r*rrr�test_stopAllProcesses_nowaitQs*
zDSupervisorNamespaceXMLRPCInterfaceTests.test_stopAllProcesses_nowaitcCs�t�}t|dd�}ddlm}t|d|�}|jdd|j�|j|�}|jdd�}|j	|j
d�|j	|d�|j|jj
d}|j	|jd�dS)	Nr1z/bin/foor)r�r�r��
signalProcessT)rrr�r�rr�r�r$r�rr3r�
group_namer��sent_signal)rr4r�r�r6r%rh�prrr�%test_signalProcess_with_signal_numberks
zMSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_with_signal_numbercCs�t�}t|dd�}ddlm}t|d|�}|jdd|j�ddlm}d}||�}|j	|�}|j
d|�}	|j|jd�|j|	d	�|j
|jjd}
|j|
j|�dS)
Nr1z/bin/foor)r�r�)�
signal_number�quitr�T)rrr�r�rr�r��supervisor.datatypesr�r$r�rr3rr�r�r�)rr4r�r�r6r��signame�signumr%rhr�rrr�#test_signalProcess_with_signal_namezs
zKSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_with_signal_namecCs�t�}t|dd�}ddlm}t|d|�}|jdd|j�|j|�}|jdd�}|j	|j
d�|j	|d�|j|jj
d}|j	|jd�dS)	Nr1z/bin/foor)r�r�r�r�T)rrr�r�rr�r�r$r�rr3rr�r�r�)rr4r�r�r6r%rhr�rrr�test_signalProcess_stopping�s
zCSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_stoppingcCsjt�}t|dd�}ddlm}ddlm}t|d|�}|jdd|j�|j	|�}|j
|jj|j
dd�dS)Nr1z/bin/foor)r�)rr��)rrr�r�rrrr�r�r$rr*Z
BAD_SIGNALr�)rr4r�r�rr6r%rrr�test_signalProcess_badsignal�s
zDSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_badsignalcCsjt�}t|dd�}ddlm}ddlm}t|d|�}|jdd|j�|j	|�}|j
|jj|j
dd�dS)Nr1z/bin/foor)r�)rr�r�)rrr�r�rrrr�r�r$rr*r�r�)rr4r�r�rr6r%rrr�test_signalProcess_notrunning�s
zESupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_notrunningc
Cs�t�}t|dd�}ddlm}ddlm}t|d|�}|jdd|j�dd�}|j	|j
}|jd}||_|j
|�}	|j|jj|	jdd	�dS)
Nr1z/bin/foor)r�)rr�cSsdS)N�msgr)Zsigrrr�signalreturn�szgSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_signal_returns_message.<locals>.signalreturnr�)rrr�r�rrrr�r�rr�r��signalr$rr*r�r�)
rr4r�r�rr6r��pgroup�procr%rrr�)test_signalProcess_signal_returns_message�s

zQSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_signal_returns_messagecCst�}t|dd�}t|dd�}ddlm}t|d||�}|jdd|j�|jdd|j�|j|�}|j	d	d
�}|j
|jd�t|t
jd�d
�}ddlm}|j
||jdddd�|jdddd�g�|jdjd}	|j
|	jd
�|jdjd}
|j
|
jd
�dS)z Test that sending foo:* works r�z/bin/foor�z	/bin/foo2r)r�r1r�zfoo:*r��signalProcessGroupr�)�key)r*r�)r�r�r�r�N)rrr�r�rr�r�r�r$r�rr3�sorted�operator�
itemgetterr�r*r�rr�r�)rr4r�r�r�r6r%rhr*r�r�rrr�test_signalProcess_withgroup�s4
zDSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_withgroupcCst�}t|dd�}t|dd�}ddlm}t|d||�}|jdd|j�|jdd|j�|j|�}|jdd	�}|j	|j
d
�t|tj
d�d�}dd
lm}|j	||jdddd�|jdddd�g�|jdjd}	|j	|	jd	�|jdjd}
|j	|
jd	�dS)Nr�z/bin/foor�z	/bin/foo2r)r�r1r�r�r�r�)r�)r*r�)r�r�r�r�)rrr�r�rr�r�r$r�rr3r�r�r�r�r*r�rr�r�)rr4r�r�r�r6r%rhr*r�r�rrr�*test_signalProcessGroup_with_signal_number�s4
zRSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcessGroup_with_signal_numbercCs�t�}t|dd�}ddlm}t|d|�}|jdd|j�ddlm}d}||�}|j	|�}|j
d|�}	|j|jd	�dd
l
m}
|j|	|
jdddd�g�|jdjd}|j|j|�dS)
Nr�z/bin/foor)r�r1r�)r�Ztermr�)r*r�)r�r�r�r�)rrr�r�rr�r�r�r�r$r�rr3r�r*r�rr�r�)rr4r�r�r6r�r�r�r%rhr*r�rrr�(test_signalProcessGroup_with_signal_name
s&
zPSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcessGroup_with_signal_namecCs�ddlm}t�}t|dd�}t|dd�}ddlm}t|d||�}|jdd	|j�|jdd	|j�|j	|�}|j
|jj|j
d
d�dS)Nr)rr�z/bin/foor�z	/bin/foo2)r�r1r��barr�)rrrrr�r�rr�r�r$rr*r�r�)rrr4r�r�r�r6r%rrr�#test_signalProcessGroup_nosuchgroup$s

zKSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcessGroup_nosuchgroupcCst�}t|dd�}t|dd�}ddlm}t|d||�}|jdd|j�|jdd|j�|j|�}|jd	�}|j	|j
d
�t|tj
d�d�}dd
lm}|j	||jdddd�|jdddd�g�|jdjd}	|j	|	jd	�|jdjd}
|j	|
jd	�dS)Nr�z/bin/foor�z	/bin/foo2r)r�r1r�r��signalAllProcessesr�)r�)r*r�)r�r�r�r�)rrr�r�rr�r�r$rrr3r�r�r�r�r*r�rr�r�)rr4r�r�r�r6r%rhr*r�r�rrr�*test_signalAllProcesses_with_signal_number3s4

zRSupervisorNamespaceXMLRPCInterfaceTests.test_signalAllProcesses_with_signal_numbercCs�t�}t|dd�}ddlm}t|d|�}|jdd|j�ddlm}d}||�}|j	|�}|j
|�}	|j|jd	�dd
l
m}
|j|	|
jdddd�g�|jdjd}|j|j|�dS)
Nr�z/bin/foor)r�r1r�)r�Zhupr)r*r�)r�r�r�r�)rrr�r�rr�r�r�r�r$rrr3r�r*r�rr�r�)rr4r�r�r6r�r�r�r%rhr*r�rrr�(test_signalAllProcesses_with_signal_nameTs&

zPSupervisorNamespaceXMLRPCInterfaceTests.test_signalAllProcesses_with_signal_namecCs�t�}t|d�}t|dtttd�}t|dtddd�}t|d||gd�}dt|�i|_|g|j_	|j
|�}|j�}|j|ddd	�|j|dd
d�|j|ddd
�|j|ddd
�|j|ddd�|j|ddd�|j|ddd�|j|ddd�|j|ddd
�|j|ddd�|j|ddd�|j|ddd
�|j|ddd�|j|ddd
�|j|ddd�|j|ddd�|j|ddd
�|j|ddd�|j|dd d*�|j|dd!d�|j|dd"d�|j|ddd�|j|dd#d	�|j|dd$d�|j|dd%d�d&|dd'k�szt
�|j|d(dd	�|j|d(d
d�|j|d(dd
�|j|d(dd
�|j|d(dd�|j|d(dd�|j|d(dd�|j|d(dd�|j|d(dd
�|j|d(dd�|j|d(dd�|j|d(dd
�|j|d(dd�|j|d(dd
�|j|d(dd�|j|d(dd�|j|d(dd
�|j|d(dd)�|j|d(d d+�|j|d(d!d�|j|d(d"d�|j|d(dd�|j|d(d#d	�|j|d(d$d)�|j|d(d%d�d&|dd'k�s�t
�dS),Nr1r�)�stdout_logfile�stderr_logfiler�rw)rxrrvTZstopwaitsecsr�Zstdout_events_enabledFZstderr_events_enabledr�Zstdout_capture_maxbytesr�Z
stopsignal�Z
stderr_syslogZstdout_logfile_maxbytesZ
group_prioi�ZkillasgroupZprocess_prioZ
stdout_syslogZstderr_logfile_maxbytesr��redirect_stderrr�autoZ	exitcodesZstderr_capture_maxbytesZstartretriesZinuserZstdout_logfile_backupsztest_rpcinterfaces.pyZcommandr(Znone)r)r)rrrrzr
rrrr4r{r$�getAllConfigInforr)rr4r6r�r�r�r%Zconfigsrrr�test_getAllConfigInfoms�


z=SupervisorNamespaceXMLRPCInterfaceTests.test_getAllConfigInfoc
Cs�t�}t|d�}t|dt�}t|dt�}t|d||gd�}dt|�i|_|g|j_|j	|�}t
d�g}yddlm}|j
|�Wntk
r�YnXxF|D]>}	x8|j�D],}
x&|
j�D]\}}|jt||	�|�q�Wq�Wq�WdS)Nr1r�r�rw)rxr)�Enum)rrrrzrrrr4r{r$�type�enumr�append�ImportErrorr�itemsr��
isinstance)
rr4r6r�r�r�r%Zunmarshallablesr�typ�config�k�vrrr�>test_getAllConfigInfo_filters_types_not_compatible_with_xmlrpc�s$




zfSupervisorNamespaceXMLRPCInterfaceTests.test_getAllConfigInfo_filters_types_not_compatible_with_xmlrpccCs2t�}|j|�}td}td}ddlm}dd|j||td�}|j|�}|j|d�dd	|j||td
d�}|j|�}|j|d
�dd	|j||tdd�}	|j|	�}|j|d
�dd|j	||tdd�}
|j|
�}ddl
m
}|tj|�dd��}|j||j
t��dd|j	d|tdd�}
|j|
�}|j|d�dS)Nr�r(r)r��running)r�r�r��startr��nowzpid 1, uptime 0:01:40�fatalr�ZHosed)r�r�r�rr�rr��z unknown error (try "tail fatal")�stopped�)�datetime�zNot started)rr$r	r�r�r��_interpretProcessInforZFATALr�r!�time�	localtime�strftimer
)rr6r%rr�r�rr�rZfatal2rr!ZstoptimeZstopped2rrr�test__interpretProcessInfo�sf





zBSupervisorNamespaceXMLRPCInterfaceTests.test__interpretProcessInfocCsNt�}|j|�}ddlm}dd|jtddtd�}|j|�}|j|d�dS)Nr)r�r�*r�)r�r�r�rr�rzpid 42, uptime 0:00:00)rr$r�r�r�r	r#r)rr6r%r�rr�rrr�8test__interpretProcessInfo_doesnt_report_negative_uptimes

z`SupervisorNamespaceXMLRPCInterfaceTests.test__interpretProcessInfo_doesnt_report_negative_uptimec
CsTddlm}t�}t|dddd�}t|�}d|_d|_d	|_t|dd
�}t	|�}d|i|_
td|id�}|j|�}|j
d�}	|j|jd�|j|	d
d�|j|	dd�|j|	dd�|j|	dd�|j|	dd�|j|	dd�|j|	dd	�|j|	d|j�|j|	dd�|j|	dd�|j|	dd�|j|	djd��dS)Nr)r�r1z/bin/fooz/tmp/fleeb.bar)r�or��)r�)r�getProcessInforRrrrr�r�rr�r�rDr��
exitstatusr�r�zpid 111)r�r�rrrr��	laststart�laststoprrr�rr$r,rr3r�r}�
startswith)
rr�r4rr��
pgroup_configr�r6r%r^rrr�test_getProcessInfos6


z;SupervisorNamespaceXMLRPCInterfaceTests.test_getProcessInfoc	Cs�t�}t|dddd�}t|�}d|_d|_d|_t|dd�}t|�}d|i|_t	d|id�}|j
|�}|jd�}|j|d	d
�|j|dd
�dS)Nr1z/bin/foo)rr*r�r+)r�)rrRrr)
rrrr�r.r/rrr�rr$r,r)	rr4rr�r1r�r6r%r^rrr� test_getProcessInfo_logfile_NONE7s


zHSupervisorNamespaceXMLRPCInterfaceTests.test_getProcessInfo_logfile_NONEcCsrddlm}t�}t|dd�}t|d|�}|jdd|j�|j|�}|jd�}|j	|dd�|j	|dd	�dS)
Nr)r�r1z/bin/foor�rDr�r�r)
rFr�rrrr�r�r$r,r)rr�r4r�r6r%r^rrr�!test_getProcessInfo_unknown_stateHs

zISupervisorNamespaceXMLRPCInterfaceTests.test_getProcessInfo_unknown_statecCs4ddlm}t�}|j|�}|j|jj|jd�dS)Nr)r�nonexistent)rrrr$rr*r�r,)rrr6r%rrr�-test_getProcessInfo_bad_name_when_bad_processSs


zUSupervisorNamespaceXMLRPCInterfaceTests.test_getProcessInfo_bad_name_when_bad_processcCsLddlm}t�}t|dd�}t|d|�}|j|�}|j|jj|j	d�dS)Nr)rr1z/bin/foozfoo:)
rrrrrr$rr*r�r,)rrr4r�r6r%rrr�,test_getProcessInfo_bad_name_when_no_processZs

zTSupervisorNamespaceXMLRPCInterfaceTests.test_getProcessInfo_bad_name_when_no_processc	s�ddlm�t�}t|dddd�}t|�}t�jd�|_t�jd�|_t	|dd�}t
|�}d|i|_td|id�}|j
|�}�fd	d
�|_|jd�}|j|d�j�|j|d�j�|j|d
�j�dS)Nr)�	xmlrpclibr1z/bin/foo)rr()r�)rcst�jd�S)Nr()�float�MAXINTr)r8rrrnpszuSupervisorNamespaceXMLRPCInterfaceTests.test_getProcessInfo_caps_timestamps_exceeding_xmlrpc_maxint.<locals>.<lambda>rr�r)�supervisor.compatr8rrrr9r:r.r/rrr�rr$Z_nowr,r)	rr4rr�r1r�r6r%r^r)r8r�;test_getProcessInfo_caps_timestamps_exceeding_xmlrpc_maxintcs"


zcSupervisorNamespaceXMLRPCInterfaceTests.test_getProcessInfo_caps_timestamps_exceeding_xmlrpc_maxintc
Cs�ddlm}t�}t|ddddd�}t|dd	d
dd�}t|d||�}|jdd
d�|jddd�|jddd�|jdd|j�|jdd
d�|jddd�|jddd�|jdd|j�|j|�}|j	�}|j
|jd�|j
t|�d
�|d}|j
|dd�|j
|dd�|j
|dd�|j
|dd�|j
|d
d�|j
|dd�|j
|dd�|j
|d|j�|j
|dd�|j
|dd�|j
|d d�|j
|d!d�|j
|d"jd#��|d}	|jdjd}
|j
|	dd�|j
|	dd�|j
|dd�|j
|	dd�|j
|	d
d�|j
|	d|
j�|j
|	dd�|j
|	d|j�|j
|	dd$�|j
|	dd�|j
|	d d�|j
|d!d�dd%lm}|tj|
j�dd&��}|j
|	d"|jt��dS)'Nr)r�r�z
/bin/process1r(z/tmp/process1.log)r�rr�z
/bin/process2r�z/tmp/process2.logZgnamer�r*r.r�r/r+r��r,rRrrrr�rr�rDr�r-r�r�r�zpid 111r�)r!r")r�r�rrrr�r�r�r$ZgetAllProcessInforr3r�r}r0rr�r.r!r$r%r&r
)
rr�r4Zp1configZp2configr6r%�infoZp1infoZp2infor�r!Z	starttimerrr�test_getAllProcessInfovsl

z>SupervisorNamespaceXMLRPCInterfaceTests.test_getAllProcessInfocCsXddlm}t�}t|ddddd�}t|d|�}|j|�}|j|jj|j	dddd�dS)	Nr)rr�z
/bin/process1r(z/tmp/process1.log)r�r)rLrM)
rrrrrr$rr*rN�readProcessStdoutLog)rrr4r�r6r%rrr�$test_readProcessStdoutLog_unreadable�s


zLSupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStdoutLog_unreadablec	Cs�ddlm}t�}t|ddddd�}t|d|�}|j|�}|jdjd}|jj	}z\t
|d��}|jd	d
�WdQRX|j|j
j|jdddd�|j|j
j|jdd
dd�Wdtj|�XdS)Nr)rr�z
/bin/process1r(z/tmp/process1.log)r�rzw+rPi)rLrMrQrQrQ)rrrrrr$rr�rrrSrTrr*rUr@rVrW)	rrr4r�r6r%r�rRrXrrr�!test_readProcessStdoutLog_badargs�s$



zISupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStdoutLog_badargscCsXddlm}t�}t|ddddd�}t|d|�}|j|�}|j|jj|j	d	ddd
�dS)Nr)rr�z
/bin/process1r(z/tmp/process1.log)r�rr1zfoo:*)rLrM)
rrrrrr$rr*r�r@)rrr4r�r6r%rrr�-test_readProcessStdoutLog_bad_name_no_process�s


zUSupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStdoutLog_bad_name_no_processc	Cst�}t|dddd�}t|d|�}|j|�}|jdjd}|jj}z�t|d��"}|j	dd�|j	dd�WdQRX|j
dd	d	d
�}|j|jd�|j|dddd�|j
ddd	d
�}|j|dd�|j
dd	dd
�}|j|dd�|j
dd
d	d
�}|j|d�Wdt
j|�XdS)Nr1z/bin/fooz
/tmp/fooooooo)rzw+rPirZr)rLrMr@r[r\r])rrrr$rr�rrrSrTr@rr3rVrW)	rr4r�r6r%r�rRrXr^rrr�test_readProcessStdoutLog�s*
zASupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStdoutLogcCs<t�}t|dd�}t|d|�}|j|�}|j|j|j�dS)Nr1z/bin/foo)rrrr$rZreadProcessLogr@)rr4r�r6r%rrr�1test_readProcessLogAliasedTo_readProcessStdoutLog�s
zYSupervisorNamespaceXMLRPCInterfaceTests.test_readProcessLogAliasedTo_readProcessStdoutLogcCsXddlm}t�}t|ddddd�}t|d|�}|j|�}|j|jj|j	dddd�dS)	Nr)rr�z
/bin/process1r(z/tmp/process1.log)r�r)rLrM)
rrrrrr$rr*rN�readProcessStderrLog)rrr4r�r6r%rrr�$test_readProcessStderrLog_unreadables


zLSupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStderrLog_unreadablec	Cs�ddlm}t�}t|ddddd�}t|d|�}|j|�}|jdjd}|jj	}z\t
|d��}|jd	d
�WdQRX|j|j
j|jdddd�|j|j
j|jdd
dd�Wdtj|�XdS)Nr)rr�z
/bin/process1r(z/tmp/process1.log)r�rzw+rPi)rLrMrQrQrQ)rrrrrr$rr�rrrSrTrr*rUrFrVrW)	rrr4r�r6r%r�rRrXrrr�!test_readProcessStderrLog_badargss$



zISupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStderrLog_badargscCsXddlm}t�}t|ddddd�}t|d|�}|j|�}|j|jj|j	d	ddd
�dS)Nr)rr�z
/bin/process1r(z/tmp/process1.log)r�rr1zfoo:*)rLrM)
rrrrrr$rr*r�rF)rrr4r�r6r%rrr�-test_readProcessStderrLog_bad_name_no_process%s


zUSupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStderrLog_bad_name_no_processc	Cst�}t|dddd�}t|d|�}|j|�}|jdjd}|jj}z�t|d��"}|j	dd�|j	dd�WdQRX|j
dd	d	d
�}|j|jd�|j|dddd�|j
ddd	d
�}|j|dd�|j
dd	dd
�}|j|dd�|j
dd
d	d
�}|j|d�Wdt
j|�XdS)Nr1z/bin/fooz
/tmp/fooooooo)rzw+rPirZr)rLrMrFr[r\r])rrrr$rr�rrrSrTrFrr3rVrW)	rr4r�r6r%r�rRrXr^rrr�test_readProcessStderrLog0s*
zASupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStderrLogcCs8ddlm}t�}|j|�}|j|jj|jddd�dS)Nr)rr�r�)rrrr$rr*r��tailProcessStdoutLog)rrr6r%rrr�"test_tailProcessStdoutLog_bad_nameHs


zJSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStdoutLog_bad_namecCsVddlm}t�}t|ddddd�}t|d|�}|j|�}|j|jj|j	d	dd
�dS)Nr)rr�z
/bin/process1r(z/tmp/process1.log)r�rr1zfoo:*r�)
rrrrrr$rr*r�rK)rrr4r�r6r%rrr�-test_tailProcessStdoutLog_bad_name_no_processOs


zUSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStdoutLog_bad_name_no_processcCs�ddlm}t�}t|dddd�}t|d|�}|j|�}|jdjd}|jj	}ztt
|d��}|j|�WdQRX|jddt
|�d�\}	}
}|j|jd	�|j|d
�|j|
t
|��|j|	|�Wdtj|�XdS)Nr)�lettersr1z/bin/fooz
/tmp/fooooooo)rzw+)rLrMrKF)r;rNrrrr$rr�rrrSrTrKr�rr3rVrW)rrNr4r�r6r%r�rRrXr^rL�overflowrrr�test_tailProcessStdoutLog_allYs&
zESupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStdoutLog_allcCs*ddlm}t�}t|dddd�}t|d|�}|j|�}|jdjd}|jj	}z�t
|d��}|j|�WdQRX|jdt
|�dd	�\}	}
}|j|jd
�|j|d�|j|
t
|��|j|	d�|jdt
|�d
dd	�\}	}
}|j|jd
�|j|d�|j|
t
|��|j|	d�Wdtj|�XdS)Nr)rNr1z/bin/fooz
/tmp/fooooooo)rzw+r�)rLrMrKFr�)r;rNrrrr$rr�rrrSrTrKr�rr3rVrW)rrNr4r�r6r%r�rRrXr^rLrOrrr�test_tailProcessStdoutLog_noneqs4

zFSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStdoutLog_nonecCs�ddlm}t�}t|dddd�}t|d|�}|j|�}|jdjd}|jj	}zxt
|d��}|j|�WdQRX|jdddd	�\}	}
}|j
|jd
�|j
|d�|j
|
t|��|j
|	|dd��Wdtj|�XdS)
Nr)rNr1z/bin/fooz
/tmp/fooooooo)rzw+rQ)rLrMrKT���)r;rNrrrr$rr�rrrSrTrKrr3r�rVrW)rrNr4r�r6r%r�rRrXr^rLrOrrr�"test_tailProcessStdoutLog_overflow�s$
zJSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStdoutLog_overflowcCsxt�}t|dddd�}t|d|�}|j|�}|jdddd�\}}}|j|jd�|j|d	�|j|d�|j|d
�dS)Nr1z/bin/fooz
/tmp/fooooooo)rrr�)rLrMrKFr)rrrr$rKrr3)rr4r�r6r%r^rLrOrrr�$test_tailProcessStdoutLog_unreadable�s
zLSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStdoutLog_unreadablecCs<t�}t|dd�}t|d|�}|j|�}|j|j|j�dS)Nr1z/bin/foo)rrrr$rZtailProcessLogrK)rr4r�r6r%rrr�1test_tailProcessLogAliasedTo_tailProcessStdoutLog�s
zYSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessLogAliasedTo_tailProcessStdoutLogcCs8ddlm}t�}|j|�}|j|jj|jddd�dS)Nr)rr�r�)rrrr$rr*r��tailProcessStderrLog)rrr6r%rrr�"test_tailProcessStderrLog_bad_name�s


zJSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStderrLog_bad_namecCsVddlm}t�}t|ddddd�}t|d|�}|j|�}|j|jj|j	d	dd
�dS)Nr)rr�z
/bin/process1r(z/tmp/process1.log)r�rr1zfoo:*r�)
rrrrrr$rr*r�rW)rrr4r�r6r%rrr�-test_tailProcessStderrLog_bad_name_no_process�s


zUSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStderrLog_bad_name_no_processcCs�ddlm}t�}t|dddd�}t|d|�}|j|�}|jdjd}|jj	}ztt
|d��}|j|�WdQRX|jddt
|�d�\}	}
}|j|jd	�|j|d
�|j|
t
|��|j|	|�Wdtj|�XdS)Nr)rNr1z/bin/fooz
/tmp/fooooooo)rzw+)rLrMrWF)r;rNrrrr$rr�rrrSrTrWr�rr3rVrW)rrNr4r�r6r%r�rRrXr^rLrOrrr�test_tailProcessStderrLog_all�s&
zESupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStderrLog_allcCs*ddlm}t�}t|dddd�}t|d|�}|j|�}|jdjd}|jj	}z�t
|d��}|j|�WdQRX|jdt
|�dd	�\}	}
}|j|jd
�|j|d�|j|
t
|��|j|	d�|jdt
|�d
dd	�\}	}
}|j|jd
�|j|d�|j|
t
|��|j|	d�Wdtj|�XdS)Nr)rNr1z/bin/fooz
/tmp/fooooooo)rzw+r�)rLrMrWFrrQ)r;rNrrrr$rr�rrrSrTrWr�rr3rVrW)rrNr4r�r6r%r�rRrXr^rLrOrrr�test_tailProcessStderrLog_none�s4

zFSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStderrLog_nonecCs�ddlm}t�}t|dddd�}t|d|�}|j|�}|jdjd}|jj	}zxt
|d��}|j|�WdQRX|jdddd	�\}	}
}|j
|jd
�|j
|d�|j
|
t|��|j
|	|dd��Wdtj|�XdS)
Nr)rNr1z/bin/fooz
/tmp/fooooooo)rzw+rQ)rLrMrWTrS)r;rNrrrr$rr�rrrSrTrWrr3r�rVrW)rrNr4r�r6r%r�rRrXr^rLrOrrr�"test_tailProcessStderrLog_overflows$
zJSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStderrLog_overflowcCsxt�}t|dddd�}t|d|�}|j|�}|jdddd�\}}}|j|jd�|j|d	�|j|d�|j|d
�dS)Nr1z/bin/fooz
/tmp/fooooooo)rrr�)rLrMrWFr)rrrr$rWrr3)rr4r�r6r%r^rLrOrrr�$test_tailProcessStderrLog_unreadable#s
zLSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStderrLog_unreadablecCshddlm}t�}t|dd�}t|�}td�}d|i|_td|id�}|j|�}|j	|j
j|jd�dS)Nr)rr1)rZbadgroup)
rrrrrrr�rr$rr*r��clearProcessLogs)rrr4r�r�r�r6r%rrr�'test_clearProcessLogs_bad_name_no_group2s


zOSupervisorNamespaceXMLRPCInterfaceTests.test_clearProcessLogs_bad_name_no_groupcCshddlm}t�}t|dd�}t|�}td�}d|i|_td|id�}|j|�}|j	|j
j|jd�dS)Nr)rr1)rzfoo:*)
rrrrrrr�rr$rr*r�r^)rrr4r�r�r�r6r%rrr�)test_clearProcessLogs_bad_name_no_process?s


zQSupervisorNamespaceXMLRPCInterfaceTests.test_clearProcessLogs_bad_name_no_processcCs`t�}t|dd�}t|�}td�}d|i|_td|id�}|j|�}|jd�|j|j	d�dS)Nr1)rT)
rrrrr�rr$r^r�logsremoved)rr4r�r�r�r6r%rrr�test_clearProcessLogsLs


z=SupervisorNamespaceXMLRPCInterfaceTests.test_clearProcessLogscCslddlm}t�}t|dd�}t|�}td�}d|i|_d|_td|id�}|j	|�}|j
|j|jd�dS)Nr)rr1T)r)
rrrrrrr��error_at_clearrr$rfrr^)rrr4r�r�r�r6r%rrr�test_clearProcessLogs_failedWs

zDSupervisorNamespaceXMLRPCInterfaceTests.test_clearProcessLogs_failedcCs<t�}t|dd�}t|d|�}|j|�}|j|j|j�dS)Nr1z/bin/foo)rrrr$rZclearProcessLogr^)rr4r�r6r%rrr�.test_clearProcessLogAliasedTo_clearProcessLogscs
zVSupervisorNamespaceXMLRPCInterfaceTests.test_clearProcessLogAliasedTo_clearProcessLogscCs�t�}t|dddd�}t|dddd�}t|d||�}|j|�}|j�}|�|�}dd	lm}|j|ddd|jj	d
d��|j|ddd|jj	d
d��|j
djd}	|j|	jd�|j
djd}
|j|
jd�dS)
Nr�r1r()r�r�rr�r)rr�)r�r�r�r�T)
rrrr$�clearAllProcessLogsrrrr*r�rr�ra)rr4r�r�r6r%r��resultsrr�r�rrr�test_clearAllProcessLogsks0




[email protected]_clearAllProcessLogscCs�t�}t|dddd�}t|dddd�}t|d||�}|jddd	�|j|�}|j�}|�|�}|jdjd}|j|j	d
�|jdjd}	|j|	j	d	�|jt
|�d�ddlm}
|j|ddd|
j
jd
d��|j|ddd|
j
jdd��dS)Nr�r1r()r�r�rr�rcTFr)rzFAILED: foo:process1)r�r�r�r�r�)rrrr�r$rfrr�rrar�rrr*r�r�)rr4r�r�r6r%r�rgr�r�rrrr�!test_clearAllProcessLogs_onefails�s4



zISupervisorNamespaceXMLRPCInterfaceTests.test_clearAllProcessLogs_onefailscCs<t�}|j|ji�|j|�}|j�}|�}|j|g�dS)N)rrrr$rf)rr6r%r�rgrrr�%test_clearAllProcessLogs_no_processes�s
zMSupervisorNamespaceXMLRPCInterfaceTests.test_clearAllProcessLogs_no_processescCsRt�}t|dd�}t|d|�}|j|�}d}ddlm}|j|jj|j	d|�dS)Nr�r1r(r)r)
rrrr$rrrr*r+�sendProcessStdin)rr4r�r6r%Zthing_not_charsrrrr�<test_sendProcessStdin_raises_incorrect_params_when_not_chars�s

zdSupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_raises_incorrect_params_when_not_charscCs6t�}|j|�}ddlm}|j|jj|jdd�dS)Nr)rr5zchars for stdin)rr$rrrr*r�rk)rr6r%rrrr�6test_sendProcessStdin_raises_bad_name_when_bad_process�s

z^SupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_raises_bad_name_when_bad_processcCs@t�}t|d�}|j|�}ddlm}|j|jj|jdd�dS)Nr1r)rzfoo:*zchars for stdin)	rrr$rrrr*r�rk)rr4r6r%rrrr�5test_sendProcessStdin_raises_bad_name_when_no_process�s


z]SupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_raises_bad_name_when_no_processcCs\t�}t|dd�}t|d|�}|jddd�|j|�}ddlm}|j|jj	|j
dd�dS)Nr�r1r�r)rzchars for stdin)rrrr�r$rrrr*r�rk)rr4r�r6r%rrrr�=test_sendProcessStdin_raises_not_running_when_not_process_pid�s

zeSupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_raises_not_running_when_not_process_pidcCsjt�}t|dd�}t|d|�}|jddd�|jddd�|j|�}ddlm}|j|jj	|j
dd	�dS)
Nr�r1r�r(r�Tr)rzchars for stdin)rrrr�r$rrrr*r�rk)rr4r�r6r%rrrr�5test_sendProcessStdin_raises_not_running_when_killing�s

z]SupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_raises_not_running_when_killingcCs�t�}t|dd�}t|d|�}|jddd�|jddd�|jddttjtjtj���|j	|�}dd	l
m}|j|j
j|jdd
�dS)Nr�r1r�r(r�F�write_exceptionr)rzchars for stdin)rrrr�rcrdZEPIPErVrer$rrrr*rNrk)rr4r�r6r%rrrr�<test_sendProcessStdin_raises_no_file_when_write_raises_epipe�s

zdSupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_raises_no_file_when_write_raises_epipecCsxt�}t|dd�}t|d|�}|jddd�|jddd�|jddttjtjtj���|j	|�}|j
t|jdd�dS)	Nr�r1r�r(r�Frqzchars for stdin)rrrr�rcrdZEINTRrVrer$rfrk)rr4r�r6r%rrr�-test_sendProcessStdin_reraises_other_oserrors�s
zUSupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_reraises_other_oserrorscCs|t�}t|dd�}t|d|�}|jddd�|j|�}d}|j|jd|��|jd|j�|j	dj
d}|j|j|�dS)Nr�r1r�r(schars for stdinrk)rrrr�r$r}rkrr3rr��stdin_buffer)rr4r�r6r%�charsr�rrr�3test_sendProcessStdin_writes_chars_and_returns_true�s
z[SupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_writes_chars_and_returns_truecCsht�}t|dd�}t|d|�}|jddd�|j|�}|jdtd��|jdjd}|j	|j
d�dS)Nr�r1r�r(sfií)rrrr�r$rkrrr�rrt)rr4r�r6r%r�rrr�-test_sendProcessStdin_unicode_encoded_to_utf8s
zUSupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_unicode_encoded_to_utf8c
s�t�}t|�}|j|�}ddlm}g��fdd�}z&|j|fg|jdd�<|jdd�}Wdg|jdd�<|j�X|j	|�|j
t��d��d}|j
|jd�|j
|j
d�dS)Nr)�eventscs�j|�dS)N)r)�event)r�rrr�szgSupervisorNamespaceXMLRPCInterfaceTests.test_sendRemoteCommEvent_notifies_subscribers.<locals>.callbackr1rr()rrr$rrx�RemoteCommunicationEvent�	callbacks�sendRemoteCommEvent�clearr}rr�rr^)rr4r6r%rxr�rhryr)r�r�-test_sendRemoteCommEvent_notifies_subscribers
s 


zUSupervisorNamespaceXMLRPCInterfaceTests.test_sendRemoteCommEvent_notifies_subscribersc
s�t�}t|�}|j|�}ddlm}g��fdd�}z.|j|fg|jdd�<|jtd�td��}Wdg|jdd�<|j	�X|j
|�|jt��d��d}t
r�|j|jd�|j|jd	�n|j|jd�|j|jd�dS)
Nr)rxcs�j|�dS)N)r)ry)r�rrr�+szjSupervisorNamespaceXMLRPCInterfaceTests.test_sendRemoteCommEvent_unicode_encoded_to_utf8.<locals>.callbacku	fií onceu
fií twicer(ufií onceufií twice)rrr$rrxrzr{r|rr}r}rr�rrr^)rr4r6r%rxr�rhryr)r�r�0test_sendRemoteCommEvent_unicode_encoded_to_utf8$s*


zXSupervisorNamespaceXMLRPCInterfaceTests.test_sendRemoteCommEvent_unicode_encoded_to_utf8N)zrr r!r#r$r7r:r;r>rArGrIrKrOrYr_rargrirkrlrprtr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr
rr'r)r2r3r4r6r7r<r?rArBrCrDrErGrHrIrJrLrMrPrRrTrUrVrXrYrZr[r\r]r_r`rbrdrerhrirjrlrmrnrorprrrsrvrwr~rrrrrr-Bs�	
		
"$
	$$
# !H>
	B
"
"

	

r-c@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�#SystemNamespaceXMLRPCInterfaceTestscCsddlm}|jS)Nr)r)rrZSystemNamespaceRPCInterface)rrrrrr#Dsz3SystemNamespaceXMLRPCInterfaceTests._getTargetClasscCs.ddlm}t�}|j|�}|j�d|fg�S)Nr)r.r)rr.rr/r#)rr.r6rrrrr$Hs

z,SystemNamespaceXMLRPCInterfaceTests._makeOnecCs,|j�}|j|jd�|j|jd�dS)Nr�system)r$r}�
namespaces)rr%rrrr&Qsz-SystemNamespaceXMLRPCInterfaceTests.test_ctorcCs@|j�}|j�}|j�t|j�j��}|j�|j||�dS)N)r$�listMethods�sortr~�_listMethodsr�r)rr%�methodsr�rrr�test_listMethodsVsz4SystemNamespaceXMLRPCInterfaceTests.test_listMethodscCsHddlm}|j�}|j|jj|jdg�|jd�}|j|ddg�dS)Nr)rzfoo.barzsystem.methodSignature�array�string)rrr$rr*�SIGNATURE_UNSUPPORTED�methodSignaturer)rrr%rhrrr�test_methodSignature^s

z8SystemNamespaceXMLRPCInterfaceTests.test_methodSignaturecCs�ddlm}ddddddd	d
dg	}|j�}|j�}�xL|j�D�]>}y|j|�Wn"|jk
rttd|��YnX|jd
d�\}}|j	|}t
||�}	y
|	j}
Wntk
r�|	j
}
YnX|
jd|
j�}|jt|	j��}g}
g}g}g}g}g}g}g}x�|D]�}|ddk�rR|
j|d�|j|d�|j|d�|j|d�nl|ddk�r�|j|d�|j|d�|j|d�|j|d�n$|ddk	�rtd|d||f���qWt|�t|�k�r�tdt|�t|�|f��x.|
D]&}|jt|�tk|t|�||f��q�Wx|D]}|j||k|��q&WxHtt|��D]8}||||k�rNd||||||f}t|���qNWx&|D]}|jt|�td�k|��q�Wt|�dk�r�td|��x,|D]$}|jt|�tk|t|�|f��q�Wx|D]}|j||k|��qWx0|D](}|jt|�td�k|t|�|f��q Wx0|D](}|jt|�td�k|t|�|f��qRWq>WdS)Nr)r�intZdoubler�ZbooleanzdateTime.iso8601�base64Zbinaryr��structz=methodSignature for %s raises RPCError (missing @return doc?)�.r(Zparamr�r r[�returnz%unknown tag type %s for %s, parsed %sz6Incorrect documentation (%s args, %s doc params) in %sz Name wrong: (%s vs. %s in %s)
%srz'Duplicate @return values in docs for %s)rrr$r�r�r�rr�splitr��getattrZ	func_code�	Exception�__code__�co_varnames�co_argcountZgettags�str�__doc__rr�r}rr��range)rrZ	_RPCTYPESr%r�rZns_nameZmethod_name�	namespace�methrZargnamesZparsedZplinesZptypesZpnamesZptextsZrlinesZrtypesZrnamesZrtexts�thingZdoclineZdoctyperPr�ZdoctextZdocnamerrr�test_allMethodDocsgs�












z6SystemNamespaceXMLRPCInterfaceTests.test_allMethodDocscCsR|j�}|jddgd�dgd�g�}|j|d|jd��|j|d|j��dS)Nzsystem.methodHelp)�
methodName�paramszsystem.listMethodsrr()r$�	multicallr�
methodHelpr�)rr%rgrrr�test_multicall_simplevals�s
z=SystemNamespaceXMLRPCInterfaceTests.test_multicall_simplevalscCsVddlm}|j�}|jdgd�g�}|j|jjd�}|j|jd�}|j	||g�dS)Nr)rzsystem.multicall)r�r�z$Recursive system.multicall forbidden)Z	faultCodeZfaultString)
rrr$r�rr*r+r�textr)rrr%rg�eZrecursion_faultrrr�test_multicall_recursion_guard�s
zBSystemNamespaceXMLRPCInterfaceTests.test_multicall_recursion_guardcCsTddlm}|j�}|jddig�}|j}x||jkr>|�}q,W|j|dg�dS)Nr)r�r�zsupervisor.stopAllProcesses)rr�r$r�r�r)rr�r%r�rgrrr�test_multicall_nested_callback�s
zBSystemNamespaceXMLRPCInterfaceTests.test_multicall_nested_callbackcCsHddlm}|j�}|j|jj|jdg�|jd�}|j||jj�dS)Nr)rzfoo.barzsystem.methodHelp)	rrr$rr*r�r�rr�)rrr%�helprrr�test_methodHelp�s

z3SystemNamespaceXMLRPCInterfaceTests.test_methodHelpN)
rr r!r#r$r&r�r�r�r�r�r�r�rrrrr�Cs		a	
r�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�Test_make_allfunccKsddlm}||||f|�S)Nr)�make_allfunc)�supervisor.rpcinterfacer�)rr�Z	predicate�funcZextra_kwargsr�rrr�_callFUT�szTest_make_allfunc._callFUTc	s|ddlm��fdd�}t�}t|dd�}t|�}t|�}dd�}|j||fg||�}|�}|j|d	dd�jj	d
�g�dS)Nr)rcs�j�jj��dS)N)rr*r�)r�r)rrr�cb�sz7Test_make_allfunc.test_rpcerror_nocallbacks.<locals>.cbr�r1cSsdS)NTr)r�rrr�pred�sz9Test_make_allfunc.test_rpcerror_nocallbacks.<locals>.predr�)r�r�r�r�)
rrrrrrr�rr*r�)	rr�r4r�r�r�r��afrhr)rr�test_rpcerror_nocallbacks�sz+Test_make_allfunc.test_rpcerror_nocallbacksc	Cshdd�}t�}t|dd�}t|�}t|�}dd�}|j||fg||�}|�}|j|ddddd	�g�dS)
Nc[sdd�S)NcSsdS)Nr(rrrrrrn		szTTest_make_allfunc.test_func_callback_normal_return_val.<locals>.cb.<locals>.<lambda>r)r�rrrrr�	szBTest_make_allfunc.test_func_callback_normal_return_val.<locals>.cbr�r1cSsdS)NTr)r�rrrr�	szDTest_make_allfunc.test_func_callback_normal_return_val.<locals>.predr��P)r�r�r�r�)rrrrr�r)	rr�r4r�r�r�r�r�rhrrr�$test_func_callback_normal_return_val	sz6Test_make_allfunc.test_func_callback_normal_return_valc	sxddlm��fdd�}t�}t|dd�}t|�}t|�}dd�}|j||fg||�}|�}|j|d	dd
dd�g�dS)Nr)rcs�fdd�}|S)Ncs�j�jj��dS)N)rr*r�r)rrr�inner	szOTest_make_allfunc.test_func_callback_raises_RPCError.<locals>.cb.<locals>.innerr)r�rr�)rrrr�	sz@Test_make_allfunc.test_func_callback_raises_RPCError.<locals>.cbr�r1cSsdS)NTr)r�rrrr�#	szBTest_make_allfunc.test_func_callback_raises_RPCError.<locals>.predr��)r�r�r�r�)rrrrrrr�r)	rr�r4r�r�r�r�r�rhr)rr�"test_func_callback_raises_RPCError	sz4Test_make_allfunc.test_func_callback_raises_RPCErrorc	slddlm��fdd�}t�}t|dd�}t|�}t|�}dd�}|j||fg||�}|�}|j|��dS)	Nr)r�cs�fdd�}|S)Ncs�S)Nrr)r�rrr�2	szTTest_make_allfunc.test_func_callback_returns_NOT_DONE_YET.<locals>.cb.<locals>.innerr)r�rr�)r�rrr�1	szETest_make_allfunc.test_func_callback_returns_NOT_DONE_YET.<locals>.cbr�r1cSsdS)NTr)r�rrrr�9	szGTest_make_allfunc.test_func_callback_returns_NOT_DONE_YET.<locals>.pred)r�r�rrrrr�r)	rr�r4r�r�r�r�r�rhr)r�r�'test_func_callback_returns_NOT_DONE_YET/	sz9Test_make_allfunc.test_func_callback_returns_NOT_DONE_YETN)rr r!r�r�r�r�r�rrrrr��s
r�c@seZdZdd�Zdd�ZdS)�Test_make_main_rpcinterfacecCsddlm}||�S)Nr)�make_main_rpcinterface)r�r�)rr6r�rrrr�C	sz$Test_make_main_rpcinterface._callFUTcCs|jd�}|j|jjd�dS)Nr/)r�r�	__class__r)rrrrr�test_itG	s
z#Test_make_main_rpcinterface.test_itN)rr r!r�r�rrrrr�B	sr�c@seZdZdd�ZdS)r)cCsdS)NzHello!r)rrrr�helloQ	szDummyRPCInterface.helloN)rr r!r�rrrrr)P	sr)cCstjtjt�S)N)�unittestZ
findTestCases�sys�modulesrrrrr�
test_suiteT	sr��__main__)ZdefaultTest) r�r�r�rVr$rdZsupervisor.tests.baserrrrrrrr	r
r;rrr�r
ZTestCaserr"r-r�r�r�r)r�r�mainrrrr�<module>sV.R