
    1c                         d Z dZddlZddlmZ ddlmZ 	 ddlmZmZm	Z	 	 ddlmZ  G d d      Z G d	 d
      Z G d d      Z G d d      Z G d d      Z G d d      Zej$                   G d de             Z G d d      Zd?dZd@dZ G d d      Z G d d      Z G d d      Z G d d e      Z G d! d"      Z G d# d$      Z G d% d&      Z G d' d(      Z G d) d*      Z  G d+ d,e       Z!ej$                   G d- d.e             Z" G d/ d0e"      Z# G d1 d2e      Z$ G d3 d4      Z% G d5 d6      Z& G d7 d8      Z' G d9 d:      Z(d; Z)d< Z*d= Z+d> Z,y# e
$ r ddlmZmZm	Z	 Y Lw xY w# e
$ r ddlZY Uw xY w)AipDz%b %d %I:%M %p    NFault)as_bytes)Mockpatchsentinelc                   2   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.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.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) Z1d* Z2d/d+Z3d, Z4d- Z5y)0DummyOptions      Nc                 B   d| _         d| _        d| _        | j                         | _        d| _        d| _        d| _        d| _        i | _	        g | _
        d| _        i | _        d| _        d| _        d | _        d| _        d| _        d| _        d| _        d| _        d| _        d | _        d| _        d| _        d| _        d | _        d| _        i | _        d | _        d | _        d | _        d	| _         d | _!        i | _"        i | _#        g | _$        d | _%        d| _&        d | _'        d | _(        d | _)        d| _*        d | _+        d
| _,        g | _-        g | _.        d | _/        d| _0        g | _1        g | _2        g | _3        d| _4        d| _5        d | _6        to        |       | _8        d| _9        y )N
supervisorz/tmp  
   z/tmp/logfileF   NNr   z/foo/bar zhttp://localhost:9001):
identifierchildlogdiruid	getLoggerloggerbackofflimitlogfile	nocleanup
strip_ansi
pidhistoryprocess_group_configsnodaemon
socket_mapmood
mustreopenrealizeargsfds_cleaned_up
rlimit_setsetuid_calledhttpservers_openedsignals_set
daemonizedmake_logger_messagesautochildlogdir_cleared
cleaned_uppidfile_written	directorywaitpid_returnkills_signalparent_pipes_closedchild_pipes_closedforkpidpgrp_setdupedwritten
fds_closed	_exitcodeexecve_called
execv_args
setuid_msgprivsdroppedlogs_reopenedwrite_accepttempfile_nameremovedexisting
openreturnreadfd_resultparse_criticalsparse_warningsparse_infos	serverurlchanged_directoryumasksetDummyPollerpollersilentselfs    7/usr/lib/python3/dist-packages/supervisor/tests/base.py__init__zDummyOptions.__init__#   s   &!nn&%%'"	#""' $(!',$$(
#' "&
" " '! 0!&!$'    c                 L    t               }t               g|_        ||f|_        |S N)DummyLoggerhandlersargs)rO   rW   kwr   s       rP   r   zDummyOptions.getLogger]   s$    &=/BhrR   c                      || _         || _        y rT   )r#   	realizekw)rO   rW   rX   s      rP   realizezDummyOptions.realizec   s    rR   c                      y rT    )rO   do_usages     rP   process_configzDummyOptions.process_configg       rR   c                     d| _         y NT)r$   rN   s    rP   cleanup_fdszDummyOptions.cleanup_fdsj   s
    "rR   c                 H    d| _         | j                  j                  d       y )NTrlimits_set)re   rG   appendrN   s    rP   set_rlimits_or_exitz DummyOptions.set_rlimits_or_exitm   s    .rR   c                 H    d| _         | j                  j                  d       y )NTr&   )r&   rE   rf   rN   s    rP   set_uid_or_exitzDummyOptions.set_uid_or_exitq   s    !##O4rR   c                     d| _         y rb   )r'   )rO   supervisords     rP   openhttpserverszDummyOptions.openhttpserversu   
    "&rR   c                     d| _         y rb   )r)   rN   s    rP   	daemonizezDummyOptions.daemonizex   	    rR   c                     d| _         y rb   )r(   rN   s    rP   
setsignalszDummyOptions.setsignals{   
    rR   c                     | j                   S rT   )r1   rN   s    rP   
