Ë
    oj*  ã                   ó¢   — d Z ddlmZmZmZmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZ ddlmZmZ dd	lmZ dd
lmZ  G d„ dej*                  «      Zy)z-
Test cases for L{twisted.logger._observer}.
é    )ÚDictÚListÚTupleÚcast)Úimplementer)ÚBrokenMethodImplementation)ÚverifyObject)Úunittesté   )ÚILogObserverÚLogEvent)ÚLogger)ÚLogPublisherc                   ó`   — e Zd ZdZdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z	dd	„Z
dd
„Zdd„Zdd„Zy)ÚLogPublisherTestsz$
    Tests for L{LogPublisher}.
    Nc                 óˆ   — t        «       }	 t        t        |«       y# t        $ r}| j	                  |«       Y d}~yd}~ww xY w)z8
        L{LogPublisher} is an L{ILogObserver}.
        N)r   r	   r   r   Úfail)ÚselfÚ	publisherÚes      úC/usr/lib/python3/dist-packages/twisted/logger/test/test_observer.pyÚtest_interfacez LogPublisherTests.test_interface   s7   € ô !“Nˆ	ð	Üœ yÕ1øÜ)ò 	Ø�I‰I�a�L‰Lûð	ús   Œ �	A¦<¼Ac                 ó®   — t        t        d„ «      }t        t        d„ «      }t        ||«      }| j                  ||ht	        |j
                  «      «       y)zB
        L{LogPublisher.observers} returns the observers.
        c                  ó   — y ©N© ©r   s    r   ú<lambda>z2LogPublisherTests.test_observers.<locals>.<lambda>'   ó   � ó    c                  ó   — y r   r   r   s    r   r   z2LogPublisherTests.test_observers.<locals>.<lambda>(   r   r    N)r   r   r   ÚassertEqualÚsetÚ
_observers)r   Úo1Úo2r   s       r   Útest_observersz LogPublisherTests.test_observers#   sG   € ô ”,¡Ó/ˆÜ”,¡Ó/ˆä   RÓ(ˆ	Ø×Ñ˜"˜b˜¤3 y×';Ñ';Ó#<Õ=r    c                 óô   — t        t        d„ «      }t        t        d„ «      }t        t        d„ «      }t        ||«      }|j                  |«       | j	                  |||ht        |j                  «      «       y)z?
        L{LogPublisher.addObserver} adds an observer.
        c                  ó   — y r   r   r   s    r   r   z4LogPublisherTests.test_addObserver.<locals>.<lambda>1   r   r    c                  ó   — y r   r   r   s    r   r   z4LogPublisherTests.test_addObserver.<locals>.<lambda>2   r   r    c                  ó   — y r   r   r   s    r   r   z4LogPublisherTests.test_addObserver.<locals>.<lambda>3   r   r    N)r   r   r   ÚaddObserverr"   r#   r$   ©r   r%   r&   Úo3r   s        r   Útest_addObserverz"LogPublisherTests.test_addObserver-   sc   € ô ”,¡Ó/ˆÜ”,¡Ó/ˆÜ”,¡Ó/ˆä   RÓ(ˆ	Ø×Ñ˜bÔ!Ø×Ñ˜"˜b "˜¤s¨9×+?Ñ+?Ó'@ÕAr    c                 ój   — t        «       }| j                  t        |j                  t	        «       «       y)ze
        L{LogPublisher.addObserver} refuses to add an observer that's
        not callable.
        N)r   ÚassertRaisesÚ	TypeErrorr,   Úobject)r   r   s     r   Útest_addObserverNotCallablez-LogPublisherTests.test_addObserverNotCallable9   s%   € ô
 !“Nˆ	Ø×Ñœ) Y×%:Ñ%:¼F»HÕEr    c                 óô   — t        t        d„ «      }t        t        d„ «      }t        t        d„ «      }t        |||«      }|j                  |«       | j	                  ||ht        |j                  «      «       y)zE
        L{LogPublisher.removeObserver} removes an observer.
        c                  ó   — y r   r   r   s    r   r   z7LogPublisherTests.test_removeObserver.<locals>.<lambda>E   r   r    c                  ó   — y r   r   r   s    r   r   z7LogPublisherTests.test_removeObserver.<locals>.<lambda>F   r   r    c                  ó   — y r   r   r   s    r   r   z7LogPublisherTests.test_removeObserver.<locals>.<lambda>G   r   r    N©r   r   r   ÚremoveObserverr"   r#   r$   r-   s        r   Útest_removeObserverz%LogPublisherTests.test_removeObserverA   sc   € ô ”,¡Ó/ˆÜ”,¡Ó/ˆÜ”,¡Ó/ˆä   R¨Ó,ˆ	Ø× Ñ  Ô$Ø×Ñ˜"˜b˜¤3 y×';Ñ';Ó#<Õ=r    c                 óò   — t        t        d„ «      }t        t        d„ «      }t        t        d„ «      }t        ||«      }|j                  |«       | j	                  ||ht        |j                  «      «       y)zd
        L{LogPublisher.removeObserver} removes an observer that is not
        registered.
        c                  ó   — y r   r   r   s    r   r   zDLogPublisherTests.test_removeObserverNotRegistered.<locals>.<lambda>R   r   r    c                  ó   — y r   r   r   s    r   r   zDLogPublisherTests.test_removeObserverNotRegistered.<locals>.<lambda>S   r   r    c                  ó   — y r   r   r   s    r   r   zDLogPublisherTests.test_removeObserverNotRegistered.<locals>.<lambda>T   r   r    Nr9   r-   s        r   Ú test_removeObserverNotRegisteredz2LogPublisherTests.test_removeObserverNotRegisteredM   sa   € ô
 ”,¡Ó/ˆÜ”,¡Ó/ˆÜ”,¡Ó/ˆä   RÓ(ˆ	Ø× Ñ  Ô$Ø×Ñ˜"˜b˜¤3 y×';Ñ';Ó#<Õ=r    c                 ó\  — t        dd¬«      }g }g }g }t        t        |j                  «      }t        t        |j                  «      }t        t        |j                  «      }t	        |||«      } ||«       | j                  ||«       | j                  ||«       | j                  ||«       y)z6
        L{LogPublisher} calls its observers.
        é   r   ©ÚfooÚbarN)Údictr   r   Úappendr   ÚassertIn)	r   ÚeventÚevents1Úevents2Úevents3r%   r&   r.   r   s	            r   Útest_fanOutzLogPublisherTests.test_fanOutZ   s�   € ô ˜ Ô"ˆà"$ˆØ"$ˆØ"$ˆä”, §¡Ó/ˆÜ”, §¡Ó/ˆÜ”, §¡Ó/ˆä   R¨Ó,ˆ	Ù�%ÔØ�‰�e˜WÔ%Ø�‰�e˜WÔ%Ø�‰�e˜WÕ%r    c                 óà  ‡‡— t        dd¬«      }t        d«      Šg Št        t        «      dt        ddfˆˆfd„«       }g }t        |t        t        |j                  «      «      } ||«       | j                  |‰«       |D �cg c]  }d	|v sŒ|d	   ‘Œ }}| j                  t        |«      d«       | j                  |d
   j                  ‰«       | j                  t        ‰«      d«       yc c}w )z}
        Observer raises an exception during fan out: a failure is logged, but
        not re-raised.  Life goes on.
        rB   r   rC   úARGH! EVIL DEATH!rI   ÚreturnNc                 ó6   •— ‰ }‰j                  | «       |r‰‚y r   )rG   )rI   ÚshouldRaiseÚeventsÚ	exceptions     €€r   Úobserverz7LogPublisherTests.test_observerRaises.<locals>.observerx   s#   ø€ à$˜*ˆKØ�M‰M˜%Ô ÙØ�ð r    Úlog_failurer   )rF   ÚRuntimeErrorr   r   r   r   r   rG   rH   r"   ÚlenÚassertIsÚvalue)	r   rI   rU   Ú	collectorr   r   ÚerrorsrS   rT   s	          @@r   Útest_observerRaisesz%LogPublisherTests.test_observerRaisesn   sã   ù€ ô
 ˜ Ô"ˆÜ Ð!4Ó5ˆ	à!#ˆä	”\Ó	"ð	 œHð 	 ¨õ 	 ó 
#ð	 ð %'ˆ	ä  ¬4´¸i×>NÑ>NÓ+OÓPˆ	Ù�%Ôð 	�‰�e˜VÔ$ð -6ÖL q¸È!Ò9K�!�MÓ"ÐLˆÐLØ×Ñœ˜V› aÔ(Ø�‰�f˜Q‘i—o‘o yÔ1à×Ñœ˜V› aÕ(ùò	 Ms   Â	C+ÂC+c                 óÒ   ‡— t        dd¬«      }t        d«      Št        t        «      dt        ddfd„«       } G ˆfd	„d
t
        «      }t        |«      } |«       |_         ||«       y)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.
        rB   r   rC   rO   rI   rP   Nc                 ó   — t        d«      ‚)Nz	Sad panda)rW   )rI   s    r   rU   zGLogPublisherTests.test_observerRaisesAndLoggerHatesMe.<locals>.observer—   s   € ä˜{Ó+Ð+r    c                   ó&   •— e Zd Zdededdfˆ fd„Zy)úILogPublisherTests.test_observerRaisesAndLoggerHatesMe.<locals>.GurkLoggerÚargsÚkwargsrP   Nc                 ó   •— ‰‚r   r   )r   rb   rc   rT   s      €r   ÚfailurezQLogPublisherTests.test_observerRaisesAndLoggerHatesMe.<locals>.GurkLogger.failureœ   s   ø€ Ø�r    )Ú__name__Ú
__module__Ú__qualname__r3   re   )rT   s   €r   Ú
GurkLoggerra   ›   s   ø„ ð  Vð  °vð  À$ö  r    ri   )rF   rW   r   r   r   r   r   Úlog)r   rI   rU   ri   r   rT   s        @r   Ú#test_observerRaisesAndLoggerHatesMez5LogPublisherTests.test_observerRaisesAndLoggerHatesMeŽ   sj   ø€ ô ˜ Ô"ˆÜ Ð!4Ó5ˆ	ä	”\Ó	"ð	,œHð 	,¨ò 	,ó 
#ð	,ö	 œô 	 ô ! Ó*ˆ	Ù"›ˆ	ŒÙ�%Õr    c                 ó4  ‡— t        ddg ¬«      }i Št        t        «      dt        ddfˆfd„«       }t        t        «      dt        ddfˆfd„«       }t	        ||«      } ||«       | j                  ‰d   ||ff«       | j                  ‰d   ||f||ff«       y)	zA
        Tracing keeps track of forwarding to observers.
        rB   r   )rD   rE   Ú	log_tracer   rP   Nc           
      ó†   •— ‰j                  dt        t        t        t        t        f      t        | d   «      «      «       y )NrB   rm   ©Ú
setdefaultr   r   r   r   Útuple©r   Útracess    €r   r%   z(LogPublisherTests.test_trace.<locals>.o1°   ó5   ø€ à×ÑØ”4œœe¤F¬LÐ$8Ñ9Ñ:¼EÀ!ÀKÁ.Ó<QÓRõr    c           
      ó†   •— ‰j                  dt        t        t        t        t        f      t        | d   «      «      «       y )Nr   rm   ro   rr   s    €r   r&   z(LogPublisherTests.test_trace.<locals>.o2¶   rt   r    )rF   r   r   r   r   r"   )r   rI   r%   r&   r   rs   s        @r   Ú
test_tracezLogPublisherTests.test_trace¥   s¸   ø€ ô ˜ ¨RÔ0ˆà@Bˆô
 
”\Ó	"ð	”(ð 	˜tô 	ó 
#ð	ô
 
”\Ó	"ð	”(ð 	˜tô 	ó 
#ð	ô
 !  RÓ(ˆ	Ù�%Ôà×Ñ˜ ™ i° _Ð$6Ô7Ø×Ñ˜ ™ i° _°yÀ"°oÐ$FÕGr    )rP   N)rf   rg   rh   Ú__doc__r   r'   r/   r4   r;   r@   rM   r]   rk   rv   r   r    r   r   r      s=   „ ñóó>ó
BóFó
>ó>ó&ó()ó@ô.Hr    r   N)rw   Ú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    