+
    üÐjZ…  ã                   ó"  € R t ^ RIt^ RIt^ RIt^ RIHt  ^ RI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HtHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHtHt ^ RIH t  ^ RI!H"t" ^ RI#H$t$ ^ RI%H&t&H't'  ! R R4      t( ! R R]'4      t)]*! ]R4      '       d$   ]PV                  ! 4       t,]PZ                  ! 4       t.M^ ;t,t. ! R R]'4      t/ ! R R]'4      t0 ! R R]'4      t1 ! R R]'4      t2 ! R R]'4      t3 ! R R]Ph                  4      t5 ! R  R!4      t6 ! R" R#4      t7 ! R$ R%]Pp                  4      t9 ! R& R']'4      t: ! R( R)]'4      t; ! R* R+]Px                  4      t= ! R, R-]$]'4      t> ! R. R/]'4      t? ! R0 R1]'4      t@R#   ] d    Rt ELsi ; i)2zU
Tests for L{twisted.application} and its interaction with
L{twisted.persisted.sob}.
N)ÚStringIO)ÚskipIf)ÚappÚinternetÚreactorsÚservice)ÚbackoffPolicy)ÚdeferÚ
interfacesÚprotocolÚreactor)ÚMemoryReactor)Úsob)Útwisted_reactors)ÚbasicÚwire)Úusage)ÚplatformType)ÚTwistedModulesMixin)ÚSkipTestÚTestCasec                   ó   € ] tR t^#tRtRtR# )ÚDummyN© )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚprocessNameÚ__static_attributes__r   ó    Ú?/usr/lib/python3/dist-packages/twisted/test/test_application.pyr   r   #   s   † Ø„Kr    r   c                   ón   a € ] tR t^'t o R tR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tRtV tR# )ÚServiceTestsc                óŠ   € \         P                  ! 4       pVP                  R 4       V P                  VP                  R 4       R# ©ÚhelloN)r   ÚServiceÚsetNameÚassertEqualÚname©ÚselfÚss   & r!   ÚtestNameÚServiceTests.testName(   s.   € Ü�OŠOÓˆØ	�	‰	�'ÔØ×Ñ˜Ÿ™ Ö)r    c                óì   € \         P                  ! 4       p\         P                  ! 4       pVP                  V4       V P	                  \        V4      V.4       V P	                  VP                  V4       R # ©N)r   r'   ÚMultiServiceÚsetServiceParentr)   ÚlistÚparent©r,   r-   Úps   &  r!   Ú
testParentÚServiceTests.testParent-   sT   € Ü�OŠOÓˆÜ× Ò Ó"ˆØ	×Ñ˜1ÔØ×Ñœ˜a› 1 #Ô&Ø×Ñ˜Ÿ™ 1Ö%r    c                ó>  € \         P                  ! 4       p\         P                  ! R 4      pVP                  V4       V P	                  \        \         P                  ! V4      4      V.4       V P	                  VP                  \         P                  ! V4      4       R# )Ú N)r   r'   ÚApplicationr3   r)   r4   ÚIServiceCollectionr5   r6   s   &  r!   ÚtestApplicationAsParentÚ$ServiceTests.testApplicationAsParent4   sm   € Ü�OŠOÓˆÜ×Ò Ó#ˆØ	×Ñ˜1ÔØ×Ñœœg×8Ò8¸Ó;Ó<¸q¸cÔBØ×Ñ˜Ÿ™¤7×#=Ò#=¸aÓ#@ÖAr    c                óP  € \         P                  ! 4       p\         P                  ! 4       pVP                  R 4       VP	                  V4       V P                  \        V4      V.4       V P                  VP                  V4       V P                  VP                  R 4      V4       R# r%   )	r   r'   r2   r(   r3   r)   r4   r5   ÚgetServiceNamedr6   s   &  r!   ÚtestNamedChildÚServiceTests.testNamedChild;   s{   € Ü�OŠOÓˆÜ× Ò Ó"ˆØ	�	‰	�'ÔØ	×Ñ˜1ÔØ×Ñœ˜a› 1 #Ô&Ø×Ñ˜Ÿ™ 1Ô%Ø×Ñ˜×*Ñ*¨7Ó3°QÖ7r    c                óà   € \         P                  ! 4       p\         P                  ! 4       pVP                  R 4       VP	                  V4       V P                  \        VP                  R4       R# )r&   ÚlalaN©r   r'   r2   r(   r3   ÚassertRaisesÚRuntimeErrorr6   s   &  r!   ÚtestDoublyNamedChildÚ!ServiceTests.testDoublyNamedChildD   sL   € Ü�OŠOÓˆÜ× Ò Ó"ˆØ	�	‰	�'ÔØ	×Ñ˜1ÔØ×Ñœ,¨¯	©	°6Ö:r    c                ó,  € \         P                  ! 4       p\         P                  ! 4       pVP                  R 4       VP	                  V4       \         P                  ! 4       pVP                  R 4       V P                  \        VP                  V4       R# r%   rF   r6   s   &  r!   ÚtestDuplicateNamedChildÚ$ServiceTests.testDuplicateNamedChildK   sf   € Ü�OŠOÓˆÜ× Ò Ó"ˆØ	�	‰	�'ÔØ	×Ñ˜1ÔÜ�OŠOÓˆØ	�	‰	�'ÔØ×Ñœ,¨×(:Ñ(:¸AÖ>r    c                óx  € \         P                  ! 4       p\         P                  ! 4       pVP                  V4       V P	                  \        V4      V.4       V P	                  VP                  V4       VP                  4        V P	                  \        V4      . 4       V P                  VP                  4       R # r1   )	r   r'   r2   r3   r)   r4   r5   ÚdisownServiceParentÚassertIsNoner6   s   &  r!   ÚtestDisowningÚServiceTests.testDisowningT   s†   € Ü�OŠOÓˆÜ× Ò Ó"ˆØ	×Ñ˜1ÔØ×Ñœ˜a› 1 #Ô&Ø×Ñ˜Ÿ™ 1Ô%Ø	×ÑÔØ×Ñœ˜a› "Ô%Ø×Ñ˜!Ÿ(™(Ö#r    c                ó  € \         P                  ! 4       pV P                  VP                  4       VP	                  4        V P                  VP                  4       VP                  4        V P                  VP                  4       R # r1   )r   r'   ÚassertFalseÚrunningÚstartServiceÚ
assertTrueÚstopServicer+   s   & r!   ÚtestRunningÚServiceTests.testRunning^   sU   € Ü�OŠOÓˆØ×Ñ˜Ÿ™Ô#Ø	�‰ÔØ�‰˜Ÿ	™	Ô"Ø	�‰ŒØ×Ñ˜Ÿ™Ö#r    c                ó   € \         P                  ! 4       p\         P                  ! 4       pVP                  V4       V P	                  VP
                  4       V P	                  VP
                  4       VP                  4        V P                  VP
                  4       V P                  VP
                  4       VP                  4        V P	                  VP
                  4       V P	                  VP
                  4       R # r1   )	r   r'   r2   r3   rT   rU   rV   rW   rX   r6   s   &  r!   ÚtestRunningChildren1Ú!ServiceTests.testRunningChildren1f   s¥   € Ü�OŠOÓˆÜ× Ò Ó"ˆØ	×Ñ˜1ÔØ×Ñ˜Ÿ™Ô#Ø×Ñ˜Ÿ™Ô#Ø	�‰ÔØ�‰˜Ÿ	™	Ô"Ø�‰˜Ÿ	™	Ô"Ø	�‰ŒØ×Ñ˜Ÿ™Ô#Ø×Ñ˜Ÿ™Ö#r    c                ó2  a a€ \         P                  ! 4       oVV 3R  lp\         P                  ! 4       pWn        Wn        \         P                  ! 4       pSP                  V4       VP                  V4       VP                  4        VP                  4        R# )c                  ó>   <€ SP                  S P                  4       R # r1   )rW   rU   )r-   r,   s   €€r!   ÚcheckRunningÚ7ServiceTests.testRunningChildren2.<locals>.checkRunningv   s   ø€ Ø�O‰O˜AŸI™IÖ&r    N)r   r'   rX   rV   r2   r3   )r,   r`   Útr7   r-   s   f   @r!   ÚtestRunningChildren2Ú!ServiceTests.testRunningChildren2s   si   ù€ Ü�OŠOÓˆö	'ô �OŠOÓˆØ$ŒØ%ŒÜ× Ò Ó"ˆØ	×Ñ˜1ÔØ	×Ñ˜1ÔØ	�‰ÔØ	�‰Žr    c                ó^  € \         P                  ! 4       pVP                  4        \         P                  ! 4       pV P	                  VP
                  4       VP                  V4       V P                  VP
                  4       VP                  4        V P	                  VP
                  4       R # r1   )	r   r2   rV   r'   rT   rU   r3   rW   rO   )r,   r7   r-   s   &  r!   ÚtestAddingIntoRunningÚ"ServiceTests.testAddingIntoRunning‚   st   € Ü× Ò Ó"ˆØ	�‰ÔÜ�OŠOÓˆØ×Ñ˜Ÿ™Ô#Ø	×Ñ˜1ÔØ�‰˜Ÿ	™	Ô"Ø	×ÑÔØ×Ñ˜Ÿ™Ö#r    c                ó:  a€ \         P                  ! 4       oV3R  lpVSn        \         P                  ! 4       p\         P                  ! 4       pSP	                  V4       VP	                  V4       VP                  4        V P                  SP                  4       R# )c                  ó   <€ ^S n         R# )é   N)ÚprivilegedStarted)r-   s   €r!   ÚpssÚ(ServiceTests.testPrivileged.<locals>.pss�   s   ø€ Ø"#ˆAÖr    N)r   r'   ÚprivilegedStartServicer2   r3   rW   rk   )r,   rl   Ús1r7   r-   s   &   @r!   ÚtestPrivilegedÚServiceTests.testPrivilegedŒ   sr   ø€ Ü�OŠOÓˆõ	$ð $'ˆÔ Ü�_Š_ÓˆÜ× Ò Ó"ˆØ	×Ñ˜1ÔØ
×Ñ˜AÔØ	× Ñ Ô"Ø�‰˜×+Ñ+Ö,r    c                óè   € \         P                  ! 4       pVP                  4        \        P                  ! V4      pV P	                  VP
                  4       V P                  VP
                  4       R # r1   )r   r'   rV   ÚcopyrT   rU   rW   )r,   r-   ro   s   &  r!   ÚtestCopyingÚServiceTests.testCopyingš   sG   € Ü�OŠOÓˆØ	�‰ÔÜ�YŠY�q‹\ˆØ×Ñ˜Ÿ™Ô$Ø�‰˜Ÿ	™	Ö"r    r   N)r   r   r   r   r.   r8   r>   rB   rI   rL   rQ   rY   r\   rc   rf   rp   rt   r   Ú__classdictcell__©Ú__classdict__s   @r!   r#   r#   '   sL   ø‡ € ò*ò
&òBò8ò;ò?ò$ò$ò$òò$ò-÷#ð #r    r#   Úgetuidc                   ó2   a € ] tR t^©t o R tR tR tRtV tR# )ÚProcessTestsc                ó¤   € \         P                  ! ^^4      pV P                  VP                  ^4       V P                  VP                  ^4       R# )é   N)r   ÚProcessr)   ÚuidÚgid©r,   r7   s   & r!   ÚtestIDÚProcessTests.testIDª   s:   € Ü�OŠO˜A˜qÓ!ˆØ×Ñ˜Ÿ™ Ô"Ø×Ñ˜Ÿ™ Ö"r    c                óÒ  € \         P                  ! ^4      pV P                  VP                  ^4       V P	                  VP
                  4       \         P                  ! ^R7      pV P	                  VP                  4       V P                  VP
                  ^4       \         P                  ! 4       pV P	                  VP                  4       V P	                  VP
                  4       R# )r}   )r€   N)r   r~   r)   r   rP   r€   r�   s   & r!   ÚtestDefaultsÚProcessTests.testDefaults¯   sš   € Ü�OŠO˜AÓˆØ×Ñ˜Ÿ™ Ô"Ø×Ñ˜!Ÿ%™%Ô Ü�OŠO Ô"ˆØ×Ñ˜!Ÿ%™%Ô Ø×Ñ˜Ÿ™ Ô"Ü�OŠOÓˆØ×Ñ˜!Ÿ%™%Ô Ø×Ñ˜!Ÿ%™%Ö r    c                ó¬   € \         P                  ! 4       pV P                  VP                  4       R Vn        V P	                  VP                  R 4       R# r%   )r   r~   rP   r   r)   r�   s   & r!   ÚtestProcessNameÚProcessTests.testProcessNameº   s;   € Ü�OŠOÓˆØ×Ñ˜!Ÿ-™-Ô(ØˆŒØ×Ñ˜Ÿ™¨Ö0r    r   N)	r   r   r   r   r‚   r…   rˆ   r   rv   rw   s   @r!   r{   r{   ©   s   ø‡ € ò#ò
	!÷1ð 1r    r{   c                   ó2   a € ] tR t^Át o R tR tR tRtV tR# )ÚInterfacesTestsc                óˆ   € V P                  \        P                  P                  \        P                  ! 4       4      4       R # r1   )rW   r   ÚIServiceÚ
providedByr'   ©r,   s   &r!   ÚtestServiceÚInterfacesTests.testServiceÂ   ó&   € Ø�‰œ×(Ñ(×3Ñ3´G·O²OÓ4EÓFÖGr    c                ó
  € V P                  \        P                  P                  \        P                  ! 4       4      4       V P                  \        P
                  P                  \        P                  ! 4       4      4       R # r1   )rW   r   r�   rŽ   r2   r=   r�   s   &r!   ÚtestMultiServiceÚ InterfacesTests.testMultiServiceÅ   sN   € Ø�‰œ×(Ñ(×3Ñ3´G×4HÒ4HÓ4JÓKÔLØ�‰œ×2Ñ2×=Ñ=¼g×>RÒ>RÓ>TÓUÖVr    c                óˆ   € V P                  \        P                  P                  \        P                  ! 4       4      4       R # r1   )rW   r   ÚIProcessrŽ   r~   r�   s   &r!   ÚtestProcessÚInterfacesTests.testProcessÉ   r’   r    r   N)	r   r   r   r   r�   r”   r˜   r   rv   rw   s   @r!   r‹   r‹   Á   s   ø‡ € òHòW÷Hð Hr    r‹   c                   ó8   a € ] tR t^Ít o R tR tR tR tRtV t	R# )ÚApplicationTestsc                ó�   € \         P                  ! R 4       \         P                  ! R ^4       \         P                  ! R ^^4       R# r%   )r   r<   r�   s   &r!   ÚtestConstructorÚ ApplicationTests.testConstructorÎ   s2   € Ü×Ò˜GÔ$Ü×Ò˜G QÔ'Ü×Ò˜G Q¨Ö*r    c                óÊ  € \         P                  ! R 4      pV P                  \         P                  ! V4      P                  4       V P                  \         P                  ! V4      P
                  4       \         P                  ! R ^4      pV P                  \         P                  ! V4      P                  ^4       V P                  \         P                  ! V4      P
                  4       \         P                  ! R ^^4      pV P                  \         P                  ! V4      P                  ^4       V P                  \         P                  ! V4      P
                  ^4       R# r%   )r   r<   rP   r—   r   r€   r)   ©r,   Úas   & r!   ÚtestProcessComponentÚ%ApplicationTests.testProcessComponentÓ   sø   € Ü×Ò Ó(ˆØ×Ñœ'×*Ò*¨1Ó-×1Ñ1Ô2Ø×Ñœ'×*Ò*¨1Ó-×1Ñ1Ô2Ü×Ò ¨Ó+ˆØ×Ñœ×)Ò)¨!Ó,×0Ñ0°!Ô4Ø×Ñœ'×*Ò*¨1Ó-×1Ñ1Ô2Ü×Ò ¨¨AÓ.ˆØ×Ñœ×)Ò)¨!Ó,×0Ñ0°!Ô4Ø×Ñœ×)Ò)¨!Ó,×0Ñ0°!Ö4r    c                ód  € \         P                  ! R 4      pV P                  \         P                  ! V4      \         P                  ! V4      4       V P                  \         P                  ! V4      P                  R 4       V P                  \         P                  ! V4      P                  4       R# r%   )	r   r<   ÚassertIsr�   r=   r)   r*   rP   r5   r    s   & r!   ÚtestServiceComponentÚ%ApplicationTests.testServiceComponentÞ   sv   € Ü×Ò Ó(ˆØ�‰”g×&Ò& qÓ)¬7×+EÒ+EÀaÓ+HÔIØ×Ñœ×)Ò)¨!Ó,×1Ñ1°7Ô;Ø×Ñœ'×*Ò*¨1Ó-×4Ñ4Ö5r    c                ó  € \         P                  ! R 4      p\        P                  ! V4      pV P	                  VP
                  R4       V P	                  VP                  R 4       V P                  VP                  V4       R# )r&   ÚpickleN)	r   r<   r   ÚIPersistabler)   Ústyler*   r¥   Úoriginal)r,   r¡   r7   s   &  r!   ÚtestPersistableComponentÚ)ApplicationTests.testPersistableComponentä   s\   € Ü×Ò Ó(ˆÜ×Ò˜QÓˆØ×Ñ˜Ÿ™ (Ô+Ø×Ñ˜Ÿ™ Ô)Ø�‰�a—j‘j !Ö$r    r   N)
r   r   r   r   r�   r¢   r¦   r­   r   rv   rw   s   @r!   r›   r›   Í   s   ø‡ € ò+ò
	5ò6÷%ð %r    r›   c                   ó&   a € ] tR t^ìt o R tRtV tR# )ÚLoadingTestsc                óŒ  € \         P                  ! R 4      p\        P                  ! V4      pRP	                  4        Fy  pVP                  V4       VP                  4        \         P                  ! RV^ ,          ,           V4      pV P                  \         P                  ! V4      P                  R 4       K{  	  \        RR4      ;_uu_ 4       pVP                  RR.4       RRR4       \         P                  ! RR4      pV P                  \         P                  ! V4      P                  R 4       R#   + '       g   i     LY; i)	r&   úsource picklezhello.taz	hello.tacÚwú(from twisted.application import service
ú+application = service.Application('hello')
NÚpython)r   r<   r   rª   ÚsplitÚsetStyleÚsaveÚloadApplicationr)   r�   r*   ÚopenÚ
writelines)r,   r¡   r7   r«   Úa1Úfs   &     r!   Útest_simpleStoreAndLoadÚ$LoadingTests.test_simpleStoreAndLoadí   sñ   € Ü×Ò Ó(ˆÜ×Ò˜QÓˆØ$×*Ñ*Ö,ˆEØ�J‰J�uÔØ�F‰FŒHÜ×(Ò(¨°e¸AµhÕ)>ÀÓFˆBØ×ÑœW×-Ò-¨bÓ1×6Ñ6¸Ö@ñ	 -ô
 �+˜s×#Ô# qØ�L‰Là?ØBðô÷ $ô ×$Ò$ [°(Ó;ˆØ×Ñœ×)Ò)¨"Ó-×2Ñ2°GÖ<÷ $×#ús   ÃD3Ä3E	r   N)r   r   r   r   r¿   r   rv   rw   s   @r!   r°   r°   ì   s   ø‡ € ÷=ð =r    r°   c                   ó8   a € ] tR tRt o R tR tR tR tRtV t	R# )ÚAppSupportTestsé   c                óP   € V P                  \        P                  ! ^ 4      4       R# )é    N)rP   r   ÚgetPassphraser�   s   &r!   ÚtestPassphraseÚAppSupportTests.testPassphrase  s   € Ø×Ñœ#×+Ò+¨AÓ.Ö/r    c                ó  € \         P                  ! R4      pRRRRRR/pRP                  4        F»  pVP                  4       pRVRR/P	                  W34      &   \
        P                  ! V4      P                  V4       \
        P                  ! V4      P                  RR	7       \        P                  ! VR4      pV P                  \         P                  ! V4      P                  R4       K½  	  VP                  4       pRVR&   \        RR
4      ;_uu_ 4       pVP                  RR.4       RRR4       \        P                  ! VR4      pV P                  \         P                  ! V4      P                  R4       R#   + '       g   i     LY; i)z<
Test loading an application file in different dump format.
r&   ÚfileNÚsourcer¶   r²   Úhelloapplicationr©   ©Úfilenamer³   r´   rµ   )r   r<   r·   rs   Úgetr   rª   r¸   r¹   r   ÚgetApplicationr)   r�   r*   r»   r¼   )r,   r¡   Ú
baseconfigr«   Úconfigr½   r¾   s   &      r!   ÚtestLoadApplicationÚ#AppSupportTests.testLoadApplication  sJ  € ô ×Ò Ó(ˆØ˜d H¨d°H¸dÐCˆ
Ø$×*Ñ*Ö,ˆEØ—_‘_Ó&ˆFØ;MˆF�H˜fÐ%×)Ñ)¨%Ó7Ñ8Ü×Ò˜QÓ×(Ñ(¨Ô/Ü×Ò˜QÓ×$Ñ$Ð.@Ð$ÔAÜ×#Ò# F¨DÓ1ˆBØ×ÑœW×-Ò-¨bÓ1×6Ñ6¸Ö@ñ -ð —‘Ó"ˆØ-ˆˆxÑÜÐ$ c×*Ô*¨aØ�L‰Là?ØBðô÷ +ô ×Ò ¨Ó-ˆØ×Ñœ×)Ò)¨"Ó-×2Ñ2°GÖ<÷ +×*ús   ÄE<Å<F	c           
     óè  € \         P                  ! R 4      pRP                  4        FÇ  pRP                  4        F°  p\        P                  ! V4      P                  V4       \        P                  ! V4      P                  RR7       \        P                  ! RVRRV^ 4       \         P                  ! RV4      pV P                  \         P                  ! V4      P                  R 4       K²  	  KÉ  	  R# )rE   r²   ÚconverttestrÍ   Nzconverttest.out)r   r<   r·   r   rª   r¸   r¹   r   ÚconvertStylerº   r)   r�   r*   )r,   ÚapplÚinstyleÚoutstyleÚappl2s   &    r!   Útest_convertStyleÚ!AppSupportTests.test_convertStyle  s¿   € Ü×"Ò" 6Ó*ˆØ&×,Ñ,Ö.ˆGØ+×1Ñ1Ö3�Ü× Ò  Ó&×/Ñ/°Ô8Ü× Ò  Ó&×+Ñ+°]Ð+ÔCÜ× Ò Ø! 7¨DÐ2CÀXÈqôô  ×/Ò/Ð0AÀ8ÓL�Ø× Ñ ¤×!1Ò!1°%Ó!8×!=Ñ!=¸vÖFó 4ó /r    c                ó¾   € \         P                  ! R 4      p\        P                  ! V^ 4       V P	                  \         P
                  ! V4      P                  4       R# )rE   N)r   r<   r   ÚstartApplicationrW   r�   rU   )r,   rØ   s   & r!   Útest_startApplicationÚ%AppSupportTests.test_startApplication)  s?   € Ü×"Ò" 6Ó*ˆÜ×Ò˜T 1Ô%Ø�‰œ×(Ò(¨Ó.×6Ñ6Ö7r    r   N)
r   r   r   r   rÇ   rÓ   rÜ   rà   r   rv   rw   s   @r!   rÂ   rÂ      s   ø‡ € ò0ò=ò2
G÷8ð 8r    rÂ   c                   ó2   a € ] tR tRt o R tR tR tRtV tR# )ÚFooi/  c                ó<   € V P                   P                  R 4       R# )s   lalala
N)Ú	transportÚwriter�   s   &r!   ÚconnectionMadeÚFoo.connectionMade0  s   € Ø�‰×Ñ˜]Ö+r    c                óZ   € WP                   n        V P                  P                  4        R # r1   )ÚfactoryÚlinerå   ÚloseConnection)r,   rë   s   &&r!   ÚlineReceivedÚFoo.lineReceived3  s   € Ø �‰ÔØ�‰×%Ñ%Ö'r    c                óx   € V P                   P                  P                  V P                   P                  4       R # r1   )rê   ÚdÚcallbackrë   ©r,   Úreasons   &&r!   ÚconnectionLostÚFoo.connectionLost7  s"   € Ø�‰�‰×Ñ §¡× 1Ñ 1Ö2r    r   N)	r   r   r   r   rç   rí   rô   r   rv   rw   s   @r!   rã   rã   /  s   ø‡ € ò,ò(÷3ð 3r    rã   c                   ó0   a € ] tR tRt o RtR tR tRtV tR# )ÚDummyAppi;  Nc                ó6   € WP                   VP                  &   R # r1   ©Úservicesr*   ©r,   r   s   &&r!   Ú
addServiceÚDummyApp.addService>  s   € Ø&-�‰�g—l‘lÓ#r    c                ó4   € V P                   VP                   R # r1   rù   rû   s   &&r!   ÚremoveServiceÚDummyApp.removeServiceA  s   € Ø�M‰M˜'Ÿ,™,Ò'r    r   )	r   r   r   r   r   rü   rÿ   r   rv   rw   s   @r!   r÷   r÷   ;  s   ø‡ € Ø€Kò.÷(ð (r    r÷   c                   ó,   a € ] tR tRt o R tR tRtV tR# )ÚTimerTargetiE  c                ó   € . V n         R # r1   ©Úlr�   s   &r!   Ú__init__ÚTimerTarget.__init__F  s	   € ØˆŽr    c                ó<   € V P                   P                  V4       R # r1   )r  Úappend)r,   Úwhats   &&r!   r	  ÚTimerTarget.appendI  s   € Ø�‰�‰�dÖr    r  N)r   r   r   r   r  r	  r   rv   rw   s   @r!   r  r  E  s   ø‡ € ò÷ð r    r  c                   ó&   a € ] tR tRt o R tRtV tR# )ÚTestEchoiM  c                ó<   € V P                   P                  R 4       R# ©TN)rð   rñ   rò   s   &&r!   rô   ÚTestEcho.connectionLostN  s   € Ø�‰�‰˜Ör    r   N)r   r   r   r   rô   r   rv   rw   s   @r!   r  r  M  s   ø‡ € ÷ð r    r  c                   óL  a € ] tR tRt o R tR tR tR t]! ]	P                  ! ]R4      '       * R4      R 4       tR	 t]! ]	P                  ! ]R4      '       * R4      R
 4       t]! ]	P                  ! ]R4      '       * R4      R 4       tR tR tR tR tR tR tR tR tRtV tR# )ÚInternetTestsiR  c                ó
  a€ \         P                  ! 4       oSP                  4        \        P                  ! 4       p\
        Vn        \        P                  ! 4       \
        n        \        P                  ! ^ V4      pVP                  S4       VP                  P                  4       P                  p\        P                  ! 4       p\        P                  ! 4       Vn        \         Vn        RVn        \        P$                  ! RW14      P                  S4       VP                  P'                  V P(                  R4       VP                  P'                  V3R l4       VP                  P'                  R 4       VP                  # )rÅ   Nú	127.0.0.1ó   lalalac                 ó$   <€ SP                  4       # r1   ©rX   ©Úxr-   s   &€r!   Ú<lambda>Ú'InternetTests.testTCP.<locals>.<lambda>b  ó   ø€ ¨¯©¬r    c                 ó"   € \         P                  # r1   ©r  rð   ©r  s   &r!   r  r  c  ó   € ¬¯
