o
    S۷iA                    @   s   d dl 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 jZG dd de jZG dd de jZG dd dZG dd dZG dd dZG dd dZG dd dZdS )    Nxmlrpc)StringIO)	xmlrpclib)LSBInitExitStatusesLSBStatusExitStatuses)DummyRPCServerc                   @   sL   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S )fgthread_Testsc                 C      ddl m} |S )Nr   )fgthread)supervisor.supervisorctlr   )selfr    r   Y/home/ubuntu/vllm_env/lib/python3.10/site-packages/supervisor/tests/test_supervisorctl.py_getTargetClass	      zfgthread_Tests._getTargetClassc                 C   s   |   ||S Nr   )r   programctlr   r   r   _makeOne      zfgthread_Tests._makeOnec                 C   s,   t  }t|}| d |}| |jd d S NF)DummyClientOptionsDummyControllerr   assertEqualkilled)r   optionsr   instr   r   r   	test_ctor   s   zfgthread_Tests.test_ctorc                 C   s:   t  }t|}| d |}|d dd }| ||j d S )Ncall)r   r   r   globaltracer   
localtracer   r   r   r   resultr   r   r   test_globaltrace_call   s
   z$fgthread_Tests.test_globaltrace_callc                 C   s8   t  }t|}| d |}|d d d }| |d  d S r   )r   r   r   r!   r   r#   r   r   r   test_globaltrace_noncall   s
   z'fgthread_Tests.test_globaltrace_noncallc              
   C   sv   t  }t|}| d |}d|_z	|d dd  W n ty3 } z| |jd  W Y d }~d S d }~ww | d d S )NTlinez(No exception thrown. Excepted SystemExit)	r   r   r   r   r"   
SystemExitr   codefail)r   r   r   r   er   r   r   test_localtrace_killed_whyline$   s   z-fgthread_Tests.test_localtrace_killed_whylinec                 C   s@   t  }t|}| d |}d|_|d d d }| ||j d S NT)r   r   r   r   r"   r   r#   r   r   r   "test_localtrace_killed_not_whyline0   s   z1fgthread_Tests.test_localtrace_killed_not_whylinec                 C   st   t  }t|}| d |}d|_G dd dt}| |_| |_|  | |j | |jj	 | |jj	 d S )NTc                   @      e Zd Zdd ZdS )z0fgthread_Tests.test_kill.<locals>.DummyCloseablec                 S   
   d| _ d S r-   closedr   r   r   r   close>      
z6fgthread_Tests.test_kill.<locals>.DummyCloseable.closeN)__name__
__module____qualname__r4   r   r   r   r   DummyCloseable=       r9   )
r   r   r   r   objectoutput_handlererror_handlerkill
assertTruer2   )r   r   r   r   r9   r   r   r   	test_kill8   s   zfgthread_Tests.test_killN)r6   r7   r8   r   r   r   r%   r&   r,   r.   r@   r   r   r   r   r	      s    r	   c                   @   s4  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'dKS )LControllerTestsc                 C   r
   )Nr   )
Controller)r   rB   )r   rB   r   r   r   r   H   r   zControllerTests._getTargetClassc                 C   s   |   |S r   r   r   r   r   r   r   r   L   s   zControllerTests._makeOnec                 C   s(   t  }| |}| |j|jd  d S )Nz> )r   r   r   promptr   r   
controllerr   r   r   r   P   s   
zControllerTests.test_ctorc                 C   s(   t  }| |}| }| |d d S r-   )r   r   upcheckr   r   r   rF   r$   r   r   r   test__upcheckU   s   
zControllerTests.test__upcheckc                 C   sP   t  }dd |jj_| |}t |_| }| |d | |j	 d d S )Nc                  W      dS )Nz1.0r   xr   r   r   <lambda>]       zDControllerTests.test__upcheck_wrong_server_version.<locals>.<lambda>FzvSorry, this version of supervisorctl expects to talk to a server with API version 3.0, but the remote version is 1.0.
)
r   _server
supervisor
getVersionr   r   stdoutrG   r   getvaluerH   r   r   r   "test__upcheck_wrong_server_version[   s   
z2ControllerTests.test__upcheck_wrong_server_versionc                    sd   t  }ddlm   fdd}||jj_| |}t |_|	 }| 
|d | 
|j d d S )Nr   Faultsc                         t  jd)Nduh)r   FaultUNKNOWN_METHODr   rU   r   r   rQ   j   r   z@ControllerTests.test__upcheck_unknown_method.<locals>.getVersionFzSorry, supervisord responded but did not recognize the supervisor namespace commands that supervisorctl uses to control it.  Please check that the [rpcinterface:supervisor] section is enabled in the configuration file (see sample.conf).
)r   supervisor.xmlrpcrV   rO   rP   rQ   r   r   rR   rG   r   rS   )r   r   rQ   rF   r$   r   rU   r   test__upcheck_unknown_methodg   s   

z,ControllerTests.test__upcheck_unknown_methodc                    s^   t  }ddlm   fdd}||jj_| |}t |_| 	t
j|j | |jtj d S )Nr   rU   c                     rW   N )r   rY   FAILEDargkwrU   r   r   f|   r   zEControllerTests.test__upcheck_reraises_other_xmlrpc_faults.<locals>.f)r   r[   rV   rO   rP   rQ   r   r   rR   assertRaisesr   rY   rG   r   
exitstatusr   GENERICr   r   rc   rF   r   rU   r   *test__upcheck_reraises_other_xmlrpc_faultsy   s   

z:ControllerTests.test__upcheck_reraises_other_xmlrpc_faultsc                       t  }dd ldd l  fdd}||jj_| |}t |_|	 }| 
|d |j }| d|v  | 
|jtj d S )Nr   c                          jdNznobody homeerrorECONNREFUSEDr`   errnosocketr   r   raise_fault   r   zTControllerTests.test__upcheck_catches_socket_error_ECONNREFUSED.<locals>.raise_faultFzrefused connection)r   rq   rp   rO   rP   rQ   r   r   rR   rG   r   rS   r?   re   r   INSUFFICIENT_PRIVILEGESr   r   rr   rF   r$   outputr   ro   r   /test__upcheck_catches_socket_error_ECONNREFUSED      


z?ControllerTests.test__upcheck_catches_socket_error_ECONNREFUSEDc                    ri   )Nr   c                     rj   rk   rm   ENOENTr`   ro   r   r   rr      r   zNControllerTests.test__upcheck_catches_socket_error_ENOENT.<locals>.raise_faultFzno such file)r   rq   rp   rO   rP   rQ   r   r   rR   rG   r   rS   r?   re   r   NOT_RUNNINGrt   r   ro   r   )test__upcheck_catches_socket_error_ENOENT   rw   z9ControllerTests.test__upcheck_catches_socket_error_ENOENTc                    sT   t  }dd ldd l  fdd}||jj_| |}t |_| 	j
|j d S )Nr   c                     rj   r]   )rm   EBADFr`   ro   r   r   rc      r   zEControllerTests.test__upcheck_reraises_other_socket_faults.<locals>.f)r   rq   rp   rO   rP   rQ   r   r   rR   rd   rm   rG   rg   r   ro   r   *test__upcheck_reraises_other_socket_faults   s   

z:ControllerTests.test__upcheck_reraises_other_socket_faultsc                 C   sP   t  }| |}t |_t }|f|j_|d}| |d  | |j	d d S )NhelpT)
r   r   r   rR   DummyPluginr   pluginsonecmdr   helped)r   r   rF   pluginr$   r   r   r   test_onecmd   s   


zControllerTests.test_onecmdc                 C   sd   t  }| |}t |_t }|f|j_d|_|d | 	|j d|_|d | 
|j d S )NFr~   r^   )r   r   r   rR   r   r   r   r   r   r?   assertFalse)r   r   rF   r   r   r   r   .test_onecmd_empty_does_not_repeat_previous_cmd   s   



z>ControllerTests.test_onecmd_empty_does_not_repeat_previous_cmdc                 C   s:   t  }| |}t |_i |_|d | |jd  d S )Nr~   )r   r   r   rR   _complete_infor   r   rE   r   r   r   #test_onecmd_clears_completion_cache   s   

z3ControllerTests.test_onecmd_clears_completion_cachec                 C   sH   t  }| |}t |_|d | |j d | |jtj	 d S )Nbadcmdz*** Unknown syntax: badcmd
)
r   r   r   rR   r   r   rS   re   r   rf   rE   r   r   r   test_onecmd_bad_command_error   s   

z-ControllerTests.test_onecmd_bad_command_errorc                 C   \   t  }| |}t |_dg|_|jdddd}| |d |jdddd}| |d  d S )Nr~   r^   r   r'   help    r   r   r   rR   vocabcompleter   rH   r   r   r   test_complete_action_empty      
z*ControllerTests.test_complete_action_emptyc                 C   r   )Nr~   hr   r   r   r   r   rH   r   r   r   test_complete_action_partial   r   z,ControllerTests.test_complete_action_partialc                 C   s@   t  }| |}t |_dg|_|jdddd}| |d d S )Nr~   r   r   r   r   rH   r   r   r   test_complete_action_whole   s   
z*ControllerTests.test_complete_action_wholec                 C   s8   t  }| |}t |_|jdddd}| |d  d S )Nbadr   r   )r   r   r   rR   r   r   rH   r   r   r   *test_complete_unknown_action_uncompletable   s
   
z:ControllerTests.test_complete_unknown_action_uncompletablec                 C   B   t  }| |}t |_ddg|_|jdddd}| |d  d S )Nr~   addr^   r   zbad r   r   rH   r   r   r   .test_complete_unknown_action_arg_uncompletable      

z>ControllerTests.test_complete_unknown_action_arg_uncompletablec                 C   sz   t  }| |}t |_ddg|_|jdddd}| |d |jdddd}| |d |jdd	dd}| |d  d S )
Nr~   startr^   r   r   r   r   start    r   rH   r   r   r   test_complete_help_empty     

z(ControllerTests.test_complete_help_emptyc                 C   ^   t  }| |}t |_ddg|_|jdddd}| |d |jdddd}| |d  d S )	Nr~   r   her   zhelp her   r   r   r   rH   r   r   r   test_complete_help_action     

z)ControllerTests.test_complete_help_actionc                 C   s   t  }| |}t |_ddg|_|jdddd}| |d |jdddd}| |d	 |jdd
dd}| |d |jdddd}| |d |jdddd}| |d  d S )Nr~   r   r^   r   r   r   foo r   bar r   zbaz:baz_01    zbaz:*    r   rH   r   r   r   test_complete_start_empty  s   

z)ControllerTests.test_complete_start_emptyc                 C   r   )	Nr~   r   rc   r   zstart fr   r   r   r   rH   r   r   r   test_complete_start_no_colon,  r   z,ControllerTests.test_complete_start_no_colonc                 C   sz   t  }| |}t |_ddg|_|jdddd}| |d |jdddd}| |d	 |jdd
dd}| |d  d S )Nr~   r   foo:r   z
start foo:r   zfoo:foo r   zfoo:* r   r   rH   r   r   r   test_complete_start_with_colon6  r   z.ControllerTests.test_complete_start_with_colonc                 C   r   )Nr~   r   r   r   z	start badr   r   rH   r   r   r   !test_complete_start_uncompletableB  r   z1ControllerTests.test_complete_start_uncompletablec                 C   sf   t  }| |}t |_ddg|_|jdddd}| |d  dd }||jjj	_
|jdd	dd d S )
Nr~   r   r^   r   r   r   c                  _   s   t d)Nz(should not have called getAllProcessInfo)	Exceptionr`   r   r   r   rc   Q  s   z<ControllerTests.test_complete_caches_process_info.<locals>.fr   )r   r   r   rR   r   r   assertNotEqualr   rO   rP   getAllProcessInfo)r   r   rF   r$   rc   r   r   r   !test_complete_caches_process_infoJ  s   

