Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
supervisor / tests / __pycache__ / test_process.cpython-38.pyc
Size: Mime:
U

©^®\V†ã@sjddlZddlZddlZddlZddlZddlZddlmZddlmZddl	m
Z
mZmZddl	m
Z
ddl	mZddl	mZddl	mZdd	l	mZdd
l	mZddl	mZddl	mZdd
l	mZddl	mZddlmZddlmZGdd„dejƒZGdd„dejƒZGdd„dejƒZGdd„deƒZGdd„dejƒZ Gdd„deƒZ!Gdd„dejƒZ"dS)éN)Úas_bytes©Úmaxint)ÚMockÚpatchÚsentinel)ÚDummyOptions)ÚDummyPConfig)ÚDummyProcess)ÚDummyPGroupConfig)ÚDummyDispatcher)Ú
DummyEvent)ÚDummyFCGIGroupConfig)ÚDummySocketConfig)ÚDummyProcessGroup)ÚDummyFCGIProcessGroup©Ú
Subprocess)Ú
BadCommandc@sÌeZdZdd„Zdd„Zdd„Zdd„Zd	d
„Zdd„Zd
d„Z	dd„Z
dd„Zdd„Zdd„Z
dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;d<„Z d=d>„Z!d?d@„Z"dAdB„Z#dCdD„Z$dEdF„Z%dGdH„Z&dIdJ„Z'dKdL„Z(dMdN„Z)dOdP„Z*dQdR„Z+dSdT„Z,dUdV„Z-dWdX„Z.dYdZ„Z/d[d\„Z0d]d^„Z1d_d`„Z2dadb„Z3dcdd„Z4dedf„Z5dgdh„Z6didj„Z7dkdl„Z8dmdn„Z9dodp„Z:dqdr„Z;dsdt„Z<dudv„Z=dwdx„Z>dydz„Z?d{d|„Z@d}d~„ZAdd€„ZBdd‚„ZCdƒd„„ZDd…d†„ZEd‡dˆ„ZFd‰dŠ„ZGd‹dŒ„ZHddŽ„ZIdd„ZJd‘d’„ZKd“d”„ZLd•d–„ZMd—d˜„ZNd™dš„ZOd›dœ„ZPddž„ZQdŸd „ZRd¡d¢„ZSd£d¤„ZTd¥d¦„ZUd§d¨„ZVd©dª„ZWd«d¬„ZXd­d®„ZYd¯d°„ZZd±S)²ÚSubprocessTestscCsddlm}|S)Nrr)Úsupervisor.processr)Úselfr©rú,./build/lib/supervisor/tests/test_process.pyÚ_getTargetClassszSubprocessTests._getTargetClasscOs| ¡||ŽS©N©r©rÚargÚkwrrrÚ_makeOneszSubprocessTests._makeOnecCsddlm}|ƒdS©Nr)Úclear©Zsupervisor.eventsr"©rr"rrrÚtearDown"szSubprocessTests.tearDowncCsJddlm}ddlm}|j ¡D]"\}}t|tƒr"| ||ƒ|¡q"dS)Nr©Ú
ProcessStates)ÚgetProcessStateDescription)	Úsupervisor.statesr'rr(Ú__dict__ÚitemsÚ
isinstanceÚintÚassertEqual)rr'r(Z	statenameÚcoderrrÚtest_getProcessStateDescription&s

z/SubprocessTests.test_getProcessStateDescriptioncCsÚtƒ}t|ddddd}| |¡}| |j|¡| |jj|¡| |jd¡| |jd¡| |jd¡| |jd¡| |j	d¡| 
|j¡| 
|j¡| |j
d¡| |ji¡| |ji¡| |jd¡dS)NÚcatúbin/catz/tmp/temp123.logz/tmp/temp456.log©Ústdout_logfileZstderr_logfiler)rr	r r.ÚconfigÚoptionsÚ	laststartÚpidZlaststopÚdelayÚassertFalseÚadministrative_stopÚkillingÚbackoffÚpipesÚdispatchersÚspawnerr©rr6r5ÚinstancerrrÚ	test_ctor-s&þ
zSubprocessTests.test_ctorcCsHtƒ}t|ddƒ}| |¡}t|ƒ}| | d¡¡| | d¡¡dS)Nr1r2z<Subprocess atzwith name cat in state STOPPED>)rr	r ÚreprÚ
assertTrueÚ
startswithÚendswith)rr6r5rBÚsrrrÚ	test_reprAs
zSubprocessTests.test_reprcCshtƒ}t|ddƒ}| |¡}tddtdddœ|_| ¡| |jdjd¡| |jdjd	¡dS©
NÚtestú/testT©Úreadable©Úwritable©rérrRF)rr	r rr?Ú
reopenlogsr.Ú
logs_reopenedrArrrÚtest_reopenlogsIs
ÿzSubprocessTests.test_reopenlogscCshtƒ}t|ddƒ}| |¡}tddtdddœ|_| ¡| |jdjd¡| |jdjd	¡dSrJ)rr	r rr?Ú
removelogsr.Zlogs_removedrArrrÚtest_removelogsSs
ÿzSubprocessTests.test_removelogscCsjtƒ}t|ddddd}| |¡}tddtddd	œ|_| ¡| |jd
j¡| |jdj¡dS)NrKrLú/tmp/fooz/tmp/barr3TrMrOrQrrR)	rr	r rr?ZdrainrEZread_event_handledZwrite_event_handledrArrrÚ
test_drain]sþ
ÿzSubprocessTests.test_draincCs.tƒ}t|ddƒ}| |¡}| t|j¡dS)NZ
extraquotezextraquote"©rr	r ÚassertRaisesrÚget_execv_argsrArrrÚ*test_get_execv_args_bad_command_extraquoteis
z:SubprocessTests.test_get_execv_args_bad_command_extraquotecCs.tƒ}t|ddƒ}| |¡}| t|j¡dS)NÚemptyÚrZrArrrÚ%test_get_execv_args_bad_command_emptyos
z5SubprocessTests.test_get_execv_args_bad_command_emptycCs.tƒ}t|ddƒ}| |¡}| t|j¡dS)NZwhitespaceonlyz 	 rZrArrrÚ.test_get_execv_args_bad_command_whitespaceonlyus
z>SubprocessTests.test_get_execv_args_bad_command_whitespaceonlycCs:tƒ}t|ddƒ}| |¡}| ¡}| |ddgf¡dS)NÚnotthereú	/notthere©rr	r r\r.©rr6r5rBÚargsrrrÚtest_get_execv_args_abs_missing{s

z/SubprocessTests.test_get_execv_args_abs_missingcCs<tƒ}t|ddƒ}| |¡}| ¡}| |dddgf¡dS)Nrbz/notthere "an argument"rcúan argumentrdrerrrÚ*test_get_execv_args_abs_withquotes_missing‚s

z:SubprocessTests.test_get_execv_args_abs_withquotes_missingcCs:tƒ}t|ddƒ}| |¡}| ¡}| |ddgf¡dS)NrbrdrerrrÚtest_get_execv_args_rel_missing‰s

z/SubprocessTests.test_get_execv_args_rel_missingcCs<tƒ}t|ddƒ}| |¡}| ¡}| |dddgf¡dS)Nrbznotthere "an argument"rhrdrerrrÚ*test_get_execv_args_rel_withquotes_missings

z:SubprocessTests.test_get_execv_args_rel_withquotes_missingcCs`d}tƒ}t|d|ƒ}| |¡}| ¡}| t|ƒd¡| |dd¡| |dddg¡dS)Nz/bin/sh fooÚshérú/bin/shrRÚfoo©rr	r r\r.Úlen©rÚ
executabler6r5rBrfrrrÚtest_get_execv_args_abs—s
z'SubprocessTests.test_get_execv_args_abscCs`d}tƒ}t|d|ƒ}| |¡}| ¡}| t|ƒd¡| |dd¡| |dddg¡dS)Nzsh foorlrmrrnrRrorprrrrrÚtest_get_execv_args_rel¡s
z'SubprocessTests.test_get_execv_args_relc	sŠt ¡x}tj |j¡\‰}d|}tƒ}t|d|ƒ}‡fdd„|_| 	|¡}| 
¡}| |d|j¡| |d|dg¡W5QRXdS)Nz%s foorlcsˆgSrrr©ÚdirnamerrÚ<lambda>±ózUSubprocessTests.test_get_execv_args_rel_searches_using_pconfig_path.<locals>.<lambda>rrRro)ÚtempfileZNamedTemporaryFileÚosÚpathÚsplitÚnamerr	Zget_pathr r\r.)rÚfÚbasenamersr6r5rBrfrrvrÚ3test_get_execv_args_rel_searches_using_pconfig_path«s

zCSubprocessTests.test_get_execv_args_rel_searches_using_pconfig_pathcCsLtƒ}t|ddƒ}| |¡}| d¡| |jd¡| |jjdd¡dS)NrKrLrorz
spawnerr: foo)rr	r Zrecord_spawnerrr.r@ÚloggerÚdatarArrrÚtest_record_spawnerr·s

