+
    üÐj*  ã                   ó¤   € R 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 ^RIHtHt ^RIHt ^RIHt  ! R	 R
]P*                  4      tR# )z-
Test cases for L{twisted.logger._observer}.
)ÚDictÚListÚTupleÚcast)Úimplementer)ÚBrokenMethodImplementation)ÚverifyObject)Úunittest)ÚILogObserverÚLogEvent)ÚLogger)ÚLogPublisherc                   óØ   a € ] tR t^t o RtV 3R lR ltV 3R lR ltV 3R lR ltV 3R lR	 ltV 3R
 lR lt	V 3R lR lt
V 3R lR ltV 3R lR ltV 3R lR ltV 3R lR ltRtV tR# )ÚLogPublisherTestsz
Tests for L{LogPublisher}.
c                ó   <€ V ^8„  d   QhRR/# ©é   ÚreturnN© )ÚformatÚ__classdict__s   "€ÚC/usr/lib/python3/dist-packages/twisted/logger/test/test_observer.pyÚ__annotate__ÚLogPublisherTests.__annotate__   s   ø€ ÷ ñ  ñ ó    c                ó�   € \        4       p \        \        V4       R#   \         d   pT P	                  T4        Rp?R# Rp?ii ; i)z(
L{LogPublisher} is an L{ILogObserver}.
N)r   r   r
   r   Úfail)ÚselfÚ	publisherÚes   &  r   Útest_interfaceÚ LogPublisherTests.test_interface   s7   € ô !“Nˆ	ð	Üœ yÖ1øÜ)ô 	Ø�I‰I�a�LŠLûð	ús   Œ žA©A Á Ac                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   #   s   ø€ ÷ >ñ > ñ >r   c                ó¬   € \        \        R 4      p\        \        R 4      p\        W4      pV P                  W0\	        VP
                  4      4       R# )z2
L{LogPublisher.observers} returns the observers.
c                 ó   € R # ©Nr   ©r   s   &r   Ú<lambda>Ú2LogPublisherTests.test_observers.<locals>.<lambda>'   ó   € ©$r   c                 ó   € R # r%   r   r&   s   &r   r'   r(   (   r)   r   N)r   r
   r   ÚassertEqualÚsetÚ
_observers)r   Úo1Úo2r   s   &   r   Útest_observersÚ LogPublisherTests.test_observers#   sC   € ô ”,¡Ó/ˆÜ”,¡Ó/ˆä  Ó(ˆ	Ø×Ñ˜"˜¤3 y×';Ñ';Ó#<Ö=r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   -   s   ø€ ÷ 
Bñ 
B $ñ 
Br   c                óò   € \        \        R 4      p\        \        R 4      p\        \        R 4      p\        W4      pVP                  V4       V P	                  WV0\        VP                  4      4       R# )z/
L{LogPublisher.addObserver} adds an observer.
c                 ó   € R # r%   r   r&   s   &r   r'   Ú4LogPublisherTests.test_addObserver.<locals>.<lambda>1   r)   r   c                 ó   € R # r%   r   r&   s   &r   r'   r5   2   r)   r   c                 ó   € R # r%   r   r&   s   &r   r'   r5   3   r)   r   N)r   r
   r   ÚaddObserverr+   r,   r-   ©r   r.   r/   Úo3r   s   &    r   Útest_addObserverÚ"LogPublisherTests.test_addObserver-   s_   € ô ”,¡Ó/ˆÜ”,¡Ó/ˆÜ”,¡Ó/ˆä  Ó(ˆ	Ø×Ñ˜bÔ!Ø×Ñ˜" "˜¤s¨9×+?Ñ+?Ó'@ÖAr   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   9   s   ø€ ÷ Fñ F¨Tñ Fr   c                ól   € \        4       pV P                  \        VP                  \	        4       4       R# )zM
L{LogPublisher.addObserver} refuses to add an observer that's
not callable.
N)r   ÚassertRaisesÚ	TypeErrorr8   Úobject)r   r   s   & r   Útest_addObserverNotCallableÚ-LogPublisherTests.test_addObserverNotCallable9   s%   € ô
 !“Nˆ	Ø×Ñœ) Y×%:Ñ%:¼F»HÖEr   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   A   s   ø€ ÷ 
>ñ 
> Tñ 
>r   c                óò   € \        \        R 4      p\        \        R 4      p\        \        R 4      p\        WV4      pVP                  V4       V P	                  W0\        VP                  4      4       R# )z5
L{LogPublisher.removeObserver} removes an observer.
c                 ó   € R # r%   r   r&   s   &r   r'   Ú7LogPublisherTests.test_removeObserver.<locals>.<lambda>E   r)   r   c                 ó   € R # r%   r   r&   s   &r   r'   rG   F   r)   r   c                 ó   € R # r%   r   r&   s   &r   r'   rG   G   r)   r   N©r   r
   r   ÚremoveObserverr+   r,   r-   r9   s   &    r   Útest_removeObserverÚ%LogPublisherTests.test_removeObserverA   s_   € ô ”,¡Ó/ˆÜ”,¡Ó/ˆÜ”,¡Ó/ˆä  ¨Ó,ˆ	Ø× Ñ  Ô$Ø×Ñ˜"˜¤3 y×';Ñ';Ó#<Ö=r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   M   s   ø€ ÷ >ñ >°$ñ >r   c                óð   € \        \        R 4      p\        \        R 4      p\        \        R 4      p\        W4      pVP                  V4       V P	                  W0\        VP                  4      4       R# )zL