z1ControllerTests.test_complete_caches_process_infoc                 C   s   t  }| |}t |_ddg|_|jdddd}| |d |jdddd}| |d	 |jdd
dd}| |d |jdddd}| |d  d S )Nr~   r   r^   r   zadd r   r   r   r   r   zbaz r   r   rH   r   r   r   test_complete_add_emptyV  s   

z'ControllerTests.test_complete_add_emptyc                 C   r   )Nr~   r   r   r   zadd badr   r   rH   r   r   r   test_complete_add_uncompletabled  r   z/ControllerTests.test_complete_add_uncompletablec                 C   r   )	Nr~   r   rc   r   zadd fr   r   r   r   rH   r   r   r   test_complete_add_groupl  r   z'ControllerTests.test_complete_add_groupc                 C   r   )Nr~   reloadr^   r   zreload r   r   rH   r   r   r   &test_complete_reload_arg_uncompletablev  r   z6ControllerTests.test_complete_reload_arg_uncompletablec                 C   s"   t  }| |}| |jd d S )Nz*** No help on %s)r   r   r   nohelprE   r   r   r   test_nohelp~  s   
zControllerTests.test_nohelpc                 C   sH   t  }| |}t |_|d}|j }| |d  | |d d S )Nr^   
foo helped)r   r   r   rR   do_helprS   r   r   r   rF   resultshelpvalr   r   r   test_do_help  s   


zControllerTests.test_do_helpc                 C   sJ   t  }| |}t |_|d}| |d  |j }| d|v  d S )Nr~   zhelp		Print a list)r   r   r   rR   r   r   rS   r?   r   r   r   r   test_do_help_for_help  s   


z%ControllerTests.test_do_help_for_helpc                 C   s2   t  }| |}| }| j}| || d S r   )r   r   get_supervisorgetServerProxyrP   r   r   r   rF   proxyexpectedr   r   r   <test_get_supervisor_returns_serverproxy_supervisor_namespace  s
   

zLControllerTests.test_get_supervisor_returns_serverproxy_supervisor_namespacec                 C   s0   t  }| |}| }| }| || d S r   )r   r   get_server_proxyr   r   r   r   r   r   6test_get_server_proxy_with_no_args_returns_serverproxy  s
   
zFControllerTests.test_get_server_proxy_with_no_args_returns_serverproxyc                 C   s4   t  }| |}|d}| j}| || d S )Nsystem)r   r   r   r   r   r   r   r   r   r   ;test_get_server_proxy_with_namespace_returns_that_namespace  s
   


zKControllerTests.test_get_server_proxy_with_namespace_returns_that_namespacec                 C   sL   ddl m} g }| }| t|jdk g |_|j|td | | d S )Nr   )ClientOptions)doc)supervisor.optionsr   r?   lensearchpathsrealize__doc__r   )r   r   argsr   r   r   r   #test_real_controller_initialization  s   z3ControllerTests.test_real_controller_initializationN)(r6   r7   r8   r   r   r   rI   rT   r\   rh   rv   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   rA   G   sL    
	




		rA   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestControllerPluginBasec                 C   r
   )Nr   )ControllerPluginBase)r   r   )r   r   r   r   r   r     r   z(TestControllerPluginBase._getTargetClassc                 O   0   |   }t }t|}||g|R i |}|S r   r   r   r   r   ra   rb   klassr   r   r   r   r   r   r     
   z!TestControllerPluginBase._makeOnec                 C   s   |   }|d }| |d  | |jj d | t|jjd |jjd }| |d d | |d g  | |d d | |d d d S )	N
r   r   z%unnamed commands (type help <topic>):r      r   P   r   r   r   r   rR   rS   r   topics_printed)r   r   r$   topicsr   r   r   test_do_help_noarg  s   
z+TestControllerPluginBase.test_do_help_noargc                 C   sJ   |   }|d}| |d  | |jj d | t|jjd d S )Nfoozno help on foo
r   r   r   r   r$   r   r   r   test_do_help_witharg  s
   
z-TestControllerPluginBase.test_do_help_withargN)r6   r7   r8   r   r   r   r   r   r   r   r   r     s
    r   c                   @   sx  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 Zzdd Z{dd Z|dd Z}dd Z~dd Zdd Zdd Zd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d1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zd=S (>  TestDefaultControllerPluginc                 C   r
   )Nr   )DefaultControllerPlugin)r   r   )r   r   r   r   r   r     r   z+TestDefaultControllerPlugin._getTargetClassc                 O   r   r   r   r   r   r   r   r     r   z$TestDefaultControllerPlugin._makeOnec                 C   V   |   }|d}| |d  |jj d}| |d d | |jjtj	 d S )Nr^   r   r   zError: too few arguments
r   do_tailr   r   rR   rS   splitre   r   rf   r   r   r$   linesr   r   r   test_tail_toofewargs     
z0TestDefaultControllerPlugin.test_tail_toofewargsc                 C   r   )Nzone two three fourr   r   zError: too many argumentsr   r   r   r   r   test_tail_toomanyargs  r   z1TestDefaultControllerPlugin.test_tail_toomanyargsc                 C   r   )N-fr   r   z!Error: tail requires process namer   r   r   r   r   test_tail_f_noprocname  r   z2TestDefaultControllerPlugin.test_tail_f_noprocnamec                 C   r   )Nz-z foor   r   Error: bad argument -zr   r   r   r   r   test_tail_bad_modifier  r   z2TestDefaultControllerPlugin.test_tail_bad_modifierc                 C   T   |   }|d}| |d  |jj d}| t|d | |d d d S )Nr   r      r   stdout liner   r   r   r   rR   rS   r   r   r   r   r   r   test_tail_defaults     
z.TestDefaultControllerPlugin.test_tail_defaultsc                 C   f   |   }|d}| |d  |jj d}| t|d | |d d | |jjt	j
 d S )NNO_FILEr   r   r   zNO_FILE: ERROR (no log file)r   r   r   r   rR   rS   r   r   re   r   rf   r   r   r   r   test_tail_no_file     
