o
    þâfÄŸ ã                   @   sP  d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dlm
Z
 d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZ d dlmZ G dd„ de jƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ de jƒZG dd„ de jƒZG dd„ dƒZdd„ Zedkr¦e jdd dS dS )é    N)ÚDummyOptions)ÚDummySupervisor)ÚDummyProcess)ÚDummyPConfig)ÚDummyPGroupConfig)ÚDummyProcessGroup)ÚPopulatedDummySupervisor)Ú_NOW)Ú_TIMEFORMAT)Ú	as_stringÚPY2)Ú	Automaticc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestBasec                 C   ó   d S ©N© ©Úselfr   r   úV/var/www/html/venv/lib/python3.10/site-packages/supervisor/tests/test_rpcinterfaces.pyÚsetUp   ó   zTestBase.setUpc                 C   r   r   r   r   r   r   r   ÚtearDown   r   zTestBase.tearDownc              
   O   s\   ddl m} z||i |¤Ž W tdƒ‚ |jy- } z|  |j|¡ W Y d }~d S d }~ww )Nr   ©ÚxmlrpczDidn't raise)Ú
supervisorr   ÚRPCErrorÚassertEqualÚcodeÚAssertionError)r   r   ÚcallableÚargsÚkwr   Úinstr   r   r   Ú_assertRPCError   s   ý€ÿzTestBase._assertRPCErrorN)Ú__name__Ú
__module__Ú__qualname__r   r   r#   r   r   r   r   r      s    r   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚMainXMLRPCInterfaceTestsc                 C   ó   ddl m} |jS ©Nr   r   )r   r   ÚRootRPCInterface©r   r   r   r   r   Ú_getTargetClass(   ó   z(MainXMLRPCInterfaceTests._getTargetClassc                 O   ó   |   ¡ |i |¤ŽS r   ©r,   ©r   r    r!   r   r   r   Ú_makeOne,   ó   z!MainXMLRPCInterfaceTests._makeOnec                 C   s   |   dg¡}|  |jd ¡ d S )N)r   N)r1   r   r   ©r   Ú	interfacer   r   r   Ú	test_ctor/   s   z"MainXMLRPCInterfaceTests.test_ctorc                 C   s†   t ƒ }|  d|fg¡}ddlm} |  |jj|j|dg ¡ |  |jj|j|dg ¡ |  |jj|j|ddg¡ |  	| |dg ¡d¡ d S )	NÚdummyr   r   znotthere.hellozsupervisor._readFilezdummy.helloé   úHello!)
ÚDummyRPCInterfacer1   r   r   r#   ÚFaultsÚUNKNOWN_METHODÚtraverseÚINCORRECT_PARAMETERSr   )r   r6   r4   r   r   r   r   Útest_traverse3   s&   

ÿ
þ
þÿÿz&MainXMLRPCInterfaceTests.test_traverseN)r$   r%   r&   r,   r1   r5   r>   r   r   r   r   r'   &   s
    r'   c                   @   sÌ  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;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~„ ZAdd€„ ZBdd‚„ ZCdƒd„„ ZDd…d†„ ZEd‡dˆ„ ZFd‰dŠ„ ZGd‹dŒ„ ZHddŽ„ ZIdd„ ZJd‘d’„ ZKd“d”„ ZLd•d–„ ZMd—d˜„ ZNd™dš„ ZOd›dœ„ ZPddž„ 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ïdð„ ZzdñS )òÚ'SupervisorNamespaceXMLRPCInterfaceTestsc                 C   r(   )Nr   ©Úrpcinterface)r   rA   ÚSupervisorNamespaceRPCInterface)r   rA   r   r   r   r,   C   r-   z7SupervisorNamespaceXMLRPCInterfaceTests._getTargetClassc                 O   r.   r   r/   r0   r   r   r   r1   G   r2   z0SupervisorNamespaceXMLRPCInterfaceTests._makeOnec                 C   sb   ddl m} ddlm} tƒ }|  |¡}| d¡ |  |jd¡ |j	|j
_|  |jj|jd¡ d S )Nr   r   )ÚSupervisorStatesÚfoo)r   r   Úsupervisor.supervisordrC   r   r1   Ú_updater   Úupdate_textÚSHUTDOWNÚoptionsÚmoodr#   r:   ÚSHUTDOWN_STATE)r   r   rC   Úsupervisordr4   r   r   r   Útest_updateJ   s   


