+
    üÐjÍ  ã                   ót   € R t ^ RIt^ RIHt ^ RIHtHt ^ RIHtH	t	 ^ RI
Ht  ! R R]P                  4      tR# )z#
Tests for L{twisted.names.cache}.
N)ÚverifyClass)Ú
interfacesÚtask)ÚcacheÚdns)Úunittestc                   óH   a € ] tR t^t o RtR tR tR tR tR t	R t
RtV tR	# )
ÚCachingTestsz#
Tests for L{cache.CacheResolver}.
c                óV   € \        \        P                  \        P                  4       R# )z;
L{cache.CacheResolver} implements L{interfaces.IResolver}
N)r   r   Ú	IResolverr   ÚCacheResolver)Úselfs   &Ú?/usr/lib/python3/dist-packages/twisted/names/test/test_cache.pyÚtest_interfaceÚCachingTests.test_interface   s   € ô 	”J×(Ñ(¬%×*=Ñ*=Ö>ó    c                ó$  € \         P                  ! \        P                  ! R \        P                  \        P
                  R7      \        P                  ! 4       . . . 33/4      pVP                  R 4      P                  V P                  . . . 34      # )ó   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                ód  € \         P                  ! R\         P                  \         P                  ^<\         P                  ! R^<4      4      .\         P                  ! R\         P                  \         P                  ^2\         P                  ! R^24      4      .\         P                  ! R\         P                  \         P                  ^(\         P                  ! R^(4      4      .3p\
        P                  ! 4       p\         P                  ! R\         P                  \         P                  R7      p\        P                  ! W2P                  4       V3/VR7      pVP                  ^(4       V P                  W4P                  4       V P                  VP                  R4      \         P                  4      # )zr
Cache entries passed into L{cache.CacheResolver.__init__} get
cancelled just like entries added with cacheResult
r   ú	127.0.0.1r   ©Ú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                ó  a € \         P                  ! R\         P                  \         P                  ^<\         P                  ! R^<4      4      .\         P                  ! R\         P                  \         P                  ^2\         P                  ! R^24      4      .\         P                  ! R\         P                  \         P                  ^(\         P                  ! R^(4      4      .3p\
        P                  ! 4       p\        P                  ! VR7      pVP                  \         P                  ! R\         P                  \         P                  R7      V4       VP                  ^4       V 3R lpVP                  R4      P                  V4      # )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   c                 ól  <€ SP                  V ^ ,          ^ ,          P                  ^;4       SP                  V ^,          ^ ,          P                  ^14       SP                  V ^,          ^ ,          P                  ^'4       SP                  V ^ ,          ^ ,          P                  P                  R4       R# )é    r   N)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   r+   r.   r   )r   r0   r1   r   r:   s   f    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                ób  € \         P                  ! R\         P                  \         P                  ^<\         P                  ! R^<4      4      .\         P                  ! R\         P                  \         P                  ^2\         P                  ! R^24      4      .\         P                  ! R\         P                  \         P                  ^(\         P                  ! R^(4      4      .3p\
        P                  ! 4       p\        P                  ! VR7      p\         P                  ! R\         P                  \         P                  R7      pVP                  WA4       VP                  ^(4       V P                  WCP                  4       V P                  VP                  R4      \         P                  4      # )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,   r-   r.   r/   )r   r0   r1   r   r2   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                ó<  € \         P                  ! R\         P                  \         P                  ^<\         P                  ! R^<4      4      .\         P                  ! R\         P                  \         P                  ^2\         P                  ! R^24      4      .\         P                  ! R\         P                  \         P                  ^(\         P                  ! R^(4      4      .3p\
        P                  ! 4       pR Vn        \        P                  ! \         P                  ! R\         P                  \         P                  R7      VP                  4       V3/VR7      pVP                  R4       V P                  VP                  R4      \         P                  4      # )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#   c                  ó   € R # )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*   r+   r-   r.   r/   )r   r0   r1   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   rD   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r    r3   r=   r@   rJ   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r   r	   r	      s5   ø‡ € ñò?ò
ò"TòH$EòL T÷D(Tð (Tr   r	   )rP   r   Úzope.interface.verifyr   Útwisted.internetr   r   Útwisted.namesr   r   Útwisted.trialr   ÚTestCaser	   rD   r   r   Ú<module>rY      s1   ðñó
 å -ç -ß $Ý "ôlT�8×$Ñ$ö lTr   