z-TestDefaultControllerPlugin.test_tail_no_filec                 C   r   )Nr_   r   r   r   z)FAILED: ERROR (unknown error reading log)r   r   r   r   r   test_tail_failed  r   z,TestDefaultControllerPlugin.test_tail_failedc                 C   r   )NBAD_NAMEr   r   r   z&BAD_NAME: ERROR (no such process name)r   r   r   r   r   test_tail_bad_name   r   z.TestDefaultControllerPlugin.test_tail_bad_namec                 C   r   )Nz-10 foor   r   r   z	dout liner   r   r   r   r   test_tail_bytesmodifier)  r   z3TestDefaultControllerPlugin.test_tail_bytesmodifierc                 C   r   )Nz
foo stdoutr   r   r   r   r   r   r   r   r   ,test_tail_explicit_channel_stdout_nomodifier1  r   zHTestDefaultControllerPlugin.test_tail_explicit_channel_stdout_nomodifierc                 C   r   )Nz
foo stderrr   r   r   zstderr liner   r   r   r   r   ,test_tail_explicit_channel_stderr_nomodifier9  r   zHTestDefaultControllerPlugin.test_tail_explicit_channel_stderr_nomodifierc                 C   P   |   }|d}| |d  |jj  }| |d | |jjtj	 d S )Nz	foo fudgezError: bad channel 'fudge')
r   r   r   r   rR   rS   stripre   r   rf   r   r   r$   valuer   r   r   'test_tail_explicit_channel_unrecognizedA     
zCTestDefaultControllerPlugin.test_tail_explicit_channel_unrecognizedc                    L   |   }dd |j_g   fdd}||jjjj_|d |  g  d S )Nc                   S   rJ   r   r   r   r   r   r   rM   K  rN   zFTestDefaultControllerPlugin.test_tail_upcheck_failed.<locals>.<lambda>c                          d d S r-   appendr`   calledr   r   rc   M  r   z?TestDefaultControllerPlugin.test_tail_upcheck_failed.<locals>.fr   )	r   r   rG   r   rO   rP   readProcessStdoutLogr   r   r   r   rc   r   r  r   test_tail_upcheck_failedI     
z4TestDefaultControllerPlugin.test_tail_upcheck_failedc                 C   .   |   }|  |jj }| d|v  d S )Nzstatus <name>)r   help_statusr   rR   rS   r?   r   r   outr   r   r   test_status_helpS     z,TestDefaultControllerPlugin.test_status_helpc                    r  )Nc                   S   rJ   r   r   r   r   r   r   rM   [  rN   zHTestDefaultControllerPlugin.test_status_upcheck_failed.<locals>.<lambda>c                     r  r-   r  r`   r  r   r   rc   ]  r   zATestDefaultControllerPlugin.test_status_upcheck_failed.<locals>.fr^   )	r   r   rG   r   rO   rP   r   	do_statusr   r  r   r  r   test_status_upcheck_failedY  r  z6TestDefaultControllerPlugin.test_status_upcheck_failedc                 C   sJ   |   }|d}| |d  |jj d}| |d dd d S )Nr^   r   r   RUNNING!   )r   r  r   r   rR   rS   r   indexr   r   r   r   *test_status_table_process_column_min_widthc  s
   
zFTestDefaultControllerPlugin.test_status_table_process_column_min_widthc                 C   sv   |   }|jj}dd }||jj_| |dd  |jj	 
d}| |d dd | |d dd d S )	Nc                  _   sD   ddl m} ddd|jddddddd	
d
d
d|jddddddd	
gS )Nr   ProcessStatesږfoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoofoor      r  r^   foo description
namegrouppidstate	statenamer   stopspawnerrnowdescriptionbarr   bar description)supervisor.statesr"  r  FATALra   rb   r"  r   r   r   rc   m  s0   zOTestDefaultControllerPlugin.test_status_table_process_column_expands.<locals>.fr^   r   r   r     r   )r   r   r   rO   rP   r   r   r  rR   rS   r   r  )r   r   r   rc   r   r   r   r   (test_status_table_process_column_expandsj  s   
zDTestDefaultControllerPlugin.test_status_table_process_column_expandsc                 C      |   }|d}| |d  |jj d}| |d d dg d | |d d dg d | |d d dg d | |jjtj	 d S )	Nr^   r   r   r   r   r  r%  r   r0  r3  r1  z
baz:baz_01STOPPEDzbaz description
r   r  r   r   rR   rS   r   re   r   rz   r  r   r   r    test_status_all_processes_no_arg     
z<TestDefaultControllerPlugin.test_status_all_processes_no_argc                 C   sb   |   }|d}| |d  | |jjtj |jj 	d}| |d 	d dg d d S )Nr   r   r   r   r8  )
r   r  r   r   re   r   SUCCESSrR   rS   r   r  r   r   r   test_status_success  s   
z/TestDefaultControllerPlugin.test_status_successc                 C   sL   |   }|d}| |d  |jj }| d| | |jjtj d S )Nunknownprogramz(unknownprogram: ERROR (no such process)
)	r   r  r   r   rR   rS   re   r   UNKNOWNr  r   r   r   test_status_unknown_process     
z7TestDefaultControllerPlugin.test_status_unknown_processc                 C   r7  )	Nallr   r   r   r8  r   r9  r:  r<  r  r   r   r   !test_status_all_processes_all_arg  r>  z=TestDefaultControllerPlugin.test_status_all_processes_all_argc                 C   s\   |   }|d}| |d  |jj  }| |d dg d | |jjt	j
 d S )Nr   r   r8  )r   r  r   r   rR   rS   r  r   re   r   r?  r  r   r   r   test_status_process_name  s   
z4TestDefaultControllerPlugin.test_status_process_namec                 C   sb   |   }|d}| |d  |jj d}| |d d dg d | |jjtj	 d S )Nzbaz:*r   r   r   r:  r<  r  r   r   r   test_status_group_name  s   
z2TestDefaultControllerPlugin.test_status_group_namec                 C   s~   |   }|d}| |d  |jj d}| |d d dg d | |d d dg d | |jjtj	 d S )Nz	foo baz:*r   r   r   r8  r   r:  r<  r  r   r   r   test_status_mixed_names  s   
z3TestDefaultControllerPlugin.test_status_mixed_namesc                 C   r   )Nz
badgroup:*r   r   zbadgroup: ERROR (no such group)
r   r  r   r   rR   rS   r   re   r   rB  r  r   r   r   test_status_bad_group_name  r   z6TestDefaultControllerPlugin.test_status_bad_group_namec                 C   r   )N
badprocessr   r   z#badprocess: ERROR (no such process)rJ  r  r   r   r   test_status_bad_process_name  r   z8TestDefaultControllerPlugin.test_status_bad_process_namec                 C   r   )Nzbadgroup:badprocessr   r   z,badgroup:badprocess: ERROR (no such process)rJ  r  r   r   r   'test_status_bad_process_name_with_group  s   
zCTestDefaultControllerPlugin.test_status_bad_process_name_with_groupc                 C   r  )Nzstart <name>)r   
help_startr   rR   rS   r?   r  r   r   r   test_start_help  r  z+TestDefaultControllerPlugin.test_start_helpc                 C   V   |   }|d}| |d  d}| |jj dd | | |jjtj	 d S )Nr^   z$Error: start requires a process namer   r   )
r   do_startr   r   rR   rS   r   re   r   INVALID_ARGSr   r   r$   r   r   r   r   test_start_fail     
z+TestDefaultControllerPlugin.test_start_failc                 C   H   |   }|d}| |d  | |jj d | |jjtj d S Nr   "BAD_NAME: ERROR (no such process)
	r   rR  r   r   rR   rS   re   r   rf   r   r   r   r   test_start_badname     