ÿz3SupervisorNamespaceXMLRPCInterfaceTests.test_updatec                 C   sD   ddl m} tƒ }|  |¡}| ¡ }|  ||j¡ |  |jd¡ d S )Nr   r@   ÚgetAPIVersion)r   rA   r   r1   rN   r   ÚAPI_VERSIONrG   )r   rA   rL   r4   Úversionr   r   r   Útest_getAPIVersionU   s   
z:SupervisorNamespaceXMLRPCInterfaceTests.test_getAPIVersionc                 C   ó$   t ƒ }|  |¡}|  |j|j¡ d S r   )r   r1   r   rN   Ú
getVersion©r   rL   r4   r   r   r   Ú3test_getAPIVersion_aliased_to_deprecated_getVersion]   ó   
z[SupervisorNamespaceXMLRPCInterfaceTests.test_getAPIVersion_aliased_to_deprecated_getVersionc                 C   sD   t ƒ }|  |¡}| ¡ }ddlm} |  ||j¡ |  |jd¡ d S )Nr   )rI   ÚgetSupervisorVersion)r   r1   rW   r   rI   r   ÚVERSIONrG   )r   rL   r4   rP   rI   r   r   r   Útest_getSupervisorVersionb   s   
zASupervisorNamespaceXMLRPCInterfaceTests.test_getSupervisorVersionc                 C   s:   t ƒ }|  |¡}| ¡ }|  ||jj¡ |  |jd¡ d S )NÚgetIdentification)r   r1   rZ   r   rI   Ú
identifierrG   )r   rL   r4   r[   r   r   r   Útest_getIdentificationk   s
   
z>SupervisorNamespaceXMLRPCInterfaceTests.test_getIdentificationc                 C   sf   ddl m} tƒ }|  |¡}| ¡ }|jj}||ƒ}|  |d |¡ |  |d |¡ |  |jd¡ d S )Nr   )ÚgetSupervisorStateDescriptionÚ	statecodeÚ	statenameÚgetState)	Úsupervisor.statesr]   r   r1   r`   rI   rJ   r   rG   )r   r]   rL   r4   Ú	stateinfor^   r_   r   r   r   Útest_getStater   s   
z5SupervisorNamespaceXMLRPCInterfaceTests.test_getStatec                 C   s>   t ƒ }t|ƒ}|  |¡}|  | ¡ | ¡ ¡ |  |jd¡ d S )NÚgetPID)r   r   r1   r   rd   Úget_pidrG   )r   rI   rL   r4   r   r   r   Útest_getPID}   s
   
z3SupervisorNamespaceXMLRPCInterfaceTests.test_getPIDc                 C   rR   r   )r   r1   r   ÚreadMainLogÚreadLogrT   r   r   r   Ú.test_readLog_aliased_to_deprecated_readMainLog„   rV   zVSupervisorNamespaceXMLRPCInterfaceTests.test_readLog_aliased_to_deprecated_readMainLogc                 C   s8   ddl m} tƒ }|  |¡}| j|jj|jddd d S )Nr   r   r7   ©ÚoffsetÚlength)r   r   r   r1   r#   r:   ÚNO_FILErh   ©r   r   rL   r4   r   r   r   Útest_readLog_unreadable‰   s   

ÿz?SupervisorNamespaceXMLRPCInterfaceTests.test_readLog_unreadablec              	   C   s¦   ddl m} tƒ }|  |¡}z>|jj}t|dƒ}| d¡ W d   ƒ n1 s(w   Y  | j|j	j
|jddd | j|j	j
|jddd W t |¡ d S t |¡ w )Nr   r   úw+Á   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxéÿÿÿÿr7   rj   )r   r   r   r1   rI   ÚlogfileÚopenÚwriter#   r:   ÚBAD_ARGUMENTSrh   ÚosÚremove)r   r   rL   r4   rs   Úfr   r   r   Útest_readLog_badargs   s    
ÿ
ÿ
þz<SupervisorNamespaceXMLRPCInterfaceTests.test_readLog_badargsc              	   C   sê   t ƒ }|  |¡}|jj}zbt|dƒ}| d¡ | d¡ W d   ƒ n1 s'w   Y  |jddd}|  |jd¡ |  |d¡ |jddd}|  |d¡ |jddd}|  |d¡ |jd	dd}|  |d
¡ W t	 
|¡ d S t	 
|¡ w )Nrp   rq   Á   yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyr   rj   rh   Á   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyé   éüÿÿÿÚyyyy)r   r1   rI   rs   rt   ru   rh   r   rG   rw   rx   )r   rL   r4   rs   ry   Údatar   r   r   Útest_readLog    s$   

þz4SupervisorNamespaceXMLRPCInterfaceTests.test_readLogc                 C   s2   ddl m} tƒ }|  |¡}|  |jj|j¡ d S r)   )r   r   r   r1   r#   r:   rm   ÚclearLogrn   r   r   r   Útest_clearLog_unreadable´   s   
z@SupervisorNamespaceXMLRPCInterfaceTests.test_clearLog_unreadablec                 C   sf   ddl m} tƒ }|jg|_ttjt 	tj¡ƒ|_
t|ƒ}|  |¡}|  |j|j¡ |  |jd¡ d S )Nr   r   r‚   )r   r   r   rs   ÚexistingÚOSErrorÚerrnoÚEPERMrw   ÚstrerrorÚremove_exceptionr   r1   ÚassertRaisesr   r‚   r   rG   )r   r   rI   rL   r4   r   r   r   Útest_clearLog_unremoveableº   s   

ÿ
zBSupervisorNamespaceXMLRPCInterfaceTests.test_clearLog_unremoveablec                 C   sz   t ƒ }|jg|_t|ƒ}|  |¡}| ¡ }|  |jd¡ |  |d¡ |  |jd |j¡ |j	j
jD ]	}|  |jd¡ q1d S )Nr‚   Tr   )r   rs   r„   r   r1   r‚   r   rG   ÚremovedrI   ÚloggerÚhandlersÚreopened)r   rI   rL   r4   ÚresultÚhandlerr   r   r   Útest_clearLogÅ   s   

ÿz5SupervisorNamespaceXMLRPCInterfaceTests.test_clearLogc                 C   ó8   t ƒ }|  |¡}| ¡ }|  |d¡ |  |jjd¡ d S )NTrr   )r   r1   Úshutdownr   rI   rJ   ©r   rL   r4   Úvaluer   r   r   Útest_shutdownÑ   ó
   
z5SupervisorNamespaceXMLRPCInterfaceTests.test_shutdownc                 C   r“   )NTr   )r   r1   Úrestartr   rI   rJ   r•   r   r   r   Útest_restartØ   r˜   z4SupervisorNamespaceXMLRPCInterfaceTests.test_restartc                    sn   t ƒ }t|ƒ}|  |¡}t|dƒgt|dƒgt|dƒgg‰ ‡ fdd„|_| ¡ }|  |dgdgdggg¡ d S )NÚaddedÚchangedÚdroppedc                      ó   ˆ S r   r   r   ©Úchangesr   r   Ú<lambda>è   ó    zKSupervisorNamespaceXMLRPCInterfaceTests.test_reloadConfig.<locals>.<lambda>)r   r   r1   r   Údiff_to_activeÚreloadConfigr   )r   rI   rL   r4   r–   r   rŸ   r   Útest_reloadConfigß   s   



þz9SupervisorNamespaceXMLRPCInterfaceTests.test_reloadConfigc                 C   sH   ddl m} tƒ }dd„ }||_t|ƒ}|  |¡}|  |jj|j	¡ d S )Nr   r   c                  _   s   t dƒ‚)NrD   )Ú
ValueError)Úargr!   r   r   r   Ú	raise_excð   ó   zmSupervisorNamespaceXMLRPCInterfaceTests.test_reloadConfig_process_config_raises_ValueError.<locals>.raise_exc)
r   r   r   Úprocess_configr   r1   r#   r:   ÚCANT_REREADr¤   )r   r   rI   r¨   rL   r4   r   r   r   Ú2test_reloadConfig_process_config_raises_ValueErrorí   s   
zZSupervisorNamespaceXMLRPCInterfaceTests.test_reloadConfig_process_config_raises_ValueErrorc           	      C   sâ   ddl m} ddlm} tƒ }||ƒ}t|dtdd}t|d|gd}|g|j_	|  
|¡}| d¡}|  |¡ |  t|j ¡ ƒdg¡ |  |jj|jd¡ |  t|j ¡ ƒdg¡ |  |jj|jd	¡ |  t|j ¡ ƒdg¡ d S ©
Nr   ©Ú
Supervisorr   rD   F©Ú	autostartÚgroup1©ÚpconfigsÚasdf)rE   r¯   r   r   r   r   Ú__file__r   rI   Úprocess_group_configsr1   ÚaddProcessGroupÚ
assertTruer   ÚlistÚprocess_groupsÚkeysr#   r:   ÚALREADY_ADDEDÚBAD_NAME)	r   r¯   r   rI   rL   ÚpconfigÚgconfigr4   r   r   r   r   Útest_addProcessGroup÷   s&   




ÿ
ÿz<SupervisorNamespaceXMLRPCInterfaceTests.test_addProcessGroupc                 C   s†   ddl m} tƒ }||ƒ}t|dtdd}t|d|gd}|g|j_|  |¡}| 	d¡ | 
d¡}|  |¡ |  t|j ¡ ƒg ¡ d S )Nr   r®   rD   Fr°   r²   r³   )rE   r¯   r   r   r¶   r   rI   r·   r1   r¸   ÚremoveProcessGroupr¹   r   rº   r»   r¼   )r   r¯   rI   rL   r¿   rÀ   r4   r   r   r   r   Útest_removeProcessGroup  s   




z?SupervisorNamespaceXMLRPCInterfaceTests.test_removeProcessGroupc                 C   sr   ddl m} ddlm} tƒ }||ƒ}t|dtdd}t|d|gd}|g|j_	|  
|¡}|  |jj|jd	¡ d S r­   )rE   r¯   r   r   r   r   r¶   r   rI   r·   r1   r#   r:   r¾   rÂ   )r   r¯   r   rI   rL   r¿   rÀ   r4   r   r   r   Ú test_removeProcessGroup_bad_name  s   


ÿzHSupervisorNamespaceXMLRPCInterfaceTests.test_removeProcessGroup_bad_namec           	      C   sŒ   ddl m} ddlm} tƒ }||ƒ}t|dtdd}t|d|gd}|g|j_	t
|ƒ}d	g|_d|i|_|  |¡}|  |jj|jd¡ d S )
Nr   r®   r   rD   Fr°   r²   r³   é{   )rE   r¯   r   r   r   r   r¶   r   rI   r·   r   Úunstopped_processesr»   r1   r#   r:   ÚSTILL_RUNNINGrÂ   )	r   r¯   r   rI   rL   r¿   rÀ   Úprocessr4   r   r   r   Ú%test_removeProcessGroup_still_running+  s   



ÿzMSupervisorNamespaceXMLRPCInterfaceTests.test_removeProcessGroup_still_runningc                 C   s^   ddl m} tƒ }t|dtdd}t|d|ƒ}| ddd¡ |  |¡}|  |j	j
|jd¡ d S )Nr   r   rD   Fr°   Úpidé
   )r   r   r   r   r¶   r   Úset_procattrr1   r#   r:   ÚALREADY_STARTEDÚstartProcess©r   r   rI   r¿   rL   r4   r   r   r   Ú!test_startProcess_already_started:  s   
þzISupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_already_startedc                 C   s˜   ddl m} ddlm} tƒ }t|dtdd}t|d|ƒ}| ddd¡ | dd	|j	¡ |  
|¡}|  |jj|jd¡ |jd jd }|  |jd¡ d S )
Nr   r   ©ÚProcessStatesrD   Fr°   rÊ   rË   Ústate)r   r   ra   rÒ   r   r   r¶   r   rÌ   ÚUNKNOWNr1   r#   r:   ÚFAILEDrÎ   r»   Ú	processesr   Úspawned)r   r   rÒ   rI   r¿   rL   r4   rÈ   r   r   r   Útest_startProcess_unknown_stateF  s   
þzGSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_unknown_statec                 C   óP   t ƒ }t|dtdd}t|d|ƒ}|  |¡}ddlm} |  |jj	|j
d¡ d S )NrD   Fr°   r²   r   r   z
group2:foo©r   r   r¶   r   r1   r   r   r#   r:   r¾   rÎ   ©r   rI   r¿   rL   r4   r   r   r   r   Ú test_startProcess_bad_group_nameV  ó   

ÿzHSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_bad_group_namec                 C   rÙ   )NrD   Fr°   r²   r   r   z
group1:barrÚ   rÛ   r   r   r   Ú"test_startProcess_bad_process_name_  rÝ   zJSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_bad_process_namec                 C   ór   t ƒ }t|dddd}ddlm} t|d|ƒ}|jd jd }||_|  |¡}ddl	m
} |  |jj|jd¡ d S )NrD   ú/foo/barFr°   r   )ÚNotFoundr   )r   r   Úsupervisor.optionsrá   r   r»   rÖ   Úexecv_arg_exceptionr1   r   r   r#   r:   rm   rÎ   )r   rI   r¿   rá   rL   rÈ   r4   r   r   r   r   Ú test_startProcess_file_not_foundh  ó   

ÿzHSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_file_not_foundc                 C   rß   )NrD   rà   Fr°   r   )Ú
BadCommandr   )r   r   râ   ræ   r   r»   rÖ   rã   r1   r   r   r#   r:   ÚNOT_EXECUTABLErÎ   )r   rI   r¿   ræ   rL   rÈ   r4   r   r   r   r   Útest_startProcess_bad_commandt  rå   zESupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_bad_commandc                 C   rß   )NrD   rà   Fr°   r   )ÚNotExecutabler   )r   r   râ   ré   r   r»   rÖ   rã   r1   r   r   r#   r:   rç   rÎ   )r   rI   r¿   ré   rL   rÈ   r4   r   r   r   r   Ú%test_startProcess_file_not_executable€  rå   zMSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_file_not_executablec                 C   s‚   ddl m} tƒ }t|dtdd}ddlm} t|d|ƒ}| dd|j	¡ |j
d jd }d|_|  |¡}|  |jj|jd¡ d S )	Nr   r   rD   Fr°   rÑ   rÓ   Úabc)r   r   r   r   r¶   Úsupervisor.processrÒ   r   rÌ   ÚSTOPPEDr»   rÖ   Úspawnerrr1   r#   r:   ÚSPAWN_ERRORrÎ   )r   r   rI   r¿   rÒ   rL   rÈ   r4   r   r   r   Útest_startProcess_spawnerrŒ  s   
ýzBSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_spawnerrc                 C   s˜   t ƒ }t|dtddd}ddlm} t|d|ƒ}| dd|j¡ |  |¡}| 	d¡}|j
d jd }|  |jd¡ |  |jd	¡ |j|_|  |d¡ d S )
NrD   Fç{®Gáz„?©r±   Ú	startsecsr   rÑ   rÓ   TrÎ   )r   r   r¶   rì   rÒ   r   rÌ   rí   r1   rÎ   r»   rÖ   r   r×   rG   ÚRUNNINGrÓ   ©r   rI   r¿   rÒ   rL   r4   r   rÈ   r   r   r   Útest_startProcessœ  s   
ÿ

z9SupervisorNamespaceXMLRPCInterfaceTests.test_startProcessc           	         s¨   ddl m} tƒ }t|dtdd}ddlm‰  t|d|ƒ}| ddˆ j	¡ |j
d jd ‰‡ ‡fdd	„}‡fd
d„}|ˆ_|ˆ_|  |¡}| d¡}|  |jj|¡ d S )Nr   r   rD   Fr°   rÑ   rÓ   c                      ó   dˆ_ ˆ jˆ_d S ©NT©r×   ÚSTARTINGrÓ   r   ©rÒ   rÈ   r   r   Úspawn³  ó   z[SupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_spawnerr_in_onwait.<locals>.spawnc                      s
   dˆ _ d S )Nrë   )rî   r   )rÈ   r   r   Ú
transition¶  ó   
z`SupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_spawnerr_in_onwait.<locals>.transition)r   r   r   r   r¶   rì   rÒ   r   rÌ   rí   r»   rÖ   rü   rþ   r1   rÎ   r#   r:   rï   )	r   r   rI   r¿   rL   rü   rþ   r4   Úcallbackr   rû   r   Ú$test_startProcess_spawnerr_in_onwait«  s   

zLSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_spawnerr_in_onwaitc                    s   t ƒ }t|dtdd}ddlm‰  t|d|ƒ}| ddˆ j¡ |jd j	d ‰‡ ‡fdd„}|ˆ_
|  |¡}| d¡}ˆ jˆ_|  |ƒ d	¡ d S )
NrD   Fr°   r   rÑ   rÓ   c                      r÷   rø   rù   r   rû   r   r   rü   Å  rý   zZSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_success_in_onwait.<locals>.spawnT)r   r   r¶   rì   rÒ   r   rÌ   rí   r»   rÖ   rü   r1   rÎ   rô   rÓ   r   )r   rI   r¿   rL   rü   r4   r   r   rû   r   Ú#test_startProcess_success_in_onwait¾  s   

zKSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_success_in_onwaitc                 C   s’   t ƒ }t|dtdd}ddlm} t|d|ƒ}| dd|j¡ |  |¡}|j	ddd}|  
|d¡ |jd jd }|  
|jd¡ |  
|jd	¡ d S )
NrD   Fr°   r   rÑ   rÓ   ©ÚwaitTrÎ   )r   r   r¶   rì   rÒ   r   rÌ   rí   r1   rÎ   r   r»   rÖ   r×   rG   rõ   r   r   r   Útest_startProcess_nowaitÎ  s   
z@SupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_nowaitc           
         sÜ   t ƒ }t|dtdd}ddlm‰  ddlm} t|d|ƒ}| ddˆ j	¡ |  
