§
    Ètºf*  ã                   ó    — 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dS )z-
Test cases for L{twisted.logger._observer}.
é    )ÚDictÚListÚTupleÚcast)Úimplementer)ÚBrokenMethodImplementation)ÚverifyObject)Úunittesté   )ÚILogObserverÚLogEvent)ÚLogger)ÚLogPublisherc                   ób   — 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dS )ÚLogPublisherTestsz$
    Tests for L{LogPublisher}.
    ÚreturnNc                 ó¨   — t          ¦   «         }	 t          t          |¦  «         dS # t          $ r }|                      |¦  «         Y d}~dS d}~ww xY w)z8
        L{LogPublisher} is an L{ILogObserver}.
        N)r   r	   r   r   Úfail)ÚselfÚ	publisherÚes      ú`/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/logger/test/test_observer.pyÚtest_interfacez LogPublisherTests.test_interface   sb   € õ !‘N”Nˆ	ð	Ý� yÑ1Ô1Ð1Ð1Ð1øÝ)ð 	ð 	ð 	Ø�IŠI�a‰LŒLˆLˆLˆLˆLˆLˆLˆLøøøøð	øøøs   �' §
A±AÁAc                 óÒ   — t          t          d„ ¦  «        }t          t          d„ ¦  «        }t          ||¦  «        }|                      ||ht	          |j        ¦  «        ¦  «         dS )zB
        L{LogPublisher.observers} returns the observers.
        c                 ó   — d S ©N© ©r   s    r   ú<lambda>z2LogPublisherTests.test_observers.<locals>.<lambda>'   ó   € ¨$€ ó    c                 ó   — d S 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#   s`   € õ •,  Ñ/Ô/ˆÝ•,  Ñ/Ô/ˆå   RÑ(Ô(ˆ	Ø×Ò˜"˜b˜¥3 yÔ';Ñ#<Ô#<Ñ=Ô=Ð=Ð=Ð=r!   c                 ó*  — t          t          d„ ¦  «        }t          t          d„ ¦  «        }t          t          d„ ¦  «        }t          ||¦  «        }|                     |¦  «         |                      |||ht          |j        ¦  «        ¦  «         dS )z?
        L{LogPublisher.addObserver} adds an observer.
        c                 ó   — d S r   r   r   s    r   r   z4LogPublisherTests.test_addObserver.<locals>.<lambda>1   r    r!   c                 ó   — d S r   r   r   s    r   r   z4LogPublisherTests.test_addObserver.<locals>.<lambda>2   r    r!   c                 ó   — d S 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-   s‡   € õ •,  Ñ/Ô/ˆÝ•,  Ñ/Ô/ˆÝ•,  Ñ/Ô/ˆå   RÑ(Ô(ˆ	Ø×Ò˜bÑ!Ô!Ð!Ø×Ò˜"˜b "˜¥s¨9Ô+?Ñ'@Ô'@ÑAÔAÐAÐAÐAr!   c                 ó|   — t          ¦   «         }|                      t          |j        t	          ¦   «         ¦  «         dS )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   s2   € õ
 !‘N”Nˆ	Ø×Ò�) YÔ%:½F¹H¼HÑEÔEÐEÐEÐEr!   c                 ó*  — t          t          d„ ¦  «        }t          t          d„ ¦  «        }t          t          d„ ¦  «        }t          |||¦  «        }|                     |¦  «         |                      ||ht          |j        ¦  «        ¦  «         dS )zE
        L{LogPublisher.removeObserver} removes an observer.
        c                 ó   — d S r   r   r   s    r   r   z7LogPublisherTests.test_removeObserver.<locals>.<lambda>E   r    r!   c                 ó   — d S r   r   r   s    r   r   z7LogPublisherTests.test_removeObserver.<locals>.<lambda>F   r    r!   c                 ó   — d S 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   s‡   € õ •,  Ñ/Ô/ˆÝ•,  Ñ/Ô/ˆÝ•,  Ñ/Ô/ˆå   R¨Ñ,Ô,ˆ	Ø× Ò  Ñ$Ô$Ð$Ø×Ò˜"˜b˜¥3 yÔ';Ñ#<Ô#<Ñ=Ô=Ð=Ð=Ð=r!   c                 ó(  — t          t          d„ ¦  «        }t          t          d„ ¦  «        }t          t          d„ ¦  «        }t          ||¦  «        }|                     |¦  «         |                      ||ht          |j        ¦  «        ¦  «         dS )zd
        L{LogPublisher.removeObserver} removes an observer that is not
        registered.
        c                 ó   — d S r   r   r   s    r   r   zDLogPublisherTests.test_removeObserverNotRegistered.<locals>.<lambda>R   r    r!   c                 ó   — d S r   r   r   s    r   r   zDLogPublisherTests.test_removeObserverNotRegistered.<locals>.<lambda>S   r    r!   c                 ó   — d S r   r   r   s    r   r   zDLogPublisherTests.test_removeObserverNotRegistered.<locals>.<lambda>T   r    r!   Nr:   r.   s        r   Ú test_removeObserverNotRegisteredz2LogPublisherTests.test_removeObserverNotRegisteredM   s…   € õ
 •,  Ñ/Ô/ˆÝ•,  Ñ/Ô/ˆÝ•,  Ñ/Ô/ˆå   RÑ(Ô(ˆ	Ø× Ò  Ñ$Ô$Ð$Ø×Ò˜"˜b˜¥3 yÔ';Ñ#<Ô#<Ñ=Ô=Ð=Ð=Ð=r!   c                 óŒ  — t          dd¬¦  «        }g }g }g }t          t          |j        ¦  «        }t          t          |j        ¦  «        }t          t          |j        ¦  «        }t	          |||¦  «        } ||¦  «         |                      ||¦  «         |                      ||¦  «         |                      ||¦  «         dS )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        ¦  «        ¦  «        } ||¦  «         |                      |‰¦  «         d	„ |D ¦   «         }|  	                    t          |¦  «        d¦  «         |                      |d
         j        ‰¦  «         |  	                    t          ‰¦  «        d¦  «         dS )z}
        Observer raises an exception during fan out: a failure is logged, but
        not re-raised.  Life goes on.
        rC   r   rD   úARGH! EVIL DEATH!rJ   r   Nc                 ó@   •— ‰ }‰                      | ¦  «         |r‰‚d S r   )rH   )rJ   ÚshouldRaiseÚeventsÚ	exceptions     €€r   Úobserverz7LogPublisherTests.test_observerRaises.<locals>.observerx   s3   ø€ à$˜*ˆKØ�MŠM˜%Ñ Ô Ð Øð  Ø�ð ð  r!   c                 ó&   — g | ]}d |v ¯|d          ‘ŒS )Úlog_failurer   )Ú.0r   s     r   ú