ª
r    )r   r2   rV   r   ÚServerFactoryr  r	   ÚDeferredrð   r   Ú	TCPServerr3   Ú_portÚgetHostÚportÚClientFactoryrã   rë   Ú	TCPClientÚaddCallbackr)   )r,   rê   rb   Únumr-   s   &   @r!   ÚtestTCPÚInternetTests.testTCPS  s  ø€ Ü× Ò Ó"ˆØ	�‰ÔÜ×(Ò(Ó*ˆÜ#ˆÔÜ—^’^Ó%ŒŒ
Ü×Ò˜q 'Ó*ˆØ	×Ñ˜1ÔØ�g‰g�o‰oÓ×$Ñ$ˆÜ×(Ò(Ó*ˆÜ—N’NÓ$ˆŒ	ÜˆÔØˆŒÜ×Ò˜;¨Ó5×FÑFÀqÔIØ�	‰	×Ñ˜d×.Ñ.°	Ô:Ø�	‰	×ÑÔ7Ô8Ø�	‰	×ÑÑ2Ô3Ø�y‰yÐr    c                ó®  aa€ \         P                  ! \        R4      '       g   \        R4      h\        P
                  ! 4       o\        P                  ! ^ S4      pVP                  4        VP                  P                  4       P                  oV P                  S^ 4       VV3R lp\        P                  ! VP                  4      P!                  V4      # )zµ
