§
    ÈtºfÍ  ã                   óp   — d Z ddlZddlmZ ddlmZmZ ddlmZm	Z	 ddl
mZ  G d„ dej        ¦  «        ZdS )	z#
Tests for L{twisted.names.cache}.
é    N)ÚverifyClass)Ú
interfacesÚtask)ÚcacheÚdns)Úunittestc                   ó6   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	dS )	ÚCachingTestsz+
    Tests for L{cache.CacheResolver}.
    c                 óN   — t          t          j        t          j        ¦  «         dS )zK
        L{cache.CacheResolver} implements L{interfaces.IResolver}
        N)r   r   Ú	IResolverr   ÚCacheResolver)Úselfs    ú\/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/names/test/test_cache.pyÚtest_interfacezCachingTests.test_interface   s    € õ 	•JÔ(­%Ô*=Ñ>Ô>Ð>Ð>Ð>ó    c                 ó  — t          j        t          j        dt          j        t          j        ¬¦  «        t          j        ¦   «         g g g ffi¦  «        }|                     d¦  «                             | j	        g g g f¦  «        S )Nó   example.com©ÚnameÚtypeÚcls)
r   r   r   ÚQueryÚMXÚINÚtimeÚlookupMailExchangeÚaddCallbackÚassertEqual)r   Úcs     r   Útest_lookupzCachingTests.test_lookup   s   € ÝÔå”	˜~µC´FÅÄÐGÑGÔGÝ”I‘K”KØ˜˜R�LðJðñ
ô 
ˆð ×#Ò# NÑ3Ô3×?Ò?ØÔ˜r 2 r˜lñ
ô 
ð 	
r   c                 ó  — t          j        dt           j        t           j        dt          j        dd¦  «        ¦  «        gt          j        dt           j        t           j        dt          j        dd¦  «        ¦  «        gt          j        dt           j        t           j        dt          j        dd¦  «        ¦  «        gf}t          j        ¦   «         }t          j        dt           j        t           j        ¬¦  «        }t          j	        || 
                    ¦   «         |fi|¬¦  «        }|                     d¦  «         |                      ||j        ¦  «         |                      |                     d¦  «        t           j        ¦  «        S )zŠ
        Cache entries passed into L{cache.CacheResolver.__init__} get
        cancelled just like entries added with cacheResult
        r   é<   ú	127.0.0.1é2   é(   r   ©Úreactor)r   ÚRRHeaderÚAr   ÚRecord_Ar   ÚClockr   r   r   ÚsecondsÚadvanceÚassertNotInÚassertFailureÚlookupAddressÚDomainError)r   ÚrÚclockÚqueryr   s        r   Útest_constructorExpiresz$CachingTests.test_constructorExpires*   s=  € õ ”Ø"¥C¤E­3¬6°2µs´|ÀKÐQSÑ7TÔ7Tñô ðõ ”Ø"¥C¤E­3¬6°2µs´|ÀKÐQSÑ7TÔ7Tñô ðõ ”Ø"¥C¤E­3¬6°2µs´|ÀKÐQSÑ7TÔ7Tñô ðð
ˆõ$ ”
‘”ˆÝ”	˜~µC´E½s¼vÐFÑFÔFˆåÔ ¨¯ª©¬¸!Ð(<Ð =ÀuÐMÑMÔMˆð 	�Š�bÑÔÐà×Ò˜ ¤Ñ(Ô(Ð(à×!Ò! !§/¢/°.Ñ"AÔ"AÅ3Ä?ÑSÔSÐSr   c                 óÔ  ‡ — t          j        dt           j        t           j        dt          j        dd¦  «        ¦  «        gt          j        dt           j        t           j        dt          j        dd¦  «        ¦  «        gt          j        dt           j        t           j        dt          j        dd¦  «        ¦  «        gf}t          j        ¦   «         }t          j        |¬¦  «        }| 	                    t          j
        dt           j        t           j        ¬¦  «        |¦  «         |                     d¦  «         ˆ fd	„}|                     d¦  «                             |¦  «        S )
z›
        When a cache lookup finds a cached entry from 1 second ago, it is
        returned with a TTL of original TTL minus the elapsed 1 second.
        r   r"   r#   r$   r%   r&   r   é   c                 óJ  •— ‰                      | d         d         j        d¦  «         ‰                      | d         d         j        d¦  «         ‰                      | d         d         j        d¦  «         ‰                      | d         d         j        j        d¦  «         d S )Nr   é;   r7   é1   é   é'   r   )r   Úttlr   )Úresultr   s    €r   ÚcbLookupz0CachingTests.test_normalLookup.<locals>.cbLookupl   s�   ø€ Ø×Ò˜V AœY qœ\Ô-¨rÑ2Ô2Ð2Ø×Ò˜V AœY qœ\Ô-¨rÑ2Ô2Ð2Ø×Ò˜V AœY qœ\Ô-¨rÑ2Ô2Ð2Ø×Ò˜V AœY qœ\Ô.Ô3°^ÑDÔDÐDÐDÐDr   )r   r(   r)   r   r*   r   r+   r   r   ÚcacheResultr   r-   r0   r   )r   r2   r3   r   r?   s   `    r   Útest_normalLookupzCachingTests.test_normalLookupN   s;  ø€ õ ”Ø"¥C¤E­3¬6°2µs´|ÀKÐQSÑ7TÔ7Tñô ðõ ”Ø"¥C¤E­3¬6°2µs´|ÀKÐQSÑ7TÔ7Tñô ðõ ”Ø"¥C¤E­3¬6°2µs´|ÀKÐQSÑ7TÔ7Tñô ðð
