+
    ‚V@iÁ)  ã                   ó  € ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIH	t	H
t
 ^ RIHt ^ RIHt ^ RIHtHtHt ^ RIHt ^ RIHtHtHtHt ^ RIHt ^ R	IHtHt ] ! R
 R]P>                  4      4       t ] ! R R]4      4       t!R# )é    N)Ú
HTTPClientÚ	HTTPError)Ú
HTTPServer)Úgen_log)Úfork_processesÚtask_idÚ
Subprocess)ÚSimpleAsyncHTTPClient)Úbind_unused_portÚ	ExpectLogÚAsyncTestCaseÚgen_test)ÚskipIfNonUnix©ÚRequestHandlerÚApplicationc                   ó>   a a€ ] tR t^t oR tV 3R ltR tRtVtV ;t	# )ÚProcessTestc                ó<   €  ! R  R\         4      p\        RV3.4      # )c                   ó&   a € ] tR t^t o R tRtV tR# )Ú+ProcessTest.get_app.<locals>.ProcessHandlerc                ó   € V P                  R R4      '       d/   \        P                  ! \        V P                  R 4      4      4       V P                  RR4      '       dC   \        P                  ! \        P
                  ! 4       \        V P                  R4      4      4       V P                  \        \        P
                  ! 4       4      4       R# )ÚexitNÚsignal)Úget_argumentÚosÚ_exitÚintÚkillÚgetpidÚwriteÚstr)Úselfs   &Ú;/usr/lib/python3/dist-packages/tornado/test/process_test.pyÚgetÚ/ProcessTest.get_app.<locals>.ProcessHandler.get   s�   € Ø×$Ñ$ V¨T×2Ò2ô —H’HœS ×!2Ñ!2°6Ó!:Ó;Ô<Ø×$Ñ$ X¨t×4Ò4Ü—G’GœBŸIšI›K¬¨T×->Ñ->¸xÓ-HÓ)IÔJØ—
‘
œ3œrŸyšy›{Ó+Ö,ó    © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r%   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r$   ÚProcessHandlerr      s   ø‡ € ÷-ð -r'   r1   Ú/r   )r#   r1   s   & r$   Úget_appÚProcessTest.get_app   s#   € ô	-œ^ô 	-ô ˜S .Ð1Ð2Ó3Ð3r'   c                óê   <€ \        4       eB   \        P                  ! R4       \        P                  ! 4        \        P
                  ! ^4       \        P                  ! ^ 4       \        SV `%  4        R # )Nz$aborting child process from tearDown)
r   ÚloggingÚerrorÚshutdownr   r   r   ÚalarmÚsuperÚtearDown)r#   Ú	__class__s   &€r$   r;   ÚProcessTest.tearDown$   sG   ø€ Ü‹9Ò ô �MŠMÐ@ÔAÜ×ÒÔÜ�HŠH�QŒKä�Š�QŒÜ‰ÑÖr'   c           	     óÄ  a aaa	a
€ \        \        R 4      ;_uu_ 4        \        4       w  o
o	V	3R lo\        P                  ! ^4        \        ^^R7      pS P                  V4       \        P                  ! ^4        TR9   d>   S P                  T\        4       4       T T
3R lp\        P                  ! T! 4       4       MóT^8X  dí   S P                  T\        4       4       S
P                  4        \        \         4      oRTT3R llpT! RRR7       T! R	RR7       \#        T! R
4      P$                  4       T! RRR7       \#        T! R
4      P$                  4      pT! RRR7       \#        T! R
4      P$                  4      pS P'                  YV4       T! RRR7       \(        P*                  ! ^ 4       RRR4       R#   \         dY   pS P                  TP                  ^ 4       S P                  \        4       4       S
P                  4         Rp?RRR4       R# Rp?ii ; i  \,         d    \.        P0                  ! RTRR7       h i ; i  + '       g   i     R# ; i)z:(Starting .* processes|child .* exited|uncaught exception)c                 ó   <€ R SV 3,          # )zhttp://127.0.0.1:%d%sr(   )ÚpathÚports   &€r$   Úget_urlÚ/ProcessTest.test_multi_process.<locals>.get_url=   s   ø€ Ø.°$¸°Õ=Ð=r'   )Úmax_restartsNc               “   óÀ   <"  € \        SP                  4       4      p V P                  S.4       \        P                  ! 4       P                  4       G R j  x€L
  R #  L5i©N)r   r3   Úadd_socketsÚasyncioÚEventÚwait)Úserverr#   Úsocks    €€r$   ÚfÚ)ProcessTest.test_multi_process.<locals>.fQ   s>   øé € Ü!+¨D¯L©L«NÓ!;˜Ø×*Ñ*¨D¨6Ô2Ü%Ÿmšm›o×2Ñ2Ó4×4Ô4ùs   ƒAAÁAÁAc                 óš   <€  SP                  S! V 4      4      #   \         d&   pT'       d   TP                  R 8X  g   h  Rp?R# Rp?ii ; i)iW  N)Úfetchr   Úcode)ÚurlÚfail_okÚeÚclientrB   s   && €€r$   rP   Ú-ProcessTest.test_multi_process.<locals>.fetch`   s@   ø€ ð&Ø#)§<¡<±¸³Ó#=Ð=øÜ(ô &ß$+°·±¸#´Ø %õ 1>ûð&ús   ƒ šA
¥AÁA
z/?exit=2T)rS   z/?exit=3r2   z/?exit=0z/?exit=4zexception in child process %d)Úexc_info)r   é   )F)r   r   r   r   r9   r   ÚassertIsNotNoneÚ
SystemExitÚassertEqualrQ   ÚassertIsNoner   ÚcloserH   Úrunr   r
   r   ÚbodyÚassertNotEqualr   r   Ú	Exceptionr6   r7   )r#   ÚidrT   rM   rP   ÚpidÚpid2rU   rB   rA   rL   s   f      @@@@r$   Útest_multi_processÚProcessTest.test_multi_process3   sä  ü€ ô
 ÜÐQ÷