z$SubprocessTests.test_record_spawnerrcCsrtƒ}t|ddƒ}| |¡}d|_ddlm}|j|_| ¡}| 	|d¡| 	|j
jdd¡| 	|j|j¡dS)NrlrnTrr&zprocess 'sh' already running)rr	r r8r)r'ÚRUNNINGÚstateÚspawnr.r‚rƒ)rr6r5rBr'ÚresultrrrÚtest_spawn_already_running¿s
z*SubprocessTests.test_spawn_already_runningc	stƒ}t|ddƒ}| |¡}ddlm}|j|_ddlm}g‰| 	|j
‡fdd„¡| ¡}| |d¡| |j
d¡| |jjdd	¡| |j¡| |j¡ddlm}| |j|j¡| tˆƒd
¡ˆd}ˆd}| |j|j¡| |j|j¡dS)NZbadz
/bad/filenamerr&©Úeventscs
ˆ |¡Sr©Úappend©Úx©ÚLrrrxÓryzBSubprocessTests.test_spawn_fail_check_execv_args.<locals>.<lambda>zbad filenamezspawnerr: bad filenamermrR)rr	r r)r'ÚBACKOFFr†Ú
supervisorr‹Ú	subscribeÚProcessStateEventr‡r.r@r‚rƒrEr9r=rqÚ	__class__ÚProcessStateStartingEventÚProcessStateBackoffEvent©	rr6r5rBr'r‹rˆÚevent1Úevent2rrrÚ test_spawn_fail_check_execv_argsËs*
z0SubprocessTests.test_spawn_fail_check_execv_argsc	stƒ}tj|_t|ddƒ}| |¡}ddlm}|j|_	ddl
m}g‰| |j
‡fdd„¡| ¡}| |d¡| |jd¡| |jjdd	¡| |j¡| |j¡ddlm}| |j	|j¡| tˆƒd
¡ˆ\}}| |j|j¡| |j|j¡dS)NÚgoodú/good/filenamerr&rŠcs
ˆ |¡SrrŒrŽrrrrxëryzCSubprocessTests.test_spawn_fail_make_pipes_emfile.<locals>.<lambda>z#too many open files to spawn 'good'z-spawnerr: too many open files to spawn 'good'rm)rÚerrnoZEMFILEÚmake_pipes_errorr	r r)r'r’r†r“r‹r”r•r‡r.r@r‚rƒrEr9r=rqr–r—r˜r™rrrÚ!test_spawn_fail_make_pipes_emfileâs2
ÿÿz1SubprocessTests.test_spawn_fail_make_pipes_emfilec
s
tƒ}d|_t|ddƒ}| |¡}ddlm}|j|_ddlm	}g‰| 
|j‡fdd„¡| ¡}| 
|d¡d	}| 
|j|¡| 
|jjdd
|¡| |j¡| |j¡ddlm}| 
|j|j¡| 
tˆƒd¡ˆ\}}	| 
|j|j¡| 
|	j|j¡dS)NrRrržrr&rŠcs
ˆ |¡SrrŒrŽrrrrxryzBSubprocessTests.test_spawn_fail_make_pipes_other.<locals>.<lambda>z2unknown error making dispatchers for 'good': EPERMúspawnerr: %srm)rr r	r r)r'r’r†r“r‹r”r•r‡r.r@r‚rƒrEr9r=rqr–r—r˜©
rr6r5rBr'r‹rˆÚmsgršr›rrrÚ test_spawn_fail_make_pipes_otherûs,
z0SubprocessTests.test_spawn_fail_make_pipes_othercstƒ}t|dddd}dd„}||_| |¡}ddlm}|j|_dd	lm	}g‰| 
|j‡fd
d„¡| ¡}| 
|d¡d}| 
|j|¡| 
|jjdd
|¡| |j¡| |j¡ddlm}| 
|j|j¡| 
tˆƒd¡ˆ\}	}
| 
|	j|j¡| 
|
j|j¡dS)Nr1ú/bin/catz/a/directory)r~Zcommandr4cSsttjƒ‚dSr)ÚIOErrorrŸZEISDIR©ZenveloperrrÚraise_eisdirszMSubprocessTests.test_spawn_fail_make_dispatchers_eisdir.<locals>.raise_eisdirrr&rŠcs
ˆ |¡SrrŒrŽrrrrxryzISubprocessTests.test_spawn_fail_make_dispatchers_eisdir.<locals>.<lambda>z2unknown error making dispatchers for 'cat': EISDIRr¢rm)rr	Zmake_dispatchersr r)r'r’r†r“r‹r”r•r‡r.r@r‚rƒrEr9r=rqr–r—r˜)rr6r5r©rBr'r‹rˆr¤ršr›rrrÚ'test_spawn_fail_make_dispatchers_eisdirs2ÿ
z7SubprocessTests.test_spawn_fail_make_dispatchers_eisdirc
s0tƒ}tj|_t|ddƒ}| |¡}ddlm}|j|_	ddl
m}g‰| |j
‡fdd„¡| ¡}| |d¡d}| |j|¡| |jjdd	|¡| t|jƒd
¡| t|jƒd
¡| |j¡| |j¡ddlm}| |j	|j¡| tˆƒd¡ˆ\}}	| |j|j¡| |	j|j¡dS)Nrržrr&rŠcs
ˆ |¡SrrŒrŽrrrrx7ryz=SubprocessTests.test_spawn_fork_fail_eagain.<locals>.<lambda>z3Too many processes in process table to spawn 'good'r¢érm)rrŸÚEAGAINÚ
fork_errorr	r r)r'r’r†r“r‹r”r•r‡r.r@r‚rƒrqÚparent_pipes_closedÚchild_pipes_closedrEr9r=r–r—r˜r£rrrÚtest_spawn_fork_fail_eagain.s0
z+SubprocessTests.test_spawn_fork_fail_eagainc
s.tƒ}d|_t|ddƒ}| |¡}ddlm}|j|_ddlm	}g‰| 
|j‡fdd„¡| ¡}| 
|d¡d	}| 
|j|¡| 
|jjdd
|¡| 
t|jƒd¡| 
t|jƒd¡| |j¡| |j¡ddlm}| 
|j|j¡| 
tˆƒd¡ˆ\}}	| 
|j|j¡| 
|	j|j¡dS)
NrRrržrr&rŠcs
ˆ |¡SrrŒrŽrrrrxQryz<SubprocessTests.test_spawn_fork_fail_other.<locals>.<lambda>z+unknown error during fork for 'good': EPERMr¢r«rm)rr­r	r r)r'r’r†r“r‹r”r•r‡r.r@r‚rƒrqr®r¯rEr9r=r–r—r˜r£rrrÚtest_spawn_fork_fail_otherHs0
z*SubprocessTests.test_spawn_fork_fail_othercCsÔtƒ}d|_t|dddd}| |¡}| ¡}| |d¡| |jd¡| |jd¡| |jd¡| t	|j
ƒd¡| t	|jƒ|jd¡| |j
d¡| |jddgf¡| |jd¡| |jdd	i¡dS)
NrrržrR©ZuidTérmú*supervisor: child process was not spawned
)rÚforkpidr	r r‡r.r®r¯Úpgrp_setrqÚdupedÚ
fds_closedÚminfdsÚprivsdroppedÚ
execv_argsÚ
execve_calledÚwritten©rr6r5rBrˆrrrÚtest_spawn_as_child_setuid_okbs&
ÿÿz-SubprocessTests.test_spawn_as_child_setuid_okcCsÔtƒ}d|_d|_t|dddd}| |¡}| ¡}| |d¡| |jd¡| |jd¡| |j	d¡| t
|jƒd¡| t
|jƒ|j
d¡| |jd	d
i¡| |jd¡| |jd¡| |jd¡dS)
Nrzfailure reasonrržrRr²Tr³rmz[supervisor: couldn't setuid to 1: failure reason
supervisor: child process was not spawned
Fé)rrµZ
setuid_msgr	r r‡r.r®r¯r¶rqr·r¸r¹r½rºr¼Ú	_exitcoder¾rrrÚtest_spawn_as_child_setuid_failxs$
ÿz/SubprocessTests.test_spawn_as_child_setuid_failcCsÔtƒ}d|_t|dddd}| |¡}| ¡}| |d¡| |jd¡| |jd¡| |jd¡| t	|j
ƒd¡| t	|jƒ|jd¡| |j
ddgf¡| |jd¡| |jd¡| |jdd	i¡dS)
Nrrržú/tmp©Z	directoryTr³rmr´)rrµr	r r‡r.r®r¯r¶rqr·r¸r¹r»Úchanged_directoryr¼r½r¾rrrÚtest_spawn_as_child_cwd_okŒs*ÿ
ÿÿz*SubprocessTests.test_spawn_as_child_cwd_okcCs€tƒ}d|_t|dddd}| |¡}| ¡}| |d¡| |jddgf¡| |jd¡| |jd¡| |j	ddi¡dS)Nrrržrm)ÚumaskTr´)
rrµr	r r‡r.r»Zumasksetr¼r½r¾rrrÚtest_spawn_as_child_sets_umask£s
ÿÿz.SubprocessTests.test_spawn_as_child_sets_umaskcCsætƒ}d|_d|_t|dddd}| |¡}| ¡}| |d¡| |jd¡| |jd¡| |j	d¡| t
|jƒd¡| t
|jƒ|j
d¡| |jd¡dd	i}| |j|¡| |jd
¡| |jd¡| |jd¡dS)NrrmrržrÃrÄTr³zUsupervisor: couldn't chdir to /tmp: ENOENT
supervisor: child process was not spawned
rÀF)rrµZchdir_errorr	r r‡r.r®r¯r¶rqr·r¸r¹r»r½rÁrÅr¼©rr6r5rBrˆÚoutrrrÚtest_spawn_as_child_cwd_fail´s(ÿ
z,SubprocessTests.test_spawn_as_child_cwd_failcCsÆtƒ}d|_d|_t|ddƒ}| |¡}| ¡}| |d¡| |jd¡| |jd¡| |j	d¡| t
|jƒd¡| t
|jƒ|j
d¡ddi}| |j|¡| |jd¡| |jd	¡dS)
NrrRrržTr³rmzZsupervisor: couldn't exec /good/filename: EPERM
supervisor: child process was not spawned
rÀ)rrµÚexecv_errorr	r r‡r.r®r¯r¶rqr·r¸r¹r½rºrÁrÉrrrÚ&test_spawn_as_child_execv_fail_oserrorÊs 
z6SubprocessTests.test_spawn_as_child_execv_fail_oserrorcCsÜtƒ}d|_d|_t|ddƒ}| |¡}| ¡}| |d¡| |jd¡| |jd¡| |j	d¡| t
|jƒd¡| t
|jƒ|j
d¡|jd}d}| | |¡¡| d|k¡| |jd¡| |jd	¡dS)
NrrmrržTr³z)supervisor: couldn't exec /good/filename:ÚRuntimeErrorrÀ)rrµrÌr	r r‡r.r®r¯r¶rqr·r¸r¹r½rErFrºrÁ)rr6r5rBrˆr¤ÚheadrrrÚ,test_spawn_as_child_execv_fail_runtime_errorÝs$

z<SubprocessTests.test_spawn_as_child_execv_fail_runtime_errorcCshtƒ}d|_t|ddddid}| |¡}| ¡}| |d¡| |jddgf¡| |jdd¡dS)Nrr1r¦Z_TEST_Ú1)Zenvironment)rrµr	r r‡r.r»Úexecv_environmentr¾rrrÚ,test_spawn_as_child_uses_pconfig_environmentñsÿ
z<SubprocessTests.test_spawn_as_child_uses_pconfig_environmentcCs¶tƒ}d|_t|ddƒ}| |¡}Gdd„dƒ}|ƒ|_|ƒ|j_| ¡}| |d¡| |jddgf¡| |j	dd¡| |j	dd¡| |j	d	d
¡| |j	dd¡dS)
Nrr1r¦c@seZdZdZdS)zQSubprocessTests.test_spawn_as_child_environment_supervisor_envvars.<locals>.DummyÚdummyN)Ú__name__Ú
__module__Ú__qualname__r~rrrrÚDummysrØZSUPERVISOR_ENABLEDrÑZSUPERVISOR_PROCESS_NAMEZSUPERVISOR_GROUP_NAMErÔZSUPERVISOR_SERVER_URLzhttp://localhost:9001)
rrµr	r Úgroupr5r‡r.r»rÒ)rr6r5rBrØrˆrrrÚ2test_spawn_as_child_environment_supervisor_envvarsüs4