get_signalzDummyOptions.get_signal~       ||rR   c                     | j                   S rT   )r    rN   s    rP   get_socket_mapzDummyOptions.get_socket_map   s    rR   c                      y rT   r]   rN   s    rP   make_loggerzDummyOptions.make_logger   r`   rR   c                     d| _         y rb   )r+   rN   s    rP   clear_autochildlogdirz"DummyOptions.clear_autochildlogdir   s
    '+$rR   c                     | j                   S rT   r@   )rO   ignoreds     rP   get_autochildlog_namez"DummyOptions.get_autochildlog_name       !!!rR   c                     d| _         y rb   )r,   rN   s    rP   cleanupzDummyOptions.cleanup   rp   rR   c                     d| _         y rb   )r-   rN   s    rP   write_pidfilezDummyOptions.write_pidfile   s
    #rR   c                     | j                   S rT   )r/   rN   s    rP   waitpidzDummyOptions.waitpid   s    """rR   c                 R    | j                   | j                   || j                  |<   y rT   )kill_exceptionr0   )rO   pidsigs      rP   killzDummyOptions.kill   s'    *%%%

3rR   c                 ,    dd l }|j                  |      S Nr   )osstat)rO   filenamer   s      rP   r   zDummyOptions.stat   s    wwx  rR   c                 
    g dS N)z/binz/usr/binz/usr/local/binr]   rN   s    rP   get_pathzDummyOptions.get_path       55rR   c                 *    dd l }|j                         S r   )r   getpid)rO   r   s     rP   get_pidzDummyOptions.get_pid   s    yy{rR   c                 *    |dk(  rddl m}  |d      y )Nz/bad/filenamer   )NotFoundzbad filename)supervisor.optionsr   )rO   r   argvstr   s        rP   check_execv_argszDummyOptions.check_execv_args   s    &3>** 'rR   c                 x    | j                   | j                   ddddd}|rd\  |d<   |d<   |S d	\  |d<   |d<   |S )
N      r      )child_stdinstdinstdoutchild_stdout)      stderrchild_stderrr   )make_pipes_exception)rO   r   pipess      rP   
make_pipeszDummyOptions.make_pipes   s`    $$0+++ !AAN5;2E(OU>2  6@2E(OU>2rR   c                     | j                   | j                   | j                  r|| j                     }| j                  j                  |d      }||z  }|| j                  |<   t	        |      S Nr   )write_exceptionr?   r7   
setdefaultlen)rO   fdcharsdatas       rP   writezDummyOptions.write   sj    +&&&$++,E||&&r2.R5zrR   c                 J    | j                   | j                   | j                  S rT   )fork_exceptionr4   rN   s    rP   forkzDummyOptions.fork   s$    *%%%||rR   c                 :    | j                   j                  |       y rT   )r8   rf   rO   r   s     rP   close_fdzDummyOptions.close_fd   s    r"rR   c                     || _         y rT   )r2   rO   r   s     rP   close_parent_pipeszDummyOptions.close_parent_pipes   s
    #( rR   c                     || _         y rT   )r3   r   s     rP   close_child_pipeszDummyOptions.close_child_pipes   s
    "'rR   c                     d| _         y rb   )r5   rN   s    rP   setpgrpzDummyOptions.setpgrp   	    rR   c                 "    || j                   |<   y rT   )r6   )rO   frmtos      rP   dup2zDummyOptions.dup2   s    

3rR   c                     || _         y rT   )r9   rO   codes     rP   _exitzDummyOptions._exit   s	    rR   c                 b    d| _         | j                  | j                  ||f| _        || _        y rb   )r:   execv_exceptionr;   execv_environment)rO   r   r   environments       rP   execvezDummyOptions.execve   s6    !+&&&#T*!,rR   c                 B    | j                   r| j                   S || _        y rT   )r<   r=   )rO   r   s     rP   drop_privilegeszDummyOptions.drop_privileges   s    ????"rR   c                     | j                   S rT   )rD   r   s     rP   readfdzDummyOptions.readfd   r   rR   c                     d| _         y rb   r>   rN   s    rP   
reopenlogszDummyOptions.reopenlogs   
    !rR   c                     | j                   S rT   r~   )rO   prefixsuffixdirs       rP   