Test L{internet.UDPServer} with a random port: starting the service
should give it valid port, and stopService should free it so that we
can start a server on the same port again.
Nz)This reactor does not support UDP socketsc                 ór   <€ \         P                  ! SS4      pVP                  4        VP                  4       # r1   )r   Ú	UDPServerrV   rX   )Úignoredrb   r*  r7   s   & €€r!   ÚonStopÚ&InternetTests.test_UDP.<locals>.onStopt  s+   ø€ Ü×"Ò" 3¨Ó*ˆAØ�N‰NÔØ—=‘=“?Ð"r    )r
   ÚIReactorUDPr   r   r   ÚDatagramProtocolr   r/  rV   r$  r%  r&  ÚassertNotEqualr	   ÚmaybeDeferredrX   r)  )r,   rb   r1  r*  r7   s   &  @@r!   Útest_UDPÚInternetTests.test_UDPf  s›   ù€ ô ×%Ò%¤g¨t×4Ò4ÜÐFÓGÐGÜ×%Ò%Ó'ˆÜ×Ò˜q !Ó$ˆØ	�‰ÔØ�g‰g�o‰oÓ×$Ñ$ˆØ×Ñ˜C Ô#ö	#ô
 ×"Ò" 1§=¡=Ó1×=Ñ=¸fÓEÐEr    c                ó  aa€ \         P                  ! 4       p\        Vn         \        P                  ! 4       \        n        \        P                  ! ^ V4      o^Sn        SP                  4        SP                  P                  4       P                  p\         P                  ! 4       p\        P                  ! 4       Vn        \        Vn         RVn        \        P                   ! RW!4      oSP#                  4        VP
                  P%                  V P&                  R4       VP
                  P%                  V3R l4       VP
                  P%                  V3R l4       VP
                  P%                  R 4       VP
                  # )rÅ   Nr  r  c                 ó$   <€ SP                  4       # r1   r  )r  Úcs   &€r!   r  Ú.InternetTests.testPrivileged.<locals>.<lambda>Š  r  r    c                 ó$   <€ SP                  4       # r1   r  ©r  rb   s   &€r!   r  r<  ‹  r  r    c                 ó"   € \         P                  # r1   r  r  s   &r!   r  r<  Œ  r   r    )r   r!  r  r	   r"  rð   r   r#  Ú