z.TestDefaultControllerPlugin.test_start_badnamec                 C   rW  )Nr   zNO_FILE: ERROR (no such file)
rZ  r   r   r   r   test_start_no_file  r\  z.TestDefaultControllerPlugin.test_start_no_filec                 C   rW  )NNOT_EXECUTABLEz/NOT_EXECUTABLE: ERROR (file is not executable)
rZ  r   r   r   r   test_start_not_executable  r\  z5TestDefaultControllerPlugin.test_start_not_executablec                 C   rW  )NALREADY_STARTEDz)ALREADY_STARTED: ERROR (already started)
	r   rR  r   r   rR   rS   re   r   r?  r   r   r   r   test_start_alreadystarted  r\  z5TestDefaultControllerPlugin.test_start_alreadystartedc                 C   rW  )NSPAWN_ERRORz!SPAWN_ERROR: ERROR (spawn error)
	r   rR  r   r   rR   rS   re   r   rz   r   r   r   r   test_start_spawnerror  r\  z1TestDefaultControllerPlugin.test_start_spawnerrorc                 C   sL   |   }|d}| |d  d}| |jj | | |jjtj d S )NABNORMAL_TERMINATIONz3ABNORMAL_TERMINATION: ERROR (abnormal termination)
rd  rT  r   r   r   test_start_abnormaltermination#  s   
z:TestDefaultControllerPlugin.test_start_abnormalterminationc                 C   6   |   }|d}| |d  | |jj d d S )Nr   foo: started
)r   rR  r   r   rR   rS   r   r   r   r   test_start_one_success+  s   
z2TestDefaultControllerPlugin.test_start_one_successc                 C   rW  )Nfoo:foori  ra  r   r   r   r   &test_start_one_with_group_name_success2  r\  zBTestDefaultControllerPlugin.test_start_one_with_group_name_successc                 C   rW  )Nfoo barzfoo: started
bar: started
ra  r   r   r   r   test_start_many:  r\  z+TestDefaultControllerPlugin.test_start_manyc                 C   rW  )Nr   z(foo:foo_00: started
foo:foo_01: started
ra  r   r   r   r   test_start_groupB     
z,TestDefaultControllerPlugin.test_start_groupc                 C   rW  Nz	BAD_NAME: BAD_NAME: ERROR (no such group)
)	r   rR  r   r   rR   rS   re   r   rS  r   r   r   r   test_start_group_bad_nameL  r\  z5TestDefaultControllerPlugin.test_start_group_bad_namec                 C   rW  )NrE  zDfoo: started
foo2: started
failed_group:failed: ERROR (spawn error)
rd  r   r   r   r   test_start_allT     
z*TestDefaultControllerPlugin.test_start_allc                    V   |   }dd |j_g   fdd}|jjjj}||_||_|d | 	 g  d S )Nc                   S   rJ   r   r   r   r   r   r   rM   a  rN   zGTestDefaultControllerPlugin.test_start_upcheck_failed.<locals>.<lambda>c                     r  r-   r  r`   r  r   r   rc   c  r   z@TestDefaultControllerPlugin.test_start_upcheck_failed.<locals>.fr   )
r   r   rG   r   rO   rP   startAllProcessesstartProcessGrouprR  r   r   r   rc   rP   r   r  r   test_start_upcheck_failed_     
z5TestDefaultControllerPlugin.test_start_upcheck_failedc                 C   r  )Nzstop <name>)r   	help_stopr   rR   rS   r?   r  r   r   r   test_stop_helpk  r  z*TestDefaultControllerPlugin.test_stop_helpc                 C   R   |   }|d}| |d  | |jj dd d | |jjtj	 d S )Nr^   r   r   z#Error: stop requires a process name)
r   do_stopr   r   rR   rS   r   re   r   rf   r   r   r   r   test_stop_failq     
z*TestDefaultControllerPlugin.test_stop_failc                 C   rW  rX  	r   r  r   r   rR   rS   re   r   rf   r   r   r   r   test_stop_badnamey  r\  z-TestDefaultControllerPlugin.test_stop_badnamec                 C   rW  )Nrz   !NOT_RUNNING: ERROR (not running)
	r   r  r   r   rR   rS   re   r   r?  r   r   r   r   test_stop_notrunning  r\  z0TestDefaultControllerPlugin.test_stop_notrunningc                 C   rW  )Nr_   FAILED
r  r   r   r   r   test_stop_failed  
   
z,TestDefaultControllerPlugin.test_stop_failedc                 C   rW  )Nr   foo: stopped
r  r   r   r   r   test_stop_one_success  r\  z1TestDefaultControllerPlugin.test_stop_one_successc                 C   rW  )Nrk  r  r  r   r   r   r   %test_stop_one_with_group_name_success  r\  zATestDefaultControllerPlugin.test_stop_one_with_group_name_successc                 C   rW  )Nrm  zfoo: stopped
bar: stopped
r  r   r   r   r   test_stop_many  rp  z*TestDefaultControllerPlugin.test_stop_manyc                 C   rW  )Nr   z(foo:foo_00: stopped
foo:foo_01: stopped
r  r   r   r   r   test_stop_group  rp  z+TestDefaultControllerPlugin.test_stop_groupc                 C   rW  rq  r  r   r   r   r   test_stop_group_bad_name  r\  z4TestDefaultControllerPlugin.test_stop_group_bad_namec                 C   rW  )NrE  zHfoo: stopped
foo2: stopped
failed_group:failed: ERROR (no such process)
r  r   r   r   r   test_stop_all     
z)TestDefaultControllerPlugin.test_stop_allc                    rv  )Nc                   S   rJ   r   r   r   r   r   r   rM     rN   zFTestDefaultControllerPlugin.test_stop_upcheck_failed.<locals>.<lambda>c                     r  r-   r  r`   r  r   r   rc     r   z?TestDefaultControllerPlugin.test_stop_upcheck_failed.<locals>.fr   )
r   r   rG   r   rO   rP   stopAllProcessesstopProcessGroupr  r   ry  r   r  r   test_stop_upcheck_failed  r{  z4TestDefaultControllerPlugin.test_stop_upcheck_failedc                 C   r  )Nzsignal <signal name> <name>)r   help_signalr   rR   rS   r?   r  r   r   r   test_signal_help  r  z,TestDefaultControllerPlugin.test_signal_helpc                 C   rQ  )Nr^   7Error: signal requires a signal name and a process namer   r   
r   	do_signalr   r   rR   rS   r   re   r   rf   r   r   r$   msgr   r   r   test_signal_fail_no_arg  rV  z3TestDefaultControllerPlugin.test_signal_fail_no_argc                 C   rQ  )Nhupr  r   r   r  r  r   r   r   test_signal_fail_one_arg  rV  z4TestDefaultControllerPlugin.test_signal_fail_one_argc                 C   rW  )NzBAD_SIGNAL foozfoo: ERROR (bad signal name)
	r   r  r   r   rR   rS   re   r   rf   r   r   r   r   test_signal_bad_signal  r\  z2TestDefaultControllerPlugin.test_signal_bad_signalc                 C   rW  )NzHUP BAD_NAMErY  r  r   r   r   r   test_signal_bad_name  r\  z0TestDefaultControllerPlugin.test_signal_bad_namec                 C   rW  )NzHUP BAD_NAME:rr  r  r   r   r   r   test_signal_bad_group  r\  z1TestDefaultControllerPlugin.test_signal_bad_groupc                 C   rW  )NzHUP NOT_RUNNINGr  )	r   r  r   r   rR   rS   re   r   rz   r   r   r   r   test_signal_not_running  r\  z3TestDefaultControllerPlugin.test_signal_not_runningc                 C   sF   |   }|d}| |d  | |jj d | |jjd d S )Nz
HUP FAILEDr  r   )r   r  r   r   rR   rS   re   r   r   r   r   test_signal_failed  s
   
z.TestDefaultControllerPlugin.test_signal_failedc                 C   rW  )NzHUP foozfoo: signalled
	r   r  r   r   rR   rS   re   r   r?  r   r   r   r   test_signal_one_success  r  z3TestDefaultControllerPlugin.test_signal_one_successc                 C   rW  )NzHUP foo barzfoo: signalled
