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_rpcinterfaces.cpython-310.pyc
o

VƧ\>��@sPddlZddlZddlZddlZddlZddlZddlmZddlmZddlm	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�Zedkr�ejdd�dSdS)�N)�DummyOptions)�DummySupervisor)�DummyProcess)�DummyPConfig)�DummyPGroupConfig)�DummyProcessGroup)�PopulatedDummySupervisor)�_NOW)�_TIMEFORMAT)�	as_string�PY2)�	Automaticc@s$eZdZdd�Zdd�Zdd�ZdS)�TestBasecC�dS�N���selfrr�E/usr/lib/python3/dist-packages/supervisor/tests/test_rpcinterfaces.py�setUp�zTestBase.setUpcCrrrrrrr�tearDownrzTestBase.tearDownc
Os\ddlm}z||i|��Wtd��|jy-}z|�|j|�WYd}~dSd}~ww)Nr��xmlrpczDidn't raise)�
supervisorr�RPCError�assertEqual�code�AssertionError)rr�callable�args�kwr�instrrr�_assertRPCErrors���zTestBase._assertRPCErrorN)�__name__�
__module__�__qualname__rrr#rrrrrsrc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�MainXMLRPCInterfaceTestscC�ddlm}|jS�Nrr)rr�RootRPCInterface�rrrrr�_getTargetClass(�z(MainXMLRPCInterfaceTests._getTargetClasscO�|��|i|��Sr�r,�rr r!rrr�_makeOne,�z!MainXMLRPCInterfaceTests._makeOnecCs|�dg�}|�|jd�dS)N)rN)r1rr�r�	interfacerrr�	test_ctor/sz"MainXMLRPCInterfaceTests.test_ctorcCs�t�}|�d|fg�}ddlm}|�|jj|j|dg�|�|jj|j|dg�|�|jj|j|ddg�|�	|�|dg�d�dS)	N�dummyrrznotthere.hellozsupervisor._readFilezdummy.hello��Hello!)
�DummyRPCInterfacer1rrr#�Faults�UNKNOWN_METHOD�traverse�INCORRECT_PARAMETERSr)rr6r4rrrr�
test_traverse3s&

�
�
���z&MainXMLRPCInterfaceTests.test_traverseN)r$r%r&r,r1r5r>rrrrr'&s
r'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�S)��'SupervisorNamespaceXMLRPCInterfaceTestscCr()Nr��rpcinterface)rrA�SupervisorNamespaceRPCInterface)rrArrrr,Cr-z7SupervisorNamespaceXMLRPCInterfaceTests._getTargetClasscOr.rr/r0rrrr1Gr2z0SupervisorNamespaceXMLRPCInterfaceTests._makeOnecCsbddlm}ddlm}t�}|�|�}|�d�|�|jd�|j	|j
_|�|j
j|jd�dS)Nrr)�SupervisorStates�foo)rr�supervisor.supervisordrCrr1�_updater�update_text�SHUTDOWN�options�moodr#r:�SHUTDOWN_STATE)rrrC�supervisordr4rrr�test_updateJs