õ 
ô *Ó+‰JˆD�$õ>ô �LŠL˜ŒOð
Ü# A°AÔ6�Ø×$Ñ$ RÔ(Ü—’˜Q”ð7Ø˜”<Ø×$Ñ$ R¬«Ô3ö5ô
 —K’K¡£Õ$Ø˜1”WØ×$Ñ$ R¬«Ô3Ø—J‘J”Lô
 (Ô(=Ó>�F÷&ð &ñ ˜*¨dÕ3Ù˜*¨dÕ3ô ™˜c›
Ÿ™Ô(ñ ˜*¨dÕ3ä™e C›jŸo™oÓ.�CÙ˜*¨dÕ3Ü™u S›zŸ™Ó/�DØ×'Ñ'¨Ô2ñ ˜*¨dÕ3ä—H’H˜Q”K÷S
ñ 
øô ô ð × Ñ  §¡¨Ô+Ø×!Ñ!¤'£)Ô,Ø—
‘
”Û÷)
ñ 
ûðûôx ô Ü—’Ð=¸rÈDÕQØðú÷U
÷ 
ð 
úsP   ž*IÁ	4F?Á>AH%ÃIÃC3H%Æ?H"Ç
AHÈIÈH"È"IÈ%&IÉIÉI	r(   )
r)   r*   r+   r,   r3   r;   re   r-   r.   Ú__classcell__)r<   r0   s   @@r$   r   r      s   ù‡ € ò4õ÷Qò Qr'   r   c                   ó’   a € ] tR t^‡t o R t]R 4       t]R 4       t]R 4       tR t	]R 4       t
R t]R 4       t]R	 4       tR
tV tR# )ÚSubprocessTestc                ón   € VP                   P                  4        VP                   P                  4        R # rF   )ÚprocÚ	terminaterJ   ©r#   Úsubprocs   &&r$   Úterm_and_waitÚSubprocessTest.term_and_wait‰   s"   € Ø�‰×ÑÔ Ø�‰×ÑÖr'   c              #  ó  a a"  € \        \        P                  R RR.\         P                  \         P                  \        P
                  R7      oS P                  V V3R l4       S P                  SP                  P                  4       S P                  SP                  P                  4       SP                  P                  R4      x € SP                  P                  R4       SP                  P                  R4      x €pS P                  VR4       SP                  P                  R4      x € SP                  P                  R	4       SP                  P                  4       x €pS P                  VR