privilegedrn   r$  r%  r&  r'  rã   rë   r(  rV   r)  r)   )r,   rê   r*  r;  rb   s   &  @@r!   rp   ÚInternetTests.testPrivileged{  s  ù€ Ü×(Ò(Ó*ˆÜ#ˆÔÜ—^’^Ó%ŒŒ
Ü×Ò˜q 'Ó*ˆØˆŒØ	× Ñ Ô"Ø�g‰g�o‰oÓ×$Ñ$ˆÜ×(Ò(Ó*ˆÜ—N’NÓ$ˆŒ	ÜˆÔØˆŒÜ×Ò˜{¨CÓ9ˆØ	�‰ÔØ�	‰	×Ñ˜d×.Ñ.°	Ô:Ø�	‰	×ÑÔ7Ô8Ø�	‰	×ÑÔ7Ô8Ø�	‰	×ÑÑ2Ô3Ø�y‰yÐr    c                óÊ  a€ \         P                  ! 4       p\        P                  Vn         \        P
                  ! ^ V4      pVP                  4        VP                  P                  4       P                  pVP                  4        \        P                  ! 4       o\         P                  ! 4       pV3R lVn        \        P                  ! RW14      pVP                  4        S# )rÅ   c                  ó&   <€ SP                  R 4      # r1   ©rñ   ©Úargsrð   s   *€r!   r  Ú<InternetTests.testConnectionGettingRefused.<locals>.<lambda>˜  ó   ø€ °q·z±zÀ$Ô7Gr    r  )r   r!  r   ÚEchor   r#  rV   r$  r%  r&  rX   r	   r"  r'  ÚclientConnectionFailedr(  )r,   rê   rb   r*  r;  rð   s   &    @r!   ÚtestConnectionGettingRefusedÚ*InternetTests.testConnectionGettingRefused�  s›   ø€ Ü×(Ò(Ó*ˆÜŸ9™9ˆÔÜ×Ò˜q 'Ó*ˆØ	�‰ÔØ�g‰g�o‰oÓ×$Ñ$ˆØ	�‰ŒÜ�NŠNÓˆÜ×(Ò(Ó*ˆÜ)GˆÔ&Ü×Ò˜{¨CÓ9ˆØ	�‰ÔØˆr    Nz1This reactor does not support UNIX domain socketsc                ó  a€ \         P                  ! 4       oSP                  4        \        P                  ! 4       p\
        Vn        \        P                  ! 4       \
        n        \        P                  ! R V4      pVP                  S4       \        P                  ! 4       p\        Vn        \        P                  ! 4       Vn        RVn        \        P                  ! R V4      P                  S4       VP                  P!                  V P"                  R4       VP                  P!                  V3R l4       VP                  P!                  R 4       VP                  P!                  V P$                  VS4       VP                  # )úecho.sktNr  c                 ó$   <€ SP                  4       # r1   r  r  s   &€r!   r  Ú(InternetTests.testUNIX.<locals>.<lambda>±  r  r    c                 ó"   € \         P                  # r1   r  r  s   &r!   r  rP  ²  r   r    )r   r2   rV   r   r!  r  r	   r"  rð   r   Ú