�z3SupervisorNamespaceXMLRPCInterfaceTests.test_updatecCsDddlm}t�}|�|�}|��}|�||j�|�|jd�dS)Nrr@�
getAPIVersion)rrArr1rNr�API_VERSIONrG)rrArLr4�versionrrr�test_getAPIVersionUs
z:SupervisorNamespaceXMLRPCInterfaceTests.test_getAPIVersioncC�$t�}|�|�}|�|j|j�dSr)rr1rrN�
getVersion�rrLr4rrr�3test_getAPIVersion_aliased_to_deprecated_getVersion]�
z[SupervisorNamespaceXMLRPCInterfaceTests.test_getAPIVersion_aliased_to_deprecated_getVersioncCsDt�}|�|�}|��}ddlm}|�||j�|�|jd�dS)Nr)rI�getSupervisorVersion)rr1rWrrIr�VERSIONrG)rrLr4rPrIrrr�test_getSupervisorVersionbs
zASupervisorNamespaceXMLRPCInterfaceTests.test_getSupervisorVersioncCs:t�}|�|�}|��}|�||jj�|�|jd�dS)N�getIdentification)rr1rZrrI�
identifierrG)rrLr4r[rrr�test_getIdentificationks

z>SupervisorNamespaceXMLRPCInterfaceTests.test_getIdentificationcCsfddlm}t�}|�|�}|��}|jj}||�}|�|d|�|�|d|�|�|jd�dS)Nr)�getSupervisorStateDescription�	statecode�	statename�getState)	�supervisor.statesr]rr1r`rIrJrrG)rr]rLr4�	stateinfor^r_rrr�
test_getStaters
z5SupervisorNamespaceXMLRPCInterfaceTests.test_getStatecCs>t�}t|�}|�|�}|�|��|���|�|jd�dS)N�getPID)rrr1rrd�get_pidrG)rrIrLr4rrr�test_getPID}s

z3SupervisorNamespaceXMLRPCInterfaceTests.test_getPIDcCrRr)rr1r�readMainLog�readLogrTrrr�.test_readLog_aliased_to_deprecated_readMainLog�rVzVSupervisorNamespaceXMLRPCInterfaceTests.test_readLog_aliased_to_deprecated_readMainLogcCs8ddlm}t�}|�|�}|j|jj|jddd�dS)Nrrr7��offset�length)rrrr1r#r:�NO_FILErh�rrrLr4rrr�test_readLog_unreadable�s

�z?SupervisorNamespaceXMLRPCInterfaceTests.test_readLog_unreadablec	Cs�ddlm}t�}|�|�}z>|jj}t|d��
}|�d�Wd�n1s(wY|j|j	j
|jddd�|j|j	j
|jddd�Wt�
|�dSt�
|�w)Nrr�w+�xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx���r7rj)rrrr1rI�logfile�open�writer#r:�
BAD_ARGUMENTSrh�os�remove)rrrLr4rs�frrr�test_readLog_badargs�s 
�
�
�z<SupervisorNamespaceXMLRPCInterfaceTests.test_readLog_badargsc	Cs�t�}|�|�}|jj}zbt|d��}|�d�|�d�Wd�n1s'wY|jddd�}|�|jd�|�|d�|jddd�}|�|d�|jddd�}|�|d�|jd	dd�}|�|d
�Wt	�
|�dSt	�
|�w)Nrprq�yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyrrjrh�xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy�����yyyy)rr1rIrsrtrurhrrGrwrx)rrLr4rsry�datarrr�test_readLog�s$

�z4SupervisorNamespaceXMLRPCInterfaceTests.test_readLogcCs2ddlm}t�}|�|�}|�|jj|j�dSr))rrrr1r#r:rm�clearLogrnrrr�test_clearLog_unreadable�s
z@SupervisorNamespaceXMLRPCInterfaceTests.test_clearLog_unreadablecCsVddlm}t�}|jg|_d|_t|�}|�|�}|�|j	|j
�|�|jd�dS)Nrrr7r�)
rrrrs�existing�remove_errorrr1�assertRaisesrr�rrG)rrrIrLr4rrr�test_clearLog_unremoveable�s

zBSupervisorNamespaceXMLRPCInterfaceTests.test_clearLog_unremoveablecCszt�}|jg|_t|�}|�|�}|��}|�|jd�|�|d�|�|jd|j�|j	j
jD]	}|�|jd�q1dS)Nr�Tr)
rrsr�rr1r�rrG�removedrI�logger�handlers�reopened)rrIrLr4�result�handlerrrr�
test_clearLog�s

�z5SupervisorNamespaceXMLRPCInterfaceTests.test_clearLogcC�8t�}|�|�}|��}|�|d�|�|jjd�dS)NTrr)rr1�shutdownrrIrJ�rrLr4�valuerrr�
test_shutdown��

z5SupervisorNamespaceXMLRPCInterfaceTests.test_shutdowncCr�)NTr)rr1�restartrrIrJr�rrr�test_restart�r�z4SupervisorNamespaceXMLRPCInterfaceTests.test_restartcsnt�}t|�}|�|�}t|d�gt|d�gt|d�gg��fdd�|_|��}|�|dgdgdggg�dS)N�added�changed�droppedc��Srrr��changesrr�<lambda>��zKSupervisorNamespaceXMLRPCInterfaceTests.test_reloadConfig.<locals>.<lambda>)rrr1r�diff_to_active�reloadConfigr)rrIrLr4r�rr�r�test_reloadConfig�s



�z9SupervisorNamespaceXMLRPCInterfaceTests.test_reloadConfigcCsHddlm}t�}dd�}||_t|�}|�|�}|�|jj|j	�dS)Nrrc_std��)NrD)�
ValueError)�argr!rrr�	raise_exc��zmSupervisorNamespaceXMLRPCInterfaceTests.test_reloadConfig_process_config_raises_ValueError.<locals>.raise_exc)
rrr�process_configrr1r#r:�CANT_REREADr�)rrrIr�rLr4rrr�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_	|�
|�}|�d�}|�|�|�
t|j���dg�|�|jj|jd�|�
t|j���dg�|�|jj|jd	�|�
t|j���dg�dS�
Nr��
SupervisorrrDF��	autostart�group1��pconfigs�asdf)rEr�rrrr�__file__rrI�process_group_configsr1�addProcessGroup�
assertTruer�list�process_groups�keysr#r:�
ALREADY_ADDED�BAD_NAME)	rr�rrIrL�pconfig�gconfigr4r�rrr�test_addProcessGroup�s&




�
�z<SupervisorNamespaceXMLRPCInterfaceTests.test_addProcessGroupcCs�ddlm}t�}||�}t|dtdd�}t|d|gd�}|g|j_|�|�}|�	d�|�
d�}|�|�|�t
|j���g�dS)Nrr�rDFr�r�r�)rEr�rrr�rrIr�r1r��removeProcessGroupr�rr�r�r�)rr�rIrLr�r�r4r�rrr�test_removeProcessGroup
s




z?SupervisorNamespaceXMLRPCInterfaceTests.test_removeProcessGroupcCsrddlm}ddlm}t�}||�}t|dtdd�}t|d|gd�}|g|j_	|�
|�}|�|jj
|jd	�dSr�)rEr�rrrrr�rrIr�r1r#r:r�r�)rr�rrIrLr�r�r4rrr� 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|_|�
|�}|�|jj|jd�dS)
Nrr�rrDFr�r�r��{)rEr�rrrrr�rrIr�r�unstopped_processesr�r1r#r:�
STILL_RUNNINGr�)	rr�rrIrLr�r��processr4rrr�%test_removeProcessGroup_still_running*s



�zMSupervisorNamespaceXMLRPCInterfaceTests.test_removeProcessGroup_still_runningcCs^ddlm}t�}t|dtdd�}t|d|�}|�ddd�|�|�}|�|j	j
|jd�dS)NrrrDFr��pid�
)rrrrr�r�set_procattrr1r#r:�ALREADY_STARTED�startProcess�rrrIr�rLr4rrr�!test_startProcess_already_started:s
�zISupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_already_startedcC�Pt�}t|dtdd�}t|d|�}|�|�}ddlm}|�|jj	|j
d�dS)NrDFr�r�rrz
group2:foo�rrr�rr1rrr#r:r�r��rrIr�rLr4rrrr� test_startProcess_bad_group_nameF�

�zHSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_bad_group_namecCr�)NrDFr�r�rrz
group1:barr�r�rrr�"test_startProcess_bad_process_nameOr�zJSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_bad_process_namecC�rt�}t|dddd�}ddlm}t|d|�}|jdjd}||_|�|�}ddl	m
}|�|jj
|jd�dS)NrD�/foo/barFr�r)�NotFoundr)rr�supervisor.optionsr�rr��	processes�execv_arg_exceptionr1rrr#r:rmr�)rrIr�r�rLr�r4rrrr� test_startProcess_file_not_foundX�

�zHSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_file_not_foundcCr�)NrDr�Fr�r)�
NotExecutabler)rrr�r�rr�r�r�r1rrr#r:�NOT_EXECUTABLEr�)rrIr�r�rLr�r4rrrr�%test_startProcess_file_not_executabledr�zMSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_file_not_executablecCs�ddlm}t�}t|dtdd�}ddlm}t|d|�}|�dd|j	�|j
djd}d|_|�
|�}|�|jj|jd�dS)	NrrrDFr���
ProcessStates�state�abc)rrrrr��supervisor.processr�rr��STOPPEDr�r��spawnerrr1r#r:�SPAWN_ERRORr�)rrrIr�r�rLr�r4rrr�test_startProcess_spawnerrps
�zBSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_spawnerrcCs�t�}t|dtddd�}ddlm}t|d|�}|�dd|j�|�|�}|�	d�}|j
djd}|�|j
d�|�|jd	�|j|_|�|d�dS)
NrDF�{�G�z�?�r��	startsecsrr�r�Tr�)rrr�r�r�rr�r�r1r�r�r�r�spawnedrG�RUNNINGr��rrIr�r�rLr4r�r�rrr�test_startProcess�s
�

z9SupervisorNamespaceXMLRPCInterfaceTests.test_startProcessc	s�ddlm}t�}t|dtdd�}ddlm�t|d|�}|�dd�j	�|j
djd���fdd	�}�fd
d�}|�_|�_
|�|�}|�d�}|�|jj|�dS)NrrrDFr�r�r�c�d�_�j�_dS�NT�r��STARTINGr�r�r�r�rr�spawn��z[SupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_spawnerr_in_onwait.<locals>.spawncs
d�_dS)Nr�)r�r)r�rr�
transition��
z`SupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_spawnerr_in_onwait.<locals>.transition)rrrrr�r�r�rr�r�r�r�r�r�r1r�r#r:r�)	rrrIr�rLr�r�r4�callbackrr�r�$test_startProcess_spawnerr_in_onwait�s

zLSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_spawnerr_in_onwaitcs�t�}t|dtdd�}ddlm�t|d|�}|�dd�j�|jdj	d���fdd�}|�_
|�|�}|�d�}�j
�_|�|�d	�dS)
NrDFr�rr�r�cr�r�r�rr�rrr��r�zZSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_success_in_onwait.<locals>.spawnT)rrr�r�r�rr�r�r�r�r�r1r�r�r�r)rrIr�rLr�r4r�rr�r�#test_startProcess_success_in_onwait�s

zKSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_success_in_onwaitcCs�t�}t|dtdd�}ddlm}t|d|�}|�dd|j�|�|�}|j	ddd�}|�
|d�|jdjd}|�
|j
d�|�
|jd	�dS)
NrDFr�rr�r���waitTr�)rrr�r�r�rr�r�r1r�rr�r�r�rGr�rrr�test_startProcess_nowait�s
z@SupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_nowaitc
s�t�}t|dtdd�}ddlm�ddlm}t|d|�}|�dd�j	�|�
|�}|jdjd���fdd	�}|�_
|�dd
�}|�}|�||j�|��jd�|�|jd��j�_dd
lm}	|�|	jj|�dS)NrDFr�rr���httpr�cr�r�r�rr�rrr��r�zjSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_abnormal_term_process_not_running.<locals>.spawn�dTr�r)rrr�r�r�rr�rr�r�r1r�r�r�r�r�NOT_DONE_YETr�rG�BACKOFFr�rr#r:�ABNORMAL_TERMINATION)
rrIr�r�rLr4r�r�r�rrr�r�3test_startProcess_abnormal_term_process_not_running�s$
z[SupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_abnormal_term_process_not_runningcC�t�}t|dtddd�}t|dtddd�}t|d||�}d	d
lm}|�dd|j�|�dd|j�|�|�}|�	d�|�
|jd
�dS)N�process1Fr�r��process2���priorityr�rDrr�r��foo:*�startProcessGroup)rrr�rr�r�r�r�r1r�rrG�rrI�pconfig1�pconfig2rLr�r4rrr�/test_startProcess_splat_calls_startProcessGroup�� 
�
��

zWSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_splat_calls_startProcessGroupc	Cs�t�}t|dtddd�}t|dtddd�}t|d||�}dd	lm}dd
lm}|�dd|j	�|�dd|j	�|�
|�}|�d�}|�|�d|j
ddd
�d|j
ddd
�g�|�|jd�|jdjd}	|�|	jd�|jdjd}
|�|
jd�dS)Nrr7r�rrrrDrr��r:r��OK��group�status�description�namer�T)rrr�rr�r��supervisor.xmlrpcr:r�r�r1rr�SUCCESSrGr�r�r�)rrIr
rrLr�r:r4r�rrrrr�test_startProcessGroup�sF
�
��

����z>SupervisorNamespaceXMLRPCInterfaceTests.test_startProcessGroupc		Cs�t�}t|dtddd�}t|dtddd�}t|d||�}dd	lm}|�dd
|j�|�dd
|j�|�|�}|j	ddd�}dd
l
m}|�|�d|j
ddd�d|j
ddd�g�dS�Nrr7r�rrrrDrr�r�Fr�rrr)rrr�rr�r�r�r�r1rrr:rr�	rrIr
rrLr�r4r�r:rrr�test_startProcessGroup_nowaits<
�
��
����zESupervisorNamespaceXMLRPCInterfaceTests.test_startProcessGroup_nowaitcC�4ddlm}t�}|�|�}|�|jj|jd�dS�NrrrD)rrrr1r#r:r�rrnrrr�test_startProcessGroup_badname"�

�zFSupervisorNamespaceXMLRPCInterfaceTests.test_startProcessGroup_badnamec	Cs�t�}t|dtddd�}t|dtddd�}t|d||�}dd	lm}|�dd
|j�|�dd
|j�|�|�}|�	�}ddl
m}|�|�d|j
ddd
�d|j
ddd
�g�|�|jd�|jdjd}	|�|	jd�|jdjd}
|�|
jd�dS)Nrr7r�rrrrDrr�r�rrrr�T)rrr�rr�r�r�r�r1�startAllProcessesrr:rrrGr�r�r�)rrIr
rrLr�r4r�r:rrrrr�test_startAllProcesses*sF
�
��
����
z>SupervisorNamespaceXMLRPCInterfaceTests.test_startAllProcessesc		Cs�t�}t|dtddd�}t|dtddd�}t|d||�}dd	lm}|�dd
|j�|�dd
|j�|�|�}|j	dd�}dd
l
m}|�|�d|j
ddd�d|j
ddd�g�dSr)rrr�rr�r�r�r�r1r"rr:rrrrrr�test_startAllProcesses_nowaitNs<
�
��
����zESupervisorNamespaceXMLRPCInterfaceTests.test_startAllProcesses_nowaitcCs�t�}t|dd�}ddlm}t|d|�}|�dd|j�|�|�}|�d�}|�	|�|�
|jd�|jdj
d}|�
|jd�|�
|jd�|�|j�|�
|j|j�|�	|j�|�
t|jdj
�d�|�
|jd�dS)NrD�/bin/foorr�r��stopProcessr7)rrr�r�rr�r�r1r&r�rrGr�r��backoff�delay�assertFalse�killingr�r��stop_report_called�lenr�rrr�test_stopProcessjs"


z8SupervisorNamespaceXMLRPCInterfaceTests.test_stopProcesscCs�t�}t|dt�}ddlm}t|d|�}|�dd|j�|�|�}|j	ddd�}|�
|d�|jdjd}|�
|j
d�|�|j�|�
|jd�dS)	NrDrr�r�Fr�Tr&)rrr�r�r�rr�r�r1r&rr�r��stop_calledr�r+rGr�rrr�test_stopProcess_nowait}s
z?SupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_nowaitc	s�t�}t|dd�}ddlm}t|d|�}|jdjd}|j|j|j	g��fdd�}||_
|�|�}|�d�}|�
|jd�|�|��dS)NrDr%rr�c�
��d�S�Nr��popr��Lrr�	get_state�r�z]SupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_success_in_onwait.<locals>.get_stater&)rrr�r�rr�r�r��STOPPINGr�r6r1r&rrGr�)	rrIr�r�rLr�r6r4r�rr4r�"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�}||_|�|�}|�
d�}	|�|	�|�|�|jd�dS)	Nr�rrDr%r�cr0r1r2rr4rrr6�r�zYSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_NDY_in_onwait.<locals>.get_stater&)�supervisor.httprrrr�r�rr�r�r�r7r6r1r&rrG)
rrrIr�r�rLr�r6r4r�rr4r�test_stopProcess_NDY_in_onwait�s �

zFSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_NDY_in_onwaitcCs2ddlm}t�}|�|�}|�|j|jd�dS)NrrrD)rr:rr1r#r�r&)rr:rLr4rrr�test_stopProcess_bad_name�s
�zASupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_bad_namecCsfddlm}ddlm}t�}t|dd�}t|d|�}|�dd|j�|�	|�}|�
|j|jd�dS)Nrr�rrDr%r�)
rar�rr:rrrr��EXITEDr1r#�NOT_RUNNINGr&)rr�r:rIr�rLr4rrr�test_stopProcess_not_running�s
zDSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_not_runningcCs\ddlm}t�}t|dd�}t|d|�}|�dddd��|�|�}|�|j|j	d�dS)NrrrDr%�stopcS�dS)N�unstoppablerrrrrr��r�zQSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_failed.<locals>.<lambda>)
rr:rrrr�r1r#�FAILEDr&)rr:rIr�rLr4rrr�test_stopProcess_failed�s
z?SupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_failedc
	Cst�}t|dddd�}t|dddd�}dd	lm}t|d
||�}|�dd|j�|�dd|j�|�|�}|�d
�}|�	|j
d�dd
lm}|j
}		|�}	|	|j
urTnqKddlm}
|�	|	|
jd
ddd�|
jd
ddd�g�|jd
jd}|�	|jd�|jd
jd}|�	|jd�dS)Nrr%r7�r	r�	/bin/foo2rrr�rDr��stopProcessGroupr�rr�rrrrT)rrr�r�rr�r�r1rGrrGrr�rrr:rr�r�r.�
rrIr
rr�rLr4r�r�r�r:rrrrr�test_stopProcessGroup�sH�


����z=SupervisorNamespaceXMLRPCInterfaceTests.test_stopProcessGroupc		Cs�t�}t|dtdd�}t|dtdd�}t|d||�}ddlm}|�dd	|j�|�dd	|j�|�|�}|j	dd
d�}ddl
m}|�|�dd
d|j
d�dd
d|j
d�g�dS)Nrr7rErrrDrr�r�Fr�rr)rrrr)rrr�rr�r�r�r�r1rGrr:rrrrrr�test_stopProcessGroup_nowait�s4�
����zDSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcessGroup_nowaitcCrr)rrrr1r#r:r�rGrnrrr�test_stopProcessGroup_badnamer!zESupervisorNamespaceXMLRPCInterfaceTests.test_stopProcessGroup_badnamecCr)NrFr�r�rrrrDrr�r�r
rG)rrr�rr�r�r�r�r1r&rrGrrrr�-test_stopProcess_splat_calls_stopProcessGrouprzUSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_splat_calls_stopProcessGroupc
	Cst�}t|dddd�}t|dddd�}dd	lm}t|d