|¡}|jd jd ‰‡ ‡fdd	„}|ˆ_| dd
¡}|ƒ }|  ||j¡ |  ˆjd¡ |  |jd¡ ˆ jˆ_ddlm}	 |  |	jj|¡ d S )NrD   Fr°   r   rÑ   ©ÚhttprÓ   c                      r÷   rø   rù   r   rû   r   r   rü   ä  rý   zjSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_abnormal_term_process_not_running.<locals>.spawnéd   TrÎ   r   )r   r   r¶   rì   rÒ   r   r  r   rÌ   rí   r1   r»   rÖ   rü   rÎ   r   ÚNOT_DONE_YETr×   rG   ÚBACKOFFrÓ   r   r#   r:   ÚABNORMAL_TERMINATION)
r   rI   r¿   r  rL   r4   rü   r   r   r   r   rû   r   Ú3test_startProcess_abnormal_term_process_not_runningÛ  s$   
z[SupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_abnormal_term_process_not_runningc                 C   óŠ   t ƒ }t|dtddd}t|dtddd}t|d||ƒ}d	d
lm} | dd|j¡ | dd|j¡ |  |¡}| 	d¡ |  
|jd¡ d S )NÚprocess1Frñ   rò   Úprocess2é   ©Úpriorityró   rD   r   rÑ   rÓ   úfoo:*ÚstartProcessGroup)r   r   r¶   r   rì   rÒ   rÌ   rí   r1   rÎ   r   rG   ©r   rI   Úpconfig1Úpconfig2rL   rÒ   r4   r   r   r   Ú/test_startProcess_splat_calls_startProcessGroupñ  ó    
ÿ
ÿÿ

zWSupervisorNamespaceXMLRPCInterfaceTests.test_startProcess_splat_calls_startProcessGroupc              	   C   sü   t ƒ }t|dtddd}t|dtddd}t|d||ƒ}dd	lm} dd
lm} | dd|j	¡ | dd|j	¡ |  
|¡}| d¡}|  |ƒ d|jdddœd|jdddœg¡ |  |jd¡ |jd jd }	|  |	jd¡ |jd jd }
|  |
jd¡ d S )Nr  r7   rñ   r  r  r  rD   r   rÑ   ©r:   rÓ   ÚOK©ÚgroupÚstatusÚdescriptionÚnamerÎ   T)r   r   r¶   r   rì   rÒ   Úsupervisor.xmlrpcr:   rÌ   rí   r1   r  r   ÚSUCCESSrG   r»   rÖ   r×   )r   rI   r  r  rL   rÒ   r:   r4   r   r  r  r   r   r   Útest_startProcessGroup   sF   
ÿ
ÿÿ

ýýüþz>SupervisorNamespaceXMLRPCInterfaceTests.test_startProcessGroupc           	   	   C   s¶   t ƒ }t|dtddd}t|dtddd}t|d||ƒ}dd	lm} | dd
|j¡ | dd
|j¡ |  |¡}|j	ddd}ddl
m} |  |ƒ d|jdddœd|jdddœg¡ d S ©Nr  r7   rñ   r  r  r  rD   r   rÑ   rÓ   Fr  r  r  r  )r   r   r¶   r   rì   rÒ   rÌ   rí   r1   r  r!  r:   r   r"  ©	r   rI   r  r  rL   rÒ   r4   r   r:   r   r   r   Útest_startProcessGroup_nowait"  s<   
ÿ
ÿÿ
ýýüþzESupervisorNamespaceXMLRPCInterfaceTests.test_startProcessGroup_nowaitc                 C   ó4   ddl m} tƒ }|  |¡}|  |jj|jd¡ d S ©Nr   r   rD   )r   r   r   r1   r#   r:   r¾   r  rn   r   r   r   Útest_startProcessGroup_badname>  ó   

ÿzFSupervisorNamespaceXMLRPCInterfaceTests.test_startProcessGroup_badnamec              	   C   sú   t ƒ }t|dtddd}t|dtddd}t|d||ƒ}dd	lm} | dd
|j¡ | dd
|j¡ |  |¡}| 	¡ }ddl
m} |  |ƒ d|jdddœd|jdddœg¡ |  |jd¡ |jd jd }	|  |	jd¡ |jd jd }
|  |
jd¡ d S )Nr  r7   rñ   r  r  r  rD   r   rÑ   rÓ   r  r  r  rÎ   T)r   r   r¶   r   rì   rÒ   rÌ   rí   r1   ÚstartAllProcessesr!  r:   r   r"  rG   r»   rÖ   r×   )r   rI   r  r  rL   rÒ   r4   r   r:   r  r  r   r   r   Útest_startAllProcessesF  sF   
ÿ
ÿÿ
ýýüþz>SupervisorNamespaceXMLRPCInterfaceTests.test_startAllProcessesc           	   	   C   s´   t ƒ }t|dtddd}t|dtddd}t|d||ƒ}dd	lm} | dd
|j¡ | dd
|j¡ |  |¡}|j	dd}ddl
m} |  |ƒ d|jdddœd|jdddœg¡ d S r$  )r   r   r¶   r   rì   rÒ   rÌ   rí   r1   r+  r!  r:   r   r"  r%  r   r   r   Útest_startAllProcesses_nowaitj  s<   
ÿ
ÿÿ
ýýüþzESupervisorNamespaceXMLRPCInterfaceTests.test_startAllProcesses_nowaitc                 C   sä   t ƒ }t|ddƒ}ddlm} t|d|ƒ}| dd|j¡ |  |¡}| d¡}|  	|¡ |  
|jd¡ |jd jd }|  
|jd¡ |  
|jd¡ |  |j¡ |  
|j|j¡ |  	|j¡ |  
t|jd jƒd¡ |  
|jd¡ d S )NrD   ú/bin/foor   rÑ   rÓ   ÚstopProcessr7   )r   r   rì   rÒ   r   rÌ   rô   r1   r/  r¹   r   rG   r»   rÖ   ÚbackoffÚdelayÚassertFalseÚkillingrÓ   rí   Ústop_report_calledÚlenrõ   r   r   r   Útest_stopProcess†  s"   


z8SupervisorNamespaceXMLRPCInterfaceTests.test_stopProcessc                 C   sš   t ƒ }t|dtƒ}ddlm} t|d|ƒ}| dd|j¡ |  |¡}|j	ddd}|  
|d¡ |jd jd }|  
|jd¡ |  |j¡ |  
|jd¡ d S )	NrD   r   rÑ   rÓ   Fr  Tr/  )r   r   r¶   rì   rÒ   r   rÌ   rô   r1   r/  r   r»   rÖ   Ústop_calledr¹   r4  rG   rõ   r   r   r   Útest_stopProcess_nowait™  s   
z?SupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_nowaitc           	         sŽ   t ƒ }t|ddƒ}ddlm} t|d|ƒ}|jd jd }|j|j|j	g‰ ‡ fdd„}||_
|  |¡}| d¡}|  |jd¡ |  |ƒ ¡ d S )NrD   r.  r   rÑ   c                      ó
   ˆ   d¡S ©Nr   ©Úpopr   ©ÚLr   r   Ú	get_state°  rÿ   z]SupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_success_in_onwait.<locals>.get_stater/  )r   r   rì   rÒ   r   r»   rÖ   rô   ÚSTOPPINGrí   r?  r1   r/  r   rG   r¹   )	r   rI   r¿   rÒ   rL   rÈ   r?  r4   r   r   r=  r   Ú"test_stopProcess_success_in_onwait§  s   þ

zJSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_success_in_onwaitc           
         sœ   ddl m} tƒ }t|ddƒ}ddlm} t|d|ƒ}|jd jd }|j	|j
|j
g‰ ‡ fdd„}||_|  |¡}| d¡}	|  |	ƒ |¡ |  |jd¡ d S )	Nr   ©r	  rD   r.  rÑ   c                      r9  r:  r;  r   r=  r   r   r?  Â  rÿ   zYSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_NDY_in_onwait.<locals>.get_stater/  )Úsupervisor.httpr	  r   r   rì   rÒ   r   r»   rÖ   rô   r@  r?  r1   r/  r   rG   )
r   r	  rI   r¿   rÒ   rL   rÈ   r?  r4   r   r   r=  r   Útest_stopProcess_NDY_in_onwait¸  s    þ

zFSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_NDY_in_onwaitc                 C   s2   ddl m} tƒ }|  |¡}|  |j|jd¡ d S )Nr   r  rD   )r!  r:   r   r1   r#   r¾   r/  )r   r:   rL   r4   r   r   r   Útest_stopProcess_bad_nameÊ  s   
ÿzASupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_bad_namec                 C   sf   ddl m} ddlm} tƒ }t|ddƒ}t|d|ƒ}| dd|j¡ |  	|¡}|  
|j|jd¡ d S )Nr   rÑ   r  rD   r.  rÓ   )ra   rÒ   r!  r:   r   r   r   rÌ   ÚEXITEDr1   r#   ÚNOT_RUNNINGr/  )r   rÒ   r:   rI   r¿   rL   r4   r   r   r   Útest_stopProcess_not_runningÑ  s   
zDSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_not_runningc                 C   s\   ddl m} tƒ }t|ddƒ}t|d|ƒ}| dddd„ ¡ |  |¡}|  |j|j	d¡ d S )Nr   r  rD   r.  Ústopc                   S   ó   dS )NÚunstoppabler   r   r   r   r   r¡   à  r¢   zQSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_failed.<locals>.<lambda>)
r!  r:   r   r   r   rÌ   r1   r#   rÕ   r/  )r   r:   rI   r¿   rL   r4   r   r   r   Útest_stopProcess_failedÛ  s   
z?SupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_failedc              	   C   s  t ƒ }t|dddd}t|dddd}dd	lm} t|d
||ƒ}| dd|j¡ | dd|j¡ |  |¡}| d
¡}|  	|j
d¡ ddlm} |j}		 |ƒ }	|	|jurTnqKddlm}
 |  	|	|
jd
dddœ|
jd
dddœg¡ |jd
 jd }|  	|jd¡ |jd
 jd }|  	|jd¡ d S )Nr  r.  r7   ©r  r  ú	/bin/foo2r  r   rÑ   rD   rÓ   ÚstopProcessGroupr  r  r  ©r  r  r   r  T)r   r   rì   rÒ   r   rÌ   rô   r1   rO  r   rG   r   r  r	  r!  r:   r"  r»   rÖ   r7  ©r   rI   r  r  rÒ   rL   r4   r   r  r–   r:   r  r  r   r   r   Útest_stopProcessGroupä  sH   ÿ