UNIXServerr3   r'  rã   rë   Ú
UNIXClientr)  r)   Ú_cbTestUnix)r,   rê   rb   r-   s   &  @r!   ÚtestUNIXÚInternetTests.testUNIX�  s  ø€ ô × Ò Ó"ˆØ	�‰ÔÜ×(Ò(Ó*ˆÜ#ˆÔÜ—^’^Ó%ŒŒ
Ü×Ò 
¨GÓ4ˆØ	×Ñ˜1ÔÜ×(Ò(Ó*ˆÜˆÔÜ—N’NÓ$ˆŒ	ØˆŒÜ×Ò˜J¨Ó0×AÑAÀ!ÔDØ�	‰	×Ñ˜d×.Ñ.°	Ô:Ø�	‰	×ÑÔ7Ô8Ø�	‰	×ÑÑ2Ô3Ø�	‰	×Ñ˜d×.Ñ.°¸Ô;Ø�y‰yÐr    c                ó|  a€ \         P                  ! 4       \        n        R Vn        \         P                  ! 4       Vn        SP                  4        VP                  P                  V P                  R4       VP                  P                  V3R l4       VP                  P                  R 4       VP                  # )Nr  c                 ó$   <€ SP                  4       # r1   r  r  s   &€r!   r  Ú+InternetTests._cbTestUnix.<locals>.<lambda>¼  r  r    c                 ó"   € \         P                  # r1   r  r  s   &r!   r  rY  ½  r   r    )r	   r"  r  rð   rë   rV   r)  r)   )r,   r0  rê   r-   s   &&&fr!   rT  ÚInternetTests._cbTestUnix¶  sz   ø€ Ü—^’^Ó%ŒŒ
ØˆŒÜ—N’NÓ$ˆŒ	Ø	�‰ÔØ�	‰	×Ñ˜d×.Ñ.°	Ô:Ø�	‰	×ÑÔ7Ô8Ø�	‰	×ÑÑ2Ô3Ø�y‰yÐr    c                ó–  € \         P                  ! 4       p\        P                  Vn         \        P
                  ! R V4      pVP                  4        V P                  VP                  R4       \        P                  ! V4      pV P                  VP                  4       VP                  4        V P                  VP                  4       V P                  VP                  4       \         P                  ! 4       p\        P                  Vn         \        P                  ! R V4      pVP                  4        V P                  VP                   R4       \        P                  ! V4      pV P                  VP                   4       VP                  4        V P                  VP                   4       V P                  VP                  4       R# )rN  N)r   r!  r   rI  r   rR  rV   ÚfailIfIdenticalr$  rs   rP   rX   rT   rU   r'  rS  Ú_connection)r,   rê   rb   Út1s   &   r!   ÚtestVolatileÚInternetTests.testVolatileÀ  s0  € ô
 ×(Ò(Ó*ˆÜŸ9™9ˆÔÜ×Ò 
¨GÓ4ˆØ	�‰ÔØ×Ñ˜QŸW™W dÔ+Ü�YŠY�q‹\ˆØ×Ñ˜"Ÿ(™(Ô#Ø	�‰ŒØ×Ñ˜!Ÿ'™'Ô"Ø×Ñ˜Ÿ™Ô#ä×(Ò(Ó*ˆÜŸ9™9ˆÔÜ×Ò 
¨GÓ4ˆØ	�‰ÔØ×Ñ˜QŸ]™]¨DÔ1Ü�YŠY�q‹\ˆØ×Ñ˜"Ÿ.™.Ô)Ø	�‰ŒØ×Ñ˜!Ÿ-™-Ô(Ø×Ñ˜Ÿ™Ö#r    c                ó˜  a€ \         P                  ! 4       p\        P                  Vn         \        P
                  ! R V4      pVP                  4        VP                  4        V P                  VP                  4       \         P                  ! 4       p\        P                  ! 4       oV3R lVn        \        P                  ! R V4       S# )rN  c                  ó&   <€ SP                  R 4      # r1   rD  rE  s   *€r!   r  Ú2InternetTests.testStoppingServer.<locals>.<lambda>è  rH  r    )r   r!  r   rI  r   rR  rV   rX   rT   rU   r'  r	   r"  rJ  r   ÚconnectUNIX)r,   rê   rb   rð   s   &  @r!   ÚtestStoppingServerÚ InternetTests.testStoppingServerÛ  s�   ø€ ô
 ×(Ò(Ó*ˆÜŸ9™9ˆÔÜ×Ò 
¨GÓ4ˆØ	�‰ÔØ	�‰ŒØ×Ñ˜Ÿ™Ô#Ü×(Ò(Ó*ˆÜ�NŠNÓˆÜ)GˆÔ&Ü×Ò˜J¨Ô0Øˆr    c                ó,  € \        4       p\        P                  ! ^VP                  R4      pVP	                  4        \
        P                  ! V4      pVP                  4        \
        P                  ! V4      pV P                  VP                  4       R# )rj   r&   N)r  r   ÚTimerServicer	  rV   r©   ÚdumpsrX   ÚloadsrT   rU   )r,   ÚtargetÚt0r-   rb   s   &    r!   ÚtestPickledTimerÚInternetTests.testPickledTimerì  sb   € Ü“ˆÜ×"Ò" 1 f§m¡m°WÓ=ˆØ
�‰ÔÜ�LŠL˜ÓˆØ
�‰Ôä�LŠL˜‹OˆØ×Ñ˜Ÿ™Ö#r    c                ó  a aaa€ \         P                  ! 4       o\        P                  ! ^R 4      oSP                  oVV3R lpVSn        SP                  4        SP                  V3R l4       SP                  V 3R l4       S# )rj   c                  ó   € ^^ ,          # ©rj   r   r   r    r!   r  Ú/InternetTests.testBrokenTimer.<locals>.<lambda>ø  s   € ¨Q°!®Vr    c                 ó:   <€ S! V 4       SP                  R 4       R # r1   rD  )Úwhyrð   Ú	oldFaileds   &€€r!   Ú_failedÚ.InternetTests.testBrokenTimer.<locals>._failedû  s   ø€ Ù�cŒNØ�J‰J�tÖr    c                 ó   <€ SP                   # r1   r  r>  s   &€r!   r  rs    s	   ø€  §¢r    c                 ó¨   <€ SP                  \        .SP                  \        4       Uu. uF  qP                  P                  NK  	  up4      # u upi r1   )r)   ÚZeroDivisionErrorÚflushLoggedErrorsÚvalueÚ	__class__)r  Úor,   s   & €r!   r  rs    sA   ø€ �d×&Ñ&Ü"Ð#Ø,0×,BÑ,BÔCTÔ,UÓVÑ,U q—‘×"Ô"Ñ,UÑVôùâVs   ªA
)r	   r"  r   ri  rw  rV   r)  )r,   rw  rð   rv  rb   s   f @@@r!   ÚtestBrokenTimerÚInternetTests.testBrokenTimerö  sg   û€ Ü�NŠNÓˆÜ×!Ò! !¡^Ó4ˆØ—I‘Iˆ	ö	ð ˆŒ	Ø	�‰ÔØ	�‰Ô-Ô.Ø	�‰ôô	
ð ˆr    c           	     ó®  € . R
OpVR,           F>  p\        \        RV,           4      ! \        R4      '       d   K-  VP                  V4       K@  	  V Fÿ  pR Fõ  pVR8X  d
   VR8X  d   K  VR8X  d
   VR8X  d   K#  V P	                  \        \        W#,           4      4       \        \        W#,           4      P                  pRRRR	/V,          pT P	                  \        \        WT,           4      ;'       g    VR	8H  ;'       d    VR8H  4       \        \        W#,           4      ! 4       pV P                  \        P                  ! V4      V4       K÷  	  EK  	  R# )z®
L{twisted.application.internet} dynamically defines a set of
L{service.Service} subclasses that in general have corresponding
reactor.listenXXX or reactor.connectXXX calls.
ÚUDPÚ	Multicast:NNNÚIReactorNÚServerÚClientÚlistenÚconnect)ÚTCPÚUNIXÚSSLrƒ  ÚUNIXDatagramr„  )r†  r‡  )Úgetattrr
   r   ÚremoverW   Úhasattrr   Úmethodr)   r   r�   )r,   ÚtransÚtranÚsider‘  Úprefixr  s   &      r!   Útest_everythingThereÚ"InternetTests.test_everythingThere
  s  € ò KˆØ˜!—H�HˆDÜœ: z°DÕ'8Ô9¼'À4×HÔHØ—‘˜TÖ"ñ ó ˆDÛ,�Ø˜;Ô&¨4°8Ô+;ÙØ˜5”= T¨XÔ%5ÙØ—‘¤¬°$µ+Ó >Ô?Ü ¤¨4­;Ó7×>Ñ>�Ø" H¨h¸	ÐBÀ4ÕH�Ø—‘ÜœG V¥_Ó5÷ Að AØ )Ñ+×?Ð?°¸%±ôô œH d¥kÔ2Ó4�Ø× Ñ ¤×!1Ò!1°!Ó!4°aÖ8ô -ó r    c                óz   € \         P                   F&  pV P                  \        \         V4      V R24       K(  	  R# )z´
L{twisted.application.internet} dynamically defines L{service.Service}
subclasses. This test ensures that the subclasses exposed by C{__all__}
are valid attributes of the module.
z1 not importable from twisted.application.internetN)r   Ú__all__rW   r�  )r,   Úclss   & r!   Útest_importAllÚInternetTests.test_importAll$  s5   € ô ×#Ô#ˆCØ�O‰OÜœ #Ó&Ø�%ÐHÐIöó $r    c                óä   € \        4       p\        4       p\        P                  ! RW!R7      pVP	                  4        V P                  VP                  P                  4       R,          RV34       R# )z�
L{internet._AbstractServer} supports a C{reactor} keyword argument
that can be used to parametrize the reactor used to listen for
connections.
éÒ  ©r   ºNé   NN)r   Úobjectr   r#  rV   r)   Ú
tcpServersÚpop©r,   r   rê   rb   s   &   r!   Ú#test_reactorParametrizationInServerÚ1InternetTests.test_reactorParametrizationInServer0  sV   € ô  “/ˆä“(ˆÜ×Ò˜t WÔ>ˆØ	�‰ÔØ×Ñ˜×+Ñ+×/Ñ/Ó1°"Õ5¸¸g°ÖGr    c                óþ   € \        4       p\        P                  ! 4       p\        P                  ! RRW!R7      pVP                  4        V P                  VP                  P                  4       R,          RRV34       R# )z˜
L{internet._AbstractClient} supports a C{reactor} keyword arguments
that can be used to parametrize the reactor used to create new client
connections.
r  rž  rŸ  ºNé   NN)	r   r   r'  r   r(  rV   r)   Ú
tcpClientsr¤  r¥  s   &   r!   Ú#test_reactorParametrizationInClientÚ1InternetTests.test_reactorParametrizationInClient=  sb   € ô  “/ˆä×(Ò(Ó*ˆÜ×Ò˜{¨D°'ÔKˆØ	�‰ÔØ×Ñ˜×+Ñ+×/Ñ/Ó1°"Õ5¸ÀTÈ7Ð7SÖTr    c                ó   € \        4       p\        P                  ! 4       p\        P                  ! RW!R7      pVP                  4        V P                  VP                  P                  4       R,          RV34       VP                  4        VP                  4        V P                  VP                  P                  4       R,          RV34       R# )z
Like L{test_reactorParametrizationInServer}, but stop and restart the
service and check that the given reactor is still used.
rž  rŸ  r   N)
r   r   ÚFactoryr   r#  rV   r)   r£  r¤  rX   r¥  s   &   r!   Ú0test_reactorParametrizationInServerMultipleStartÚ>InternetTests.test_reactorParametrizationInServerMultipleStartJ  s˜   € ô
  “/ˆä×"Ò"Ó$ˆÜ×Ò˜t WÔ>ˆØ	�‰ÔØ×Ñ˜×+Ñ+×/Ñ/Ó1°"Õ5¸¸g°ÔGØ	�‰ŒØ	�‰ÔØ×Ñ˜×+Ñ+×/Ñ/Ó1°"Õ5¸¸g°ÖGr    c                ó¦  € \        4       p\        P                  ! 4       p\        P                  ! RRW!R7      pVP                  4        V P                  VP                  P                  4       R,          RRV34       VP                  4        VP                  4        V P                  VP                  P                  4       R,          RRV34       R# )z