ÿÿÿþzBSubprocessTests.test_spawn_as_child_environment_supervisor_envvarscCsÚtƒ}d|_t|dddd}d|_| |¡}| ¡}| |d¡| |jd¡| |jd¡| |j	d¡| t
|jƒd¡| t
|jƒ|j
d¡| |jd¡| |jddgf¡| |jd¡| |jdd	i¡dS)
NrrržrRr²Trmr³r´)rrµr	Úredirect_stderrr r‡r.r®r¯r¶rqr·r¸r¹rºr»r¼r½r¾rrrÚ%test_spawn_as_child_stderr_redirecteds(
ÿÿz5SubprocessTests.test_spawn_as_child_stderr_redirectedcCs,tƒ}d|_t|ddƒ}| |¡}| ¡}| |d¡| |jdjt¡| |jdjt¡| |jdjt¡| |j	dd¡| |j	dd¡| |j	d	d¡| |j
d¡| t|jƒd
¡| |j
jdd¡| |jd¡| |j¡| |jjjd|¡dd
lm}| |j|j¡dS)Né
rržéééÚstdinÚstdoutÚstderrr«rzspawned: 'good' with pid 10r&)rrµr	r r‡r.r?r–rr>r®rqr¯r‚rƒr@rEr9r5r6Ú
pidhistoryr)r'r†ÚSTARTING)rr6r5rBrˆr'rrrÚtest_spawn_as_parent)s(
z$SubprocessTests.test_spawn_as_parentcCsœtƒ}d|_t|dddd}| |¡}| ¡}| |d¡| |jdjt¡| |jdjt¡| |j	dd¡| |j	d	d¡| |j	d
d¡dS)NrÝrržT)rÛrÞrßrárârã)
rrµr	r r‡r.r?r–rr>r¾rrrÚtest_spawn_redirect_stderr?sÿ
z*SubprocessTests.test_spawn_redirect_stderrcCsˆd}tƒ}t|d|ƒ}| |¡}dd}| t|j|¡d|_| ¡| |¡|jd}| 	||j
|j¡d|_| t|j|¡dS)Nr¦ÚoutputÚaé rRráT)
rr	r r[ÚOSErrorÚwriterµr‡r>r.r?Zinput_bufferr<©rrsr6r5rBZsentÚstdin_fdrrrÚ
test_writeMs


zSubprocessTests.test_writecCsrd}tƒ}t|d|ƒ}| |¡}dd}| t|j|¡d|_| ¡|jd}|j	| 
¡| t|j|¡dS©Nr¦rèrérêrRrá)rr	r r[rërìrµr‡r>r?ÚcloserírrrÚtest_write_dispatcher_closed\s

z,SubprocessTests.test_write_dispatcher_closedc
Cs¶d}tƒ}t|d|ƒ}| |¡}d|_| ¡|jd}|j| ¡d|jd<z| d¡| 	d¡WnHt
k
r°}z*| |jdt
j¡| |jdd¡W5d}~XYnXdS)	Nr¦rèrRrároúnothing raisedrzProcess has no stdin channel)rr	r rµr‡r>r?rñrìÚfailrër.rfrŸÚEPIPE)rrsr6r5rBrîÚexcrrrÚtest_write_stdin_fd_noneis



z(SubprocessTests.test_write_stdin_fd_nonecCsrd}tƒ}t|d|ƒ}| |¡}dd}| t|j|¡d|_| ¡|jd}t	j
|j|_| t|j|¡dSrð)
rr	r r[rërìrµr‡r>rŸrõr?Zflush_errorrírrrÚ(test_write_dispatcher_flush_raises_epipezs

z8SubprocessTests.test_write_dispatcher_flush_raises_epipecs¸ddlm}zvg‰‡fdd„}t tj|¡|ƒ}tƒ}t|d|ƒ}| 	|¡}| 
¡}|jjd}| 
| d¡¡| t|jƒd¡| 
|j¡| |j|¡|j}	zt d¡ ¡}
WqôWq¦tk
rð}z|jdtjkrà‚W5d}~XYq¦Xq¦t d	¡| 
|
 tt|	ƒƒ¡d
k¡| tj¡}t d	¡| |d¡t  d
tj!¡\}}
t d¡ ¡}
| |
 tt|	ƒƒ¡d
¡| "ˆg¡W5zt |¡WnYnXt tjtj¡XdS)Nr)ÚmakeSpewcsˆ d¡dS)NTrŒ)rf©ZsigchldsrrÚ
sighandlerŒsz=SubprocessTests._dont_test_spawn_and_kill.<locals>.sighandlerZspewzspawned: 'spew' with pidr«Zpsgš™™™™™¹?éÿÿÿÿ)#Úsupervisor.tests.baserùr{ÚremoveÚsignalÚSIGCHLDÚSIG_DFLrr	r r‡r‚rƒrErFr.rqr>r8ÚpopenÚreadr§rfrŸZEINTRÚtimeÚsleepÚfindrrDÚkillÚSIGTERMÚwaitpidÚWNOHANGÚassertNotEqual)rrùrsrûr6r5rBrˆr¤ZorigpidrƒZwhyr8ÚstsrrúrÚ_dont_test_spawn_and_kill‡sH


z)SubprocessTests._dont_test_spawn_and_killcCsºtƒ}t|ddƒ}| |¡}d|_tdd}d|i|_ddlm}|j|_	t
 
¡|_| ¡| 
|j¡| |jd¡| 
|j¡| |jjdd	¡| 
|j¡| |jdtj¡dS)
NrKrLéTrOrorr&ú)killing test (pid 11) with signal SIGTERM)rr	r r8rr?r)r'r…r†rÚlaststopreportÚstoprEr;r.r9r‚rƒr<Úkillsrÿr©rr6r5rBÚ
dispatcherr'rrrÚ	test_stop²s 



zSubprocessTests.test_stopc
Csštƒ}t|ddƒ}| |¡}d|_tdd}d|i|_ddlm}|j|_	z| 
¡| d	¡Wn4tk
r”}z| 
|jdd
¡W5d}~XYnXdS)NrKrLrTrOrorr&rózCAssertion failed for test: STOPPED not in RUNNING STARTING STOPPING)rr	r r8rr?r)r'ÚSTOPPEDr†rrôÚAssertionErrorr.rf)rr6r5rBrr'rörrrÚ&test_stop_not_in_stoppable_state_errorÅs


z6SubprocessTests.test_stop_not_in_stoppable_state_errorcCsjtƒ}t|ddƒ}| |¡}d|_tdd}d|i|_ddlm}|j|_	| 
¡| t|j
jƒd¡dS)	NrKrLrTrOrorr&)rr	r r8rr?r)r'rr†Ústop_reportr.rqr‚rƒrrrrÚ3test_stop_report_logs_nothing_if_not_stopping_stateÕs


zCSubprocessTests.test_stop_report_logs_nothing_if_not_stopping_statecCs¶tƒ}t|ddƒ}| |¡}d|_tdd}d|i|_ddlm}|j|_	| 
|jd¡| ¡| 
t
|jjƒd	¡| 
|jjdd
¡| |jd¡| ¡| 
t
|jjƒd	¡dS)NrKrLrTrOrorr&rRúwaiting for test to stop)rr	r r8rr?r)r'ÚSTOPPINGr†r.rrrqr‚rƒrrrrrÚ1test_stop_report_logs_throttled_by_laststopreportás