ýýýúz=SupervisorNamespaceXMLRPCInterfaceTests.test_stopProcessGroupc           	   	   C   s²   t ƒ }t|dtdd}t|dtdd}t|d||ƒ}ddlm} | dd	|j¡ | dd	|j¡ |  |¡}|j	dd
d}ddl
m} |  |ƒ ddd|jdœddd|jdœg¡ d S )Nr  r7   rM  r  r  rD   r   rÑ   rÓ   Fr  r  r  )r   r  r  r  )r   r   r¶   r   rì   rÒ   rÌ   rô   r1   rO  r!  r:   r   r"  r%  r   r   r   Útest_stopProcessGroup_nowait  s4   ÿ
ýýûþzDSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcessGroup_nowaitc                 C   r'  r(  )r   r   r   r1   r#   r:   r¾   rO  rn   r   r   r   Útest_stopProcessGroup_badname#  r*  zESupervisorNamespaceXMLRPCInterfaceTests.test_stopProcessGroup_badnamec                 C   r  )Nr  Frñ   rò   r  r  r  rD   r   rÑ   rÓ   r  rO  )r   r   r¶   r   rì   rÒ   rÌ   rí   r1   r/  r   rG   r  r   r   r   Ú-test_stopProcess_splat_calls_stopProcessGroup*  r  zUSupervisorNamespaceXMLRPCInterfaceTests.test_stopProcess_splat_calls_stopProcessGroupc              	   C   s  t ƒ }t|dddd}t|dddd}dd	lm} t|d
||ƒ}| dd|j¡ | dd|j¡ |  |¡}| ¡ }|  	|j
d¡ ddlm} |j}		 |ƒ }	|	|jurSnqJddlm}
 |  	|	|
jd
dddœ|
jd
dddœg¡ |jd
 jd }|  	|jd¡ |jd
 jd }|  	|jd¡ d S )Nr  r.  r7   rM  r  rN  r  r   rÑ   rD   rÓ   ÚstopAllProcessesr  r  r  rP  T)r   r   rì   rÒ   r   rÌ   rô   r1   rV  r   rG   r   r  r	  r!  r:   r"  r»   rÖ   r7  rQ  r   r   r   Útest_stopAllProcesses9  sH   ÿ

ýýýúz=SupervisorNamespaceXMLRPCInterfaceTests.test_stopAllProcessesc           	   	   C   s°   t ƒ }t|dtdd}t|dtdd}t|d||ƒ}ddlm} | dd	|j¡ | dd	|j¡ |  |¡}|j	d
d}ddl
m} |  |ƒ d|jdddœd|jdddœg¡ d S )Nr  r7   rM  r  r  rD   r   rÑ   rÓ   Fr  r  r  r  )r   r   r¶   r   rì   rÒ   rÌ   rô   r1   rV  r!  r:   r   r"  r%  r   r   r   Útest_stopAllProcesses_nowait]  s4   ÿ
ýýüþzDSupervisorNamespaceXMLRPCInterfaceTests.test_stopAllProcesses_nowaitc                 C   óŽ   t ƒ }t|ddƒ}ddlm} t|d|ƒ}| dd|j¡ |  |¡}| dd¡}|  	|j
d¡ |  	|d¡ |j|j jd }|  	|jd¡ d S ©	NrD   r.  r   rÑ   rÓ   rË   ÚsignalProcessT)r   r   rì   rÒ   r   rÌ   rô   r1   r[  r   rG   r»   Ú
group_namerÖ   Úsent_signal©r   rI   r¿   rÒ   rL   r4   r   Úpr   r   r   Ú%test_signalProcess_with_signal_numberw  ó   
zMSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_with_signal_numberc                 C   s¦   t ƒ }t|ddƒ}ddlm} t|d|ƒ}| dd|j¡ ddlm} d}||ƒ}|  	|¡}| 
d|¡}	|  |jd¡ |  |	d	¡ |j|j jd }
|  |
j|¡ d S )
NrD   r.  r   rÑ   rÓ   ©Úsignal_numberÚquitr[  T)r   r   rì   rÒ   r   rÌ   rô   Úsupervisor.datatypesrc  r1   r[  r   rG   r»   r\  rÖ   r]  )r   rI   r¿   rÒ   rL   rc  ÚsignameÚsignumr4   r   r_  r   r   r   Ú#test_signalProcess_with_signal_name†  s   
zKSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_with_signal_namec                 C   rY  rZ  )r   r   rì   rÒ   r   rÌ   r@  r1   r[  r   rG   r»   r\  rÖ   r]  r^  r   r   r   Útest_signalProcess_stopping™  ra  zCSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_stoppingc                 C   ój   t ƒ }t|ddƒ}ddlm} ddlm} t|d|ƒ}| dd|j¡ |  	|¡}|  
|jj|jdd¡ d S )NrD   r.  r   rÑ   r   rÓ   é›   )r   r   rì   rÒ   r   r   r   rÌ   rô   r1   r#   r:   Ú
BAD_SIGNALr[  ©r   rI   r¿   rÒ   r   rL   r4   r   r   r   Útest_signalProcess_badsignal¨  ó   
ÿzDSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_badsignalc                 C   rj  )NrD   r.  r   rÑ   r   rÓ   rË   )r   r   rì   rÒ   r   r   r   rÌ   rí   r1   r#   r:   rG  r[  rm  r   r   r   Útest_signalProcess_notrunning´  ro  zESupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_notrunningc           
      C   sŽ   t ƒ }t|ddƒ}ddlm} ddlm} t|d|ƒ}| dd|j¡ dd„ }|j	|j
 }|jd }||_|  |¡}	|  |jj|	jdd	¡ d S )
NrD   r.  r   rÑ   r   rÓ   c                 S   rJ  )NÚmsgr   )Úsigr   r   r   ÚsignalreturnÈ  r   zgSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_signal_returns_message.<locals>.signalreturnrË   )r   r   rì   rÒ   r   r   r   rÌ   rô   r»   r\  rÖ   Úsignalr1   r#   r:   rÕ   r[  )
r   rI   r¿   rÒ   r   rL   rs  ÚpgroupÚprocr4   r   r   r   Ú)test_signalProcess_signal_returns_messageÁ  s   

ÿzQSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_signal_returns_messagec              	   C   s  t ƒ }t|ddƒ}t|ddƒ}ddlm} t|d||ƒ}| dd|j¡ | dd|j¡ |  |¡}| 	d	d
¡}|  
|jd¡ t|t d¡d}ddlm} |  
||jddddœ|jddddœg¡ |jd jd }	|  
|	jd
¡ |jd jd }
|  
|
jd
¡ dS )z Test that sending foo:* works r  r.  r  rN  r   rÑ   rD   rÓ   r  rË   ÚsignalProcessGroupr   ©Úkeyr  r  rP  N)r   r   rì   rÒ   r   rÌ   rô   r@  r1   r[  r   rG   ÚsortedÚoperatorÚ
itemgetterr!  r:   r"  r»   rÖ   r]  ©r   rI   r  r  rÒ   rL   r4   r   r:   r  r  r   r   r   Útest_signalProcess_withgroupÓ  s<   ÿ
ýýúzDSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcess_withgroupc              	   C   s  t ƒ }t|ddƒ}t|ddƒ}ddlm} t|d||ƒ}| dd|j¡ | dd|j¡ |  |¡}| dd	¡}|  	|j
d
¡ t|t d¡d}ddlm} |  	||jddddœ|jddddœg¡ |jd jd }	|  	|	jd	¡ |jd jd }
|  	|
jd	¡ d S )Nr  r.  r  rN  r   rÑ   rD   rÓ   rË   rx  r   ry  r  r  rP  )r   r   rì   rÒ   r   rÌ   rô   r1   rx  r   rG   r{  r|  r}  r!  r:   r"  r»   rÖ   r]  r~  r   r   r   Ú*test_signalProcessGroup_with_signal_numberö  s<   ÿ
ýýúzRSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcessGroup_with_signal_numberc                 C   s¾   t ƒ }t|ddƒ}ddlm} t|d|ƒ}| dd|j¡ ddlm} d}||ƒ}|  	|¡}| 
d|¡}	|  |jd	¡ dd
lm}
 |  |	|
jddddœg¡ |jd jd }|  |j|¡ d S )Nr  r.  r   rÑ   rD   rÓ   rb  Útermrx  r  r  rP  )r   r   rì   rÒ   r   rÌ   rô   re  rc  r1   rx  r   rG   r!  r:   r"  r»   rÖ   r]  ©r   rI   r  rÒ   rL   rc  rf  rg  r4   r   r:   r  r   r   r   Ú(test_signalProcessGroup_with_signal_name  s*   
ýÿzPSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcessGroup_with_signal_namec                 C   sˆ   ddl m} tƒ }t|ddƒ}t|ddƒ}ddlm} t|d||ƒ}| dd	|j¡ | dd	|j¡ |  	|¡}|  
|jj|jd
d¡ d S )Nr   r   r  r.  r  rN  rÑ   rD   rÓ   ÚbarrË   )r   r   r   r   rì   rÒ   r   rÌ   rô   r1   r#   r:   r¾   rx  )r   r   rI   r  r  rÒ   rL   r4   r   r   r   Ú#test_signalProcessGroup_nosuchgroup0  s   ÿ

ÿzKSupervisorNamespaceXMLRPCInterfaceTests.test_signalProcessGroup_nosuchgroupc              	   C   s   t ƒ }t|ddƒ}t|ddƒ}ddlm} t|d||ƒ}| dd|j¡ | dd|j¡ |  |¡}| d	¡}|  	|j
d
¡ t|t d¡d}ddlm} |  	||jddddœ|jddddœg¡ |jd jd }	|  	|	jd	¡ |jd jd }
|  	|
jd	¡ d S )Nr  r.  r  rN  r   rÑ   rD   rÓ   rË   ÚsignalAllProcessesr   ry  r  r  rP  )r   r   rì   rÒ   r   rÌ   rô   r1   r†  r   rG   r{  r|  r}  r!  r:   r"  r»   rÖ   r]  r~  r   r   r   Ú*test_signalAllProcesses_with_signal_number?  s<   ÿ

ýýúzRSupervisorNamespaceXMLRPCInterfaceTests.test_signalAllProcesses_with_signal_numberc                 C   s¼   t ƒ }t|ddƒ}ddlm} t|d|ƒ}| dd|j¡ ddlm} d}||ƒ}|  	|¡}| 
|¡}	|  |jd	¡ dd
lm}
 |  |	|
jddddœg¡ |jd jd }|  |j|¡ d S )Nr  r.  r   rÑ   rD   rÓ   rb  Úhupr†  r  r  rP  )r   r   rì   rÒ   r   rÌ   rô   re  rc  r1   r†  r   rG   r!  r:   r"  r»   rÖ   r]  r‚  r   r   r   Ú(test_signalAllProcesses_with_signal_name`  s*   

