ó
    Ö›‘hÍ  ã                   ór   • S r SSKrSSKJr  SSKJrJr  SSKJrJ	r	  SSK
Jr   " S S\R                  5      rg)	z#
Tests for L{twisted.names.cache}.
é    N)ÚverifyClass)Ú
interfacesÚtask)ÚcacheÚdns)Úunittestc                   ó<   • \ rS rSrSrS rS rS rS rS r	S r
S	rg
)ÚCachingTestsé   z#
Tests for L{cache.CacheResolver}.
c                 óT   • [        [        R                  [        R                  5        g)z;
L{cache.CacheResolver} implements L{interfaces.IResolver}
N)r   r   Ú	IResolverr   ÚCacheResolver)Úselfs    ÚaC:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/names/test/test_cache.pyÚtest_interfaceÚCachingTests.test_interface   s   € ô 	”J×(Ñ(¬%×*=Ñ*=Õ>ó    c                 ó  • [         R                  " [        R                  " S[        R                  [        R
                  S9[        R                  " 5       / / / 4405      nUR                  S5      R                  U R                  / / / 45      $ )Nó   example.com©ÚnameÚtypeÚcls)
r   r   r   ÚQueryÚMXÚINÚtimeÚlookupMailExchangeÚaddCallbackÚassertEqual)r   Úcs     r   Útest_lookupÚCachingTests.test_lookup   sx   € Ü×Òä—	’	˜~´C·F±FÄÇÁÑGÜ—I’I“KØ˜˜R�LðJðó
ˆð ×#Ñ# NÓ3×?Ñ?Ø×Ñ˜r 2 r˜ló
ð 	
r   c                 óX  • [         R                  " S[         R                  [         R                  S[         R                  " SS5      5      /[         R                  " S[         R                  [         R                  S[         R                  " SS5      5      /[         R                  " S[         R                  [         R                  S[         R                  " SS5      5      /4n[
        R                  " 5       n[         R                  " S[         R                  [         R                  S9n[        R                  " X2R                  5       U40US9nUR                  S5        U R                  X4R                  5        U R                  UR                  S5      [         R                  5      $ )zr
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_constructorExpiresÚ$CachingTests.test_constructorExpires*   s&  € ô —’Ø"¤C§E¡E¬3¯6©6°2´s·|²|ÀKÐQSÓ7Tóðô —’Ø"¤C§E¡E¬3¯6©6°2´s·|²|ÀKÐQSÓ7Tóðô —’Ø"¤C§E¡E¬3¯6©6°2´s·|²|ÀKÐQSÓ7Tóðð
ˆô$ —
’
“ˆÜ—	’	˜~´C·E±E¼s¿v¹vÑFˆä×Ò ¯©«¸!Ð(<Ð =ÀuÑMˆð 	�‰�bÔà×Ñ˜§¡Ô(à×!Ñ! !§/¡/°.Ó"AÄ3Ç?Á?ÓSÐSr   c                 ó  ^ • [         R                  " S[         R                  [         R                  S[         R                  " SS5      5      /[         R                  " S[         R                  [         R                  S[         R                  " SS5      5      /[         R                  " S[         R                  [         R                  S[         R                  " SS5      5      /4n[
        R                  " 5       n[        R                  " US9nUR                  [         R                  " S[         R                  [         R                  S9U5        UR                  S5        U 4S	 jnUR                  S5      R                  U5      $ )
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                 ó*  >• TR                  U S   S   R                  S5        TR                  U S   S   R                  S5        TR                  U S   S   R                  S5        TR                  U S   S   R                  R                  S5        g )Nr   é;   r;   é1   é   é'   r   )r    Úttlr   )Úresultr   s    €r   ÚcbLookupÚ0CachingTests.test_normalLookup.<locals>.cbLookupl   s�   ø€ Ø×Ñ˜V A™Y q™\×-Ñ-¨rÔ2Ø×Ñ˜V A™Y q™\×-Ñ-¨rÔ2Ø×Ñ˜V A™Y q™\×-Ñ-¨rÔ2Ø×Ñ˜V A™Y q™\×.Ñ.×3Ñ3°^ÕDr   )r   r+   r,   r   r-   r   r.   r   r   ÚcacheResultr   r0   r3   r   )r   r5   r6   r!   rC   s   `    r   Útest_normalLookupÚCachingTests.test_normalLookupN   s  ø€ ô —’Ø"¤C§E¡E¬3¯6©6°2´s·|²|ÀKÐQSÓ7Tóðô —’Ø"¤C§E¡E¬3¯6©6°2´s·|²|ÀKÐQSÓ7Tóðô —’Ø"¤C§E¡E¬3¯6©6°2´s·|²|ÀKÐQSÓ7Tóðð
ˆô$ —
’
“ˆä×Ò¨Ñ.ˆØ	�‰”c—i’i ^¼#¿%¹%ÄSÇVÁVÑLÈaÔPà�‰�aÔõ	Eð �‰˜~Ó.×:Ñ:¸8ÓDÐDr   c                 óV  • [         R                  " S[         R                  [         R                  S[         R                  " SS5      5      /[         R                  " S[         R                  [         R                  S[         R                  " SS5      5      /[         R                  " S[         R                  [         R                  S[         R                  " SS5      5      /4n[
        R                  " 5       n[        R                  " US9n[         R                  " S[         R                  [         R                  S9nUR                  XA5        UR                  S5        U R                  XCR                  5        U R                  UR                  S5      [         R                  5      $ )zG
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   rE   r0   r1   r2   r3   r4   )r   r5   r6   r!   r7   s        r   Útest_cachedResultExpiresÚ%CachingTests.test_cachedResultExpirest   s   € ô —’Ø"¤C§E¡E¬3¯6©6°2´s·|²|ÀKÐQSÓ7Tóðô —’Ø"¤C§E¡E¬3¯6©6°2´s·|²|ÀKÐQSÓ7Tóðô —’Ø"¤C§E¡E¬3¯6©6°2´s·|²|ÀKÐQSÓ7Tóðð
ˆô$ —
’
“ˆä×Ò¨Ñ.ˆÜ—	’	˜~´C·E±E¼s¿v¹vÑFˆØ	�‰�eÔà�‰�bÔà×Ñ˜§¡Ô(à×!Ñ! !§/¡/°.Ó"AÄ3Ç?Á?ÓSÐSr   c                 ó0  • [         R                  " S[         R                  [         R                  S[         R                  " SS5      5      /[         R                  " S[         R                  [         R                  S[         R                  " SS5      5      /[         R                  " S[         R                  [         R                  S[         R                  " SS5      5      /4n[
        R                  " 5       nS Ul        [        R                  " [         R                  " S[         R                  [         R                  S9UR                  5       U40US9nUR                  S	5        U R                  UR                  S5      [         R                  5      $ )
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                  ó   • g )N© )ÚargsÚkwargss     r   Ú<lambda>Ú4CachingTests.test_expiredTTLLookup.<locals>.<lambda>°   s   € °$r   r   r)   gÍÌÌÌÌN@)r   r+   r,   r   r-   r   r.   Ú	callLaterr   r   r   r/   r0   r2   r3   r4   )r   r5   r6   r!   s       r   Útest_expiredTTLLookupÚ"CachingTests.test_expiredTTLLookup–   s%  € ô —’Ø"¤C§E¡E¬3¯6©6°2´s·|²|ÀKÐQSÓ7Tóðô —’Ø"¤C§E¡E¬3¯6©6°2´s·|²|ÀKÐQSÓ7Tóðô —’Ø"¤C§E¡E¬3¯6©6°2´s·|²|ÀKÐQSÓ7Tóðð
ˆô$ —
’
“ˆá6ˆŒä×Òä—	’	˜~´C·E±E¼s¿v¹vÑFØ—M‘M“OØðIðð ñ
ˆð 	�‰�dÔà×!Ñ! !§/¡/°.Ó"AÄ3Ç?Á?ÓSÐSr   rM   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r"   r8   rF   rI   rS   Ú__static_attributes__rM   r   r   r
   r
      s,   † ñò?ò
ò"TòH$EòL TõD(Tr   r
   )rY   r   Úzope.interface.verifyr   Útwisted.internetr   r   Útwisted.namesr   r   Útwisted.trialr   ÚTestCaser
   rM   r   r   Ú<module>r`      s1   ðñó
 å -ç -ß $Ý "ôlT�8×$Ñ$õ lTr   