L{LogPublisher.removeObserver} removes an observer that is not
registered.
c                 ó   € R # r%   r   r&   s   &r   r'   ÚDLogPublisherTests.test_removeObserverNotRegistered.<locals>.<lambda>R   r)   r   c                 ó   € R # r%   r   r&   s   &r   r'   rQ   S   r)   r   c                 ó   € R # r%   r   r&   s   &r   r'   rQ   T   r)   r   NrJ   r9   s   &    r   Ú test_removeObserverNotRegisteredÚ2LogPublisherTests.test_removeObserverNotRegisteredM   s]   € ô
 ”,¡Ó/ˆÜ”,¡Ó/ˆÜ”,¡Ó/ˆä  Ó(ˆ	Ø× Ñ  Ô$Ø×Ñ˜"˜¤3 y×';Ñ';Ó#<Ö=r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   Z   s   ø€ ÷ &ñ &˜Tñ &r   c                óV  € \        ^^R7      p. p. p. p\        \        VP                  4      p\        \        VP                  4      p\        \        VP                  4      p\	        WVV4      pV! V4       V P                  W4       V P                  W4       V P                  W4       R# )z&
L{LogPublisher} calls its observers.
©ÚfooÚbarN)Údictr   r
   Úappendr   ÚassertIn)	r   ÚeventÚevents1Úevents2Úevents3r.   r/   r:   r   s	   &        r   Útest_fanOutÚLogPublisherTests.test_fanOutZ   s‡   € ô ˜ Ô"ˆà"$ˆØ"$ˆØ"$ˆä”, §¡Ó/ˆÜ”, §¡Ó/ˆÜ”, §¡Ó/ˆä  ¨Ó,ˆ	Ù�%ÔØ�‰�eÔ%Ø�‰�eÔ%Ø�‰�eÖ%r   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   n   s   ø€ ÷ )ñ ) Tñ )r   c                óô  aa€ \        ^^R7      p\        R4      o. o\        \        4      R VV3R ll4       p. p\	        V\        \        VP                  4      4      pV! V4       V P                  VS4       V Uu. uF  pRV9   g   K  VR,          NK  	  ppV P                  \        V4      ^4       V P                  V^ ,          P                  S4       V P                  \        S4      ^4       R# u upi )ze
Observer raises an exception during fan out: a failure is logged, but
not re-raised.  Life goes on.
rX   úARGH! EVIL DEATH!c                ó(   € V ^8„  d   QhR\         RR/# ©r   r^   r   N©r   )r   s   "r   r   Ú;LogPublisherTests.test_observerRaises.<locals>.__annotate__y   s   € ÷ 	 ñ 	 œHð 	 ¨ñ 	 r   c                 óL   <€ S'       * pSP                  V 4       V'       d   ShR # r%   )r\   )r^   ÚshouldRaiseÚeventsÚ	exceptions   & €€r   ÚobserverÚ7LogPublisherTests.test_observerRaises.<locals>.observerx   s#   ø€ à$œ*ˆKØ�M‰M˜%Ô ßØ�ñ r   Úlog_failureN)r[   ÚRuntimeErrorr   r
   r   r   r\   r]   r+   ÚlenÚassertIsÚvalue)	r   r^   ro   Ú	collectorr   r   Úerrorsrm   rn   s	   &      @@r   Útest_observerRaisesÚ%LogPublisherTests.test_observerRaisesn   sá   ù€ ô
 ˜ Ô"ˆÜ Ð!4Ó5ˆ	à!#ˆä	”\Ó	"÷	 ð 	 ó 
