
    v                         S SK r S SKrS SKJr  S SKJr  \ R
                  " SSS9S 5       rS r\R                  R                  \ R
                  " SSS9S	 5       5       r
S
 rg)    N)_exponential_backoff)
exceptionsz
time.sleep)return_valuec                    [         R                  " 5       nUR                  nSnU H  nUS:X  a  U R                  S:X  d   eOU R                  S   S   nX!R
                  -  nX&-
  Us=::  a	  X&-   ::  d   e   eXCS-   :X  d   eUR                  US-   :X  d   eUR                  UR                  U-  :X  d   eUR                  nUS-  nM     UR                  [         R                  :X  d   eUR                  [         R                  :X  d   eU[         R                  :X  d   eU R                  [         R                  S-
  :X  d   eg Nr      )
r   ExponentialBackoff_current_wait_in_seconds
call_count	call_args_randomization_factorbackoff_count_multipliertotal_attempts_DEFAULT_RETRY_TOTAL_ATTEMPTS)	mock_timeeb	curr_waititeration_countattemptbackoff_intervaljitters          Yplatform/gsutil/third_party/google-auth-library-python/tests/test__exponential_backoff.pytest_exponential_backoffr      sU   		0	0	2B++IOa<''1,,,(2215a8!9!99F&+;S	@RSSSSS1111##'::::.."..O2SSSS33I1   4 R RRRR3QQQQQ2PPPPP 4 R RUV VVV    c                  t   [         R                  " [        R                  5         [        R
                  " SS9  S S S 5        [         R                  " [        R                  5         [        R
                  " SS9  S S S 5        [        R
                  " SS9  g ! , (       d  f       Nd= f! , (       d  f       N4= fNr   )r   r   )pytestraisesr   InvalidValuer   r	    r   r   test_minimum_total_attemptsr#   3   sj    	z..	///qA 
0	z..	///rB 
0++1=	 
0	/	/	/   B&B)
B&)
B7zasyncio.sleepc                   #    [         R                  " 5       nUR                  nSnU  S h  vN nUS:X  a  U R                  S:X  d   eOU R                  S   S   nX!R
                  -  nX&-
  Us=::  a	  X&-   ::  d   e   eXCS-   :X  d   eUR                  US-   :X  d   eUR                  UR                  U-  :X  d   eUR                  nUS-  nM   N
 UR                  [         R                  :X  d   eUR                  [         R                  :X  d   eU[         R                  :X  d   eU R                  [         R                  S-
  :X  d   eg 7fr   )
r   AsyncExponentialBackoffr
   r   r   r   r   r   r   r   )mock_time_asyncr   r   r   r   r   r   s          r   test_exponential_backoff_asyncr(   ;   sh     
	5	5	7B++IO  ga<"--222.88;A>!9!99F&+;S	@RSSSSS1111##'::::.."..O2SSSS33I1  4 R RRRR3QQQQQ2PPPPP""==A	B	Bs'   &ECCCB!ECA;Ec                  t   [         R                  " [        R                  5         [        R
                  " SS9  S S S 5        [         R                  " [        R                  5         [        R
                  " SS9  S S S 5        [        R
                  " SS9  g ! , (       d  f       Nd= f! , (       d  f       N4= fr   )r   r    r   r!   r   r&   r"   r   r   !test_minimum_total_attempts_asyncr*   \   sj    	z..	/44AF 
0	z..	/44BG 
000B	 
0	/	/	/r$   )mockr   google.authr   r   patchr   r#   markasyncior(   r*   r"   r   r   <module>r0      sn      , " Lt, -8> O$/ 0 >Cr   