4       R# 5i)ú-uú-iú-I©ÚstdinÚstdoutÚstderrc                  ó&   <€ S P                  S4      # rF   ©ro   rm   s   €€r$   Ú<lambda>Ú0SubprocessTest.test_subprocess.<locals>.<lambda>•   ó   ø€  × 2Ñ 2°7Ô ;r'   ó   >>> s   print('hello')
ó   
ó   hello
s   raise SystemExit
r'   N)r	   ÚsysÚ
executableÚSTREAMÚ
subprocessÚSTDOUTÚ
addCleanuprw   r]   rv   Ú
read_untilr!   r[   Úread_until_close©r#   Údatarn   s   f @r$   Útest_subprocessÚSubprocessTest.test_subprocess�   s  ùé € äÜ�^‰^˜T 4¨Ð.Ü×#Ñ#Ü×$Ñ$Ü×$Ñ$ô	
ˆð 	�‰Õ;Ô<Ø�‰˜Ÿ™×,Ñ,Ô-Ø�‰˜Ÿ™×+Ñ+Ô,Ø�n‰n×'Ñ'¨Ó0Ò0Ø�‰×ÑÐ/Ô0Ø—^‘^×.Ñ.¨uÓ5Ñ5ˆØ×Ñ˜˜zÔ*à�n‰n×'Ñ'¨Ó0Ò0Ø�‰×ÑÐ1Ô2Ø—^‘^×4Ñ4Ó6Ñ6ˆØ×Ñ˜˜sÖ#ùs   „E;E?c              #  óž  a a"  € \        \        P                  R RR.\         P                  \         P                  \        P
                  R7      oS P                  V V3R l4       SP                  P                  R4      x € SP                  P                  4        SP                  P                  4       x €pS P                  VR4       R# 5i)rr   rs   rt   ru   c                  ó&   <€ S P                  S4      # rF   rz   rm   s   €€r$   r{   Ú1SubprocessTest.test_close_stdin.<locals>.<lambda>«   r}   r'   r~   r   N)r	   r�   r‚   rƒ   r„   r…   r†   rw   r‡   rv   r]   rˆ   r[   r‰   s   f @r$   Útest_close_stdinÚSubprocessTest.test_close_stdin¢   s–   ùé € ô Ü�^‰^˜T 4¨Ð.Ü×#Ñ#Ü×$Ñ$Ü×$Ñ$ô	
ˆð 	�‰Õ;Ô<Ø�n‰n×'Ñ'¨Ó0Ò0Ø�‰×ÑÔØ—^‘^×4Ñ4Ó6Ñ6ˆØ×Ñ˜˜uÖ%ùs   „C	Cc              #  ó*  a a"  € \        \        P                  R RR.\         P                  R7      oS P	                  V V3R l4       SP
                  P                  R4      x €pS P                  VR4       SP
                  P                  4        R# 5i)rr   ú-cz'import sys; sys.stderr.write('hello\n'))rx   c                  ó&   <€ S P                  S4      # rF   rz   rm   s   €€r$   r{   Ú,SubprocessTest.test_stderr.<locals>.<lambda>¹   r}   r'   r   r€   N)	r	   r�   r‚   rƒ   r†   rx   r‡   r[   r]   r‰   s   f @r$   Útest_stderrÚSubprocessTest.test_stderr±   sr   ùé € ô Ü�^‰^˜T 4Ð)SÐTÜ×$Ñ$ô
ˆð 	�‰Õ;Ô<Ø—^‘^×.Ñ.¨uÓ5Ñ5ˆØ×Ñ˜˜zÔ*à�‰×ÑÖùs   „BBc                óX  € \         P                  ! 4        V P                  \         P                  4       \        \        P
                  R R.4      pVP                  V P                  4       V P                  4       pV P                  V^ 4       V P                  VP                  V4       R# ©r“   ÚpassN)r	   Ú
initializer†   Úuninitializer�   r‚   Úset_exit_callbackÚstoprJ   r[   Ú
returncode©r#   rn   Úrets   &  r$   Útest_sigchildÚSubprocessTest.test_sigchild¿   sx   € Ü×ÒÔØ�‰œ
×/Ñ/Ô0ÜœcŸn™n¨d°FÐ;Ó<ˆØ×!Ñ! $§)¡)Ô,Ø�i‰i‹kˆØ×Ñ˜˜aÔ Ø×Ñ˜×+Ñ+¨SÖ1r'   c              #  ó.  "  € \         P                  ! 4        V P                  \         P                  4       \        \        P
                  R R.4      pVP                  4       x €pV P                  V^ 4       V P                  VP                  V4       R# 5ir™   )	r	   r›   r†   rœ   r�   r‚   Úwait_for_exitr[   rŸ   r    s   &  r$   Útest_sigchild_futureÚ#SubprocessTest.test_sigchild_futureÈ   so   é € ä×ÒÔØ�‰œ