zASubprocessTests.test_stop_report_logs_throttled_by_laststopreportcCsðt ¡d}tƒ}t|ddƒ}| |¡}d|_tdd}d|i|_dd	lm}|j	|_
||_| ¡| 
t|jjƒd¡| |j|k¡t d
¡| ¡| 
t|jjƒd¡| 
|jjdd¡| |jd¡| ¡| 
t|jjƒd¡dS)
NérKrLrTrOrorr&rmrRr)rrr	r r8rr?r)r'rr†rrr.rqr‚rƒrErr)rÚfuture_timer6r5rBrr'rrrÚ)test_stop_report_laststopreport_in_futureòs(



z9SubprocessTests.test_stop_report_laststopreport_in_futurecs¾tƒ}t|ddƒ}| |¡}g‰ddlm}ddlm}| |j‡fdd„¡|j	|_
| ¡| |j
¡| |j¡| |j¡| |j
|j¡| tˆƒd¡ˆd}| |j|j¡dS)	NrKrLrr&rŠcs
ˆ |¡SrrŒrŽrrrrxryz.SubprocessTests.test_give_up.<locals>.<lambda>rR)rr	r r)r'r“r‹r”r•r’r†Zgive_uprEÚsystem_stopr:r9r=r.ÚFATALrqr–ÚProcessStateFatalEvent©rr6r5rBr'r‹ÚeventrrrÚtest_give_ups 
zSubprocessTests.test_give_upcCsLtƒ}t|ddƒ}| |¡}| tj¡| |jjdd¡| 	|j
¡dS)NrKrLrz=attempted to kill test with sig SIGTERM but it wasn't running)rr	r rrÿrr.r‚rƒr:r<rArrrÚtest_kill_nopid&s
ÿzSubprocessTests.test_kill_nopidcstƒ}t|ddƒ}d|_| |¡}g‰ddlm}ddlm}| |j	‡fdd„¡d	|_
|j|_| 
tj¡| |jjdd
¡| |jjd d¡¡| d|jjdk¡| |j¡| tˆƒd
¡ˆd}ˆd}| |j|j¡| |j|j¡dS)NrKrLrRrr&rŠcs
ˆ |¡SrrŒrŽrrrrx7ryz1SubprocessTests.test_kill_error.<locals>.<lambda>rrzunknown problem killing testÚ	Tracebackrm)rr	Ú
kill_errorr r)r'r“r‹r”r•r8r…r†rrÿrr.r‚rƒrErFr:r<rqr–ÚProcessStateStoppingEventÚProcessStateUnknownEvent)rr6r5rBr'r‹ršr›rrrÚtest_kill_error/s,
ÿzSubprocessTests.test_kill_errorcsÈtƒ}t|ddƒ}| |¡}d|_g‰ddlm}ddlm}| |j	‡fdd„¡|j
|_| t
j¡| |jjdd	¡| |j¡| |jdt
j¡| tˆƒd
¡ˆd}| |j|j¡dS)NrKrLrrr&rŠcs
ˆ |¡SrrŒrŽrrrrxOryz9SubprocessTests.test_kill_from_starting.<locals>.<lambda>rrR)rr	r r8r)r'r“r‹r”r•rår†rrÿrr.r‚rƒrEr<rrqr–r*r$rrrÚtest_kill_from_startingGs 
z'SubprocessTests.test_kill_from_startingcsÈtƒ}t|ddƒ}| |¡}d|_g‰ddlm}ddlm}| |j	‡fdd„¡|j
|_| t
j¡| |jjdd	¡| |j¡| |jdt
j¡| tˆƒd
¡ˆd}| |j|j¡dS)NrKrLrrr&rŠcs
ˆ |¡SrrŒrŽrrrrxbryz8SubprocessTests.test_kill_from_running.<locals>.<lambda>rrR)rr	r r8r)r'r“r‹r”r•r…r†rrÿrr.r‚rƒrEr<rrqr–r*r$rrrÚtest_kill_from_runningZs 
z&SubprocessTests.test_kill_from_runningcs¬tƒ}t|ddƒ}| |¡}d|_g‰ddlm}ddlm}| |j	‡fdd„¡|j
|_| t
j¡| |jjdd	¡| |j¡| |jdt
j¡| ˆg¡dS)
NrKrLrrr&rŠcs
ˆ |¡SrrŒrŽrrrrxuryz9SubprocessTests.test_kill_from_stopping.<locals>.<lambda>z)killing test (pid 11) with signal SIGKILL©rr	r r8r)r'r“r‹r”r•rr†rrÿÚSIGKILLr.r‚rƒrEr<r©rr6r5rBr'r‹rrrÚtest_kill_from_stoppingms
z'SubprocessTests.test_kill_from_stoppingcsžtƒ}t|ddƒ}| |¡}g‰ddlm}ddlm}| |j‡fdd„¡|j	|_
| tj
¡| |jjdd¡| |j¡ˆd}| |j|j¡dS)	NrKrLrr&rŠcs
ˆ |¡SrrŒrŽrrrrx…ryz8SubprocessTests.test_kill_from_backoff.<locals>.<lambda>z2Attempted to kill test, which is in BACKOFF state.)rr	r r)r'r“r‹r”r•r’r†rrÿr0r.r‚rƒr:r<r–ÚProcessStateStoppedEventr$rrrÚtest_kill_from_backoff~s
ÿz&SubprocessTests.test_kill_from_backoffcs°tƒ}t|dddd}| |¡}d|_g‰ddlm}ddlm}| |j	‡fd	d
„¡|j
|_| t
j¡| |jjdd¡| |j¡| |jdt
j¡| ˆg¡dS)
NrKrLT)Zkillasgrouprrr&rŠcs
ˆ |¡SrrŒrŽrrrrx–ryzGSubprocessTests.test_kill_from_stopping_w_killasgroup.<locals>.<lambda>z7killing test (pid 11) process group with signal SIGKILLéõÿÿÿr/r1rrrÚ%test_kill_from_stopping_w_killasgroupŽs
z5SubprocessTests.test_kill_from_stopping_w_killasgroupcsìtƒ}t|dddd}| |¡}d|_g‰ddlm}ddlm}| |j	‡fd	d
„¡|j
|_| t
j¡| |jjdd¡| |j¡| |jdt
j¡| tˆƒd
¡ˆd}| |j|j¡| |jdg¡| |j|j
¡dS)NrKrLT)Zstopasgrouprrr&rŠcs
ˆ |¡SrrŒrŽrrrrx§ryz2SubprocessTests.test_stopasgroup.<locals>.<lambda>z7killing test (pid 11) process group with signal SIGTERMr5rR)r8r)rr	r r8r)r'r“r‹r”r•r…r†rrÿrr.r‚rƒrEr<rrqr–r*Úextra_valuesÚ
from_stater$rrrÚtest_stopasgroupŸs$
z SubprocessTests.test_stopasgroupcs–tƒ}g‰g‰‡‡fdd„}||_t|ddƒ}| |¡}d|_ddlm}|j|_| 	t	j
¡| ˆ|jg¡| ˆt	j
g¡| |jj
dd¡dS)	Ncsˆ |¡ˆ |¡dSrrŒ©r8Zsig©Z	killedpidZ	killedsigrrrºs
z)SubprocessTests.test_signal.<locals>.killrKrLrrr&ú"sending test (pid 11) sig SIGWINCH)rrr	r r8r)r'r…r†rÿÚSIGWINCHr.r‚rƒ©rr6rr5rBr'rr;rÚtest_signal´s
zSubprocessTests.test_signalcs‚tƒ}g‰g‰‡‡fdd„}||_t|ddƒ}| |¡}d|_ddlm}|j|_| 	t	j
¡| |jj
dd¡| ˆg¡dS)Ncsˆ |¡ˆ |¡dSrrŒr:r;rrrÔs
z1SubprocessTests.test_signal_stopped.<locals>.killrKrLrr&z9attempted to send test sig SIGWINCH but it wasn't running)rrr	r r8r)r'rr†rÿr=r.r‚rƒr>rr;rÚtest_signal_stoppedÎs
z#SubprocessTests.test_signal_stoppedcsètƒ}t|ddƒ}d|_| |¡}g‰ddlm}ddlm}| |j	‡fdd„¡d	|_
|j|_| 
t
j¡| |jjdd
¡| |jjd d¡¡| d|jjdk¡| |j¡| tˆƒd¡ˆd}| |j|j¡dS)
NrKrLrRrr&rŠcs
ˆ |¡SrrŒrŽrrrrxðryz3SubprocessTests.test_signal_error.<locals>.<lambda>rr<z%unknown problem sending sig test (11)r()rr	r)r r)r'r“r‹r”r•r8r…r†rÿr=r.r‚rƒrErFr:r<rqr–r+r$rrrÚtest_signal_errorès,
ÿÿz!SubprocessTests.test_signal_errorcsHtƒ}t|dddd}| |¡}d|_||jjjd<d|_ddd	œ}||_d
dl	m
}d
dlm}|j
|_g‰| |j‡fd
d„¡d|_| dd¡| |j¡| |jd
¡| |j|¡| |ji¡| |ji¡| |jjd
d¡| |jd¡| tˆƒd¡ˆd
}| |j|j¡| |jdg¡| |j|j
¡dS)NrbrcrX©r4)é{rRrCTr_©rârãrr&rŠcs
ˆ |¡SrrŒrŽrrrrxryz<SubprocessTests.test_finish_stopping_state.<locals>.<lambda>rRz(stopped: notthere (terminated by SIGHUP)rü©r8rC)rr	r Z
waitstatusr5r6rär<r>r)r'r“r‹rr†r”r•r8Úfinishr:r.r®r?r‚rƒÚ
exitstatusrqr–r3r7r8©rr6r5rBr>r'r‹r%rrrÚtest_finish_stopping_stateþs:ÿ

z*SubprocessTests.test_finish_stopping_statecsVtƒ}t|dddd}| |¡}||jjjd<dddœ}||_dg|j_d	d
lm	}d	dl
m}|j|_
g‰| |j‡fdd
„¡d|_| dd¡| |j¡| |jd	¡| |j|¡| |ji¡| |ji¡| |jjd	d¡| |jd¡| tˆƒd¡ˆd	}| |j|j¡| |jd¡| |jddg¡| |j|j¡dS)NrbrcrXrBrCr_rDrürr&rŠcs
ˆ |¡SrrŒrŽrrrrx*ryzISubprocessTests.test_finish_running_state_exit_expected.<locals>.<lambda>rRú1exited: notthere (terminated by SIGHUP; expected)T©ÚexpectedTrE) rr	r r5r6rär>Ú	exitcodesr)r'r“r‹r…r†r”r•r8rFr:r<r.r®r?r‚rƒrGrqr–ÚProcessStateExitedEventrLr7r8rHrrrÚ'test_finish_running_state_exit_expectedsBÿ


ÿÿz7SubprocessTests.test_finish_running_state_exit_expectedcs¾tƒ}t|dddd}| |¡}||jjjd<dddœ}||_dg|j_t ¡d	|_	d
dl
m}d
dlm
}|j|_g‰| |j‡fd
d„¡d|_| dd¡| |j¡| |jd
¡| |j|¡| |ji¡| |ji¡| |jjd
d¡| |jjdd¡| |jd¡| tˆƒd¡ˆd
}| |j|j¡| |jd¡| |j dg¡| |j!|j¡ˆd}| |j|j"¡| |jd¡| |j ddg¡| |j!|j#¡dS)NrbrcrXrBrCr_rDrürrr&rŠcs
ˆ |¡SrrŒrŽrrrrxKryzPSubprocessTests.test_finish_starting_state_laststart_in_future.<locals>.<lambda>rRú‰process 'notthere' (123) laststart time is in the future, don't know how long process was running so assuming it did not exit too quicklyrJrmTrErK)$rr	r r5r6rär>rMrr7r)r'r“r‹rår†r”r•r8rFr:r<r.r®r?r‚rƒrGrqr–ÚProcessStateRunningEventrLr7r8rNr…rHrrrÚ.test_finish_starting_state_laststart_in_future=sPÿ


ÿÿz>SubprocessTests.test_finish_starting_state_laststart_in_futurecsBtƒ}t|ddddd}| |¡}||jjjd<dddœ}||_d	g|j_t ¡|_	d
dl
m}d
dlm
}|j|_g‰| |j‡fd
d„¡d|_| dd¡| |j¡| |jd
¡| |j|¡| |ji¡| |ji¡| |jjd
d¡| |jd¡| tˆƒd¡ˆd
}| |j|j¡| |j|j¡dS)NrbrcrXrÝ©r4Ú	startsecsrCr_rDrürr&rŠcs
ˆ |¡SrrŒrŽrrrrxtryzOSubprocessTests.test_finish_starting_state_exited_too_quickly.<locals>.<lambda>rRz5exited: notthere (terminated by SIGHUP; not expected)) rr	r r5r6rär>rMrr7r)r'r“r‹rår†r”r•r8rFr:r<r.r®r?r‚rƒrGrqr–r˜r8rHrrrÚ-test_finish_starting_state_exited_too_quicklyfs>ÿ



ÿz=SubprocessTests.test_finish_starting_state_exited_too_quicklycsbtƒ}t|ddddd}| |¡}||jjjd<dddœ}||_d	g|j_t ¡|_	d
dl
m}d
dlm
}|j|_g‰| |j‡fd
d„¡d|_| dd¡| |j¡| |jd
¡| |j|¡| |ji¡| |ji¡| |jjd
d¡| |jd	¡| tˆƒd¡ˆd
}| |j|j¡| |jd¡| |j ddg¡| |j!|j¡dS)NrbrcrXrÝrSrCr_rDrürr&rŠcs
ˆ |¡SrrŒrŽrrrrx–ryzdSubprocessTests.test_finish_running_state_exited_too_quickly_due_to_clock_rollback.<locals>.<lambda>rRrJTrKrE©"rr	r r5r6rär>rMrr7r)r'r“r‹r…r†r”r•r8rFr:r<r.r®r?r‚rƒrGrqr–rNrLr7r8rHrrrÚBtest_finish_running_state_exited_too_quickly_due_to_clock_rollbackˆsFÿ