mktempfilezDummyOptions.mktempfile   r   rR   c                 j    | j                   | j                   | j                  j                  |       y rT   )remove_exceptionrA   rf   rO   paths     rP   removezDummyOptions.remove   s,      ,'''D!rR   c                 "    || j                   v ryy)NTF)rB   r   s     rP   existszDummyOptions.exists   s    4== rR   c                 J    | j                   r| j                   S t        ||      S rT   )rC   open)rO   namemodes      rP   r   zDummyOptions.open   s     ????"D$rR   c                 B    | j                   | j                   d| _        y rb   )chdir_exceptionrI   )rO   r   s     rP   chdirzDummyOptions.chdir   s"    +&&&!%rR   c                     || _         y rT   )rJ   )rO   masks     rP   setumaskzDummyOptions.setumask   r   rR   )T)r)6__name__
__module____qualname__loglevelminfdsr   r   r   r   r   r   r   rQ   r   r[   r_   rc   rg   ri   rl   ro   rr   ru   rx   rz   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r]   rR   rP   r
   r
      s   HFONONO8t#/5' ,"$#
!6+

#)(- 
""""

 
&
rR   r
   c                   ^    e Zd ZdZd Zd ZexZxZxZxZ	xZ
Zd Zd Zd Zd Zd Zd	 Zd
 Zy)rU   Nc                 <    d| _         d| _        d| _        g | _        y NF)reopenedrA   closedr   rN   s    rP   rQ   zDummyLogger.__init__  s    	rR   c                 H    |r||z  }| j                   j                  |       y rT   r   rf   )rO   msgrX   s      rP   infozDummyLogger.info       (C		rR   c                 H    |r||z  }| j                   j                  |       y rT   r   )rO   levelr   rX   s       rP   logzDummyLogger.log  r   rR   c                 $    |j                          y rT   )close)rO   handlers     rP   
addHandlerzDummyLogger.addHandler  s    rR   c                     d| _         y rb   )r   rN   s    rP   reopenzDummyLogger.reopen  r   rR   c                     d| _         y rb   r   rN   s    rP   r  zDummyLogger.close  	    rR   c                     d| _         y rb   )rA   rN   s    rP   r   zDummyLogger.remove  	    rR   c                     d| _         y rb   )flushedrN   s    rP   flushzDummyLogger.flush  r  rR   c                 8    dj                  | j                        S r   )joinr   rN   s    rP   getvaluezDummyLogger.getvalue!  s    wwtyy!!rR   )r   r   r   r  rQ   r   warndebugcriticaltraceerrorblatherr  r  r  r  r   r  r  r]   rR   rP   rU   rU     sT    E 9=<D<5<8<e<eg
"rR   rU   c                       e Zd ZddZd Zy)DummySupervisorNc                     |t               | _        n|| _        |"ddlm} |j                  | j                  _        n|| j                  _        |i | _        y || _        y )Nr   )SupervisorStates)r
   optionssupervisor.supervisordr  RUNNINGr!   process_groups)rO   r  stater!  r  s        rP   rQ   zDummySupervisor.__init__%  sS    ?'>DL"DL=? 0 8 8DLL %DLL!"$D"0DrR   c                 .    | j                   j                  S rT   )r  r!   rN   s    rP   	get_statezDummySupervisor.get_state4  s    ||   rR   )NNN)r   r   r   rQ   r$  r]   rR   rP   r  r  $  s    1!rR   r  c                   D    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y)	DummySocketFNc                     || _         y rT   r   r   s     rP   rQ   zDummySocket.__init__>  s	    rR   c                     | j                   S rT   r(  rN   s    rP   filenozDummySocket.filenoA  s    wwrR   c                      d| _         || _        y rb   )bind_called	bind_addr)rO   addrs     rP   bindzDummySocket.bindD  s    rR   c                      d| _         || _        y rb   )listen_calledlisten_backlog)rO   backlogs     rP   listenzDummySocket.listenH  s    !%rR   c                     d| _         y rb   )close_calledrN   s    rP   r  zDummySocket.closeL  
     rR   c                      y)Nzdummy socketr]   rN   s    rP   __str__zDummySocket.__str__O  s    rR   )r   r   r   r,  r-  r1  r2  r6  rQ   r*  r/  r4  r  r9  r]   rR   rP   r&  r&  7  s9    KIMNL&!rR   r&  c                   2    e Zd ZddZd Zd Zd Zd Zd Zy)	DummySocketConfigc                 .    || _         || _        d| _        y )Nzunix:///sock)r   r3  url)rO   r   r3  s      rP   rQ   zDummySocketConfig.__init__S  s    !rR   c                      y)Nz
dummy addrr]   rN   s    rP   r.  zDummySocketConfig.addrX  s    rR   c                 4    | j                   |j                   k(  S rT   r(  rO   others     rP   __eq__zDummySocketConfig.__eq__[  s    ww%((""rR   c                 &    | j                  |       S rT   )rB  r@  s     rP   __ne__zDummySocketConfig.__ne__^  s    ;;u%%%rR   c                     | j                   S rT   )r3  rN   s    rP   get_backlogzDummySocketConfig.get_backloga  rv   rR   c                 ,    t        | j                        S rT   )r&  r   rN   s    rP   create_and_bindz!DummySocketConfig.create_and_bindd  s    477##rR   N)   )	r   r   r   rQ   r.  rB  rD  rF  rH  r]   rR   rP   r;  r;  R  s     "
#&$rR   r;  c                       e Zd Zd Zd Zd Zy)DummySocketManagerc                     || _         y rT   _config)rO   configkwargss      rP   rQ   zDummySocketManager.__init__h  s	    rR   c                     | j                   S rT   rM  rN   s    rP   rO  zDummySocketManager.configk  rv   rR   c                 @    t        | j                  j                        S rT   )r&  rN  r   rN   s    rP   
get_socketzDummySocketManager.get_socketn  s    4<<??++rR   N)r   r   r   rQ   rO  rS  r]   rR   rP   rK  rK  g  s    ,rR   rK  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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)DummyProcessNr   Fr   c                    || _         d| _        d| _        d| _        d | _        d| _        |ddlm} |j                  }|| _	        d| _
        d | _        d| _        t        d      | _        t        d      | _        t        d      | _        t        d      | _        t        d      | _        i | _        i | _        i | _        d | _        d| _        d | _        d | _        d | _        d| _        y )NFTr   ProcessStatesr   )rO  logsremovedstop_calledstop_report_calledbackoff_secsspawnedsupervisor.processrX  r   r"  error_at_clearkilled_withdrainedr   stdout_bufferstderr_bufferstdout_loggedstderr_loggedstdin_bufferr   rpipesdispatchersfinishedr>   execv_arg_exceptioninput_fd_drainedoutput_fd_drainedtransitioned)rO   rO  r"  rX  s       rP   rQ   zDummyProcess.__init__  s      "& =8!))E
#%b\%b\%b\%b\$RL
"#'  $!%!rR   c                     d| _         y rb   r   rN   s    rP   r   zDummyProcess.reopenlogs  r   rR   c                 @    | j                   rt        d      d| _        y )NwhateverT)r_  IOErrorrY  rN   s    rP   
removelogszDummyProcess.removelogs  s    *%%rR   c                     | j                   S rT   )r"  rN   s    rP   r$  zDummyProcess.get_state  s    zzrR   c                 N    d| _         d| _        ddlm} |j                  | _        y )NTFr   rW  )rZ  killingr^  rX  STOPPEDr"  rO   rX  s     rP   stopzDummyProcess.stop  s!    4"**
rR   c                     d| _         y rb   )r[  rN   s    rP   stop_reportzDummyProcess.stop_report  rm   rR   c                     || _         y rT   )r`  rO   signals     rP   r   zDummyProcess.kill  
    !rR   c                     || _         y rT   )sent_signalr|  s     rP   r}  zDummyProcess.signal  r~  rR   c                 @    d| _         ddlm} |j                  | _        y )NTr   rW  )r]  r^  rX  r   r"  rw  s     rP   spawnzDummyProcess.spawn  s    4"**
rR   c                     d| _         y rb   )ra  rN   s    rP   drainzDummyProcess.drain  r  rR   c                     g S rT   r]   rN   s    rP   readable_fdszDummyProcess.readable_fds  s    	rR   c                     | xj                   | j                  z  c_         d| _        | xj                  | j                  z  c_        d| _        y r   )rd  rb  re  rc  rN   s    rP   record_outputzDummyProcess.record_output  s@    d000d000rR   c                     ||f| _         y rT   )ri  )rO   r   stss      rP   finishzDummyProcess.finish  s    SrR   c                 2    ddl m} |j                  | _        y )Nr   rW  )r^  rX  FATALr"  rw  s     rP   give_upzDummyProcess.give_up  s    4"((
rR   c                     | j                   r| j                  d      dd l}|j                  | j                  j                        }|d   }||fS )Nrp  r   )rj  shlexsplitrO  command)rO   r  commandargsprograms       rP   get_execv_argszDummyProcess.get_execv_args  sK    ##**:66kk$++"5"56a.##rR   c                     || _         y rT   )rl  r   s     rP   drain_output_fdzDummyProcess.drain_output_fd  s
    !#rR   c                     || _         y rT   )rk  r   s     rP   drain_input_fdzDummyProcess.drain_input_fd  s
     "rR   c                 ^    | j                   | j                   | xj                  |z  c_        y rT   )r   rf  )rO   r   s     rP   r   zDummyProcess.write  s+    +&&&U"rR   c                     d| _         y rb   rm  rN   s    rP   
transitionzDummyProcess.transition  r7  rR   c                 \    | j                   j                  |j                   j                  k(  S rT   rO  priorityr@  s     rP   rB  zDummyProcess.__eq__  !    {{##u||'<'<<<rR   c                 \    | j                   j                  |j                   j                  k  S rT   r  r@  s     rP   __lt__zDummyProcess.__lt__  !    {{##ell&;&;;;rR   rT   )/r   r   r   r   r   	laststartlaststopdelayadministrative_stopsystem_stopru  backoff
waitstatus
exitstatusr   rg  rh  rd  re  spawnerrrb  rc  rf  listener_stategroupr  rQ   r   rr  r$  rx  rz  r   r}  r  r  r  r  r  r  r  r  r  r   r  rB  r  r]   rR   rP   rU  rU  q  s    O CIHEKGGJJEFKMMHMMLNEK":" 
+'""+
 !)$$##
!=<rR   rU  c                   J    e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZd Zd ZddZd Zy)	DummyPConfigNc                     || _         || _        || _        || _        || _        || _        |	| _        |
| _        || _        || _	        || _
        || _        || _        || _        || _        || _        || _        || _        || _        || _        || _        || _        |dd l} | j.                  }|| _        || _        || _        || _        || _        || _        || _        || _        d| _         || _!        y )Nr   F)"r  r   r  r  	autostartautorestart	startsecsstartretriesr   stdout_logfilestdout_capture_maxbytesstdout_events_enabledstdout_logfile_backupsstdout_logfile_maxbytesstdout_syslogstderr_logfilestderr_capture_maxbytesstderr_events_enabledstderr_logfile_backupsstderr_logfile_maxbytesstderr_syslogredirect_stderrr}  SIGTERM
stopsignalstopwaitsecsstopasgroupkillasgroup	exitcodesr   r.   umaskautochildlogs_createdrH   )!rO   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   rH   r}  s!                                    rP   rQ   zDummyPConfig.__init__  s
    	 "&"(,'>$%:"&<#'>$*,'>$%:"&<#'>$*.J$(&&"&"
%*""rR   c                 
    g dS r   r]   rN   s    rP   r   zDummyPConfig.get_path-  r   rR   c                     d| _         y rb   )r  rN   s    rP   create_autochildlogsz!DummyPConfig.create_autochildlogs0  s
    %)"rR   c                 *    t        |       }||_        |S rT   )rU  r  )rO   r  processs      rP   make_processzDummyPConfig.make_process3  s    t$rR   c                     | j                    }| j                  j                  |      }|d   |d   |d   }}}i }|t        d      ||<   |t        d      ||<   |t        d      ||<   ||fS )Nr   r   r   T)readable)writable)r  r  r   DummyDispatcher)rO   proc
use_stderrr   	stdout_fd	stderr_fdstdin_fdrh  s           rP   make_dispatcherszDummyPConfig.make_dispatchers8  s    ---
''
3(-hh(-g %)	 %4d%CK	" %4d%CK	"$3T$BK!E!!rR   )NNr   TTr   r   NNr   Fr   r   FNr   Fr   r   FFNr   FFr   NNrT   )r   r   r   rQ   r   r  r  r  r]   rR   rP   r  r    sF    EI)->AHI',CD$>?',CD$!&RW=A0#d6*
"rR   r  c                    dd l }dd l}dd l}|i }t        |       j	                         }|j
                  j                  |       d   }|j                  |d<   |j                         D ](  }|j                  d|j                         z  ||         }* |j                  |d      5 }|j                  }	|j                  |       d d d        |j                  	d       |	S # 1 sw Y   xY w)Nr   r   PYTHONz<<%s>>F)r   deletei  )r   systempfiler   readr   r  
executablekeysreplaceupperNamedTemporaryFiler   r   chmod)
filesubstitutionsr   r  r  r   lastkeyftmpnams
             rP   makeExecutabler  F  s    :??D77==q!D!nnM(!!# H||Hsyy{2M#4FGH 
	$	$D	$	? 1	 HHVUM	 s   %CC(c                     dd l }|j                  j                  t              }| s%t	        |j                  j                  |d            S t	        |j                  j                  |d            S )Nr   zfixtures/spew.pyzfixtures/unkillable_spew.py)r   r   dirname__file__r  r  )
unkillabler   heres      rP   makeSpewr  Z  sP    77??8$Dbggll41CDEE"'',,t-JKLLrR   c                       e Zd Zd Zd Zy)DummyMedusaServerLoggerc                     g | _         y rT   )loggedrN   s    rP   rQ   z DummyMedusaServerLogger.__init__b  s	    rR   c                 >    | j                   j                  ||f       y rT   )r  rf   )rO   categoryr   s      rP   r  zDummyMedusaServerLogger.logd  s    Hc?+rR   N)r   r   r   rQ   r  r]   rR   rP   r  r  a  s    ,rR   r  c                       e Zd Zd Zy)DummyMedusaServerc                 "    t               | _        y rT   )r  r   rN   s    rP   rQ   zDummyMedusaServer.__init__h  s    -/rR   Nr   r   r   rQ   r]   rR   rP   r  r  g  s    0rR   r  c                   $    e Zd Zd Zd Zd Zd Zy)DummyMedusaChannelc                 0    t               | _        d | _        y rT   )r  serverproducerrN   s    rP   rQ   zDummyMedusaChannel.__init__l  s    ')rR   c                     || _         y rT   )r  rO   r  s     rP   push_with_producerz%DummyMedusaChannel.push_with_producerp  s	     rR   c                      y rT   r]   rN   s    rP   close_when_donez"DummyMedusaChannel.close_when_dones  r`   rR   c                      y rT   r]   )rO   
terminators     rP   set_terminatorz!DummyMedusaChannel.set_terminatorv  r`   rR   N)r   r   r   rQ   r  r	  r  r]   rR   rP   r  r  k  s    !rR   r  c                   r    e Zd ZdZdZdZdZd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)DummyRequestGETNFz1.0c                     ||||f| _         g | _        i | _        g | _        g | _        t               | _        |i | _        y || _        y rT   )rW   	producersheadersheaderoutgoingr  channelenv)rO   r   paramsqueryfragmentr  s         rP   rQ   zDummyRequest.__init__~  sK    &%1	)+;DHDHrR   c                     | j                   S rT   )rW   rN   s    rP   	split_urizDummyRequest.split_uri  s    yyrR   c                     || _         y rT   )_errorr   s     rP   r  zDummyRequest.error  r  rR   c                 :    | j                   j                  |       y rT   )r  rf   r  s     rP   pushzDummyRequest.push  s    h'rR   c                 "    || j                   |<   y rT   r  )rO   r  values      rP   __setitem__zDummyRequest.__setitem__  s    $VrR   c                      | j                   |   S rT   r!  rO   r  s     rP   __getitem__zDummyRequest.__getitem__  s    ||F##rR   c                     | j                   |= y rT   r!  r%  s     rP   __delitem__zDummyRequest.__delitem__  s    LL rR   c                     || j                   v S rT   r!  r%  s     rP   has_keyzDummyRequest.has_key  s    %%rR   c                     || j                   v S rT   r!  )rO   items     rP   __contains__zDummyRequest.__contains__  s    t||##rR   c                     d| _         y rb   )_donerN   s    rP   donezDummyRequest.done  s	    
rR   c                      yr   r]   rN   s    rP   build_reply_headerzDummyRequest.build_reply_header      rR   c                      y rT   r]   )rO   argrX   s      rP   r  zDummyRequest.log  r`   rR   c                     | j                   S rT   )r  rN   s    rP   cgi_environmentzDummyRequest.cgi_environment  s    xxrR   c                      y)Nzhttp://example.comr]   rN   s    rP   get_server_urlzDummyRequest.get_server_url  s    #rR   rT   )r   r   r   r  r  r/  versionrQ   r  r  r  r#  r&  r(  r*  r-  r0  r2  r  r7  r9  r]   rR   rP   r  r  y  s\    GFEG
(%$!&$$rR   r  c                       e Zd Zd Zy)DummyRPCInterfaceFactoryc                      || _         || _        y rT   )rk   rO  )rO   rk   rO  s      rP   rQ   z!DummyRPCInterfaceFactory.__init__  s    &rR   Nr  r]   rR   rP   r<  r<    s    rR   r<  c                       e Zd Zd Zy)DummyRPCServerc                 @    t               | _        t               | _        y rT   )DummySupervisorRPCNamespacer   DummySystemRPCNamespacesystemrN   s    rP   rQ   zDummyRPCServer.__init__  s    57-/rR   Nr  r]   rR   rP   r?  r?    s    0rR   r?  c                       e Zd Zy)rB  N)r   r   r   r]   rR   rP   rB  rB    s    rR   rB  c                      e Zd ZdZdZdZdZddlmZ dddej                  de
dz
  dd	e
d
d
dddej                  de
dz
  e
dz
  de
dd
dddej                  de
dz
  e
dz
  d	e
dd
gZd ZeZd Zd Zd Z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"e"Z#e"Z$e"Z%d+ Z&d, Z'd- Z(d. Z)d/ Z*d0 Z+d1 Z,d2 Z-y3)4rA  TFr   rW  foo   r   d   r   zfoo description)
r   r  r   r"  	statenamestartrx  r  nowdescriptionbar   r  2   screwedzbar descriptionbaz_01baz   rv     zbaz descriptionc                      y)Nz3.0r]   rN   s    rP   getAPIVersionz)DummySupervisorRPCNamespace.getAPIVersion  s    rR   c                      y)N*   r]   rN   s    rP   getPIDz"DummySupervisorRPCNamespace.getPID  r3  rR   c                    ddl m} |dk(  r t        |j                  j                  d      |dk(  r t        |j                  j
                  d      |dk(  r t        |j                  j                  d      |dz   dz  }||d  S )Nr   xmlrpcBAD_NAMEFAILEDNO_FILEz line
r   )r   r\  r   Faultsr]  r^  r_  )rO   r  r   offsetlengthr\  as          rP   	_read_logz%DummySupervisorRPCNamespace._read_log  s}    %:..
;;X,,h77Y--y99y B&zrR   c                 *    | j                  d|||      S )Nr   rd  rO   r   ra  rb  s       rP   readProcessStdoutLogz0DummySupervisorRPCNamespace.readProcessStdoutLog      ~~hff==rR   c                 *    | j                  d|||      S )Nr   rf  rg  s       rP   readProcessStderrLogz0DummySupervisorRPCNamespace.readProcessStderrLog  ri  rR   c                     | j                   S rT   )all_process_inforN   s    rP   getAllProcessInfoz-DummySupervisorRPCNamespace.getAllProcessInfo  s    $$$rR   c                 ,   ddl m} | j                  D ]  }|d   |k(  s|}|c S  |dk(  r t        |j                  j
                  d      |dk(  r t        |j                  j                  d      |dk(  r t        |j                  j                  d      y )Nr   r[  r   r]  r^  r_  )r   r\  rm  r   r`  r]  r^  r_  )rO   r   r\  ir   s        rP   getProcessInfoz*DummySupervisorRPCNamespace.getProcessInfo  s    %&& 	Ay$	 :..
;;8,,h779--y99 rR   c                    ddl m} |dk(  r t        |j                  j                  d      |dk(  r t        |j                  j                  d      |dk(  r t        |j                  j
                  d      |dk(  r t        |j                  j                  d      |dk(  r t        |j                  j                  d      |dk(  r t        |j                  j                  d      |d	k(  r t        |j                  j                  d	      y
)Nr   r[  BAD_NAME:BAD_NAMEr]  r_  NOT_EXECUTABLEALREADY_STARTEDSPAWN_ERRORABNORMAL_TERMINATIONT)
r   r\  r   r`  r]  r_  rt  ru  rv  rw  rO   r   r\  s      rP   startProcessz(DummySupervisorRPCNamespace.startProcess  s    %&&..0CDD:..
;;9--y99##446FGG$$557HII= 11=AA))::.0 0rR   c                     ddl m} ddlm} |dk(  r ||j                  j
                  d      dd|j                  j                  ddd	d|j                  j                  ddgS 
Nr   r[  r   r]  foo_00rF  OKr   r  statusrL  foo_01r   r\  supervisor.compatr   r`  r]  SUCCESSrO   r   r\  r   s       rP   startProcessGroupz-DummySupervisorRPCNamespace.startProcessGroup+  g    %+:..
;;e}},, " emm++ "	 	rR   c                     ddl m} dd|j                  j                  dddd|j                  j                  dddd|j                  j                  d	dgS )
Nr   r[  rF  r}  r~  foo2failedfailed_grouprv  )r   r\  r`  r  rv  rO   r\  s     rP   startAllProcessesz-DummySupervisorRPCNamespace.startAllProcesses9  sa    %5}},, " Fmm++ " nmm//(*
 
	rR   c                     ddl m} ddlm} |dk(  r ||j                  j
                  d      dd|j                  j                  ddd	d|j                  j                  ddgS r{  r  r  s       rP   stopProcessGroupz,DummySupervisorRPCNamespace.stopProcessGroupG  r  rR   c                 8   ddl m} |dk(  r t        |j                  j                  d      |dk(  r t        |j                  j                  d      |dk(  r t        |j                  j
                  d      |dk(  r t        |j                  j                  d      y)Nr   r[  rs  r]  NOT_RUNNINGr^  T)r   r\  r   r`  r]  r  r^  rx  s      rP   stopProcessz'DummySupervisorRPCNamespace.stopProcessU  s    %&&..0CDD:..
;;= 11=AA8,,h77rR   c                     ddl m} dd|j                  j                  dddd|j                  j                  dddd|j                  j                  d	dgS 
Nr   r[  rF  r}  r~  r  r  r  r^  r   r\  r`  r  r]  r  s     rP   stopAllProcessesz,DummySupervisorRPCNamespace.stopAllProcessesb  s_    %%}},, " Fmm++4Anmm,,#%	 		rR   c                 v    | j                   rd| _        y ddlm} t	        |j
                  j                  d      NTr   r[  r   )_restartable
_restartedr   r\  r   r`  SHUTDOWN_STATEr  s     rP   restartz#DummySupervisorRPCNamespace.restarto  s/    "DO%FMM00"55rR   c                 v    | j                   rd| _        y ddlm} t	        |j
                  j                  d      r  )r  	_shutdownr   r\  r   r`  r  r  s     rP   shutdownz$DummySupervisorRPCNamespace.shutdownv  s/    !DN%FMM00"55rR   c                     dgdgdgggS )NaddedchangedrA   r]   rN   s    rP   reloadConfigz(DummySupervisorRPCNamespace.reloadConfig}  s    YK)566rR   c                    ddl m} |dk(  r t        |j                  j                  d      |dk(  r t        |j                  j
                  d      |dk(  r t        |j                  j                  d      |dk(  r t        |j                  j                  d      t        | d      r| j                  j                  |       y |g| _	        y )	Nr   r[  ALREADY_ADDEDr   r]  r^  r  	processes)r   r\  r   r`  r  r]  r^  r  hasattrr  rf   rx  s      rP   addProcessGroupz+DummySupervisorRPCNamespace.addProcessGroup  s    %?"33R88:..338,,b11##44b994%NN!!$'"VDNrR   c                 $   ddl m} |dk(  r t        |j                  j                  d      |dk(  r t        |j                  j
                  d      |dk(  r t        |j                  j                  d      | j                  j                  |       y )Nr   r[  STILL_RUNNINGr   r]  r^  )	r   r\  r   r`  r  r]  r^  r  r   rx  s      rP   removeProcessGroupz.DummySupervisorRPCNamespace.removeProcessGroup  st    %?"33R88:..338,,b11d#rR   c                 Z    ddl m} |dk(  r t        |j                  j                  d      y)Nr   r[  r]  T)r   r\  r   r`  r]  rx  s      rP   clearProcessStdoutLogz1DummySupervisorRPCNamespace.clearProcessStdoutLog  s'    %:..
;;rR   c                     ddl m} dd|j                  j                  dddd|j                  j                  dddd|j                  j                  d	dgS r  )r   r\  r`  r  r^  r  s     rP   clearAllProcessLogsz/DummySupervisorRPCNamespace.clearAllProcessLogs  sd    %mm++ " mm++ " #mm**#% 	rR   c                     t        d      )Nr  
ValueErrorrN   s    rP   
raiseErrorz&DummySupervisorRPCNamespace.raiseError  s    !!rR   c                 
    dd iS )Nr  r]   rN   s    rP   getXmlRpcUnmarshallablez3DummySupervisorRPCNamespace.getXmlRpcUnmarshallable  s     $''rR   c                      y)N3000r]   rN   s    rP   getSupervisorVersionz0DummySupervisorRPCNamespace.getSupervisorVersion  s    rR   c                 H    | j                   rt        | j                   d      y)Nr   mainlogdata)_readlog_errorr   )rO   whencera  s      rP   readLogz#DummySupervisorRPCNamespace.readLog  s!    ++R00rR   c                     ddl m} |dk(  r t        |j                  j                  d      dd|j                  j
                  dddd|j                  j
                  ddgS )	Nr   r[  r]  r|  rF  r}  r~  r  )r   r\  r   r`  r]  r  rO   r   r}  r\  s       rP   signalProcessGroupz.DummySupervisorRPCNamespace.signalProcessGroup  sf    %:..
;;}},, " mm++ "	 		rR   c                    ddl m} |dk(  r t        |j                  j                  d      |dk(  r t        |j                  j
                  d      |dk(  r t        |j                  j
                  d      |dk(  r t        |j                  j                  d      |dk(  r t        |j                  j                  d      y)	Nr   r[  
BAD_SIGNALrs  r]  r  r^  T)r   r\  r   r`  r  r]  r  r^  r  s       rP   signalProcessz)DummySupervisorRPCNamespace.signalProcess  s    %\!00,??&&..0CDD:..
;;= 11=AA8,,h77rR   c                     ddl m} dd|j                  j                  dddd|j                  j                  dddd|j                  j                  d	dgS r  r  )rO   r}  r\  s      rP   signalAllProcessesz.DummySupervisorRPCNamespace.signalAllProcesses  sd    %}},, " mm++ " #mm,,#% 	rR   N).r   r   r   r  r  r  r  r^  rX  r   _NOWr  rv  rm  rV  
getVersionrY  rd  rh  readProcessLogrk  rn  rq  ry  r  r  r  r  r  r  r  r  r  r  r  clearProcessLogclearProcessStderrLogclearProcessLogsr  r  r  r  r  r  r  r  r]   rR   rP   rA  rA    s_   LJIN 1 %%s
'	
 ##s
by'	
 %%s
by'	
3%
N J	>)N>%:&667$$ ,O1,""(
rR   rA  c                   &    e Zd ZddZd Zd Zd Zy)DummyPGroupConfigNc                 n    || _         || _        || _        |g }|| _        d| _        g | _        d| _        y )NFr   )r  r   r  process_configsafter_setuid_calledpool_eventsbuffer_size)rO   r  r   r  pconfigss        rP   rQ   zDummyPGroupConfig.__init__  sB    	 H'#( rR   c                     d| _         y rb   )r  rN   s    rP   after_setuidzDummyPGroupConfig.after_setuid  s
    #' rR   c                     t        |       S rT   )DummyProcessGrouprN   s    rP   
make_groupzDummyPGroupConfig.make_group   s     &&rR   c                 T    d| j                   dt        |       d| j                  dS )N<z instance at z named >)	__class__idr   rN   s    rP   __repr__zDummyPGroupConfig.__repr__  s     15D15< 	<rR   )rp  r   N)r   r   r   rQ   r  r  r  r]   rR   rP   r  r    s    	('<rR   r  c                   (    e Zd Zddd ed      fdZy)DummyFCGIGroupConfigrp  r   Nr   c                 D    t         j                  | ||||       || _        y rT   )r  rQ   socket_config)rO   r  r   r  r  r  s         rP   rQ   zDummyFCGIGroupConfig.__init__  s     ""4$(K*rR   )r   r   r   r;  rQ   r]   rR   rP   r  r    s    %/#\mno\p +rR   r  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)r  c                 X    || _         d| _        d| _        i | _        g | _        d| _        y r   )rO  rm  all_stoppedrh  unstopped_processesbefore_remove_calledrO   rO  s     rP   rQ   zDummyProcessGroup.__init__  s1    ! #% $)!rR   c                     d| _         y rb   r  rN   s    rP   r  zDummyProcessGroup.transition  r7  rR   c                     d| _         y rb   )r  rN   s    rP   before_removezDummyProcessGroup.before_remove  s
    $(!rR   c                     d| _         y rb   )r  rN   s    rP   stop_allzDummyProcessGroup.stop_all  rs   rR   c                     | j                   S rT   )r  rN   s    rP   get_unstopped_processesz)DummyProcessGroup.get_unstopped_processes  s    '''rR   c                     | j                   S rT   )rh  rN   s    rP   get_dispatchersz!DummyProcessGroup.get_dispatchers"  s    rR   c                 \    | j                   j                  |j                   j                  k  S rT   r  r@  s     rP   r  zDummyProcessGroup.__lt__%  r  rR   c                 \    | j                   j                  |j                   j                  k(  S rT   r  r@  s     rP   rB  zDummyProcessGroup.__eq__(  r  rR   c                     d| _         y rb   r   rN   s    rP   r   zDummyProcessGroup.reopenlogs+  r   rR   N)r   r   r   rQ   r  r  r  r  r  r  rB  r   r]   rR   rP   r  r    s/    *!) ( <="rR   r  c                       e Zd Zd Zy)DummyFCGIProcessGroupc                 d    t         j                  | |       t        |j                        | _        y rT   )r  rQ   rK  r  socket_managerr  s     rP   rQ   zDummyFCGIProcessGroup.__init__0  s%    ""4001E1EFrR   Nr  r]   rR   rP   r  r  .  s    GrR   r  c                        e Zd Zd ZddZd Zy)PopulatedDummySupervisorc                     t         j                  | |       i | _        i }|| _        t	        |||      }t        |      }|| j                  |<   |D ]  }t        |      }|||j                  <    ||_        y )N)r  )	r  rQ   r!  