bar: signalled
r  r   r   r   r   test_signal_many  rp  z,TestDefaultControllerPlugin.test_signal_manyc                 C   rW  )NzHUP foo:z,foo:foo_00: signalled
foo:foo_01: signalled
r  r   r   r   r   test_signal_group  rp  z-TestDefaultControllerPlugin.test_signal_groupc                 C   rW  )NzHUP allzLfoo: signalled
foo2: signalled
failed_group:failed: ERROR (no such process)
r  r   r   r   r   test_signal_all&  r  z+TestDefaultControllerPlugin.test_signal_allc                    rv  )Nc                   S   rJ   r   r   r   r   r   r   rM   2  rN   zHTestDefaultControllerPlugin.test_signal_upcheck_failed.<locals>.<lambda>c                     r  r-   r  r`   r  r   r   rc   4  r   zATestDefaultControllerPlugin.test_signal_upcheck_failed.<locals>.fzterm foo)
r   r   rG   r   rO   rP   signalAllProcessessignalProcessGroupr  r   ry  r   r  r   test_signal_upcheck_failed0  r{  z6TestDefaultControllerPlugin.test_signal_upcheck_failedc                 C   r  )Nzrestart <name>)r   help_restartr   rR   rS   r?   r  r   r   r   test_restart_help<  r  z-TestDefaultControllerPlugin.test_restart_helpc                 C   r~  )Nr^   r   r   z&Error: restart requires a process name)
r   
do_restartr   r   rR   rS   r   re   r   rf   r   r   r   r   test_restart_failB  r  z-TestDefaultControllerPlugin.test_restart_failc                 C   rW  )Nr   zfoo: stopped
foo: started
)	r   r  r   r   rR   rS   re   r   r?  r   r   r   r   test_restart_oneJ  r\  z,TestDefaultControllerPlugin.test_restart_onec                 C   rW  )NrE  zfoo: stopped
foo2: stopped
failed_group:failed: ERROR (no such process)
foo: started
foo2: started
failed_group:failed: ERROR (spawn error)
)	r   r  r   r   rR   rS   re   r   rz   r   r   r   r   test_restart_allR  s   
z,TestDefaultControllerPlugin.test_restart_allc                    rv  )Nc                   S   rJ   r   r   r   r   r   r   rM   _  rN   zITestDefaultControllerPlugin.test_restart_upcheck_failed.<locals>.<lambda>c                     r  r-   r  r`   r  r   r   rc   a  r   zBTestDefaultControllerPlugin.test_restart_upcheck_failed.<locals>.fr   )
r   r   rG   r   rO   rP   r  r  r  r   ry  r   r  r   test_restart_upcheck_failed]  r{  z7TestDefaultControllerPlugin.test_restart_upcheck_failedc                 C   r  )Nzclear <name>)r   
help_clearr   rR   rS   r?   r  r   r   r   test_clear_helpi  r  z+TestDefaultControllerPlugin.test_clear_helpc                 C   r~  )Nr^   r   r   z$Error: clear requires a process name)
r   do_clearr   r   rR   rS   r   re   r   rf   r   r   r   r   test_clear_failo  r  z+TestDefaultControllerPlugin.test_clear_failc                 C   rW  rX  	r   r  r   r   rR   rS   re   r   rf   r   r   r   r   test_clear_badnamew  r\  z.TestDefaultControllerPlugin.test_clear_badnamec                 C   rW  )Nr   foo: cleared
	r   r  r   r   rR   rS   re   r   r?  r   r   r   r   test_clear_one_success  r\  z2TestDefaultControllerPlugin.test_clear_one_successc                 C   rW  )Nrk  r  r  r   r   r   r   !test_clear_one_with_group_success  r\  z=TestDefaultControllerPlugin.test_clear_one_with_group_successc                 C   rW  )Nrm  zfoo: cleared
bar: cleared
r  r   r   r   r   test_clear_many  r\  z+TestDefaultControllerPlugin.test_clear_manyc                 C   rW  )NrE  z?foo: cleared
foo2: cleared
failed_group:failed: ERROR (failed)
r  r   r   r   r   test_clear_all  ru  z*TestDefaultControllerPlugin.test_clear_allc                    rv  )Nc                   S   rJ   r   r   r   r   r   r   rM     rN   zGTestDefaultControllerPlugin.test_clear_upcheck_failed.<locals>.<lambda>c                     r  r-   r  r`   r  r   r   rc     r   z@TestDefaultControllerPlugin.test_clear_upcheck_failed.<locals>.fr   )
r   r   rG   r   rO   rP   clearAllProcessLogsclearProcessLogsr  r   ry  r   r  r   test_clear_upcheck_failed  r{  z5TestDefaultControllerPlugin.test_clear_upcheck_failedc                 C   r  )Nz
open <url>)r   	help_openr   rR   rS   r?   r  r   r   r   test_open_help  r  z*TestDefaultControllerPlugin.test_open_helpc                 C   rW  )Nbadnamez&ERROR: url must be http:// or unix://
)	r   do_openr   r   rR   rS   re   r   rf   r   r   r   r   test_open_fail  r\  z*TestDefaultControllerPlugin.test_open_failc                 C   r7  )	Nzhttp://localhost:9002r   r   r   r8  r   r9  r:  )
r   r  r   r   rR   rS   r   re   r   r?  r  r   r   r   test_open_succeed  r>  z-TestDefaultControllerPlugin.test_open_succeedc                 C   r  )Nz*Show the version of the remote supervisord)r   help_versionr   rR   rS   r?   r  r   r   r   test_version_help  r  z-TestDefaultControllerPlugin.test_version_helpc                 C   s*   |   }|d  | |jj d d S )Nz3000
)r   
do_versionr   r   rR   rS   r   r   r   r   r   test_version  s   
z(TestDefaultControllerPlugin.test_versionc                 C   R   |   }|d}| |d  |jj }| |d| | |jjt	j
 d S )Nr   z#Error: version accepts no arguments)r   r  r   r   rR   rS   r?   
startswithre   r   rf   r   r   r$   valr   r   r   test_version_arg     
z,TestDefaultControllerPlugin.test_version_argc                    r  )Nc                   S   rJ   r   r   r   r   r   r   rM     rN   zITestDefaultControllerPlugin.test_version_upcheck_failed.<locals>.<lambda>c                     r  r-   r  r`   r  r   r   rc     r   zBTestDefaultControllerPlugin.test_version_upcheck_failed.<locals>.fr^   )	r   r   rG   r   rO   rP   getSupervisorVersionr  r   r  r   r  r   test_version_upcheck_failed  r  z7TestDefaultControllerPlugin.test_version_upcheck_failedc                 C   r  )NzRestart the remote supervisord)r   help_reloadr   rR   rS   r?   r  r   r   r   test_reload_help  r  z,TestDefaultControllerPlugin.test_reload_helpc                 C   sF   |   }|jj}d|jj_|d}| |d  | |jjjd d S )NFr^   )	r   r   r   rO   rP   _restartable	do_reloadr   
_restartedr   r   r   r$   r   r   r   test_reload_fail  s   

z,TestDefaultControllerPlugin.test_reload_failc                 C   <   |   }|jj}|d}| |d  | |jjjd d S Nr^   T)r   r   r   r  r   rO   rP   r  r  r   r   r   test_reload  
   
z'TestDefaultControllerPlugin.test_reloadc                 C   r  )Nr   z"Error: reload accepts no arguments)r   r  r   r   rR   rS   r?   r  re   r   rf   r  r   r   r   test_reload_arg  r  z+TestDefaultControllerPlugin.test_reload_argc                 C   r  )Nz Shut the remote supervisord down)r   help_shutdownr   rR   rS   r?   r  r   r   r   test_shutdown_help  r  z.TestDefaultControllerPlugin.test_shutdown_helpc                 C   sl   |   }|jj}|d}| |d  | |jjjd |jj	 }| 
|d| | |jjtj d S )Nr   Fz$Error: shutdown accepts no arguments)r   r   r   do_shutdownr   rO   rP   	_shutdownrR   rS   r?   r  re   r   rf   )r   r   r   r$   r  r   r   r   "test_shutdown_with_arg_shows_error	  s   
z>TestDefaultControllerPlugin.test_shutdown_with_arg_shows_errorc                 C   r  r  )r   r   r   r  r   rO   rP   r  r  r   r   r   test_shutdown  r  z)TestDefaultControllerPlugin.test_shutdownc                    sn   |   }ddlm   fdd}||jjjj_|d}| |d  | |jj	
 d | |jjtj d S )Nr   r   c                        t  jjd)Nbyer   rY   rV   SHUTDOWN_STATEr`   r   r   r   rr        zbTestDefaultControllerPlugin.test_shutdown_catches_xmlrpc_fault_shutdown_state.<locals>.raise_faultr^   zERROR: already shutting down
)r   rP   r   r   r   rO   shutdownr  r   rR   rS   re   r   r?  )r   r   rr   r$   r   r   r   1test_shutdown_catches_xmlrpc_fault_shutdown_state  s   
zMTestDefaultControllerPlugin.test_shutdown_catches_xmlrpc_fault_shutdown_statec                    V   |   }ddlm   fdd}||jjjj_| tj	|j
d | |jjtj d S )Nr   r   c                     r  )Nouchr   rY   rV   CANT_REREADr`   r   r   r   rr   ,  r  z[TestDefaultControllerPlugin.test_shutdown_reraises_other_xmlrpc_faults.<locals>.raise_faultr^   )r   rP   r   r   r   rO   r  rd   r   rY   r  r   re   r   rf   r   r   rr   r   r   r   *test_shutdown_reraises_other_xmlrpc_faults(  s   zFTestDefaultControllerPlugin.test_shutdown_reraises_other_xmlrpc_faultsc                    z   |   }dd ldd l  fdd}||jjjj_|d}| 	|d  |jj
 }| d|v  | 	|jjtj d S )Nr   c                     rj   rk   rl   r`   ro   r   r   rr   9  r   z`TestDefaultControllerPlugin.test_shutdown_catches_socket_error_ECONNREFUSED.<locals>.raise_faultr^   z'refused connection (already shut down?)r   rq   rp   r   r   rO   rP   r  r  r   rR   rS   r?   re   r   rf   r   r   rr   r$   ru   r   ro   r   /test_shutdown_catches_socket_error_ECONNREFUSED4     
