
    vgć                     T   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n# e$ r dZY nw xY w G d de j                  Z G d de j                  Zd Zedk    r e j        d           dS dS )    N)ProcessStates)SupervisorStates)DummyOptions)DummyPConfig)DummyPGroupConfig)DummyProcess)DummyProcessGroup)DummyDispatcher)StringIOc                   *    e Zd Zd Zerd Zd Zd ZdS )EntryPointTestsc           	         ddl m} t          j                            t          j                            t          j                            t                              dd          }t                      }d |_	        t          j        }	 t          j                    }t          j                            |d          }t          j                            |d          }|t          _         |d|d	|d
|dgd           |t          _        t          j        |           n%# |t          _        t          j        |           w xY w|                                }|                     d|v |           d S )Nr   mainfixturesdonothing.confc                      dS N    r       ^/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/supervisor/tests/test_supervisord.py<lambda>z5EntryPointTests.test_main_noprofile.<locals>.<lambda>#       A 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   sG   //////w||GOOBGOOH5566
  ZZ
%I
Z
		#&((G',,w..C',,w..C#CJDtT4dC>    $CJM'"""" $CJM'""""$$&&-7@@@@@   
A3D "E c           
         ddl m} t          j                            t          j                            t          j                            t                              dd          }t                      }d |_	        t          j        }	 t          j                    }t          j                            |d          }t          j                            |d          }|t          _         |d|d	|d
|ddgd           |t          _        t          j        |           n%# |t          _        t          j        |           w xY w|                                }|                     d|v |           d S )Nr   r   r   r   c                      dS r   r   r   r   r   r   z3EntryPointTests.test_main_profile.<locals>.<lambda>9   s     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   sQ   3333337<< 9 9::J " "D "J )	JJ	'"*,,gll7E22gll7E22'
4tS$T?AGKM M M M (
g&&&& (
g&&&&((**FOO9VCVLLLLL   
A4D "Ec           	         ddl m} t          j                            t          j                            t          j                            t                              dd          }t                      }d |_	        t          j        }	 t          j                    }t          j                            |d          }t          j                            |d          }|t          _         |d|d	|d
|dgd           |t          _        t          j        |           n%# |t          _        t          j        |           w xY w|                                }|                     t%          |          d           d S )Nr   r   r   r   c                      dS 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>   //////w||GOOBGOOH5566
  ZZ
%I
Z
	#&((G',,w..C',,w..C#CJDtT4dC>TJJJJ#CJM'"""" $CJM'""""$$&&3v;;*****r=   c           
         ddl m} t          j                            t          j                            t          j                            t                              dd          }t                      }d |_	        t          j        }	 t          j                    }t          j                            |d          }t          j                            |d          }|t          _         |d|d	|d
|ddgd           |t          _        t          j        |           n%# |t          _        t          j        |           w xY w|                                }|                     t%          |          d           d S )Nr   r   r   r   c                      dS 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   assertEqualrE   r5   s	            r   test_silent_onzEntryPointTests.test_silent_on]   s@   //////w||GOOBGOOH5566
  ZZ
%I
Z
	#&((G',,w..C',,w..C#CJDtT4dCtD4PPPP#CJM'"""" $CJM'""""$$&&Va(((((rA   N)__name__
__module____qualname__r<   pstatsr@   rF   rJ   r   r   r   r   r      sa        A A A*  M	M 	M 	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)d(S ))SupervisordTestsc                 &    ddl m}  |             d S )Nr   )clear)supervisor.eventsrR   )r6   rR   s     r   tearDownzSupervisordTests.tearDowns   s#    ++++++r   c                     ddl m} |S )Nr   )
Supervisor)r%   rV   )r6   rV   s     r   _getTargetClassz SupervisordTests._getTargetClassw   s    555555r   c                 <     |                                  |          S N)rW   )r6   optionss     r   _makeOnezSupervisordTests._makeOne{   s    %t##%%g...r   c                    t                      }t          |ddd          }t          |d|g          g}||_        d|_        d|_        |                     |          }|                                 |                     |j	        d           |                     |j
        d           |                     |j        dg           |                     |j        g            |                     |j        dg           |                     |j        d           |                     t          |j                  d	           |                     |j        d         j        j        |           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           d S )