ˆõ$ ”
‘”ˆåÔ¨Ð.Ñ.Ô.ˆØ	�Š•c”i ^½#¼%ÅSÄVÐLÑLÔLÈaÑPÔPÐPà�Š�aÑÔÐð	Eð 	Eð 	Eð 	Eð 	Eð �Š˜~Ñ.Ô.×:Ò:¸8ÑDÔDÐDr   c                 ó  — t          j        dt           j        t           j        dt          j        dd¦  «        ¦  «        gt          j        dt           j        t           j        dt          j        dd¦  «        ¦  «        gt          j        dt           j        t           j        dt          j        dd¦  «        ¦  «        gf}t          j        ¦   «         }t          j        |¬¦  «        }t          j	        dt           j        t           j        ¬¦  «        }| 
                    ||¦  «         |                     d¦  «         |                      ||j        ¦  «         |                      |                     d¦  «        t           j        ¦  «        S )zW
        Once the TTL has been exceeded, the result is removed from the cache.
        r   r"   r#   r$   r%   r&   r   )r   r(   r)   r   r*   r   r+   r   r   r   r@   r-   r.   r/   r0   r1   )r   r2   r3   r   r4   s        r   Útest_cachedResultExpiresz%CachingTests.test_cachedResultExpirest   s;  € õ ”Ø"¥C¤E­3¬6°2µs´|ÀKÐQSÑ7TÔ7Tñô ðõ ”Ø"¥C¤E­3¬6°2µs´|ÀKÐQSÑ7TÔ7Tñô ðõ ”Ø"¥C¤E­3¬6°2µs´|ÀKÐQSÑ7TÔ7Tñô ðð
ˆõ$ ”
‘”ˆåÔ¨Ð.Ñ.Ô.ˆÝ”	˜~µC´E½s¼vÐFÑFÔFˆØ	�Š�e˜QÑÔÐà�Š�bÑÔÐà×Ò˜ ¤Ñ(Ô(Ð(à×!Ò! !§/¢/°.Ñ"AÔ"AÅ3Ä?ÑSÔSÐSr   c                 óð  — t          j        dt           j        t           j        dt          j        dd¦  «        ¦  «        gt          j        dt           j        t           j        dt          j        dd¦  «        ¦  «        gt          j        dt           j        t           j        dt          j        dd¦  «        ¦  «        gf}t          j        ¦   «         }d„ |_        t          j	        t          j
        dt           j        t           j        ¬¦  «        |                     ¦   «         |fi|¬¦  «        }|                     d	¦  «         |                      |                     d¦  «        t           j        ¦  «        S )
z»
        When the cache is queried exactly as the cached entry should expire but
        before it has actually been cleared, the cache does not return the
        expired entry.
        r   r"   r#   r$   r%   c                  ó   — d S )N© )ÚargsÚkwargss     r   ú<lambda>z4CachingTests.test_expiredTTLLookup.<locals>.<lambda>°   s   € °$€ r   r   r&   gÍÌÌÌÌN@)r   r(   r)   r   r*   r   r+   Ú	callLaterr   r   r   r,   r-   r/   r0   r1   )r   r2   r3   r   s       r   Útest_expiredTTLLookupz"CachingTests.test_expiredTTLLookup–   s;  € õ ”Ø"¥C¤E­3¬6°2µs´|ÀKÐQSÑ7TÔ7Tñô ðõ ”Ø"¥C¤E­3¬6°2µs´|ÀKÐQSÑ7TÔ7Tñô ðõ ”Ø"¥C¤E­3¬6°2µs´|ÀKÐQSÑ7TÔ7Tñô ðð
ˆõ$ ”
‘”ˆà6Ð6ˆŒåÔå”	˜~µC´E½s¼vÐFÑFÔFØ—M’M‘O”OØðIðð ð
ñ 
ô 
ˆð 	�Š�dÑÔÐà×!Ò! !§/¢/°.Ñ"AÔ"AÅ3Ä?ÑSÔSÐSr   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r    r5   rA   rC   rK   rF   r   r   r
   r
      s‰   € € € € € ðð ð?ð ?ð ?ð
ð 
ð 
ð"Tð "Tð "TðH$Eð $Eð $EðL Tð  Tð  TðD(Tð (Tð (Tð (Tð (Tr   r
   )rO   r   Úzope.interface.verifyr   Útwisted.internetr   r   Útwisted.namesr   r   Útwisted.trialr   ÚTestCaser
   rF   r   r   ú<module>rU      s¹   ððð ð
 €€€à -Ð -Ð -Ð -Ð -Ð -à -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø "Ð "Ð "Ð "Ð "Ð "ðlTð lTð lTð lTð lT�8Ô$ñ lTô lTð lTð lTð lTr   