
    5f                     b    d dl Z d dlZd dlmZ d dlmZ d dlmZ  G d dej                        Z
y)    N)mock)base)
rate_limitc                        e Zd Z fdZd Z ej                  d      d        Z ej                  d      d        Zd Z	 ej                  d      d        Z
 xZS )LogRateLimitTestCasec                 R    t         t        |           t        j                          y N)superr   tearDownr   uninstall_filter)self	__class__s    E/usr/lib/python3/dist-packages/oslo_log/tests/unit/test_rate_limit.pyr   zLogRateLimitTestCase.tearDown   s    "D24##%    c                 r   t        j                  |  t        j                         }d }| j	                  ||t        |j                               t        |j                        D ]  }|j                  |        t        j                         }t        j                  |      }|j                  |       ||fS )Nc                 4    |D ]  }| j                  |        y r	   )
addHandler)loggerhandlershandlers      r   restore_handlersz=LogRateLimitTestCase.install_filter.<locals>.restore_handlers#   s    # +!!'*+r   )r   install_filterlogging	getLogger
addCleanuplistr   removeHandlerioStringIOStreamHandlerr   )r   argsr   r   r   streams         r   r   z#LogRateLimitTestCase.install_filter   s    !!4(""$	+ 	(&$v2GHFOO, 	*G  )	* ''/'"r   z#oslo_log.rate_limit.monotonic_clockc                    d|_         | j                  dd      \  }}|j                  d       |j                  d       |j                  d       | j                  |j	                         d       |j                  d       |j                          d|_         |j                  d       |j                  d	       |j                  d
       | j                  |j	                         d       y )N      	message 1	message 2	message 3zCmessage 1
message 2
Logging rate limit: drop after 2 records/1 sec
r   z	message 4z	message 5z	message 6zCmessage 4
message 5
Logging rate limit: drop after 2 records/1 sec
)return_valuer   errorassertEqualgetvalueseektruncater   
mock_clockr   r"   s       r   test_rate_limitz$LogRateLimitTestCase.test_rate_limit2   s    "#
,,Q2 	[![![!*L	M 	A"#
[![![!*L	Mr   c                    d|_         | j                  ddd      \  }}|j                  d       |j                  d       |j                  d       |j                  d       | j	                  |j                         d       y )Nr$   CRITICALzerror 1zerror 2z
critical 3z
critical 4zMerror 1
Logging rate limit: drop after 1 records/1 sec
critical 3
critical 4
)r)   r   r*   criticalr+   r,   r/   s       r   test_rate_limit_except_levelz1LogRateLimitTestCase.test_rate_limit_except_levelM   sp    "#
,,Q:> 	YY%%*(	)r   c                 |    t        j                  dd       | j                  t        t         j                  dd       y )Nd   r$   )r   r   assertRaisesRuntimeError)r   s    r   test_install_twicez'LogRateLimitTestCase.test_install_twice]   s,    !!#q),
(A(A3Jr   c                 
   d|_         | j                  dd      \  }}t        j                          |j	                  d       |j	                  d       |j	                  d       | j                  |j                         d       y )Nr$   r&   r'   r(   zmessage 1
message 2
message 3
)r)   r   r   r   r*   r+   r,   r/   s       r   test_uninstallz#LogRateLimitTestCase.test_uninstalla   sn    "#
,,Q2##% 	[![![!*'	(r   )__name__
__module____qualname__r   r   r   patchr1   r5   r:   r<   __classcell__)r   s   @r   r   r      su    & * TZZ56M 7M4 TZZ56) 7)K TZZ56( 7(r   r   )r   r   unittestr   oslotestr   	test_baseoslo_logr   BaseTestCaser    r   r   <module>rH      s*    
   & V(911 V(r   