#ð	 ð %'ˆ	ä  ¬4´¸i×>NÑ>NÓ+OÓPˆ	Ù�%Ôð 	�‰�e˜VÔ$ñ -6ÓL©I q¸È!Ñ9KÔ"�!�M×"Ð"©IˆÐLØ×Ñœ˜V› aÔ(Ø�‰�f˜Q•i—o‘o yÔ1à×Ñœ˜V› aÖ(ùò	 Ms   Á=	C5ÂC5c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   Ž   s   ø€ ÷ ñ °Tñ r   c                óÊ   a€ \        ^^R7      p\        R4      o\        \        4      R R l4       p ! V3R lR\        4      p\        V4      pV! 4       Vn        V! V4       R# )z¢
Observer raises an exception during fan out and the publisher's Logger
pukes when the failure is reported.  The exception does not propagate
back to the caller.
rX   rf   c                ó(   € V ^8„  d   QhR\         RR/# rh   ri   )r   s   "r   r   ÚKLogPublisherTests.test_observerRaisesAndLoggerHatesMe.<locals>.__annotate__˜   s   € ÷ 	,ñ 	,œHð 	,¨ñ 	,r   c                 ó   € \        R 4      h)z	Sad panda)rr   )r^   s   &r   ro   ÚGLogPublisherTests.test_observerRaisesAndLoggerHatesMe.<locals>.observer—   s   € ä˜{Ó+Ð+r   c                   ó:   <a € ] tR t^›t o V 3R lV3R lltRtV tR# )ÚILogPublisherTests.test_observerRaisesAndLoggerHatesMe.<locals>.GurkLoggerc                ó*   <€ V ^8„  d   QhRS[ RS[ RR/# )r   ÚargsÚkwargsr   N)rA   )r   r   s   "€r   r   ÚVLogPublisherTests.test_observerRaisesAndLoggerHatesMe.<locals>.GurkLogger.__annotate__œ   s"   ø€ ÷  ñ  ¡Vð  ±vð  À$ñ  r   c                ó   <€ Shr%   r   )r   rƒ   r„   rn   s   &*,€r   ÚfailureÚQLogPublisherTests.test_observerRaisesAndLoggerHatesMe.<locals>.GurkLogger.failureœ   s   ø€ Ø�r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r‡   Ú__static_attributes__Ú__classdictcell__)r   rn   s   @€r   Ú
GurkLoggerr�   ›   s   ù‡ € ÷ ÷  ñ  r   r�   N)r[   rr   r   r
   r   r   Úlog)r   r^   ro   r�   r   rn   s   &    @r   Ú#test_observerRaisesAndLoggerHatesMeÚ5LogPublisherTests.test_observerRaisesAndLoggerHatesMeŽ   s\   ø€ ô ˜ Ô"ˆÜ Ð!4Ó5ˆ	ä	”\Ó	"ô	,ó 
#ð	,÷	 œô 	 ô ! Ó*ˆ	Ù"›ˆ	ŒÙ�%Ör   c                ó   <€ V ^8„  d   QhRR/# r   r   )r   r   s   "€r   r   r   ¥   s   ø€ ÷ Hñ H˜Dñ Hr   c                ó*  a€ \        ^^. R7      p/ o\        \        4      R V3R ll4       p\        \        4      R V3R ll4       p\        W#4      pV! V4       V P	                  S^,          WB334       V P	                  S^,          WB3WC334       R# )z1
Tracing keeps track of forwarding to observers.
)rY   rZ   Ú	log_tracec                ó(   € V ^8„  d   QhR\         RR/# ©r   r   r   Nri   )r   s   "r   r   Ú2LogPublisherTests.test_trace.<locals>.__annotate__±   ó   € ÷ 	ñ 	”(ð 	˜tñ 	r   c           
      ó    <€ SP                  ^\        \        \        \        \        3,          ,          \        V R,          4      4      4       R# )é   r•   N©Ú
setdefaultr   r   r   r
   Útuple©r   Útracess   &€r   r.   Ú(LogPublisherTests.test_trace.<locals>.o1°   ó5   ø€ à×ÑØ”4œœe¤F¬LÐ$8Õ9Õ:¼EÀ!ÀKÅ.Ó<QÓRör   c                ó(   € V ^8„  d   QhR\         RR/# r—   ri   )r   s   "r   r   r˜   ·   r™   r   c           
      ó    <€ SP                  ^\        \        \        \        \        3,          ,          \        V R,          4      4      4       R# )r   r•   Nrœ   rŸ   s   &€r   r/   Ú(LogPublisherTests.test_trace.<locals>.o2¶   r¢   r   N)r[   r   r
   r   r+   )r   r^   r.   r/   r   r    s   &    @r   Ú
test_traceÚLogPublisherTests.test_trace¥   s”   ø€ ô ˜ ¨RÔ0ˆà@Bˆô
 
”\Ó	"÷	ó 
#ð	ô
 
”\Ó	"÷	ó 
#ð	ô
 ! Ó(ˆ	Ù�%Ôà×Ñ˜ � i _Ð$6Ô7Ø×Ñ˜ � i _°y°oÐ$FÖGr   r   N)r‰   rŠ   r‹   rŒ   Ú__doc__r    r0   r;   rB   rL   rT   rb   rx   r‘   r¦   r�   rŽ   )r   s   @r   r   r      su   ø‡ € ñ÷ð ÷>ð >÷
Bð 
B÷Fð F÷
>ð 
>÷>ð >÷&ð &÷()ð )÷@ð ÷.Hö Hr   r   N)r¨   Útypingr   r   r   r   Úzope.interfacer   Úzope.interface.exceptionsr   Úzope.interface.verifyr   Útwisted.trialr	   Ú_interfacesr
   r   Ú_loggerr   Ú	_observerr   ÚTestCaser   r   r   r   Ú<module>r²      s=   ðñ÷ +Ó *å &Ý @Ý .å "ß 0Ý Ý $ôlH˜×)Ñ)ö lHr   