ÿÿzRSubprocessTests.test_finish_running_state_exited_too_quickly_due_to_clock_rollbackcsxtƒ}t|dddd}| |¡}||jjjd<dddœ}||_dg|j_t ¡d	|_	d
dl
m}d
dlm
}|j|_g‰| |j‡fd
d„¡d|_| dd¡| |j¡| |jd
¡| |j|¡| |ji¡| |ji¡| |jjd
d¡| |jjdd¡| |jd¡| tˆƒd¡ˆd
}| |j|j¡| |jd¡| |j ddg¡| |j!|j¡dS)NrbrcrXrBrCr_rDrürrr&rŠcs
ˆ |¡SrrŒrŽrrrrx·ryzOSubprocessTests.test_finish_running_state_laststart_in_future.<locals>.<lambda>rRrPrJTrKrErVrHrrrÚ-test_finish_running_state_laststart_in_future©sJÿ


ÿÿÿz=SubprocessTests.test_finish_running_state_laststart_in_futurec	sðddlm}g‰| |j‡fdd„¡| |j‡fdd„¡tƒ}t|dddd	d
}| |¡}ddlm	}|j
|_tƒ}||_
| dd
¡| tˆƒd¡ˆ\}}| |j|j¡| |j|j¡| |j|¡| |j
|¡| |j
d¡dS)NrrŠcs
ˆ |¡SrrŒrŽrrrrxÑryzOSubprocessTests.test_finish_with_current_event_sends_rejected.<locals>.<lambda>cs
ˆ |¡SrrŒrŽrrrrxÒryrbrcrXrÝrSr&rCrRrm)r“r‹r”r•ÚEventRejectedEventrr	r r)r'r…r†r
r%rFr.rqr–rNÚprocess)	rr‹r6r5rBr'r%ršr›rrrÚ-test_finish_with_current_event_sends_rejectedÎs0ÿ
ÿz=SubprocessTests.test_finish_with_current_event_sends_rejectedcCs6tƒ}t|ddƒ}| |¡}| ¡| |jd¡dS)NrKrL©rr	r Zset_uidr.rºrArrrÚtest_set_uid_no_uidås

z#SubprocessTests.test_set_uid_no_uidcCsFtƒ}t|dddd}| |¡}| ¡}| |jd¡| |d¡dS)NrKrLrRr²r\)rr6r5rBr¤rrrÚtest_set_uidìs
zSubprocessTests.test_set_uidcCs‚tƒ}t|ddddd}| |¡}t|ddddd}| |¡}t|dddd	d}| |¡}|||g}| ¡| ||||g¡dS)
NrbrcrXrR)r4ÚpriorityZ	notthere1rmZ	notthere2r³)rr	r Úsortr.)rr6r5rBZ	instance1Z	instance2r‘rrrÚtest_cmp_bypriorityôs&þ
þ
þ

z#SubprocessTests.test_cmp_byprioritycs’ddlm}g‰| |j‡fdd„¡ddlm}m}tƒ}|j|_	t
|dddƒ}| |¡}d|_|j
|_| ¡| |j|j
¡| ˆg¡dS)NrrŠcs
ˆ |¡SrrŒrŽrrrrx
ryzYSubprocessTests.test_transition_stopped_to_starting_supervisor_stopping.<locals>.<lambda>©r'ÚSupervisorStatesrZú/bin/process)r“r‹r”r•r)r'rcrÚSHUTDOWNÚmoodr	r r7rr†Ú
transitionr.©rr‹r'rcr6ÚpconfigrZrrrÚ7test_transition_stopped_to_starting_supervisor_stopping
s
zGSubprocessTests.test_transition_stopped_to_starting_supervisor_stoppingcs®ddlm}g‰| |j‡fdd„¡ddlm}m}tƒ}|j|_	t
|dddƒ}| |¡}d|_|j
|_| ¡| |j|j¡| tˆƒd¡ˆd}| |j|j¡dS)	NrrŠcs
ˆ |¡SrrŒrŽrrrrxryzXSubprocessTests.test_transition_stopped_to_starting_supervisor_running.<locals>.<lambda>rbrZrdrR)r“r‹r”r•r)r'rcrr…rfr	r r7rr†rgr.rårqr–r—)rr‹r'rcr6rirZr%rrrÚ6test_transition_stopped_to_starting_supervisor_runnings
zFSubprocessTests.test_transition_stopped_to_starting_supervisor_runningcs¶ddlm}g‰| |j‡fdd„¡ddlm}m}tƒ}|j|_	t
|dddƒ}ddlm}||_
| |¡}d	|_d
|_|j|_| ¡| |j|j¡| |j¡| ˆg¡dS)NrrŠcs
ˆ |¡SrrŒrŽrrrrx0ryzXSubprocessTests.test_transition_exited_to_starting_supervisor_stopping.<locals>.<lambda>rbrZrd©ÚRestartUnconditionallyrRT)r“r‹r”r•r)r'rcrrerfr	Úsupervisor.datatypesrmÚautorestartr r7r!ÚEXITEDr†rgr.rE)rr‹r'rcr6rirmrZrrrÚ6test_transition_exited_to_starting_supervisor_stopping-s"
zFSubprocessTests.test_transition_exited_to_starting_supervisor_stoppingcs´ddlm}g‰| |j‡fdd„¡ddlm}tƒ}t|dddƒ}ddlm	}||_
| |¡}d	|_|j
|_| ¡| |j|j¡| tˆƒd	¡ˆd}| |j|j¡dS)
NrrŠcs
ˆ |¡SrrŒrŽrrrrxEryz^SubprocessTests.test_transition_exited_to_starting_uncond_supervisor_running.<locals>.<lambda>r&rZrdrlrR)r“r‹r”r•r)r'rr	rnrmror r7rpr†rgr.rårqr–r—)rr‹r'r6rirmrZr%rrrÚ<test_transition_exited_to_starting_uncond_supervisor_runningBs 
zLSubprocessTests.test_transition_exited_to_starting_uncond_supervisor_runningcsºddlm}g‰| |j‡fdd„¡ddlm}tƒ}t|dddƒ}ddlm	}||_
| |¡}d	|_|j
|_d
|_| ¡| |j|j¡| tˆƒd	¡ˆd}| |j|j¡dS)NrrŠcs
ˆ |¡SrrŒrŽrrrrxXryz^SubprocessTests.test_transition_exited_to_starting_condit_supervisor_running.<locals>.<lambda>r&rZrd©ÚRestartWhenExitUnexpectedrRZbogus)r“r‹r”r•r)r'rr	rnrtror r7rpr†rGrgr.rårqr–r—)rr‹r'r6rirtrZr%rrrÚ<test_transition_exited_to_starting_condit_supervisor_runningUs"
zLSubprocessTests.test_transition_exited_to_starting_condit_supervisor_runningcsžddlm}g‰| |j‡fdd„¡ddlm}tƒ}t|dddƒ}ddlm	}||_
| |¡}d	|_|j
|_d|_| ¡| |j|j
¡| ˆg¡dS)
NrrŠcs
ˆ |¡SrrŒrŽrrrrxlryzbSubprocessTests.test_transition_exited_to_starting_condit_fls_supervisor_running.<locals>.<lambda>r&rZrdrsrR)r“r‹r”r•r)r'rr	rnrtror r7rpr†rGrgr.)rr‹r'r6rirtrZrrrÚ@test_transition_exited_to_starting_condit_fls_supervisor_runningis
zPSubprocessTests.test_transition_exited_to_starting_condit_fls_supervisor_runningcsžddlm}g‰| |j‡fdd„¡ddlm}m}tƒ}|j|_	t
|dddƒ}| |¡}d|_d|_
d|_|j|_| ¡| |j|j¡| ˆg¡dS)	NrrŠcs
ˆ |¡SrrŒrŽrrrrx~ryzYSubprocessTests.test_transition_backoff_to_starting_supervisor_stopping.<locals>.<lambda>rbrZrdrR)r“r‹r”r•r)r'rcrrerfr	r r7r9r=r’r†rgr.rhrrrÚ7test_transition_backoff_to_starting_supervisor_stopping{s
zGSubprocessTests.test_transition_backoff_to_starting_supervisor_stoppingcs¶ddlm}g‰| |j‡fdd„¡ddlm}m}tƒ}|j|_	t
|dddƒ}| |¡}d|_d|_
d|_|j|_| ¡| |j|j¡| tˆƒd¡| ˆdj|j¡dS)	NrrŠcs
ˆ |¡SrrŒrŽrrrrxryzXSubprocessTests.test_transition_backoff_to_starting_supervisor_running.<locals>.<lambda>rbrZrdrR)r“r‹r”r•r)r'rcrr…rfr	r r7r9r=r’r†rgr.rårqr–r—rhrrrÚ6test_transition_backoff_to_starting_supervisor_runnings 
zFSubprocessTests.test_transition_backoff_to_starting_supervisor_runningcsžddlm}g‰| |j‡fdd„¡ddlm}m}tƒ}|j|_	t
|dddƒ}| |¡}d|_t
|_d|_|j|_| ¡| |j|j¡| ˆg¡dS)	NrrŠcs
ˆ |¡SrrŒrŽrrrrx£ryz_SubprocessTests.test_transition_backoff_to_starting_supervisor_running_notyet.<locals>.<lambda>rbrZrdrR)r“r‹r”r•r)r'rcrr…rfr	r r7rr9r=r’r†rgr.rhrrrÚ=test_transition_backoff_to_starting_supervisor_running_notyet s
zMSubprocessTests.test_transition_backoff_to_starting_supervisor_running_notyetcsòddlm}g‰| |j‡fdd„¡ddlm}tƒ}t|dddƒ}| |¡}d|_	d|_
d	|_d|_d|_
d
|_d|_|j|_| ¡| |j	d¡| |j
d¡| |j¡| |jjdd¡| tˆƒd¡ˆd}| |j|j¡dS)
NrrŠcs
ˆ |¡SrrŒrŽrrrrxµryzESubprocessTests.test_transition_starting_to_running.<locals>.<lambda>r&rZrdrRFÚabcÚdefz_success: process entered RUNNING state, process has stayed up for > than 10 seconds (startsecs))r“r‹r”r•r)r'rr	r r=r9r!r7r8Ú
stdout_bufferÚ
stderr_bufferrår†rgr.r:r‚rƒrqr–rQ©rr‹r'r6rirZr%rrrÚ#test_transition_starting_to_running²s2
ÿz3SubprocessTests.test_transition_starting_to_runningc	sRddlm}g‰| |j‡fdd„¡ddlm}t ¡d}tƒ}d}t|ddd	|d
}| 	|¡}d|_
d|_d|_||_
d|_d
|_d|_|j|_| ¡| |j|j¡| |j
|k¡t |d¡| ¡| |j
d¡| |jd¡| |j¡| |j|j¡| |jjdd |¡¡| tˆƒd¡ˆd}| |j|j¡dS)NrrŠcs
ˆ |¡SrrŒrŽrrrrxÕryzYSubprocessTests.test_transition_starting_to_running_laststart_in_future.<locals>.<lambda>r&rrmrZrd)rTrRFrzr{z_success: process entered RUNNING state, process has stayed up for > than {} seconds (startsecs))r“r‹r”r•r)r'rrr	r r=r9r!r7r8r|r}rår†rgr.rErr:r…r‚rƒÚformatrqr–rQ)	rr‹r'rr6Ztest_startsecsrirZr%rrrÚ7test_transition_starting_to_running_laststart_in_futureÒsH
ÿ
ÿÿzGSubprocessTests.test_transition_starting_to_running_laststart_in_futurecsÞddlm}g‰| |j‡fdd„¡ddlm}t ¡d}tƒ}t|dddƒ}| 	|¡}d	|_
||_d|_|j
|_| ¡| |j|j
¡| |j|k¡| ¡| |j|j¡| tˆƒd	¡| ˆdj|j¡dS)
NrrŠcs
ˆ |¡SrrŒrŽrrrrx	ryzUSubprocessTests.test_transition_backoff_to_starting_delay_in_future.<locals>.<lambda>r&rrZrdrR)r“r‹r”r•r)r'rrr	r r7r9r=r’r†rgr.rErårqr–r—)rr‹r'rr6rirZrrrÚ3test_transition_backoff_to_starting_delay_in_futures&
zCSubprocessTests.test_transition_backoff_to_starting_delay_in_futurecsìddlm}g‰| |j‡fdd„¡ddlm}tƒ}t|dddƒ}| |¡}d|_	d	|_
d|_d
|_d|_
d|_|j|_| ¡| |j
d¡| |jd¡| |j¡| |jjdd
¡| tˆƒd¡ˆd}| |j|j¡dS)NrrŠcs
ˆ |¡SrrŒrŽrrrrx+ryzBSubprocessTests.test_transition_backoff_to_fatal.<locals>.<lambda>r&rZrdrRi'Frzr{zHgave up: process entered FATAL state, too many start retries too quickly)r“r‹r”r•r)r'rr	r r7r=r9r!r|r}r’r†rgr.rEr‚rƒrqr–r#r~rrrÚ test_transition_backoff_to_fatal(s0
ÿz0SubprocessTests.test_transition_backoff_to_fatalcs†ddlm}g‰| |j‡fdd„¡ddlm}tƒ}t|dddƒ}| |¡}t	|_
|j|_| 
¡| |j|j¡| ˆg¡dS)NrrŠcs
ˆ |¡SrrŒrŽrrrrxJryzISubprocessTests.test_transition_stops_unkillable_notyet.<locals>.<lambda>r&rZrd)r“r‹r”r•r)r'rr	r rr9rr†rgr.©rr‹r'r6rirZrrrÚ'test_transition_stops_unkillable_notyetGs
z7SubprocessTests.test_transition_stops_unkillable_notyetcsÔddlm}g‰| |j‡fdd„¡ddlm}tƒ}t|dddƒ}| |¡}d|_	d|_
d	|_|j|_
| ¡| |j¡| |j	d¡| |j
|j¡| |jjdd
¡| |jdtj¡| ˆg¡dS)NrrŠcs
ˆ |¡SrrŒrŽrrrrxZryzBSubprocessTests.test_transition_stops_unkillable.<locals>.<lambda>r&rZrdrRFz"killing 'process' (1) with SIGKILL)r“r‹r”r•r)r'rr	r r9r8r<rr†rgrErr.r‚rƒrrÿr0r„rrrÚ test_transition_stops_unkillableWs(
ÿz0SubprocessTests.test_transition_stops_unkillablecCs8tƒ}t|ddƒ}| |¡}d|_| | d¡d¡dS)NrKrLrÝF)rr	r r†r.Úchange_staterArrrÚ2test_change_state_doesnt_notify_if_no_state_changens

