
    Ac{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j0                  d       yy)    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
y	)
fgthread_Testsc                     ddl m} |S )Nr   )fgthread)supervisor.supervisorctlr   )selfr   s     E/usr/lib/python3/dist-packages/supervisor/tests/test_supervisorctl.py_getTargetClasszfgthread_Tests._getTargetClass
   s
    5    c                 0     | j                         ||      S Nr   )r   programctls      r   _makeOnezfgthread_Tests._makeOne   s    %t##%gs33r   c                     t               }t        |      }| j                  d |      }| j                  |j                  d       y NF)DummyClientOptionsDummyControllerr   assertEqualkilled)r   optionsr   insts       r   	test_ctorzfgthread_Tests.test_ctor   s8    $&g&}}T3'e,r   c                     t               }t        |      }| j                  d |      }|j                  d dd       }| j	                  ||j
                         y )Ncall)r   r   r   globaltracer   
localtracer   r   r   r    results        r   test_globaltrace_callz$fgthread_Tests.test_globaltrace_call   sL    $&g&}}T3'!!$51r   c                     t               }t        |      }| j                  d |      }|j                  d d d       }| j	                  |d        y r   )r   r   r   r$   r   r&   s        r   test_globaltrace_noncallz'fgthread_Tests.test_globaltrace_noncall   sH    $&g&}}T3'!!$d3&r   c                    t               }t        |      }| j                  d |      }d|_        	 |j	                  d dd        | j                  d       y # t        $ r&}| j                  |j                  d        Y d }~y 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%   sy    $&g&}}T3'	BOOD&$/ II@A  	+QVVT**	+s   A 	BA??Bc                     t               }t        |      }| j                  d |      }d|_        |j	                  d d d       }| j                  ||j                         y NT)r   r   r   r   r%   r   r&   s        r   "test_localtrace_killed_not_whylinez1fgthread_Tests.test_localtrace_killed_not_whyline1   sQ    $&g&}}T3'tT21r   c                    t               }t        |      }| j                  d |      }d|_         G d dt              } |       |_         |       |_        |j                          | j                  |j                         | j                  |j
                  j                         | j                  |j                  j                         y )NTc                       e Zd Zd Zy)0fgthread_Tests.test_kill.<locals>.DummyCloseablec                     d| _         y 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 	# -.+-		$++223**112r   N)r=   r>   r?   r   r   r!   r(   r*   r1   r4   rG   r@   r   r   r   r   	   s+    4-2'
B2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'y&)'ControllerTestsc                     ddl m} |S )Nr   )
Controller)r   rK   )r   rK   s     r   r   zControllerTests._getTargetClassI   s    7r   c                 .     | j                         |      S r   r   r   r   s     r   r   zControllerTests._makeOneM   s    %t##%g..r   c                     t               }| j                  |      }| j                  |j                  |j                  dz          y )Nz> )r   r   r   promptr   r   
controllers      r   r!   zControllerTests.test_ctorQ   s7    $&]]7+
**GNNT,ABr   c                 ~    t               }| j                  |      }|j                         }| j                  |d       y r3   )r   r   upcheckr   r   r   rQ   r'   s       r   test__upcheckzControllerTests.test__upcheckV   s6    $&]]7+
##%&r   c                 (   t               }d |j                  j                  _        | j	                  |      }t               |_        |j                         }| j                  |d       | j                  |j                  j                         d       y )Nc                       y)Nz1.0r@   )xs    r   <lambda>zDControllerTests.test__upcheck_wrong_server_version.<locals>.<lambda>^       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\   sv    $&0@""-]]7+
$J
##%'**3359	:r   c                 >   t               }ddlm fd}||j                  j                  _        | j                  |      }t               |_        |j                         }| j                  |d       | j                  |j                  j                         d       y )Nr   Faultsc                  D    t        j                   j                  d      )Nduh)r   FaultUNKNOWN_METHODrb   s   r   r]   z@ControllerTests.test__upcheck_unknown_method.<locals>.getVersionk   s    //&"7"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.xmlrpcrc   r[   r\   r]   r   r   r^   rS   r   r_   )r   r   r]   rQ   r'   rc   s        @r   test__upcheck_unknown_methodz,ControllerTests.test__upcheck_unknown_methodh   s    $&,	@0:""-]]7+
$J
##%'**3351	2r   c                 N   t               }ddlm fd}||j                  j                  _        | j                  |      }t               |_        | j                  t        j                  |j                         | j                  |j                  t        j                          y )Nr   rb   c                  D    t        j                  j                  d      N )r   rf   FAILED)argkwrc   s     r   fzEControllerTests.test__upcheck_reraises_other_xmlrpc_faults.<locals>.f}   s    //&--44r   )r   rh   rc   r[   r\   r]   r   r   r^   assertRaisesr   rf   rS   r   
exitstatusr   GENERIC)r   r   rq   rQ   rc   s       @r   *test__upcheck_reraises_other_xmlrpc_faultsz:ControllerTests.test__upcheck_reraises_other_xmlrpc_faultsz   st    $&,	501""-]]7+
$J
)//:+=+=>..0C0K0KLr   c                    t               }dd ldd lfd}||j                  j                  _        | j                  |      }t               |_        |j                         }| j                  |d       |j                  j                         }| j                  d|v        | j                  |j                  t        j                         y )Nr   c                  <    j                  j                  d      Nznobody homeerrorECONNREFUSEDro   rp   errnosockets     r   raise_faultzTControllerTests.test__upcheck_catches_socket_error_ECONNREFUSED.<locals>.raise_fault       ,,u11=AAr   Fzrefused connection)r   r~   r}   r[   r\   r]   r   r   r^   rS   r   r_   rF   rs   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0;""-]]7+
$J
##%'""++-,67..0C0[0[\r   c                    t               }dd ldd lfd}||j                  j                  _        | j                  |      }t               |_        |j                         }| j                  |d       |j                  j                         }| j                  d|v        | j                  |j                  t        j                         y )Nr   c                  <    j                  j                  d      rx   rz   ENOENTr|   s     r   r   zNControllerTests.test__upcheck_catches_socket_error_ENOENT.<locals>.raise_fault   s    ,,u||];;r   Fzno such file)r   r~   r}   r[   r\   r]   r   r   r^   rS   r   r_   rF   rs   r   NOT_RUNNINGr   s         @@r   )test__upcheck_catches_socket_error_ENOENTz9ControllerTests.test__upcheck_catches_socket_error_ENOENT   s    $&	<0;""-]]7+
$J
##%'""++-&01..0C0O0OPr   c                     t               }dd ldd lfd}||j                  j                  _        | j                  |      }t               |_        | j                  j                  |j                         y )Nr   c                  <    j                  j                  d      rl   )rz   EBADFr|   s     r   rq   zEControllerTests.test__upcheck_reraises_other_socket_faults.<locals>.f   s    ,,u{{B//r   )r   r~   r}   r[   r\   r]   r   r   r^   rr   rz   rS   )r   r   rq   rQ   r}   r~   s       @@r   *test__upcheck_reraises_other_socket_faultsz:ControllerTests.test__upcheck_reraises_other_socket_faults   sZ    $&	001""-]]7+
$J
&,,
(:(:;r   c                    t               }| j                  |      }t               |_        t	               }|f|j
                  _        |j                  d      }| j                  |d        | j                  |j                  d       y )NhelpT)