Nfoo/bin/foo/tmppconfigsTFsetuid_calledrlimits_setr   )r   r   r   process_group_configsr#   firstr[   r   rI   fds_cleaned_uprc   parse_criticalsparse_warningsparse_infosautochildlogdir_clearedrE   process_groupsconfigrZ   httpservers_openedsignals_set
daemonizedpidfile_written
cleaned_upr6   rZ   pconfiggconfigssupervisords        r   test_main_firstz SupervisordTests.test_main_first~   s   ..wz6BB%guyIIIJ(0%mmG,,/777,d3330?2CDDD/444,}o>>>8$???[788!<<<3E:AI 	" 	" 	"3T:::,d333+T2220$777+T22222r   c                    t                      }t          |ddd          }t          |d|g          g}||_        d|_        d|_        |                     |          }|                                 |                     |j	        d           | 
                    t          |d                     |                     |j        dg           |                     |j        g            |                     |j        g            |                     |j        d           |                     t!          |j                  d	           |                     |j        d         j        j        |           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           d S )
Nr]   r^   r_   r`   TFrc   rb   r   )r   r   r   rd   r#   re   r[   r   rI   rf   assertFalsehasattrrg   rh   ri   rj   rE   rk   rl   rZ   rm   rn   ro   rp   rq   rr   s        r   test_main_notfirstz#SupervisordTests.test_main_notfirst   s   ..wz6BB%guyIIIJ(0%mmG,,/666-889990?2CDDD/444,b1118$???[788!<<<3E:AI 	" 	" 	"3T:::,d333+U3330$777+T22222r   c                 H   t                      }d|_        t          |ddd          }t          |          }d|_        d|_        d |_        d|_        d|i|_        | 	                    |          }|
                    d	           |                     |j        d           d S )
Nr   r   processr^   r_   FTNNr   oncer   waitpid_returnr   r   drainedkillinglaststop
waitstatus
pidhistoryr[   reaprI   finishedr6   rZ   rs   r}   ru   s        r   	test_reapzSupervisordTests.test_reap   s    ..!%w	:vFFw'''[mmG,,d###)511111r   c                     t                      }|                     |          }|                    dd          }|                     |d            d S )NTd   )r   recursionguard)r   r[   r   rI   )r6   rZ   ru   results       r   test_reap_recursionguardz)SupervisordTests.test_reap_recursionguard   sP    ..mmG,,!!tC!@@&&&&&r   c                 H   t                      }d|_        t          |ddd          }t          |          }d|_        d|_        d |_        d|_        d|i|_        | 	                    |          }|
                    d	
           |                     |j        d           d S )Nr|   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Fw'''[mmG,,+++)511111r   c                    t                      }d|_        t          |ddd          }t          |          }d|_        d|_        d |_        d|_        d|i|_        | 	                    |          }|
                    d	           |                     |j        d            |                     |j        j        d
         d           d S )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   r[   r   rI   r   loggerdatar   s        r   test_reap_unknown_pidz&SupervisordTests.test_reap_unknown_pid   s    ..!%w	:vFFw'''\mmG,,d###)4000,Q/?	A 	A 	A 	A 	Ar   c                 6   t                      }t          j        |_        |                     |          }|                                 |                     |j        j        t          j
                   |                     |j        j        d         d           d S )Nr   z(received SIGTERM indicating exit request)r   signalSIGTERM_signalr[   handle_signalrI   rZ   moodr   SHUTDOWNr   r   r6   rZ   ru   s      r   test_handle_sigtermz$SupervisordTests.test_handle_sigterm       .. .mmG,,!!###,1)2	4 	4 	4,Q/C	E 	E 	E 	E 	Er   c                 6   t                      }t          j        |_        |                     |          }|                                 |                     |j        j        t          j
                   |                     |j        j        d         d           d S )Nr   z'received SIGINT indicating exit request)r   r   SIGINTr   r[   r   rI   rZ   r   r   r   r   r   r   s      r   test_handle_sigintz#SupervisordTests.test_handle_sigint   s    .. -mmG,,!!###,1)2	4 	4 	4,Q/B	D 	D 	D 	D 	Dr   c                 6   t                      }t          j        |_        |                     |          }|                                 |                     |j        j        t          j
                   |                     |j        j        d         d           d S )Nr   z(received SIGQUIT indicating exit request)r   r   SIGQUITr   r[   r   rI   rZ   r   r   r   r   r   r   s      r   test_handle_sigquitz$SupervisordTests.test_handle_sigquit   r   r   c                    t                      }t          j        |_        |                     |          }|                     |j        j        t          j	                   |
                                 |                     |j        j        t          j                   |                     |j        j        d         d           d S )Nr   z*received SIGHUP indicating restart request)r   r   SIGHUPr   r[   rI   rZ   r   r   RUNNINGr   
RESTARTINGr   r   r   s      r   #test_handle_sighup_in_running_statez4SupervisordTests.test_handle_sighup_in_running_state  s    .. -mmG,,,1)1	3 	3 	3!!###,1)4	6 	6 	6,Q/E	G 	G 	G 	G 	Gr   c                    t                      }t          j        |_        |                     |          }t
          j        |j        _        | 	                    |j        j        t
          j                   |
                                 | 	                    |j        j        t
          j                   | 	                    |j        j        d         d           d S )Nr   z@ignored SIGHUP indicating restart request (shutdown in progress))r   r   r   r   r[   r   r   rZ   r   rI   r   r   r   r   s      r   $test_handle_sighup_in_shutdown_statez5SupervisordTests.test_handle_sighup_in_shutdown_state  s    .. -mmG,,#3#< ,1)2	4 	4 	4!!###,1)2	4 	4 	4,Q/2	3 	3 	3 	3 	3r   c                 <   t                      }t          j        |_        |                     |          }|                                 |                     |j        j        t          j
                   d}|                     |j        j        d         |v            d S )N)z(received SIGCHLD indicating a child quitz'received SIGCLD indicating a child quitr   )r   r   SIGCHLDr   r[   r   rI   rZ   r   r   r   r4   r   r   )r6   rZ   ru   msgss       r   test_handle_sigchldz$SupervisordTests.test_handle_sigchld  s    .. .mmG,,!!###,1)1	3 	3 	3;+A.$677777r   c                    t                      }t          j        |_        t	          |ddd          }t          |t          j                  }t          j                    dz
  |_	        | 
                    |          }t	          |ddd          g}t          |d|          |_        t          |          }d |i|_        |                                 |                     |j        j        t&          j                   |                     |j        d           |                     |j        j        d	         d
           |                     |j        d           d S )Nprocess1r^   r_   )stater   r]   r`   Tr   z.received SIGUSR2 indicating log reopen request)r   r   SIGUSR2r   r   r   r   STOPPINGtimedelayr[   r   rd   r	   rk   r   rI   rZ   r   r   r   logs_reopenedr   r   )r6   rZ   pconfig1r   ru   ra   dummypgroups          r   test_handle_sigusr2z$SupervisordTests.test_handle_sigusr2(  sI   .. .ZHH0FGGGqmmG,, %VDDE(9U) ) )% (00&*;%7"!!###,1)1	3 	3 	3.555,Q/I	K 	K 	K2D99999r   c                 6   t                      }t          j        |_        |                     |          }|                                 |                     |j        j        t          j
                   |                     |j        j        d         d           d S )Nr   z#received SIGUSR1 indicating nothing)r   r   SIGUSR1r   r[   r   rI   rZ   r   r   r   r   r   r   s      r   test_handle_unknown_signalz+SupervisordTests.test_handle_unknown_signal=  s    .. .mmG,,!!###,1)1	3 	3 	3,Q/>	@ 	@ 	@ 	@ 	@r   c                     t                      }|                     |          }|                     |                                t          j                   d S rY   )r   r[   rI   	get_stater   r   r   s      r   test_get_statezSupervisordTests.test_get_stateG  sH    ..mmG,,..002B2JKKKKKr   c                 f   t                      }|                     |          }t          |ddd          }t          |d|g          }|g|j        _        |                                \  }}}|                     ||g           |                     |g            |                     |g            d S )Nr   r^   r_   group1r`   )r   r[   r   r   rZ   rd   diff_to_activerI   )r6   rZ   ru   rs   r   addedchangedremoveds           r   &test_diff_to_active_finds_groups_addedz7SupervisordTests.test_diff_to_active_finds_groups_addedL  s    ..mmG,,w