<listcomp>z9LogPublisherTests.test_observerRaises.<locals>.<listcomp>ˆ   s'   € ÐLÐLÐL q¸È!Ð9KÐ9K�!�MÔ"Ð9KÐ9KÐ9Kr!   r   )rG   ÚRuntimeErrorr   r   r   r   r   rH   rI   r#   ÚlenÚassertIsÚvalue)r   rJ   rU   Ú	collectorr   ÚerrorsrS   rT   s         @@r   Útest_observerRaisesz%LogPublisherTests.test_observerRaisesn   s&  øø€ õ
 ˜ Ð"Ñ"Ô"ˆÝ Ð!4Ñ5Ô5ˆ	à!#ˆå	•\Ñ	"Ô	"ð	 �Hð 	 ¨ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 ñ 
#Ô	"ð	 ð %'ˆ	å  ­4µ¸iÔ>NÑ+OÔ+OÑPÔPˆ	Øˆ	�%ÑÔÐð 	�Š�e˜VÑ$Ô$Ð$ð MÐL¨IÐLÑLÔLˆØ×Ò�˜V™œ aÑ(Ô(Ð(Ø�Š�f˜Q”i”o yÑ1Ô1Ð1à×Ò�˜V™œ aÑ(Ô(Ð(Ð(Ð(r!   c                 ó  ‡— t          dd¬¦  «        }t          d¦  «        Št          t          ¦  «        dt          ddfd„¦   «         } G ˆfd	„d
t
          ¦  «        }t          |¦  «        } |¦   «         |_         ||¦  «         dS )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.
        rC   r   rD   rP   rJ   r   Nc                 ó    — t          d¦  «        ‚)Nz	Sad panda)rZ   )rJ   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dS )úILogPublisherTests.test_observerRaisesAndLoggerHatesMe.<locals>.GurkLoggerÚargsÚkwargsr   Nc                 ó   •— ‰‚r   r   )r   re   rf   rT   s      €r   ÚfailurezQLogPublisherTests.test_observerRaisesAndLoggerHatesMe.<locals>.GurkLogger.failureœ   s   ø€ Ø�r!   )Ú__name__Ú