zKTestDefaultControllerPlugin.test_shutdown_catches_socket_error_ECONNREFUSEDc                    r  )Nr   c                     rj   )Nzno filerx   r`   ro   r   r   rr   I  r   zZTestDefaultControllerPlugin.test_shutdown_catches_socket_error_ENOENT.<locals>.raise_faultr^   z!no such file (already shut down?)r  r  r   ro   r   )test_shutdown_catches_socket_error_ENOENTD  r  zETestDefaultControllerPlugin.test_shutdown_catches_socket_error_ENOENTc                    s\   |   }dd ldd l  fdd}||jjjj_| j	|j
d | |jjtj d S )Nr   c                     rj   )Ndenied)rm   EPERMr`   ro   r   r   rr   Y  r   z[TestDefaultControllerPlugin.test_shutdown_reraises_other_socket_errors.<locals>.raise_faultr^   )r   rq   rp   r   r   rO   rP   r  rd   rm   r  r   re   r   rf   r  r   ro   r   *test_shutdown_reraises_other_socket_errorsT  s   zFTestDefaultControllerPlugin.test_shutdown_reraises_other_socket_errorsc                 C   s2   |   }|dgdgdgg |g g g g d S )Naddedchangedremoved)r   _formatChangesr  r   r   r   test__formatChangesa  s   z/TestDefaultControllerPlugin.test__formatChangesc                 C   @   |   }|  |jj }| d|v  | |jjtj	 d S )Nz'Reload the daemon's configuration files)
r   help_rereadr   rR   rS   r?   r   re   r   r?  r  r   r   r   test_reread_helpg  
   z,TestDefaultControllerPlugin.test_reread_helpc                    sb   |   }g   fdd|_|d }| |d  |  d dgdgdgg | |jjtj d S )Nc                    s
     | S r   r  rK   callsr   r   rM   q  s   
 z9TestDefaultControllerPlugin.test_reread.<locals>.<lambda>r   r  r  r   )r   r  	do_rereadr   r   re   r   r?  r   r   r  r   test_rereadn  s   
z'TestDefaultControllerPlugin.test_rereadc                 C   r  )Nr   z"Error: reread accepts no arguments)r   r	  r   r   rR   rS   r?   r  re   r   rf   r  r   r   r   test_reread_argw  r  z+TestDefaultControllerPlugin.test_reread_argc                    b   |   }ddlm   fdd}||jjjj_|d  | |jj	
 d | |jjtj d S )Nr   r   c                     r  )Ncantr  r`   r   r   r   reloadConfig  r  zITestDefaultControllerPlugin.test_reread_cant_reread.<locals>.reloadConfigzERROR: cant
r   rP   r   r   r   rO   r  r	  r   rR   rS   re   r   rf   r   r   r  r   r   r   test_reread_cant_reread     
z3TestDefaultControllerPlugin.test_reread_cant_rereadc                    r  )Nr   r   c                     r  r]   r  r`   r   r   r   r    r  zLTestDefaultControllerPlugin.test_reread_shutdown_state.<locals>.reloadConfig ERROR: supervisor shutting down
r  r  r   r   r   test_reread_shutdown_state  r  z6TestDefaultControllerPlugin.test_reread_shutdown_statec                    r  )Nr   r   c                     r  r]   )r   rY   rV   r_   r`   r   r   r   r    r  zSTestDefaultControllerPlugin.test_reread_reraises_other_faults.<locals>.reloadConfigr^   )r   rP   r   r   r   rO   r  rd   r   rY   r	  r   re   r   rf   r  r   r   r   !test_reread_reraises_other_faults  s   z=TestDefaultControllerPlugin.test_reread_reraises_other_faultsc                 C   s`   ddddddd}|   }||}| d|v  ddddddd}||}| d|v  d S )	Ngroup1process1T  r(  r'  inuse	autostartprocess_prio
group_priozin useFavail)r   _formatConfigInfor?   )r   infor   r$   r   r   r   test__formatConfigInfo  s&   

z2TestDefaultControllerPlugin.test__formatConfigInfoc                 C   r  )NzDisplay all configured)r   
help_availr   rR   rS   r?   r  r   r   r   test_avail_help  r  z+TestDefaultControllerPlugin.test_avail_helpc                    sP   g }|   }G dd dt  fdd|j_|j|j_|d}| |d  d S )Nc                   @   r/   )z>TestDefaultControllerPlugin.test_avail.<locals>.FakeSupervisorc                 S   s   dddddddgS )Nr  r  Fr  r  r   r3   r   r   r   getAllConfigInfo  s   zOTestDefaultControllerPlugin.test_avail.<locals>.FakeSupervisor.getAllConfigInfoN)r6   r7   r8   r$  r   r   r   r   FakeSupervisor  r:   r%  c                      s     S r   r   r   r%  r   r   rM     s    z8TestDefaultControllerPlugin.test_avail.<locals>.<lambda>r^   )r   r;   r   r   r  ru   do_availr   )r   r  r   r$   r   r&  r   
test_avail  s   

z&TestDefaultControllerPlugin.test_availc                 C   r  )Nr   z!Error: avail accepts no arguments)r   r'  r   r   rR   rS   r?   r  re   r   rf   r  r   r   r   test_avail_arg  r  z*TestDefaultControllerPlugin.test_avail_argc                 C   sb   |   }|jjjj}dd }||_|d}| |d  | |jj	 d | |jj
tj d S )Nc                  S      ddl m}  t| jjdNr   r   r^   rP   r   r   rY   rV   r  r   r   r   r   r$       zOTestDefaultControllerPlugin.test_avail_shutdown_state.<locals>.getAllConfigInfor^   r  )r   r   r   rO   rP   r$  r'  r   rR   rS   re   r   rf   )r   r   rP   r$  r$   r   r   r   test_avail_shutdown_state  s   
z5TestDefaultControllerPlugin.test_avail_shutdown_statec                 C   sJ   |   }|jjjj}dd }||_| tj|j	d | 
|jjtj d S )Nc                  S   r*  r+  rP   r   r   rY   rV   r_   r   r   r   r   r$    r-  zVTestDefaultControllerPlugin.test_avail_reraises_other_faults.<locals>.getAllConfigInfor^   )r   r   r   rO   rP   r$  rd   r   rY   r'  r   re   r   rf   )r   r   rP   r$  r   r   r    test_avail_reraises_other_faults  s   z<TestDefaultControllerPlugin.test_avail_reraises_other_faultsc                 C   r  )Nz
add <name>)r   help_addr   rR   rS   r?   r  r   r   r   test_add_help  r  z)TestDefaultControllerPlugin.test_add_helpc                 C   sP   |   }|d}| |d  |jjjj}| |jdg | |jjt	j
 d S Nr   )r   do_addr   r   r   rO   rP   	processesre   r   r?  )r   r   r$   rP   r   r   r   test_add  s   
z$TestDefaultControllerPlugin.test_addc                 C   rW  )NALREADY_ADDEDz$ERROR: process group already active
)	r   r4  r   r   rR   rS   re   r   r?  r   r   r   r   test_add_already_added  r\  z2TestDefaultControllerPlugin.test_add_already_addedc                 C   rW  )Nr   'ERROR: no such process/group: BAD_NAME
	r   r4  r   r   rR   rS   re   r   rf   r   r   r   r   test_add_bad_name  r\  z-TestDefaultControllerPlugin.test_add_bad_namec                 C   rW  )Nr  zERROR: shutting down