group_namer  r  rU  r   r  )	rO   r  r  r  r  gconfigpgrouppconfigr  s	            rP   rQ   z!PopulatedDummySupervisor.__init__5  s      w/ 	$#GZ(K"7+*0J' 	.G"7+G&-Igll#	. %rR   Nc                 r    || j                   }| j                  |   j                  |   }t        |||       y rT   )r  r!  r  setattr)rO   process_name	attr_namevalr  r  s         rP   set_procattrz%PopulatedDummySupervisor.set_procattrB  s8    J%%j1;;LIC(rR   c                     d| _         y rb   )reapedrN   s    rP   reapzPopulatedDummySupervisor.reapH  r  rR   rT   )r   r   r   rQ   r  r  r]   rR   rP   r  r  4  s    %)rR   r  c                   ^    e Zd ZdZdZdZdZdZdZdZ	dZ
ddZd Zd Zd Zd Zd Zd	 Zd
 Zy)r  NFc                 t     | _         | _        | _        d _        |r fd}| _         fd}| _        y y )Nr   c                      d _         y rb   r   rN   s   rP   r   z,DummyDispatcher.__init__.<locals>.reopenlogs]  s    %)"rR   c                      d _         y rb   )logs_removedrN   s   rP   rr  z,DummyDispatcher.__init__.<locals>.removelogs`  s    $(!rR   )	_readable	_writabler  input_bufferr   rr  )rO   r  r  r  r   rr  s   `     rP   rQ   zDummyDispatcher.__init__V  s@    !!*(DO)(DO rR   c                     | j                   S rT   )r  rN   s    rP   r  zDummyDispatcher.readabled      ~~rR   c                     | j                   S rT   )r  rN   s    rP   r  zDummyDispatcher.writablef  r  rR   c                 B    | j                   r| j                   d| _        y rb   )r  write_event_handledrN   s    rP   handle_write_eventz"DummyDispatcher.handle_write_eventh  s    ;;++#' rR   c                 B    | j                   r| j                   d| _        y rb   )r  read_event_handledrN   s    rP   handle_read_eventz!DummyDispatcher.handle_read_eventl  s    ;;++"&rR   c                     d| _         y rb   )error_handledrN   s    rP   handle_errorzDummyDispatcher.handle_errorp  r   rR   c                     d| _         y rb   r
  rN   s    rP   r  zDummyDispatcher.closer  r  rR   c                 B    | j                   r| j                   d| _        y rb   )flush_exceptionr  rN   s    rP   r  zDummyDispatcher.flusht  s    &&&rR   )FFF)r   r   r   r  r  r  r  r>   r  r   r  rQ   r  r  r  r  r  r  r  r]   rR   rP   r  r  K  sT    OMMLFG)('"rR   r  c                   :    e Zd Zd	dZd Zd Zd Zd
dZd Zd Z	y)DummyStreamNc                 J    || _         d| _        d| _        d| _        || _        y )NFrR   )r  r   r  r7   _fileno)rO   r  r*  s      rP   rQ   zDummyStream.__init__z  s%    
rR   c                 B    | j                   r| j                   d| _        y rb   )r  r   rN   s    rP   r  zDummyStream.close  s    ::**rR   c                 B    | j                   r| j                   d| _        y rb   )r  r  rN   s    rP   r  zDummyStream.flush  s    ::**rR   c                     | j                   r| j                   }d | _         || xj                  t        |      z  c_        y rT   )r  r7   r   )rO   r   r  s      rP   r   zDummyStream.write  s0    ::JJEDJK%rR   c                      y rT   r]   )rO   numr  s      rP   seekzDummyStream.seek  r`   rR   c                 ,    t        | j                        S rT   )r   r7   rN   s    rP   tellzDummyStream.tell  s    4<<  rR   c                     | j                   S rT   )r"  rN   s    rP   r*  zDummyStream.fileno  rv   rR   )Nr   r  )
r   r   r   rQ   r  r  r   r(  r*  r*  r]   rR   rP   r   r   y  s%    &!rR   r   c                       e Zd ZddZd Zy)
DummyEventc                     ||| _         y y rT   )serial)rO   r/  s     rP   rQ   zDummyEvent.__init__  s     DK rR   c                      y)Nzdummy eventr]   rN   s    rP   payloadzDummyEvent.payload  s    rR   N)abc)r   r   r   rQ   r1  r]   rR   rP   r-  r-    s    !rR   r-  c                   *    e Zd Zd Zd Zd Zd Zd Zy)rK   c                 $    g g f| _         d| _        y r   )resultr   )rO   r  s     rP   rQ   zDummyPoller.__init__  s    "frR   c                      y rT   r]   r   s     rP   register_readablezDummyPoller.register_readable  r`   rR   c                      y rT   r]   r   s     rP   register_writablezDummyPoller.register_writable  r`   rR   c                     | j                   S rT   )r5  )rO   timeouts     rP   pollzDummyPoller.poll  s    {{rR   c                     d| _         y rb   r
  rN   s    rP   r  zDummyPoller.close  r  rR   N)r   r   r   rQ   r7  r9  r<  r  r]   rR   rP   rK   rK     s    rR   rK   c                      y rT   r]   eventr5  s     rP   dummy_handlerrA    s    rR   c                     ddl m}  ||      )Nr   )RejectEvent)supervisor.dispatchersrC  )r@  r5  rC  s      rP   rejecting_handlerrE    s    2
f
rR   c                     t        |      rT   r  r?  s     rP   exception_handlerrG    s    
V
rR   c                     | j                  d      D cg c]  }|j                          }}dj                  |      S c c}w )N
)r  stripr  )sxstringss      rP   lstriprN    s7    "#''$-0Qqwwy0G099W 1s   >rT   )F)-r  _TIMEFORMAT	functoolsr  r   r   unittest.mockr   r   r   ImportErrormockr
   rU   r  r&  r;  rK  total_orderingobjectrU  r  r  r  r  r  r  r  r<  r?  rB  rA  r  r  r  r  r  r  r   r-  rK   rA  rE  rG  rN  r]   rR   rP   <module>rV     s    # &+33 i iV "  "D! !& 6$ $*, , F<6 F< F<PJ" J"X(M, ,0 0 6$6 6$r 
0 0
	 	p pd	< <,+, +
 " " "BG- G ., ,\ 8  "	S%  +**+
  s"   
E E0 E-,E-0	E=<E=