×/Ñ/Ô0ÜœcŸn™n¨d°FÐ;Ó<ˆØ×)Ñ)Ó+Ñ+ˆØ×Ñ˜˜aÔ Ø×Ñ˜×+Ñ+¨SÖ1ùs   ‚BBc                óV  a € \         P                  ! 4        S P                  \         P                  4       \        \        P
                  R R.\         P                  R7      pS P                  VP                  P                  4       VP                  S P                  4       \        P                  ! R4       \        P                  ! VP                  \         P"                  4        S P%                  4       pS P-                  TP.                  T4       S P-                  T\         P"                  ) 4       R#   \&         dg    TP                  P)                  4       pTP+                  T 3R l4        S P%                  4        \'        R4      h  \&         d    \'        R4      hi ; ii ; i)r“   zimport time; time.sleep(30))rw   gš™™™™™¹?c                 ó$   <€ SP                  4       # rF   )rž   )rM   r#   s   &€r$   r{   Ú5SubprocessTest.test_sigchild_signal.<locals>.<lambda>í   s   ø€ ¨D¯I©I¬Kr'   z=subprocess closed stdout but failed to get termination signalzsubprocess failed to terminateN)r	   r›   r†   rœ   r�   r‚   rƒ   rw   r]   r�   rž   ÚtimeÚsleepr   r   rc   r   ÚSIGTERMrJ   ÚAssertionErrorrˆ   Úadd_done_callbackr[   rŸ   )r#   rn   r¡   Úfuts   f   r$   Útest_sigchild_signalÚ#SubprocessTest.test_sigchild_signalÑ   sA  ø€ Ü×ÒÔØ�‰œ
×/Ñ/Ô0ÜÜ�^‰^˜TÐ#@ÐAÜ×$Ñ$ô
ˆð 	�‰˜Ÿ™×,Ñ,Ô-Ø×!Ñ! $§)¡)Ô,ô 	�
Š
�3Œä
�Š�—‘œVŸ^™^Ô,ð	Ø—)‘)“+ˆCð$ 	×Ñ˜×+Ñ+¨SÔ1Ø×Ñ˜œvŸ~™~˜oÖ.øô% ô 	ð —.‘.×1Ñ1Ó3ˆCØ×!Ñ!Ô"7Ô8ðØ—	‘	”ô %ØVóð øô "ô GÜ$Ð%EÓFÐFðGúð	ús$   Ã(D7 Ä7:F(Å2FÆF(ÆF$Æ$F(c              #  ó¤  "  € \         P                  ! 4        V P                  \         P                  4       \        \        P
                  R R.4      pV P                  \        P                  4      ;_uu_ 4       pVP                  4       x € RRR4       V P                  XP                  P                  ^4       R#   + '       g   i     L8; i5i)r“   úimport sys; sys.exit(1)N)r	   r›   r†   rœ   r�   r‚   ÚassertRaisesr„   ÚCalledProcessErrorr¥   r[   Ú	exceptionrŸ   )r#   rn   Úcms   &  r$   Útest_wait_for_exit_raiseÚ'SubprocessTest.test_wait_for_exit_raiseù   sˆ   é € ä×ÒÔØ�‰œ
×/Ñ/Ô0ÜœcŸn™n¨dÐ4MÐNÓOˆØ×Ñœz×<Ñ<×=Ô=ÀØ×'Ñ'Ó)Ò)÷ >à×Ñ˜Ÿ™×0Ñ0°!Ö4÷ >×=üs   ‚A8CÁ:B=Â0CÂ=C	ÃCc              #  óú   "  € \         P                  ! 4        V P                  \         P                  4       \        \        P
                  R R.4      pVP                  RR7      x €pV P                  V^4       R# 5i)r“   r´   F)Úraise_errorN)r	   r›   r†   rœ   r�   r‚   r¥   r[   r    s   &  r$   Ú!test_wait_for_exit_raise_disabledÚ0SubprocessTest.test_wait_for_exit_raise_disabled  s_   é € ä×ÒÔØ�‰œ
×/Ñ/Ô0ÜœcŸn™n¨dÐ4MÐNÓOˆØ×)Ñ)°eÐ)Ó<Ñ<ˆØ×Ñ˜˜aÖ ùs   ‚A9A;r(   N)r)   r*   r+   r,   ro   r   r‹   r�   r–   r¢   r¦   r±   r¹   r½   r-   r.   r/   s   @r$   ri   ri   ‡   s�   ø‡ € òð ñ$ó ð$ð( ñ&ó ð&ð ñó ðò2ð ñ2ó ð2ò&/ðP ñ5ó ð5ð ñ!ó ö!r'   ri   )"rH   r6   r   r   r„   r�   r«   ÚunittestÚtornado.httpclientr   r   Útornado.httpserverr   Útornado.logr   Útornado.processr   r   r	   Útornado.simple_httpclientr
   Útornado.testingr   r   r   r   Útornado.test.utilr   Útornado.webr   r   ÚTestCaser   ri   r(   r'   r$   Ú<module>rÉ      s~   ðÛ Û Û 	Û Û Û 
Û Û ç 4Ý )Ý ß ?Ñ ?Ý ;ß PÓ PÝ +ß 3ð ôn�(×#Ñ#ó nó ðnðb ô@!�]ó @!ó ò@!r'   