r   r   r   r^   DummyPluginr   pluginsonecmdr   helped)r   r   rQ   pluginr'   s        r   test_onecmdzControllerTests.test_onecmd   sm    $&]]7+
$J
&,Y
"""6*&-r   c                 \   t               }| j                  |      }t               |_        t	               }|f|j
                  _        d|_        |j                  d       | j                  |j                         d|_        |j                  d       | j                  |j                         y )NFr   rm   )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+
$J
&,Y
"&!&"'r   c                     t               }| j                  |      }t               |_        i |_        |j                  d       | j                  |j                  d        y )Nr   )r   r   r   r^   _complete_infor   r   rP   s      r   #test_onecmd_clears_completion_cachez3ControllerTests.test_onecmd_clears_completion_cache   sN    $&]]7+
$J
$&
!&!22D9r   c                 "   t               }| j                  |      }t               |_        |j	                  d       | j                  |j                  j                         d       | j                  |j                  t        j                         y )Nbadcmdz*** Unknown syntax: badcmd
)
r   r   r   r^   r   r   r_   rs   r   rt   rP   s      r   test_onecmd_bad_command_errorz-ControllerTests.test_onecmd_bad_command_error   so    $&]]7+
$J
(#**335*	,..0C0K0KLr   c                     t               }| j                  |      }t               |_        dg|_        |j                  ddd      }| j                  |d       |j                  ddd      }| j                  |d        y )Nr   rm   r   r,   help    r   r   r   r^   vocabcompleter   rT   s       r   test_complete_action_emptyz*ControllerTests.test_complete_action_empty   sz    $&]]7+
"*
"8
$$R$4)$$R$4&r   c                     t               }| j                  |      }t               |_        dg|_        |j                  ddd      }| j                  |d       |j                  ddd      }| j                  |d        y )Nr   hr   r   r   r   r   rT   s       r   test_complete_action_partialz,ControllerTests.test_complete_action_partial   sz    $&]]7+
"*
"8
$$S!#$6)$$S!#$6&r   c                     t               }| j                  |      }t               |_        dg|_        |j                  ddd      }| j                  |d       y )Nr   r   r   r   r   rT   s       r   test_complete_action_wholez*ControllerTests.test_complete_action_whole   sS    $&]]7+
"*
"8
$$VQV$<)r   c                     t               }| j                  |      }t               |_        |j	                  ddd      }| j                  |d        y )Nbadr   r   )r   r   r   r^   r   r   rT   s       r   *test_complete_unknown_action_uncompletablez:ControllerTests.test_complete_unknown_action_uncompletable   sI    $&]]7+
"*
$$UAE$:&r   c                     t               }| j                  |      }t               |_        ddg|_        |j                  ddd      }| j                  |d        y )Nr   addrm   r   zbad r   r   rT   s       r   .test_complete_unknown_action_arg_uncompletablez>ControllerTests.test_complete_unknown_action_arg_uncompletable   sU    $&]]7+
"*
"E?
$$R$8&r   c                 N   t               }| j                  |      }t               |_        ddg|_        |j                  ddd      }| j                  |d       |j                  ddd      }| j                  |d       |j                  dd	d      }| j                  |d        y )
Nr   startrm   r   r   r   r   start    r   rT   s       r   test_complete_help_emptyz(ControllerTests.test_complete_help_empty  s    $&]]7+
"*
"G,
$$R$9)$$R$9*$$R$9&r   c                    t               }| j                  |      }t               |_        ddg|_        |j                  ddd      }| j                  |d       |j                  ddd      }| j                  |d        y )	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                    t               }| j                  |      }t               |_        ddg|_        |j                  ddd      }| j                  |d       |j                  ddd      }| j                  |d	       |j                  dd
d      }| j                  |d       |j                  ddd      }| j                  |d       |j                  ddd      }| j                  |d        y )Nr   r   rm   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               }| j                  |      }t               |_        ddg|_        |j                  ddd      }| j                  |d       |j                  ddd      }| j                  |d        y )	Nr   r   rq   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                 N   t               }| j                  |      }t               |_        ddg|_        |j                  ddd      }| j                  |d       |j                  ddd      }| j                  |d	       |j                  dd
d      }| j                  |d        y )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,$$VQ\$B*$$VQ\$B&r   c                     t               }| j                  |      }t               |_        ddg|_        |j                  ddd      }| j                  |d        y )Nr   r   r   r   z	start badr   r   rT   s       r   !test_complete_start_uncompletablez1ControllerTests.test_complete_start_uncompletableC  sV    $&]]7+
"*
"G,
$$UAK$@&r   c                 .   t               }| j                  |      }t               |_        ddg|_        |j                  ddd      }| j                  |d        d }||j                  j                  j                  _
        |j                  ddd       y )	Nr   r   rm   r   r   r   c                      t        d      )Nz(should not have called getAllProcessInfo)	Exception)ro   rp   s     r   rq   z<ControllerTests.test_complete_caches_process_info.<locals>.fR  s    FGGr   r   )r   r   r   r^   r   r   assertNotEqualr   r[   r\   getAllProcessInfo)r   r   rQ   r'   rq   s        r   !test_complete_caches_process_infoz1ControllerTests.test_complete_caches_process_infoK  s    $&]]7+
"*
"G,
$$R$:FD)	HBC
""--?B1r   c                    t               }| j                  |      }t               |_        ddg|_        |j                  ddd      }| j                  |d       |j                  ddd      }| j                  |d	       |j                  dd
d      }| j                  |d       |j                  ddd      }| j                  |d        y )Nr   r   rm   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($$R$8($$R$8($$R$8&r   c                     t               }| j                  |      }t               |_        ddg|_        |j                  ddd      }| j                  |d        y )Nr   r   r   r   zadd badr   r   rT   s       r   test_complete_add_uncompletablez/ControllerTests.test_complete_add_uncompletablee  sU    $&]]7+
"*
"E?
$$UAI$>&r   c                    t               }| j                  |      }t               |_        ddg|_        |j                  ddd      }| j                  |d       |j                  ddd      }| j                  |d        y )	Nr   r   rq   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               }| j                  |      }t               |_        ddg|_        |j                  ddd      }| j                  |d        y )Nr   reloadrm   r   zreload r   r   rT   s       r   &test_complete_reload_arg_uncompletablez6ControllerTests.test_complete_reload_arg_uncompletablew  sV    $&]]7+
"*
"H-
$$R$;&r   c                 r    t               }| j                  |      }| j                  |j                  d       y )Nz*** No help on %s)r   r   r   nohelprP   s      r   test_nohelpzControllerTests.test_nohelp  s/    $&]]7+
**,?@r   c                     t               }| j                  |      }t               |_        |j	                  d      }|j                  j                         }| j                  |d        | j                  |d       y )Nrm   
foo helped)r   r   r   r^   do_helpr_   r   r   r   rQ   resultshelpvals        r   test_do_helpzControllerTests.test_do_help  sf    $&]]7+
$J
$$R(##,,.$',/r   c                     t               }| j                  |      }t               |_        |j	                  d      }| j                  |d        |j                  j                         }| j                  d|v        y )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  sh    $&]]7+
$J
$$V,$'##,,..'9:r   c                     t               }| j                  |      }|j                         }|j                         j                  }| j                  ||       y 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  sJ    $&]]7+
))+))+66)r   c                     t               }| j                  |      }|j                         }|j                         }| j	                  ||       y 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  sD    $&]]7+
++-))+)r   c                     t               }| j                  |      }|j                  d      }|j                         j                  }| j                  ||       y )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  sL    $&]]7+
++H5))+22)r   c                     ddl m} g } |       }| j                  t        |j                        dkD         g |_        |j                  |t               | j                  |       y )Nr   )ClientOptions)doc)supervisor.optionsr   rF   lensearchpathsrealize__doc__r   )r   r   argsr   s       r   #test_real_controller_initializationz3ControllerTests.test_real_controller_initialization  sS    4/ 	G//0145 '*gr   N)(r=   r>   r?   r   r   r!   rU   r`   ri   ru   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   s    /C
'
:2$	M]$Q$	<.(:M''*''
''' '
''
2''''A
0;***
r   rI   c                   $    e Zd Zd Zd Zd Zd Zy)TestControllerPluginBasec                     ddl m} |S )Nr   )ControllerPluginBase)r   r   )r   r   s     r   r   z(TestControllerPluginBase._getTargetClass  s    A##r   c                 h    | j                         }t               }t        |      } ||g|i |}|S r   r   r   r   r   ro   rp   klassr   r   r   s          r   r   z!TestControllerPluginBase._makeOne  ;    $$&$&g&s'S'B'r   c                 
   | j                         }|j                  d       }| j                  |d        | j                  |j                  j                  j                         d       | j                  t        |j                  j                        d       |j                  j                  d   }| j                  |d   d       | j                  |d   g        | j                  |d   d       | j                  |d   d       y )	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5t<VZZ667;**1-$KLB'B'B'r   c                 0   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  t        |j                  j                        d       y )Nfoozno help on foo
r   r  r   r   r'   s      r   test_do_help_withargz-TestControllerPluginBase.test_do_help_witharg  sn    &&**3357IJVZZ667;r   N)r=   r>   r?   r   r   r
  r  r@   r   r   r   r     s    $
(<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 Zy)TestDefaultControllerPluginc                     ddl m} |S )Nr   )DefaultControllerPlugin)r   r  )r   r  s     r   r   z+TestDefaultControllerPlugin._getTargetClass  s    D&&r   c                 h    | j                         }t               }t        |      } ||g|i |}|S r   r   r   s          r   r   z$TestDefaultControllerPlugin._makeOne  r  r   c                 b   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  |d   d       | j                  |j                  j                  t        j                         y )Nrm   r  r   zError: too few arguments
r   do_tailr   r   r^   r_   splitrs   r   rt   r   r   r'   liness       r   test_tail_toofewargsz0TestDefaultControllerPlugin.test_tail_toofewargs  s    #&

!!**,2248q#=>..0C0K0KLr   c                 b   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  |d   d       | j                  |j                  j                  t        j                         y )Nzone two three fourr  r   zError: too many argumentsr  r  s       r   test_tail_toomanyargsz1TestDefaultControllerPlugin.test_tail_toomanyargs  s     45&

!!**,2248q#>?..0C0K0KLr   c                 b   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  |d   d       | j                  |j                  j                  t        j                         y )N-fr  r   z!Error: tail requires process namer  r  s       r   test_tail_f_noprocnamez2TestDefaultControllerPlugin.test_tail_f_noprocname  s    %&

!!**,2248q#FG..0C0K0KLr   c                 b   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  |d   d       | j                  |j                  j                  t        j                         y )Nz-z foor  r   Error: bad argument -zr  r  s       r   test_tail_bad_modifierz2TestDefaultControllerPlugin.test_tail_bad_modifier  s    )&

!!**,2248q#;<..0C0K0KLr   c                 0   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  t        |      d       | j                  |d   d       y )Nr  r     r   stdout liner   r  r   r   r^   r_   r  r   r  s       r   test_tail_defaultsz.TestDefaultControllerPlugin.test_tail_defaults  sv    &&

!!**,2248UR(q=1r   c                    | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  t        |      d       | j                  |d   d       | j                  |j                  j                  t        j                         y )NNO_FILEr  r   r   zNO_FILE: ERROR (no log file)r   r  r   r   r^   r_   r  r   rs   r   rt   r  s       r   test_tail_no_filez-TestDefaultControllerPlugin.test_tail_no_file  s    	*&

!!**,2248UQ'q#AB..0C0K0KLr   c                    | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  t        |      d       | j                  |d   d       | j                  |j                  j                  t        j                         y )Nrn   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UQ'q#NO..0C0K0KLr   c                    | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  t        |      d       | j                  |d   d       | j                  |j                  j                  t        j                         y )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UQ'q#KL..0C0K0KLr   c                 0   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  t        |      d       | j                  |d   d       y )Nz-10 foor  r   r   z	dout liner&  r  s       r   test_tail_bytesmodifierz3TestDefaultControllerPlugin.test_tail_bytesmodifier*  sv    	*&

!!**,2248UQ'q;/r   c                 0   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  t        |      d       | j                  |d   d       y )Nz
foo stdoutr  r$  r   r%  r&  r  s       r   ,test_tail_explicit_channel_stdout_nomodifierzHTestDefaultControllerPlugin.test_tail_explicit_channel_stdout_nomodifier2  v    -&

!!**,2248UR(q=1r   c                 0   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  t        |      d       | j                  |d   d       y )Nz
foo stderrr  r$  r   zstderr liner&  r  s       r   ,test_tail_explicit_channel_stderr_nomodifierzHTestDefaultControllerPlugin.test_tail_explicit_channel_stderr_nomodifier:  r5  r   c                 Z   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                         }| j                  |d       | j                  |j                  j                  t        j                         y )Nz	foo fudgezError: bad channel 'fudge')
r   r  r   r   r^   r_   striprs   r   rt   r   r   r'   values       r   'test_tail_explicit_channel_unrecognizedzCTestDefaultControllerPlugin.test_tail_explicit_channel_unrecognizedB  s~    ,&

!!**,224 <=..0C0K0KLr   c                     | j                         }d |j                  _        g fd}||j                  j                  j                  j
                  _        |j                  d       | j                  g        y )Nc                       yr   r@   r@   r   r   rY   zFTestDefaultControllerPlugin.test_tail_upcheck_failed.<locals>.<lambda>L  rZ   r   c                  (    j                  d       y r3   appendro   rp   calleds     r   rq   z?TestDefaultControllerPlugin.test_tail_upcheck_failed.<locals>.fN      MM$r   r  )	r   r   rS   r   r[   r\   readProcessStdoutLogr  r   r   r   rq   rC  s      @r   test_tail_upcheck_failedz4TestDefaultControllerPlugin.test_tail_upcheck_failedJ  s^    *

	 EF

""--Bu$r   c                     | j                         }|j                          |j                  j                  j	                         }| j                  d|v        y )Nzstatus <name>)r   help_statusr   r^   r_   rF   r   r   outs      r   test_status_helpz,TestDefaultControllerPlugin.test_status_helpT  sB    jj((*3./r   c                     | j                         }d |j                  _        g fd}||j                  j                  j                  j
                  _        |j                  d       | j                  g        y )Nc                       yr   r@   r@   r   r   rY   zHTestDefaultControllerPlugin.test_status_upcheck_failed.<locals>.<lambda>\  rZ   r   c                  (    j                  d       y r3   r@  rB  s     r   rq   zATestDefaultControllerPlugin.test_status_upcheck_failed.<locals>.f^  rD  r   rm   )	r   r   rS   r   r[   r\   r   	do_statusr   rF  s      @r   test_status_upcheck_failedz6TestDefaultControllerPlugin.test_status_upcheck_failedZ  s`    *

	 BC

""--?$r   c                    | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  |d   j                  d      d       y )Nrm   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  sm    !!"%&

!!**,2248q	2B7r   c                    | j                         }|j                  j                  }d }||j                  j                  _        | j                  |j                  d      d        |j                  j                  j                         j                  d      }| j                  |d   j                  d      d       | j                  |d   j                  d      d       y )Nc                  j    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  rm   foo description
namegrouppidstate	statenamer   stopspawnerrnowdescriptionbarr$  bar description)supervisor.statesrZ  rS  FATALro   rp   rZ  s      r   rq   zOTestDefaultControllerPlugin.test_status_table_process_column_expands.<locals>.fn  sc    7%"+33"+!##4	6 ""*00!* "#4 r   rm   r  r   rS     r   )r   r   r   r[   r\   r   r   rP  r^   r_   r  rU  )r   r   r   rq   r  s        r   (test_status_table_process_column_expandszDTestDefaultControllerPlugin.test_status_table_process_column_expandsk  s    **$$	0 89""4))"-t4

!!**,2248q	2C8q	2C8r   c                 "   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  |d   j                  d d      g d       | j                  |d   j                  d d      g d       | j                  |d   j                  d d      g d       | j                  |j                  j                  t        j                         y )	Nrm   r  r   r   r  rS  r]  r   rh  rk  ri  z
baz:baz_01STOPPEDzbaz description
r   rP  r   r   r^   r_   r  rs   r   r   r:  s       r    test_status_all_processes_no_argz<TestDefaultControllerPlugin.test_status_all_processes_no_arg  s    !!"%&

!!**,2248qa0>	@qa0<	>qa0E	G..0E0Q0QRr   c                    | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  t
        j                         |j                  j                  j                         j                  d      }| j                  |d   j                  d d      g d       y )Nr  r  r   r   rp  )
r   rP  r   r   rs   r   SUCCESSr^   r_   r  r:  s       r   test_status_successz/TestDefaultControllerPlugin.test_status_success  s    !!%(&..0C0K0KL

!!**,2248qa0>	@r   c                 >   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         }| j                  d|       | j                  |j                  j                  t        j                         y )Nunknownprogramz(unknownprogram: ERROR (no such process)
)	r   rP  r   r   r^   r_   rs   r   UNKNOWNr:  s       r   test_status_unknown_processz7TestDefaultControllerPlugin.test_status_unknown_process  sx    !!"23&

!!**,DeL..0E0M0MNr   c                 "   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  |d   j                  d d      g d       | j                  |d   j                  d d      g d       | j                  |d   j                  d d      g d       | j                  |j                  j                  t        j                         y )	Nallr  r   r   rp  r   rq  rr  rt  r:  s       r   !test_status_all_processes_all_argz=TestDefaultControllerPlugin.test_status_all_processes_all_arg  s    !!%(&

!!**,2248qa0>	@qa0<	>qa0E	G..0E0Q0QRr   c                 ~   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                         }| j                  |j                  d d      g d       | j                  |j                  j                  t        j                         y )Nr  r   rp  )r   rP  r   r   r^   r_   r9  r  rs   r   rw  r:  s       r   test_status_process_namez4TestDefaultControllerPlugin.test_status_process_name  s    !!%(&

!!**,224T1->	@..0C0K0KLr   c                    | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  |d   j                  d d      g d       | j                  |j                  j                  t        j                         y )Nzbaz:*r  r   r   rr  rt  r:  s       r   test_status_group_namez2TestDefaultControllerPlugin.test_status_group_name  s    !!'*&

!!**,2248qa0E	G..0E0Q0QRr   c                    | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  |d   j                  d d      g d       | j                  |d   j                  d d      g d       | j                  |j                  j                  t        j                         y )Nz	foo baz:*r  r   r   rp  r   rr  rt  r:  s       r   test_status_mixed_namesz3TestDefaultControllerPlugin.test_status_mixed_names  s    !!+.&

!!**,2248qa0>	@qa0E	G..0E0Q0QRr   c                 b   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  |d   d       | j                  |j                  j                  t        j                         y )Nz
badgroup:*r  r   zbadgroup: ERROR (no such group)
r   rP  r   r   r^   r_   r  rs   r   r{  r:  s       r   test_status_bad_group_namez6TestDefaultControllerPlugin.test_status_bad_group_name  s    !!,/&

!!**,2248q#DE..0E0M0MNr   c                 b   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  |d   d       | j                  |j                  j                  t        j                         y )N
badprocessr  r   z#badprocess: ERROR (no such process)r  r:  s       r   test_status_bad_process_namez8TestDefaultControllerPlugin.test_status_bad_process_name  s    !!,/&

!!**,2248q#HI..0E0M0MNr   c                 b   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  |d   d       | j                  |j                  j                  t        j                         y )Nzbadgroup:badprocessr  r   z,badgroup:badprocess: ERROR (no such process)r  r:  s       r   'test_status_bad_process_name_with_groupzCTestDefaultControllerPlugin.test_status_bad_process_name_with_group  s    !!"78&

!!**,2248q $= 	>..0E0M0MNr   c                     | j                         }|j                          |j                  j                  j	                         }| j                  d|v        y )Nzstart <name>)r   
help_startr   r^   r_   rF   rJ  s      r   test_start_helpz+TestDefaultControllerPlugin.test_start_help  B    jj((*#-.r   c                 b   | j                         }|j                  d      }| j                  |d        d}| j                  |j                  j                  j                         j                  d      d   |       | j                  |j                  j                  t        j                         y )Nrm   z$Error: start requires a process namer  r   )
r   do_startr   r   r^   r_   r  rs   r   INVALID_ARGSr   r   r'   r   s       r   test_start_failz+TestDefaultControllerPlugin.test_start_fail  s    $&9**335;;DA!DhO..0C0P0PQr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y Nr/  "BAD_NAME: ERROR (no such process)
	r   r  r   r   r^   r_   rs   r   rt   r  s      r   test_start_badnamez.TestDefaultControllerPlugin.test_start_badname  s    ,&**335>	@..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr)  zNO_FILE: ERROR (no such file)
r  r  s      r   test_start_no_filez.TestDefaultControllerPlugin.test_start_no_file  sr    +&**335:	<..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )NNOT_EXECUTABLEz/NOT_EXECUTABLE: ERROR (file is not executable)
r  r  s      r   test_start_not_executablez5TestDefaultControllerPlugin.test_start_not_executable  st    !12&**335K	M..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )NALREADY_STARTEDz)ALREADY_STARTED: ERROR (already started)
	r   r  r   r   r^   r_   rs   r   rw  r  s      r   test_start_alreadystartedz5TestDefaultControllerPlugin.test_start_alreadystarted  st    !23&**335E	G..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )NSPAWN_ERRORz!SPAWN_ERROR: ERROR (spawn error)
	r   r  r   r   r^   r_   rs   r   r   r  s      r   test_start_spawnerrorz1TestDefaultControllerPlugin.test_start_spawnerror  sr    /&**335=	?..0C0O0OPr   c                 >   | j                         }|j                  d      }| j                  |d        d}| j                  |j                  j                  j                         |       | j                  |j                  j                  t        j                         y )NABNORMAL_TERMINATIONz3ABNORMAL_TERMINATION: ERROR (abnormal termination)
r  r  s       r   test_start_abnormalterminationz:TestDefaultControllerPlugin.test_start_abnormaltermination$  su    !78&I**335x@..0C0O0OPr   c                     | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       y )Nr  foo: started
)r   r  r   r   r^   r_   r  s      r   test_start_one_successz2TestDefaultControllerPlugin.test_start_one_success,  sQ    '&**335)	+r   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nfoo:foor  r  r  s      r   &test_start_one_with_group_name_successzBTestDefaultControllerPlugin.test_start_one_with_group_name_success3  r    +&**335)	+..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nfoo barzfoo: started
bar: started
r  r  s      r   test_start_manyz+TestDefaultControllerPlugin.test_start_many;  r    +&**3357	9..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr   z(foo:foo_00: started
foo:foo_01: started
r  r  s      r   test_start_groupz,TestDefaultControllerPlugin.test_start_groupC  sv    (&**3351	2 	..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y Nz	BAD_NAME: BAD_NAME: ERROR (no such group)
)	r   r  r   r   r^   r_   rs   r   r  r  s      r   test_start_group_bad_namez5TestDefaultControllerPlugin.test_start_group_bad_nameM  sr    -&**335<	>..0C0P0PQr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr~  zDfoo: started
foo2: started
failed_group:failed: ERROR (spawn error)
r  r  s      r   test_start_allz*TestDefaultControllerPlugin.test_start_allU  sx    '&**335F	G 	..0C0O0OPr   c                    | j                         }d |j                  _        g fd}|j                  j                  j                  j
                  }||_        ||_        |j                  d       | j                  g        y )Nc                       yr   r@   r@   r   r   rY   zGTestDefaultControllerPlugin.test_start_upcheck_failed.<locals>.<lambda>b  rZ   r   c                  (    j                  d       y r3   r@  rB  s     r   rq   z@TestDefaultControllerPlugin.test_start_upcheck_failed.<locals>.fd  rD  r   r  )
r   r   rS   r   r[   r\   startAllProcessesstartProcessGroupr  r   r   r   rq   r\   rC  s       @r   test_start_upcheck_failedz5TestDefaultControllerPlugin.test_start_upcheck_failed`  sk    *

	 ZZ''//::
'(
$'(
$$r   c                     | j                         }|j                          |j                  j                  j	                         }| j                  d|v        y )Nzstop <name>)r   	help_stopr   r^   r_   rF   rJ  s      r   test_stop_helpz*TestDefaultControllerPlugin.test_stop_helpl  sB    jj((*,-r   c                 ^   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         j                  d      d   d       | j                  |j                  j                  t        j                         y )Nrm   r  r   z#Error: stop requires a process name)
r   do_stopr   r   r^   r_   r  rs   r   rt   r  s      r   test_stop_failz*TestDefaultControllerPlugin.test_stop_failr  s    #&**335;;DA!D>	@..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y r  	r   r  r   r   r^   r_   rs   r   rt   r  s      r   test_stop_badnamez-TestDefaultControllerPlugin.test_stop_badnamez  ss    
+&**335>	@..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr   !NOT_RUNNING: ERROR (not running)
	r   r  r   r   r^   r_   rs   r   rw  r  s      r   test_stop_notrunningz0TestDefaultControllerPlugin.test_stop_notrunning  sr    .&**335=	?..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nrn   FAILED
r  r  s      r   test_stop_failedz,TestDefaultControllerPlugin.test_stop_failed  so    )&**335zB..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr  foo: stopped
r  r  s      r   test_stop_one_successz1TestDefaultControllerPlugin.test_stop_one_success  sr    &&**335)	+..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr  r  r  r  s      r   %test_stop_one_with_group_name_successzATestDefaultControllerPlugin.test_stop_one_with_group_name_success  sr    	*&**335)	+..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr  zfoo: stopped
bar: stopped
r  r  s      r   test_stop_manyz*TestDefaultControllerPlugin.test_stop_many  sv    	*&**335*	+ 	..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr   z(foo:foo_00: stopped
foo:foo_01: stopped
r  r  s      r   test_stop_groupz+TestDefaultControllerPlugin.test_stop_group  sv    '&**3351	2 	..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y r  r  r  s      r   test_stop_group_bad_namez4TestDefaultControllerPlugin.test_stop_group_bad_name  sr    ,&**335<	>..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr~  zHfoo: stopped
foo2: stopped
failed_group:failed: ERROR (no such process)
r  r  s      r   test_stop_allz)TestDefaultControllerPlugin.test_stop_all  sx    &&**335J	K 	..0C0K0KLr   c                    | j                         }d |j                  _        g fd}|j                  j                  j                  j
                  }||_        ||_        |j                  d       | j                  g        y )Nc                       yr   r@   r@   r   r   rY   zFTestDefaultControllerPlugin.test_stop_upcheck_failed.<locals>.<lambda>  rZ   r   c                  (    j                  d       y r3   r@  rB  s     r   rq   z?TestDefaultControllerPlugin.test_stop_upcheck_failed.<locals>.f  rD  r   r  )
r   r   rS   r   r[   r\   stopAllProcessesstopProcessGroupr  r   r  s       @r   test_stop_upcheck_failedz4TestDefaultControllerPlugin.test_stop_upcheck_failed  sk    *

	 ZZ''//::
&'
#&'
#u$r   c                     | j                         }|j                          |j                  j                  j	                         }| j                  d|v        y )Nzsignal <signal name> <name>)r   help_signalr   r^   r_   rF   rJ  s      r   test_signal_helpz,TestDefaultControllerPlugin.test_signal_help  sC    jj((*5<=r   c                 b   | j                         }|j                  d      }| j                  |d        d}| j                  |j                  j                  j                         j                  d      d   |       | j                  |j                  j                  t        j                         y )Nrm   7Error: signal requires a signal name and a process namer  r   
r   	do_signalr   r   r^   r_   r  rs   r   rt   r   r   r'   msgs       r   test_signal_fail_no_argz3TestDefaultControllerPlugin.test_signal_fail_no_arg  s    !!"%&G**335;;DA!DcJ..0C0K0KLr   c                 b   | j                         }|j                  d      }| j                  |d        d}| j                  |j                  j                  j                         j                  d      d   |       | j                  |j                  j                  t        j                         y )Nhupr  r  r   r  r  s       r   test_signal_fail_one_argz4TestDefaultControllerPlugin.test_signal_fail_one_arg  s    !!%(&G**335;;DA!DcJ..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )NzBAD_SIGNAL foozfoo: ERROR (bad signal name)
	r   r  r   r   r^   r_   rs   r   rt   r  s      r   test_signal_bad_signalz2TestDefaultControllerPlugin.test_signal_bad_signal  su    !!"23&**3359	;..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )NzHUP BAD_NAMEr  r  r  s      r   test_signal_bad_namez0TestDefaultControllerPlugin.test_signal_bad_name  su    !!.1&**335>	@..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )NzHUP BAD_NAME:r  r  r  s      r   test_signal_bad_groupz1TestDefaultControllerPlugin.test_signal_bad_group  st    !!/2&**335<	>..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )NzHUP NOT_RUNNINGr  )	r   r  r   r   r^   r_   rs   r   r   r  s      r   test_signal_not_runningz3TestDefaultControllerPlugin.test_signal_not_running  su    !!"34&**335=	?..0C0O0OPr   c                    | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  d       y )Nz
HUP FAILEDr  r   )r   r  r   r   r^   r_   rs   r  s      r   test_signal_failedz.TestDefaultControllerPlugin.test_signal_failed  sj    !!,/&**335zB..2r   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )NzHUP foozfoo: signalled
	r   r  r   r   r^   r_   rs   r   rw  r  s      r   test_signal_one_successz3TestDefaultControllerPlugin.test_signal_one_success  sr    !!),&**3357IJ..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )NzHUP foo barzfoo: signalled
bar: signalled
r  r  s      r   test_signal_manyz,TestDefaultControllerPlugin.test_signal_many  sx    !!-0&**335,	- 	..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )NzHUP foo:z,foo:foo_00: signalled
foo:foo_01: signalled
r  r  s      r   test_signal_groupz-TestDefaultControllerPlugin.test_signal_group  sx    !!*-&**3353	4 	..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )NzHUP allzLfoo: signalled
foo2: signalled
failed_group:failed: ERROR (no such process)
r  r  s      r   test_signal_allz+TestDefaultControllerPlugin.test_signal_all'  sz    !!),&**335J	K 	..0C0K0KLr   c                    | j                         }d |j                  _        g fd}|j                  j                  j                  j
                  }||_        ||_        |j                  d       | j                  g        y )Nc                       yr   r@   r@   r   r   rY   zHTestDefaultControllerPlugin.test_signal_upcheck_failed.<locals>.<lambda>3  rZ   r   c                  (    j                  d       y r3   r@  rB  s     r   rq   zATestDefaultControllerPlugin.test_signal_upcheck_failed.<locals>.f5  rD  r   zterm foo)
r   r   rS   r   r[   r\   signalAllProcessessignalProcessGroupr  r   r  s       @r   test_signal_upcheck_failedz6TestDefaultControllerPlugin.test_signal_upcheck_failed1  sm    *

	 ZZ''//::
()
%()
%$$r   c                     | j                         }|j                          |j                  j                  j	                         }| j                  d|v        y )Nzrestart <name>)r   help_restartr   r^   r_   rF   rJ  s      r   test_restart_helpz-TestDefaultControllerPlugin.test_restart_help=  sC    jj((*(C/0r   c                 ^   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         j                  d      d   d       | j                  |j                  j                  t        j                         y )Nrm   r  r   z&Error: restart requires a process name)
r   
do_restartr   r   r^   r_   r  rs   r   rt   r  s      r   test_restart_failz-TestDefaultControllerPlugin.test_restart_failC  s    ""2&&**335;;DA!DA	C..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr  zfoo: stopped
foo: started
)	r   r  r   r   r^   r_   rs   r   rw  r  s      r   test_restart_onez,TestDefaultControllerPlugin.test_restart_oneK  st    ""5)&**3357	9..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )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_   rs   r   r   r  s      r   test_restart_allz,TestDefaultControllerPlugin.test_restart_allS  sz    ""5)&**335F	G
 	..0C0O0OPr   c                    | j                         }d |j                  _        g fd}|j                  j                  j                  j
                  }||_        ||_        |j                  d       | j                  g        y )Nc                       yr   r@   r@   r   r   rY   zITestDefaultControllerPlugin.test_restart_upcheck_failed.<locals>.<lambda>`  rZ   r   c                  (    j                  d       y r3   r@  rB  s     r   rq   zBTestDefaultControllerPlugin.test_restart_upcheck_failed.<locals>.fb  rD  r   r  )
r   r   rS   r   r[   r\   r  r  r  r   r  s       @r   test_restart_upcheck_failedz7TestDefaultControllerPlugin.test_restart_upcheck_failed^  sm    *

	 ZZ''//::
&'
#&'
#% $r   c                     | j                         }|j                          |j                  j                  j	                         }| j                  d|v        y )Nzclear <name>)r   
help_clearr   r^   r_   rF   rJ  s      r   test_clear_helpz+TestDefaultControllerPlugin.test_clear_helpj  r  r   c                 ^   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         j                  d      d   d       | j                  |j                  j                  t        j                         y )Nrm   r  r   z$Error: clear requires a process name)
r   do_clearr   r   r^   r_   r  rs   r   rt   r  s      r   test_clear_failz+TestDefaultControllerPlugin.test_clear_failp  s    $&**335;;DA!D?	A..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y r  	r   r#  r   r   r^   r_   rs   r   rt   r  s      r   test_clear_badnamez.TestDefaultControllerPlugin.test_clear_badnamex  r  r   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr  foo: cleared
	r   r#  r   r   r^   r_   rs   r   rw  r  s      r   test_clear_one_successz2TestDefaultControllerPlugin.test_clear_one_success  sr    '&**335)	+..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr  r)  r*  r  s      r   !test_clear_one_with_group_successz=TestDefaultControllerPlugin.test_clear_one_with_group_success  r  r   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr  zfoo: cleared
bar: cleared
r*  r  s      r   test_clear_manyz+TestDefaultControllerPlugin.test_clear_many  r  r   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr~  z?foo: cleared
foo2: cleared
failed_group:failed: ERROR (failed)
r&  r  s      r   test_clear_allz*TestDefaultControllerPlugin.test_clear_all  sx    '&**335A	B 	..0C0K0KLr   c                    | j                         }d |j                  _        g fd}|j                  j                  j                  j
                  }||_        ||_        |j                  d       | j                  g        y )Nc                       yr   r@   r@   r   r   rY   zGTestDefaultControllerPlugin.test_clear_upcheck_failed.<locals>.<lambda>  rZ   r   c                  (    j                  d       y r3   r@  rB  s     r   rq   z@TestDefaultControllerPlugin.test_clear_upcheck_failed.<locals>.f  rD  r   r  )
r   r   rS   r   r[   r\   clearAllProcessLogsclearProcessLogsr#  r   r  s       @r   test_clear_upcheck_failedz5TestDefaultControllerPlugin.test_clear_upcheck_failed  sk    *

	 ZZ''//::
)*
&&'
#$r   c                     | j                         }|j                          |j                  j                  j	                         }| j                  d|v        y )Nz
open <url>)r   	help_openr   r^   r_   rF   rJ  s      r   test_open_helpz*TestDefaultControllerPlugin.test_open_help  sB    jj((*+,r   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nbadnamez&ERROR: url must be http:// or unix://
)	r   do_openr   r   r^   r_   rs   r   rt   r  s      r   test_open_failz*TestDefaultControllerPlugin.test_open_fail  ss    	*&**335B	D..0C0K0KLr   c                 "   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  |d   j                  d d      g d       | j                  |d   j                  d d      g d       | j                  |d   j                  d d      g d       | j                  |j                  j                  t        j                         y )	Nzhttp://localhost:9002r  r   r   rp  r   rq  rr  )
r   r=  r   r   r^   r_   r  rs   r   rw  r:  s       r   test_open_succeedz-TestDefaultControllerPlugin.test_open_succeed  s     78&

!!**,2248qa0>	@qa0<	>qa0E	G..0C0K0KLr   c                     | j                         }|j                          |j                  j                  j	                         }| j                  d|v        y )Nz*Show the version of the remote supervisord)r   help_versionr   r^   r_   rF   rJ  s      r   test_version_helpz-TestDefaultControllerPlugin.test_version_help  sC    jj((*DKLr   c                     | j                         }|j                  d        | j                  |j                  j                  j                         d       y )Nz3000
)r   
do_versionr   r   r^   r_   r   r   s     r   test_versionz(TestDefaultControllerPlugin.test_version  s>    $**335x@r   c                 \   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         }| j                  |j                  d      |       | j                  |j                  j                  t        j                         y )Nr   z#Error: version accepts no arguments)r   rE  r   r   r^   r_   rF   
startswithrs   r   rt   r   r   r'   vals       r   test_version_argz,TestDefaultControllerPlugin.test_version_arg  s~    ""5)&jj((*'LMsS..0C0K0KLr   c                     | j                         }d |j                  _        g fd}||j                  j                  j                  j
                  _        |j                  d       | j                  g        y )Nc                       yr   r@   r@   r   r   rY   zITestDefaultControllerPlugin.test_version_upcheck_failed.<locals>.<lambda>  rZ   r   c                  (    j                  d       y r3   r@  rB  s     r   rq   zBTestDefaultControllerPlugin.test_version_upcheck_failed.<locals>.f  rD  r   rm   )	r   r   rS   r   r[   r\   getSupervisorVersionrE  r   rF  s      @r   test_version_upcheck_failedz7TestDefaultControllerPlugin.test_version_upcheck_failed  s`    *

	 EF

""--B"$r   c                     | j                         }|j                          |j                  j                  j	                         }| j                  d|v        y )NzRestart the remote supervisord)r   help_reloadr   r^   r_   rF   rJ  s      r   test_reload_helpz,TestDefaultControllerPlugin.test_reload_help  sC    jj((*8C?@r   c                 ,   | j                         }|j                  j                  }d|j                  j                  _        |j                  d      }| j                  |d        | j                  |j                  j                  j                  d       y )NFrm   )	r   r   r   r[   r\   _restartable	do_reloadr   
_restartedr   r   r   r'   s       r   test_reload_failz,TestDefaultControllerPlugin.test_reload_fail  sn    **$$27""/!!"%&33>>Fr   c                     | j                         }|j                  j                  }|j                  d      }| j	                  |d        | j	                  |j
                  j                  j                  d       y Nrm   T)r   r   r   rW  r   r[   r\   rX  rY  s       r   test_reloadz'TestDefaultControllerPlugin.test_reload  s\    **$$!!"%&33>>Er   c                 \   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         }| j                  |j                  d      |       | j                  |j                  j                  t        j                         y )Nr   z"Error: reload accepts no arguments)r   rW  r   r   r^   r_   rF   rI  rs   r   rt   rJ  s       r   test_reload_argz+TestDefaultControllerPlugin.test_reload_arg  ~    !!%(&jj((*'KLcR..0C0K0KLr   c                     | j                         }|j                          |j                  j                  j	                         }| j                  d|v        y )Nz Shut the remote supervisord down)r   help_shutdownr   r^   r_   rF   rJ  s      r   test_shutdown_helpz.TestDefaultControllerPlugin.test_shutdown_help  C    jj((*:cABr   c                    | j                         }|j                  j                  }|j                  d      }| j	                  |d        | j	                  |j
                  j                  j                  d       |j                  j                  j                         }| j                  |j                  d      |       | j	                  |j                  j                  t        j                         y )Nr   Fz$Error: shutdown accepts no arguments)r   r   r   do_shutdownr   r[   r\   	_shutdownr^   r_   rF   rI  rs   r   rt   )r   r   r   r'   rK  s        r   "test_shutdown_with_arg_shows_errorz>TestDefaultControllerPlugin.test_shutdown_with_arg_shows_error
  s    **$$##E*&33==uEjj((*'MNPST..0C0K0KLr   c                     | j                         }|j                  j                  }|j                  d      }| j	                  |d        | j	                  |j
                  j                  j                  d       y r\  )r   r   r   rf  r   r[   r\   rg  rY  s       r   test_shutdownz)TestDefaultControllerPlugin.test_shutdown  s\    **$$##B'&33==tDr   c                    | j                         }ddlm fd}||j                  j                  j
                  j                  _        |j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr   r   c                  X    t        j                  j                  j                  d      )Nbyer   rf   rc   SHUTDOWN_STATEro   rp   r   s     r   r   zbTestDefaultControllerPlugin.test_shutdown_catches_xmlrpc_fault_shutdown_state.<locals>.raise_fault  s    //&--">">FFr   rm   zERROR: already shutting down
)r   r\   r   r   r   r[   shutdownrf  r   r^   r_   rs   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9D

""--6##B'&**3359	;..0C0K0KLr   c                 X   | j                         }ddlm fd}||j                  j                  j
                  j                  _        | j                  t        j                  |j                  d       | j                  |j                  j                  t        j                         y )Nr   r   c                  X    t        j                  j                  j                  d      )Nouchr   rf   rc   CANT_REREADrp  s     r   r   z[TestDefaultControllerPlugin.test_shutdown_reraises_other_xmlrpc_faults.<locals>.raise_fault-      //&--";";VDDr   rm   )r   r\   r   r   r   r[   rq  rr   r   rf   rf  r   rs   r   rt   )r   r   r   r   s      @r   *test_shutdown_reraises_other_xmlrpc_faultszFTestDefaultControllerPlugin.test_shutdown_reraises_other_xmlrpc_faults)  su    %	E9D

""--6)// ,,b	2..0C0K0KLr   c                    | j                         }dd ldd lfd}||j                  j                  j
                  j                  _        |j                  d      }| j                  |d        |j                  j                  j                         }| j                  d|v        | j                  |j                  j                  t        j                         y )Nr   c                  <    j                  j                  d      rx   ry   r|   s     r   r   z`TestDefaultControllerPlugin.test_shutdown_catches_socket_error_ECONNREFUSED.<locals>.raise_fault:  r   r   rm   z'refused connection (already shut down?)r   r~   r}   r   r   r[   r\   rq  rf  r   r^   r_   rF   rs   r   rt   r   r   r   r'   r   r}   r~   s        @@r   /test_shutdown_catches_socket_error_ECONNREFUSEDzKTestDefaultControllerPlugin.test_shutdown_catches_socket_error_ECONNREFUSED5  s    	B9D

""--6##B'&""++-AVKL..0C0K0KLr   c                    | j                         }dd ldd lfd}||j                  j                  j
                  j                  _        |j                  d      }| j                  |d        |j                  j                  j                         }| j                  d|v        | j                  |j                  j                  t        j                         y )Nr   c                  <    j                  j                  d      )Nzno filer   r|   s     r   r   zZTestDefaultControllerPlugin.test_shutdown_catches_socket_error_ENOENT.<locals>.raise_faultJ  s    ,,u||Y77r   rm   z!no such file (already shut down?)r|  r}  s        @@r   )test_shutdown_catches_socket_error_ENOENTzETestDefaultControllerPlugin.test_shutdown_catches_socket_error_ENOENTE  s    	89D

""--6##B'&""++-;vEF..0C0K0KLr   c                 X   | j                         }dd ldd lfd}||j                  j                  j
                  j                  _        | j                  j                  |j                  d       | j                  |j                  j                  t        j                         y )Nr   c                  <    j                  j                  d      )Ndenied)rz   EPERMr|   s     r   r   z[TestDefaultControllerPlugin.test_shutdown_reraises_other_socket_errors.<locals>.raise_faultZ  s    ,,u{{H55r   rm   )r   r~   r}   r   r   r[   r\   rq  rr   rz   rf  r   rs   r   rt   )r   r   r   r}   r~   s      @@r   *test_shutdown_reraises_other_socket_errorszFTestDefaultControllerPlugin.test_shutdown_reraises_other_socket_errorsU  sw    	69D

""--6&,, ,,b	2..0C0K0KLr   c                 z    | j                         }|j                  dgdgdgg       |j                  g g g g       y )Naddedchangedremoved)r   _formatChangesrF  s     r   test__formatChangesz/TestDefaultControllerPlugin.test__formatChangesb  s<    y9+	{CDr2rl+r   c                    | j                         }|j                          |j                  j                  j	                         }| j                  d|v        | j                  |j                  j                  t        j                         y )Nz'Reload the daemon's configuration files)
r   help_rereadr   r^   r_   rF   r   rs   r   rw  rJ  s      r   test_reread_helpz,TestDefaultControllerPlugin.test_reread_helph  sd    jj((*ASHI..0C0K0KLr   c                 "   | j                         }g fd|_        |j                  d       }| j                  |d        | j                  d   dgdgdgg       | j                  |j                  j
                  t        j                         y )Nc                 &    j                  |       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   rs   r   rw  )r   r   r'   r  s      @r   test_rereadz'TestDefaultControllerPlugin.test_rereado  s}     9!!$'&qWI	{YK#HI..0C0K0KLr   c                 \   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         }| j                  |j                  d      |       | j                  |j                  j                  t        j                         y )Nr   z"Error: reread accepts no arguments)r   r  r   r   r^   r_   rF   rI  rs   r   rt   rJ  s       r   test_reread_argz+TestDefaultControllerPlugin.test_reread_argx  r`  r   c                    | j                         }ddlm fd}||j                  j                  j
                  j                  _        |j                  d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr   r   c                  X    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   r[   r  r  r   r^   r_   rs   r   rt   r   r   r  r   s      @r   test_reread_cant_rereadz3TestDefaultControllerPlugin.test_reread_cant_reread  s    %	E=I

""--:**335(	*..0C0K0KLr   c                    | j                         }ddlm fd}||j                  j                  j
                  j                  _        |j                  d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr   r   c                  X    t        j                  j                  j                  d      rl   rn  rp  s     r   r  zLTestDefaultControllerPlugin.test_reread_shutdown_state.<locals>.reloadConfig  s    //&--">">CCr    ERROR: supervisor shutting down
r  r  s      @r   test_reread_shutdown_statez6TestDefaultControllerPlugin.test_reread_shutdown_state  s    %	D=I

""--:**335<	>..0C0K0KLr   c                 X   | j                         }ddlm fd}||j                  j                  j
                  j                  _        | j                  t        j                  |j                  d       | j                  |j                  j                  t        j                         y )Nr   r   c                  X    t        j                  j                  j                  d      rl   )r   rf   rc   rn   rp  s     r   r  zSTestDefaultControllerPlugin.test_reread_reraises_other_faults.<locals>.reloadConfig  s    //&--"6"6;;r   rm   )r   r\   r   r   r   r[   r  rr   r   rf   r  r   rs   r   rt   r  s      @r   !test_reread_reraises_other_faultsz=TestDefaultControllerPlugin.test_reread_reraises_other_faults  sq    %	<=I

""--:)//6+;+;R@..0C0K0KLr   c                     ddddddd}| j                         }|j                  |      }| j                  d|v        ddddddd}|j                  |      }| j                  d|v        y )	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                          |j                  j                  j	                         }| j                  d|v        y )NzDisplay all configured)r   
help_availr   r^   r_   rF   rJ  s      r   test_avail_helpz+TestDefaultControllerPlugin.test_avail_help  sC    jj((*0C78r   c                     g }| j                         } G d dt              fd|j                  _        |j                  |j                  _        |j                  d      }| j                  |d        y )Nc                       e Zd Zd Zy)>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 D Dr   N)r=   r>   r?   r  r@   r   r   FakeSupervisorr    s    Dr   r  c                               S r   r@   )r  s   r   rY   z8TestDefaultControllerPlugin.test_avail.<locals>.<lambda>  s
    ^-= r   rm   )r   rB   r   r   rA  r   do_availr   )r   r  r   r'   r  s       @r   
test_availz&TestDefaultControllerPlugin.test_avail  s]    	DV 	D %>

!!LL

$&r   c                 \   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         }| j                  |j                  d      |       | j                  |j                  j                  t        j                         y )Nr   z!Error: avail accepts no arguments)r   r  r   r   r^   r_   rF   rI  rs   r   rt   rJ  s       r   test_avail_argz*TestDefaultControllerPlugin.test_avail_arg  s|    '&jj((*'JKSQ..0C0K0KLr   c                    | j                         }|j                  j                  j                  j                  }d }||_        |j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nc                  b    ddl m}  t        j                  | j                  j
                  d      Nr   r   rm   r\   r   r   rf   rc   ro  r   s    r   r  zOTestDefaultControllerPlugin.test_avail_shutdown_state.<locals>.getAllConfigInfo  s     )//&--">">CCr   rm   r  )r   r   r   r[   r\   r  r  r   r^   r_   rs   r   rt   )r   r   r\   r  r'   s        r   test_avail_shutdown_statez5TestDefaultControllerPlugin.test_avail_shutdown_state  s    ZZ''//::
	D '7
#$&**335<	>..0C0K0KLr   c                 J   | j                         }|j                  j                  j                  j                  }d }||_        | j                  t        j                  |j                  d       | j                  |j                  j                  t        j                         y )Nc                  b    ddl m}  t        j                  | j                  j
                  d      r  r\   r   r   rf   rc   rn   r   s    r   r  zVTestDefaultControllerPlugin.test_avail_reraises_other_faults.<locals>.getAllConfigInfo  s     )//&--"6"6;;r   rm   )r   r   r   r[   r\   r  rr   r   rf   r  r   rs   r   rt   )r   r   r\   r  s       r    test_avail_reraises_other_faultsz<TestDefaultControllerPlugin.test_avail_reraises_other_faults  sr    ZZ''//::
	< '7
#)//6??B?..0C0K0KLr   c                     | j                         }|j                          |j                  j                  j	                         }| j                  d|v        y )Nz
add <name>)r   help_addr   r^   r_   rF   rJ  s      r   test_add_helpz)TestDefaultControllerPlugin.test_add_help  @    jj((*+,r   c                 `   | j                         }|j                  d      }| j                  |d        |j                  j                  j
                  j                  }| j                  |j                  dg       | j                  |j                  j                  t        j                         y Nr  )r   do_addr   r   r   r[   r\   	processesrs   r   rw  )r   r   r'   r\   s       r   test_addz$TestDefaultControllerPlugin.test_add  s    u%&ZZ''//::
--w7..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )NALREADY_ADDEDz$ERROR: process group already active
)	r   r  r   r   r^   r_   rs   r   rw  r  s      r   test_add_already_addedz2TestDefaultControllerPlugin.test_add_already_added  ss    /&**335@	B..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr/  'ERROR: no such process/group: BAD_NAME
	r   r  r   r   r^   r_   rs   r   rt   r  s      r   test_add_bad_namez-TestDefaultControllerPlugin.test_add_bad_name   ss    z*&**335C	E..0C0K0KLr   c                 :   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nro  zERROR: shutting down
r  r  s      r   test_add_shutdown_statez3TestDefaultControllerPlugin.test_add_shutdown_state  ss    /0&**3351	3..0C0K0KLr   c                     | j                         }| j                  t        j                  |j                  d       | j                  |j                  j                  t        j                         y Nrn   )
r   rr   r   rf   r  r   r   rs   r   rt   rF  s     r   test_add_reraises_other_faultsz:TestDefaultControllerPlugin.test_add_reraises_other_faults  sH    )//6==(C..0C0K0KLr   c                    | j                         }|j                          |j                  j                  j	                         }| j                  d|v        | j                  |j                  j                  t        j                         y )Nzremove <name>)
r   help_remover   r^   r_   rF   r   rs   r   rw  rJ  s      r   test_remove_helpz,TestDefaultControllerPlugin.test_remove_help  sc    jj((*3./..0C0K0KLr   c                    | j                         }|j                  j                  j                  j                  }dg|_        |j                  d      }| j                  |d        | j                  |j
                  g        y r  )r   r   r   r[   r\   r  	do_remover   r   r   r\   r'   s       r   test_removez'TestDefaultControllerPlugin.test_remove  sh    ZZ''//::
 %w
!!%(&--r2r   c                    | j                         }|j                  j                  j                  j                  }dg|_        |j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr  r/  r  r   r   r   r[   r\   r  r  r   r^   r_   rs   r   rt   r  s       r   test_remove_bad_namez0TestDefaultControllerPlugin.test_remove_bad_name$  s    ZZ''//::
 %w
!!*-&**335C	E..0C0K0KLr   c                    | j                         }|j                  j                  j                  j                  }dg|_        |j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr  STILL_RUNNINGz2ERROR: process/group still running: STILL_RUNNING
r  r  s       r   test_remove_still_runningz5TestDefaultControllerPlugin.test_remove_still_running.  s    ZZ''//::
 %w
!!/2&**335N	P..0C0K0KLr   c                     | j                         }| j                  t        j                  |j                  d       | j                  |j                  j                  t        j                         y r  )
r   rr   r   rf   r  r   r   rs   r   rt   rF  s     r   !test_remove_reraises_other_faultsz=TestDefaultControllerPlugin.test_remove_reraises_other_faults8  sJ    )//6+;+;XF..0C0K0KLr   c                     | j                         }|j                          |j                  j                  j	                         }| j                  d|v        y )NzReload config and add/remove)r   help_updater   r^   r_   rF   rJ  s      r   test_update_helpz,TestDefaultControllerPlugin.test_update_help=  sC    jj((*6#=>r   c                     | j                         }|j                  j                  j                  j                  }d }||_        dg|_        |j                  d       | j                  |j                  dg       y )Nc                  b    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Gr   r  rm   )	r   r   r   r[   r\   r  r  	do_updater   r   r   r\   r  s       r   test_update_not_on_shutdownz7TestDefaultControllerPlugin.test_update_not_on_shutdownC  sh    ZZ''//::
	H #/
 ){
--	{;r   c                    | j                         }|j                  j                  j                  j                  }d }||_        |j                  d      }| j                  |d        | j                  |j                  dg       y )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   rm   r  )	r   r   r   r[   r\   r  r  r   r  )r   r   r\   r  r'   s        r   test_update_added_procsz3TestDefaultControllerPlugin.test_update_added_procsN  sm    ZZ''//::
	,".
!!"%&--
|<r   c                 L   | j                         }|j                  j                  j                  j                  }d }||_        ddg|_        |j                  d       | j                  t        |j                        t        ddg             |j                  d       | j                  t        |j                        t        g d             |j                  d       | j                  t        |j                        t        g d             ddg|_        |j                  d       | j                  t        |j                        t        ddg             ddg|_        |j                  d	       | j                  t        |j                        t        g d             y )
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   r[   r\   r  r  r  r   sortedr  s       r   test_update_with_gnamez2TestDefaultControllerPlugin.test_update_with_gnameZ  sk   ZZ''//::
	F".
 )95
#
 4 45I 67	9 	)
 4 45 JK	M 	#
 4 45 ?@	B !*95
)*
 4 45H 56	8 !*95

 4 45 ?@	Br   c                 <   ddl m} | j                         }|j                  j                  j
                  j                   }g d }||_        fd|_        |j                  d       dd|j                  j                  ddgfd	}||_        |j                  d
       | j                  dg       |j                  d       g d d  dd|j                  j                  dddd|j                  j                  ddgd d  |j                  d
       | j                  dg       |j                  d       g d d  dd|j                  j                  dddd|j                  j                  ddgd d  |j                  d
       | j                  dg       y )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                 *    j                  d| f      S )Nr   r@  r  s    r   rY   zGTestDefaultControllerPlugin.test_update_changed_procs.<locals>.<lambda>  s    ELL'1,F r   r  changed_processr  r_  r`  statusrg  c                 .    j                  d| f       S )Nrd  r@  )r_  r  r   s    r   r  zOTestDefaultControllerPlugin.test_update_changed_procs.<locals>.stopProcessGroup  s    LL&$(Nr   rm   )rd  r  changed_process1changed_process2)r\   r   r   r   r   r[   r  startProcessaddProcessGrouprc   rw  r  r  r   r   rn   )r   r   r   r\   r  r  r  r   s         @@r   test_update_changed_procsz5TestDefaultControllerPlugin.test_update_changed_procsz  s   %ZZ''//::
	1".
"F
""?3#4#2#)==#8#8#)+ ,	 '7
#!: ;<""?3a&8&5&,mm&?&?&,. '9&5&,mm&:&:&,.	/
 	!: ;<""?3a&8&5&,mm&:&:&,. '9&5&,mm&;&;&,.	/
 	!: ;<r   c                    ddl m} | j                         }|j                  j                  j
                  j                   }d }||_        dd|j                  j                  ddgdg|_	        fd}||_
        |j                  d	       | j                  |j                  g        dd|j                  j                  ddgd d  dg|_	        |j                  d	       | j                  |j                  g        dd|j                  j                  ddgd d  dg|_	        |j                  d	       | j                  |j                  dg       y )
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   rm   )r\   r   r   r   r   r[   r  rc   rw  r  r  r  r   r   rn   )r   r   r   r\   r  r  r   s         @r   test_update_removed_procsz5TestDefaultControllerPlugin.test_update_removed_procs  sJ   %ZZ''//::
	1".
#4#2#)==#8#8#)+ , !00
	&6
#--r2&7&5&,mm&?&?&,. /
 !00
--r2&7&5&,mm&:&:&,. /
 !00
--/@Ar   c                 .   | j                         }|j                  j                  j                  j                  }d }||_        | j                  t        j                  |j                  d       | j                  |j                  j                  d       y )Nc                  b    ddl m}  t        j                  | j                  j
                  d      )Nr   r   rn   r  r   s    r   r  zSTestDefaultControllerPlugin.test_update_reraises_other_faults.<locals>.reloadConfig  s     )//&--"6"6AAr   rm   r   )r   r   r   r[   r\   r  rr   r   rf   r  r   rs   r  s       r   !test_update_reraises_other_faultsz=TestDefaultControllerPlugin.test_update_reraises_other_faults  sn    ZZ''//::
	B #/
)//6+;+;R@..2r   c                     | j                         }|j                          |j                  j                  j	                         }| j                  d|v        y )Nz
pid <name>)r   help_pidr   r^   r_   rF   rJ  s      r   test_pid_helpz)TestDefaultControllerPlugin.test_pid_help  r  r   c                    | j                         }|j                  d      }| j                  |d        |j                  j                  }|j                  j
                  j                         j                  d      }| j                  t        |      d       | j                  |d   t        |j                  j                  j                                      y )Nrm   r  r   r   )r   do_pidr   r   r   r^   r_   r  r   strr[   r\   getPID)r   r   r'   r   r  s        r   test_pid_supervisordz0TestDefaultControllerPlugin.test_pid_supervisord  s    r"&**$$

!!**,2248UQ'q3w'A'A'H'H'J#KLr   c                 z   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                         }| j                  |j                         g d       | j                  |j                  j                  t        j                         y )Nr~  )111213)r   r  r   r   r^   r_   r9  r  rs   r   rw  r:  s       r   test_pid_allprocessesz1TestDefaultControllerPlugin.test_pid_allprocesses  s    u%&

!!**,224(:;..0C0K0KLr   c                 Z   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                         }| j                  |d       | j                  |j                  j                  t        j                         y )Nr/  zNo such process BAD_NAME)
r   r  r   r   r^   r_   r9  rs   r   rt   r:  s       r   test_pid_badnamez,TestDefaultControllerPlugin.test_pid_badname  s~    z*&

!!**,224 :;..0C0K0KLr   c                 V   | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         j                         d       | j                  |j                  j                  t        j                         y )Nr  r   )
r   r  r   r   r^   r_   r9  rs   r   rw  r  s      r   test_pid_oneprocessz/TestDefaultControllerPlugin.test_pid_oneprocess  sx    u%&**335;;=tD..0C0K0KLr   c                    | j                         }|j                  j                  }d }||j                  j                  _        |j                  d      }| j                  |d        | j                  |j                  j                  j                         j                         d       | j                  |j                  j                  t        j                         y )Nc                  <    ddl m} ddd|j                  ddddddd
S )Nr   rY  r  rs  rm   r]  r^  )rj  rZ  rs  rl  s      r   rq   zFTestDefaultControllerPlugin.test_pid_oneprocess_not_running.<locals>.f  s3    7!"+33"+!##4
 
r   r  0)r   r   r   r[   r\   getProcessInfor  r   r^   r_   r9  rs   r   r   )r   r   r   rq   r'   s        r   test_pid_oneprocess_not_runningz;TestDefaultControllerPlugin.test_pid_oneprocess_not_running
  s    **$$	 56""1u%&**335;;=sC..,88	:r   c                     | j                         }d |j                  _        g fd}||j                  j                  j                  j
                  _        |j                  d       | j                  g        y )Nc                       yr   r@   r@   r   r   rY   zETestDefaultControllerPlugin.test_pid_upcheck_failed.<locals>.<lambda>#  rZ   r   c                  (    j                  d       y r3   r@  rB  s     r   rq   z>TestDefaultControllerPlugin.test_pid_upcheck_failed.<locals>.f%  rD  r   rm   )	r   r   rS   r   r[   r\   r  r  r   rF  s      @r   test_pid_upcheck_failedz3TestDefaultControllerPlugin.test_pid_upcheck_failed!  s^    *

	 78

""--4b$r   c                     | j                         }|j                          |j                  j                  j	                         }| j                  d|v        y )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                 \   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         }| j                  |j                  d      |       | j                  |j                  j                  t        j                         y )Nr  zError: too manyr   do_maintailr   r   r^   r_   rF   rI  rs   r   rt   rJ  s       r   test_maintail_toomanyargsz5TestDefaultControllerPlugin.test_maintail_toomanyargs1  s~    ##I.&jj((*'893?..0C0K0KLr   c                 \   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         }| j                  |j                  d      |       | j                  |j                  j                  t        j                         y )Nz-wrongzError: bad argument -wrongr5  rJ  s       r    test_maintail_minus_string_failsz<TestDefaultControllerPlugin.test_maintail_minus_string_fails9  s~    ##H-&jj((*'CDcJ..0C0K0KLr   c                 \   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         }| j                  |j                  d      |       | j                  |j                  j                  t        j                         y )NwrongzError: bad argument wrongr5  rJ  s       r   test_maintail_wrongz/TestDefaultControllerPlugin.test_maintail_wrongA  s~    ##G,&jj((*'BCSI..0C0K0KLr   c                    | j                         }t               |_        |j                  d      }| j	                  |d        |j                  j
                  }| j	                  t        |      d       |d   }| j	                  |j                  j                  d       | j	                  |d   d       | j                  d|d   v        y )Nr  r   r   z"http://localhost:65532/mainlogtailzCannot connect)	r   DummyListenerlistenerr6  r   errorsr   r:   rF   )r   r   r'   r@  rz   s        r   _dont_test_maintail_dashfz5TestDefaultControllerPlugin._dont_test_maintail_dashfI  s     '/##D)&''Va(q	//=	?q=	?(E!H45r   c                 b   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  |d   d       | j                  |j                  j                  t        j                         y )Nz-zr  r   r!  )
r   r6  r   r   r^   r_   r  rs   r   rt   r  s       r   test_maintail_bad_modifierz6TestDefaultControllerPlugin.test_maintail_bad_modifierZ  s    ##D)&

!!**,2248q#;<..0C0K0KLr   c                     | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       y )Nrm   mainlogdata
r   r6  r   r   r^   r_   r  s      r   test_maintail_nobytesz1TestDefaultControllerPlugin.test_maintail_nobytesb  sP    ##B'&**335Gr   c                     | j                         }|j                  d      }| j                  |d        | j                  |j                  j                  j                         d       y )N-100rE  rF  r  s      r   test_maintail_dashbytesz3TestDefaultControllerPlugin.test_maintail_dashbytesh  sP    ##F+&**335Gr   c                    | j                         }|j                  j                         }ddlm} |j
                  j                  |_        |j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr   r   rI  z!supervisord: ERROR (no log file)
)r   r   r   r\   r   rc   r)  _readlog_errorr6  r   r^   r_   rs   r   rt   r   r   supervisor_rpcr   r'   s        r   "test_maintail_readlog_error_nofilez>TestDefaultControllerPlugin.test_maintail_readlog_error_nofilen  s    224%(.(=(=%##F+&**335=	?..0C0K0KLr   c                    | j                         }|j                  j                         }ddlm} |j
                  j                  |_        |j                  d      }| j                  |d        | j                  |j                  j                  j                         d       | j                  |j                  j                  t        j                         y )Nr   r   rI  z/supervisord: ERROR (unknown error reading log)
)r   r   r   r\   r   rc   rn   rL  r6  r   r^   r_   rs   r   rt   rM  s        r   "test_maintail_readlog_error_failedz>TestDefaultControllerPlugin.test_maintail_readlog_error_failedy  s    224%(.(<(<%##F+&**335K	M..0C0K0KLr   c                     | j                         }d |j                  _        g fd}||j                  j                  j                  j
                  _        |j                  d       | j                  g        y )Nc                       yr   r@   r@   r   r   rY   zJTestDefaultControllerPlugin.test_maintail_upcheck_failed.<locals>.<lambda>  rZ   r   c                  (    j                  d       y r3   r@  rB  s     r   rq   zCTestDefaultControllerPlugin.test_maintail_upcheck_failed.<locals>.f  rD  r   rm   )	r   r   rS   r   r[   r\   readLogr6  r   rF  s      @r   test_maintail_upcheck_failedz8TestDefaultControllerPlugin.test_maintail_upcheck_failed  s`    *

	 89

""--52$r   c                     | j                         }|j                          |j                  j                  j	                         }| j                  d|v        y )Nzfg <process>)r   help_fgr   r^   r_   rF   rJ  s      r   test_fg_helpz(TestDefaultControllerPlugin.test_fg_help  s@    jj((*#-.r   c                 b   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         j                  d      }| j                  |d   d       | j                  |j                  j                  t        j                         y )Nrm   r  r   zERROR: no process name supplied
r   do_fgr   r   r^   r_   r  rs   r   rt   r  s       r   test_fg_too_few_argsz0TestDefaultControllerPlugin.test_fg_too_few_args  s    b!&

!!**,2248q#DE..0C0K0KLr   c                 >   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         }| j                  |d       | j                  |j                  j                  t        j                         y )Nr  z'ERROR: too many process names supplied
	r   r\  r   r   r^   r_   rs   r   rt   r   r   r'   r,   s       r   test_fg_too_many_argsz1TestDefaultControllerPlugin.test_fg_too_many_args  su    i(&zz  ))+IJ..0C0K0KLr   c                 >   | j                         }|j                  d      }| j                  |d        |j                  j                  j                         }| j                  |d       | j                  |j                  j                  t        j                         y )Nr/  z!ERROR: bad process name supplied
r_  r`  s       r   test_fg_badprocnamez/TestDefaultControllerPlugin.test_fg_badprocname  su    j)&zz  ))+CD..0C0K0KLr   c                    | j                         }|j                  d      }| j                  |d        |j                  j                  j                         }| j                  |d       |j                  d      }|j                  j                  j                         j                  d      }| j                  |d        | j                  |d   d       | j                  |j                  j                  t        j                         y )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$&zz  ))+=>h'

!!**,2248&r$@A..0C0K0KLr   c                     | j                         }d |j                  _        g fd}||j                  j                  j                  j
                  _        |j                  d       | j                  g        y )Nc                       yr   r@   r@   r   r   rY   zDTestDefaultControllerPlugin.test_fg_upcheck_failed.<locals>.<lambda>  rZ   r   c                  (    j                  d       y r3   r@  rB  s     r   rq   z=TestDefaultControllerPlugin.test_fg_upcheck_failed.<locals>.f  rD  r   r  )	r   r   rS   r   r[   r\   r+  r\  r   rF  s      @r   test_fg_upcheck_failedz2TestDefaultControllerPlugin.test_fg_upcheck_failed  s^    *

	 ?@

""--<U$r   c                     | j                         }|j                          |j                  j                  j	                         }| j                  d|v        y NzExit the supervisor shell)r   	help_exitr   r^   r_   rF   rJ  s      r   test_exit_helpz*TestDefaultControllerPlugin.test_exit_help  C    jj((*3s:;r   c                     | j                         }|j                          |j                  j                  j	                         }| j                  d|v        y 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-  r0  r2  r4  r7  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2MMM022M%0%89BS@OSMS	SOOO/RMMMMQQ+MMMR	Q
%.MMMMMMMMMM
%>MMMMMQ3MMMM
%1MM	Q
%/MMMMM	M
%-MMMA
M%AGFMCMEM
MM M M,MMM	M	MM+&9'MM
M-MMMMM
M3MMM
?	<
=B@3=j'BR
3-MMMM:.%CMMM6"MHH	M	M%/MMM
M%<<r   r  c                       e Zd Zd Zd Zd Zy)r>  c                     g | _         y r   )r@  r;   s    r   __init__zDummyListener.__init__  s	    r   c                 >    | j                   j                  ||f       y r   )r@  rA  )r   urlr  s      r   rz   zDummyListener.error  s    C:&r   c                     || _         y r   r9   )r   rx  s     r   r<   zDummyListener.close  s	    r   N)r=   r>   r?   rv  rz   r<   r@   r   r   r>  r>    s    'r   r>  c                       e Zd Zd Zd Zy)DummyPluginFactoryc                     || _         y r   r   )r   r   rp   s      r   rv  zDummyPluginFactory.__init__  s	    r   c                 N    | j                   j                  j                  d       y )Nr   )r   r^   writer   ro   s     r   r   zDummyPluginFactory.do_help  s    l+r   Nr=   r>   r?   rv  r   r@   r   r   r{  r{    s    ,r   r{  c                       e Zd Zd Zd Zy)r   c                     d| _         d| _        d| _        d| _        d | _        d| _        t               | _        d| _        dt        i fg| _
        y )Nr\   zhttp://localhost:65532chrism123r@   Fdummy)rO   	serverurlusernamepasswordhistory_filer   r	   r[   interactiver{  plugin_factoriesr;   s    r   rv  zDummyClientOptions.__init__  sR    "1  %' ")+=r!B Cr   c                     | j                   S r   )r[   r;   s    r   r   z!DummyClientOptions.getServerProxy  s    ||r   N)r=   r>   r?   rv  r   r@   r   r   r   r     s    	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
y)r   zno help on %sc                 h    || _         g | _        t               | _        t        j
                  | _        y r   )r   r  r   r^   r   rw  rs   rM   s     r   rv  zDummyController.__init__  s'     j-55r   c                      yr3   r@   r;   s    r   rS   zDummyController.upcheck  s    r   c                 $    | j                  d      S )Nr\   )r   r;   s    r   r   zDummyController.get_supervisor  s    $$\22r   Nc                 V    | j                   j                         }||S t        ||      S r   )r   r   getattr)r   	namespacer   s      r   r   z DummyController.get_server_proxy  s,    ++-L5),,r   c                 @    | j                   j                  |dz          y )Nr  )r^   r  )r   datas     r   r   zDummyController.output  s    $+&r   c                 B    | j                   j                  ||||f       y r   )r  rA  )r   doc_headerscmds_docrowscolss        r   print_topicszDummyController.print_topics  s    ""K4#FGr   c                     ddl m} ||t        j                  j                  fv ry ||v rt
        j                  | _        y t
        j                  | _        y )Nr   )DEAD_PROGRAM_FAULTS)	r   r  r   rc   rw  r   r   rs   rt   )r   	faultcodeignored_faultcoder  s       r    set_exitstatus_from_xmlrpc_faultz0DummyController.set_exitstatus_from_xmlrpc_fault  sC    @*FMM,A,ABB--1==DO199DOr   r   )r=   r>   r?   r   rv  rS   r   r   r   r  r  r@   r   r   r   r     s+    F63-'H:r   r   c                       e Zd ZddZd Zy)r   Nc                     || _         y r   r}  )r   rQ   s     r   rv  zDummyPlugin.__init__  s	    r   c                     d| _         y r3   )r   r  s     r   r   zDummyPlugin.do_help  s	    r   r   r  r@   r   r   r   r     s    r   r   c                  V    t        j                  t        j                  t                 S r   )unittestfindTestCasessysmodulesr=   r@   r   r   
test_suiter    s    !!#++h"7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     s    
   & ' O 0=3X&& =3~ph'' pf<x00 <>r<("3"3 r<h/ , , ": ":H 9 zHMMl+ r   