
    vg{B                       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m	Z	 d dl
mZ  G d dej                  Z G d	 d
ej                  Z G d dej                  Z G d dej                  Z G d d          Z G d d          Z G d d          Z G d d          Z G d d          Zd Zedk    r ej        d           dS dS )    Nxmlrpc)StringIO)	xmlrpclib)LSBInitExitStatusesLSBStatusExitStatuses)DummyRPCServerc                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
fgthread_Testsc                     ddl m} |S )Nr   )fgthread)supervisor.supervisorctlr   )selfr   s     `/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/supervisor/tests/test_supervisorctl.py_getTargetClasszfgthread_Tests._getTargetClass
   s    555555    c                 >     |                                  ||          S Nr   )r   programctls      r   _makeOnezfgthread_Tests._makeOne   s     %t##%%gs333r   c                     t                      }t          |          }|                     d |          }|                     |j        d           d S NF)DummyClientOptionsDummyControllerr   assertEqualkilled)r   optionsr   insts       r   	test_ctorzfgthread_Tests.test_ctor   sK    $&&g&&}}T3''e,,,,,r   c                     t                      }t          |          }|                     d |          }|                    d dd           }|                     ||j                   d S )Ncall)r   r   r   globaltracer   
localtracer   r   r   r    results        r   test_globaltrace_callz$fgthread_Tests.test_globaltrace_call   sb    $&&g&&}}T3''!!$5511111r   c                     t                      }t          |          }|                     d |          }|                    d d d           }|                     |d            d S r   )r   r   r   r$   r   r&   s        r   test_globaltrace_noncallz'fgthread_Tests.test_globaltrace_noncall   s`    $&&g&&}}T3''!!$d33&&&&&r   c                 :   t                      }t          |          }|                     d |          }d|_        	 |                    d dd            |                     d           d S # t          $ r&}|                     |j        d            Y d }~d S d }~ww xY w)NTlinez(No exception thrown. Excepted SystemExit)	r   r   r   r   r%   fail
SystemExitr   code)r   r   r   r    es        r   test_localtrace_killed_whylinez-fgthread_Tests.test_localtrace_killed_whyline%   s    $&&g&&}}T3''	BOOD&$/// II@AAAAA  	+ 	+ 	+QVT*********	+s   A* *
B4BBc                     t                      }t          |          }|                     d |          }d|_        |                    d d d           }|                     ||j                   d S NT)r   r   r   r   r%   r   r&   s        r   "test_localtrace_killed_not_whylinez1fgthread_Tests.test_localtrace_killed_not_whyline1   sg    $&&g&&}}T3''tT2211111r   c                    t                      }t          |          }|                     d |          }d|_         G d dt                    } |            |_         |            |_        |                                 |                     |j                   |                     |j        j	                   |                     |j        j	                   d S )NTc                       e Zd Zd ZdS )0fgthread_Tests.test_kill.<locals>.DummyCloseablec                     d| _         d S r3   closedr   s    r   closez6fgthread_Tests.test_kill.<locals>.DummyCloseable.close?   s    "r   N)__name__
__module____qualname__r<    r   r   DummyCloseabler7   >   s#        # # # # #r   rA   )
r   r   r   r   objectoutput_handlererror_handlerkill
assertTruer:   )r   r   r   r    rA   s        r   	test_killzfgthread_Tests.test_kill9   s    $&&g&&}}T3''	# 	# 	# 	# 	#V 	# 	# 	# -n..+^--		$$$+2333*122222r   N)r=   r>   r?   r   r   r!   r(   r*   r1   r4   rG   r@   r   r   r   r   	   s          4 4 4- - -2 2 2' ' '
B 
B 
B2 2 23 3 3 3 3r   r   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd&S )'ControllerTestsc                     ddl m} |S )Nr   )
Controller)r   rK   )r   rK   s     r   r   zControllerTests._getTargetClassI   s    777777r   c                 <     |                                  |          S r   r   r   r   s     r   r   zControllerTests._makeOneM   s    %t##%%g...r   c                     t                      }|                     |          }|                     |j        |j        dz              d S )Nz> )r   r   r   promptr   r   
controllers      r   r!   zControllerTests.test_ctorQ   sD    $&&]]7++
*GNT,ABBBBBr   c                     t                      }|                     |          }|                                }|                     |d           d S r3   )r   r   upcheckr   r   r   rQ   r'   s       r   test__upcheckzControllerTests.test__upcheckV   sK    $&&]]7++
##%%&&&&&r   c                 D   t                      }d |j        j        _        |                     |          }t                      |_        |                                }|                     |d           |                     |j        	                                d           d S )Nc                      dS )Nz1.0r@   )xs    r   <lambda>zDControllerTests.test__upcheck_wrong_server_version.<locals>.<lambda>^   s    5 r   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   stdoutrS   r   getvaluerT   s       r   "test__upcheck_wrong_server_versionz2ControllerTests.test__upcheck_wrong_server_version\   s    $&&0@0@"-]]7++
$JJ
##%%'''*33559	: 	: 	: 	: 	:r   c                 Z   t                      }ddlm fd}||j        j        _        |                     |          }t                      |_        |	                                }| 
                    |d           | 
                    |j                                        d           d S )Nr   Faultsc                  8    t          j         j        d          )Nduh)r   FaultUNKNOWN_METHODra   s   r   r\   z@ControllerTests.test__upcheck_unknown_method.<locals>.getVersionk   s    /&"7???r   FzSorry, 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.xmlrpcrb   rZ   r[   r\   r   r   r]   rS   r   r^   )r   r   r\   rQ   r'   rb   s        @r   test__upcheck_unknown_methodz,ControllerTests.test__upcheck_unknown_methodh   s    $&&,,,,,,	@ 	@ 	@ 	@ 	@0:"-]]7++
$JJ
##%%'''*33551	2 	2 	2 	2 	2r   c                 @   t                      }ddlm fd}||j        j        _        |                     |          }t                      |_        | 	                    t          j        |j                   |                     |j        t          j                   d S )Nr   ra   c                  8    t          j        j        d          N )r   re   FAILED)argkwrb   s     r   fzEControllerTests.test__upcheck_reraises_other_xmlrpc_faults.<locals>.f}   s    /&-444r   )r   rg   rb   rZ   r[   r\   r   r   r]   assertRaisesr   re   rS   r   
exitstatusr   GENERIC)r   r   rp   rQ   rb   s       @r   *test__upcheck_reraises_other_xmlrpc_faultsz:ControllerTests.test__upcheck_reraises_other_xmlrpc_faultsz   s    $&&,,,,,,	5 	5 	5 	5 	501"-]]7++
$JJ
)/:+=>>>.0C0KLLLLLr   c                    t                      }dd ldd lfd}||j        j        _        |                     |          }t                      |_        |	                                }| 
                    |d           |j                                        }|                     d|v            | 
                    |j        t          j                   d S )Nr   c                  :                         j        d          Nznobody homeerrorECONNREFUSEDrn   ro   errnosockets     r   raise_faultzTControllerTests.test__upcheck_catches_socket_error_ECONNREFUSED.<locals>.raise_fault       ,,u1=AAAr   Fzrefused connection)r   r}   r|   rZ   r[   r\   r   r   r]   rS   r   r^   rF   rr   r   INSUFFICIENT_PRIVILEGESr   r   r~   rQ   r'   outputr|   r}   s         @@r   /test__upcheck_catches_socket_error_ECONNREFUSEDz?ControllerTests.test__upcheck_catches_socket_error_ECONNREFUSED   s    $&&	B 	B 	B 	B 	B 	B0;"-]]7++
$JJ
##%%'''"++--,6777.0C0[\\\\\r   c                    t                      }dd ldd lfd}||j        j        _        |                     |          }t                      |_        |	                                }| 
                    |d           |j                                        }|                     d|v            | 
                    |j        t          j                   d S )Nr   c                  :                         j        d          rw   ry   ENOENTr{   s     r   r~   zNControllerTests.test__upcheck_catches_socket_error_ENOENT.<locals>.raise_fault   s    ,,u|];;;r   Fzno such file)r   r}   r|   rZ   r[   r\   r   r   r]   rS   r   r^   rF   rr   r   NOT_RUNNINGr   s         @@r   )test__upcheck_catches_socket_error_ENOENTz9ControllerTests.test__upcheck_catches_socket_error_ENOENT   s    $&&	< 	< 	< 	< 	< 	<0;"-]]7++