zBSubprocessTests.test_change_state_doesnt_notify_if_no_state_changecCs\ddlm}tƒ}t|ddƒ}| |¡}d|_| |j¡| |j	d¡| 
|jdk¡dS)Nrr&rKrLrÝrR)r)r'rr	r r†r‡r’r.r=rEr9)rr'r6r5rBrrrÚ(test_change_state_sets_backoff_and_delayus
z8SubprocessTests.test_change_state_sets_backoff_and_delayN)[rÕrÖr×rr r%r0rCrIrUrWrYr]r`rargrirjrkrtrur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
rrrrr r&r'r,r-r.r2r4r6r9r?r@rArIrOrRrUrWrXr[r]r^rarjrkrqrrrurvrwrxryrrr‚rƒr…r†rˆr‰rrrrrs°





+"	 )"!% 4"rc@s¬eZdZdd„Zdd„Zdd„Zdd„Zd	d
„Zdd„Zd
d„Z	dd„Z
dd„Ze 
edeejd¡dd„ƒZe 
edeejd¡dd„ƒZe 
ededd¡dd„ƒZdS)ÚFastCGISubprocessTestscCsddlm}|S)Nr)ÚFastCGISubprocess)rr‹)rr‹rrrr€sz&FastCGISubprocessTests._getTargetClasscOs| ¡||ŽSrrrrrrr „szFastCGISubprocessTests._makeOnecCsddlm}|ƒdSr!r#r$rrrr%‡szFastCGISubprocessTests.tearDowncCs8tƒ}d|_t|dddd}| |¡}| t|j¡dS©NrrržrRr²)rrµr	r r[ÚNotImplementedErrorr‡rArrrÚ
test_no_group‹s

z$FastCGISubprocessTests.test_no_groupcCsFtƒ}d|_t|dddd}| |¡}tt|ƒƒ|_| t|j	¡dSrŒ)
rrµr	r rrrÙr[rr‡rArrrÚtest_no_socket_manager’s
z-FastCGISubprocessTests.test_no_socket_managercCsÌtƒ}d|_t|dddd}| |¡}tdƒ}t|ddd|ƒ}t|ƒ|_| ¡}| 	|d¡| 	t
|jƒd	¡| 	|jdd¡| 	|j|jd
d¡| 	|j|jdd¡| 	t
|j
ƒ|jd	¡dS)
NrrržrRr²ràÚwhateveréçr³Zchild_stdoutZchild_stderrrm)rrµr	r rrrrÙr‡r.rqr·r>r¸r¹©rr6r5rBÚsock_configÚgconfigrˆrrrÚtest_prepare_child_fdsšs 

ÿ
z-FastCGISubprocessTests.test_prepare_child_fdscCs¢tƒ}d|_t|dddd}d|_| |¡}tdƒ}t|dd	d|ƒ}t|ƒ|_| 	¡}| 
|d¡| 
t|jƒd
¡| 
|jdd¡| 
t|j
ƒ|jd¡dS)NrrržrRr²Té
rr‘rmr³)rrµr	rÛr rrrrÙr‡r.rqr·r¸r¹r’rrrÚ(test_prepare_child_fds_stderr_redirected«s

ÿ
z?FastCGISubprocessTests.test_prepare_child_fds_stderr_redirectedcCsntƒ}t|dddd}| |¡}tdƒ}t|ddd|ƒ}t|ƒ|_| |jdk¡| 	¡| 
|jdk¡dS)NrržrRr²ràrr‘)rr	r rrrrÙrEÚ	fcgi_sockÚbefore_spawnr:)rr6r5rBr“r”rrrÚ!test_before_spawn_gets_socket_ref»s

ÿ
z8FastCGISubprocessTests.test_before_spawn_gets_socket_refcCsBtƒ}t|dddd}| |¡}d|_| ¡| |jdk¡dS)NrržrRr²Zhello)rr	r r˜Úafter_finishrErArrrÚ$test_after_finish_removes_socket_refÇs
z;FastCGISubprocessTests.test_after_finish_removes_socket_refrF)Zreturn_valuecCs°tƒ}t|dddd}| |¡}tƒ|_| tjtj¡}| 	tj
|d¡| 	d|jjd¡tj}| 	d|jd¡|j
dd}|j
dd	}| 	tj|d
¡| 	tj|d¡dS)NrržrRr²z3FastCGISubprocess.finish() did not pass thru resultz0FastCGISubprocess.after_finish() not called oncez#Subprocess.finish() not called oncerrmz*Subprocess.finish() pid arg was not passedz*Subprocess.finish() sts arg was not passed)rr	r rr›rFrr8rr.Ú
finish_resultÚ
call_countrZ	call_args)rr6r5rBrˆZfinish_mockZpid_argZsts_argrrrÚtest_finish_overrideÐs.

ÿÿ
ÿ
ÿ
ÿz+FastCGISubprocessTests.test_finish_overrider‡cCsltƒ}t|dddd}| |¡}tƒ|_| ¡}| tj|d¡| d|jj	d¡t
j}| d|j	d¡dS)NrržrRr²z2FastCGISubprocess.spawn() did not pass thru resultú0FastCGISubprocess.before_spawn() not called oncez"Subprocess.spawn() not called once)rr	r rr™r‡r.rÚppidržr)rr6r5rBrˆZ
spawn_mockrrrÚtest_spawn_override_successæs

ÿÿ
ÿz2FastCGISubprocessTests.test_spawn_override_successNcCsjtƒ}t|dddd}| |¡}tƒ|_d|_| ¡}| d|d¡| d|jjd¡| d|jd¡dS)	NrržrRr²znuke me on errorz2FastCGISubprocess.spawn() did return None on errorr z:FastCGISubprocess.spawn() did not remove sock ref on error)	rr	r rr™r˜r‡r.ržr¾rrrÚtest_spawn_errorös
ÿÿ
ÿz'FastCGISubprocessTests.test_spawn_error)rÕrÖr×rr r%rŽrr•r—ršrœrÚobjectrrrrrŸr¡r¢r£rrrrrŠs	

rŠc@sTeZdZdd„Zdd„Zdd„Zdd„Zd	d
„Zdd„Zd
d„Z	dd„Z
dd„ZdS)ÚProcessGroupBaseTestscCsddlm}|S)Nr)ÚProcessGroupBase)rr¦)rr¦rrrrsz%ProcessGroupBaseTests._getTargetClasscOs| ¡||ŽSrr)rrfrrrrr 
szProcessGroupBaseTests._makeOnecCsjtƒ}ddlm}t|dddƒ}t||jd}t||gd}| |¡}d|i|_| 	¡}| 
||g¡dS©Nrr&Úprocess1ú
/bin/process1©r†©Zpconfigs)rr)r'r	r
rrr Ú	processesZget_unstopped_processesr.)rr6r'Úpconfig1r¨r”rÙZ	unstoppedrrrÚtest_get_unstopped_processes
s

z2ProcessGroupBaseTests.test_get_unstopped_processescCs\tƒ}ddlm}t|dddƒ}t||jd}t||gd}| |¡}d|i|_| 	¡dSr§)
rr)r'r	r
rrr r¬Ú
before_remove©rr6r'r­r¨r”rÙrrrÚtest_before_removes

z(ProcessGroupBaseTests.test_before_removec
Csddlm}tƒ}t|dddƒ}t||jd}t|dddƒ}t||jd}t|ddd	ƒ}t||jd}t|d
d
dƒ}	t|	|jd}
d|
_	d
|
_
t|||||	gd}| |¡}||||
dœ|_
| ¡| |jd¡| |jd¡| |jd¡| |
jd¡| |
j|j¡dS)Nrr&r¨r©rªÚprocess2ú
/bin/process2Úprocess3z
/bin/process3Úprocess4z
/bin/process4éèrÝr«)r¨r²r´rµFT)r)r'rr	r
rr…rår’r9r=rr r¬Zstop_allr.Zstop_calledr†r")
rr'r6r­r¨Úpconfig2r²Zpconfig3r´Zpconfig4rµr”rÙrrrÚ
test_stop_all"s6
þ
ÿz#ProcessGroupBaseTests.test_stop_allc
Cs¢tƒ}ddlm}t|dddƒ}t||jd}ddi|_t|dddƒ}t||jd}d	di|_t|||gd
}| |¡}||dœ|_	| 
¡}	| |	dddœ¡dS)
Nrr&r¨r©rªrÞr²r³rßr«)r¨r²)rÞrß)rr)r'r	r
rr?rr r¬Zget_dispatchersr.)
rr6r'r­r¨r·r²r”rÙrˆrrrÚtest_get_dispatchers@s


z*ProcessGroupBaseTests.test_get_dispatcherscCsjtƒ}ddlm}t|dddƒ}t||jd}t||gd}| |¡}d|i|_| 	¡| 
|jd¡dS©Nrr&r¨r©rªr«T)rr)r'r	r
rrr r¬rSr.rTr°rrrrUOs

z%ProcessGroupBaseTests.test_reopenlogscCsjtƒ}ddlm}t|dddƒ}t||jd}t||gd}| |¡}d|i|_| 	¡| 
|jd¡dSrº)rr)r'r	r
rrr r¬rVr.Zlogsremovedr°rrrrWZs

z%ProcessGroupBaseTests.test_removelogsc	Cstƒ}t|ƒ}| |¡}t|ƒ}| |¡}t|ƒ}| |¡}d|j_d|j_d|j_||g}| ¡| |||g¡| ||¡| ||¡dS)NrßrR)rrr r5r_r`r.r)	rr6Zgconfig1Zgroup1Zgconfig2Zgroup2Zconfig3Zgroup3r‘rrrÚtest_ordering_and_comparisones


