o
    Ͱi#                    @   s(  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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   W/home/ubuntu/.local/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_traverse2   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 ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd ZcddĄ ZdddƄ ZeddȄ Zfddʄ Zgdd̄ Zhdd΄ ZiddЄ Zjdd҄ ZkddԄ Zlddք Zmdd؄ Znddڄ Zodd܄ Zpddބ Zqdd Zrdd Zsdd Ztdd Zudd Zvdd Zwdd Zxdd Zydd ZzdS )'SupervisorNamespaceXMLRPCInterfaceTestsc                 C   r(   )Nr   rpcinterface)r   rA   SupervisorNamespaceRPCInterface)r   rA   r   r   r   r,   B   r-   z7SupervisorNamespaceXMLRPCInterfaceTests._getTargetClassc                 O   r.   r   r/   r0   r   r   r   r1   F   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_updateI   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_getAPIVersionT   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_getSupervisorVersiona   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_getIdentificationj   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_getStateq   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+   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxr7   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_started9  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_stateE  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_nameU     

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_foundg     

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_commands  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{Gz?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>.spawnd   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_startAllProcessesE  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_nowaiti  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_stopAllProcesses8  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_numberv     
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_nosuchgroup/  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_getAllConfigInfox  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_NONEB  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_stateS  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_processe  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_maxintn  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_process0  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_nameS     


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_processZ     



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_alld  ,   
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_processJ  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_clearProcessLogsW  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_failedb  s   

zDSupervisorNamespaceXMLRPCInterfaceTests.test_clearProcessLogs_failedc                 C   r  r  )r   r   r   r1   r   clearProcessLogr8  r  r   r   r   .test_clearProcessLogAliasedTo_clearProcessLogsn  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_clearAllProcessLogsv  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   6  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_utf8/  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?   A   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,   O  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   S  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_listMethodsa  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_methodSignaturei     

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rtd|d ||f qut|t|krtdt|t||f |D ]}| t|tk|t|||f q|D ]
}| ||v | qt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 qq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_allMethodDocsr  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  N  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  D	  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  N	  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_itR	  s
   
z#Test_make_main_rpcinterface.test_itN)r$   r%   r&   r  r  r   r   r   r   r  M	  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   Z	  s    r9   )unittestr|  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   r   r   <module>   sP                    .R