Ϫf*dZddlmZmZmZmZddlmZddlm Z ddl m Z ddl m Z ddlmZmZdd lmZdd lmZGd d e j*Zy )z- Test cases for L{twisted.logger._observer}. )DictListTuplecast) implementer)BrokenMethodImplementation) verifyObject)unittest) ILogObserverLogEvent)Logger) LogPublisherc`eZdZdZd dZd dZd dZd dZd dZd dZ d d Z d d Z d d Z d d Z y)LogPublisherTestsz$ Tests for L{LogPublisher}. Nct} tt|y#t$r}|j |Yd}~yd}~wwxYw)z8 L{LogPublisher} is an L{ILogObserver}. N)rr r rfail)self publisheres C/usr/lib/python3/dist-packages/twisted/logger/test/test_observer.pytest_interfacez LogPublisherTests.test_interfaces7!N   y 1)  IIaLL s A<Acttd}ttd}t||}|j||ht |j y)zB L{LogPublisher.observers} returns the observers. cyNrs rz2LogPublisherTests.test_observers..'cyrrrs rrz2LogPublisherTests.test_observers..(rr N)rr r assertEqualset _observers)ro1o2rs rtest_observersz LogPublisherTests.test_observers#sG, / , / R(  "b3y';';#<=r cttd}ttd}ttd}t||}|j||j |||ht |j y)z? L{LogPublisher.addObserver} adds an observer. cyrrrs rrz4LogPublisherTests.test_addObserver..1rr cyrrrs rrz4LogPublisherTests.test_addObserver..2rr cyrrrs rrz4LogPublisherTests.test_addObserver..3rr N)rr r addObserverr"r#r$rr%r&o3rs rtest_addObserverz"LogPublisherTests.test_addObserver-sc, / , / , / R( b! "b"s9+?+?'@Ar cjt}|jt|jt y)ze L{LogPublisher.addObserver} refuses to add an observer that's not callable. N)r assertRaises TypeErrorr,object)rrs rtest_addObserverNotCallablez-LogPublisherTests.test_addObserverNotCallable9s% !N  )Y%:%:FHEr cttd}ttd}ttd}t|||}|j||j ||ht |j y)zE L{LogPublisher.removeObserver} removes an observer. cyrrrs rrz7LogPublisherTests.test_removeObserver..Err cyrrrs rrz7LogPublisherTests.test_removeObserver..Frr cyrrrs rrz7LogPublisherTests.test_removeObserver..Grr Nrr rremoveObserverr"r#r$r-s rtest_removeObserverz%LogPublisherTests.test_removeObserverAsc, / , / , / R,   $ "b3y';';#<=r cttd}ttd}ttd}t||}|j||j ||ht |j y)zd L{LogPublisher.removeObserver} removes an observer that is not registered. cyrrrs rrzDLogPublisherTests.test_removeObserverNotRegistered..Rrr cyrrrs rrzDLogPublisherTests.test_removeObserverNotRegistered..Srr cyrrrs rrzDLogPublisherTests.test_removeObserverNotRegistered..Trr Nr9r-s r test_removeObserverNotRegisteredz2LogPublisherTests.test_removeObserverNotRegisteredMsa , / , / , / R(   $ "b3y';';#<=r c\tdd}g}g}g}tt|j}tt|j}tt|j}t |||}|||j |||j |||j ||y)z6 L{LogPublisher} calls its observers. r foobarN)dictrr appendrassertIn) reventevents1events2events3r%r&r.rs r test_fanOutzLogPublisherTests.test_fanOutZs""$"$"$ , / , / , / R, % eW% eW% eW%r ctdd}tdgttdtddffd }g}t |t t|j}|||j||Dcgc] }d |vs|d }}|jt|d|j|d j|jtdycc}w) z} Observer raises an exception during fan out: a failure is logged, but not re-raised. Life goes on. rBr rCARGH! EVIL DEATH!rIreturnNc6 }j||ryr)rG)rI shouldRaiseevents exceptions robserverz7LogPublisherTests.test_observerRaises..observerxs#$*K MM% r log_failurer) rF RuntimeErrorrr r rrrGrHr"lenassertIsvalue) rrIrU collectorrrerrorsrSrTs @@rtest_observerRaisesz%LogPublisherTests.test_observerRaisesns " !45 !# \ " H   # %'  4 i>N>N+OP % eV$-6Lq!9K!M"LL Va( fQiooy1 Va( Ms  C+ C+ctdd}tdttdtddfd}Gfd 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. rBr rCrOrIrPNctd)Nz Sad panda)rW)rIs rrUzGLogPublisherTests.test_observerRaisesAndLoggerHatesMe..observers {+ +r c&eZdZdededdffd Zy)ILogPublisherTests.test_observerRaisesAndLoggerHatesMe..GurkLoggerargskwargsrPNcrr)rrbrcrTs rfailurezQLogPublisherTests.test_observerRaisesAndLoggerHatesMe..GurkLogger.failuresr )__name__ __module__ __qualname__r3re)rTsr GurkLoggerras V v $ r ri)rFrWrr r rrlog)rrIrUrirrTs @r#test_observerRaisesAndLoggerHatesMez5LogPublisherTests.test_observerRaisesAndLoggerHatesMesj " !45 \ " ,H , , # ,  !* " %r c4tddg}ittdtddffd }ttdtddffd }t ||}|||j d||ff|j d||f||ffy) zA Tracing keeps track of forwarding to observers. rBr )rDrE log_tracerrPNc jdtttttft |dy)NrBrm setdefaultrrrr tuplertracess rr%z(LogPublisherTests.test_trace..o15   4eFL$89:E!K..o2rtr )rFrr r rr")rrIr%r&rrss @r test_tracezLogPublisherTests.test_tracesR0@B \ " ( t  #  \ " ( t  #  !R( % i_$67 i_y"o$FGr )rPN)rfrgrh__doc__rr'r/r4r;r@rMr]rkrvrr rrrs=> BF > >&()@.Hr rN)rwtypingrrrrzope.interfacerzope.interface.exceptionsrzope.interface.verifyr twisted.trialr _interfacesr r _loggerr _observerrTestCaserrr rrs=+*&@."0$lH))lHr