
    kcć                     X   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZ d dl
mZ d dl
mZ d dl
mZ d dl
mZ d d	l
mZ d d
lmZ 	 d dlZ G d de j*                        Z G d de j*                        Zd Zedk(  r e j4                  d       yy# e$ r dZY Pw xY w)    N)ProcessStates)SupervisorStates)DummyOptions)DummyPConfig)DummyPGroupConfig)DummyProcess)DummyProcessGroup)DummyDispatcher)StringIOc                   (    e Zd Zd Zerd Zd Zd Zy)EntryPointTestsc           	         ddl m} t        j                  j	                  t        j                  j                  t        j                  j                  t                    dd      }t               }d |_	        t        j                  }	 t        j                         }t        j                  j	                  |d      }t        j                  j	                  |d      }|t        _         |d|d	|d
|dgd       |t        _        t        j                  |       |j!                         }| j#                  d|v |       y # |t        _        t        j                         w xY w)Nr   mainfixturesdonothing.confc                       yN    r       C/usr/lib/python3/dist-packages/supervisor/tests/test_supervisord.py<lambda>z5EntryPointTests.test_main_noprofile.<locals>.<lambda>#       r   logpid-c-l-j-nTargstestzsupervisord startedsupervisor.supervisordr   ospathjoinabspathdirname__file__r   filenosysstdouttempfilemkdtempshutilrmtreegetvalue
assertTrue	selfr   conf
new_stdout
old_stdouttempdirr   r   outputs	            r   test_main_noprofilez#EntryPointTests.test_main_noprofile   s    /ww||GGOOBGGOOH56
 Z
%
ZZ
		#&&(G'',,w.C'',,w.C#CJtT4dC> $CJMM'"$$&-7@ $CJMM'"s   	A0D> >"E c           
         ddl m} t        j                  j	                  t        j                  j                  t        j                  j                  t                    dd      }t               }d |_	        t        j                  }	 t        j                         }t        j                  j	                  |d      }t        j                  j	                  |d      }|t        _         |d|d	|d
|ddgd       |t        _        t        j                  |       |j!                         }| j#                  d|v |       y # |t        _        t        j                         w xY w)Nr   r   r   r   c                       yr   r   r   r   r   r   z3EntryPointTests.test_main_profile.<locals>.<lambda>9   r   r   r   r   r   r   r   r    z"--profile_options=cumulative,callsTr!   zcumulative time, call countr$   r5   s	            r   test_main_profilez!EntryPointTests.test_main_profile3   s   377<< 9:J "D "J )JJ	'"**,ggll7E2ggll7E2'
4tS$T?AGKM (
g&((*FOO9VCVL (
g&s   	A1D? ?"E!c           	         ddl m} t        j                  j	                  t        j                  j                  t        j                  j                  t                    dd      }t               }d |_	        t        j                  }	 t        j                         }t        j                  j	                  |d      }t        j                  j	                  |d      }|t        _         |d|d	|d
|dgd       |t        _        t        j                  |       |j!                         }| j#                  t%        |      d       y # |t        _        t        j                         w xY w)Nr   r   r   r   c                       yr   r   r   r   r   r   z1EntryPointTests.test_silent_off.<locals>.<lambda>N   r   r   r   r   r   r   r   r    Tr!   )r%   r   r&   r'   r(   r)   r*   r+   r   r,   r-   r.   r/   r0   r1   r2   r3   assertGreaterlenr5   s	            r   test_silent_offzEntryPointTests.test_silent_offH   s    /ww||GGOOBGGOOH56
 Z
%
ZZ
	#&&(G'',,w.C'',,w.C#CJtT4dC>TJ#CJMM'"$$&3v;* $CJMM'"s   	A0E "E'c           
         ddl m} t        j                  j	                  t        j                  j                  t        j                  j                  t                    dd      }t               }d |_	        t        j                  }	 t        j                         }t        j                  j	                  |d      }t        j                  j	                  |d      }|t        _         |d|d	|d
|ddgd       |t        _        t        j                  |       |j!                         }| j#                  t%        |      d       y # |t        _        t        j                         w xY w)Nr   r   r   r   c                       yr   r   r   r   r   r   z0EntryPointTests.test_silent_on.<locals>.<lambda>c   r   r   r   r   r   r   r   r    z-sTr!   )r%   r   r&   r'   r(   r)   r*   r+   r   r,   r-   r.   r/   r0   r1   r2   r3   assertEqualrC   r5   s	            r   test_silent_onzEntryPointTests.test_silent_on]   s    /ww||GGOOBGGOOH56
 Z
