
    e                         d dl Z d dlZd dlmZ ddlmZ  G d d      Z G d de      Z G d	 d
ej                  e      Z	y)    N)TTLCache   )CacheTestMixinc                        e Zd ZddZd Zd Zy)Timerc                      || _         d| _        y )Nr   autotime)selfr
   s     8platform/gsutil/third_party/cachetools/tests/test_ttl.py__init__zTimer.__init__
   s    		    c                 \    | j                   r| xj                  dz  c_        | j                  S Nr   r	   r   s    r   __call__zTimer.__call__   s     99IINIyyr   c                 .    | xj                   dz  c_         y r   )r   r   s    r   tickz
Timer.tick   s    		Q	r   N)F)__name__
__module____qualname__r   r   r    r   r   r   r   	   s    
r   r   c                   *    e Zd Zej                  fdZy)TTLTestCachec                 H    t        j                  | |f|t               d| y )N)ttltimer)r   r   r   )r   maxsizer   kwargss       r   r   zTTLTestCache.__init__   s     $JSJ6Jr   N)r   r   r   mathinfr   r   r   r   r   r      s    $(HH Kr   r   c                   4    e Zd ZeZd Zd Zd Zd Zd Z	d Z
y)TTLCacheTestc                     t        ddt                     }| j                  d|j                                | j                  d|j                         d|d<   | j                  d|d          | j                  dt        |             | j                  dht        |             |j                  j                          | j                  d|d          | j                  dt        |             | j                  dht        |             d|d<   | j                  d|d          | j                  d|d          | j                  dt        |             | j                  ddht        |             |j                  j                          | j                  d|       | j                  d|d          | j                  dt        |             | j                  dht        |             d|d<   | j                  d|       | j                  d|d          | j                  d|d          | j                  dt        |             | j                  ddht        |             |j                  j                          | j                  d|       | j                  d|       | j                  d|d          | j                  dt        |             | j                  dht        |             |j                  j                          | j                  d|       | j                  d|       | j                  d|       | j                  t              5  |d= d d d        | j                  t              5  |j                  d       d d d        | j                  t              5  |d= d d d        | j                  dt        |             | j                  t               t        |             y # 1 sw Y   xY w# 1 sw Y   uxY w# 1 sw Y   `xY w)N   r   r   r   r   r      )r   r   assertEqualr   r   lensetr   assertNotInassertRaisesKeyErrorpopr   caches     r   test_ttlzTTLCacheTest.test_ttl   s<   9EKKM*EII&aE!H%CJ'!c%j)E!H%CJ'!c%j)aE!H%E!H%CJ'!QU,E"E!H%CJ'!c%j)aE"E!H%E!H%CJ'!QU,E"E"E!H%CJ'!c%j)E"E"E"x(a )x(IIaL )x(a ) 	CJ'E
+ )(((((s$   O,2O8!P,O58PPc                    t        ddt                     }d|d<   d|d<   d|d<   | j                  t        |      d       | j	                  d|       | j                  |d   d       | j                  |d   d       |d    d|d<   | j                  t        |      d       | j	                  d|       | j                  |d   d       | j	                  d|       | j                  |d   d       d|d<   | j                  t        |      d       | j	                  d|       | j	                  d|       | j	                  d|       | j                  |d   d       | j                  |d   d       y )Nr&   r   r'   r(         )r   r   r)   r*   r,   r0   s     r   test_ttl_lruzTTLCacheTest.test_ttl_lruW   sZ   9aaaUQ'E"q1%q1%aaUQ'E"q1%E"q1%aUQ'E"E"E"q1%q1%r   c                    t        ddt                     }|j                  5 }| j                  ||j                                d d d        | j                  d|j                         d|d<   |j                  j                          d|d<   |j                  j                          d|d<   | j                  d|j                                | j                  h dt        |             | j                  dt        |             | j                  d|d          | j                  d|d          | j                  d|d          |j                         }| j                  t               t        |             | j                  h dt        |             | j                  dt        |             | j                  d|d          | j                  d|d          | j                  d|d          |j                  d      }| j                  dht        |             | j                  ddht        |             | j                  dt        |             | j                  d|       | j                  d|d          | j                  d|d          |j                  d      }| j                  dht        |             | j                  dht        |             | j                  dt        |             | j                  d|       | j                  d|       | j                  d|d          |j                  d	      }| j                  d
ht        |             | j                  t               t        |             | j                  dt        |             | j                  d|       | j                  d|       | j                  d|       y # 1 sw Y   xY w)Nr(   r'   r   r&   >   r   r&   r(   r   r   r4   )r&   r&   r5   )r(   r(   r   )
r   r   r   r)   r   r   r+   r*   expirer,   )r   r1   r   itemss       r   test_ttl_expirezTTLCacheTest.test_ttl_expires   s   9[[DT5;;=1 EII&aaaEKKM*CJ/CJ'E!H%E!H%E!H%E
+CJ/CJ'E!H%E!H%E!H%Q&3u:.!QU,CJ'E"E!H%E!H%Q&3u:.!c%j)CJ'E"E"E!H%Q&3u:.E
+CJ'E"E"E"_ [s   !OOc                    t        ddt        d            }d|d<   | j                  d|d          d|d<   | j                  d|j                  d             d|d<   | j                  d|j	                  d             d|d<   | j                  d|j                  d             d|d<   |j                          | j                  dt        |             y )Nr   r&   T)r
   r'   r   )r   r   r)   getr/   
setdefaultclearr*   r0   s     r   test_ttl_atomiczTTLCacheTest.test_ttl_atomic   s    D1ABaE!H%aEIIaL)aEIIaL)aE,,Q/0aCJ'r   c                 R   t        ddt                     }| j                  d|j                         d|d<   | j                  d|d          |j                  j                          | j                  t              5  |d    d d d        | j                  d|       y # 1 sw Y   xY w)Nr   r'   *   )r   r&   r(   )	r   r   r)   r   r   r   r-   r.   r,   r0   s     r   test_ttl_tuple_keyzTTLCacheTest.test_ttl_tuple_key   s    9EII&iU9-.x() )E* )(s   <BB&c                    ddl m }m} t        d |d      |j                        }d|d<   | j	                  dt        |             |j                  |j                               }| j	                  g t        |             | j	                  dt        |             |j                  |j                          |d      z         }| j	                  dgt        |             | j	                  dt        |             y )Nr   )datetime	timedeltar   )daysr'   r8   )rE   rF   r   nowr)   r*   r9   list)r   rE   rF   r1   r:   s        r   test_ttl_datetimezTTLCacheTest.test_ttl_datetime   s    0	q(9NaCJ'X\\^,T%[)CJ'X\\^iQ.??@&4;/CJ'r   N)r   r   r   r   Cacher2   r6   r;   r@   rC   rJ   r   r   r   r$   r$      s'    E6,p&81#f(	+(r   r$   )
r!   unittest
cachetoolsr    r   r   r   TestCaser$   r   r   r   <module>rP      s?        K8 K
o(8$$n o(r   