
    v                         d dl Z d dlZd dlmZ d dlmZ  e j
                  dd      d        Zd Zej                  j                   e j
                  dd      d	               Z
d
 Zy)    N)_exponential_backoff)
exceptionsz
time.sleep)return_valuec                 t   t        j                         }|j                  }d}|D ]  }|dk(  r| j                  dk(  sJ | j                  d   d   }||j
                  z  }||z
  |cxk  r	||z   k  sJ  J ||dz   k(  sJ |j                  |dz   k(  sJ |j                  |j                  |z  k(  sJ |j                  }|dz  } |j                  t         j                  k(  sJ |j                  t         j                  k(  sJ |t         j                  k(  sJ | j                  t         j                  dz
  k(  sJ y 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      s]   		0	0	2B++IOa<''1,,,(2215a8!9!99F&+;S	F@RSSSSSo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                  h   t        j                  t        j                        5  t	        j
                  d       d d d        t        j                  t        j                        5  t	        j
                  d       d d d        t	        j
                  d       y # 1 sw Y   bxY w# 1 sw Y   ,xY w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%(B1zasyncio.sleepc                   K   t        j                         }|j                  }d}|2 3 d {   }|dk(  r| j                  dk(  sJ | j                  d   d   }||j
                  z  }||z
  |cxk  r	||z   k  sJ  J ||dz   k(  sJ |j                  |dz   k(  sJ |j                  |j                  |z  k(  sJ |j                  }|dz  }7 6 |j                  t         j                  k(  sJ |j                  t         j                  k(  sJ |t         j                  k(  sJ | j                  t         j                  dz
  k(  sJ y wr   )
r   AsyncExponentialBackoffr
   r   r   r   r   r   r   r   )mock_time_asyncr   r   r   r   r   r   s          r   test_exponential_backoff_asyncr(   ;   sr     
	5	5	7B++IO  ga<"--222.88;A>!9!99F&+;S	F@RSSSSSo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A7Ec                  h   t        j                  t        j                        5  t	        j
                  d       d d d        t        j                  t        j                        5  t	        j
                  d       d d d        t	        j
                  d       y # 1 sw Y   bxY w# 1 sw Y   ,xY w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      sr      , " Lt, -8> O$/ 0 >Cr   