JGG"7HyIII 6<H1"-"<"<">">w)))"%%%"%%%%%r   c                     t                      }|                     |          }t          |ddd          }t          |d|g          }t          |ddd          }t          |d|g          }||g|j        _        |                    |           |                    |           |g|j        _        |                                \  }}}|                     |g            |                     |g            |                     ||g           d S )	Nr   z/bin/process1r_   r   r`   process2z/bin/process2group2)	r   r[   r   r   rZ   rd   add_process_groupr   rI   )	r6   rZ   ru   rs   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L"7HyIIIw
OVLL"7HyIII 6<V4D1%%f---%%f--- 6<H1"-"<"<">">w###"%%%6(+++++r   c                    ddl mm t                      |                               }fd}fd} |ddd          } |d|g          } |d	d	          } |d
|g          }||g} |ddd          } |d|g          } |d	d	          } |d
|g          }	|                    |           |                    |	           ||j        _        |                                \  }
}}| 	                    |
g            | 	                    |g            | 	                    ||g           t                      |                               } |dd          } |d	d	          } |d||g          }|g}|                     |d|g                     ||j        _        |                                \  }
}}| 	                    |
g            | 	                    |g            | 	                    ||g           d S )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}|                     |            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   rZ   s       r   make_pconfigzBSupervisordTests.test_diff_to_active_changed.<locals>.make_pconfigw  s1   'T#*D2<cCNPT t &1" 7Ec t	 .t	 6OPQ	
 ( )! .G   !$ DE).*+!&#("B$$!$T!  F$ MM&!!! =33F333r   c                       | d|          S )N   r   )r   ra   r   rZ   s     r   make_gconfigzBSupervisordTests.test_diff_to_active_changed.<locals>.make_gconfig  s    %%gtRBBBr   r   new)r   r   r   r   old)
supervisor.optionsr   r   r   r[   r   rZ   rd   r   rI   )r6   ru   r   r   rs   r   r   r   group3group4r   r   r   r   pconfig2r   r   rZ   s                  @@@r   test_diff_to_active_changedz,SupervisordTests.test_diff_to_active_changedq  s   HHHHHHHH..mmG,,	4 	4 	4 	4 	4 	4,	C 	C 	C 	C 	C 	C ,z:5AAAh	22,z:66h	22v,z:5AAAh	22,z:66h	22%%f---%%f---471"-"<"<">">w###"%%%6(+++..mmG,,<
J77<
J77h8(<==h%%ll8hZ&H&HIII471"-"<"<">">w###"%%%6(+++++r   c                    ddl m ddlmm t                      |                               }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        _	        |
                                \  }}}|                     |g            |                     |g            |                     ||g           t                      |                               } |dd          } |d
          } |d|g|          } |dd          } |d          } |d|g|          }||g}	 |dd          } |d          } |d|g|          }
 |dd          } |d          } |d|g|          }|                    |
           |                    |           |	|j        _	        |
                                \  }}}|                     |g            |                     |g            |                     ||g           t                      |                               } |dd          } |d
          } |d|g|d          } |dd          } |d          } |d|g|          }||g}	 |dd          } |d
          } |d|g|d          }
 |dd          } |d          } |d|g|          }|                    |
           |                    |           |	|j        _	        |
                                \  }}}|                     |g            |                     |g            |                     ||g           d S )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}|                     |            fi |S r   r   )r   r   r   r   r  rZ   s       r   r   zPSupervisordTests.test_diff_to_active_changed_eventlistener.<locals>.make_pconfig  s2   'T#*D2<cCNPT t &1" 7Ec t	 .t	 6OPQ	
 ( )! .G   !$ DE).*+!&#("B$$!$T!  F$ MM&!!!&&w99&999r   c                  ^    g }| D ]&}|                     t          |d                      '|S rY   )appendgetattr)pool_event_namesr   pool_event_namer  s      r   make_econfigzPSupervisordTests.test_diff_to_active_changed_eventlistener.<locals>.make_econfig  s?    F#3 J Jgj/4HHIIIIMr   &supervisor.dispatchers:default_handlerc           	      &     | d|d||          S )Nr   r   r   )r   ra   pool_eventsresult_handlerr  rZ   s       r   r   zPSupervisordTests.test_diff_to_active_changed_eventlistener.<locals>.make_gconfig  s!    **7D"hKYghhhr   r   zprocess1-newTICK_60r   r   	TICK_3600r   zprocess1-oldTICK_5znew-result-handlerzold-result-handler)r  )rS   r  r   r  r  r   r[   r   rZ   rd   r   rI   )r6   ru   r   r  r   rs   econfigr   r   r   r   r   r   r   r   r  r  r  rZ   s                  @@@@r   )test_diff_to_active_changed_eventlistenerz:SupervisordTests.test_diff_to_active_changed_eventlistener  s8   000000SSSSSSSS..mmG,,	: 	: 	: 	: 	: 	:,	 	 	 	 		i 	i 	i 	i 	i 	i 	i ,z>::,y))h	7;;,z:66,{++h	7;;v,z>::,y))h	7;;,z:66,{++h	7;;%%f---%%f---471"-"<"<">">w###"%%%6(+++ ..mmG,,,z:66,y))h	7;;,z:66,{++h	7;;v,z:66,x((h	7;;,z:66,{++h	7;;%%f---%%f---471"-"<"<">">w###"%%%6(+++ ..mmG,,,z:66,y))h	7<PQQ,z:66,{++h	7;;v,z:66,y))h	7<PQQ,z:66,{++h	7;;%%f---%%f---471"-"<"<">">w###"%%%6(+++++r   c                 X   t                      }t          |ddd          }t          |d|g          }|g|_        |                     |          }|                     |j        i            |                    |          }|                     t          |j        	                                          dg           | 
                    |           |j        d         }|                    |          }|                     ||j        d                    | 
                    |            d S )Nr]   r^   r_   r`   )r   r   r   rd   r[   rI   rk   r   listkeysr4   )r6   rZ   rs   gconfigru   r   groups          r   test_add_process_groupz'SupervisordTests.test_add_process_group/  s   ..wz6BB#GUgYGGG)0	%mmG,,3R888..w77k8==??@@5'JJJ*51..w77 :5 ABBBF