||�}|�dd|j�|�dd|j�|�|�}|��}|�	|j
d�dd
lm}|j
}		|�}	|	|j
urSnqJddlm}
|�	|	|
jd
ddd�|
jd
ddd�g�|jd
jd}|�	|jd�|jd
jd}|�	|jd�dS)Nrr%r7rErrFrrr�rDr��stopAllProcessesr�rrrHT)rrr�r�rr�r�r1rNrrGrr�rrr:rr�r�r.rIrrr�test_stopAllProcessessH�

����z=SupervisorNamespaceXMLRPCInterfaceTests.test_stopAllProcessesc		Cs�t�}t|dtdd�}t|dtdd�}t|d||�}ddlm}|�dd	|j�|�dd	|j�|�|�}|j	d
d�}ddl
m}|�|�d|j
d
dd�d|j
d
dd�g�dS)Nrr7rErrrDrr�r�Fr�rrr)rrr�rr�r�r�r�r1rNrr:rrrrrr�test_stopAllProcesses_nowaitAs4�
����zDSupervisorNamespaceXMLRPCInterfaceTests.test_stopAllProcesses_nowaitcCs�t�}t|dd�}ddlm}t|d|�}|�dd|j�|�|�}|�dd�}|�	|j
d�|�	|d�|j|jj
d}|�	|jd�dS)	NrDr%rr�r�r��
signalProcessT)rrr�r�rr�r�r1rQrrGr��
group_namer��sent_signal)rrIr�r�rLr4r��prrr�%test_signalProcess_with_signal_number[s
zMSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_with_signal_numbercCs�t�}t|dd�}ddlm}t|d|�}|�dd|j�ddlm}d}||�}|�	|�}|�
d|�}	|�|jd�|�|	d	�|j
|jjd}
|�|
j|�dS)
NrDr%rr�r���
signal_number�quitrQT)rrr�r�rr�r��supervisor.datatypesrWr1rQrrGr�rRr�rS)rrIr�r�rLrW�signame�signumr4r�rTrrr�#test_signalProcess_with_signal_namejs
zKSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_with_signal_namecC�jt�}t|dd�}ddlm}ddlm}t|d|�}|�dd|j�|�	|�}|�
|jj|j
dd�dS)NrDr%rr�rr��)rrr�r�rrrr�r�r1r#r:�
BAD_SIGNALrQ�rrIr�r�rrLr4rrr�test_signalProcess_badsignal}�
�zDSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_badsignalcCr])NrDr%rr�rr�r�)rrr�r�rrrr�r�r1r#r:r>rQr`rrr�test_signalProcess_notrunning�rbzESupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_notrunningc
Cs�t�}t|dd�}ddlm}ddlm}t|d|�}|�dd|j�dd�}|j	|j
}|jd}||_|�
|�}	|�|jj|	jdd	�dS)
NrDr%rr�rr�cSrA)N�msgr)�sigrrr�signalreturn�rzgSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_signal_returns_message.<locals>.signalreturnr�)rrr�r�rrrr�r�r�rRr��signalr1r#r:rCrQ)
rrIr�r�rrLrf�pgroup�procr4rrr�)test_signalProcess_signal_returns_message�s

�zQSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_signal_returns_messagec	Cst�}t|dd�}t|dd�}ddlm}t|d||�}|�dd|j�|�dd|j�|�|�}|�d	d
�}|�	|j
d�t|t�
d�d
�}ddlm}|�	||jdddd�|jdddd�g�|jdjd}	|�	|	jd
�|jdjd}
|�	|
jd
�dS)z Test that sending foo:* works rr%rrFrr�rDr�r
r��signalProcessGroupr��keyrrrHN)rrr�r�rr�r�r1rQrrG�sorted�operator�
itemgetterrr:rr�r�rS�rrIr
rr�rLr4r�r:rrrrr�test_signalProcess_withgroup�s<�
���zDSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_withgroupc	Cst�}t|dd�}t|dd�}ddlm}t|d||�}|�dd|j�|�dd|j�|�|�}|�dd	�}|�	|j
d
�t|t�
d�d�}dd
lm}|�	||jdddd�|jdddd�g�|jdjd}	|�	|	jd	�|jdjd}
|�	|
jd	�dS)Nrr%rrFrr�rDr�r�rkrrlrrrH)rrr�r�rr�r�r1rkrrGrnrorprr:rr�r�rSrqrrr�*test_signalProcessGroup_with_signal_number�s<�
���zRSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcessGroup_with_signal_numbercCs�t�}t|dd�}ddlm}t|d|�}|�dd|j�ddlm}d}||�}|�	|�}|�
d|�}	|�|jd	�dd
l
m}
|�|	|
jdddd�g�|jdjd}|�|j|�dS)
Nrr%rr�rDr�rV�termrkrrrH)rrr�r�rr�r�rYrWr1rkrrGrr:rr�r�rS�rrIr
r�rLrWrZr[r4r�r:rrrr�(test_signalProcessGroup_with_signal_name�s*
��zPSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcessGroup_with_signal_namecCs�ddlm}t�}t|dd�}t|dd�}ddlm}t|d||�}|�dd	|j�|�dd	|j�|�	|�}|�
|jj|j
d
d�dS)Nrrrr%rrFr�rDr��barr�)rrrrr�r�rr�r�r1r#r:r�rk)rrrIr
rr�rLr4rrr�#test_signalProcessGroup_nosuchgroups�

�zKSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcessGroup_nosuchgroupc	Cst�}t|dd�}t|dd�}ddlm}t|d||�}|�dd|j�|�dd|j�|�|�}|�d	�}|�	|j
d
�t|t�
d�d�}dd
lm}|�	||jdddd�|jdddd�g�|jdjd}	|�	|	jd	�|jdjd}
|�	|
jd	�dS)Nrr%rrFrr�rDr�r��signalAllProcessesrrlrrrH)rrr�r�rr�r�r1ryrrGrnrorprr:rr�r�rSrqrrr�*test_signalAllProcesses_with_signal_numbers<�

���zRSupervisorNamespaceXMLRPCInterfaceTests.test_signalAllProcesses_with_signal_numbercCs�t�}t|dd�}ddlm}t|d|�}|�dd|j�ddlm}d}||�}|�	|�}|�
|�}	|�|jd	�dd
l
m}
|�|	|
jdddd�g�|jdjd}|�|j|�dS)
Nrr%rr�rDr�rV�hupryrrrH)rrr�r�rr�r�rYrWr1ryrrGrr:rr�r�rSrurrr�(test_signalAllProcesses_with_signal_name4s*

��zPSupervisorNamespaceXMLRPCInterfaceTests.test_signalAllProcesses_with_signal_namecCs�t�}t|d�}t|dtttd�}t|dtddd�}t|d||gd�}dt|�i|_|g|j_	|�
|�}|��}|�|ddd	�|�|dd
d�|�|ddd
�|�|ddd
�|�|ddd�|�|ddd�|�|ddd�|�|ddd�|�|ddd
�|�|ddd�|�|ddd�|�|ddd
�|�|ddd�|�|ddd
�|�|ddd�|�|ddd�|�|ddd
�|�|ddd�|�|dd d!�|�|dd"d�|�|dd#d�|�|ddd�|�|dd$d	�|�|dd%d�|�|dd&d�d'|dd(v�s=J�|�|d)dd	�|�|d)d
d�|�|d)dd
�|�|d)dd
�|�|d)dd�|�|d)dd�|�|d)dd�|�|d)dd�|�|d)dd
�|�|d)dd�|�|d)dd�|�|d)dd
�|�|d)dd�|�|d)dd
�|�|d)dd�|�|d)dd�|�|d)dd
�|�|d)dd*�|�|d)d d!�|�|d)d"d�|�|d)d#d�|�|d)dd�|�|d)d$d	�|�|d)d%d*�|�|d)d&d�d'|dd(v�sBJ�dS)+NrDr)�stdout_logfile�stderr_logfilerr�r�rr�T�stopwaitsecsr��stdout_events_enabledF�stderr_events_enabledr�stdout_capture_maxbytesr�
stopsignal��
stderr_syslog�stdout_logfile_maxbytes�
group_prioi��killasgroup�process_prio�
stdout_syslog�stderr_logfile_maxbytesr��redirect_stderrr}�auto�	exitcodes)r�stderr_capture_maxbytes�startretries�inuser~�stdout_logfile_backupsztest_rpcinterfaces.py�commandr7�none)
rrrr�r
rrr�rIr�r1�getAllConfigInfor)rrIrLr
rr�r4�configsrrr�test_getAllConfigInfoMs�
��

z=SupervisorNamespaceXMLRPCInterfaceTests.test_getAllConfigInfoc
Cs�t�}t|d�}t|dt�}t|dt�}t|d||gd�}dt|�i|_|g|j_|�	|�}t
d�g}z
ddlm}|�
|�Wn	tyIYnw|D]}	|��D]}
|
��D]
\}}|�t||	�|�qXqRqLdS)NrDrrr�r�r)�Enum)rrrr�rrr�rIr�r1�type�enumr��append�ImportErrorr��itemsr)�
isinstance)
rrIrLr
rr�r4�unmarshallablesr��typ�config�k�vrrr�>test_getAllConfigInfo_filters_types_not_compatible_with_xmlrpc�s,



����zfSupervisorNamespaceXMLRPCInterfaceTests.test_getAllConfigInfo_filters_types_not_compatible_with_xmlrpccCs2t�}|�|�}td}td}ddlm}dd|j||td�}|�|�}|�|d�dd	|j||td
d�}|�|�}|�|d
�dd	|j||tdd�}	|�|	�}|�|d
�dd|j	||tdd�}
|�|
�}ddl
m
}|t�|�dd��}|�||�
t��dd|j	d|tdd�}
|�|
�}|�|d�dS)Nr�r7rr��running�rr�r��startr@�nowzpid 1, uptime 0:01:40�fatalr�Hosed)rr�r�r�r@r�r��z unknown error (try "tail fatal")�stopped���datetime�zNot started)rr1r	r�r�r��_interpretProcessInfor�FATALr�r��time�	localtime�strftimer
)rrLr4r�r@r�r�rr��fatal2r�r��stoptime�stopped2rrr�test__interpretProcessInfo�sp
�
�
�
�
�
zBSupervisorNamespaceXMLRPCInterfaceTests.test__interpretProcessInfocCsNt�}|�|�}ddlm}dd|jtddtd�}|�|�}|�|d�dS)Nrr�r��*r�r�zpid 42, uptime 0:00:00)rr1r�r�r�r	r�r)rrLr4r�r�rrrr�8test__interpretProcessInfo_doesnt_report_negative_uptime�s
�
z`SupervisorNamespaceXMLRPCInterfaceTests.test__interpretProcessInfo_doesnt_report_negative_uptimec
CsTddlm}t�}t|dddd�}t|�}d|_d|_d	|_t|dd
�}t	|�}d|i|_
td|id�}|�|�}|�
d�}	|�|jd�|�|	d
d�|�|	dd�|�|	dd�|�|	dd�|�|	dd�|�|	dd�|�|	dd	�|�|	d|j�|�|	dd�|�|	dd�|�|	dd�|�|	d�d��dS)Nrr�rDr%z/tmp/fleeb.bar�r}�or���r�r��getProcessInforsr}r~r�rr�r�r@r�r_r��
exitstatusr�r�pid 111)r�r�rrrr��	laststart�laststoprrr�rr1r�rrGr�r��
startswith)
rr�rIr�r��
pgroup_configrhrLr4r�rrr�test_getProcessInfo�s8�


z;SupervisorNamespaceXMLRPCInterfaceTests.test_getProcessInfoc	Cs�t�}t|dddd�}t|�}d|_d|_d|_t|dd�}t|�}d|i|_t	d|id�}|�
|�}|�d�}|�|d	d
�|�|dd
�dS)NrDr%r�r�r�r�r�r�rsr�r})
rrrr�r�r�rrr�rr1r�r�	rrIr�r�r�rhrLr4r�rrr� test_getProcessInfo_logfile_NONEs �


zHSupervisorNamespaceXMLRPCInterfaceTests.test_getProcessInfo_logfile_NONEcCsrddlm}t�}t|dd�}t|d|�}|�dd|j�|�|�}|�d�}|�	|dd�|�	|dd	�dS)
Nrr�rDr%r�r_�UNKNOWNrr�)
rar�rrrr�r�r1r�r)rr�rIr�rLr4r�rrr�!test_getProcessInfo_unknown_state(s

zISupervisorNamespaceXMLRPCInterfaceTests.test_getProcessInfo_unknown_statecCr)Nrr�nonexistent)rrrr1r#r:r�r�rnrrr�-test_getProcessInfo_bad_name_when_bad_process3r!zUSupervisorNamespaceXMLRPCInterfaceTests.test_getProcessInfo_bad_name_when_bad_processcCsLddlm}t�}t|dd�}t|d|�}|�|�}|�|jj|j	d�dS)NrrrDr%zfoo:)
rrrrrr1r#r:r�r�r�rrr�,test_getProcessInfo_bad_name_when_no_process:s

�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�}|�
|�}�fd	d
�|_|�d�}|�|d�j�|�|d�j�|�|d
�j�dS)Nr��	xmlrpclibrDr%r�r7r�r�cst�jd�S�Nr7)�float�MAXINTrr�rrr�PszuSupervisorNamespaceXMLRPCInterfaceTests.test_getProcessInfo_caps_timestamps_exceeding_xmlrpc_maxint.<locals>.<lambda>r�r@r�)�supervisor.compatr�rrrr�r�r�r�rrr�rr1�_nowr�rr�rr�r�;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||�}|�dd
d�|�ddd�|�ddd�|�dd|j�|�dd
d�|�ddd�|�ddd�|�dd|j�|�|�}|�	�}|�
|jd�|�
t|�d
�|d}|�
|dd�|�
|dd�|�
|dd�|�
|dd�|�
|d
d�|�
|dd�|�
|dd�|�
|d|j�|�
|dd�|�
|dd�|�
|d d�|�
|d!d�|�
|d"�d#��|d}	|jdjd}
|�
|	dd�|�
|	dd�|�
|dd�|�
|	dd�|�
|	d
d�|�
|	d|
j�|�
|	dd�|�
|	d|j�|�
|	dd$�|�
|	dd�|�
|	d d�|�
|d!d�dd%lm}|t�|
j�dd&��}|�
|	d"|�t��dS)'Nrr�r�
/bin/process1r7�/tmp/process1.log�r	r}rz
/bin/process2rz/tmp/process2.log�gnamer�r�r�r�r�r�r��r�rsr}r~r�rr�r@r_r�r�r�rrr�r�r�r�)r�r�rrrr�r�r�r1�getAllProcessInforrGr,r�r�r�r�r�r�r�r�r�r
)
rr�rI�p1config�p2configrLr4�info�p1info�p2inforr��	starttimerrr�test_getAllProcessInfoVst���

�z>SupervisorNamespaceXMLRPCInterfaceTests.test_getAllProcessInfocC�Xddlm}t�}t|ddddd�}t|d|�}|�|�}|j|jj|j	dddd�dS)	Nrrrr�r7r�r�rj)
rrrrrr1r#r:rm�readProcessStdoutLogr�rrr�$test_readProcessStdoutLog_unreadable��
�


�zLSupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStdoutLog_unreadablec		C��ddlm}t�}t|ddddd�}t|d|�}|�|�}|jdjd}|jj	}z<t
|d��
}|�d	�Wd�n1s?wY|j|j
j|jdd
dd�|j|j
j|jdd
d
d�Wt�|�dSt�|�w)Nrrrr�r7r�r�rprqrrrj)rrrrrr1r�r�r�r}rtrur#r:rvr�rwrx�	rrrIr�rLr4r�rsryrrr�!test_readProcessStdoutLog_badargs��,
�
�
�
�zISupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStdoutLog_badargscC�Xddlm}t�}t|ddddd�}t|d|�}|�|�}|j|jj|j	d	ddd
�dS�Nrrrr�r7r�r�rDr
rj)
rrrrrr1r#r:r�r�r�rrr�-test_readProcessStdoutLog_bad_name_no_process�r�zUSupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStdoutLog_bad_name_no_processc		C�t�}t|dddd�}t|d|�}|�|�}|jdjd}|jj}zft|d��}|�	d�|�	d�Wd�n1s=wY|j
dddd	�}|�|jd
�|�|d�|j
dddd	�}|�|d�|j
dddd	�}|�|d�|j
dd
dd	�}|�|d�Wt
�|�dSt
�|�w)NrDr%�
/tmp/fooooooor�rprqr{rrjr�r|r}r~r)rrrr1r�r�r�r}rtrur�rrGrwrx�	rrIr�rLr4r�rsryr�rrr�test_readProcessStdoutLog��.�

�zASupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStdoutLogcC�<t�}t|dd�}t|d|�}|�|�}|�|j|j�dS�NrDr%)rrrr1r�readProcessLogr��rrIr�rLr4rrr�1test_readProcessLogAliasedTo_readProcessStdoutLog��
�zYSupervisorNamespaceXMLRPCInterfaceTests.test_readProcessLogAliasedTo_readProcessStdoutLogcCr�)	Nrrrr�r7r��r	r~rj)
rrrrrr1r#r:rm�readProcessStderrLogr�rrr�$test_readProcessStderrLog_unreadable�r�zLSupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStderrLog_unreadablec		Cr�)Nrrrr�r7r�r�rprqrrrj)rrrrrr1r�r�r�r~rtrur#r:rvr�rwrxr�rrr�!test_readProcessStderrLog_badargs�r�zISupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStderrLog_badargscCr�r�)
rrrrrr1r#r:r�r�r�rrr�-test_readProcessStderrLog_bad_name_no_processr�zUSupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStderrLog_bad_name_no_processc		Cr�)NrDr%r��r~rprqr{rrjr�r|r}r~r)rrrr1r�r�r�r~rtrur�rrGrwrxr�rrr�test_readProcessStderrLogr�zASupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStderrLogcC�8ddlm}t�}|�|�}|�|jj|jddd�dS�Nrrr�r�)rrrr1r#r:r��tailProcessStdoutLogrnrrr�"test_tailProcessStdoutLog_bad_name(�


�zJSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStdoutLog_bad_namecC�Vddlm}t�}t|ddddd�}t|d|�}|�|�}|�|jj|j	d	dd
�dS�Nrrrr�r7r�r�rDr
r�)
rrrrrr1r#r:r�rr�rrr�-test_tailProcessStdoutLog_bad_name_no_process/�
�


�zUSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStdoutLog_bad_name_no_processc	C��ddlm}t�}t|dddd�}t|d|�}|�|�}|jdjd}|jj	}zJt
|d��
}|�|�Wd�n1s>wY|jddt
|�d�\}	}
}|�|jd	�|�|d
�|�|
t
|��|�|	|�Wt�|�dSt�|�w)Nr��lettersrDr%r�r�rprjrF�r�r
rrrr1r�r�r�r}rtrurr,rrGrwrx�rr
rIr�rLr4r�rsryr�rk�overflowrrr�test_tailProcessStdoutLog_all9�,�
��zESupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStdoutLog_allc	C�Fddlm}t�}t|dddd�}t|d|�}|�|�}|jdjd}|jj	}ztt
|d��
}|�|�Wd�n1s>wY|jdt
|�dd	�\}	}
}|�|jd
�|�|d�|�|
t
|��|�|	d�|jdt
|�d
dd	�\}	}
}|�|jd
�|�|d�|�|
t
|��|�|	d�Wt�|�dSt�|�w)NrrrDr%r�r�rpr�rjrFr��rrrrr�test_tailProcessStdoutLog_noneQ�<�
��
�zFSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStdoutLog_nonec	C�ddlm}t�}t|dddd�}t|d|�}|�|�}|jdjd}|jj	}zLt
|d��
}|�|�Wd�n1s>wY|jdddd	�\}	}
}|�
|jd
�|�
|d�|�
|
t|��|�
|	|dd��Wt�|�dSt�|�w)
NrrrDr%r�r�rprrjrT���)r�r
rrrr1r�r�r�r}rtrurrrGr,rwrxrrrr�"test_tailProcessStdoutLog_overflows�*�
��zJSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStdoutLog_overflowcC�xt�}t|dddd�}t|d|�}|�|�}|jdddd�\}}}|�|jd�|�|d	�|�|d�|�|d
�dS)NrDr%r�r�rr�rjrFr�)rrrr1rrrG�rrIr�rLr4r�rkrrrr�$test_tailProcessStdoutLog_unreadable���
�zLSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStdoutLog_unreadablecCr�r�)rrrr1r�tailProcessLogrr�rrr�1test_tailProcessLogAliasedTo_tailProcessStdoutLog�r�zYSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessLogAliasedTo_tailProcessStdoutLogcCrr)rrrr1r#r:r��tailProcessStderrLogrnrrr�"test_tailProcessStderrLog_bad_name�rzJSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStderrLog_bad_namecCrr)
rrrrrr1r#r:r�r!r�rrr�-test_tailProcessStderrLog_bad_name_no_process�r
zUSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStderrLog_bad_name_no_processc	Cr)NrrrDr%r�rrprjr!F�r�r
rrrr1r�r�r�r~rtrur!r,rrGrwrxrrrr�test_tailProcessStderrLog_all�rzESupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStderrLog_allc	Cr)NrrrDr%r�rrpr�rjr!Fr�rr$rrrr�test_tailProcessStderrLog_none�rzFSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStderrLog_nonec	Cr)
NrrrDr%r�rrprrjr!Tr)r�r
rrrr1r�r�r�r~rtrur!rrGr,rwrxrrrr�"test_tailProcessStderrLog_overflow�rzJSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStderrLog_overflowcCr)NrDr%r�rrr�rjr!Fr�)rrrr1r!rrGrrrr�$test_tailProcessStderrLog_unreadablerzLSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStderrLog_unreadablecC�hddlm}t�}t|dd�}t|�}td�}d|i|_td|id�}|�|�}|�	|j
j|jd�dS)NrrrDr��badgroup�
rrrrrrr�rr1r#r:r��clearProcessLogs�rrrIr�r�rhrLr4rrr�'test_clearProcessLogs_bad_name_no_group�


�zOSupervisorNamespaceXMLRPCInterfaceTests.test_clearProcessLogs_bad_name_no_groupcCr))NrrrDr�r
r+r-rrr�)test_clearProcessLogs_bad_name_no_processr/zQSupervisorNamespaceXMLRPCInterfaceTests.test_clearProcessLogs_bad_name_no_processcCs`t�}t|dd�}t|�}td�}d|i|_td|id�}|�|�}|�d�|�|j	d�dS)NrDr�T)
rrrrr�rr1r,r�logsremoved)rrIr�r�rhrLr4rrr�test_clearProcessLogs,s