ýÿzPSupervisorNamespaceXMLRPCInterfaceTests.test_signalAllProcesses_with_signal_namec                 C   sˆ  t ƒ }t|dƒ}t|dtttd}t|dtd d d}t|d||gd}dt|ƒi|_|g|j_	|  
|¡}| ¡ }|  |d d d	¡ |  |d d
 d¡ |  |d d d¡ |  |d d d¡ |  |d d d¡ |  |d d d¡ |  |d d d¡ |  |d d d¡ |  |d d d¡ |  |d d d¡ |  |d d d¡ |  |d d d¡ |  |d d d¡ |  |d d d¡ |  |d d d¡ |  |d d d¡ |  |d d d¡ |  |d d d¡ |  |d d  d!¡ |  |d d" d¡ |  |d d# d¡ |  |d d d¡ |  |d d$ d	¡ |  |d d% d¡ |  |d d& d¡ d'|d d( v s=J ‚|  |d) d d	¡ |  |d) d
 d¡ |  |d) d d¡ |  |d) d d¡ |  |d) d d¡ |  |d) d d¡ |  |d) d d¡ |  |d) d d¡ |  |d) d d¡ |  |d) d d¡ |  |d) d d¡ |  |d) d d¡ |  |d) d d¡ |  |d) d d¡ |  |d) d d¡ |  |d) d d¡ |  |d) d d¡ |  |d) d d*¡ |  |d) d  d!¡ |  |d) d" d¡ |  |d) d# d¡ |  |d) d d¡ |  |d) d$ d	¡ |  |d) d% d*¡ |  |d) d& d¡ d'|d d( v sBJ ‚d S )+NrD   r  )Ústdout_logfileÚstderr_logfiler  r²   r³   r   r±   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_backupsztest_rpcinterfaces.pyÚcommandr7   Únone)r   r   r   r¶   r   r   r   r»   rI   r·   r1   ÚgetAllConfigInfor   )r   rI   rL   r  r  rÀ   r4   Úconfigsr   r   r   Útest_getAllConfigInfoy  s†   
þþ

z=SupervisorNamespaceXMLRPCInterfaceTests.test_getAllConfigInfoc                 C   sÔ   t ƒ }t|dƒ}t|dtƒ}t|dtƒ}t|d||gd}dt|ƒi|_|g|j_|  	|¡}t
d ƒg}zddlm} | |¡ W n	 tyI   Y nw |D ]}	| ¡ D ]}
|
 ¡ D ]\}}|  t||	ƒ|¡ qXqRqLd S )NrD   r  r  r²   r³   r   )ÚEnum)r   r   r   r¶   r   r   r»   rI   r·   r1   ÚtypeÚenumr¥  ÚappendÚImportErrorr¢  Úitemsr2  Ú
isinstance)r   rI   rL   r  r  rÀ   r4   Úunmarshallablesr¥  ÚtypÚconfigÚkÚvr   r   r   Ú>test_getAllConfigInfo_filters_types_not_compatible_with_xmlrpcÁ  s,   



ÿÿÿÿzfSupervisorNamespaceXMLRPCInterfaceTests.test_getAllConfigInfo_filters_types_not_compatible_with_xmlrpcc                 C   s2  t ƒ }|  |¡}td }td }ddlm} dd|j||tdœ}| |¡}|  |d¡ dd	|j||td
dœ}| |¡}|  |d
¡ dd	|j||tddœ}	| |	¡}|  |d¡ dd|j	||tddœ}
| |
¡}ddl
m
} |t |¡d d… Ž }|  || t¡¡ dd|j	d|tddœ}| |¡}|  |d¡ d S )Nr  r7   r   rÑ   Úrunning©r   rÊ   rÓ   ÚstartrI  Únowzpid 1, uptime 0:01:40Úfatalr  ÚHosed)r   rÊ   rÓ   r´  rI  rµ  rî   Ú z unknown error (try "tail fatal")Ústoppedé   ©Údatetimeé   zNot started)r   r1   r	   rì   rÒ   rô   Ú_interpretProcessInfor   ÚFATALrí   r¼  ÚtimeÚ	localtimeÚstrftimer
   )r   rL   r4   r´  rI  rÒ   r²  r  r¶  Úfatal2r¹  r¼  ÚstoptimeÚstopped2r   r   r   Útest__interpretProcessInfoÙ  sp   