$JJ
##%%'''"++--&0111.0C0OPPPPPr   c                     t                      }dd ldd lfd}||j        j        _        |                     |          }t                      |_        | 	                    j
        |j                   d S )Nr   c                  :                         j        d          rk   )ry   EBADFr{   s     r   rp   zEControllerTests.test__upcheck_reraises_other_socket_faults.<locals>.f   s    ,,u{B///r   )r   r}   r|   rZ   r[   r\   r   r   r]   rq   ry   rS   )r   r   rp   rQ   r|   r}   s       @@r   *test__upcheck_reraises_other_socket_faultsz:ControllerTests.test__upcheck_reraises_other_socket_faults   s    $&&	0 	0 	0 	0 	0 	001"-]]7++
$JJ
&,
(:;;;;;r   c                 4   t                      }|                     |          }t                      |_        t	                      }|f|j        _        |                    d          }|                     |d            |                     |j	        d           d S )NhelpT)
r   r   r   r]   DummyPluginr   pluginsonecmdr   helped)r   r   rQ   pluginr'   s        r   test_onecmdzControllerTests.test_onecmd   s    $&&]]7++
$JJ
&,Y
"""6**&&&-----r   c                    t                      }|                     |          }t                      |_        t	                      }|f|j        _        d|_        |                    d           | 	                    |j                   d|_        |                    d           | 
                    |j                   d S )NFr   rl   )r   r   r   r]   r   r   r   r   r   rF   assertFalse)r   r   rQ   r   s       r   .test_onecmd_empty_does_not_repeat_previous_cmdz>ControllerTests.test_onecmd_empty_does_not_repeat_previous_cmd   s    $&&]]7++
$JJ
&,Y
"&!!!&&&"'''''r   c                     t                      }|                     |          }t                      |_        i |_        |                    d           |                     |j        d            d S )Nr   )r   r   r   r]   _complete_infor   r   rP   s      r   #test_onecmd_clears_completion_cachez3ControllerTests.test_onecmd_clears_completion_cache   se    $&&]]7++
$JJ
$&
!&!!!2D99999r   c                 @   t                      }|                     |          }t                      |_        |                    d           |                     |j                                        d           |                     |j        t          j	                   d S )Nbadcmdz*** Unknown syntax: badcmd
)
r   r   r   r]   r   r   r^   rr   r   rs   rP   s      r   test_onecmd_bad_command_errorz-ControllerTests.test_onecmd_bad_command_error   s    $&&]]7++
$JJ
(###*3355*	, 	, 	,.0C0KLLLLLr   c                 :   t                      }|                     |          }t                      |_        dg|_        |                    ddd          }|                     |d           |                    ddd          }|                     |d            d S )Nr   rl   r   r,   help    r   r   r   r]   vocabcompleter   rT   s       r   test_complete_action_emptyz*ControllerTests.test_complete_action_empty   s    $&&]]7++
"**
"8
$$R$44)))$$R$44&&&&&r   c                 :   t                      }|                     |          }t                      |_        dg|_        |                    ddd          }|                     |d           |                    ddd          }|                     |d            d S )Nr   hr   r   r   r   r   rT   s       r   test_complete_action_partialz,ControllerTests.test_complete_action_partial   s    $&&]]7++
"**
"8
$$S!#$66)))$$S!#$66&&&&&r   c                     t                      }|                     |          }t                      |_        dg|_        |                    ddd          }|                     |d           d S )Nr   r   r   r   r   rT   s       r   test_complete_action_wholez*ControllerTests.test_complete_action_whole   sj    $&&]]7++
"**
"8
$$VQV$<<)))))r   c                     t                      }|                     |          }t                      |_        |                    ddd          }|                     |d            d S )Nbadr   r   )r   r   r   r]   r   r   rT   s       r   *test_complete_unknown_action_uncompletablez:ControllerTests.test_complete_unknown_action_uncompletable   s`    $&&]]7++
"**
$$UAE$::&&&&&r   c                     t                      }|                     |          }t                      |_        ddg|_        |                    ddd          }|                     |d            d S )Nr   addrl   r   zbad r   r   rT   s       r   .test_complete_unknown_action_arg_uncompletablez>ControllerTests.test_complete_unknown_action_arg_uncompletable   sl    $&&]]7++
"**
"E?
$$R$88&&&&&r   c                    t                      }|                     |          }t                      |_        ddg|_        |                    ddd          }|                     |d           |                    ddd          }|                     |d           |                    dd	d          }|                     |d            d S )
Nr   startrl   r   r   r   r   start    r   rT   s       r   test_complete_help_emptyz(ControllerTests.test_complete_help_empty  s    $&&]]7++
"**
"G,
$$R$99)))$$R$99***$$R$99&&&&&r   c                 <   t                      }|                     |          }t                      |_        ddg|_        |                    ddd          }|                     |d           |                    ddd          }|                     |d            d S )	Nr   r   her   zhelp her   r   r   r   rT   s       r   test_complete_help_actionz)ControllerTests.test_complete_help_action  s    $&&]]7++
"**
"G,
$$T19$==)))$$T19$==&&&&&r   c                 P   t                      }|                     |          }t                      |_        ddg|_        |                    ddd          }|                     |d           |                    ddd          }|                     |d	           |                    dd
d          }|                     |d           |                    ddd          }|                     |d           |                    ddd          }|                     |d            d S )Nr   r   rl   r   r   r   foo r   bar r   zbaz:baz_01    zbaz:*    r   rT   s       r   test_complete_start_emptyz)ControllerTests.test_complete_start_empty  s-   $&&]]7++
"**
"G,
$$R$::((($$R$::((($$R$::///$$R$::***$$R$::&&&&&r   c                 <   t                      }|                     |          }t                      |_        ddg|_        |                    ddd          }|                     |d           |                    ddd          }|                     |d            d S )	Nr   r   rp   r   zstart fr   r   r   r   rT   s       r   test_complete_start_no_colonz,ControllerTests.test_complete_start_no_colon-  s    $&&]]7++
"**
"G,
$$S!)$<<((($$S!)$<<&&&&&r   c                    t                      }|                     |          }t                      |_        ddg|_        |                    ddd          }|                     |d           |                    ddd          }|                     |d	           |                    dd
d          }|                     |d            d S )Nr   r   foo:r   z
start foo:r   zfoo:foo r   zfoo:* r   r   rT   s       r   test_complete_start_with_colonz.ControllerTests.test_complete_start_with_colon7  s    $&&]]7++
"**
"G,
$$VQ\$BB,,,$$VQ\$BB***$$VQ\$BB&&&&&r   c                     t                      }|                     |          }t                      |_        ddg|_        |                    ddd          }|                     |d            d S )Nr   r   r   r   z	start badr   r   rT   s       r   !test_complete_start_uncompletablez1ControllerTests.test_complete_start_uncompletableC  sm    $&&]]7++
"**
"G,
$$UAK$@@&&&&&r   c                 B   t                      }|                     |          }t                      |_        ddg|_        |                    ddd          }|                     |d            d }||j        j        j	        _
        |                    ddd           d S )	Nr   r   rl   r   r   r   c                       t          d          )Nz(should not have called getAllProcessInfo)	Exception)rn   ro   s     r   rp   z<ControllerTests.test_complete_caches_process_info.<locals>.fR  s    FGGGr   r   )r   r   r   r]   r   r   assertNotEqualr   rZ   r[   getAllProcessInfo)r   r   rQ   r'   rp   s        r   !test_complete_caches_process_infoz1ControllerTests.test_complete_caches_process_infoK  s    $&&]]7++
"**
"G,
$$R$::FD)))	H 	H 	HBC
"-?B11111r   c                    t                      }|                     |          }t                      |_        ddg|_        |                    ddd          }|                     |d           |                    ddd          }|                     |d	           |                    dd
d          }|                     |d           |                    ddd          }|                     |d            d S )Nr   r   rl   r   zadd r   r   r   r   r   zbaz r   r   rT   s       r   test_complete_add_emptyz'ControllerTests.test_complete_add_emptyW  s    $&&]]7++
"**
"E?
$$R$88((($$R$88((($$R$88((($$R$88&&&&&r   c                     t                      }|                     |          }t                      |_        ddg|_        |                    ddd          }|                     |d            d S )Nr   r   r   r   zadd badr   r   rT   s       r   test_complete_add_uncompletablez/ControllerTests.test_complete_add_uncompletablee  sl    $&&]]7++
"**
"E?
$$UAI$>>&&&&&r   c                 <   t                      }|                     |          }t                      |_        ddg|_        |                    ddd          }|                     |d           |                    ddd          }|                     |d            d S )	Nr   r   rp   r   zadd fr   r   r   r   rT   s       r   test_complete_add_groupz'ControllerTests.test_complete_add_groupm  s    $&&]]7++
"**
"E?
$$S!'$::((($$S!'$::&&&&&r   c                     t                      }|                     |          }t                      |_        ddg|_        |                    ddd          }|                     |d            d S )Nr   reloadrl   r   zreload r   r   rT   s       r   &test_complete_reload_arg_uncompletablez6ControllerTests.test_complete_reload_arg_uncompletablew  sm    $&&]]7++
"**
"H-
$$R$;;&&&&&r   c                     t                      }|                     |          }|                     |j        d           d S )Nz*** No help on %s)r   r   r   nohelprP   s      r   test_nohelpzControllerTests.test_nohelp  s>    $&&]]7++
*,?@@@@@r   c                 &   t                      }|                     |          }t                      |_        |                    d          }|j                                        }|                     |d            |                     |d           d S )Nrl   
foo helped)r   r   r   r]   do_helpr^   r   r   r   rQ   resultshelpvals        r   test_do_helpzControllerTests.test_do_help  s    $&&]]7++
$JJ
$$R((#,,..$''',/////r   c                 (   t                      }|                     |          }t                      |_        |                    d          }|                     |d            |j                                        }|                     d|v            d S )Nr   zhelp		Print a list)r   r   r   r]   r   r   r^   rF   r   s        r   test_do_help_for_helpz%ControllerTests.test_do_help_for_help  s    $&&]]7++
$JJ
$$V,,$'''#,,...'9:::::r   c                     t                      }|                     |          }|                                }|                                j        }|                     ||           d S r   )r   r   get_supervisorgetServerProxyr[   r   r   r   rQ   proxyexpecteds        r   <test_get_supervisor_returns_serverproxy_supervisor_namespacezLControllerTests.test_get_supervisor_returns_serverproxy_supervisor_namespace  s_    $&&]]7++
))++))++6)))))r   c                     t                      }|                     |          }|                                }|                                }|                     ||           d S r   )r   r   get_server_proxyr   r   r   s        r   6test_get_server_proxy_with_no_args_returns_serverproxyzFControllerTests.test_get_server_proxy_with_no_args_returns_serverproxy  s\    $&&]]7++
++--))++)))))r   c                     t                      }|                     |          }|                    d          }|                                j        }|                     ||           d S )Nsystem)r   r   r   r   r   r   r   s        r   ;test_get_server_proxy_with_namespace_returns_that_namespacezKControllerTests.test_get_server_proxy_with_namespace_returns_that_namespace  sa    $&&]]7++
++H55))++2)))))r   c                     ddl m} g } |            }|                     t          |j                  dk               g |_        |                    |t                     |                     |           d S )Nr   )ClientOptions)doc)supervisor.optionsr   rF   lensearchpathsrealize__doc__r   )r   r   argsr   s       r   #test_real_controller_initializationz3ControllerTests.test_real_controller_initialization  s~    444444-// 	G/0014555 '***gr   N)(r=   r>   r?   r   r   r!   rU   r_   rh   rt   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   rI   rI   H   sQ         / / /C C C
' ' '
: 
: 
:2 2 2$	M 	M 	M] ] ]$Q Q Q$	< 	< 	<. . .( ( (: : :M M M' ' '' ' '* * *' ' '' ' '
' 
' 
'' ' '' ' ' ' ' '
' 
' 
'' ' '
2 
2 
2' ' '' ' '' ' '' ' 'A A A
0 0 0; ; ;* * ** * ** * *
 
 
 
 
r   rI   c                   &    e Zd Zd Zd Zd Zd ZdS )TestControllerPluginBasec                     ddl m} |S )Nr   )ControllerPluginBase)r   r   )r   r   s     r   r   z(TestControllerPluginBase._getTargetClass  s    AAAAAA##r   c                     |                                  }t                      }t          |          } ||g|R i |}|S r   r   r   r   r   rn   ro   klassr   r   r   s          r   r   z!TestControllerPluginBase._makeOne  O    $$&&$&&g&&s'S'''B''r   c                 F   |                                  }|                    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   r]   r^   r   topics_printed)r   r   r'   topicss       r   test_do_help_noargz+TestControllerPluginBase.test_do_help_noarg  s    %%&&&*3355t<<<VZ677;;;*1-$KLLLB'''B'''B'''''r   c                 B   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     t          |j        j                  d           d S )Nfoozno help on foo
r   r  r   r   r'   s      r   test_do_help_withargz-TestControllerPluginBase.test_do_help_witharg  s    &&&&&*33557IJJJVZ677;;;;;r   N)r=   r>   r?   r   r   r	  r  r@   r   r   r   r     sP        $ $ $  
( 
( 
(< < < < <r   r   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLdK ZMdL ZNdM ZOdN ZPdO ZQdP ZRdQ ZSdR ZTdS ZUdT ZVdU ZWdV ZXdW ZYdX ZZdY Z[dZ Z\d[ Z]d\ Z^d] Z_d^ Z`d_ Zad` Zbda Zcdb Zddc Zedd Zfde Zgdf Zhdg Zidh Zjdi Zkdj Zldk Zmdl Zndm Zodn Zpdo Zqdp Zrdq Zsdr Ztds Zudt Zvdu Zwdv Zxdw Zydx Zzdy Z{dz Z|d{ Z}d| Z~d} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestDefaultControllerPluginc                     ddl m} |S )Nr   )DefaultControllerPlugin)r   r  )r   r  s     r   r   z+TestDefaultControllerPlugin._getTargetClass  s    DDDDDD&&r   c                     |                                  }t                      }t          |          } ||g|R i |}|S r   r   r   s          r   r   z$TestDefaultControllerPlugin._makeOne  r  r   c                 r   |                                  }|                    d          }|                     |d            |j        j                                                            d          }|                     |d         d           |                     |j        j        t          j	                   d S )Nrl   r  r   zError: too few arguments
r   do_tailr   r   r]   r^   splitrr   r   rs   r   r   r'   liness       r   test_tail_toofewargsz0TestDefaultControllerPlugin.test_tail_toofewargs  s    ##&&&
!**,,22488q#=>>>.0C0KLLLLLr   c                 r   |                                  }|                    d          }|                     |d            |j        j                                                            d          }|                     |d         d           |                     |j        j        t          j	                   d S )Nzone two three fourr  r   zError: too many argumentsr  r  s       r   test_tail_toomanyargsz1TestDefaultControllerPlugin.test_tail_toomanyargs  s     455&&&
!**,,22488q#>???.0C0KLLLLLr   c                 r   |                                  }|                    d          }|                     |d            |j        j                                                            d          }|                     |d         d           |                     |j        j        t          j	                   d S )N-fr  r   z!Error: tail requires process namer  r  s       r   test_tail_f_noprocnamez2TestDefaultControllerPlugin.test_tail_f_noprocname  s    %%&&&
!**,,22488q#FGGG.0C0KLLLLLr   c                 r   |                                  }|                    d          }|                     |d            |j        j                                                            d          }|                     |d         d           |                     |j        j        t          j	                   d S )Nz-z foor  r   Error: bad argument -zr  r  s       r   test_tail_bad_modifierz2TestDefaultControllerPlugin.test_tail_bad_modifier  s    ))&&&
!**,,22488q#;<<<.0C0KLLLLLr   c                 d   |                                  }|                    d          }|                     |d            |j        j                                                            d          }|                     t          |          d           |                     |d         d           d S )Nr  r     r   stdout liner   r  r   r   r]   r^   r  r   r  s       r   test_tail_defaultsz.TestDefaultControllerPlugin.test_tail_defaults  s    &&&&&
!**,,22488UR(((q=11111r   c                    |                                  }|                    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   r]   r^   r  r   rr   r   rs   r  s       r   test_tail_no_filez-TestDefaultControllerPlugin.test_tail_no_file  s    	**&&&
!**,,22488UQ'''q#ABBB.0C0KLLLLLr   c                    |                                  }|                    d          }|                     |d            |j        j                                                            d          }|                     t          |          d           |                     |d         d           |                     |j        j        t          j
                   d S )Nrm   r  r   r   z)FAILED: ERROR (unknown error reading log)r)  r  s       r   test_tail_failedz,TestDefaultControllerPlugin.test_tail_failed  s    ))&&&
!**,,22488UQ'''q#NOOO.0C0KLLLLLr   c                    |                                  }|                    d          }|                     |d            |j        j                                                            d          }|                     t          |          d           |                     |d         d           |                     |j        j        t          j
                   d S )NBAD_NAMEr  r   r   z&BAD_NAME: ERROR (no such process name)r)  r  s       r   test_tail_bad_namez.TestDefaultControllerPlugin.test_tail_bad_name!  s    
++&&&
!**,,22488UQ'''q#KLLL.0C0KLLLLLr   c                 d   |                                  }|                    d          }|                     |d            |j        j                                                            d          }|                     t          |          d           |                     |d         d           d S )Nz-10 foor  r   r   z	dout liner%  r  s       r   test_tail_bytesmodifierz3TestDefaultControllerPlugin.test_tail_bytesmodifier*  s    	**&&&
!**,,22488UQ'''q;/////r   c                 d   |                                  }|                    d          }|                     |d            |j        j                                                            d          }|                     t          |          d           |                     |d         d           d S )Nz
foo stdoutr  r#  r   r$  r%  r  s       r   ,test_tail_explicit_channel_stdout_nomodifierzHTestDefaultControllerPlugin.test_tail_explicit_channel_stdout_nomodifier2      --&&&
!**,,22488UR(((q=11111r   c                 d   |                                  }|                    d          }|                     |d            |j        j                                                            d          }|                     t          |          d           |                     |d         d           d S )Nz
foo stderrr  r#  r   zstderr liner%  r  s       r   ,test_tail_explicit_channel_stderr_nomodifierzHTestDefaultControllerPlugin.test_tail_explicit_channel_stderr_nomodifier:  r4  r   c                 d   |                                  }|                    d          }|                     |d            |j        j                                                                        }|                     |d           |                     |j        j        t          j	                   d S )Nz	foo fudgezError: bad channel 'fudge')
r   r  r   r   r]   r^   striprr   r   rs   r   r   r'   values       r   'test_tail_explicit_channel_unrecognizedzCTestDefaultControllerPlugin.test_tail_explicit_channel_unrecognizedB  s    ,,&&&
!**,,2244 <===.0C0KLLLLLr   c                     |                                  }d |j        _        g fd}||j        j        j        j        _        |                    d           |                     g            d S )Nc                      dS r   r@   r@   r   r   rY   zFTestDefaultControllerPlugin.test_tail_upcheck_failed.<locals>.<lambda>L      U r   c                  2                         d           d S r3   appendrn   ro   calleds     r   rp   z?TestDefaultControllerPlugin.test_tail_upcheck_failed.<locals>.fN      MM$r   r  )	r   r   rS   r   rZ   r[   readProcessStdoutLogr  r   r   r   rp   rC  s      @r   test_tail_upcheck_failedz4TestDefaultControllerPlugin.test_tail_upcheck_failedJ  s{    *]
	  	  	  	  	 EF
"-Bu$$$$$r   c                     |                                  }|                                 |j        j                                        }|                     d|v            d S )Nzstatus <name>)r   help_statusr   r]   r^   rF   r   r   outs      r   test_status_helpz,TestDefaultControllerPlugin.test_status_helpT  sT    j((**3./////r   c                     |                                  }d |j        _        g fd}||j        j        j        j        _        |                    d           |                     g            d S )Nc                      dS r   r@   r@   r   r   rY   zHTestDefaultControllerPlugin.test_status_upcheck_failed.<locals>.<lambda>\  r>  r   c                  2                         d           d S r3   r@  rB  s     r   rp   zATestDefaultControllerPlugin.test_status_upcheck_failed.<locals>.f^  rD  r   rl   )	r   r   rS   r   rZ   r[   r   	do_statusr   rF  s      @r   test_status_upcheck_failedz6TestDefaultControllerPlugin.test_status_upcheck_failedZ  s}    *]
	  	  	  	  	 BC
"-?$$$$$r   c                 D   |                                  }|                    d          }|                     |d            |j        j                                                            d          }|                     |d                             d          d           d S )Nrl   r  r   RUNNING!   )r   rP  r   r   r]   r^   r  indexr  s       r   *test_status_table_process_column_min_widthzFTestDefaultControllerPlugin.test_status_table_process_column_min_widthd  s    !!"%%&&&
!**,,22488q	22B77777r   c                    |                                  }|j        j        }d }||j        j        _        |                     |                    d          d            |j        j        	                                
                    d          }|                     |d                             d          d           |                     |d                             d          d           d S )Nc                  V    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     rS  rl   foo description
namegrouppidstate	statenamer   stopspawnerrnowdescriptionbarr#  bar description)supervisor.statesrZ  rS  FATALrn   ro   rZ  s      r   rp   zOTestDefaultControllerPlugin.test_status_table_process_column_expands.<locals>.fn  sv    777777%"+3"+!##4	6 	6 ""*0!* "#4  r   rl   r  r   rS     r   )r   r   r   rZ   r[   r   r   rP  r]   r^   r  rU  )r   r   r   rp   r  s        r   (test_status_table_process_column_expandszDTestDefaultControllerPlugin.test_status_table_process_column_expandsk  s    *$	 	 	0 89"4))"--t444
!**,,22488q	22C888q	22C88888r   c                 f   |                                  }|                    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 )	Nrl   r  r   r   r  rS  r]  r   rh  rk  ri  z
baz:baz_01STOPPEDzbaz description
r   rP  r   r   r]   r^   r  rr   r   r   r9  s       r    test_status_all_processes_no_argz<TestDefaultControllerPlugin.test_status_all_processes_no_arg  s&   !!"%%&&&
!**,,22488qa00>>>	@ 	@ 	@qa00<<<	> 	> 	>qa00EEE	G 	G 	G.0E0QRRRRRr   c                    |                                  }|                    d          }|                     |d            |                     |j        j        t
          j                   |j        j                                        	                    d          }|                     |d         	                    d d          g d           d S )Nr  r  r   r   rp  )
r   rP  r   r   rr   r   SUCCESSr]   r^   r  r9  s       r   test_status_successz/TestDefaultControllerPlugin.test_status_success  s    !!%((&&&.0C0KLLL
!**,,22488qa00>>>	@ 	@ 	@ 	@ 	@r   c                 @   |                                  }|                    d          }|                     |d            |j        j                                        }|                     d|           |                     |j        j        t          j                   d S )Nunknownprogramz(unknownprogram: ERROR (no such process)
)	r   rP  r   r   r]   r^   rr   r   UNKNOWNr9  s       r   test_status_unknown_processz7TestDefaultControllerPlugin.test_status_unknown_process  s    !!"233&&&
!**,,DeLLL.0E0MNNNNNr   c                 f   |                                  }|                    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 )	Nallr  r   r   rp  r   rq  rr  rt  r9  s       r   !test_status_all_processes_all_argz=TestDefaultControllerPlugin.test_status_all_processes_all_arg  s&   !!%((&&&
!**,,22488qa00>>>	@ 	@ 	@qa00<<<	> 	> 	>qa00EEE	G 	G 	G.0E0QRRRRRr   c                    |                                  }|                    d          }|                     |d            |j        j                                                                        }|                     |                    d d          g d           |                     |j        j        t          j
                   d S )Nr  r   rp  )r   rP  r   r   r]   r^   r8  r  rr   r   rw  r9  s       r   test_status_process_namez4TestDefaultControllerPlugin.test_status_process_name  s    !!%((&&&
!**,,2244T1-->>>	@ 	@ 	@.0C0KLLLLLr   c                    |                                  }|                    d          }|                     |d            |j        j                                                            d          }|                     |d                             d d          g d           |                     |j        j        t          j	                   d S )Nzbaz:*r  r   r   rr  rt  r9  s       r   test_status_group_namez2TestDefaultControllerPlugin.test_status_group_name  s    !!'**&&&
!**,,22488qa00EEE	G 	G 	G.0E0QRRRRRr   c                    |                                  }|                    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   rp  r   rr  rt  r9  s       r   test_status_mixed_namesz3TestDefaultControllerPlugin.test_status_mixed_names  s    !!+..&&&
!**,,22488qa00>>>	@ 	@ 	@qa00EEE	G 	G 	G.0E0QRRRRRr   c                 r   |                                  }|                    d          }|                     |d            |j        j                                                            d          }|                     |d         d           |                     |j        j        t          j	                   d S )Nz
badgroup:*r  r   zbadgroup: ERROR (no such group)
r   rP  r   r   r]   r^   r  rr   r   r{  r9  s       r   test_status_bad_group_namez6TestDefaultControllerPlugin.test_status_bad_group_name  s    !!,//&&&
!**,,22488q#DEEE.0E0MNNNNNr   c                 r   |                                  }|                    d          }|                     |d            |j        j                                                            d          }|                     |d         d           |                     |j        j        t          j	                   d S )N
badprocessr  r   z#badprocess: ERROR (no such process)r  r9  s       r   test_status_bad_process_namez8TestDefaultControllerPlugin.test_status_bad_process_name  s    !!,//&&&
!**,,22488q#HIII.0E0MNNNNNr   c                 r   |                                  }|                    d          }|                     |d            |j        j                                                            d          }|                     |d         d           |                     |j        j        t          j	                   d S )Nzbadgroup:badprocessr  r   z,badgroup:badprocess: ERROR (no such process)r  r9  s       r   'test_status_bad_process_name_with_groupzCTestDefaultControllerPlugin.test_status_bad_process_name_with_group  s    !!"788&&&
!**,,22488q $= 	> 	> 	>.0E0MNNNNNr   c                     |                                  }|                                 |j        j                                        }|                     d|v            d S )Nzstart <name>)r   
help_startr   r]   r^   rF   rJ  s      r   test_start_helpz+TestDefaultControllerPlugin.test_start_help  T    j((**#-.....r   c                 r   |                                  }|                    d          }|                     |d            d}|                     |j        j                                                            d          d         |           |                     |j        j        t          j	                   d S )Nrl   z$Error: start requires a process namer  r   )
r   do_startr   r   r]   r^   r  rr   r   INVALID_ARGSr   r   r'   r   s       r   test_start_failz+TestDefaultControllerPlugin.test_start_fail  s    $$&&&9*3355;;DAA!DhOOO.0C0PQQQQQr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S Nr.  "BAD_NAME: ERROR (no such process)
	r   r  r   r   r]   r^   rr   r   rs   r  s      r   test_start_badnamez.TestDefaultControllerPlugin.test_start_badname      ,,&&&*3355>	@ 	@ 	@.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nr(  zNO_FILE: ERROR (no such file)
r  r  s      r   test_start_no_filez.TestDefaultControllerPlugin.test_start_no_file  s    ++&&&*3355:	< 	< 	<.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )NNOT_EXECUTABLEz/NOT_EXECUTABLE: ERROR (file is not executable)
r  r  s      r   test_start_not_executablez5TestDefaultControllerPlugin.test_start_not_executable  s    !122&&&*3355K	M 	M 	M.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )NALREADY_STARTEDz)ALREADY_STARTED: ERROR (already started)
	r   r  r   r   r]   r^   rr   r   rw  r  s      r   test_start_alreadystartedz5TestDefaultControllerPlugin.test_start_alreadystarted  s    !233&&&*3355E	G 	G 	G.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )NSPAWN_ERRORz!SPAWN_ERROR: ERROR (spawn error)
	r   r  r   r   r]   r^   rr   r   r   r  s      r   test_start_spawnerrorz1TestDefaultControllerPlugin.test_start_spawnerror  s    //&&&*3355=	? 	? 	?.0C0OPPPPPr   c                 @   |                                  }|                    d          }|                     |d            d}|                     |j        j                                        |           |                     |j        j        t          j                   d S )NABNORMAL_TERMINATIONz3ABNORMAL_TERMINATION: ERROR (abnormal termination)
r  r  s       r   test_start_abnormalterminationz:TestDefaultControllerPlugin.test_start_abnormaltermination$  s    !788&&&I*3355x@@@.0C0OPPPPPr   c                     |                                  }|                    d          }|                     |d            |                     |j        j                                        d           d S )Nr  foo: started
)r   r  r   r   r]   r^   r  s      r   test_start_one_successz2TestDefaultControllerPlugin.test_start_one_success,  sn    ''&&&*3355)	+ 	+ 	+ 	+ 	+r   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nfoo:foor  r  r  s      r   &test_start_one_with_group_name_successzBTestDefaultControllerPlugin.test_start_one_with_group_name_success3      ++&&&*3355)	+ 	+ 	+.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nfoo barzfoo: started
bar: started
r  r  s      r   test_start_manyz+TestDefaultControllerPlugin.test_start_many;      ++&&&*33557	9 	9 	9.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nr   z(foo:foo_00: started
foo:foo_01: started
r  r  s      r   test_start_groupz,TestDefaultControllerPlugin.test_start_groupC  s    ((&&&*33551	2 	2 	2 	.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S Nz	BAD_NAME: BAD_NAME: ERROR (no such group)
)	r   r  r   r   r]   r^   rr   r   r  r  s      r   test_start_group_bad_namez5TestDefaultControllerPlugin.test_start_group_bad_nameM  s    --&&&*3355<	> 	> 	>.0C0PQQQQQr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nr~  zDfoo: started
foo2: started
failed_group:failed: ERROR (spawn error)
r  r  s      r   test_start_allz*TestDefaultControllerPlugin.test_start_allU  s    ''&&&*3355F	G 	G 	G 	.0C0OPPPPPr   c                     |                                  }d |j        _        g fd}|j        j        j        j        }||_        ||_        |                    d           | 	                    g            d S )Nc                      dS r   r@   r@   r   r   rY   zGTestDefaultControllerPlugin.test_start_upcheck_failed.<locals>.<lambda>b  r>  r   c                  2                         d           d S r3   r@  rB  s     r   rp   z@TestDefaultControllerPlugin.test_start_upcheck_failed.<locals>.fd  rD  r   r  )
r   r   rS   r   rZ   r[   startAllProcessesstartProcessGroupr  r   r   r   rp   r[   rC  s       @r   test_start_upcheck_failedz5TestDefaultControllerPlugin.test_start_upcheck_failed`  s    *]
	  	  	  	  	 Z'/:
'(
$'(
$$$$$$r   c                     |                                  }|                                 |j        j                                        }|                     d|v            d S )Nzstop <name>)r   	help_stopr   r]   r^   rF   rJ  s      r   test_stop_helpz*TestDefaultControllerPlugin.test_stop_helpl  sT    j((**,-----r   c                 n   |                                  }|                    d          }|                     |d            |                     |j        j                                                            d          d         d           |                     |j        j        t          j	                   d S )Nrl   r  r   z#Error: stop requires a process name)
r   do_stopr   r   r]   r^   r  rr   r   rs   r  s      r   test_stop_failz*TestDefaultControllerPlugin.test_stop_failr  s    ##&&&*3355;;DAA!D>	@ 	@ 	@.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S r  	r   r  r   r   r]   r^   rr   r   rs   r  s      r   test_stop_badnamez-TestDefaultControllerPlugin.test_stop_badnamez  s    
++&&&*3355>	@ 	@ 	@.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nr   !NOT_RUNNING: ERROR (not running)
	r   r  r   r   r]   r^   rr   r   rw  r  s      r   test_stop_notrunningz0TestDefaultControllerPlugin.test_stop_notrunning  s    ..&&&*3355=	? 	? 	?.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nrm   FAILED
r  r  s      r   test_stop_failedz,TestDefaultControllerPlugin.test_stop_failed  s    ))&&&*3355zBBB.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nr  foo: stopped
r  r  s      r   test_stop_one_successz1TestDefaultControllerPlugin.test_stop_one_success  s    &&&&&*3355)	+ 	+ 	+.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nr  r  r  r  s      r   %test_stop_one_with_group_name_successzATestDefaultControllerPlugin.test_stop_one_with_group_name_success  s    	**&&&*3355)	+ 	+ 	+.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nr  zfoo: stopped
bar: stopped
r  r  s      r   test_stop_manyz*TestDefaultControllerPlugin.test_stop_many  s    	**&&&*3355*	+ 	+ 	+ 	.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nr   z(foo:foo_00: stopped
foo:foo_01: stopped
r  r  s      r   test_stop_groupz+TestDefaultControllerPlugin.test_stop_group  s    ''&&&*33551	2 	2 	2 	.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S r  r  r  s      r   test_stop_group_bad_namez4TestDefaultControllerPlugin.test_stop_group_bad_name  s    ,,&&&*3355<	> 	> 	>.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nr~  zHfoo: stopped
foo2: stopped
failed_group:failed: ERROR (no such process)
r  r  s      r   test_stop_allz)TestDefaultControllerPlugin.test_stop_all  s    &&&&&*3355J	K 	K 	K 	.0C0KLLLLLr   c                     |                                  }d |j        _        g fd}|j        j        j        j        }||_        ||_        |                    d           | 	                    g            d S )Nc                      dS r   r@   r@   r   r   rY   zFTestDefaultControllerPlugin.test_stop_upcheck_failed.<locals>.<lambda>  r>  r   c                  2                         d           d S r3   r@  rB  s     r   rp   z?TestDefaultControllerPlugin.test_stop_upcheck_failed.<locals>.f  rD  r   r  )
r   r   rS   r   rZ   r[   stopAllProcessesstopProcessGroupr  r   r  s       @r   test_stop_upcheck_failedz4TestDefaultControllerPlugin.test_stop_upcheck_failed  s    *]
	  	  	  	  	 Z'/:
&'
#&'
#u$$$$$r   c                     |                                  }|                                 |j        j                                        }|                     d|v            d S )Nzsignal <signal name> <name>)r   help_signalr   r]   r^   rF   rJ  s      r   test_signal_helpz,TestDefaultControllerPlugin.test_signal_help  sU    j((**5<=====r   c                 r   |                                  }|                    d          }|                     |d            d}|                     |j        j                                                            d          d         |           |                     |j        j        t          j	                   d S )Nrl   7Error: signal requires a signal name and a process namer  r   
r   	do_signalr   r   r]   r^   r  rr   r   rs   r   r   r'   msgs       r   test_signal_fail_no_argz3TestDefaultControllerPlugin.test_signal_fail_no_arg  s    !!"%%&&&G*3355;;DAA!DcJJJ.0C0KLLLLLr   c                 r   |                                  }|                    d          }|                     |d            d}|                     |j        j                                                            d          d         |           |                     |j        j        t          j	                   d S )Nhupr  r  r   r  r  s       r   test_signal_fail_one_argz4TestDefaultControllerPlugin.test_signal_fail_one_arg  s    !!%((&&&G*3355;;DAA!DcJJJ.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )NzBAD_SIGNAL foozfoo: ERROR (bad signal name)
	r   r  r   r   r]   r^   rr   r   rs   r  s      r   test_signal_bad_signalz2TestDefaultControllerPlugin.test_signal_bad_signal  s    !!"233&&&*33559	; 	; 	;.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )NzHUP BAD_NAMEr  r  r  s      r   test_signal_bad_namez0TestDefaultControllerPlugin.test_signal_bad_name  s    !!.11&&&*3355>	@ 	@ 	@.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )NzHUP BAD_NAME:r  r  r  s      r   test_signal_bad_groupz1TestDefaultControllerPlugin.test_signal_bad_group  s    !!/22&&&*3355<	> 	> 	>.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )NzHUP NOT_RUNNINGr  )	r   r  r   r   r]   r^   rr   r   r   r  s      r   test_signal_not_runningz3TestDefaultControllerPlugin.test_signal_not_running  s    !!"344&&&*3355=	? 	? 	?.0C0OPPPPPr   c                 (   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        d           d S )Nz
HUP FAILEDr  r   )r   r  r   r   r]   r^   rr   r  s      r   test_signal_failedz.TestDefaultControllerPlugin.test_signal_failed  s    !!,//&&&*3355zBBB.22222r   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )NzHUP foozfoo: signalled
	r   r  r   r   r]   r^   rr   r   rw  r  s      r   test_signal_one_successz3TestDefaultControllerPlugin.test_signal_one_success  s    !!),,&&&*33557IJJJ.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )NzHUP foo barzfoo: signalled
bar: signalled
r  r  s      r   test_signal_manyz,TestDefaultControllerPlugin.test_signal_many  s    !!-00&&&*3355,	- 	- 	- 	.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )NzHUP foo:z,foo:foo_00: signalled
foo:foo_01: signalled
r  r  s      r   test_signal_groupz-TestDefaultControllerPlugin.test_signal_group  s    !!*--&&&*33553	4 	4 	4 	.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )NzHUP allzLfoo: signalled
foo2: signalled
failed_group:failed: ERROR (no such process)
r  r  s      r   test_signal_allz+TestDefaultControllerPlugin.test_signal_all'  s    !!),,&&&*3355J	K 	K 	K 	.0C0KLLLLLr   c                     |                                  }d |j        _        g fd}|j        j        j        j        }||_        ||_        |                    d           | 	                    g            d S )Nc                      dS r   r@   r@   r   r   rY   zHTestDefaultControllerPlugin.test_signal_upcheck_failed.<locals>.<lambda>3  r>  r   c                  2                         d           d S r3   r@  rB  s     r   rp   zATestDefaultControllerPlugin.test_signal_upcheck_failed.<locals>.f5  rD  r   zterm foo)
r   r   rS   r   rZ   r[   signalAllProcessessignalProcessGroupr  r   r  s       @r   test_signal_upcheck_failedz6TestDefaultControllerPlugin.test_signal_upcheck_failed1  s    *]
	  	  	  	  	 Z'/:
()
%()
%$$$$$$$$r   c                     |                                  }|                                 |j        j                                        }|                     d|v            d S )Nzrestart <name>)r   help_restartr   r]   r^   rF   rJ  s      r   test_restart_helpz-TestDefaultControllerPlugin.test_restart_help=  sU    j((**(C/00000r   c                 n   |                                  }|                    d          }|                     |d            |                     |j        j                                                            d          d         d           |                     |j        j        t          j	                   d S )Nrl   r  r   z&Error: restart requires a process name)
r   
do_restartr   r   r]   r^   r  rr   r   rs   r  s      r   test_restart_failz-TestDefaultControllerPlugin.test_restart_failC  s    ""2&&&&&*3355;;DAA!DA	C 	C 	C.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nr  zfoo: stopped
foo: started
)	r   r  r   r   r]   r^   rr   r   rw  r  s      r   test_restart_onez,TestDefaultControllerPlugin.test_restart_oneK  s    ""5))&&&*33557	9 	9 	9.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nr~  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   r]   r^   rr   r   r   r  s      r   test_restart_allz,TestDefaultControllerPlugin.test_restart_allS  s    ""5))&&&*3355F	G 	G 	G
 	.0C0OPPPPPr   c                     |                                  }d |j        _        g fd}|j        j        j        j        }||_        ||_        |                    d           | 	                    g            d S )Nc                      dS r   r@   r@   r   r   rY   zITestDefaultControllerPlugin.test_restart_upcheck_failed.<locals>.<lambda>`  r>  r   c                  2                         d           d S r3   r@  rB  s     r   rp   zBTestDefaultControllerPlugin.test_restart_upcheck_failed.<locals>.fb  rD  r   r  )
r   r   rS   r   rZ   r[   r  r  r  r   r  s       @r   test_restart_upcheck_failedz7TestDefaultControllerPlugin.test_restart_upcheck_failed^  s    *]
	  	  	  	  	 Z'/:
&'
#&'
#%   $$$$$r   c                     |                                  }|                                 |j        j                                        }|                     d|v            d S )Nzclear <name>)r   
help_clearr   r]   r^   rF   rJ  s      r   test_clear_helpz+TestDefaultControllerPlugin.test_clear_helpj  r  r   c                 n   |                                  }|                    d          }|                     |d            |                     |j        j                                                            d          d         d           |                     |j        j        t          j	                   d S )Nrl   r  r   z$Error: clear requires a process name)
r   do_clearr   r   r]   r^   r  rr   r   rs   r  s      r   test_clear_failz+TestDefaultControllerPlugin.test_clear_failp  s    $$&&&*3355;;DAA!D?	A 	A 	A.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S r  	r   r#  r   r   r]   r^   rr   r   rs   r  s      r   test_clear_badnamez.TestDefaultControllerPlugin.test_clear_badnamex  r  r   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nr  foo: cleared
	r   r#  r   r   r]   r^   rr   r   rw  r  s      r   test_clear_one_successz2TestDefaultControllerPlugin.test_clear_one_success  s    ''&&&*3355)	+ 	+ 	+.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nr  r)  r*  r  s      r   !test_clear_one_with_group_successz=TestDefaultControllerPlugin.test_clear_one_with_group_success  r  r   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nr  zfoo: cleared
bar: cleared
r*  r  s      r   test_clear_manyz+TestDefaultControllerPlugin.test_clear_many  r  r   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nr~  z?foo: cleared
foo2: cleared
failed_group:failed: ERROR (failed)
r&  r  s      r   test_clear_allz*TestDefaultControllerPlugin.test_clear_all  s    ''&&&*3355A	B 	B 	B 	.0C0KLLLLLr   c                     |                                  }d |j        _        g fd}|j        j        j        j        }||_        ||_        |                    d           | 	                    g            d S )Nc                      dS r   r@   r@   r   r   rY   zGTestDefaultControllerPlugin.test_clear_upcheck_failed.<locals>.<lambda>  r>  r   c                  2                         d           d S r3   r@  rB  s     r   rp   z@TestDefaultControllerPlugin.test_clear_upcheck_failed.<locals>.f  rD  r   r  )
r   r   rS   r   rZ   r[   clearAllProcessLogsclearProcessLogsr#  r   r  s       @r   test_clear_upcheck_failedz5TestDefaultControllerPlugin.test_clear_upcheck_failed  s    *]
	  	  	  	  	 Z'/:
)*
&&'
#$$$$$r   c                     |                                  }|                                 |j        j                                        }|                     d|v            d S )Nz
open <url>)r   	help_openr   r]   r^   rF   rJ  s      r   test_open_helpz*TestDefaultControllerPlugin.test_open_help  sT    j((**+,,,,,r   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nbadnamez&ERROR: url must be http:// or unix://
)	r   do_openr   r   r]   r^   rr   r   rs   r  s      r   test_open_failz*TestDefaultControllerPlugin.test_open_fail  s    	**&&&*3355B	D 	D 	D.0C0KLLLLLr   c                 f   |                                  }|                    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 )	Nzhttp://localhost:9002r  r   r   rp  r   rq  rr  )
r   r=  r   r   r]   r^   r  rr   r   rw  r9  s       r   test_open_succeedz-TestDefaultControllerPlugin.test_open_succeed  s%    788&&&
!**,,22488qa00>>>	@ 	@ 	@qa00<<<	> 	> 	>qa00EEE	G 	G 	G.0C0KLLLLLr   c                     |                                  }|                                 |j        j                                        }|                     d|v            d S )Nz*Show the version of the remote supervisord)r   help_versionr   r]   r^   rF   rJ  s      r   test_version_helpz-TestDefaultControllerPlugin.test_version_help  sU    j((**DKLLLLLr   c                     |                                  }|                    d            |                     |j        j                                        d           d S )Nz3000
)r   
do_versionr   r   r]   r^   r   r   s     r   test_versionz(TestDefaultControllerPlugin.test_version  sP    $*3355x@@@@@r   c                 f   |                                  }|                    d          }|                     |d            |j        j                                        }|                     |                    d          |           |                     |j        j        t          j
                   d S )Nr   z#Error: version accepts no arguments)r   rE  r   r   r]   r^   rF   
startswithrr   r   rs   r   r   r'   vals       r   test_version_argz,TestDefaultControllerPlugin.test_version_arg  s    ""5))&&&j((**'LMMsSSS.0C0KLLLLLr   c                     |                                  }d |j        _        g fd}||j        j        j        j        _        |                    d           |                     g            d S )Nc                      dS r   r@   r@   r   r   rY   zITestDefaultControllerPlugin.test_version_upcheck_failed.<locals>.<lambda>  r>  r   c                  2                         d           d S r3   r@  rB  s     r   rp   zBTestDefaultControllerPlugin.test_version_upcheck_failed.<locals>.f  rD  r   rl   )	r   r   rS   r   rZ   r[   getSupervisorVersionrE  r   rF  s      @r   test_version_upcheck_failedz7TestDefaultControllerPlugin.test_version_upcheck_failed  s}    *]
	  	  	  	  	 EF
"-B"$$$$$r   c                     |                                  }|                                 |j        j                                        }|                     d|v            d S )NzRestart the remote supervisord)r   help_reloadr   r]   r^   rF   rJ  s      r   test_reload_helpz,TestDefaultControllerPlugin.test_reload_help  sU    j((**8C?@@@@@r   c                    |                                  }|j        j        }d|j        j        _        |                    d          }|                     |d            |                     |j        j        j        d           d S )NFrl   )	r   r   r   rZ   r[   _restartable	do_reloadr   
_restartedr   r   r   r'   s       r   test_reload_failz,TestDefaultControllerPlugin.test_reload_fail  ss    *$27"/!!"%%&&&3>FFFFFr   c                     |                                  }|j        j        }|                    d          }|                     |d            |                     |j        j        j        d           d S Nrl   T)r   r   r   rW  r   rZ   r[   rX  rY  s       r   test_reloadz'TestDefaultControllerPlugin.test_reload  sf    *$!!"%%&&&3>EEEEEr   c                 f   |                                  }|                    d          }|                     |d            |j        j                                        }|                     |                    d          |           |                     |j        j        t          j
                   d S )Nr   z"Error: reload accepts no arguments)r   rW  r   r   r]   r^   rF   rI  rr   r   rs   rJ  s       r   test_reload_argz+TestDefaultControllerPlugin.test_reload_arg      !!%((&&&j((**'KLLcRRR.0C0KLLLLLr   c                     |                                  }|                                 |j        j                                        }|                     d|v            d S )Nz Shut the remote supervisord down)r   help_shutdownr   r]   r^   rF   rJ  s      r   test_shutdown_helpz.TestDefaultControllerPlugin.test_shutdown_help  U    j((**:cABBBBBr   c                    |                                  }|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   rZ   r[   	_shutdownr]   r^   rF   rI  rr   r   rs   )r   r   r   r'   rK  s        r   "test_shutdown_with_arg_shows_errorz>TestDefaultControllerPlugin.test_shutdown_with_arg_shows_error
  s    *$##E**&&&3=uEEEj((**'MNNPSTTT.0C0KLLLLLr   c                     |                                  }|j        j        }|                    d          }|                     |d            |                     |j        j        j        d           d S r\  )r   r   r   rf  r   rZ   r[   rg  rY  s       r   test_shutdownz)TestDefaultControllerPlugin.test_shutdown  sf    *$##B''&&&3=tDDDDDr   c                    |                                  }ddlm fd}||j        j        j        j        _        |                    d          }|                     |d            |                     |j        j	        
                                d           |                     |j        j        t          j                   d S )Nr   r   c                  B    t          j        j        j        d          )Nbyer   re   rb   SHUTDOWN_STATErn   ro   r   s     r   r~   zbTestDefaultControllerPlugin.test_shutdown_catches_xmlrpc_fault_shutdown_state.<locals>.raise_fault  s    /&-">FFFr   rl   zERROR: already shutting down
)r   r[   r   r   r   rZ   shutdownrf  r   r]   r^   rr   r   rw  )r   r   r~   r'   r   s       @r   1test_shutdown_catches_xmlrpc_fault_shutdown_statezMTestDefaultControllerPlugin.test_shutdown_catches_xmlrpc_fault_shutdown_state  s    %%%%%%	G 	G 	G 	G 	G9D
"-6##B''&&&*33559	; 	; 	;.0C0KLLLLLr   c                    |                                  }ddlm fd}||j        j        j        j        _        |                     t          j	        |j
        d           |                     |j        j        t          j                   d S )Nr   r   c                  B    t          j        j        j        d          )Nouchr   re   rb   CANT_REREADrp  s     r   r~   z[TestDefaultControllerPlugin.test_shutdown_reraises_other_xmlrpc_faults.<locals>.raise_fault-      /&-";VDDDr   rl   )r   r[   r   r   r   rZ   rq  rq   r   re   rf  r   rr   r   rs   )r   r   r~   r   s      @r   *test_shutdown_reraises_other_xmlrpc_faultszFTestDefaultControllerPlugin.test_shutdown_reraises_other_xmlrpc_faults)  s    %%%%%%	E 	E 	E 	E 	E9D
"-6)/ ,b	2 	2 	2.0C0KLLLLLr   c                    |                                  }dd ldd lfd}||j        j        j        j        _        |                    d          }| 	                    |d            |j        j
                                        }|                     d|v            | 	                    |j        j        t          j                   d S )Nr   c                  :                         j        d          rw   rx   r{   s     r   r~   z`TestDefaultControllerPlugin.test_shutdown_catches_socket_error_ECONNREFUSED.<locals>.raise_fault:  r   r   rl   z'refused connection (already shut down?)r   r}   r|   r   r   rZ   r[   rq  rf  r   r]   r^   rF   rr   r   rs   r   r   r~   r'   r   r|   r}   s        @@r   /test_shutdown_catches_socket_error_ECONNREFUSEDzKTestDefaultControllerPlugin.test_shutdown_catches_socket_error_ECONNREFUSED5  s    	B 	B 	B 	B 	B 	B9D
"-6##B''&&&"++--AVKLLL.0C0KLLLLLr   c                    |                                  }dd ldd lfd}||j        j        j        j        _        |                    d          }| 	                    |d            |j        j
                                        }|                     d|v            | 	                    |j        j        t          j                   d S )Nr   c                  :                         j        d          )Nzno filer   r{   s     r   r~   zZTestDefaultControllerPlugin.test_shutdown_catches_socket_error_ENOENT.<locals>.raise_faultJ  s    ,,u|Y777r   rl   z!no such file (already shut down?)r|  r}  s        @@r   )test_shutdown_catches_socket_error_ENOENTzETestDefaultControllerPlugin.test_shutdown_catches_socket_error_ENOENTE  s    	8 	8 	8 	8 	8 	89D
"-6##B''&&&"++--;vEFFF.0C0KLLLLLr   c                    |                                  }dd ldd lfd}||j        j        j        j        _        |                     j	        |j
        d           |                     |j        j        t          j                   d S )Nr   c                  :                         j        d          )Ndenied)ry   EPERMr{   s     r   r~   z[TestDefaultControllerPlugin.test_shutdown_reraises_other_socket_errors.<locals>.raise_faultZ  s    ,,u{H555r   rl   )r   r}   r|   r   r   rZ   r[   rq  rq   ry   rf  r   rr   r   rs   )r   r   r~   r|   r}   s      @@r   *test_shutdown_reraises_other_socket_errorszFTestDefaultControllerPlugin.test_shutdown_reraises_other_socket_errorsU  s    	6 	6 	6 	6 	6 	69D
"-6&, ,b	2 	2 	2.0C0KLLLLLr   c                     |                                  }|                    dgdgdgg           |                    g g g g           d S )Naddedchangedremoved)r   _formatChangesrF  s     r   test__formatChangesz/TestDefaultControllerPlugin.test__formatChangesb  sP    y9+	{CDDDr2rl+++++r   c                    |                                  }|                                 |j        j                                        }|                     d|v            |                     |j        j        t          j	                   d S )Nz'Reload the daemon's configuration files)
r   help_rereadr   r]   r^   rF   r   rr   r   rw  rJ  s      r   test_reread_helpz,TestDefaultControllerPlugin.test_reread_helph  st    j((**ASHIII.0C0KLLLLLr   c                 6   |                                  }g fd|_        |                    d           }|                     |d            |                     d         dgdgdgg           |                     |j        j        t          j                   d S )Nc                 .                         |           S r   r@  rX   callss    r   rY   z9TestDefaultControllerPlugin.test_reread.<locals>.<lambda>r  s    %,,q// r   r   r  r  r  )r   r  	do_rereadr   r   rr   r   rw  )r   r   r'   r  s      @r   test_rereadz'TestDefaultControllerPlugin.test_rereado  s     9 9 9 9!!$''&&&qWI	{YK#HIII.0C0KLLLLLr   c                 f   |                                  }|                    d          }|                     |d            |j        j                                        }|                     |                    d          |           |                     |j        j        t          j
                   d S )Nr   z"Error: reread accepts no arguments)r   r  r   r   r]   r^   rF   rI  rr   r   rs   rJ  s       r   test_reread_argz+TestDefaultControllerPlugin.test_reread_argx  r`  r   c                 ^   |                                  }ddlm fd}||j        j        j        j        _        |                    d            |                     |j        j	        
                                d           |                     |j        j        t          j                   d S )Nr   r   c                  B    t          j        j        j        d          )Ncantrv  rp  s     r   reloadConfigzITestDefaultControllerPlugin.test_reread_cant_reread.<locals>.reloadConfig  rx  r   zERROR: cant
r   r[   r   r   r   rZ   r  r  r   r]   r^   rr   r   rs   r   r   r  r   s      @r   test_reread_cant_rereadz3TestDefaultControllerPlugin.test_reread_cant_reread  s    %%%%%%	E 	E 	E 	E 	E=I
"-:*3355(	* 	* 	*.0C0KLLLLLr   c                 ^   |                                  }ddlm fd}||j        j        j        j        _        |                    d            |                     |j        j	        
                                d           |                     |j        j        t          j                   d S )Nr   r   c                  B    t          j        j        j        d          rk   rn  rp  s     r   r  zLTestDefaultControllerPlugin.test_reread_shutdown_state.<locals>.reloadConfig  s    /&-">CCCr    ERROR: supervisor shutting down
r  r  s      @r   test_reread_shutdown_statez6TestDefaultControllerPlugin.test_reread_shutdown_state  s    %%%%%%	D 	D 	D 	D 	D=I
"-:*3355<	> 	> 	>.0C0KLLLLLr   c                    |                                  }ddlm fd}||j        j        j        j        _        |                     t          j	        |j
        d           |                     |j        j        t          j                   d S )Nr   r   c                  B    t          j        j        j        d          rk   )r   re   rb   rm   rp  s     r   r  zSTestDefaultControllerPlugin.test_reread_reraises_other_faults.<locals>.reloadConfig  s    /&-"6;;;r   rl   )r   r[   r   r   r   rZ   r  rq   r   re   r  r   rr   r   rs   r  s      @r   !test_reread_reraises_other_faultsz=TestDefaultControllerPlugin.test_reread_reraises_other_faults  s    %%%%%%	< 	< 	< 	< 	<=I
"-:)/6+;R@@@.0C0KLLLLLr   c                    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   _formatConfigInforF   )r   infor   r'   s       r   test__formatConfigInfoz2TestDefaultControllerPlugin.test__formatConfigInfo  s    "#"!$"% % ))$//F*+++"##!$"% % ))$//6)*****r   c                     |                                  }|                                 |j        j                                        }|                     d|v            d S )NzDisplay all configured)r   
help_availr   r]   r^   rF   rJ  s      r   test_avail_helpz+TestDefaultControllerPlugin.test_avail_help  sU    j((**0C788888r   c                     g }|                                  } G d dt                    fd|j        _        |j        |j        _        |                    d          }|                     |d            d S )Nc                       e Zd Zd ZdS )>TestDefaultControllerPlugin.test_avail.<locals>.FakeSupervisorc                     dddddddgS )Nr  r  Fr  r  r@   r;   s    r   getAllConfigInfozOTestDefaultControllerPlugin.test_avail.<locals>.FakeSupervisor.getAllConfigInfo  s)    #+Z#(u*-SC C D Dr   N)r=   r>   r?   r  r@   r   r   FakeSupervisorr    s(        D D D D Dr   r  c                                    S r   r@   )r  s   r   rY   z8TestDefaultControllerPlugin.test_avail.<locals>.<lambda>  s    ^^-=-= r   rl   )r   rB   r   r   rA  r   do_availr   )r   r  r   r'   r  s       @r   
test_availz&TestDefaultControllerPlugin.test_avail  s    	D 	D 	D 	D 	DV 	D 	D 	D %>$=$=$=
!!L
$$&&&&&r   c                 f   |                                  }|                    d          }|                     |d            |j        j                                        }|                     |                    d          |           |                     |j        j        t          j
                   d S )Nr   z!Error: avail accepts no arguments)r   r  r   r   r]   r^   rF   rI  rr   r   rs   rJ  s       r   test_avail_argz*TestDefaultControllerPlugin.test_avail_arg  s    ''&&&j((**'JKKSQQQ.0C0KLLLLLr   c                 |   |                                  }|j        j        j        j        }d }||_        |                    d          }|                     |d            |                     |j        j        	                                d           |                     |j        j
        t          j                   d S )Nc                  L    ddl m}  t          j        | j        j        d          Nr   r   rl   r[   r   r   re   rb   ro  r   s    r   r  zOTestDefaultControllerPlugin.test_avail_shutdown_state.<locals>.getAllConfigInfo  s+    ))))))/&-">CCCr   rl   r  )r   r   r   rZ   r[   r  r  r   r]   r^   rr   r   rs   )r   r   r[   r  r'   s        r   test_avail_shutdown_statez5TestDefaultControllerPlugin.test_avail_shutdown_state  s    Z'/:
	D 	D 	D '7
#$$&&&*3355<	> 	> 	>.0C0KLLLLLr   c                    |                                  }|j        j        j        j        }d }||_        |                     t          j        |j	        d           | 
                    |j        j        t          j                   d S )Nc                  L    ddl m}  t          j        | j        j        d          r  r[   r   r   re   rb   rm   r   s    r   r  zVTestDefaultControllerPlugin.test_avail_reraises_other_faults.<locals>.getAllConfigInfo  s+    ))))))/&-"6;;;r   rl   )r   r   r   rZ   r[   r  rq   r   re   r  r   rr   r   rs   )r   r   r[   r  s       r    test_avail_reraises_other_faultsz<TestDefaultControllerPlugin.test_avail_reraises_other_faults  sy    Z'/:
	< 	< 	< '7
#)/6?B???.0C0KLLLLLr   c                     |                                  }|                                 |j        j                                        }|                     d|v            d S )Nz
add <name>)r   help_addr   r]   r^   rF   rJ  s      r   test_add_helpz)TestDefaultControllerPlugin.test_add_help  R    j((**+,,,,,r   c                 <   |                                  }|                    d          }|                     |d            |j        j        j        j        }|                     |j        dg           |                     |j        j        t          j
                   d S Nr  )r   do_addr   r   r   rZ   r[   	processesrr   r   rw  )r   r   r'   r[   s       r   test_addz$TestDefaultControllerPlugin.test_add  s    u%%&&&Z'/:
-w777.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )NALREADY_ADDEDz$ERROR: process group already active
)	r   r  r   r   r]   r^   rr   r   rw  r  s      r   test_add_already_addedz2TestDefaultControllerPlugin.test_add_already_added  s    //&&&*3355@	B 	B 	B.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nr.  'ERROR: no such process/group: BAD_NAME
	r   r  r   r   r]   r^   rr   r   rs   r  s      r   test_add_bad_namez-TestDefaultControllerPlugin.test_add_bad_name   s    z**&&&*3355C	E 	E 	E.0C0KLLLLLr   c                 <   |                                  }|                    d          }|                     |d            |                     |j        j                                        d           |                     |j        j        t          j                   d S )Nro  zERROR: shutting down
r  r  s      r   test_add_shutdown_statez3TestDefaultControllerPlugin.test_add_shutdown_state  s    /00&&&*33551	3 	3 	3.0C0KLLLLLr   c                     |                                  }|                     t          j        |j        d           |                     |j        j        t          j	                   d S Nrm   )
r   rq   r   re   r  r   r   rr   r   rs   rF  s     r   test_add_reraises_other_faultsz:TestDefaultControllerPlugin.test_add_reraises_other_faults  sP    )/6=(CCC.0C0KLLLLLr   c                    |                                  }|                                 |j        j                                        }|                     d|v            |                     |j        j        t          j	                   d S )Nzremove <name>)
r   help_remover   r]   r^   rF   r   rr   r   rw  rJ  s      r   test_remove_helpz,TestDefaultControllerPlugin.test_remove_help  ss    j((**3.///.0C0KLLLLLr   c                     |                                  }|j        j        j        j        }dg|_        |                    d          }|                     |d            |                     |j        g            d S r  )r   r   r   rZ   r[   r  	do_remover   r   r   r[   r'   s       r   test_removez'TestDefaultControllerPlugin.test_remove  sq    Z'/:
 %w
!!%((&&&-r22222r   c                 x   |                                  }|j        j        j        j        }dg|_        |                    d          }|                     |d            |                     |j        j        	                                d           |                     |j        j
        t          j                   d S )Nr  r.  r  r   r   r   rZ   r[   r  r  r   r]   r^   rr   r   rs   r  s       r   test_remove_bad_namez0TestDefaultControllerPlugin.test_remove_bad_name$  s    Z'/:
 %w
!!*--&&&*3355C	E 	E 	E.0C0KLLLLLr   c                 x   |                                  }|j        j        j        j        }dg|_        |                    d          }|                     |d            |                     |j        j        	                                d           |                     |j        j
        t          j                   d S )Nr  STILL_RUNNINGz2ERROR: process/group still running: STILL_RUNNING
r  r  s       r   test_remove_still_runningz5TestDefaultControllerPlugin.test_remove_still_running.  s    Z'/:
 %w
!!/22&&&*3355N	P 	P 	P.0C0KLLLLLr   c                     |                                  }|                     t          j        |j        d           |                     |j        j        t          j	                   d S r  )
r   rq   r   re   r  r   r   rr   r   rs   rF  s     r   !test_remove_reraises_other_faultsz=TestDefaultControllerPlugin.test_remove_reraises_other_faults8  sQ    )/6+;XFFF.0C0KLLLLLr   c                     |                                  }|                                 |j        j                                        }|                     d|v            d S )NzReload config and add/remove)r   help_updater   r]   r^   rF   rJ  s      r   test_update_helpz,TestDefaultControllerPlugin.test_update_help=  sU    j((**6#=>>>>>r   c                     |                                  }|j        j        j        j        }d }||_        dg|_        |                    d           |                     |j        dg           d S )Nc                  L    ddl m}  t          j        | j        j        d          )Nr   r   blahr  r   s    r   r  zMTestDefaultControllerPlugin.test_update_not_on_shutdown.<locals>.reloadConfigF  s+    ))))))/&-">GGGr   r  rl   )	r   r   r   rZ   r[   r  r  	do_updater   r   r   r[   r  s       r   test_update_not_on_shutdownz7TestDefaultControllerPlugin.test_update_not_on_shutdownC  sz    Z'/:
	H 	H 	H #/
 ){
-	{;;;;;r   c                     |                                  }|j        j        j        j        }d }||_        |                    d          }|                     |d            |                     |j        dg           d S )Nc                      dgg g ggS )Nnew_procr@   r@   r   r   r  zITestDefaultControllerPlugin.test_update_added_procs.<locals>.reloadConfigR  s     \2r*++r   rl   r  )	r   r   r   rZ   r[   r  r  r   r  )r   r   r[   r  r'   s        r   test_update_added_procsz3TestDefaultControllerPlugin.test_update_added_procsN  s    Z'/:
	, 	, 	,".
!!"%%&&&-
|<<<<<r   c                    |                                  }|j        j        j        j        }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                      ddgdgdgggS )Nadded1added2r  r  r@   r@   r   r   r  zHTestDefaultControllerPlugin.test_update_with_gname.<locals>.reloadConfig^  s    )I;DEEr   r  r  zadded1 added2)r  r  r  r  )r  r  r  zremoved added1r  r~  )
r   r   r   rZ   r[   r  r  r  r   sortedr  s       r   test_update_with_gnamez2TestDefaultControllerPlugin.test_update_with_gnameZ  s   Z'/:
	F 	F 	F".
 )95
###
 455I 677	9 	9 	9 	)))
 455 J J JKK	M 	M 	M 	###
 455 ? ? ?@@	B 	B 	B !*95
)***
 455H 566	8 	8 	8 !*95

 455 ? ? ?@@	B 	B 	B 	B 	Br   c                    ddl m} |                                 }|j        j        j        j         }g d }||_        fd|_        |                    d           dd|j	        j
        ddgf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                      g dgg ggS )Nchanged_groupr@   r@   r   r   r  zKTestDefaultControllerPlugin.test_update_changed_procs.<locals>.reloadConfig  s    /*B/00r   c                 2                         d| f          S )Nr   r@  r  s    r   rY   zGTestDefaultControllerPlugin.test_update_changed_procs.<locals>.<lambda>  s    ELL'1,F,F r   r  changed_processr  r_  r`  statusrg  c                 6                         d| f           S )Nrd  r@  )r_  r  r   s    r   r  zOTestDefaultControllerPlugin.test_update_changed_procs.<locals>.stopProcessGroup  s    LL&$(((Nr   rl   )rd  r  changed_process1changed_process2)r[   r   r   r   r   rZ   r  startProcessaddProcessGrouprb   rw  r  r  r   r   rm   )r   r   r   r[   r  r  r  r   s         @@r   test_update_changed_procsz5TestDefaultControllerPlugin.test_update_changed_procsz  s"   %%%%%%Z'/:
	1 	1 	1".
"F"F"F"F
""?333#4#2#)=#8#)+ + ,	 	 	 	 	 	 '7
#!: ;<<<""?333aaa&8&5&,m&?&,. . '9&5&,m&:&,. .	/
 	!: ;<<<""?333aaa&8&5&,m&:&,. . '9&5&,m&;&,. .	/
 	!: ;<<<<<r   c                 f   ddl m} |                                 }|j        j        j        j         }d }||_        dd|j        j        ddgdg|_	        f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                      g g dgggS )Nremoved_groupr@   r@   r   r   r  zKTestDefaultControllerPlugin.test_update_removed_procs.<locals>.reloadConfig  s    o./00r   removed_processr  r  r  c                     S r   r@   )r_  r   s    r   r  zOTestDefaultControllerPlugin.test_update_removed_procs.<locals>.stopProcessGroup  s    Nr   rl   )r[   r   r   r   r   rZ   r  rb   rw  r  r  r  r   r   rm   )r   r   r   r[   r  r  r   s         @r   test_update_removed_procsz5TestDefaultControllerPlugin.test_update_removed_procs  s   %%%%%%Z'/:
	1 	1 	1".
#4#2#)=#8#)+ + , !00
	 	 	 	 	&6
#-r222&7&5&,m&?&,. . /
 !00
-r222&7&5&,m&:&,. . /
 !00
-/@AAAAAr   c                     |                                  }|j        j        j        j        }d }||_        |                     t          j        |j	        d           | 
                    |j        j        d           d S )Nc                  L    ddl m}  t          j        | j        j        d          )Nr   r   rm   r  r   s    r   r  zSTestDefaultControllerPlugin.test_update_reraises_other_faults.<locals>.reloadConfig  s+    ))))))/&-"6AAAr   rl   r   )r   r   r   rZ   r[   r  rq   r   re   r  r   rr   r  s       r   !test_update_reraises_other_faultsz=TestDefaultControllerPlugin.test_update_reraises_other_faults  sy    Z'/:
	B 	B 	B #/
)/6+;R@@@.22222r   c                     |                                  }|                                 |j        j                                        }|                     d|v            d S )Nz
pid <name>)r   help_pidr   r]   r^   rF   rJ  s      r   test_pid_helpz)TestDefaultControllerPlugin.test_pid_help  r  r   c                    |                                  }|                    d          }|                     |d            |j        j        }|j        j                                                            d          }|                     t          |          d           |                     |d         t          |j
        j                                                             d S )Nrl   r  r   r   )r   do_pidr   r   r   r]   r^   r  r   strrZ   r[   getPID)r   r   r'   r   r  s        r   test_pid_supervisordz0TestDefaultControllerPlugin.test_pid_supervisord  s    r""&&&*$
!**,,22488UQ'''q3w'A'H'H'J'J#K#KLLLLLr   c                    |                                  }|                    d          }|                     |d            |j        j                                                                        }|                     |                                g d           |                     |j        j        t          j
                   d S )Nr~  )111213)r   r  r   r   r]   r^   r8  r  rr   r   rw  r9  s       r   test_pid_allprocessesz1TestDefaultControllerPlugin.test_pid_allprocesses  s    u%%&&&
!**,,2244(:(:(:;;;.0C0KLLLLLr   c                 d   |                                  }|                    d          }|                     |d            |j        j                                                                        }|                     |d           |                     |j        j        t          j	                   d S )Nr.  zNo such process BAD_NAME)
r   r  r   r   r]   r^   r8  rr   r   rs   r9  s       r   test_pid_badnamez,TestDefaultControllerPlugin.test_pid_badname  s    z**&&&
!**,,2244 :;;;.0C0KLLLLLr   c                 `   |                                  }|                    d          }|                     |d            |                     |j        j                                                                        d           |                     |j        j        t          j	                   d S )Nr  r   )
r   r  r   r   r]   r^   r8  rr   r   rw  r  s      r   test_pid_oneprocessz/TestDefaultControllerPlugin.test_pid_oneprocess  s    u%%&&&*3355;;==tDDD.0C0KLLLLLr   c                    |                                  }|j        j        }d }||j        j        _        |                    d          }|                     |d            |                     |j        j        	                                
                                d           |                     |j        j        t          j                   d S )Nc                  2    ddl m} ddd|j        ddddddd
S )Nr   rY  r  rs  rl   r]  r^  )rj  rZ  rs  rl  s      r   rp   zFTestDefaultControllerPlugin.test_pid_oneprocess_not_running.<locals>.f  sD    777777!"+3"+!##4
 
 
r   r  0)r   r   r   rZ   r[   getProcessInfor  r   r]   r^   r8  rr   r   r   )r   r   r   rp   r'   s        r   test_pid_oneprocess_not_runningz;TestDefaultControllerPlugin.test_pid_oneprocess_not_running
  s    *$	 	 	 56"1u%%&&&*3355;;==sCCC.,8	: 	: 	: 	: 	:r   c                     |                                  }d |j        _        g fd}||j        j        j        j        _        |                    d           |                     g            d S )Nc                      dS r   r@   r@   r   r   rY   zETestDefaultControllerPlugin.test_pid_upcheck_failed.<locals>.<lambda>#  r>  r   c                  2                         d           d S r3   r@  rB  s     r   rp   z>TestDefaultControllerPlugin.test_pid_upcheck_failed.<locals>.f%  rD  r   rl   )	r   r   rS   r   rZ   r[   r  r  r   rF  s      @r   test_pid_upcheck_failedz3TestDefaultControllerPlugin.test_pid_upcheck_failed!  s{    *]
	  	  	  	  	 78
"-4b$$$$$r   c                     |                                  }|                                 |j        j                                        }|                     d|v            d S )Nz tail of supervisor main log file)r   help_maintailr   r]   r^   rF   rJ  s      r   test_maintail_helpz.TestDefaultControllerPlugin.test_maintail_help+  rd  r   c                 f   |                                  }|                    d          }|                     |d            |j        j                                        }|                     |                    d          |           |                     |j        j        t          j
                   d S )Nr  zError: too manyr   do_maintailr   r   r]   r^   rF   rI  rr   r   rs   rJ  s       r   test_maintail_toomanyargsz5TestDefaultControllerPlugin.test_maintail_toomanyargs1  s    ##I..&&&j((**'8993???.0C0KLLLLLr   c                 f   |                                  }|                    d          }|                     |d            |j        j                                        }|                     |                    d          |           |                     |j        j        t          j
                   d S )Nz-wrongzError: bad argument -wrongr5  rJ  s       r    test_maintail_minus_string_failsz<TestDefaultControllerPlugin.test_maintail_minus_string_fails9  s    ##H--&&&j((**'CDDcJJJ.0C0KLLLLLr   c                 f   |                                  }|                    d          }|                     |d            |j        j                                        }|                     |                    d          |           |                     |j        j        t          j
                   d S )NwrongzError: bad argument wrongr5  rJ  s       r   test_maintail_wrongz/TestDefaultControllerPlugin.test_maintail_wrongA  s    ##G,,&&&j((**'BCCSIII.0C0KLLLLLr   c                    |                                  }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listenerr6  r   errorsr   r:   rF   )r   r   r'   r@  ry   s        r   _dont_test_maintail_dashfz5TestDefaultControllerPlugin._dont_test_maintail_dashfI  s     '//##D))&&&'Va(((q	/=	? 	? 	?q=	? 	? 	?(E!H455555r   c                 r   |                                  }|                    d          }|                     |d            |j        j                                                            d          }|                     |d         d           |                     |j        j        t          j	                   d S )Nz-zr  r   r   )
r   r6  r   r   r]   r^   r  rr   r   rs   r  s       r   test_maintail_bad_modifierz6TestDefaultControllerPlugin.test_maintail_bad_modifierZ  s    ##D))&&&
!**,,22488q#;<<<.0C0KLLLLLr   c                     |                                  }|                    d          }|                     |d            |                     |j        j                                        d           d S )Nrl   mainlogdata
r   r6  r   r   r]   r^   r  s      r   test_maintail_nobytesz1TestDefaultControllerPlugin.test_maintail_nobytesb  se    ##B''&&&*3355GGGGGr   c                     |                                  }|                    d          }|                     |d            |                     |j        j                                        d           d S )N-100rE  rF  r  s      r   test_maintail_dashbytesz3TestDefaultControllerPlugin.test_maintail_dashbytesh  se    ##F++&&&*3355GGGGGr   c                    |                                  }|j                                        }ddlm} |j        j        |_        |                    d          }| 	                    |d            | 	                    |j        j
                                        d           | 	                    |j        j        t          j                   d S )Nr   r   rI  z!supervisord: ERROR (no log file)
)r   r   r   r[   r   rb   r(  _readlog_errorr6  r   r]   r^   rr   r   rs   r   r   supervisor_rpcr   r'   s        r   "test_maintail_readlog_error_nofilez>TestDefaultControllerPlugin.test_maintail_readlog_error_nofilen  s    2244%%%%%%(.(=%##F++&&&*3355=	? 	? 	?.0C0KLLLLLr   c                    |                                  }|j                                        }ddlm} |j        j        |_        |                    d          }| 	                    |d            | 	                    |j        j
                                        d           | 	                    |j        j        t          j                   d S )Nr   r   rI  z/supervisord: ERROR (unknown error reading log)
)r   r   r   r[   r   rb   rm   rL  r6  r   r]   r^   rr   r   rs   rM  s        r   "test_maintail_readlog_error_failedz>TestDefaultControllerPlugin.test_maintail_readlog_error_failedy  s    2244%%%%%%(.(<%##F++&&&*3355K	M 	M 	M.0C0KLLLLLr   c                     |                                  }d |j        _        g fd}||j        j        j        j        _        |                    d           |                     g            d S )Nc                      dS r   r@   r@   r   r   rY   zJTestDefaultControllerPlugin.test_maintail_upcheck_failed.<locals>.<lambda>  r>  r   c                  2                         d           d S r3   r@  rB  s     r   rp   zCTestDefaultControllerPlugin.test_maintail_upcheck_failed.<locals>.f  rD  r   rl   )	r   r   rS   r   rZ   r[   readLogr6  r   rF  s      @r   test_maintail_upcheck_failedz8TestDefaultControllerPlugin.test_maintail_upcheck_failed  s}    *]
	  	  	  	  	 89
"-52$$$$$r   c                     |                                  }|                                 |j        j                                        }|                     d|v            d S )Nzfg <process>)r   help_fgr   r]   r^   rF   rJ  s      r   test_fg_helpz(TestDefaultControllerPlugin.test_fg_help  sR    j((**#-.....r   c                 r   |                                  }|                    d          }|                     |d            |j        j                                                            d          }|                     |d         d           |                     |j        j        t          j	                   d S )Nrl   r  r   zERROR: no process name supplied
r   do_fgr   r   r]   r^   r  rr   r   rs   r  s       r   test_fg_too_few_argsz0TestDefaultControllerPlugin.test_fg_too_few_args  s    b!!&&&
!**,,22488q#DEEE.0C0KLLLLLr   c                 @   |                                  }|                    d          }|                     |d            |j        j                                        }|                     |d           |                     |j        j        t          j                   d S )Nr  z'ERROR: too many process names supplied
	r   r\  r   r   r]   r^   rr   r   rs   r   r   r'   r,   s       r   test_fg_too_many_argsz1TestDefaultControllerPlugin.test_fg_too_many_args  s    i((&&&z ))++IJJJ.0C0KLLLLLr   c                 @   |                                  }|                    d          }|                     |d            |j        j                                        }|                     |d           |                     |j        j        t          j                   d S )Nr.  z!ERROR: bad process name supplied
r_  r`  s       r   test_fg_badprocnamez/TestDefaultControllerPlugin.test_fg_badprocname  s    j))&&&z ))++CDDD.0C0KLLLLLr   c                 0   |                                  }|                    d          }|                     |d            |j        j                                        }|                     |d           |                    d          }|j        j                                                            d          }|                     |d            |                     |d         d           |                     |j        j        t          j	                   d S )Nrh  zERROR: process not running
baz_01r  zERROR: process not runningr[  )r   r   r'   r,   r  s        r   test_fg_procnotrunningz2TestDefaultControllerPlugin.test_fg_procnotrunning  s    e$$&&&z ))++=>>>h''
!**,,22488&&&r$@AAA.0C0KLLLLLr   c                     |                                  }d |j        _        g fd}||j        j        j        j        _        |                    d           |                     g            d S )Nc                      dS r   r@   r@   r   r   rY   zDTestDefaultControllerPlugin.test_fg_upcheck_failed.<locals>.<lambda>  r>  r   c                  2                         d           d S r3   r@  rB  s     r   rp   z=TestDefaultControllerPlugin.test_fg_upcheck_failed.<locals>.f  rD  r   r  )	r   r   rS   r   rZ   r[   r+  r\  r   rF  s      @r   test_fg_upcheck_failedz2TestDefaultControllerPlugin.test_fg_upcheck_failed  s{    *]
	  	  	  	  	 ?@
"-<U$$$$$r   c                     |                                  }|                                 |j        j                                        }|                     d|v            d S NzExit the supervisor shell)r   	help_exitr   r]   r^   rF   rJ  s      r   test_exit_helpz*TestDefaultControllerPlugin.test_exit_help  U    j((**3s:;;;;;r   c                     |                                  }|                                 |j        j                                        }|                     d|v            d S rm  )r   	help_quitr   r]   r^   rF   rJ  s      r   test_quit_helpz*TestDefaultControllerPlugin.test_quit_help  rp  r   N)r=   r>   r?   r   r   r  r  r  r!  r&  r*  r,  r/  r1  r3  r6  r;  rG  rL  rQ  rV  rn  ru  rx  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/  r1  r7  r:  r>  r@  rC  rG  rL  rQ  rT  rZ  r]  r_  rc  rh  rj  rr  ry  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  r3  r7  r9  r<  rA  rC  rG  rJ  rO  rQ  rV  rY  r]  ra  rc  rg  rk  ro  rs  r@   r   r   r  r    s
       ' ' '  M M MM M MM M MM M M2 2 2M M MM M MM M M0 0 02 2 22 2 2M M M% % %0 0 0% % %8 8 89 9 9BS S S@ @ @O O OS S SM M MS S S	S 	S 	SO O OO O OO O O/ / /R R RM M MM M MM M MM M MQ Q QQ Q Q+ + +M M MM M MM M MR R R	Q 	Q 	Q
% 
% 
%. . .M M MM M MM M MM M MM M MM M MM M MM M MM M MM M M
% 
% 
%> > >M M MM M MM M MM M MM M MQ Q Q3 3 3M M MM M MM M MM M M
% 
% 
%1 1 1M M MM M M	Q 	Q 	Q
% 
% 
%/ / /M M MM M MM M MM M MM M M	M 	M 	M
% 
% 
%- - -M M MM M MM M MA A A
M M M% % %A A AG G GF F FM M MC C CM M ME E EM M M
M 
M 
MM M M M M M M M M, , ,M M MM M MM M M	M 	M 	M	M 	M 	MM M M+ + +&9 9 9' ' 'M M MM M M
M 
M 
M- - -M M MM M MM M MM M MM M M
M M M3 3 3M M MM M MM M M
? ? ?	< 	< 	<
= 
= 
=B B B@3= 3= 3=j'B 'B 'BR
3 
3 
3- - -M M MM M MM M MM M M: : :.% % %C C CM M MM M MM M M6 6 6"M M MH H HH H H	M 	M 	M	M 	M 	M% % %/ / /M M MM M MM M M
M 
M 
M% % %< < << < < < <r   r  c                        e Zd Zd Zd Zd ZdS )r>  c                     g | _         d S r   )r@  r;   s    r   __init__zDummyListener.__init__  s    r   c                 >    | j                             ||f           d S r   )r@  rA  )r   urlr  s      r   ry   zDummyListener.error  s"    C:&&&&&r   c                     || _         d S r   r9   )r   rx  s     r   r<   zDummyListener.close  s    r   N)r=   r>   r?   rv  ry   r<   r@   r   r   r>  r>    sA          ' ' '    r   r>  c                       e Zd Zd Zd ZdS )DummyPluginFactoryc                     || _         d S r   r   )r   r   ro   s      r   rv  zDummyPluginFactory.__init__  s    r   c                 D    | j         j                            d           d S )Nr   )r   r]   writer   rn   s     r   r   zDummyPluginFactory.do_help  s     l+++++r   Nr=   r>   r?   rv  r   r@   r   r   r{  r{    s2          , , , , ,r   r{  c                       e Zd Zd Zd ZdS )r   c                     d| _         d| _        d| _        d| _        d | _        d| _        t                      | _        d| _        dt          i fg| _
        d S )Nr[   zhttp://localhost:65532chrism123r@   Fdummy)rO   	serverurlusernamepasswordhistory_filer   r	   rZ   interactiver{  plugin_factoriesr;   s    r   rv  zDummyClientOptions.__init__  s[    "1  %'' ")+=r!B Cr   c                     | j         S r   )rZ   r;   s    r   r   z!DummyClientOptions.getServerProxy  s
    |r   N)r=   r>   r?   rv  r   r@   r   r   r   r     s5        	D 	D 	D    r   r   c                   @    e Zd ZdZd Zd Zd Zd
dZd Zd Z	d
d	Z
dS )r   zno help on %sc                 j    || _         g | _        t                      | _        t          j        | _        d S r   )r   r  r   r]   r   rw  rr   rM   s     r   rv  zDummyController.__init__  s*     jj-5r   c                     dS r3   r@   r;   s    r   rS   zDummyController.upcheck  s    tr   c                 ,    |                      d          S )Nr[   )r   r;   s    r   r   zDummyController.get_supervisor  s    $$\222r   Nc                 \    | j                                         }||S t          ||          S r   )r   r   getattr)r   	namespacer   s      r   r   z DummyController.get_server_proxy  s0    ++--L5),,,r   c                 @    | j                             |dz              d S )Nr  )r]   r  )r   datas     r   r   zDummyController.output  s"    $+&&&&&r   c                 B    | j                             ||||f           d S r   )r  rA  )r   doc_headerscmds_docrowscolss        r   print_topicszDummyController.print_topics  s(    ""K4#FGGGGGr   c                     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   rb   rw  r   r   rr   rs   )r   	faultcodeignored_faultcoder  s       r    set_exitstatus_from_xmlrpc_faultz0DummyController.set_exitstatus_from_xmlrpc_fault  sW    @@@@@@*FM,ABBBD---1=DOOO19DOOOr   r   )r=   r>   r?   r   rv  rS   r   r   r   r  r  r@   r   r   r   r     s        F6 6 6  3 3 3- - - -' ' 'H H H: : : : : :r   r   c                       e Zd ZddZd ZdS )r   Nc                     || _         d S r   r}  )r   rQ   s     r   rv  zDummyPlugin.__init__  s    r   c                     d| _         d S r3   )r   r  s     r   r   zDummyPlugin.do_help  s    r   r   r  r@   r   r   r   r     s7               r   r   c                  T    t          j        t          j        t                             S r   )unittestfindTestCasessysmodulesr=   r@   r   r   
test_suiter    s    !#+h"7888r   __main__r  )defaultTest)r  r  r[   r   supervisor.compatr   r   r   r   r   supervisor.tests.baser	   TestCaser   rI   r   r  r>  r{  r   r   r   r  r=   mainr@   r   r   <module>r     sF   



        & & & & & & ' ' ' ' ' ' O O O O O O O O 0 0 0 0 0 0=3 =3 =3 =3 =3X& =3 =3 =3~p p p p ph' p p pf< < < < <x0 < < <>r< r< r< r< r<("3 r< r< r<h/       , , , , , , , ,       ": ": ": ": ": ": ": ":H       9 9 9 zHMl++++++ r   