Like L{test_reactorParametrizationInClient}, but stop and restart the
service and check that the given reactor is still used.
r  rž  rŸ  r©  N)
r   r   r'  r   r(  rV   r)   r«  r¤  rX   r¥  s   &   r!   Ú0test_reactorParametrizationInClientMultipleStartÚ>InternetTests.test_reactorParametrizationInClientMultipleStartY  s    € ô
  “/ˆä×(Ò(Ó*ˆÜ×Ò˜{¨D°'ÔKˆØ	�‰ÔØ×Ñ˜×+Ñ+×/Ñ/Ó1°"Õ5¸ÀTÈ7Ð7SÔTØ	�‰ŒØ	�‰ÔØ×Ñ˜×+Ñ+×/Ñ/Ó1°"Õ5¸ÀTÈ7Ð7SÖTr    r   )r   r   r   r   r+  r7  rp   rK  r   r
   ÚIReactorUNIXr   rU  rT  r`  rf  rn  r€  r–  r›  r¦  r¬  r°  r³  r   rv   rw   s   @r!   r  r  R  sÞ   ø‡ € òò&Fò*ò(ñ Ø×#Ò# G¨TÓ2Ô2Ø;óñó	ðò*ñ Ø×#Ò# G¨TÓ2Ô2Ø;óñ$ó	ð$ñ. Ø×#Ò# G¨TÓ2Ô2Ø;óñó	ðò$òò(9ò4
òHòUòH÷Uð Ur    r  c                   ó8   a € ] tR tRt o R tR tR tR tRtV t	R# )ÚTimerBasicTestsii  c                ó@  a € \         P                  ! 4       p\        P                  ! ^VP                  R4      S n        S P
                  P                  4        VP                  S P                  R4       VP                  V 3R l4       VP                  V 3R l4       V# )rj   r&   c                 ó8   <€ SP                   P                  4       # r1   ©rb   rX   ©r  r,   s   &€r!   r  Ú/TimerBasicTests.testTimerRuns.<locals>.<lambda>o  ó   ø€  §¡× 2Ñ 2Ô 4r    c                 óN   <€ SP                  SP                  P                  4      # r1   )rT   rb   rU   r»  s   &€r!   r  r¼  p  s   ø€  × 0Ñ 0°·±·±Ô @r    )	r	   r"  r   ri  rñ   rb   rV   r)  r)   )r,   rð   s   f r!   ÚtestTimerRunsÚTimerBasicTests.testTimerRunsj  sl   ø€ Ü�NŠNÓˆÜ×&Ò& q¨!¯*©*°gÓ>ˆŒØ�‰×ÑÔØ	�‰�d×&Ñ&¨Ô0Ø	�‰Ô4Ô5Ø	�‰Ô@ÔAØˆr    c                ó6   € V P                   P                  4       # r1   rº  r�   s   &r!   ÚtearDownÚTimerBasicTests.tearDowns  s   € Ø�v‰v×!Ñ!Ó#Ð#r    c                ót  a aa€ \         P                  ! 4       p\         P                  ! 4       oSR 3VR3.oV3R lp\        P                  ! ^V4      S n        S P                  P                  4        V 3R lpVV 3R lpV 3R lpVP                  V4       VP                  V4       VP                  V4       V# )ÚbarÚfooc                  óN   <€ SP                  4       w  rV P                  V4       R # r1   )r¤  rñ   )rð   ÚargÚworks     €r!   ÚtriggerÚ1TimerBasicTests.testTimerRestart.<locals>.trigger|  s   ø€ Ø—X‘X“Z‰FˆAØ�J‰J�sŽOr    c                 ó\   <€ SP                  V R 4       SP                  P                  4       # )rÆ  ©r)   rb   rX   ©Úresultr,   s   &€r!   ÚonFirstResultÚ7TimerBasicTests.testTimerRestart.<locals>.onFirstResultƒ  s&   ø€ Ø×Ñ˜V UÔ+Ø—6‘6×%Ñ%Ó'Ð'r    c                 ó†   <€ SP                  SP                  P                  4       SP                  P                  4        S# r1   )rT   rb   rU   rV   )r0  Úd2r,   s   &€€r!   ÚonFirstStopÚ5TimerBasicTests.testTimerRestart.<locals>.onFirstStop‡  s.   ø€ Ø×Ñ˜TŸV™VŸ^™^Ô,Ø�F‰F×ÑÔ!ØˆIr    c                 ó`   <€ SP                  V R 4       SP                  P                  4        R# )rÅ  NrÍ  rÎ  s   &€r!   ÚonSecondResultÚ8TimerBasicTests.testTimerRestart.<locals>.onSecondResultŒ  s#   ø€ Ø×Ñ˜V UÔ+Ø�F‰F×ÑÖ r    )r	   r"  r   ri  rb   rV   r)  )r,   Úd1rÊ  rÐ  rÔ  r×  rÓ  rÉ  s   f     @@r!   ÚtestTimerRestartÚ TimerBasicTests.testTimerRestartv  s’   ú€ ä�^Š^ÓˆÜ�^Š^ÓˆØ�U�˜b %˜[Ð)ˆõ	ô ×&Ò& q¨'Ó2ˆŒØ�‰×ÑÔõ	(ö	õ
	!ð 	�‰�}Ô%Ø
�‰�{Ô#Ø
�‰�~Ô&Øˆ	r    c                ó(  a a€ . oV3R  lp\         P                  ! 4       p\        P                  ! RVR^
V4      S n        S P                  P                  4        VP                  S P                  R.^
,          4       VP                  V 3R l4       V# )c                 óp   <€ SP                  V 4       \        S4      V8X  d   VP                  S4       R # R # r1   )r	  Úlenrñ   )ÚdataÚnumberrð   r  s   &&&€r!   rÊ  Ú/TimerBasicTests.testTimerLoops.<locals>.trigger˜  s*   ø€ Ø�H‰H�TŒNÜ�1‹v˜ÔØ—
‘
˜1–ñ  r    g{®Gáz„?r&   c                 ó8   <€ SP                   P                  4       # r1   rº  r»  s   &€r!   r  Ú0TimerBasicTests.testTimerLoops.<locals>.<lambda>¡  r½  r    )r	   r"  r   ri  rb   rV   r)  r)   )r,   rÊ  rð   r  s   f  @r!   ÚtestTimerLoopsÚTimerBasicTests.testTimerLoops•  sq   ù€ Øˆõ	ô
 �NŠNÓˆÜ×&Ò& t¨W°g¸rÀ1ÓEˆŒØ�‰×ÑÔØ	�‰�d×&Ñ&¨¨	°B­Ô7Ø	�‰Ô4Ô5Øˆr    )rb   N)
r   r   r   r   r¿  rÂ  rÚ  rä  r   rv   rw   s   @r!   r·  r·  i  s   ø‡ € òò$ò÷>ð r    r·  c                   ó*   a € ] tR tRt o RtR tRtV tR# )ÚFakeReactori¥  z.
A fake reactor with a hooked install method.
c                óZ   € \         P                  P                  ! V .VO5/ VB  Wn        R# )z^
@param install: any callable that will be used as install method.
@type install: C{callable}
N)r   ÚReactorr  Úinstall)r,   rê  rF  Úkwargss   &&*,r!   r  ÚFakeReactor.__init__ª  s'   € ô
 	×Ñ×!Ò! $Ð8¨Ò8°Ò8ØŽr    )rê  N)r   r   r   r   Ú__doc__r  r   rv   rw   s   @r!   rç  rç  ¥  s   ø‡ € ñ÷ð r    rç  c                   óv   a € ] tR tRt o RtR tR tRR ltR tR t	R	 t
R
 tR tR tR tR tR tR tRtV tR# )ÚPluggableReactorTestsi³  z2
Tests for the reactor discovery/inspection APIs.
c                óv   € . V n         . V n        \        P                  V n        V P
                  \        n        R# )a  
Override the L{reactors.getPlugins} function, normally bound to
L{twisted.plugin.getPlugins}, in order to control which
L{IReactorInstaller} plugins are seen as available.

C{self.pluginResults} can be customized and will be used as the
result of calls to C{reactors.getPlugins}.
N)ÚpluginCallsÚpluginResultsr   Ú
getPluginsÚoriginalFunctionÚ_getPluginsr�   s   &r!   ÚsetUpÚPluggableReactorTests.setUp¸  s0   € ð ˆÔØˆÔÜ (× 3Ñ 3ˆÔØ"×.Ñ.ŒÖr    c                ó0   € V P                   \        n        R# )z.
Restore the original L{reactors.getPlugins}.
N)rô  r   ró  r�   s   &r!   rÂ  ÚPluggableReactorTests.tearDownÆ  s   € ð #×3Ñ3ŒÖr    Nc                ód   € V P                   P                  W34       \        V P                  4      # )za
Stand-in for the real getPlugins method which records its arguments
and returns a fixed result.
)rñ  r	  r4   rò  )r,   Ú	interfaceÚpackages   &&&r!   rõ  Ú!PluggableReactorTests._getPluginsÌ  s,   € ð
 	×Ñ×Ñ Ð 4Ô5Ü�D×&Ñ&Ó'Ð'r    c                óz  € Rp\         R,           pRp\        P                  ! WV4      .V n        \        P                  ! 4       pV P                  V P                  \        P                  R3.4       V F3  pVP                  V8X  g   K  V P                  VP                  V4        R# 	  V P                  R4       R# )z@
Test that reactor plugins are returned from L{getReactorTypes}
Úfakereactortestz.fakereactorÚdescriptionNz6Reactor plugin not present in getReactorTypes() result)r   r   ré  rò  ÚgetReactorTypesr)   rñ  ÚIReactorInstallerÚ	shortNamer   Úfail)r,   r*   rü  r   ÚreactorTypesÚrs   &     r!   Útest_getPluginReactorTypesÚ0PluggableReactorTests.test_getPluginReactorTypesÔ  sž   € ð !ˆÜ˜^Õ+ˆØ#ˆÜ&×.Ò.¨t¸kÓJÐKˆÔÜ×/Ò/Ó1ˆà×Ñ˜×)Ñ)¬X×-GÑ-GÈÐ,NÐ+OÔPãˆAØ�{‰{˜dÖ"Ø× Ñ  §¡°Ô<Úñ ð
 �I‰IÐNÖOr    c                óÜ   a€ . oV3R lp\        VR\        R4      pRV/pV P                  V4       \        P                  ! RRR4      pVP                  4        V P                  SR.4       R# )za
Test that L{reactors.Reactor.install} loads the correct module and
calls its install attribute.
c                  ó*   <€ S P                  R 4       R# r  ©r	  ©Ú	installeds   €r!   rê  Ú?PluggableReactorTests.test_reactorInstallation.<locals>.installî  ó   ø€ Ø×Ñ˜TÖ"r    rÿ  Ú	describedÚfakereactorTN)rç  r   ÚreplaceSysModulesr   ré  rê  r)   )r,   rê  ÚfakeReactorÚmodulesÚ	installerr  s   &    @r!   Útest_reactorInstallationÚ.PluggableReactorTests.test_reactorInstallationç  sm   ø€ ð
 ˆ	õ	#ô " 'Ð+<¼hÈÓTˆØ$ kÐ2ˆØ×Ñ˜wÔ'Ü×$Ò$ ]Ð4EÀ{ÓSˆ	Ø×ÑÔØ×Ñ˜ T FÖ+r    c                ó¢   a€ . oV3R lpRp\         pRp\        WW44      .V n        \        P                  ! V4       V P                  SR.4       R# )z]