û
ú
ú
ú
ú
zBSupervisorNamespaceXMLRPCInterfaceTests.test__interpretProcessInfoc                 C   sN   t ƒ }|  |¡}ddlm} dd|jtd d tdœ}| |¡}|  |d¡ d S )Nr   rÑ   r²  é*   rË   r³  zpid 42, uptime 0:00:00)r   r1   rì   rÒ   rô   r	   r¾  r   )r   rL   r4   rÒ   r²  r  r   r   r   Ú8test__interpretProcessInfo_doesnt_report_negative_uptime  s   
û
z`SupervisorNamespaceXMLRPCInterfaceTests.test__interpretProcessInfo_doesnt_report_negative_uptimec           
      C   sT  ddl m} tƒ }t|dddd}t|ƒ}d|_d|_d	|_t|dd
}t	|ƒ}d|i|_
td|id}|  |¡}| d¡}	|  |jd¡ |  |	d d¡ |  |	d d¡ |  |	d d¡ |  |	d d¡ |  |	d d¡ |  |	d d¡ |  |	d d	¡ |  |	d |j¡ |  |	d d¡ |  |	d d¡ |  |	d d¡ |  |	d  d¡¡ d S )Nr   rÑ   rD   r.  z/tmp/fleeb.bar©rŠ  éo   rË   é   ©r   ©r»   ÚgetProcessInfors   rŠ  r‹  r¸  r   rÊ   r´  rI  rÓ   r_   rô   Ú
exitstatusrî   r  úpid 111)rì   rÒ   r   r   r   rÊ   Ú	laststartÚlaststopr   r   rÖ   r   r1   rÎ  r   rG   rô   r¹   Ú
startswith)
r   rÒ   rI   r®  rÈ   Úpgroup_configru  rL   r4   r€   r   r   r   Útest_getProcessInfo$  s8   ÿ


z;SupervisorNamespaceXMLRPCInterfaceTests.test_getProcessInfoc           	      C   s”   t ƒ }t|ddd d}t|ƒ}d|_d|_d|_t|dd}t|ƒ}d|i|_t	d|id}|  
|¡}| d¡}|  |d	 d
¡ |  |d d
¡ d S )NrD   r.  rÉ  rÊ  rË   rË  rÌ  rÍ  rs   r¸  rŠ  )r   r   r   rÊ   rÑ  rÒ  r   r   rÖ   r   r1   rÎ  r   ©	r   rI   r®  rÈ   rÔ  ru  rL   r4   r€   r   r   r   Ú test_getProcessInfo_logfile_NONEC  s    ÿ


zHSupervisorNamespaceXMLRPCInterfaceTests.test_getProcessInfo_logfile_NONEc                 C   sr   ddl m} tƒ }t|ddƒ}t|d|ƒ}| dd|j¡ |  |¡}| d¡}|  	|d d¡ |  	|d d	¡ d S )
Nr   rÑ   rD   r.  rÓ   r_   rÔ   r  r¸  )
ra   rÒ   r   r   r   rÌ   rÔ   r1   rÎ  r   )r   rÒ   rI   r¿   rL   r4   r€   r   r   r   Ú!test_getProcessInfo_unknown_stateT  s   

zISupervisorNamespaceXMLRPCInterfaceTests.test_getProcessInfo_unknown_statec                 C   r'  )Nr   r   Únonexistent)r   r   r   r1   r#   r:   r¾   rÎ  rn   r   r   r   Ú-test_getProcessInfo_bad_name_when_bad_process_  r*  zUSupervisorNamespaceXMLRPCInterfaceTests.test_getProcessInfo_bad_name_when_bad_processc                 C   sL   ddl m} tƒ }t|ddƒ}t|d|ƒ}|  |¡}|  |jj|j	d¡ d S )Nr   r   rD   r.  zfoo:)
r   r   r   r   r   r1   r#   r:   r¾   rÎ  rÏ   r   r   r   Ú,test_getProcessInfo_bad_name_when_no_processf  s   

ÿzTSupervisorNamespaceXMLRPCInterfaceTests.test_getProcessInfo_bad_name_when_no_processc           	         sÒ   ddl m‰  tƒ }t|ddd d}t|ƒ}tˆ jd ƒ|_tˆ jd ƒ|_t	|dd}t
|ƒ}d|i|_td|id}|  |¡}‡ fd	d
„|_| d¡}|  |d ˆ j¡ |  |d ˆ j¡ |  |d ˆ j¡ d S )Nr   ©Ú	xmlrpclibrD   r.  rÉ  r7   rÌ  rÍ  c                      s   t ˆ jd ƒS ©Nr7   )ÚfloatÚMAXINTr   rÜ  r   r   r¡   |  s    zuSupervisorNamespaceXMLRPCInterfaceTests.test_getProcessInfo_caps_timestamps_exceeding_xmlrpc_maxint.<locals>.<lambda>r´  rI  rµ  )Úsupervisor.compatrÝ  r   r   r   rß  rà  rÑ  rÒ  r   r   rÖ   r   r1   Ú_nowrÎ  r   rÖ  r   rÜ  r   Ú;test_getProcessInfo_caps_timestamps_exceeding_xmlrpc_maxinto  s$   ÿ


zcSupervisorNamespaceXMLRPCInterfaceTests.test_getProcessInfo_caps_timestamps_exceeding_xmlrpc_maxintc                 C   sà  ddl m} tƒ }t|ddddd}t|dd	d
dd}t|d||ƒ}| ddd¡ | ddd¡ | ddd¡ | dd|j¡ | ddd¡ | ddd¡ | ddd¡ | dd|j¡ |  |¡}| 	¡ }|  
|jd¡ |  
t|ƒd
¡ |d }|  
|d d¡ |  
|d d¡ |  
|d d¡ |  
|d d¡ |  
|d d¡ |  
|d d¡ |  
|d d¡ |  
|d |j¡ |  
|d d¡ |  
|d d¡ |  
|d  d¡ |  
|d! d¡ |  |d"  d#¡¡ |d }	|jd jd }
|  
|	d d¡ |  
|	d d¡ |  
|d d¡ |  
|	d d¡ |  
|	d d¡ |  
|	d |
j¡ |  
|	d d¡ |  
|	d |j¡ |  
|	d d$¡ |  
|	d d¡ |  
|	d  d¡ |  
|d! d¡ dd%lm} |t |
j¡d d&… Ž }|  
|	d" | t¡¡ d S )'Nr   rÑ   r  ú/bin/process1r7   ú/tmp/process1.log©r  rŠ  r  z/bin/process2r  z/tmp/process2.logÚgnamerÊ   rÊ  rÑ  rË   rÒ  rË  rÓ   é   rÎ  rs   rŠ  r‹  r¸  r   r´  rI  r_   rô   rÏ  rî   r  r  rÐ  rí   r»  r½  )rì   rÒ   r   r   r   rÌ   rô   rí   r1   ÚgetAllProcessInfor   rG   r5  r¹   rÓ  r»   rÖ   rÑ  r¼  rÀ  rÁ  rÂ  r
   )r   rÒ   rI   Úp1configÚp2configrL   r4   ÚinfoÚp1infoÚp2infor  r¼  Ú	starttimer   r   r   Útest_getAllProcessInfo‚  st   þþÿ

ÿz>SupervisorNamespaceXMLRPCInterfaceTests.test_getAllProcessInfoc                 C   óX   ddl m} tƒ }t|ddddd}t|d|ƒ}|  |¡}| j|jj|j	dddd d S )	Nr   r   r  rä  r7   rå  ræ  rj   )
r   r   r   r   r   r1   r#   r:   rm   ÚreadProcessStdoutLogrÏ   r   r   r   Ú$test_readProcessStdoutLog_unreadableÄ  ó   
ÿ


þzLSupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStdoutLog_unreadablec           	   	   C   óØ   ddl m} tƒ }t|ddddd}t|d|ƒ}|  |¡}|jd jd }|jj	}z<t
|dƒ}| d	¡ W d   ƒ n1 s?w   Y  | j|jj|jdd
dd | j|jj|jdd
d
d W t |¡ d S t |¡ w )Nr   r   r  rä  r7   rå  ræ  rp   rq   rr   rj   )r   r   r   r   r   r1   r»   rÖ   r®  rŠ  rt   ru   r#   r:   rv   rò  rw   rx   ©	r   r   rI   r¿   rL   r4   rÈ   rs   ry   r   r   r   Ú!test_readProcessStdoutLog_badargsÏ  ó,   
ÿ
ÿ
þ
þzISupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStdoutLog_badargsc                 C   óX   ddl m} tƒ }t|ddddd}t|d|ƒ}|  |¡}| j|jj|j	d	ddd
 d S ©Nr   r   r  rä  r7   rå  ræ  rD   r  rj   )
r   r   r   r   r   r1   r#   r:   r¾   rò  rÏ   r   r   r   Ú-test_readProcessStdoutLog_bad_name_no_processå  rô  zUSupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStdoutLog_bad_name_no_processc           	   	   C   ó  t ƒ }t|dddd}t|d|ƒ}|  |¡}|jd jd }|jj}zft|dƒ}| 	d¡ | 	d¡ W d   ƒ n1 s=w   Y  |j
dddd	}|  |jd
¡ |  |d¡ |j
dddd	}|  |d¡ |j
dddd	}|  |d¡ |j
dddd	}|  |d¡ W t |¡ d S t |¡ w )NrD   r.  ú/tmp/fooooooorÉ  rp   rq   r{   r   rj   rò  r|   r}   r~   r   )r   r   r   r1   r»   rÖ   r®  rŠ  rt   ru   rò  r   rG   rw   rx   ©	r   rI   r¿   rL   r4   rÈ   rs   ry   r€   r   r   r   Útest_readProcessStdoutLogð  ó.   ÿ

þzASupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStdoutLogc                 C   ó<   t ƒ }t|ddƒ}t|d|ƒ}|  |¡}|  |j|j¡ d S ©NrD   r.  )r   r   r   r1   r   ÚreadProcessLogrò  ©r   rI   r¿   rL   r4   r   r   r   Ú1test_readProcessLogAliasedTo_readProcessStdoutLog  ó   
ÿzYSupervisorNamespaceXMLRPCInterfaceTests.test_readProcessLogAliasedTo_readProcessStdoutLogc                 C   rñ  )	Nr   r   r  rä  r7   rå  ©r  r‹  rj   )
r   r   r   r   r   r1   r#   r:   rm   ÚreadProcessStderrLogrÏ   r   r   r   Ú$test_readProcessStderrLog_unreadable  rô  zLSupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStderrLog_unreadablec           	   	   C   rõ  )Nr   r   r  rä  r7   rå  r  rp   rq   rr   rj   )r   r   r   r   r   r1   r»   rÖ   r®  r‹  rt   ru   r#   r:   rv   r  rw   rx   rö  r   r   r   Ú!test_readProcessStderrLog_badargs  rø  zISupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStderrLog_badargsc                 C   rù  rú  )
r   r   r   r   r   r1   r#   r:   r¾   r  rÏ   r   r   r   Ú-test_readProcessStderrLog_bad_name_no_process1  rô  zUSupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStderrLog_bad_name_no_processc           	   	   C   rü  )NrD   r.  rý  ©r‹  rp   rq   r{   r   rj   r  r|   r}   r~   r   )r   r   r   r1   r»   rÖ   r®  r‹  rt   ru   r  r   rG   rw   rx   rþ  r   r   r   Útest_readProcessStderrLog<  r   zASupervisorNamespaceXMLRPCInterfaceTests.test_readProcessStderrLogc                 C   ó8   ddl m} tƒ }|  |¡}|  |jj|jddd¡ d S ©Nr   r   r¾   rË   )r   r   r   r1   r#   r:   r¾   ÚtailProcessStdoutLogrn   r   r   r   Ú"test_tailProcessStdoutLog_bad_nameT  ó   


ÿzJSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStdoutLog_bad_namec                 C   óV   ddl m} tƒ }t|ddddd}t|d|ƒ}|  |¡}|  |jj|j	d	dd
¡ d S ©Nr   r   r  rä  r7   rå  ræ  rD   r  rË   )
r   r   r   r   r   r1   r#   r:   r¾   r  rÏ   r   r   r   Ú-test_tailProcessStdoutLog_bad_name_no_process[  ó   
ÿ


ÿzUSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStdoutLog_bad_name_no_processc              	   C   óò   ddl m} tƒ }t|dddd}t|d|ƒ}|  |¡}|jd jd }|jj	}zJt
|dƒ}| |¡ W d   ƒ n1 s>w   Y  |jddt|ƒd\}	}
}|  |jd	¡ |  |d
¡ |  |
t|ƒ¡ |  |	|¡ W t |¡ d S t |¡ w )Nr   ©ÚlettersrD   r.  rý  rÉ  rp   rj   r  F©rá  r  r   r   r   r1   r»   rÖ   r®  rŠ  rt   ru   r  r5  r   rG   rw   rx   ©r   r  rI   r¿   rL   r4   rÈ   rs   ry   r€   rk   Úoverflowr   r   r   Útest_tailProcessStdoutLog_alle  ó,   ÿ
ÿþzESupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStdoutLog_allc              	   C   óF  ddl m} tƒ }t|dddd}t|d|ƒ}|  |¡}|jd jd }|jj	}ztt
|dƒ}| |¡ W d   ƒ n1 s>w   Y  |jdt|ƒdd	\}	}
}|  |jd
¡ |  |d¡ |  |
t|ƒ¡ |  |	d¡ |jdt|ƒd dd	\}	}
}|  |jd
¡ |  |d¡ |  |
t|ƒ¡ |  |	d¡ W t |¡ d S t |¡ w )Nr   r  rD   r.  rý  rÉ  rp   r  rj   r  Fr¸  é   r  r  r   r   r   Útest_tailProcessStdoutLog_none}  ó<   ÿ
ÿþ
þzFSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStdoutLog_nonec              	   C   óö   ddl m} tƒ }t|dddd}t|d|ƒ}|  |¡}|jd jd }|jj	}zLt
|dƒ}| |¡ W d   ƒ n1 s>w   Y  |jdddd	\}	}
}|  |jd
¡ |  |d¡ |  |
t|ƒ¡ |  |	|dd … ¡ W t |¡ d S t |¡ w )Nr   r  rD   r.  rý  rÉ  rp   r   rj   r  Téûÿÿÿ)rá  r  r   r   r   r1   r»   rÖ   r®  rŠ  rt   ru   r  r   rG   r5  rw   rx   r  r   r   r   Ú"test_tailProcessStdoutLog_overflowŸ  ó*   ÿ
ÿÿzJSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStdoutLog_overflowc                 C   óx   t ƒ }t|dddd}t|d|ƒ}|  |¡}|jdddd\}}}|  |jd¡ |  |d	¡ |  |d¡ |  |d
¡ d S )NrD   r.  rý  rÉ  r   r  rj   r  Fr¸  )r   r   r   r1   r  r   rG   ©r   rI   r¿   rL   r4   r€   rk   r  r   r   r   Ú$test_tailProcessStdoutLog_unreadable¶  ó   ÿ
ÿzLSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStdoutLog_unreadablec                 C   r  r  )r   r   r   r1   r   ÚtailProcessLogr  r  r   r   r   Ú1test_tailProcessLogAliasedTo_tailProcessStdoutLogÅ  r  zYSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessLogAliasedTo_tailProcessStdoutLogc                 C   r  r  )r   r   r   r1   r#   r:   r¾   ÚtailProcessStderrLogrn   r   r   r   Ú"test_tailProcessStderrLog_bad_nameÍ  r  zJSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStderrLog_bad_namec                 C   r  r  )
r   r   r   r   r   r1   r#   r:   r¾   r-  rÏ   r   r   r   Ú-test_tailProcessStderrLog_bad_name_no_processÔ  r  zUSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStderrLog_bad_name_no_processc              	   C   r  )Nr   r  rD   r.  rý  r  rp   rj   r-  F©rá  r  r   r   r   r1   r»   rÖ   r®  r‹  rt   ru   r-  r5  r   rG   rw   rx   r  r   r   r   Útest_tailProcessStderrLog_allÞ  r  zESupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStderrLog_allc              	   C   r  )Nr   r  rD   r.  rý  r  rp   r  rj   r-  Fr¸  r   r0  r  r   r   r   Útest_tailProcessStderrLog_noneö  r"  zFSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStderrLog_nonec              	   C   r#  )Nr   r  rD   r.  rý  r  rp   r   rj   r-  Tr$  )rá  r  r   r   r   r1   r»   rÖ   r®  r‹  rt   ru   r-  r   rG   r5  rw   rx   r  r   r   r   Ú"test_tailProcessStderrLog_overflow  r&  zJSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStderrLog_overflowc                 C   r'  )NrD   r.  rý  r  r   r  rj   r-  Fr¸  )r   r   r   r1   r-  r   rG   r(  r   r   r   Ú$test_tailProcessStderrLog_unreadable/  r*  zLSupervisorNamespaceXMLRPCInterfaceTests.test_tailProcessStderrLog_unreadablec                 C   óh   ddl m} tƒ }t|ddƒ}t|ƒ}td ƒ}d|i|_td|id}|  |¡}|  	|j
j|jd¡ d S )Nr   r   rD   rÍ  Úbadgroup©r   r   r   r   r   r   rÖ   r   r1   r#   r:   r¾   ÚclearProcessLogs©r   r   rI   r¿   rÈ   ru  rL   r4   r   r   r   Ú'test_clearProcessLogs_bad_name_no_group>  ó   


þzOSupervisorNamespaceXMLRPCInterfaceTests.test_clearProcessLogs_bad_name_no_groupc                 C   r5  )Nr   r   rD   rÍ  r  r7  r9  r   r   r   Ú)test_clearProcessLogs_bad_name_no_processK  r;  zQSupervisorNamespaceXMLRPCInterfaceTests.test_clearProcessLogs_bad_name_no_processc                 C   s`   t ƒ }t|ddƒ}t|ƒ}td ƒ}d|i|_td|id}|  |¡}| d¡ |  |j	d¡ d S )NrD   rÍ  T)
r   r   r   r   rÖ   r   r1   r8  r   Úlogsremoved)r   rI   r¿   rÈ   ru  rL   r4   r   r   r   Útest_clearProcessLogsX  s   