r:  r   r   r   r   test_add_shutdown_state  r\  z3TestDefaultControllerPlugin.test_add_shutdown_statec                 C   0   |   }| tj|jd | |jjtj	 d S Nr_   )
r   rd   r   rY   r4  r   r   re   r   rf   r  r   r   r   test_add_reraises_other_faults     z:TestDefaultControllerPlugin.test_add_reraises_other_faultsc                 C   r  )Nzremove <name>)
r   help_remover   rR   rS   r?   r   re   r   r?  r  r   r   r   test_remove_help  r  z,TestDefaultControllerPlugin.test_remove_helpc                 C   sD   |   }|jjjj}dg|_|d}| |d  | |jg  d S r3  )r   r   r   rO   rP   r5  	do_remover   r   r   rP   r$   r   r   r   test_remove  s   
z'TestDefaultControllerPlugin.test_removec                 C   \   |   }|jjjj}dg|_|d}| |d  | |jj	 d | |jj
tj d S )Nr   r   r9  r   r   r   rO   rP   r5  rC  r   rR   rS   re   r   rf   rD  r   r   r   test_remove_bad_name#     
z0TestDefaultControllerPlugin.test_remove_bad_namec                 C   rF  )Nr   STILL_RUNNINGz2ERROR: process/group still running: STILL_RUNNING
rG  rD  r   r   r   test_remove_still_running-  rI  z5TestDefaultControllerPlugin.test_remove_still_runningc                 C   r=  r>  )
r   rd   r   rY   rC  r   r   re   r   rf   r  r   r   r   !test_remove_reraises_other_faults7  r@  z=TestDefaultControllerPlugin.test_remove_reraises_other_faultsc                 C   r  )NzReload config and add/remove)r   help_updater   rR   rS   r?   r  r   r   r   test_update_help<  r  z,TestDefaultControllerPlugin.test_update_helpc                 C   sH   |   }|jjjj}dd }||_dg|_|d | |jdg d S )Nc                  S   r*  )Nr   r   blahr,  r   r   r   r   r  E  r-  zMTestDefaultControllerPlugin.test_update_not_on_shutdown.<locals>.reloadConfigr   r^   )	r   r   r   rO   rP   r  r5  	do_updater   r   r   rP   r  r   r   r   test_update_not_on_shutdownB  s   
z7TestDefaultControllerPlugin.test_update_not_on_shutdownc                 C   sL   |   }|jjjj}dd }||_|d}| |d  | |jdg d S )Nc                   S   s   dgg g ggS )Nnew_procr   r   r   r   r   r  Q  r   zITestDefaultControllerPlugin.test_update_added_procs.<locals>.reloadConfigr^   rS  )	r   r   r   rO   rP   r  rP  r   r5  )r   r   rP   r  r$   r   r   r   test_update_added_procsM  s   
z3TestDefaultControllerPlugin.test_update_added_procsc                 C   s   |   }|jjjj}dd }||_ddg|_|d | t	|jt	ddg |d | t	|jt	g d |d | t	|jt	g d ddg|_|d | t	|jt	dd	g ddg|_|d
 | t	|jt	g d d S )Nc                   S   s   ddgdgdgggS )Nadded1added2r  r   r   r   r   r   r   r  ]     zHTestDefaultControllerPlugin.test_update_with_gname.<locals>.reloadConfigr  r   zadded1 added2)r  r   rU  rV  )r  rU  rV  zremoved added1rU  rE  )
r   r   r   rO   rP   r  r5  rP  r   sortedrQ  r   r   r   test_update_with_gnameY  s6   












z2TestDefaultControllerPlugin.test_update_with_gnamec                    sB  ddl m} |  }|jjjj }g  dd }||_ fdd|_|d dd|j	j
d	d
g fdd}||_|d |  dg |d g  d d < dd|j	jd	d
dd|j	jd	d
gd d < |d |  dg |d g  d d < dd|j	jd	d
dd|j	j
d	d
gd d < |d |  dg d S )Nr   r   c                   S   s   g dgg ggS )Nchanged_groupr   r   r   r   r   r    r   zKTestDefaultControllerPlugin.test_update_changed_procs.<locals>.reloadConfigc                    s     d| fS )Nr   r  rK   r  r   r   rM     s    zGTestDefaultControllerPlugin.test_update_changed_procs.<locals>.<lambda>rZ  changed_processrO  r'  r(  statusr/  c                    s     d| f S )Nr,  r  r'  r  r   r   r   r    s   zOTestDefaultControllerPlugin.test_update_changed_procs.<locals>.stopProcessGroupr^   )r,  rZ  changed_process1changed_process2)rP   r   r   r   r   rO   r  startProcessaddProcessGrouprV   r?  r  rP  r   rz   r_   r   r   r   rP   r  r  r   r_  r   test_update_changed_procsy  s^   



	

	z5TestDefaultControllerPlugin.test_update_changed_procsc                    s   ddl m} |  }|jjjj }dd }||_dd|jjddg dg|_	 fd	d
}||_
|d | |j	g  dd|jjddg d d < dg|_	|d | |j	g  dd|jjddg d d < dg|_	|d | |j	dg d S )Nr   r   c                   S   s   g g dgggS )Nremoved_groupr   r   r   r   r   r    r   zKTestDefaultControllerPlugin.test_update_removed_procs.<locals>.reloadConfigremoved_processrf  rO  r\  c                    s    S r   r   r^  r   r   r   r       zOTestDefaultControllerPlugin.test_update_removed_procs.<locals>.stopProcessGroupr^   )rP   r   r   r   r   rO   r  rV   r?  r5  r  rP  r   rz   r_   rd  r   rh  r   test_update_removed_procs  s>   


z5TestDefaultControllerPlugin.test_update_removed_procsc                 C   sH   |   }|jjjj}dd }||_| tj|j	d | 
|jjd d S )Nc                  S   r*  )Nr   r   r_   r/  r   r   r   r   r    r-  zSTestDefaultControllerPlugin.test_update_reraises_other_faults.<locals>.reloadConfigr^   r   )r   r   r   rO   rP   r  rd   r   rY   rP  r   re   rQ  r   r   r   !test_update_reraises_other_faults  s   z=TestDefaultControllerPlugin.test_update_reraises_other_faultsc                 C   r  )Nz
pid <name>)r   help_pidr   rR   rS   r?   r  r   r   r   test_pid_help  r  z)TestDefaultControllerPlugin.test_pid_helpc                 C   sh   |   }|d}| |d  |jj}|jj d}| t|d | |d t	|j
j  d S )Nr^   r   r   r   )r   do_pidr   r   r   rR   rS   r   r   strrO   rP   getPID)r   r   r$   r   r   r   r   r   test_pid_supervisord  s   
 z0TestDefaultControllerPlugin.test_pid_supervisordc                 C   sX   |   }|d}| |d  |jj  }| | g d | |jjt	j
 d S )NrE  )111213)r   rn  r   r   rR   rS   r  r   re   r   r?  r  r   r   r   test_pid_allprocesses  s   
z1TestDefaultControllerPlugin.test_pid_allprocessesc                 C   r  )Nr   zNo such process BAD_NAME)
r   rn  r   r   rR   rS   r  re   r   rf   r  r   r   r   test_pid_badname  r
  z,TestDefaultControllerPlugin.test_pid_badnamec                 C   sL   |   }|d}| |d  | |jj  d | |jjtj	 d S )Nr   rr  )
r   rn  r   r   rR   rS   r  re   r   r?  r   r   r   r   test_pid_oneprocess  s
   
z/TestDefaultControllerPlugin.test_pid_oneprocessc                 C   sf   |   }|jj}dd }||jj_|d}| |d  | |jj	 
 d | |jjtj d S )Nc                  _   s(   ddl m} ddd|jddddddd
S )Nr   r!  r   r;  r^   r%  r&  )r2  r"  r;  r4  r   r   r   rc     s   zFTestDefaultControllerPlugin.test_pid_oneprocess_not_running.<locals>.fr   0)r   r   r   rO   rP   getProcessInforn  r   rR   rS   r  re   r   rz   )r   r   r   rc   r$   r   r   r   test_pid_oneprocess_not_running	  s   


z;TestDefaultControllerPlugin.test_pid_oneprocess_not_runningc                    r  )Nc                   S   rJ   r   r   r   r   r   r   rM   "  rN   zETestDefaultControllerPlugin.test_pid_upcheck_failed.<locals>.<lambda>c                     r  r-   r  r`   r  r   r   rc   $  r   z>TestDefaultControllerPlugin.test_pid_upcheck_failed.<locals>.fr^   )	r   r   rG   r   rO   rP   rp  rn  r   r  r   r  r   test_pid_upcheck_failed   r  z3TestDefaultControllerPlugin.test_pid_upcheck_failedc                 C   r  )Nz tail of supervisor main log file)r   help_maintailr   rR   rS   r?   r  r   r   r   test_maintail_help*  r  z.TestDefaultControllerPlugin.test_maintail_helpc                 C   r  )Nrm  zError: too manyr   do_maintailr   r   rR   rS   r?   r  re   r   rf   r  r   r   r   test_maintail_toomanyargs0  r  z5TestDefaultControllerPlugin.test_maintail_toomanyargsc                 C   r  )Nz-wrongzError: bad argument -wrongr~  r  r   r   r    test_maintail_minus_string_fails8  r  z<TestDefaultControllerPlugin.test_maintail_minus_string_failsc                 C   r  )NwrongzError: bad argument wrongr~  r  r   r   r   test_maintail_wrong@  r  z/TestDefaultControllerPlugin.test_maintail_wrongc                 C   s|   |   }t |_|d}| |d  |jj}| t|d |d }| |jjd | |d d | d|d v  d S )Nr   r   r   z"http://localhost:65532/mainlogtailzCannot connect)	r   DummyListenerlistenerr  r   errorsr   r2   r?   )r   r   r$   r  rm   r   r   r   _dont_test_maintail_dashfH  s   