__module__Ú__qualname__r4   rh   )rT   s   €r   Ú
GurkLoggerrd   ›   sH   ø€ € € € € ð  Vð  °vð  À$ð  ð  ð  ð  ð  ð  ð  ð  r!   rl   )rG   rZ   r   r   r   r   r   Úlog)r   rJ   rU   rl   r   rT   s        @r   Ú#test_observerRaisesAndLoggerHatesMez5LogPublisherTests.test_observerRaisesAndLoggerHatesMeŽ   sÀ   ø€ õ ˜ Ð"Ñ"Ô"ˆÝ Ð!4Ñ5Ô5ˆ	å	•\Ñ	"Ô	"ð	,�Hð 	,¨ð 	,ð 	,ð 	,ñ 
#Ô	"ð	,ð	 ð 	 ð 	 ð 	 ð 	 ð 	 ð 	 �ñ 	 ô 	 ð 	 õ ! Ñ*Ô*ˆ	Ø"˜
™œˆ	ŒØˆ	�%ÑÔÐÐÐr!   c                 óŒ  ‡— t          ddg ¬¦  «        }i Št          t          ¦  «        dt          ddfˆfd„¦   «         }t          t          ¦  «        dt          ddfˆfd„¦   «         }t	          ||¦  «        } ||¦  «         |                      ‰d         ||ff¦  «         |                      ‰d         ||f||ff¦  «         dS )	zA
        Tracing keeps track of forwarding to observers.
        rC   r   )rE   rF   Ú	log_tracer   r   Nc           
      óº   •— ‰                      dt          t          t          t          t          f                  t          | d         ¦  «        ¦  «        ¦  «         d S )NrC   rp   ©Ú
setdefaultr   r   r   r   Útuple©r   Útracess    €r   r&   z(LogPublisherTests.test_trace.<locals>.o1°   óO   ø€ à×ÒØ•4��e¥F­LÐ$8Ô9Ô:½EÀ!ÀKÄ.Ñ<QÔ<QÑRÔRñô ð ð ð r!   c           
      óº   •— ‰                      dt          t          t          t          t          f                  t          | d         ¦  «        ¦  «        ¦  «         d S )Nr   rp   rr   ru   s    €r   r'   z(LogPublisherTests.test_trace.<locals>.o2¶   rw   r!   )rG   r   r   r   r   r#   )r   rJ   r&   r'   r   rv   s        @r   Ú
test_tracezLogPublisherTests.test_trace¥   s  ø€ õ ˜ ¨RÐ0Ñ0Ô0ˆà@Bˆõ
 
•\Ñ	"Ô	"ð	•(ð 	˜tð 	ð 	ð 	ð 	ð 	ñ 
#Ô	"ð	õ
 
•\Ñ	"Ô	"ð	•(ð 	˜tð 	ð 	ð 	ð 	ð 	ñ 
#Ô	"ð	õ
 !  RÑ(Ô(ˆ	Øˆ	�%ÑÔÐà×Ò˜ œ i° _Ð$6Ñ7Ô7Ð7Ø×Ò˜ œ i° _°yÀ"°oÐ$FÑGÔGÐGÐGÐGr!   )r   N)ri   rj   rk   Ú__doc__r   r(   r0   r5   r<   rA   rN   r`   rn   ry   r   r!   r   r   r      sõ   € € € € € ðð ðð ð ð ð>ð >ð >ð >ð
Bð 
Bð 
Bð 
BðFð Fð Fð Fð
>ð 
>ð 
>ð 
>ð>ð >ð >ð >ð&ð &ð &ð &ð()ð )ð )ð )ð@ð ð ð ð.Hð Hð Hð Hð Hð Hr!   r   N)rz   Ú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Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $ðlHð lHð lHð lHð lH˜Ô)ñ lHô lHð lHð lHð lHr!   