%
ZZ
	#&&(G'',,w.C'',,w.C#CJtT4dCtD4P#CJMM'"$$&Va( $CJMM'"s   	A1E "E(N)__name__
__module____qualname__r<   pstatsr?   rD   rH   r   r   r   r   r      s    A* 	M*+*)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)y())SupervisordTestsc                     ddl m}  |        y )Nr   )clear)supervisor.eventsrP   )r6   rP   s     r   tearDownzSupervisordTests.tearDowns   s
    +r   c                     ddl m} |S )Nr   )
Supervisor)r%   rT   )r6   rT   s     r   _getTargetClassz SupervisordTests._getTargetClassw   s    5r   c                 .     | j                         |      S N)rU   )r6   optionss     r   _makeOnezSupervisordTests._makeOne{   s    %t##%g..r   c                    t               }t        |ddd      }t        |d|g      g}||_        d|_        d|_        | j                  |      }|j                          | j                  |j                  d       | j                  |j                  d       | j                  |j                  dg       | j                  |j                  g        | j                  |j                  dg       | j                  |j                  d       | j                  t        |j                         d	       | j                  |j                   d   j"                  j$                  |       | j                  |j&                  d       | j                  |j(                  d       | j                  |j*                  d       | j                  |j,                  d       | j                  |j.                  d       y )
Nfoo/bin/foo/tmppconfigsTFsetuid_calledrlimits_setr   )r   r   r   process_group_configsr#   firstrY   r   rG   fds_cleaned_upra   parse_criticalsparse_warningsparse_infosautochildlogdir_clearedrC   process_groupsconfigrX   httpservers_openedsignals_set
daemonizedpidfile_written
cleaned_upr6   rX   pconfiggconfigssupervisords        r   test_main_firstz SupervisordTests.test_main_first~   s   .wz6B%guyIJ(0%mmG,//7,,d300?2CD//4,,}o>88$?[778!<33E:AAII 	"33T:,,d3++T200$7++T2r   c                    t               }t        |ddd      }t        |d|g      g}||_        d|_        d|_        | j                  |      }|j                          | j                  |j                  d       | j                  t        |d             | j                  |j                  dg       | j                  |j                  g        | j                  |j                  g        | j                  |j                  d       | j                  t!        |j"                        d	       | j                  |j"                  d   j$                  j&                  |       | j                  |j(                  d       | j                  |j*                  d       | j                  |j,                  d       | j                  |j.                  d       | j                  |j0                  d       y )
Nr[   r\   r]   r^   TFra   r`   r   )r   r   r   rb   r#   rc   rY   r   rG   rd   assertFalsehasattrre   rf   rg   rh   rC   ri   rj   rX   rk   rl   rm   rn   ro   rp   s        r   test_main_notfirstz#SupervisordTests.test_main_notfirst   s   .wz6B%guyIJ(0%mmG,//6-8900?2CD//4,,b188$?[778!<33E:AAII 	"33T:,,d3++U300$7++T2r   c                     t               }d|_        t        |ddd      }t        |      }d|_        d|_        d |_        d|_        d|i|_        | j                  |      }|j                  d	       | j                  |j                  d       y )
Nr   r   processr\   r]   FTNNr   oncer   waitpid_returnr   r   drainedkillinglaststop
waitstatus
pidhistoryrY   reaprG   finishedr6   rX   rq   r{   rs   s        r   	test_reapzSupervisordTests.test_reap   s    .!%w	:vFw''[mmG,d#))51r   c                     t               }| j                  |      }|j                  dd      }| j                  |d        y )NTd   )r~   recursionguard)r   rY   r   rG   )r6   rX   rs   results       r   test_reap_recursionguardz)SupervisordTests.test_reap_recursionguard   s<    .mmG,!!tC!@&r   c                     t               }d|_        t        |ddd      }t        |      }d|_        d|_        d |_        d|_        d|i|_        | j                  |      }|j                  d	
       | j                  |j                  d       y )Nrz   r{   r\   r]   FTr|   r   c   )r   r   r   s        r   test_reap_more_than_oncez)SupervisordTests.test_reap_more_than_once   s    .!%w	:vFw''[mmG,+))51r   c                 r   t               }d|_        t        |ddd      }t        |      }d|_        d|_        d |_        d|_        d|i|_        | j                  |      }|j                  d	       | j                  |j                  d        | j                  |j                  j                  d
   d       y )N)   r   r{   r\   r]   FTr|   r   r}   r   z$reaped unknown pid 2 (exit status 0))r   r   r   r   r   r   r   r   r   rY   r   rG   r   loggerdatar   s        r   test_reap_unknown_pidz&SupervisordTests.test_reap_unknown_pid   s    .!%w	:vFw''\mmG,d#))40,,Q/?	Ar   c                 >   t               }t        j                  |_        | j	                  |      }|j                          | j                  |j                  j                  t        j                         | j                  |j                  j                  d   d       y )Nr   z(received SIGTERM indicating exit request)r   signalSIGTERM_signalrY   handle_signalrG   rX   moodr   SHUTDOWNr   r   r6   rX   rs   s      r   test_handle_sigtermz$SupervisordTests.test_handle_sigterm   v    . ..mmG,!!#,,11)22	4,,Q/C	Er   c                 >   t               }t        j                  |_        | j	                  |      }|j                          | j                  |j                  j                  t        j                         | j                  |j                  j                  d   d       y )Nr   z'received SIGINT indicating exit request)r   r   SIGINTr   rY   r   rG   rX   r   r   r   r   r   r   s      r   test_handle_sigintz#SupervisordTests.test_handle_sigint   sv    . --mmG,!!#,,11)22	4,,Q/B	Dr   c                 >   t               }t        j                  |_        | j	                  |      }|j                          | j                  |j                  j                  t        j                         | j                  |j                  j                  d   d       y )Nr   z(received SIGQUIT indicating exit request)r   r   SIGQUITr   rY   r   rG   rX   r   r   r   r   r   r   s      r   test_handle_sigquitz$SupervisordTests.test_handle_sigquit   r   r   c                    t               }t        j                  |_        | j	                  |      }| j                  |j                  j                  t        j                         |j                          | j                  |j                  j                  t        j                         | j                  |j                  j                  d   d       y )Nr   z*received SIGHUP indicating restart request)r   r   SIGHUPr   rY   rG   rX   r   r   RUNNINGr   
RESTARTINGr   r   r   s      r   #test_handle_sighup_in_running_statez4SupervisordTests.test_handle_sighup_in_running_state  s    . --mmG,,,11)11	3!!#,,11)44	6,,Q/E	Gr   c                    t               }t        j                  |_        | j	                  |      }t
        j                  |j                  _        | j                  |j                  j                  t
        j                         |j                          | j                  |j                  j                  t
        j                         | j                  |j                  j                  d   d       y )Nr   z@ignored SIGHUP indicating restart request (shutdown in progress))r   r   r   r   rY   r   r   rX   r   rG   r   r   r   r   s      r   $test_handle_sighup_in_shutdown_statez5SupervisordTests.test_handle_sighup_in_shutdown_state  s    . --mmG,#3#<#< ,,11)22	4!!#,,11)22	4,,Q/2	3r   c                 D   t               }t        j                  |_        | j	                  |      }|j                          | j                  |j                  j                  t        j                         d}| j                  |j                  j                  d   |v        y )N)z(received SIGCHLD indicating a child quitz'received SIGCLD indicating a child quitr   )r   r   SIGCHLDr   rY   r   rG   rX   r   r   r   r4   r   r   )r6   rX   rs   msgss       r   test_handle_sigchldz$SupervisordTests.test_handle_sigchld  sz    . ..mmG,!!#,,11)11	3;++A.$67r   c                    t               }t        j                  |_        t	        |ddd      }t        |t        j                        }t        j                         dz
  |_	        | j                  |      }t	        |ddd      g}t        |d|      |_        t        |      }d |i|_        |j                          | j!                  |j"                  j$                  t&        j(                         | j!                  |j*                  d       | j!                  |j,                  j.                  d	   d
       | j!                  |j*                  d       y )Nprocess1r\   r]   )stater   r[   r^   Tr   z.received SIGUSR2 indicating log reopen request)r   r   SIGUSR2r   r   r   r   STOPPINGtimedelayrY   r   rb   r	   ri   r   rG   rX   r   r   r   logs_reopenedr   r   )r6   rX   pconfig1r   rs   r_   dummypgroups          r   test_handle_sigusr2z$SupervisordTests.test_handle_sigusr2(  s   . ..ZH0F0FGqmmG, %VDE(9U)% (0&*;%7"!!#,,11)11	3..5,,Q/I	K22D9r   c                 >   t               }t        j                  |_        | j	                  |      }|j                          | j                  |j                  j                  t        j                         | j                  |j                  j                  d   d       y )Nr   z#received SIGUSR1 indicating nothing)r   r   SIGUSR1r   rY   r   rG   rX   r   r   r   r   r   r   s      r   test_handle_unknown_signalz+SupervisordTests.test_handle_unknown_signal=  sv    . ..mmG,!!#,,11)11	3,,Q/>	@r   c                     t               }| j                  |      }| j                  |j                         t        j
                         y rW   )r   rY   rG   	get_stater   r   r   s      r   test_get_statezSupervisordTests.test_get_stateG  s7    .mmG,..02B2J2JKr   c                 .   t               }| j                  |      }t        |ddd      }t        |d|g      }|g|j                  _        |j                         \  }}}| j                  ||g       | j                  |g        | j                  |g        y )Nr   r\   r]   group1r^   )r   rY   r   r   rX   rb   diff_to_activerG   )r6   rX   rs   rq   r   addedchangedremoveds           r   &test_diff_to_active_finds_groups_addedz7SupervisordTests.test_diff_to_active_finds_groups_addedL  s    .mmG,w
JG"7HyI 6<H1"-"<"<">w)"%"%r   c                    t               }| j                  |      }t        |ddd      }t        |d|g      }t        |ddd      }t        |d|g      }||g|j                  _        |j                  |       |j                  |       |g|j                  _        |j                         \  }}}| j                  |g        | j                  |g        | j                  ||g       y )	Nr   z/bin/process1r]   r   r^   process2z/bin/process2group2)	r   rY   r   r   rX   rb   add_process_groupr   rG   )	r6   rX   rs   rq   r   r   r   r   r   s	            r   (test_diff_to_active_finds_groups_removedz9SupervisordTests.test_diff_to_active_finds_groups_removed[  s    .mmG,w
OVL"7HyIw
OVL"7HyI 6<V4D1%%f-%%f- 6<H1"-"<"<">w#"%6(+r   c                 l   ddl mm t               | j	                        }fd}fd} |ddd      } |d|g      } |d	d	      } |d
|g      }||g} |ddd      } |d|g      } |d	d	      } |d
|g      }	|j                  |       |j                  |	       ||j                  _        |j                         \  }
}}| j                  |
g        | j                  |g        | j                  ||g       t               | j	                        } |dd      } |d	d	      } |d||g      }|g}|j                   |d|g             ||j                  _        |j                         \  }
}}| j                  |
g        | j                  |g        | j                  ||g       y )Nr   )ProcessConfigProcessGroupConfigc                     i d| d|dd dd ddddd	dd
ddddd dd dddddddddddd ddddddd ddddd d d}|j                  |        fi |S Nnamecommand	directoryumaskpriorityi  	autostartTautorestart	startsecs
   startretriesuidstdout_logfilestdout_capture_maxbytesr   stdout_events_enabledFstdout_logfile_backupsstdout_logfile_maxbytesstdout_syslogstderr_logfile)r   )stderr_capture_maxbytesstderr_events_enabledstderr_logfile_backupsstderr_logfile_maxbytesstderr_syslogredirect_stderr
stopsignalstopwaitsecsstopasgroupkillasgroup	exitcodesenvironment	serverurlupdate)r   r   paramsr   r   rX   s       r   make_pconfigzBSupervisordTests.test_diff_to_active_changed.<locals>.make_pconfigw  s   'T#*D2<cCNPT t &1" 7Ec t	 .t	 6OPQ	
 ( )! .G   !$ DE).*+!&#("B$$!$T!F$ MM&! 3F33r   c                      | d|      S )N   r   )r   r_   r   rX   s     r   make_gconfigzBSupervisordTests.test_diff_to_active_changed.<locals>.make_gconfig  s    %gtRBBr   r   new)r   r   r   r   old)
supervisor.optionsr   r   r   rY   r   rX   rb   r   rG   )r6   rs   r   r   rq   r   r   r   group3group4r   r   r   r   pconfig2r   r   rX   s                  @@@r   test_diff_to_active_changedz,SupervisordTests.test_diff_to_active_changedq  s   H.mmG,	4,	C z:5Ah	2z:6h	2vz:5Ah	2z:6h	2%%f-%%f-471"-"<"<">w#"%6(+.mmG,
J7
J7h8(<=h%%l8hZ&HI471"-"<"<">w#"%6(+r   c                    ddl m ddlmm t               | j                        }fd}fd}dfd	} |dd      } |d	      } |d
|g|      } |dd      } |d      } |d|g|      }||g}	 |dd      } |d	      } |d
|g|      }
 |dd      } |d      } |d|g|      }|j                  |
       |j                  |       |	|j                  _	        |j                         \  }}}| j                  |g        | j                  |g        | j                  ||g       t               | j                        } |dd      } |d	      } |d
|g|      } |dd      } |d      } |d|g|      }||g}	 |dd      } |d      } |d
|g|      }
 |dd      } |d      } |d|g|      }|j                  |
       |j                  |       |	|j                  _	        |j                         \  }}}| j                  |g        | j                  |g        | j                  ||g       t               | j                        } |dd      } |d	      } |d
|g|d      } |dd      } |d      } |d|g|      }||g}	 |dd      } |d	      } |d
|g|d      }
 |dd      } |d      } |d|g|      }|j                  |
       |j                  |       |	|j                  _	        |j                         \  }}}| j                  |g        | j                  |g        | j                  ||g       y )Nr   )
EventTypes)EventListenerConfigEventListenerPoolConfigc                     i d| d|dd dd ddddd	dd
ddddd dd dddddddddddd ddddddd ddddd d d}|j                  |        fi |S r   r   )r   r   r   r   r  rX   s       r   r   zPSupervisordTests.test_diff_to_active_changed_eventlistener.<locals>.make_pconfig  s   'T#*D2<cCNPT t &1" 7Ec t	 .t	 6OPQ	
 ( )! .G   !$ DE).*+!&#("B$$!$T!F$ MM&!&w9&99r   c                  R    g }| D ]  }|j                  t        |d                |S rW   )appendgetattr)pool_event_namesr   pool_event_namer  s      r   make_econfigzPSupervisordTests.test_diff_to_active_changed_eventlistener.<locals>.make_econfig  s3    F#3 Jgj/4HIJMr   c           	            | d|d||      S )Nr   r   r   )r   r_   pool_eventsresult_handlerr  rX   s       r   r   zPSupervisordTests.test_diff_to_active_changed_eventlistener.<locals>.make_gconfig  s    *7D"hKYghhr   r   zprocess1-newTICK_60r   r   	TICK_3600r   zprocess1-oldTICK_5znew-result-handlerzold-result-handler)z&supervisor.dispatchers:default_handler)rQ   r  r   r  r  r   rY   r   rX   rb   r   rG   )r6   rs   r   r  r   rq   econfigr   r   r   r   r   r   r   r   r  r  r  rX   s                  @@@@r   )test_diff_to_active_changed_eventlistenerz:SupervisordTests.test_diff_to_active_changed_eventlistener  s   0S.mmG,	:,		i z>:y)h	7;z:6{+h	7;vz>:y)h	7;z:6{+h	7;%%f-%%f-471"-"<"<">w#"%6(+ .mmG,z:6y)h	7;z:6{+h	7;vz:6x(h	7;z:6{+h	7;%%f-%%f-471"-"<"<">w#"%6(+ .mmG,z:6y)h	7<PQz:6{+h	7;vz:6y)h	7<PQz:6{+h	7;%%f-%%f-471"-"<"<">w#"%6(+r   c                 
   t               }t        |ddd      }t        |d|g      }|g|_        | j	                  |      }| j                  |j                  i        |j                  |      }| j                  t        |j                  j                               dg       | j                  |       |j                  d   }|j                  |      }| j                  ||j                  d          | j                  |        y )Nr[   r\   r]   r^   )r   r   r   rb   rY   rG   ri   r   listkeysr4   )r6   rX   rq   gconfigrs   r   groups          r   test_add_process_groupz'SupervisordTests.test_add_process_group/  s    .wz6B#GUgYG)0	%mmG,33R8..w7k88==?@5'J**51..w7 : :5 ABF
#r   c                 N   ddl m} g fd}|j                  |j                  |       t	               }t        |ddd      }t        |d|g      }|g|_        | j                  |      }|j                  |       d|_
        |j                          | j                  d	g       y )
Nr   eventsc                 (    j                  d       y r   r  eventLs    r   callbackzESupervisordTests.test_add_process_group_emits_event.<locals>.callbackD      HHQKr   r[   r\   r]   r^   Tr   )
supervisorr  	subscribeProcessGroupAddedEventr   r   r   rb   rY   r   r#   
runforeverrG   r6   r  r"  rX   rq   r  rs   r!  s          @r   "test_add_process_group_emits_eventz3SupervisordTests.test_add_process_group_emits_eventA  s    %	66A.wz6B#GUgYG)0	%mmG,%%g. QC r   c                    t               }t        |ddd      }t        |d|g      }| j                  |      }| j	                  t
        |j                  d       |j                  |       |j                  d   }|j                  d      }| j                  |j                         | j                  |j                  i        | j                  |       |j                  |       t        d       g|j                  d   _        |j                  d      }| j                  t        |j                  j                               dg       | j                  |        y )Nr[   r\   r]   r^   asdf)r   r   r   rY   assertRaisesKeyErrorremove_process_groupr   ri   r4   before_remove_calledrG   r   unstopped_processesr  r  )r6   rX   rq   r  rs   r  r   s          r   test_remove_process_groupz*SupervisordTests.test_remove_process_groupS  s   .wz6B#GUgYGmmG,(K$D$DfM%%g.**5111%822333R8%%g.AMdAS@T""5)=11%8k88==?@5'JF
#r   c                    ddl m} g fd}|j                  |j                  |       t	               }t        |ddd      }t        |d|g      }|g|_        | j                  |      }|j                  |       t        d       g|j                  d   _        |j                  d       d|_        |j                          | j!                  d	g       y )
Nr   r  c                 (    j                  d       y r   r  r  s    r   r"  zBSupervisordTests.test_remove_process_group_event.<locals>.callbackk  r#  r   r[   r\   r]   r^   Tr   )r$  r  r%  ProcessGroupRemovedEventr   r   r   rb   rY   r   r   ri   stopped_processesr.  r#   r'  rG   r(  s          @r   test_remove_process_group_eventz0SupervisordTests.test_remove_process_group_eventh  s    %	88(C.wz6B#GUgYG)0	%mmG,%%g.?KD?Q>R""5);((/ QC r   c                     ddl m} g fd}|j                  |j                  |       t	               }| j                  |      }d|_        |j                          | j                  dg       y )Nr   r  c                 (    j                  d       y r   r  r  s    r   r"  zNSupervisordTests.test_runforever_emits_generic_startup_event.<locals>.callback  r#  r   Tr   )	r$  r  r%  SupervisorStateChangeEventr   rY   r#   r'  rG   r6   r  r"  rX   rs   r!  s        @r   +test_runforever_emits_generic_startup_eventz<SupervisordTests.test_runforever_emits_generic_startup_event|  s`    %	::HE.mmG, QC r   c                     ddl m} g fd}|j                  |j                  |       t	               }d|_        | j                  |      }|j                          | j                  dg       y )Nr   r  c                 (    j                  d       y )Nr   r  r  s    r   r"  zOSupervisordTests.test_runforever_emits_generic_specific_event.<locals>.callback  r#  r   Tr   )	r$  r  r%  SupervisorRunningEventr   r#   rY   r'  rG   r:  s        @r   ,test_runforever_emits_generic_specific_eventz=SupervisordTests.test_runforever_emits_generic_specific_event  s`    %	66A.mmG, QC r   c                     t               }d|_        | j                  |      }| j                  t	        |j
                        d       |j                          | j                  t	        |j
                        d       y )NTr      )r   r#   rY   rG   rC   ticksr'  r   s      r   test_runforever_calls_tickz+SupervisordTests.test_runforever_calls_tick  s`    .mmG,[../3 [../3r   c                 :   t               }dgddgf|j                  _        | j                  |      }t	        |dd      }t        ||g      }t        |      }t        d      }t        d	      }t        dt        
      }|||d|_	        d|i|_
        d|_        |j                          | j                  |j                  d       | j                  |j                  d       | j                  |j                   d       | j                  |j"                  d       y )N         r[   r\   r^   T)readable)writable)rI  error)rE  rF  rG  )r   pollerr   rY   r   r   r	   r
   OSErrordispatchersri   r#   r'  rG   transitionedread_event_handledwrite_event_handlederror_handled)	r6   rX   rs   rq   r  pgrouprH  rI  rJ  s	            r    test_runforever_poll_dispatchersz1SupervisordTests.test_runforever_poll_dispatchers  s    .!"aVmmG,wz;#Gwi@"7+"D1"D1W= (H>&+V_" ,,d344d;55t<,,d3r   c                 f   t               }dgg f|j                  _        | j                  |      }t	        |dd      }t        ||g      }t        |      }ddlm} t        d|j                        }d|i|_        d|i|_        d|_        | j                  |j                  |j                         y 	NrE  r[   r\   r^   r   asyncore_25TrH  rJ  r   rK  r   rY   r   r   r	   supervisor.medusarW  r
   ExitNowrM  ri   r#   r,  r'  r6   rX   rs   rq   r  rR  asyncoreexitnows           r   2test_runforever_select_dispatcher_exitnow_via_readzCSupervisordTests.test_runforever_select_dispatcher_exitnow_via_read  s    .!"RmmG,wz;#Gwi@"7+=!4x7G7GH[&+V_"(**K,B,BCr   c                 f   t               }g dgf|j                  _        | j                  |      }t	        |dd      }t        ||g      }t        |      }ddlm} t        d|j                        }d|i|_        d|i|_        d|_        | j                  |j                  |j                         y rU  rY  r\  s           r   3test_runforever_select_dispatcher_exitnow_via_writezDSupervisordTests.test_runforever_select_dispatcher_exitnow_via_write  s    . "QCmmG,wz;#Gwi@"7+=!4x7G7GH[&+V_"(**K,B,BCr   c                 Z   t               }dgg f|j                  _        | j                  |      }t	        |dd      }t        ||g      }t        |      }t        dt              }d|i|_	        d|i|_
        d|_        |j                          | j                  |j                  d       y NrE  r[   r\   r^   TrX  r   rK  r   rY   r   r   r	   r
   NotImplementedErrorrM  ri   r#   r'  rG   rQ  r6   rX   rs   rq   r  rR  notimpls          r   7test_runforever_select_dispatcher_handle_error_via_readzHSupervisordTests.test_runforever_select_dispatcher_handle_error_via_read  s    .!"RmmG,wz;#Gwi@"7+!47JK[&+V_" ..5r   c                 Z   t               }g dgf|j                  _        | j                  |      }t	        |dd      }t        ||g      }t        |      }t        dt              }d|i|_	        d|i|_
        d|_        |j                          | j                  |j                  d       y rc  rd  rf  s          r   8test_runforever_select_dispatcher_handle_error_via_writezISupervisordTests.test_runforever_select_dispatcher_handle_error_via_write  s    . "QCmmG,wz;#Gwi@"7+!47JK[&+V_" ..5r   c                    t               }| j                  |      }t        |      }t        |      }d|i|_        t
        j                  |j                  _        g fd}ddl	m
} |j                  |j                  |       ddlm} d|_        | j!                  |j"                  |j$                         | j'                  |j(                         | j'                  t+        d   |j,                               | j'                  t+        d   |j                               | j'                  t+        d   |j.                               | j'                  t+        d   |j                               y )Nr[   c                 (    j                  |        y rW   r  r  s    r   r"  zHSupervisordTests.test_runforever_stopping_emits_events.<locals>.callback      HHUOr   r   r  rV  Tr   )r   rY   r   r	   ri   r   r   rX   r   r$  r  r%  r9  rZ  rW  r#   r,  r[  r'  r4   all_stopped
isinstancer>  SupervisorStoppingEvent)	r6   rX   rs   r  rR  r"  r  r]  r!  s	           @r   %test_runforever_stopping_emits_eventsz6SupervisordTests.test_runforever_stopping_emits_events  s   .mmG,#G,"7+&+V_"#3#<#< 	%::HE=(**K,B,BC**+
1Q4)F)FGH
1Q4)J)JKL
1Q4)G)GHI
1Q4)J)JKLr   c                    t               }| j                  |      }t        |dd      }t        ||g      }t	        |      }g fd}d|i|_        t        j                  |j                  _	        d|j                  _
        ddlm} | j                  |j                  |j                         | j!                  |j"                  d       y )Nr[   r\   r^   c                  (     j                  d       y r   r  r!  s   r   r"  z,SupervisordTests.test_exit.<locals>.callback  r#  r   Tr   rV  )r   rY   r   r   r	   ri   r   r   rX   r   r#   rZ  rW  r,  r[  r'  rG   rn  )	r6   rX   rs   rq   r  rR  r"  r]  r!  s	           @r   	test_exitzSupervisordTests.test_exit  s    .mmG,wz;#Gwi@"7+	&+V_"#3#>#> #' =(**K,B,BC++T2r   c                    t               }| j                  |      }t        |dd      }t        |      }t	        ||g      }t        |      }|g|_        g fd}d|i|_        t        j                  |j                  _        d|j                  _        |j                          | j                  |j                  d       y )Nr[   r\   r^   c                  (     j                  d       y r   r  rt  s   r   r"  z4SupervisordTests.test_exit_delayed.<locals>.callback  r#  r   Tr   )r   rY   r   r   r   r	   r0  ri   r   r   rX   r   r#   r'  assertNotEquallastshutdownreport)	r6   rX   rs   rq   r{   r  rR  r"  r!  s	           @r   test_exit_delayedz"SupervisordTests.test_exit_delayed  s    .mmG,wz;w'#Gwi@"7+&-Y"	&+V_"#3#>#> #'  K::A>r   c                 `    ddl m}  |t        j                        }| j	                  |d       y )Nr   )getSupervisorStateDescriptionr   )supervisor.statesr|  r   r   rG   )r6   r|  r   s      r   "test_getSupervisorStateDescriptionz3SupervisordTests.test_getSupervisorStateDescription  s&    C./?/G/GH+r   c                    ddl m} g fd}|j                  |j                  |       t	               }| j                  |      }|j                  d       | j                  |j                  d   d       | j                  |j                  d   d       | j                  |j                  d   d       | j                  t              d       |j                  d       | j                  |j                  d   d       | j                  |j                  d   d       | j                  |j                  d   d       | j                  t              d	       | j                  d
   j                  |j                         |j                  d       | j                  |j                  d   d       | j                  |j                  d   d       | j                  |j                  d   d       | j                  t              d       | j                  d
   j                  |j                         |j                  d       | j                  |j                  d   d       | j                  |j                  d   d       | j                  |j                  d   d       | j                  t              d       | j                  d
   j                  |j                         y )Nr   r  c                 (    j                  |        y rW   r  r  s    r   r"  z,SupervisordTests.test_tick.<locals>.callback%  rm  r   )now   <   i  rE  r   =   rA  i  )r$  r  r%  	TickEventr   rY   tickrG   rB  rC   	__class__
Tick5EventTick60EventTick3600Eventr:  s        @r   	test_tickzSupervisordTests.test_tick"  sm   %	))84.mmG,Q**1-q1**2.2**40!4Q#Q**1-q1**2.2**40!4Q#2&*;*;<R **1-r2**2.3**40!4Q#2&*<*<=T"**1-t4**2.5**40$7Q#2&*>*>?r   N)*rI   rJ   rK   rR   rU   rY   rt   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r)  r1  r6  r;  r?  rC  rS  r_  ra  rh  rj  rq  ru  rz  r~  r  r   r   r   rN   rN   r   s    /30302'2A"EDE
G38:*@L
&,,B,Hx,t$$!$$*!(
!
!44&DD66M*3 ?",
"@r   rN   c                  V    t        j                  t        j                  t                 S rW   )unittestfindTestCasesr-   modulesrI   r   r   r   
test_suiter  F  s    !!#++h"788r   __main__r  )defaultTest)r  r   r   r-   r&   r/   r1   r}  r   r   supervisor.tests.baser   r   r   r   r	   r
   supervisor.compatr   rL   ImportErrorTestCaser   rN   r  rI   r   r   r   r   <module>r     s       
 	   + . . . 3 . 3 1 &T)h'' T)lR@x(( R@h9 zHMMl+ e   Fs   B B)(B)