z=SupervisorNamespaceXMLRPCInterfaceTests.test_clearProcessLogscCslddlm}t�}t|dd�}t|�}td�}d|i|_d|_td|id�}|�	|�}|�
|j|jd�dS)NrrrDTr�)
rrrrrrr��error_at_clearrr1r�rr,r-rrr�test_clearProcessLogs_failed7s

zDSupervisorNamespaceXMLRPCInterfaceTests.test_clearProcessLogs_failedcCr�r�)rrrr1r�clearProcessLogr,r�rrr�.test_clearProcessLogAliasedTo_clearProcessLogsCr�zVSupervisorNamespaceXMLRPCInterfaceTests.test_clearProcessLogAliasedTo_clearProcessLogscCs�t�}t|dddd�}t|dddd�}t|d||�}|�|�}|��}|�|�}dd	lm}|�|ddd|jj	d
d��|�|ddd|jj	d
d��|j
djd}	|�|	jd�|j
djd}
|�|
jd�dS)
NrrDr7rErrwrrrr�rrrrT)
rrrr1�clearAllProcessLogsrrrr:rr�r�r1)rrIr
rrLr4r��resultsrrrrrr�test_clearAllProcessLogsKs:�

��
��z@SupervisorNamespaceXMLRPCInterfaceTests.test_clearAllProcessLogscCs�t�}t|dddd�}t|dddd�}t|d||�}|�ddd	�|�|�}|��}|�|�}|jdjd}|�|j	d
�|jdjd}	|�|	j	d	�|�t
|�d�ddlm}
|�|ddd|
j
jd
d��|�|ddd|
j
jdd��dS)NrrDr7rErrwrr3TFrrzFAILED: foo:process1r7r)rrrr�r1r8r�r�rr1r,rrr:rCr)rrIr
rrLr4r�r9rrrrrr�!test_clearAllProcessLogs_onefailses>�

��
��zISupervisorNamespaceXMLRPCInterfaceTests.test_clearAllProcessLogs_onefailscCs<t�}|�|ji�|�|�}|��}|�}|�|g�dSr)rrr�r1r8)rrLr4r�r9rrr�%test_clearAllProcessLogs_no_processes�s
zMSupervisorNamespaceXMLRPCInterfaceTests.test_clearAllProcessLogs_no_processescCsRt�}t|dd�}t|d|�}|�|�}d}ddlm}|�|jj|j	d|�dS)NrrDr�rr)
rrrr1rrr#r:r=�sendProcessStdin)rrIr
rLr4�thing_not_charsrrrr�<test_sendProcessStdin_raises_incorrect_params_when_not_chars�s

�zdSupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_raises_incorrect_params_when_not_charscCs6t�}|�|�}ddlm}|�|jj|jdd�dS)Nrrr��chars for stdin)rr1rrr#r:r�r=)rrLr4rrrr�6test_sendProcessStdin_raises_bad_name_when_bad_process�s

�z^SupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_raises_bad_name_when_bad_processcCs@t�}t|d�}|�|�}ddlm}|�|jj|jdd�dS)NrDrrr
r@)	rrr1rrr#r:r�r=)rrIrLr4rrrr�5test_sendProcessStdin_raises_bad_name_when_no_process�s


�z]SupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_raises_bad_name_when_no_processcCs\t�}t|dd�}t|d|�}|�ddd�|�|�}ddlm}|�|jj	|j
dd�dS)NrrDr�rrr@�rrrr�r1rrr#r:r>r=�rrIr
rLr4rrrr�=test_sendProcessStdin_raises_not_running_when_not_process_pid�s

�zeSupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_raises_not_running_when_not_process_pidcCsjt�}t|dd�}t|d|�}|�ddd�|�ddd�|�|�}ddlm}|�|jj	|j
dd	�dS)
NrrDr�r�r*Trrr@rCrDrrr�5test_sendProcessStdin_raises_not_running_when_killing�s

�z]SupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_raises_not_running_when_killingcCszt�}t|dd�}t|d|�}|�ddd�|�ddd�|�ddtj�|�|�}dd	lm}|�	|j
j|jdd
�dS)NrrDr�r�r*F�write_errorrrr@)
rrrr��errno�EPIPEr1rrr#r:rmr=rDrrr�<test_sendProcessStdin_raises_no_file_when_write_raises_epipe�s

�zdSupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_raises_no_file_when_write_raises_epipecCsjt�}t|dd�}t|d|�}|�ddd�|�ddd�|�ddtj�|�|�}|�t|j	dd�dS)	NrrDr�r�r*FrGr@)
rrrr�rH�EINTRr1r��OSErrorr=)rrIr
rLr4rrr�-test_sendProcessStdin_reraises_other_oserrors�s
�zUSupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_reraises_other_oserrorscCs|t�}t|dd�}t|d|�}|�ddd�|�|�}d}|�|�d|��|�d|j�|j	dj
d}|�|j|�dS)NrrDr�r�schars for stdinr=)rrrr�r1r�r=rrGr�r��stdin_buffer)rrIr
rLr4�charsrrrr�3test_sendProcessStdin_writes_chars_and_returns_true�s
z[SupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_writes_chars_and_returns_truecCsht�}t|dd�}t|d|�}|�ddd�|�|�}|�dtd��|jdjd}|�	|j
d�dS)NrrDr�r�sfií)rrrr�r1r=rr�r�rrN)rrIr
rLr4rrrr�-test_sendProcessStdin_unicode_encoded_to_utf8�s
zUSupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_unicode_encoded_to_utf8c
s�t�}t|�}|�|�}ddlm}g��fdd�}z|j|fg|jdd�<|�dd�}Wg|jdd�<|��ng|jdd�<|��w|�	|�|�
t��d��d}|�
|jd�|�
|j
d�dS)Nr��eventsc���|�dSr�r���eventr4rrr���zgSupervisorNamespaceXMLRPCInterfaceTests.test_sendRemoteCommEvent_notifies_subscribers.<locals>.callbackrDrwr7)rrr1rrS�RemoteCommunicationEvent�	callbacks�sendRemoteCommEvent�clearr�rr,r�r��rrIrLr4rSr�r�rWrr4r�-test_sendRemoteCommEvent_notifies_subscribers�s$

�

zUSupervisorNamespaceXMLRPCInterfaceTests.test_sendRemoteCommEvent_notifies_subscribersc
s�t�}t|�}|�|�}ddlm}g��fdd�}z"|j|fg|jdd�<|�td�td��}Wg|jdd�<|�	�ng|jdd�<|�	�w|�
|�|�t��d��d}t
rl|�|jd�|�|jd	�dS|�|jd�|�|jd�dS)
NrrRcrTrrUrVr4rrr�	rXzjSupervisorNamespaceXMLRPCInterfaceTests.test_sendRemoteCommEvent_unicode_encoded_to_utf8.<locals>.callbacku	fií onceu
fií twicer7ufií onceufií twice)rrr1rrSrYrZr[rr\r�rr,rr�r�r]rr4r�0test_sendRemoteCommEvent_unicode_encoded_to_utf8s0
�
�

zXSupervisorNamespaceXMLRPCInterfaceTests.test_sendRemoteCommEvent_unicode_encoded_to_utf8N)xr$r%r&r,r1rMrQrUrYr\rcrfrirorzr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr r#r$r-r/r8r;r<r?rDrJrKrLrMrOrPrUr\rarcrjrrrsrvrxrzr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr	rrrrr r"r#r%r&r'r(r.r0r2r4r6r:r;r<r?rArBrErFrJrMrPrQr^r_rrrrr?Bs�	

		
"$
	$$# !H>
	B
"
"

	