z2ProcessGroupBaseTests.test_ordering_and_comparisonN)rÕrÖr×rr r®r±r¸r¹rUrWr»rrrrr¥s
r¥c@s$eZdZdd„Zdd„Zdd„ZdS)ÚProcessGroupTestscCsddlm}|S)Nr)ÚProcessGroup)rr½)rr½rrrr|sz!ProcessGroupTests._getTargetClasscCsDtƒ}t|ƒ}| |¡}t|ƒ}| d|k¡| | d¡|¡dS)Nzsupervisor.process.ProcessGroupúnamed whatever>©rrr rDrErG)rr6r”rÙrHrrrrI€s
zProcessGroupTests.test_reprcCsjtƒ}ddlm}t|dddƒ}t||jd}t||gd}| |¡}d|i|_| 	¡| 
|jd¡dSrº)rr)r'r	r
rrr r¬rgr.Útransitionedr°rrrÚtest_transitionˆs

z!ProcessGroupTests.test_transitionN)rÕrÖr×rrIrÁrrrrr¼{sr¼c@s,eZdZdd„Zdd„Zdd„Zdd„Zd	S)
ÚFastCGIProcessGroupTestscCsddlm}|S)Nr)ÚFastCGIProcessGroup)rrÃ)rrÃrrrr”sz(FastCGIProcessGroupTests._getTargetClasscKs| ¡}||f|ŽSrr)rr5ÚkwargsÚclsrrrr ˜sz!FastCGIProcessGroupTests._makeOnecCs6tƒ}t|ƒ}d|_Gdd„dtƒ}|j||ddS)Nc@seZdZdd„Zdd„ZdS)zVFastCGIProcessGroupTests.test___init__without_socket_error.<locals>.DummySocketManagercSsdSrr©rr5r‚rrrÚ__init__¡ryz_FastCGIProcessGroupTests.test___init__without_socket_error.<locals>.DummySocketManager.__init__cSsdSrr©rrrrÚ
get_socket¢ryzaFastCGIProcessGroupTests.test___init__without_socket_error.<locals>.DummySocketManager.get_socketN)rÕrÖr×rÇrÉrrrrÚDummySocketManager srÊ©Z
socketManager)rrÚ
socket_configr¤r ©rr6r”rÊrrrÚ!test___init__without_socket_errorœs
z:FastCGIProcessGroupTests.test___init__without_socket_errorcCs<tƒ}t|ƒ}d|_Gdd„dtƒ}|jt|j||ddS)Nc@s$eZdZdd„Zdd„Zdd„ZdS)zSFastCGIProcessGroupTests.test___init__with_socket_error.<locals>.DummySocketManagercSsdSrrrÆrrrrÇ«ryz\FastCGIProcessGroupTests.test___init__with_socket_error.<locals>.DummySocketManager.__init__cSstdƒ‚dS)Nrß)ÚKeyErrorrÈrrrrɬsz^FastCGIProcessGroupTests.test___init__with_socket_error.<locals>.DummySocketManager.get_socketcSsdS)Nr5rrÈrrrr5®szZFastCGIProcessGroupTests.test___init__with_socket_error.<locals>.DummySocketManager.configN)rÕrÖr×rÇrÉr5rrrrrʪsrÊrË)rrrÌr¤r[Ú
ValueErrorr rÍrrrÚtest___init__with_socket_error¦sþz7FastCGIProcessGroupTests.test___init__with_socket_errorN)rÕrÖr×rr rÎrÑrrrrr“s
rÂc@s¤eZdZdd„Zdd„Zdd„Zdd„Zd	d
„Zdd„Zd
d„Z	dd„Z
dd„Zdd„Zdd„Z
dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'S)(ÚEventListenerPoolTestscCsddlm}|ƒdSr!r#r$rrrÚsetUp¶szEventListenerPoolTests.setUpcCsddlm}|ƒdSr!r#r$rrrr%ºszEventListenerPoolTests.tearDowncCsddlm}|S)Nr)ÚEventListenerPool)rrÔ)rrÔrrrr¾sz&EventListenerPoolTests._getTargetClasscCstƒ}t|ƒ}Gdd„dƒ}|f|_| |¡}ddlm}| t|jƒd¡| |jd||j	f¡| |jd|j
|jf¡| |jd¡dS)Nc@seZdZdS)z3EventListenerPoolTests.test_ctor.<locals>.EventTypeN©rÕrÖr×rrrrÚ	EventTypeÅsrÖrrŠrmrRrü)
rrÚpool_eventsr r“r‹r.rqÚ	callbacksÚ_acceptEventrYÚhandle_rejectedÚserial©rr6r”rÖÚpoolr‹rrrrCÂs
ÿ
ÿz EventListenerPoolTests.test_ctorcCsjtƒ}t|ƒ}Gdd„dƒ}|f|_| |¡}ddlm}| t|jƒd¡| 	¡| t|jƒd¡dS)Nc@seZdZdS)zUEventListenerPoolTests.test_before_remove_unsubscribes_from_events.<locals>.EventTypeNrÕrrrrrÖÔsrÖrrŠrm)
rrr×r r“r‹r.rqrØr¯rÜrrrÚ+test_before_remove_unsubscribes_from_eventsÑs
zBEventListenerPoolTests.test_before_remove_unsubscribes_from_eventsc	CsÜtƒ}d|_t|ƒ}d|_| |¡}ddlm}| |jj	ddd¡}| 
dd	¡\}}| 
¡}| |dd
¡| |d	d¡| |dd
¡| |dd¡| |dd¡| |dd¡| |dd¡| |d¡dS)NZthesupervisornameZthepoolnamerrŠéPézpayload
Ú
rRzver:3.0zserver:thesupervisornamermz	serial:80r³zpool:thepoolnamerÞz
poolserial:20rßz&eventname:PROCESS_COMMUNICATION_STDOUTr«zlen:8)rZ
identifierrr~r r“r‹Z_eventEnvelopeZ
EventTypesZPROCESS_COMMUNICATION_STDOUTr}r.)	rr6r”rÝr‹rˆÚheaderÚpayloadZheadersrrrÚtest__eventEnvelopeÝs,
ÿz*EventListenerPoolTests.test__eventEnvelopecs¢tƒ}t|ƒ}t|dddƒ}t|ƒ‰t||gd}| |¡}dˆi|_ddg|_Gdd„dƒ‰G‡‡fdd„dƒ}|ƒ}d|_| |¡| 	|j|j
ddg¡dS)	Nr¨r©r«c@seZdZdZdS)zLEventListenerPoolTests.test_handle_rejected_no_overflow.<locals>.DummyEvent1rzN)rÕrÖr×rÛrrrrÚDummyEvent1úsråcseZdZ”Z”ƒZdS)zLEventListenerPoolTests.test_handle_rejected_no_overflow.<locals>.DummyEvent2N)rÕrÖr×rZr%r©rår¨rrÚDummyEvent2üsrçrR)rrr	r
r r¬Úevent_bufferrÛrÚr.r%)rr6r”r­rÝrçZ
dummyeventrrærÚ test_handle_rejected_no_overflowñs



