
    tf                     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    	~CFGGGIKKRLJ
 
 ##N33??r2rl
 
 	
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.12   (   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=    "CE362s|KQS7T7T  "CE362s|KQS7T7T  "CE362s|KQS7T7T 
$ 
	~CEsvFFF!(< =uMMM 	b(((!!!//."A"A3?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    VAYq\-r222VAYq\-r222VAYq\-r222VAYq\.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;    "CE362s|KQS7T7T  "CE362s|KQS7T7T  "CE362s|KQS7T7T 
$ 
...	ci^#%SVLLLa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;    "CE362s|KQS7T7T  "CE362s|KQS7T7T  "CE362s|KQS7T7T 
$ 
...	~CEsvFFF	eQb(((!!!//."A"A3?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;    "CE362s|KQS7T7T  "CE362s|KQS7T7T  "CE362s|KQS7T7T 
$ 
66	~CEsvFFFMMOOI 
 
 
 	d!!!//."A"A3?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   