Test that the L{reactors.installReactor} function correctly installs
the specified reactor.
c                  ó*   <€ S P                  R 4       R# r  r  r  s   €r!   rê  Ú:PluggableReactorTests.test_installReactor.<locals>.installÿ  r  r    rÿ  r   TN©r   rç  rò  r   ÚinstallReactorr)   )r,   rê  r*   rü  r   r  s   &    @r!   Útest_installReactorÚ)PluggableReactorTests.test_installReactorø  sR   ø€ ð
 ˆ	õ	#ð !ˆÜˆØ#ˆÜ)¨'¸ÓNÐOˆÔÜ×Ò Ô%Ø×Ñ˜ T FÖ+r    c                ó´   a a€ \        4       oVV 3R lpRp\        pRp\        WW44      .S n        \        P
                  ! V4      pS P                  VS4       R# )z\
Test that the L{reactors.installReactor} function correctly returns
the installed reactor.
c                  ó:   <€ ^ RI Hp  SP                  V RS4       R# )rÅ   )r   r   N)Útwistedr   Úpatch)r   r   r,   s    €€r!   rê  ÚHPluggableReactorTests.test_installReactorReturnsReactor.<locals>.install  s   ø€ Ý(à�J‰J�x ¨GÖ4r    rÿ  r   N)r¢  r   rç  rò  r   r  r¥   )r,   rê  r*   rü  r   r  r   s   f     @r!   Ú!test_installReactorReturnsReactorÚ7PluggableReactorTests.test_installReactorReturnsReactor	  sR   ù€ ô
 “(ˆö	5ð
 !ˆÜˆØ#ˆÜ)¨'¸ÓNÐOˆÔÜ×+Ò+¨DÓ1ˆ	Ø�‰�i Ö)r    c                óÂ   a€ . oV3R lpRp\         pRp\        WW44      p\        R RW44      pWe.V n        \        P                  ! V4       V P                  SR.4       R# )z…
Test that the L{reactors.installReactor} function correctly installs
the specified reactor when there are multiple reactor plugins.
c                  ó*   <€ S P                  R 4       R# r  r  r  s   €r!   rê  ÚIPluggableReactorTests.test_installReactorMultiplePlugins.<locals>.install#  r  r    rÿ  r   c                  ó   € R # r1   r   r   r    r!   r  ÚJPluggableReactorTests.test_installReactorMultiplePlugins.<locals>.<lambda>*  s   € ©4r    ÚotherreactorTNr  )r,   rê  r*   rü  r   r  ÚotherReactorr  s   &      @r!   Ú"test_installReactorMultiplePluginsÚ8PluggableReactorTests.test_installReactorMultiplePlugins  se   ø€ ð
 ˆ	õ	#ð !ˆÜˆØ#ˆÜ! '°ÓFˆÜ"¡<°ÀÓVˆØ*Ð8ˆÔÜ×Ò Ô%Ø×Ñ˜ T FÖ+r    c                ór   € . V n         V P                  \        P                  \        P                  R4       R# )z}
Test that L{reactors.installReactor} raises L{reactors.NoSuchReactor}
when asked to install a reactor which it cannot find.
ÚsomereactorN)rò  rG   r   ÚNoSuchReactorr  r�   s   &r!   Útest_installNonExistentReactorÚ4PluggableReactorTests.test_installNonExistentReactor/  s-   € ð
  ˆÔØ×ÑÜ×"Ñ"¤H×$;Ñ$;¸]ö	
r    c                óŽ   € R pRp\         pRp\        WW44      .V n        V P                  \        \
        P                  V4       R# )z‚
Test that L{reactors.installReactor} raises an exception when asked to
install a reactor which doesn't work in this environment.
c                  ó   € \        R 4      h)úMissing foo bar©ÚImportErrorr   r    r!   rê  ÚFPluggableReactorTests.test_installNotAvailableReactor.<locals>.install?  s   € ÜÐ/Ó0Ð0r    rÿ  r   N)r   rç  rò  rG   r8  r   r  )r,   rê  r*   rü  r   s   &    r!   Útest_installNotAvailableReactorÚ5PluggableReactorTests.test_installNotAvailableReactor9  sB   € ò	1ð !ˆÜˆØ#ˆÜ)¨'¸ÓNÐOˆÔØ×Ñœ+¤x×'>Ñ'>ÀÖEr    c                óˆ  aaa€ . oRoRo ! VV3R lR\         P                  \        P                  4      pVV3R lp\	        VR\
        R4      .V n        V! 4       pVP                  . R
O4       V P                  S^ ,          S4       V P                  SP                  S4      ^4       V P                  VR,          R4       R	# )z`
Test that the reactor selected is installed as soon as possible, ie
when the option is parsed.
zreactor installedzsubcommands loadedc                   ó:   <a € ] tR tRt o ]VV3R l4       tRtV tR# )ÚQPluggableReactorTests.test_reactorSelectionMixin.<locals>.ReactorSelectionOptionsiQ  c                ó>   <a € SP                  S4       R RV 3R lR3.# )Ú
subcommandNc                  ó   <€ S # r1   r   r�   s   €r!   r  ÚoPluggableReactorTests.test_reactorSelectionMixin.<locals>.ReactorSelectionOptions.subCommands.<locals>.<lambda>U  s   ø€ ±Tr    ztest subcommandr  )r,   ÚSUBCOMMAND_EVENTÚexecuteds   f€€r!   ÚsubCommandsÚ]PluggableReactorTests.test_reactorSelectionMixin.<locals>.ReactorSelectionOptions.subCommandsR  s#   ù€ à—‘Ð 0Ô1Ø% t¬\Ð;LÐMÐNÐNr    r   N)r   r   r   r   ÚpropertyrE  r   rv   )rx   rC  rD  s   @€€r!   ÚReactorSelectionOptionsr>  Q  s   ù‡ € ØõOó öOr    rH  c                  ó*   <€ SP                  S 4       R # r1   r  )ÚINSTALL_EVENTrD  s   €€r!   rê  ÚAPluggableReactorTests.test_reactorSelectionMixin.<locals>.installW  s   ø€ Ø�O‰O˜MÖ*r    rÿ  r  r   N©z	--reactorrÿ  r@  )
r   ÚOptionsr   ÚReactorSelectionMixinrç  r   rò  ÚparseOptionsr)   Úcount)r,   rH  rê  ÚoptionsrJ  rC  rD  s   &   @@@r!   Útest_reactorSelectionMixinÚ0PluggableReactorTests.test_reactorSelectionMixinH  s±   ú€ ð
 ˆØ+ˆØ/Ð÷	Oð 	O¤e§m¡m´S×5NÑ5Nô 	Oö	+ô ˜Ð!2´H¸kÓJð
ˆÔñ *Ó+ˆØ×ÑÒKÔLØ×Ñ˜ !� mÔ4Ø×Ñ˜Ÿ™¨Ó6¸Ô:Ø×Ñ˜ Õ+Ð->Ö?r    c                óv  €  ! R R\         P                  \        P                  4      p. V n        V! 4       p\        4       Vn        V P                  \         P                  VP                  . RO4      pV P                  RVP                  ^ ,          4       V P                  RVP                  ^ ,          4       R# )zŒ
Test that the usage mixin exits when trying to use a non existent
reactor (the name not matching to any reactor), giving an error
message.
c                   ó   € ] tR tRtRtR# )Ú\PluggableReactorTests.test_reactorSelectionMixinNonExistent.<locals>.ReactorSelectionOptionsik  r   N©r   r   r   r   r   r   r    r!   rH  rV  k  ó   † Ûr    rH  rÿ  úhelp-reactorsNrL  )r   rM  r   rN  rò  r   ÚmessageOutputrG   Ú
UsageErrorrO  ÚassertInrF  )r,   rH  rQ  Úes   &   r!   Ú%test_reactorSelectionMixinNonExistentÚ;PluggableReactorTests.test_reactorSelectionMixinNonExistentd  sŠ   € ô	¤e§m¡m´S×5NÑ5Nô 	ð  ˆÔá)Ó+ˆÜ (£
ˆÔØ×ÑÜ×ÑØ× Ñ Ú:ó
ˆð
 	�‰Ð'¨¯©°­Ô3Ø�‰�o q§v¡v¨a¥yÖ1r    c                ó²  a€  ! R R\         P                  \        P                  4      pRoV3R lpRp\        pRp\        W#WE4      .V n        V! 4       p\        4       Vn        V P                  \         P                  VP                  . R	O4      pV P                  SVP                  ^ ,          4       V P                  RVP                  ^ ,          4       R# )
z”
Test that the usage mixin exits when trying to use a reactor not
available (the reactor raises an error at installation), giving an
error message.
c                   ó   € ] tR tRtRtR# )Ú]PluggableReactorTests.test_reactorSelectionMixinNotAvailable.<locals>.ReactorSelectionOptionsi�  r   NrW  r   r    r!   rH  rb  �  rX  r    rH  r6  c                  ó   <€ \        S 4      hr1   r7  )Úmessages   €r!   rê  ÚMPluggableReactorTests.test_reactorSelectionMixinNotAvailable.<locals>.install†  s   ø€ Ü˜gÓ&Ð&r    rÿ  r   rY  NrL  )r   rM  r   rN  r   rç  rò  r   rZ  rG   r[  rO  r\  rF  )	r,   rH  rê  r*   rü  r   rQ  r]  rd  s	   &       @r!   Ú&test_reactorSelectionMixinNotAvailableÚ<PluggableReactorTests.test_reactorSelectionMixinNotAvailablez  s¯   ø€ ô	¤e§m¡m´S×5NÑ5Nô 	ð $ˆõ	'ð !ˆÜˆØ#ˆÜ)¨'¸ÓNÐOˆÔá)Ó+ˆÜ (£
ˆÔØ×ÑÜ×ÑØ× Ñ Ú:ó
ˆð
 	�‰�g˜qŸv™v a�yÔ)Ø�‰�o q§v¡v¨a¥yÖ1r    )rô  rñ  rò  r1   )r   r   r   r   rí  rö  rÂ  rõ  r  r  r  r$  r-  r2  r:  rR  r^  rf  r   rv   rw   s   @r!   rï  rï  ³  sS   ø‡ € ñò/ò4ô(òPò&,ò",ò"*ò&,ò&
òFò@ò82÷,2ð 2r    rï  c                   ó¾   a € ] tR tRt o RtR t]! ]R4      R 4       t]! ]'       * R4      R 4       t	]! ]
R8g  R	4      R
 4       t]! ]