z=SupervisorNamespaceXMLRPCInterfaceTests.test_clearProcessLogsc                 C   sl   ddl m} tƒ }t|ddƒ}t|ƒ}td ƒ}d|i|_d|_td|id}|  	|¡}|  
|j|jd¡ d S )Nr   r   rD   TrÍ  )r   r   r   r   r   r   rÖ   Úerror_at_clearr   r1   rŠ   r   r8  r9  r   r   r   Útest_clearProcessLogs_failedc  s   

zDSupervisorNamespaceXMLRPCInterfaceTests.test_clearProcessLogs_failedc                 C   r  r  )r   r   r   r1   r   ÚclearProcessLogr8  r  r   r   r   Ú.test_clearProcessLogAliasedTo_clearProcessLogso  r  zVSupervisorNamespaceXMLRPCInterfaceTests.test_clearProcessLogAliasedTo_clearProcessLogsc                 C   sÚ   t ƒ }t|dddd}t|dddd}t|d||ƒ}|  |¡}| ¡ }|ƒ  |ƒ }dd	lm} |  |d dd|jj	d
dœ¡ |  |d dd|jj	d
dœ¡ |j
d jd }	|  |	jd¡ |j
d jd }
|  |
jd¡ d S )Nr  rD   r7   rM  r  r„  r  r   r   r  ©r   r  r  r  T)r   r   r   r1   ÚclearAllProcessLogsr   r   r   r:   r"  r»   rÖ   r=  )r   rI   r  r  rL   r4   r   Úresultsr   r  r  r   r   r   Útest_clearAllProcessLogsw  s:   ÿ

ýÿ
ýÿz@SupervisorNamespaceXMLRPCInterfaceTests.test_clearAllProcessLogsc                 C   sø   t ƒ }t|dddd}t|dddd}t|d||ƒ}| ddd	¡ |  |¡}| ¡ }|ƒ  |ƒ }|jd jd }|  |j	d
¡ |jd jd }	|  |	j	d	¡ |  t
|ƒd¡ ddlm}
 |  |d dd|
jjddœ¡ |  |d dd|
jjddœ¡ d S )Nr  rD   r7   rM  r  r„  r  r?  TFr   r   zFAILED: foo:process1rC  r  )r   r   r   rÌ   r1   rD  r»   rÖ   r   r=  r5  r   r   r:   rÕ   r"  )r   rI   r  r  rL   r4   r   rE  r  r  r   r   r   r   Ú!test_clearAllProcessLogs_onefails‘  s>   ÿ

ýÿ
ýÿzISupervisorNamespaceXMLRPCInterfaceTests.test_clearAllProcessLogs_onefailsc                 C   s<   t ƒ }|  |ji ¡ |  |¡}| ¡ }|ƒ }|  |g ¡ d S r   )r   r   r»   r1   rD  )r   rL   r4   r   rE  r   r   r   Ú%test_clearAllProcessLogs_no_processes­  s   
zMSupervisorNamespaceXMLRPCInterfaceTests.test_clearAllProcessLogs_no_processesc                 C   sR   t ƒ }t|ddƒ}t|d|ƒ}|  |¡}d}ddlm} |  |jj|j	d|¡ d S )Nr  rD   rÇ  r   r   )
r   r   r   r1   r   r   r#   r:   r=   ÚsendProcessStdin)r   rI   r  rL   r4   Úthing_not_charsr   r   r   r   Ú<test_sendProcessStdin_raises_incorrect_params_when_not_charsµ  s   

þzdSupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_raises_incorrect_params_when_not_charsc                 C   s6   t ƒ }|  |¡}ddlm} |  |jj|jdd¡ d S )Nr   r   rÙ  úchars for stdin)r   r1   r   r   r#   r:   r¾   rI  )r   rL   r4   r   r   r   r   Ú6test_sendProcessStdin_raises_bad_name_when_bad_processÀ  s   

þz^SupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_raises_bad_name_when_bad_processc                 C   s@   t ƒ }t|dƒ}|  |¡}ddlm} |  |jj|jdd¡ d S )NrD   r   r   r  rL  )	r   r   r1   r   r   r#   r:   r¾   rI  )r   rI   rL   r4   r   r   r   r   Ú5test_sendProcessStdin_raises_bad_name_when_no_processÈ  s   


þz]SupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_raises_bad_name_when_no_processc                 C   s\   t ƒ }t|ddƒ}t|d|ƒ}| ddd¡ |  |¡}ddlm} |  |jj	|j
dd¡ d S )Nr  rD   rÊ   r   r   rL  ©r   r   r   rÌ   r1   r   r   r#   r:   rG  rI  ©r   rI   r  rL   r4   r   r   r   r   Ú=test_sendProcessStdin_raises_not_running_when_not_process_pidÑ  s   

þzeSupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_raises_not_running_when_not_process_pidc                 C   sj   t ƒ }t|ddƒ}t|d|ƒ}| ddd¡ | ddd¡ |  |¡}ddlm} |  |jj	|j
dd	¡ d S )
Nr  rD   rÊ   rÇ  r3  Tr   r   rL  rO  rP  r   r   r   Ú5test_sendProcessStdin_raises_not_running_when_killingÜ  s   

þz]SupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_raises_not_running_when_killingc              	   C   sˆ   t ƒ }t|ddƒ}t|d|ƒ}| ddd¡ | ddd¡ | ddttjt tj¡ƒ¡ |  	|¡}dd	l
m} |  |jj|jdd
¡ d S )Nr  rD   rÊ   rÇ  r3  FÚwrite_exceptionr   r   rL  )r   r   r   rÌ   r…   r†   ÚEPIPErw   rˆ   r1   r   r   r#   r:   rm   rI  rP  r   r   r   Ú<test_sendProcessStdin_raises_no_file_when_write_raises_epipeè  s   ÿ

þzdSupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_raises_no_file_when_write_raises_epipec              	   C   sx   t ƒ }t|ddƒ}t|d|ƒ}| ddd¡ | ddd¡ | ddttjt tj¡ƒ¡ |  	|¡}|  
t|jdd¡ d S )	Nr  rD   rÊ   rÇ  r3  FrS  rL  )r   r   r   rÌ   r…   r†   ÚEINTRrw   rˆ   r1   rŠ   rI  )r   rI   r  rL   r4   r   r   r   Ú-test_sendProcessStdin_reraises_other_oserrorsö  s   ÿ
þzUSupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_reraises_other_oserrorsc                 C   s|   t ƒ }t|ddƒ}t|d|ƒ}| ddd¡ |  |¡}d}|  | d|¡¡ |  d|j¡ |j	d j
d }|  |j|¡ d S )Nr  rD   rÊ   rÇ  s   chars for stdinrI  )r   r   r   rÌ   r1   r¹   rI  r   rG   r»   rÖ   Ústdin_buffer)r   rI   r  rL   r4   Úcharsr  r   r   r   Ú3test_sendProcessStdin_writes_chars_and_returns_true  s   
z[SupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_writes_chars_and_returns_truec                 C   sh   t ƒ }t|ddƒ}t|d|ƒ}| ddd¡ |  |¡}| dtdƒ¡ |jd jd }|  	|j
d¡ d S )Nr  rD   rÊ   rÇ  s   fiÃ­)r   r   r   rÌ   r1   rI  r   r»   rÖ   r   rX  )r   rI   r  rL   r4   r  r   r   r   Ú-test_sendProcessStdin_unicode_encoded_to_utf8  s   
zUSupervisorNamespaceXMLRPCInterfaceTests.test_sendProcessStdin_unicode_encoded_to_utf8c              
      sÌ   t ƒ }t|ƒ}|  |¡}ddlm} g ‰ ‡ fdd„}z|j|fg|jd d …< | dd¡}W g |jd d …< | ¡  ng |jd d …< | ¡  w |  	|¡ |  
tˆ ƒd¡ ˆ d }|  
|jd¡ |  
|jd¡ d S )Nr   ©Úeventsc                    ó   ˆ   | ¡ d S r   ©r¨  ©Úeventr=  r   r   r      ó   zgSupervisorNamespaceXMLRPCInterfaceTests.test_sendRemoteCommEvent_notifies_subscribers.<locals>.callbackrD   r„  r7   )r   r   r1   r   r]  ÚRemoteCommunicationEventÚ	callbacksÚsendRemoteCommEventÚclearr¹   r   r5  r¦  r€   ©r   rI   rL   r4   r]  r   r   ra  r   r=  r   Ú-test_sendRemoteCommEvent_notifies_subscribers  s$   

ÿ

zUSupervisorNamespaceXMLRPCInterfaceTests.test_sendRemoteCommEvent_notifies_subscribersc              
      sø   t ƒ }t|ƒ}|  |¡}ddlm} g ‰ ‡ fdd„}z"|j|fg|jd d …< | tdƒtdƒ¡}W g |jd d …< | 	¡  ng |jd d …< | 	¡  w |  