r?c@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�#SystemNamespaceXMLRPCInterfaceTestscCr(r))rr�SystemNamespaceRPCInterfacer+rrrr,"r-z3SystemNamespaceXMLRPCInterfaceTests._getTargetClasscCs.ddlm}t�}|�|�}|��d|fg�S)Nrr@r)rrArrBr,)rrArLrrrrr1&s
�z,SystemNamespaceXMLRPCInterfaceTests._makeOnecCs,|��}|�|jd�|�|jd�dS)Nr�system)r1r��
namespacesr3rrrr5/sz-SystemNamespaceXMLRPCInterfaceTests.test_ctorcCs@|��}|��}|��t|�����}|��|�||�dSr)r1�listMethods�sortr��_listMethodsr�r)rr4�methodsr�rrr�test_listMethods4sz4SystemNamespaceXMLRPCInterfaceTests.test_listMethodscCsHddlm}|��}|�|jj|jdg�|�d�}|�|ddg�dS)Nrr�foo.barzsystem.methodSignature�array�string)rrr1r#r:�SIGNATURE_UNSUPPORTED�methodSignaturer)rrr4r�rrr�test_methodSignature<�
�
z8SystemNamespaceXMLRPCInterfaceTests.test_methodSignaturec	Cs8ddlm}gd�}|��}|��}|��D�]�}z|�|�Wn|jy.td|��w|�dd�\}}|j	|}t
||�}	z|	j}
WntyR|	j
}
Ynw|
jd|
j�}|�t|	j��}g}
g}g}g}g}g}g}g}|D]Y}|ddkr�|
�|d�|�|d�|�|d	�|�|d
�qu|ddkr�|�|d�|�|d�|�|d	�|�|d
�qu|ddur�td|d||f��qut|�t|�kr�td
t|�t|�|f��|
D]}|�t|�tk|t|�||f�q�|D]
}|�||v|�q�tt|��D]}||||k�r'd||||||f}t|���q|D]}|�t|�td�k|��q+t|�dk�rHtd|��|D]}|�t|�tk|t|�|f��qJ|D]}|�||v|��q_|D]}|�t|�td�k|t|�|f��qm|D]}|�t|�td�k|t|�|f��q�qdS)Nrr)	�int�doublerk�booleanzdateTime.iso8601�base64�binaryrj�structz=methodSignature for %s raises RPCError (missing @return doc?)�.r7�paramrr���returnz%unknown tag type %s for %s, parsed %sz6Incorrect documentation (%s args, %s doc params) in %sz Name wrong: (%s vs. %s in %s)
%sr�z'Duplicate @return values in docs for %s)rrr1rfr�rmrr�splitrc�getattr�	func_code�	Exception�__code__�co_varnames�co_argcount�gettags�str�__doc__r�r,r�r�rp�range)rr�	_RPCTYPESr4rgr��ns_name�method_name�	namespace�methr�argnames�parsed�plines�ptypes�pnames�ptexts�rlines�rtypes�rnames�rtexts�thing�docline�doctype�xrd�doctext�docnamerrr�test_allMethodDocsEs���



���������
�
�
���z6SystemNamespaceXMLRPCInterfaceTests.test_allMethodDocscCsR|��}|�ddgd�dgd�g�}|�|d|�d��|�|d|���dS)N�system.methodHelp��
methodName�paramszsystem.listMethodsrr7)r1�	multicallr�
methodHelprd)rr4r9rrr�test_multicall_simplevals�s
�z=SystemNamespaceXMLRPCInterfaceTests.test_multicall_simplevalscCsVddlm}|��}|�dgd�g�}|�|jjd�}|j|jd�}|�	||g�dS)Nrrzsystem.multicallr�z$Recursive system.multicall forbidden)�	faultCode�faultString)
rrr1r�rr:r=r�textr)rrr4r9�e�recursion_faultrrr�test_multicall_recursion_guard�s�
�zBSystemNamespaceXMLRPCInterfaceTests.test_multicall_recursion_guardcCsXddlm}|��}|�ddig�}|j}||jur"|�}||jus|�|dg�dS)Nrr�r�zsupervisor.stopAllProcesses)rr�r1r�rr)rr�r4r�r9rrr�test_multicall_nested_callback�s�

�zBSystemNamespaceXMLRPCInterfaceTests.test_multicall_nested_callbackcCsHddlm}|��}|�|jj|jdg�|�d�}|�||jj�dS)Nrrrir�)	rrr1r#r:rlr�rr�)rrr4�helprrr�test_methodHelp�roz3SystemNamespaceXMLRPCInterfaceTests.test_methodHelpN)
r$r%r&r,r1r5rhrnr�r�r�r�r�rrrrr`!s		a	
r`c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�Test_make_allfunccKs ddlm}||||fi|��S)Nr)�make_allfunc)�supervisor.rpcinterfacer�)rr��	predicate�func�extra_kwargsr�rrr�_callFUT�szTest_make_allfunc._callFUTc	s|ddlm��fdd�}t�}t|dd�}t|�}t|�}dd�}|�||fg||�}|�}|�|d	dd�jj	d
�g�dS)Nrrc����jj��r�rr:rC�rr!rrr�cb�rXz7Test_make_allfunc.test_rpcerror_nocallbacks.<locals>.cbrrDcSrAr�r�rirrr�pred�rz9Test_make_allfunc.test_rpcerror_nocallbacks.<locals>.predrC)rrrr)
rrrrrrr�rr:rC�	rr�rIr
rirr��afr�rrr�test_rpcerror_nocallbacks�s ��z+Test_make_allfunc.test_rpcerror_nocallbacksc	Cshdd�}t�}t|dd�}t|�}t|�}dd�}|�||fg||�}|�}|�|ddddd	�g�dS)
Nc[sdd�S)NcSrAr�rrrrrr��r�zTTest_make_allfunc.test_func_callback_normal_return_val.<locals>.cb.<locals>.<lambda>rr�rrrr��r�zBTest_make_allfunc.test_func_callback_normal_return_val.<locals>.cbrrDcSrAr�rr�rrrr��rzDTest_make_allfunc.test_func_callback_normal_return_val.<locals>.predr�P)rrrr)rrrrr�rr�rrr�$test_func_callback_normal_return_val�s��z6Test_make_allfunc.test_func_callback_normal_return_valc	sxddlm��fdd�}t�}t|dd�}t|�}t|�}dd�}|�||fg||�}|�}|�|d	dd
dd�g�dS)Nrrc��fdd�}|S)Ncr�rr�rrrr�inner�rXzOTest_make_allfunc.test_func_callback_raises_RPCError.<locals>.cb.<locals>.innerr�rr!r�rrrr���z@Test_make_allfunc.test_func_callback_raises_RPCError.<locals>.cbrrDcSrAr�rr�rrrr�	rzBTest_make_allfunc.test_func_callback_raises_RPCError.<locals>.predrC�)rrrr)rrrrrrr�rr�rrr�"test_func_callback_raises_RPCError�s"��z4Test_make_allfunc.test_func_callback_raises_RPCErrorc	slddlm��fdd�}t�}t|dd�}t|�}t|�}dd�}|�||fg||�}|�}|�|��dS)	Nrr9cr�)Ncr�rrrr9rrr�	rzTTest_make_allfunc.test_func_callback_returns_NOT_DONE_YET.<locals>.cb.<locals>.innerrr�r9rrr�	r�zETest_make_allfunc.test_func_callback_returns_NOT_DONE_YET.<locals>.cbrrDcSrAr�rr�rrrr�	rzGTest_make_allfunc.test_func_callback_returns_NOT_DONE_YET.<locals>.pred)r:rrrrrr�rr�rr9r�'test_func_callback_returns_NOT_DONE_YET
	s�z9Test_make_allfunc.test_func_callback_returns_NOT_DONE_YETN)r$r%r&r�r�r�r�r�rrrrr��sr�c@seZdZdd�Zdd�ZdS)�Test_make_main_rpcinterfacecCsddlm}||�S)Nr)�make_main_rpcinterface)r�r�)rrLr�rrrr�!	sz$Test_make_main_rpcinterface._callFUTcCs|�d�}|�|jjd�dS)NrB)r�r�	__class__r$)rr"rrr�test_it%	s

�z#Test_make_main_rpcinterface.test_itN)r$r%r&r�r�rrrrr� 	sr�c@seZdZdd�ZdS)r9cCrA)Nr8rrrrr�hello/	rzDummyRPCInterface.helloN)r$r%r&r�rrrrr9.	sr9cCst�tjt�Sr)�unittest�
findTestCases�sys�modulesr$rrrr�
test_suite2	sr��__main__)�defaultTest) r�r�rorwr�rH�supervisor.tests.baserrrrrrrr	r
r�rrrYr
�TestCaserr'r?r`r�r�r9r�r$�mainrrrr�<module>sXn.R