#####r   c                    ddl m} g fd}|                    |j        |           t	                      }t          |ddd          }t          |d|g          }|g|_        |                     |          }|	                    |           d|_
        |                                 |                     d	g           d S )
Nr   eventsc                 2                         d           d S r   r	  eventLs    r   callbackzESupervisordTests.test_add_process_group_emits_event.<locals>.callbackD      HHQKKKKKr   r]   r^   r_   r`   Tr   )
supervisorr  	subscribeProcessGroupAddedEventr   r   r   rd   r[   r   r#   
runforeverrI   r6   r  r%  rZ   rs   r  ru   r$  s          @r   "test_add_process_group_emits_eventz3SupervisordTests.test_add_process_group_emits_eventA  s    %%%%%%	 	 	 	 	6AAA..wz6BB#GUgYGGG)0	%mmG,,%%g...   QC     r   c                    t                      }t          |ddd          }t          |d|g          }|                     |          }|                     t
          |j        d           |                    |           |j        d         }|                    d          }| 	                    |j
                   |                     |j        i            | 	                    |           |                    |           t          d           g|j        d         _        |                    d          }|                     t          |j                                                  dg           | 	                    |            d S )Nr]   r^   r_   r`   asdf)r   r   r   r[   assertRaisesKeyErrorremove_process_groupr   rk   r4   before_remove_calledrI   r   unstopped_processesr  r  )r6   rZ   rs   r  ru   r  r   s          r   test_remove_process_groupz*SupervisordTests.test_remove_process_groupS  s_   ..wz6BB#GUgYGGGmmG,,(K$DfMMM%%g...*5111%8823333R888%%g...AMdASAS@T"5)=11%88k8==??@@5'JJJF