|¡ |  tˆ ƒd¡ ˆ d }trl|  |jd¡ |  |jd	¡ d S |  |jd¡ |  |jd¡ d S )
Nr   r\  c                    r^  r   r_  r`  r=  r   r   r   7  rb  zjSupervisorNamespaceXMLRPCInterfaceTests.test_sendRemoteCommEvent_unicode_encoded_to_utf8.<locals>.callbacku	   fiÃ­ onceu
   fiÃ­ twicer7   u   fiÃƒÂ­ onceu   fiÃƒÂ­ twice)r   r   r1   r   r]  rc  rd  re  r   rf  r¹   r   r5  r   r¦  r€   rg  r   r=  r   Ú0test_sendRemoteCommEvent_unicode_encoded_to_utf80  s0   
þ
ÿ

zXSupervisorNamespaceXMLRPCInterfaceTests.test_sendRemoteCommEvent_unicode_encoded_to_utf8N){r$   r%   r&   r,   r1   rM   rQ   rU   rY   r\   rc   rf   ri   ro   rz   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-  r6  r8  rA  rD  rE  rH  rL  rR  rS  rT  rU  rW  rX  r`  rh  ri  rn  rp  rw  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/  r1  r2  r3  r4  r:  r<  r>  r@  rB  rF  rG  rH  rK  rM  rN  rQ  rR  rU  rW  rZ  r[  rh  ri  r   r   r   r   r?   B   sò    	
		"$
	$$# !H>	B
"
"	
r?   c                   @   s\   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )Ú#SystemNamespaceXMLRPCInterfaceTestsc                 C   r(   r)   )r   r   ÚSystemNamespaceRPCInterfacer+   r   r   r   r,   P  r-   z3SystemNamespaceXMLRPCInterfaceTests._getTargetClassc                 C   s.   ddl m} tƒ }| |¡}|  ¡ d|fgƒS )Nr   r@   r   )r   rA   r   rB   r,   )r   rA   rL   r   r   r   r   r1   T  s   
ÿz,SystemNamespaceXMLRPCInterfaceTests._makeOnec                 C   s,   |   ¡ }|  |jd ¡ |  |jd ¡ d S )Nr   Úsystem)r1   r¹   Ú
namespacesr3   r   r   r   r5   ]  s   z-SystemNamespaceXMLRPCInterfaceTests.test_ctorc                 C   s@   |   ¡ }| ¡ }| ¡  t| ¡  ¡ ƒ}| ¡  |  ||¡ d S r   )r1   ÚlistMethodsÚsortrº   Ú_listMethodsr¼   r   )r   r4   Úmethodsr¼   r   r   r   Útest_listMethodsb  s   z4SystemNamespaceXMLRPCInterfaceTests.test_listMethodsc                 C   sH   ddl m} |  ¡ }|  |jj|jdg¡ | d¡}|  |ddg¡ d S )Nr   r   úfoo.barzsystem.methodSignatureÚarrayÚstring)r   r   r1   r#   r:   ÚSIGNATURE_UNSUPPORTEDÚmethodSignaturer   )r   r   r4   r   r   r   r   Útest_methodSignaturej  ó   
þ
z8SystemNamespaceXMLRPCInterfaceTests.test_methodSignaturec              	   C   s8  ddl m} g d¢}|  ¡ }| ¡ }| ¡ D ]‚}z| |¡ W n |jy.   td| ƒ‚w | dd¡\}}|j	| }t
||ƒ}	z|	j}
W n tyR   |	j}
Y nw |
jd|
j… }| t|	jƒ¡}g }g }g }g }g }g }g }g }|D ]Y}|d dkrš| |d ¡ | |d ¡ | |d	 ¡ | |d
 ¡ qu|d dkr½| |d ¡ | |d ¡ | |d	 ¡ | |d
 ¡ qu|d d urÎtd|d ||f ƒ‚qut|ƒt|ƒkrätdt|ƒt|ƒ|f ƒ‚|D ]}|  t|ƒtk|t|ƒ||f¡ qæ|D ]
}|  ||v |¡ qûtt|ƒƒD ]}|| || kr'd|| || ||f }t|ƒ‚q|D ]}|  t|ƒtdƒk|¡ q+t|ƒdkrHtd| ƒ‚|D ]}|  t|ƒtk|t|ƒ|f¡ qJ|D ]}|  ||v |¡ q_|D ]}|  t|ƒtdƒk|t|ƒ|f¡ qm|D ]}|  t|ƒtdƒk|t|ƒ|f¡ q„qd S )Nr   r   )	ÚintÚdoubleru  ÚbooleanzdateTime.iso8601Úbase64Úbinaryrt  Ústructz=methodSignature for %s raises RPCError (missing @return doc?)Ú.r7   Úparamr  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)
%sr¸  z'Duplicate @return values in docs for %s)r   r   r1   rp  r¼   rw  r   r   Úsplitrm  ÚgetattrÚ	func_codeÚ	ExceptionÚ__code__Úco_varnamesÚco_argcountÚgettagsÚstrÚ__doc__r¨  r5  r¹   r¦  rz  Úrange)r   r   Ú	_RPCTYPESr4   rq  r¯  Úns_nameÚmethod_nameÚ	namespaceÚmethr   ÚargnamesÚparsedÚplinesÚptypesÚpnamesÚptextsÚrlinesÚrtypesÚrnamesÚrtextsÚthingÚdoclineÚdoctypeÚxrq  ÚdoctextÚdocnamer   r   r   Útest_allMethodDocss  sº   ÿÿ



ÿþÿÿþýýûÿ
ÿ
þ
ÿÿ«z6SystemNamespaceXMLRPCInterfaceTests.test_allMethodDocsc                 C   sR   |   ¡ }| ddgdœdg dœg¡}|  |d | d¡¡ |  |d | ¡ ¡ d S )Núsystem.methodHelp©Ú
methodNameÚparamszsystem.listMethodsr   r7   )r1   Ú	multicallr   Ú
methodHelprn  )r   r4   rE  r   r   r   Útest_multicall_simplevalsÔ  s   
þz=SystemNamespaceXMLRPCInterfaceTests.test_multicall_simplevalsc                 C   sV   ddl m} |  ¡ }| dg dœg¡}| |jjd¡}|j|jdœ}|  	||g¡ d S )Nr   r   zsystem.multicallr¦  z$Recursive system.multicall forbidden)Ú	faultCodeÚfaultString)
r   r   r1   r©  r   r:   r=   r   Útextr   )r   r   r4   rE  ÚeÚrecursion_faultr   r   r   Útest_multicall_recursion_guardÝ  s   ÿ
ÿzBSystemNamespaceXMLRPCInterfaceTests.test_multicall_recursion_guardc                 C   sX   ddl m} |  ¡ }| ddig¡}|j}||ju r"|ƒ }||ju s|  |d g ¡ d S )Nr   r  r§  zsupervisor.stopAllProcesses)r   r  r1   r©  r	  r   )r   r  r4   r   rE  r   r   r   Útest_multicall_nested_callbacké  s   ÿ

ÿzBSystemNamespaceXMLRPCInterfaceTests.test_multicall_nested_callbackc                 C   sH   ddl m} |  ¡ }|  |jj|jdg¡ | d¡}|  ||jj¡ d S )Nr   r   rs  r¥  )	r   r   r1   r#   r:   rv  rª  r   r  )r   r   r4   Úhelpr   r   r   Útest_methodHelpó  ry  z3SystemNamespaceXMLRPCInterfaceTests.test_methodHelpN)r$   r%   r&   r,   r1   r5   rr  rx  r¤  r«  r±  r²  r´  r   r   r   r   rj  O  s    		a	
rj  c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTest_make_allfuncc                 K   s    ddl m} ||||fi |¤ŽS )Nr   )Úmake_allfunc)Úsupervisor.rpcinterfacer¶  )r   rÖ   Ú	predicateÚfuncÚextra_kwargsr¶  r   r   r   Ú_callFUTý  s   zTest_make_allfunc._callFUTc           	         s|   ddl m‰  ‡ fdd„}tƒ }t|ddƒ}t|ƒ}t|ƒ}dd„ }|  ||fg||¡}|ƒ }|  |d	ddˆ jj	d
œg¡ d S )Nr   r   c                    ó   ˆ   ˆ jj¡‚r   ©r   r:   rÕ   ©r   r!   r   r   r   Úcb	  rb  z7Test_make_allfunc.test_rpcerror_nocallbacks.<locals>.cbr  rD   c                 S   rJ  rø   r   ©rv  r   r   r   Úpred		  r   z9Test_make_allfunc.test_rpcerror_nocallbacks.<locals>.predrÕ   )r  r  r   r  )
r   r   r   r   r   r   r»  r   r:   rÕ   ©	r   r¿  rI   r  rv  r  rÁ  Úafr   r   r   r   Útest_rpcerror_nocallbacks	  s    ýÿz+Test_make_allfunc.test_rpcerror_nocallbacksc           	      C   sh   dd„ }t ƒ }t|ddƒ}t|ƒ}t|ƒ}dd„ }|  ||fg||¡}|ƒ }|  |ddddd	œg¡ d S )
Nc                 [   s   dd„ S )Nc                   S   rJ  rÞ  r   r   r   r   r   r¡   	  r¢   zTTest_make_allfunc.test_func_callback_normal_return_val.<locals>.cb.<locals>.<lambda>r   r¾  r   r   r   r¿  	  r©   zBTest_make_allfunc.test_func_callback_normal_return_val.<locals>.cbr  rD   c                 S   rJ  rø   r   rÀ  r   r   r   rÁ  	  r   zDTest_make_allfunc.test_func_callback_normal_return_val.<locals>.predr  éP   )r  r  r  r   )r   r   r   r   r»  r   rÂ  r   r   r   Ú$test_func_callback_normal_return_val	  s   þþz6Test_make_allfunc.test_func_callback_normal_return_valc           	         sx   ddl m‰  ‡ fdd„}tƒ }t|ddƒ}t|ƒ}t|ƒ}dd„ }|  ||fg||¡}|ƒ }|  |d	dd
ddœg¡ d S )Nr   r   c                    ó   ‡ fdd„}|S )Nc                      r¼  r   r½  r   r   r   r   Úinner(	  rb  zOTest_make_allfunc.test_func_callback_raises_RPCError.<locals>.cb.<locals>.innerr   ©r   r!   rÈ  r   r   r   r¿  '	  ó   z@Test_make_allfunc.test_func_callback_raises_RPCError.<locals>.cbr  rD   c                 S   rJ  rø   r   rÀ  r   r   r   rÁ  /	  r   zBTest_make_allfunc.test_func_callback_raises_RPCError.<locals>.predrÕ   é   )r  r  r  r   )r   r   r   r   r   r   r»  r   rÂ  r   r   r   Ú"test_func_callback_raises_RPCError%	  s"   ýþz4Test_make_allfunc.test_func_callback_raises_RPCErrorc           	         sl   ddl m‰  ‡ fdd„}tƒ }t|ddƒ}t|ƒ}t|ƒ}dd„ }|  ||fg||¡}|ƒ }|  |ˆ ¡ d S )	Nr   rB  c                    rÇ  )Nc                      rž   r   r   r   rB  r   r   rÈ  >	  r   zTTest_make_allfunc.test_func_callback_returns_NOT_DONE_YET.<locals>.cb.<locals>.innerr   rÉ  rB  r   r   r¿  =	  rÊ  zETest_make_allfunc.test_func_callback_returns_NOT_DONE_YET.<locals>.cbr  rD   c                 S   rJ  rø   r   rÀ  r   r   r   rÁ  E	  r   zGTest_make_allfunc.test_func_callback_returns_NOT_DONE_YET.<locals>.pred)rC  r	  r   r   r   r   r»  r   rÂ  r   rB  r   Ú'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Í  r   r   r   r   rµ  ü  s    rµ  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTest_make_main_rpcinterfacec                 C   s   ddl m} ||ƒS )Nr   )Úmake_main_rpcinterface)r·  rÏ  )r   rL   rÏ  r   r   r   r»  O	  s   z$Test_make_main_rpcinterface._callFUTc                 C   s   |   d ¡}|  |jjd¡ d S )NrB   )r»  r   Ú	__class__r$   )r   r"   r   r   r   Útest_itS	  s
   
þz#Test_make_main_rpcinterface.test_itN)r$   r%   r&   r»  rÑ  r   r   r   r   rÎ  N	  s    rÎ  c                   @   s   e Zd Zdd„ ZdS )r9   c                 C   rJ  )Nr8   r   r   r   r   r   Úhello]	  r   zDummyRPCInterface.helloN)r$   r%   r&   rÒ  r   r   r   r   r9   \	  s    r9   c                   C   s   t  tjt ¡S r   )ÚunittestÚfindTestCasesÚsysÚmodulesr$   r   r   r   r   Ú
test_suite`	  s   r×  Ú__main__)ÚdefaultTest) rÓ  rÕ  r|  rw   rÀ  r†   Úsupervisor.tests.baser   r   r   r   r   r   r   r	   r
   rá  r   r   re  r   ÚTestCaser   r'   r?   rj  rµ  rÎ  r9   r×  r$   Úmainr   r   r   r   Ú<module>   sZ                    .Rÿ