z7EventListenerPoolTests.test_handle_rejected_no_overflowcsâtƒ}t|ƒ}t|dddƒ}t|ƒ‰t||gd}d|_| |¡}dˆi|_Gdd„dƒ‰G‡‡fdd„dƒ}ˆd	ƒ}ˆd
ƒ}ˆdƒ}|dƒ}	|||g|_| |	¡d
d„|jDƒ}
| 	|
dd
dg¡| 	|j
jjj
dd¡dS)Nr¨r©r«r³c@seZdZdd„ZdS)zWEventListenerPoolTests.test_handle_rejected_event_buffer_overflowed.<locals>.DummyEventcSs
||_dSr©rÛ©rrÛrrrrÇsz`EventListenerPoolTests.test_handle_rejected_event_buffer_overflowed.<locals>.DummyEvent.__init__N©rÕrÖr×rÇrrrrr

sr
cseZdZ‡‡fdd„ZdS)z_EventListenerPoolTests.test_handle_rejected_event_buffer_overflowed.<locals>.DummyRejectedEventcsˆ|_ˆ|ƒ|_dSr)rZr%rë©r
r¨rrrÇszhEventListenerPoolTests.test_handle_rejected_event_buffer_overflowed.<locals>.DummyRejectedEvent.__init__NrìrrírrÚDummyRejectedEventsrîréÚbÚcZrejectedcSsg|]
}|j‘qSrrê)Ú.0rrrrÚ
<listcomp>szWEventListenerPoolTests.test_handle_rejected_event_buffer_overflowed.<locals>.<listcomp>rz9pool whatever event buffer overflowed, discarding event a)rrr	r
Zbuffer_sizer r¬rèrÚr.r5r6r‚rƒ)rr6r”r­rÝrîZevent_aZevent_bZevent_cZ	rej_eventZserialsrrírÚ,test_handle_rejected_event_buffer_overfloweds*


ÿzCEventListenerPoolTests.test_handle_rejected_event_buffer_overflowedcCs¾tƒ}t|ƒ}t|dddƒ}ddlm}t||gd}| |¡}|jd}tj|_	|j
|_tƒ}| 
|¡| ¡| |j|j
¡| |j|g¡| |jjdd¡| |jjdd¡dS)	Nr¨r©r©ÚEventListenerStatesr«zUepipe occurred while sending event abc to listener process1, listener state unchangedrRz<rebuffering event abc for pool whatever (buf size=0, max=10))rrr	r)rõr r¬rŸrõZwrite_errorÚREADYÚlistener_stater
rÙÚdispatchr.rèr‚rƒ)rr6r”r­rõrÝr¨r%rrrÚtest_dispatch_pipe_error s(


ÿÿz/EventListenerPoolTests.test_dispatch_pipe_errorc	Cs˜ddlm}tƒ}t|ƒ}t|dddƒ}t||gd}| |¡}|jd}ddlm}|j	|_
tdƒ}| |¡| 
|j|j¡| 
|jd|j¡dS)Nr)ÚGlobalSerialr¨r©r«rôr)rrúrrr	r r¬r)rõrör÷r
rÙr.rÛZpool_serials)	rrúr6r”r­rÝr¨rõr%rrrÚ1test__acceptEvent_attaches_pool_serial_and_serial5s


zHEventListenerPoolTests.test__acceptEvent_attaches_pool_serial_and_serialcCsBtƒ}t|ƒ}| |¡}t|ƒ}| d|k¡| | d¡¡dS)Nz$supervisor.process.EventListenerPoolr¾r¿)rr6r”rÝrHrrrrIDs
z EventListenerPoolTests.test_reprc	Cs¤tƒ}ddlm}t|dddƒ}t||jd}t||gd}| |¡}d|i|_t	ƒ}d|_
ddlm}|j|_
| |¡| ¡| |jd	¡| |j|g¡dS)
Nrr&r¨r©rªr«rérôT)rr)r'r	r
rårr r¬r
rÛrõÚBUSYr÷rÙrgr.rÀrè©	rr6r'r­r¨r”rÝr%rõrrrÚtest_transition_nobody_readyLs


z3EventListenerPoolTests.test_transition_nobody_readyc	CsÂtƒ}ddlm}t|dddƒ}t||jd}t||gd}| |¡}d|i|_t	ƒ}ddlm
}d|_|j|_
| |¡| ¡| |jd	¡| |j|g¡| |jd
¡| |j
|j¡dS)Nrr&r¨r©rªr«rôrRTry)rr)r'r	r
rårr r¬r
rõrÛrör÷rÙrgr.rÀrèÚstdin_bufferrýrrrÚ&test_transition_event_proc_not_running]s"


z=EventListenerPoolTests.test_transition_event_proc_not_runningcsòtƒ}ddlm}t|dddƒ}t||jd}t||gd‰| ˆ¡}d|i|_t	ƒ}ddlm
}|j|_G‡fdd	„d	ƒ}||_
| |¡| ¡| |jd
¡| |jg¡|j dd¡\}	}
| |
d
|
¡| |j|j¡| |j|¡dS)Nrr&r¨r©rªr«rôcseZdZ”ZdS)zMEventListenerPoolTests.test_transition_event_proc_running.<locals>.DummyGroupN©rÕrÖr×r5r©r”rrÚ
DummyGroup{srTó
rRódummy event)rr)r'r	r
r…rr r¬r
rõrör÷rÙrÙrgr.rÀrèrÿr}rür%©rr6r'r­r¨rÝr%rõrrârãrrrÚ"test_transition_event_proc_runningps(


z9EventListenerPoolTests.test_transition_event_proc_runningc	sÆtƒ}ddlm}t|dddƒ}t||jd}t||gd‰| ˆ¡}d|_t	 	¡|_
d|i|_tƒ}ddlm
}|j|_G‡fd	d
„d
ƒ}||_| |¡| ¡| |jd¡| |j|g¡dS)Nrr&r¨r©rªr«rßrôcseZdZ”ZdS)zkEventListenerPoolTests.test_transition_event_proc_running_with_dispatch_throttle_notyet.<locals>.DummyGroupNrrrrrr”srT)rr)r'r	r
r…rr Údispatch_throttlerÚ
last_dispatchr¬r
rõrör÷rÙrÙrgr.rÀrè)	rr6r'r­r¨rÝr%rõrrrrÚ@test_transition_event_proc_running_with_dispatch_throttle_notyet‡s$



zWEventListenerPoolTests.test_transition_event_proc_running_with_dispatch_throttle_notyetcstƒ}ddlm}t|dddƒ}t||jd}t||gd‰| ˆ¡}d|_t	 	¡d|_
d|i|_tƒ}dd	lm
}|j|_G‡fd
d„dƒ}||_| |¡| ¡| |jd¡| |jg¡|j d
d¡\}	}
| |
d|
¡| |j|j¡| |j|¡dS)Nrr&r¨r©rªr«rßr¶rôcseZdZ”ZdS)zjEventListenerPoolTests.test_transition_event_proc_running_with_dispatch_throttle_ready.<locals>.DummyGroupNrrrrrr©srTrrRr)rr)r'r	r
r…rr rrr	r¬r
rõrör÷rÙrÙrgr.rÀrèrÿr}rür%rrrrÚ?test_transition_event_proc_running_with_dispatch_throttle_readyœs,


zVEventListenerPoolTests.test_transition_event_proc_running_with_dispatch_throttle_readyc
sÞt ¡d}tƒ}ddlm}t|dddƒ}t||jd}t||gd‰| ˆ¡}d|_	||_
d|i|_tƒ}dd	lm
}|j|_G‡fd
d„dƒ}	|	|_| |¡| ¡| |jd¡| |j|g¡| |j
|k¡dS)
Nrrr&r¨r©rªr«rßrôcseZdZ”ZdS)z|EventListenerPoolTests.test_transition_event_proc_running_with_dispatch_throttle_last_dispatch_in_future.<locals>.DummyGroupNrrrrrrÃsrT)rrr)r'r	r
r…rr rr	r¬r
rõrör÷rÙrÙrgr.rÀrèrE)
rrr6r'r­r¨rÝr%rõrrrrÚQtest_transition_event_proc_running_with_dispatch_throttle_last_dispatch_in_futureµs(


zhEventListenerPoolTests.test_transition_event_proc_running_with_dispatch_throttle_last_dispatch_in_futurecCsvtƒ}ddlm}t|dddƒ}t||jd}t||gd}| |¡}d|i|_t	ƒ}| 
|¡| | |¡d¡dS)Nrr&r¨r©rªr«F)
rr)r'r	r
rrr r¬r
rÙr.Ú_dispatchEvent)rr6r'r­r¨r”rÝr%rrrÚtest__dispatchEvent_notreadyÏs


z3EventListenerPoolTests.test__dispatchEvent_notreadyc
s®tƒ}ddlm}t|dddƒ}t||jd}dd„}||_t||gd‰| ˆ¡}d|i|_	t
ƒ}dd	lm}|j|_
G‡fd
d„dƒ}	|	|_| |¡| t|j|¡dS)Nrr&r¨r©rªcSsttjƒ‚dSr)rërŸr¬r¨rrrÚraise_epipeàszcEventListenerPoolTests.test__dispatchEvent_proc_write_raises_non_EPIPE_OSError.<locals>.raise_epiper«rôcseZdZ”ZdS)zbEventListenerPoolTests.test__dispatchEvent_proc_write_raises_non_EPIPE_OSError.<locals>.DummyGroupNrrrrrrésr)rr)r'r	r
r…rìrr r¬r
rõrör÷rÙrÙr[rër
)
rr6r'r­r¨rrÝr%rõrrrrÚ7test__dispatchEvent_proc_write_raises_non_EPIPE_OSErrorÛs 


zNEventListenerPoolTests.test__dispatchEvent_proc_write_raises_non_EPIPE_OSErrorN)rÕrÖr×rÓr%rrCrÞrärérórùrûrIrþrrr
rrrrrrrrrÒµs&rÒc@s$eZdZdd„Zdd„Zdd„ZdS)Útest_new_serialcCsddlm}||ƒS)Nr)Ú
new_serial)rr)rÚinstrrrrÚ_callFUTðsztest_new_serial._callFUTcsNddlm‰G‡fdd„dtƒ}|ƒ}| |¡}| |jd¡| |d¡dS)NrrcseZdZ‡fdd„ZdS)z8test_new_serial.test_inst_serial_is_maxint.<locals>.Instcs
ˆ|_dSrrêrÈrrrrÇ÷szAtest_new_serial.test_inst_serial_is_maxint.<locals>.Inst.__init__NrìrrrrÚInstösr)Úsupervisor.compatrr¤rr.rÛ©rrrrˆrrrÚtest_inst_serial_is_maxintôs
z*test_new_serial.test_inst_serial_is_maxintcCs>Gdd„dtƒ}|ƒ}| |¡}| |jd¡| |d¡dS)Nc@seZdZdd„ZdS)z<test_new_serial.test_inst_serial_is_not_maxint.<locals>.InstcSs
d|_dS)NrRrêrÈrrrrÇ	szEtest_new_serial.test_inst_serial_is_not_maxint.<locals>.Inst.__init__Nrìrrrrrÿsrrm)r¤rr.rÛrrrrÚtest_inst_serial_is_not_maxintþs

z.test_new_serial.test_inst_serial_is_not_maxintN)rÕrÖr×rrrrrrrrïs
r)#rŸr{rÿrzrZunittestrrrrýrrrrr	r
rrr
rrrrrrZsupervisor.optionsrZTestCaserrŠr¥r¼rÂrÒrrrrrÚ<module>sTqv"<