#####r   c                    ddl m} g fd}|                    |j        |           t	                      }t          |ddd          }t          |d|g          }|g|_        |                     |          }|	                    |           t          d           g|j        d         _        |                    d           d|_        |                                 |                     d	g           d S )
Nr   r  c                 2                         d           d S 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   rd   r[   r   r   rk   stopped_processesr1  r#   r*  rI   r+  s          @r   test_remove_process_group_eventz0SupervisordTests.test_remove_process_group_eventh  s   %%%%%%	 	 	 	 	8(CCC..wz6BB#GUgYGGG)0	%mmG,,%%g...?KD?Q?Q>R"5);((///   QC     r   c                    ddl m} g fd}|                    |j        |           t	                      }|                     |          }d|_        |                                 |                     dg           d S )Nr   r  c                 2                         d           d S r   r!  r"  s    r   r%  zNSupervisordTests.test_runforever_emits_generic_startup_event.<locals>.callback  r&  r   Tr   )	r'  r  r(  SupervisorStateChangeEventr   r[   r#   r*  rI   r6   r  r%  rZ   ru   r$  s        @r   +test_runforever_emits_generic_startup_eventz<SupervisordTests.test_runforever_emits_generic_startup_event|  s    %%%%%%	 	 	 	 	:HEEE..mmG,,   QC     r   c                    ddl m} g fd}|                    |j        |           t	                      }d|_        |                     |          }|                                 |                     dg           d S )Nr   r  c                 2                         d           d S )Nr   r!  r"  s    r   r%  zOSupervisordTests.test_runforever_emits_generic_specific_event.<locals>.callback  r&  r   Tr   )	r'  r  r(  SupervisorRunningEventr   r#   r[   r*  rI   r=  s        @r   ,test_runforever_emits_generic_specific_eventz=SupervisordTests.test_runforever_emits_generic_specific_event  s    %%%%%%	 	 	 	 	6AAA..mmG,,   QC     r   c                 "   t                      }d|_        |                     |          }|                     t	          |j                  d           |                                 |                     t	          |j                  d           d S )NTr      )r   r#   r[   rI   rE   ticksr*  r   s      r   test_runforever_calls_tickz+SupervisordTests.test_runforever_calls_tick  s}    ..mmG,,[.//333   [.//33333r   c                 t   t                      }dgddgf|j        _        |                     |          }t	          |dd          }t          ||g          }t          |          }t          d          }t          d	          }t          dt          
          }|||d|_	        d|i|_
        d|_        |                                 |                     |j        d           |                     |j        d           |                     |j        d           |                     |j        d           d S )N         r]   r^   r`   T)readable)writable)rL  error)rH  rI  rJ  )r   pollerr   r[   r   r   r	   r
   OSErrordispatchersrk   r#   r*  rI   transitionedread_event_handledwrite_event_handlederror_handled)	r6   rZ   ru   rs   r  pgrouprK  rL  rM  s	            r    test_runforever_poll_dispatchersz1SupervisordTests.test_runforever_poll_dispatchers  s5   ..!"aVmmG,,wz;;#Gwi@@@"7++"D111"D111W=== (H>>&+V_"   ,d3334d;;;5t<<<,d33333r   c                 x   t                      }dgg f|j        _        |                     |          }t	          |dd          }t          ||g          }t          |          }ddlm} t          d|j
                  }d|i|_        d|i|_        d|_        |                     |j
        |j                   d S 	NrH  r]   r^   r`   r   asyncore_25TrK  rM  r   rN  r   r[   r   r   r	   supervisor.medusarZ  r
   ExitNowrP  rk   r#   r/  r*  r6   rZ   ru   rs   r  rU  asyncoreexitnows           r   2test_runforever_select_dispatcher_exitnow_via_readzCSupervisordTests.test_runforever_select_dispatcher_exitnow_via_read  s    ..!"RmmG,,wz;;#Gwi@@@"7++======!4x7GHHH[&+V_"(*K,BCCCCCr   c                 x   t                      }g dgf|j        _        |                     |          }t	          |dd          }t          ||g          }t          |          }ddlm} t          d|j
                  }d|i|_        d|i|_        d|_        |                     |j
        |j                   d S rX  r\  r_  s           r   3test_runforever_select_dispatcher_exitnow_via_writezDSupervisordTests.test_runforever_select_dispatcher_exitnow_via_write  s    .. "QCmmG,,wz;;#Gwi@@@"7++======!4x7GHHH[&+V_"(*K,BCCCCCr   c                    t                      }dgg f|j        _        |                     |          }t	          |dd          }t          ||g          }t          |          }t          dt                    }d|i|_	        d|i|_
        d|_        |                                 |                     |j        d           d S NrH  r]   r^   r`   Tr[  r   rN  r   r[   r   r   r	   r
   NotImplementedErrorrP  rk   r#   r*  rI   rT  r6   rZ   ru   rs   r  rU  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KK[&+V_"   .55555r   c                    t                      }g dgf|j        _        |                     |          }t	          |dd          }t          ||g          }t          |          }t          dt                    }d|i|_	        d|i|_
        d|_        |                                 |                     |j        d           d S rf  rg  ri  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KK[&+V_"   .55555r   c                    t                      }|                     |          }t          |          }t          |          }d|i|_        t
          j        |j        _        g fd}ddl	m
} |                    |j        |           ddlm} d|_        |                     |j        |j                   |                     |j                   |                     t+          d         |j                             |                     t+          d         |j                             |                     t+          d         |j                             |                     t+          d         |j                             d S )Nr]   c                 2                         |            d S rY   r!  r"  s    r   r%  zHSupervisordTests.test_runforever_stopping_emits_events.<locals>.callback      HHUOOOOOr   r   r  rY  Tr   )r   r[   r   r	   rk   r   r   rZ   r   r'  r  r(  r<  r]  rZ  r#   r/  r^  r*  r4   all_stopped
isinstancerA  SupervisorStoppingEvent)	r6   rZ   ru   r  rU  r%  r  r`  r$  s	           @r   %test_runforever_stopping_emits_eventsz6SupervisordTests.test_runforever_stopping_emits_events  sv   ..mmG,,#G,,"7++&+V_"#3#< 	 	 	 	 	%%%%%%:HEEE======(*K,BCCC*+++
1Q4)FGGHHH
1Q4)JKKLLL
1Q4)GHHIII
1Q4)JKKLLLLLr   c                    t                      }|                     |          }t          |dd          }t          ||g          }t	          |          }g fd}d|i|_        t          j        |j        _	        d|j        _
        ddlm} |                     |j        |j                   |                     |j        d           d S )Nr]   r^   r`   c                  2                          d           d S r   r!  r$  s   r   r%  z,SupervisordTests.test_exit.<locals>.callback  r&  r   Tr   rY  )r   r[   r   r   r	   rk   r   r   rZ   r   r#   r]  rZ  r/  r^  r*  rI   rq  )	r6   rZ   ru   rs   r  rU  r%  r`  r$  s	           @r   	test_exitzSupervisordTests.test_exit  s    ..mmG,,wz;;#Gwi@@@"7++	 	 	 	 	&+V_"#3#> #' ======(*K,BCCC+T22222r   c                    t                      }|                     |          }t          |dd          }t          |          }t	          ||g          }t          |          }|g|_        g fd}d|i|_        t          j	        |j
        _        d|j
        _        |                                 |                     |j        d           d S )Nr]   r^   r`   c                  2                          d           d S r   r!  rw  s   r   r%  z4SupervisordTests.test_exit_delayed.<locals>.callback  r&  r   Tr   )r   r[   r   r   r   r	   r3  rk   r   r   rZ   r   r#   r*  assertNotEquallastshutdownreport)	r6   rZ   ru   rs   r}   r  rU  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                 h    ddl m}  |t          j                  }|                     |d           d S )Nr   )getSupervisorStateDescriptionr   )supervisor.statesr  r   r   rI   )r6   r  r   s      r   "test_getSupervisorStateDescriptionz3SupervisordTests.test_getSupervisorStateDescription  sD    CCCCCC../?/GHH+++++r   c                 b   ddl m} g fd}|                    |j        |           t	                      }|                     |          }|                    d           |                     |j        d         d           |                     |j        d         d           |                     |j        d         d           |                     t                    d           |                    d           |                     |j        d         d           |                     |j        d         d           |                     |j        d         d           |                     t                    d	           |                     d
         j
        |j                   |                    d           |                     |j        d         d           |                     |j        d         d           |                     |j        d         d           |                     t                    d           |                     d
         j
        |j                   |                    d           |                     |j        d         d           |                     |j        d         d           |                     |j        d         d           |                     t                    d           |                     d
         j
        |j                   d S )Nr   r  c                 2                         |            d S rY   r!  r"  s    r   r%  z,SupervisordTests.test_tick.<locals>.callback%  rp  r   )now   <   i  rH  r   =   rD  i  )r'  r  r(  	TickEventr   r[   tickrI   rE  rE   	__class__
Tick5EventTick60EventTick3600Eventr=  s        @r   	test_tickzSupervisordTests.test_tick"  s   %%%%%%	 	 	 	 	)8444..mmG,,Q*1-q111*2.222*40!444Q###Q*1-q111*2.222*40!444Q###2&*;<<<R   *1-r222*2.333*40!444Q###2&*<===T"""*1-t444*2.555*40$777Q###2&*>?????r   N)*rK   rL   rM   rT   rW   r[   rv   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r,  r4  r9  r>  rB  rF  rV  rb  rd  rk  rm  rt  rx  r}  r  r  r   r   r   rP   rP   r   s           / / /3 3 303 3 302 2 2' ' '2 2 2A A A"E E ED D DE E E
G 
G 
G3 3 38 8 8: : :*@ @ @L L L
& & &, , ,,B, B, B,Hx, x, x,t$ $ $$! ! !$$ $ $*! ! !(
! 
! 
!
! 
! 
!4 4 44 4 4&D D DD D D6 6 66 6 6M M M*3 3 3 ? ? ?", , ,
"@ "@ "@ "@ "@r   rP   c                  T    t          j        t          j        t                             S rY   )unittestfindTestCasesr-   modulesrK   r   r   r   
test_suiter  F  s    !#+h"78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   rN   ImportErrorTestCaser   rP   r  rK   r   r   r   r   <module>r     s      



 				   + + + + + + . . . . . . . . . . . . . . . . . . 3 3 3 3 3 3 . . . . . . 3 3 3 3 3 3 1 1 1 1 1 1 & & & & & &MMMM    FFF
T) T) T) T) T)h' T) T) T)lR@ R@ R@ R@ R@x( R@ R@ R@h9 9 9 zHMl++++++ s   A A#"A#