
                             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)	TLRUCache   )CacheTestMixinc                        e Zd ZddZd Zd Zy)Timerc                      || _         d| _        y )Nr   autotime)selfr
   s     9platform/gsutil/third_party/cachetools/tests/test_tlru.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d ZefdZy)TLRUTestCachec                 "    t         j                  S N)mathinf)_key_value_times      r   default_ttuzTLRUTestCache.default_ttu   s    xxr   c                 H    t        j                  | ||fdt               i| y )Ntimer)r   r   r   )r   maxsizettukwargss       r   r   zTLRUTestCache.__init__   s     4#GUWGGr   N)r   r   r   r#   r   r   r   r   r   r      s     %0 Hr   r   c                   :    e Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zy)	TLRUCacheTestc                 `   t        dd t                     }| j                  d|j                                | j                  d|j	                  d dd             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|d          | j                  d|d          | j                  dt        |             | j                  ddht        |             d|d<   | j                  d|d          | j                  d|d          | j                  d|d          | j                  dt        |             | j                  h dt        |             |j                  j                          | j                  d|d          | j                  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   c                     ||z   dz   S r   r   )_vts      r   <lambda>z(TLRUCacheTest.test_ttu.<locals>.<lambda>#   s    Qr   r&   r'   r%   r      r         r   r4   r3   )r   r   assertEqualr%   r'   lensetr   assertNotInassertRaisesKeyErrorpopr   caches     r   test_ttuzTLRUCacheTest.test_ttu"   s   !)B%'REKKM*EIIdAq12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!H%E!H%CJ'!QU,aE!H%E!H%E!H%CJ'CJ/E!H%E"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$   1VVV$VV!$V-c                 j   t        dd t                     }| j                  d|j                                | j                  d|j	                  d d d             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 )	Nr4   c                     |dz   S r   r   kr/   r0   s      r   r1   z,TLRUCacheTest.test_ttu_lru.<locals>.<lambda>p       Qr   r2   r   r   r3         )r   r   r6   r%   r'   r7   r9   r=   s     r   test_ttu_lruzTLRUCacheTest.test_ttu_lruo   s   !)>egNEKKM*EIIdD!45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        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   nxY w)Nr3   c                     |dz   S )Nr3   r   rB   s      r   r1   z/TLRUCacheTest.test_ttu_expire.<locals>.<lambda>   rD   r   r2   r   r4   r5   )r   r   rE   )r4   r4   rF   )r3   r3   r   )	r   r   r%   r6   r   r8   r7   expirer9   )r   r>   r   itemss       r   test_ttu_expirezTLRUCacheTest.test_ttu_expire   s   !)>egN[[DT5;;=1  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   !N11N;c                    t        dd t                     }d |d<   | j                  |d   d        | j                  dt        |             d |d<   | j	                  d|       | j                  |d   d        | j                  dt        |             d |d<   | j	                  d|       | j	                  d|       | j                  |d   d        | j                  dt        |             y )Nr   c                     || z   S r   r   )rC   r.   r0   s      r   r1   z0TLRUCacheTest.test_ttu_expired.<locals>.<lambda>   rD   r   r2   r   )r   r   r6   r7   r9   r=   s     r   test_ttu_expiredzTLRUCacheTest.test_ttu_expired   s    !)>egNaq4(CJ'aE"q4(CJ'b	U#E"q4(CJ'r   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   c                     |dz   S )Nr4   r   rB   s      r   r1   z/TLRUCacheTest.test_ttu_atomic.<locals>.<lambda>   rD   r   T)r
   r2   r   )r   r   r6   getr<   
setdefaultclearr7   r=   s     r   test_ttu_atomiczTLRUCacheTest.test_ttu_atomic   s    !)>eQUFVWaE!H%aEIIaL)aEIIaL)aE,,Q/0aCJ'r   c                    t        dd t                     }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   c                     |dz   S r   r   rB   s      r   r1   z2TLRUCacheTest.test_ttu_tuple_key.<locals>.<lambda>   rD   r   r2   *   )r   r4   r3   )r   r   r6   r%   r   r:   r;   r9   r=   s     r   test_ttu_tuple_keyz TLRUCacheTest.test_ttu_tuple_key   sv    !)>egNiU9-.x() )E* )(s   !BBc                 d   t        dd t                     }| j                  d|j                                d|d<   d|d<   d|d<   d|d<   | j                  h dt	        |             | j                  dt        |             | j                  d|       | j                  d|d          | j                  d|d          | j                  d|d          |j                  j                          | j                  ddht	        |             | j                  dt        |             | j                  d|       | j                  d|       | j                  d|d          | j                  d|d          |j                  j                          | j                  dht	        |             | j                  dt        |             | j                  d|       | j                  d|       | j                  d|       | j                  d|d          |j                  j                          | j                  t	               t	        |             | j                  dt        |             | j                  d|       | j                  d|       | j                  d|       | j                  d|       y )	NrE   c                     ||z   S r   r   rB   s      r   r1   z7TLRUCacheTest.test_ttu_reverse_insert.<locals>.<lambda>   rD   r   r2   r   r3   r4   r   r5   )r   r   r6   r%   r8   r7   r9   r   r=   s     r   test_ttu_reverse_insertz%TLRUCacheTest.test_ttu_reverse_insert   s=   !)>egNEKKM*aaaaCJ/CJ'E"E!H%E!H%E!H%!QU,CJ'E"E"E!H%E!H%!c%j)CJ'E"E"E"E!H%E
+CJ'E"E"E"E"r   N)r   r   r   r   Cacher?   rG   rL   rP   rV   rZ   r]   r   r   r   r*   r*      s-    EK,Z&<0#d((+)#r   r*   )
r   unittest
cachetoolsr    r   r   r   TestCaser*   r   r   r   <module>rc      s?         HI Hp#H%%~ p#r   