R8H  R4      R 4       tR tRtV tR# )ÚHelpReactorsTestsi™  z.
--help-reactors lists the available reactors
c                ó  € \         P                  ! 4       V n        \        4       V P                  n        V P                  \        V P                  P                  4       V P                  P                  P                  4       V n	        R# )z#
Get the text from --help-reactors
N)
r   rN  rQ  r   rZ  rG   Ú
SystemExitÚopt_help_reactorsÚgetvaluerd  r�   s   &r!   rö  ÚHelpReactorsTests.setUpž  sV   € ô ×0Ò0Ó2ˆŒÜ%-£Zˆ�‰Ô"Ø×Ñœ* d§l¡l×&DÑ&DÔEØ—|‘|×1Ñ1×:Ñ:Ó<ˆŽr    z$Not applicable, asyncio is availablec                óä   € V P                  \        P                  P                  V P                  4       V P                  R\        P                  P
                  ,           V P                  4       R# )zH
--help-reactors should NOT display the asyncio reactor on Python < 3.4
Ú!N)r\  r   Úasyncior   rd  r  r�   s   &r!   Útest_lacksAsyncIOÚ#HelpReactorsTests.test_lacksAsyncIO§  sG   € ð
 	�‰Ô&×.Ñ.×:Ñ:¸D¿L¹LÔIØ�‰�cÔ,×4Ñ4×>Ñ>Õ>ÀÇÁÖMr    zasyncio library not availablec                óä   € V P                  \        P                  P                  V P                  4       V P                  R\        P                  P                  ,           V P                  4       R# )zE
--help-reactors should display the asyncio reactor on Python >= 3.4
rp  N)r\  r   rq  r   rd  ÚassertNotInr  r�   s   &r!   Útest_hasAsyncIOÚ!HelpReactorsTests.test_hasAsyncIO¯  sI   € ð
 	�‰Ô&×.Ñ.×:Ñ:¸D¿L¹LÔIØ×Ñ˜Ô/×7Ñ7×AÑAÕAÀ4Ç<Á<ÖPr    Úwin32zTest only applicable on Windowsc                óä   € V P                  \        P                  P                  V P                  4       V P                  R\        P                  P                  ,           V P                  4       R# )z<
--help-reactors should display the iocp reactor on Windows
rp  N)r\  r   Úiocpr   rd  ru  r  r�   s   &r!   Útest_iocpWin32Ú HelpReactorsTests.test_iocpWin32·  sI   € ð
 	�‰Ô&×+Ñ+×7Ñ7¸¿¹ÔFØ×Ñ˜Ô/×4Ñ4×>Ñ>Õ>ÀÇÁÖMr    zTest not applicable on Windowsc                óä   € V P                  \        P                  P                  V P                  4       V P                  R\        P                  P
                  ,           V P                  4       R# )z@
--help-reactors should NOT display the iocp reactor on Windows
rp  N)r\  r   rz  r   rd  r  r�   s   &r!   Útest_iocpNotWin32Ú#HelpReactorsTests.test_iocpNotWin32¿  sG   € ð
 	�‰Ô&×+Ñ+×7Ñ7¸¿¹ÔFØ�‰�cÔ,×1Ñ1×;Ñ;Õ;¸T¿\¹\ÖJr    c                óø   € R p\         P                  ! 4       pWn        \        4       Vn        V P                  \        VP                  4       VP                  P                  4       pV P                  RV4       R# )z.
--help-reactors with only supported reactors
c               3   ó2   "  € \         P                  x € R # 5ir1   )r   Údefaultr   r    r!   r  ÚEHelpReactorsTests.test_onlySupportedReactors.<locals>.getReactorTypesÌ  s   é € Ü"×*Ñ*Ô*ùs   ‚zreactors not availableN)
r   rN  Ú_getReactorTypesr   rZ  rG   rk  rl  rm  ru  )r,   r  rQ  rd  s   &   r!   Útest_onlySupportedReactorsÚ,HelpReactorsTests.test_onlySupportedReactorsÇ  sb   € ò
	+ô ×+Ò+Ó-ˆØ#2Ô Ü (£
ˆÔØ×Ñœ* g×&?Ñ&?Ô@Ø×'Ñ'×0Ñ0Ó2ˆØ×ÑÐ1°7Ö;r    )rd  rQ  N)r   r   r   r   rí  rö  r   rq  rr  rv  r   r{  r~  r…  r   rv   rw   s   @r!   ri  ri  ™  sŸ   ø‡ € ñò=ñ ˆGÐ;Ó<ñNó =ðNñ �ŒKÐ8Ó9ñQó :ðQñ ˆL˜GÑ#Ð%FÓGñNó HðNñ ˆL˜GÑ#Ð%EÓFñKó GðK÷<ð <r    ri  c                   ó6   a € ] tR tRt o RtR tR tR tRtV t	R# )ÚBackoffPolicyTestsi×  z8
Tests of L{twisted.application.internet.backoffPolicy}
c                ó  € \        RRRR R7      pV P                  V! ^ 4      ^4       V P                  V! ^4      R4       V P                  V! ^
4      R4       V P                  V! ^4      ^=4       V P                  V! ^d4      ^=4       R# )	z9
Test that L{backoffPolicy()} calculates expected values
ç      ð?ç      N@ç      ø?c                  ó   € ^# rr  r   r   r    r!   r  ÚCBackoffPolicyTests.test_calculates_correct_values.<locals>.<lambda>à  ó   € ¹1r    ©Újitterg      @g     UM@N)r   ÚassertAlmostEqualr)   ©r,   Úpols   & r!   Útest_calculates_correct_valuesÚ1BackoffPolicyTests.test_calculates_correct_valuesÜ  sx   € ô ˜C  s±9Ô=ˆØ×Ñ™s 1›v qÔ)Ø×Ñ™s 1›v sÔ+Ø×Ñ™s 2›w¨Ô6Ø×Ñ™˜R› "Ô%Ø×Ñ™˜S› 2Ö&r    c                ó†   € \        RRRR R7      pV P                  V! R4      ^=4       V P                  V! R4      ^=4       R# )	zÇ
L{backoffPolicy()} does not fail for large values of the attempt
parameter. In previous versions, this test failed when attempt was
larger than 1750.

See https://twistedmatrix.com/trac/ticket/9476
rŠ  r‹  rŒ  c                  ó   € ^# rr  r   r   r    r!   r  ÚLBackoffPolicyTests.test_does_not_overflow_on_high_attempts.<locals>.<lambda>ï  r�  r    r�  é×  i@B N©r   r)   r“  s   & r!   Ú'test_does_not_overflow_on_high_attemptsÚ:BackoffPolicyTests.test_does_not_overflow_on_high_attemptsç  s<   € ô ˜C  s±9Ô=ˆØ×Ñ™˜T› BÔ'Ø×Ñ™˜W› rÖ*r    c                óV   € \        RRRR R7      pV P                  V! R4      ^=4       R# )z†
Even with unusual parameters, any L{OverflowError} within
L{backoffPolicy()} will be caught and L{maxDelay} will be returned
instead
rŠ  r‹  g    _ Bc                  ó   € ^# rr  r   r   r    r!   r  ÚSBackoffPolicyTests.test_does_not_overflow_with_large_factor_value.<locals>.<lambda>ù  s   € ¹Ar    r�  rš  Nr›  r“  s   & r!   Ú.test_does_not_overflow_with_large_factor_valueÚABackoffPolicyTests.test_does_not_overflow_with_large_factor_valueó  s(   € ô ˜C  t±IÔ>ˆØ×Ñ™˜T› BÖ'r    r   N)
r   r   r   r   rí  r•  rœ  r¡  r   rv   rw   s   @r!   rˆ  rˆ  ×  s   ø‡ € ñò	'ò
+÷(ð (r    rˆ  )Arí  rs   Úosr©   Úior   rq  r8  Úunittestr   Útwisted.applicationr   r   r   r   Útwisted.application.internetr   Útwisted.internetr	   r
   r   r   Útwisted.internet.testingr   Útwisted.persistedr   Útwisted.pluginsr   Útwisted.protocolsr   r   Útwisted.pythonr   Útwisted.python.runtimer   Ú#twisted.python.test.modules_helpersr   Útwisted.trial.unittestr   r   r   r#   r�  ry   ÚcuruidÚgetgidÚcurgidr{   r‹   r›   r°   rÂ   ÚLineReceiverrã   r÷   r  rI  r  r  r·  ré  rç  rï  ri  rˆ  r   r    r!   Ú<module>rµ     s{  ðñó Û 	Û Ý ðÛõ ç @Ó @Ý 6ß AÓ AÝ 2Ý !Ý ,ß )Ý  Ý /Ý Cß 5÷ñ ôx#�8ô x#ñv ˆ2ˆx×ÒØ�YŠY‹[€FØ�YŠY‹[�FàÐ€FˆVô1�8ô 1ô0	H�hô 	Hô%�xô %ô>=�8ô =ô(,8�hô ,8ô^	3ˆ%×
Ñ
ô 	3÷(ñ (÷ñ ôˆt�y‰yô ô
TU�Hô TUôn9�hô 9ôx�(×"Ñ"ô ôc2Ð/°ô c2ôL;<˜ô ;<ô|#(˜ö #(øðM ô ØƒGðús   –F Æ	FÆF