z5TestDefaultControllerPlugin._dont_test_maintail_dashfc                 C   r   )Nz-zr   r   r   )
r   r  r   r   rR   rS   r   re   r   rf   r   r   r   r   test_maintail_bad_modifierY  r   z6TestDefaultControllerPlugin.test_maintail_bad_modifierc                 C   rh  )Nr^   mainlogdata
r   r  r   r   rR   rS   r   r   r   r   test_maintail_nobytesa     
z1TestDefaultControllerPlugin.test_maintail_nobytesc                 C   rh  )N-100r  r  r   r   r   r   test_maintail_dashbytesg  r  z3TestDefaultControllerPlugin.test_maintail_dashbytesc                 C   h   |   }|j }ddlm} |jj|_|d}| 	|d  | 	|jj
 d | 	|jjtj d S )Nr   r   r  z!supervisord: ERROR (no log file)
)r   r   r   rP   r   rV   r   _readlog_errorr  r   rR   rS   re   r   rf   r   r   supervisor_rpcr   r$   r   r   r   "test_maintail_readlog_error_nofilem     


z>TestDefaultControllerPlugin.test_maintail_readlog_error_nofilec                 C   r  )Nr   r   r  z/supervisord: ERROR (unknown error reading log)
)r   r   r   rP   r   rV   r_   r  r  r   rR   rS   re   r   rf   r  r   r   r   "test_maintail_readlog_error_failedx  r  z>TestDefaultControllerPlugin.test_maintail_readlog_error_failedc                    r  )Nc                   S   rJ   r   r   r   r   r   r   rM     rN   zJTestDefaultControllerPlugin.test_maintail_upcheck_failed.<locals>.<lambda>c                     r  r-   r  r`   r  r   r   rc     r   zCTestDefaultControllerPlugin.test_maintail_upcheck_failed.<locals>.fr^   )	r   r   rG   r   rO   rP   readLogr  r   r  r   r  r   test_maintail_upcheck_failed  r  z8TestDefaultControllerPlugin.test_maintail_upcheck_failedc                 C   r  )Nzfg <process>)r   help_fgr   rR   rS   r?   r  r   r   r   test_fg_help  r  z(TestDefaultControllerPlugin.test_fg_helpc                 C   r   )Nr^   r   r   zERROR: no process name supplied
r   do_fgr   r   rR   rS   r   re   r   rf   r   r   r   r   test_fg_too_few_args  r   z0TestDefaultControllerPlugin.test_fg_too_few_argsc                 C   L   |   }|d}| |d  |jj }| |d | |jjtj d S )Nrm  z'ERROR: too many process names supplied
	r   r  r   r   rR   rS   re   r   rf   r   r   r$   r'   r   r   r   test_fg_too_many_args  rD  z1TestDefaultControllerPlugin.test_fg_too_many_argsc                 C   r  )Nr   z!ERROR: bad process name supplied
r  r  r   r   r   test_fg_badprocname  rD  z/TestDefaultControllerPlugin.test_fg_badprocnamec                 C   s   |   }|d}| |d  |jj }| |d |d}|jj d}| |d  | |d d | |jjtj	 d S )Nr0  zERROR: process not running
baz_01r   zERROR: process not runningr  )r   r   r$   r'   r   r   r   r   test_fg_procnotrunning  s   

z2TestDefaultControllerPlugin.test_fg_procnotrunningc                    r  )Nc                   S   rJ   r   r   r   r   r   r   rM     rN   zDTestDefaultControllerPlugin.test_fg_upcheck_failed.<locals>.<lambda>c                     r  r-   r  r`   r  r   r   rc     r   z=TestDefaultControllerPlugin.test_fg_upcheck_failed.<locals>.fr   )	r   r   rG   r   rO   rP   ry  r  r   r  r   r  r   test_fg_upcheck_failed  r  z2TestDefaultControllerPlugin.test_fg_upcheck_failedc                 C   r  NzExit the supervisor shell)r   	help_exitr   rR   rS   r?   r  r   r   r   test_exit_help  r  z*TestDefaultControllerPlugin.test_exit_helpc                 C   r  r  )r   	help_quitr   rR   rS   r?   r  r   r   r   test_quit_help  r  z*TestDefaultControllerPlugin.test_quit_helpN)r6   r7   r8   r   r   r   r   r   r   r   r   r   r  r  r  r  r	  r  r  r  r   r6  r=  r@  rC  rF  rG  rH  rI  rK  rM  rN  rP  rU  r[  r]  r_  rb  re  rg  rj  rl  rn  ro  rs  rt  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  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r!  r#  r(  r)  r.  r0  r2  r6  r8  r;  r<  r?  rB  rE  rH  rK  rL  rN  rR  rT  rY  re  rj  rk  rm  rq  ru  rv  rw  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     s>   			

!				
		
		


		


 5)	


r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )r  c                 C   s
   g | _ d S r   )r  r3   r   r   r   __init__  r5   zDummyListener.__init__c                 C   s   | j ||f d S r   )r  r  )r   urlr  r   r   r   rm     rW  zDummyListener.errorc                 C   
   || _ d S r   r1   )r   r  r   r   r   r4     r5   zDummyListener.closeN)r6   r7   r8   r  rm   r4   r   r   r   r   r    s    r  c                   @      e Zd Zdd Zdd ZdS )DummyPluginFactoryc                 K   r  r   r   )r   r   rb   r   r   r   r    r5   zDummyPluginFactory.__init__c                 C   s   | j jd d S )Nr   )r   rR   writer   ra   r   r   r   r     s   zDummyPluginFactory.do_helpNr6   r7   r8   r  r   r   r   r   r   r    s    r  c                   @   r  )r   c                 C   sD   d| _ d| _d| _d| _d | _d| _t | _d| _dt	i fg| _
d S )NrP   zhttp://localhost:65532chrism123r   Fdummy)rD   	serverurlusernamepasswordhistory_filer   r   rO   interactiver  plugin_factoriesr3   r   r   r   r    s   zDummyClientOptions.__init__c                 C   s   | j S r   )rO   r3   r   r   r   r     s   z!DummyClientOptions.getServerProxyN)r6   r7   r8   r  r   r   r   r   r   r     s    r   c                   @   sL   e Zd ZdZdd Zdd Zdd Zdd	d
Zdd Zdd Z	dddZ
dS )r   zno help on %sc                 C   s    || _ g | _t | _tj| _d S r   )r   r   r   rR   r   r?  re   rC   r   r   r   r    s   zDummyController.__init__c                 C   rJ   r-   r   r3   r   r   r   rG     ri  zDummyController.upcheckc                 C   s
   |  dS )NrP   )r   r3   r   r   r   r     r5   zDummyController.get_supervisorNc                 C   s    | j  }|d u r|S t||S r   )r   r   getattr)r   	namespacer   r   r   r   r     s   

z DummyController.get_server_proxyc                 C   s   | j |d  d S )Nr   )rR   r  )r   datar   r   r   ru      rW  zDummyController.outputc                 C   s   | j ||||f d S r   )r   r  )r   doc_headerscmds_docrowscolsr   r   r   print_topics  s   zDummyController.print_topicsc                 C   s@   ddl m} ||tjjfv rd S ||v rtj| _d S tj| _d S )Nr   )DEAD_PROGRAM_FAULTS)	r   r  r   rV   r?  r   rz   re   rf   )r   	faultcodeignored_faultcoder  r   r   r    set_exitstatus_from_xmlrpc_fault  s   z0DummyController.set_exitstatus_from_xmlrpc_faultr   )r6   r7   r8   r   r  rG   r   r   ru   r  r  r   r   r   r   r     s    
r   c                   @   s   e Zd ZdddZdd ZdS )r   Nc                 C   r  r   r  )r   rF   r   r   r   r    r5   zDummyPlugin.__init__c                 C   r0   r-   )r   r  r   r   r   r     r5   zDummyPlugin.do_helpr   r  r   r   r   r   r     s    
r   )unittestrP   r   supervisor.compatr   r   r   r   r   supervisor.tests.baser   TestCaser	   rA   r   r   r  r  r   r   r   r   r   r   r   <module>   s8    ?  u           $