
    \eS                        d dl Z d dlZd dlZd dlmZ d dlZd dlmZ d dl	m
Z
 d dlmZ ddZ G d dej                        Z G d	 d
ej                        Z G d dej                        Z G d dej                        Zy)    N)mock)base)matchers)	timeutilsc              #       K   	 |  | |z  } 
wN )startincrs     A/usr/lib/python3/dist-packages/oslo_utils/tests/test_timeutils.pymonotonic_iterr      s     
 s   c                        e Zd Z fdZd Zd Zd Z ej                  de	j                        d        Z
d Zd	 Zd
 Z ej                  de	j                        d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z xZS )TimeUtilsTestc           	         t         t        |           d| _        d| _        t        j
                  dddddd      | _        t        j
                  ddddddd	      | _        t        j
                  ddddd
d      | _        t        j
                  dddddd      | _	        d| _
        t        j
                  dddddd      | _        | j                  t        j                         y )Nz1997-08-29T06:14:00Zz1997-08-29T06:14:00.000123Zi              r   {         z1997-08-29T06:14:00.000000)superr   setUpskynet_self_aware_time_strskynet_self_aware_time_ms_strdatetimeskynet_self_aware_timeskynet_self_aware_ms_timeone_minute_beforeone_minute_after"skynet_self_aware_time_perfect_strskynet_self_aware_time_perfect
addCleanupr   clear_time_override)self	__class__s    r   r   zTimeUtilsTest.setUp$   s    mT(**@'-J*&.&7&7aQA&N#)1):):4B2;<c*C&!)!2!24B2q!I ( 1 1$2q"a H2N/.6.?.?a@A2q/J+	556    c                     t        j                  | j                        }| j                  j	                  t
        j
                  j                        }| j                  ||       y Ntzinfo)r   parse_isotimer   r   replaceiso8601UTCassertEqual)r%   expectskynet_self_aware_time_utcs      r   test_parse_isotimez TimeUtilsTest.test_parse_isotime2   sS    (()H)HI%)%@%@%H%H??&& &I &("3V<r'   c                     t        j                  | j                        }| j                  j	                  t
        j
                  j                        }| j                  ||       y r)   )r   r,   r   r   r-   r.   r/   r0   )r%   r1   skynet_self_aware_time_ms_utcs      r   )test_parse_isotime_micro_second_precisionz7TimeUtilsTest.test_parse_isotime_micro_second_precision8   sS    (()K)KL(,(F(F(N(N??&& )O )(%6?r'   c                 ~    | j                   }t        j                  |      }| j                  | j                  |       y r   )r!   r   parse_strtimer0   r"   )r%   perfect_time_formatr1   s      r   test_parse_strtimez TimeUtilsTest.test_parse_strtime>   s5    "EE(()<=<<fEr'   datetime.datetime)wrapsc                    | j                   |j                  _        t        j                   || j
                        d      }| j                  |       t        j                   || j
                        d      }| j                  |       t        j                   || j
                        d      }| j                  |       y N;   <   =   )r   nowreturn_valuer   is_older_thanr   
assertTrueassertFalser%   fndatetime_mockexpect_trueexpect_falses        r   _test_is_older_thanz!TimeUtilsTest._test_is_older_thanC   s    )-)D)D&--b1G1G.H"M$ ..r$2H2H/I2N& ..r$2H2H/I2N&r'   c                 (    | j                  d        y )Nc                     | S r   r	   xs    r   <lambda>z;TimeUtilsTest.test_is_older_than_datetime.<locals>.<lambda>N       1 r'   rL   r%   s    r   test_is_older_than_datetimez)TimeUtilsTest.test_is_older_than_datetimeM         -r'   c                 (    | j                  d        y)z0Tests sending is_older_than an 'aware' datetime.c                 V    | j                  t        j                  j                        S r)   r-   r.   r/   rO   s    r   rQ   z8TimeUtilsTest.test_is_older_than_aware.<locals>.<lambda>R   !    199??&& ,5 ,( r'   NrS   rT   s    r   test_is_older_than_awarez&TimeUtilsTest.test_is_older_than_awareP          "( 	)r'   c                 (    | j                  d        y )Nc                     | j                  t        j                  j                  ddd            j                  d      S N   r   foor*      )hourr-   r.   FixedOffsetrO   s    r   rQ   z?TimeUtilsTest.test_is_older_than_aware_no_utc.<locals>.<lambda>V   @    199??..q!U; ,5 ,==DW >E > r'   rS   rT   s    r   test_is_older_than_aware_no_utcz-TimeUtilsTest.test_is_older_than_aware_no_utcU          " 	r'   c                    | j                   |j                  _        t        j                   || j
                        d      }| j                  |       t        j                   || j
                        d      }| j                  |       t        j                   || j
                        d      }| j                  |       y r>   )r   rB   rC   r   is_newer_thanr    rE   rF   rG   s        r   _test_is_newer_thanz!TimeUtilsTest._test_is_newer_thanZ   s    )-)D)D&--b1F1F.G.02$ ..r$2G2G/H/13& ..r$2G2G/H/13&r'   c                 (    | j                  d        y )Nc                     | S r   r	   rO   s    r   rQ   z;TimeUtilsTest.test_is_newer_than_datetime.<locals>.<lambda>h   rR   r'   rk   rT   s    r   test_is_newer_than_datetimez)TimeUtilsTest.test_is_newer_than_datetimeg   rV   r'   c                 (    | j                  d        y)z0Tests sending is_newer_than an 'aware' datetime.c                 V    | j                  t        j                  j                        S r)   rY   rO   s    r   rQ   z8TimeUtilsTest.test_is_newer_than_aware.<locals>.<lambda>l   rZ   r'   Nrn   rT   s    r   test_is_newer_than_awarez&TimeUtilsTest.test_is_newer_than_awarej   r\   r'   c                 (    | j                  d        y )Nc                     | j                  t        j                  j                  ddd            j                  d      S r_   rd   rO   s    r   rQ   z?TimeUtilsTest.test_is_newer_than_aware_no_utc.<locals>.<lambda>p   rf   r'   rn   rT   s    r   test_is_newer_than_aware_no_utcz-TimeUtilsTest.test_is_newer_than_aware_no_utco   rh   r'   c                     t        j                         }t        j                  d       t        j                          t        j                         }| j                  |t        j                  |             y Nr`   )r   	utcnow_tstimesleepset_time_override
assertThatr   LessThan)r%   rB   overriden_nows      r   $test_set_time_override_using_defaultz2TimeUtilsTest.test_set_time_override_using_defaultt   sP    !!#
 	

1##%!++-X..}=>r'   c                    d}t         j                   j                  |      }| j                  | j                  |       t	        j
                  d      5 }||_        t        j                         }| j                  ||       d d d        t        j                  |       t        j                         }| j                  ||       y # 1 sw Y   ExY w)Nih4z	time.time)
r   utcfromtimestampr0   r   r   patchrC   r   rx   r{   )r%   skynet_self_aware_ts	skynet_dt	time_mocktss        r   test_utcnow_tszTimeUtilsTest.test_utcnow_ts   s    (%%667KL	44i@ ZZ$ 	7	%9I"$$&BR!56	7
 	##I.  "12	7 	7s   .CCc                    t        j                  t        j                  j                         | j                  t        j                         t        j                  j                         t        j                          | j                  t        j                         t        j                  j                  k(         | j                  t        j                                y r   )	r   r{   r   sentinelutcnowr0   r$   rF   rE   rT   s    r   test_utcnowzTimeUtilsTest.test_utcnow   s    ##DMM$8$89))+T]]-A-AB%%'))+t}}/C/CCD	((*+r'   c                     t        j                  | j                         t        j                  t	        j
                  d             | j                  t        j                         | j                         y )Nr@   )seconds)	r   r{   r   advance_time_deltar   	timedeltar0   r   r   rT   s    r   test_advance_time_deltaz%TimeUtilsTest.test_advance_time_delta   sN    ##D$:$:;$$X%7%7%CD))+T-H-HIr'   c                     t        j                  | j                         t        j                  d       | j	                  t        j
                         | j                         y )Nr@   )r   r{   r   advance_time_secondsr0   r   r   rT   s    r   test_advance_time_secondsz'TimeUtilsTest.test_advance_time_seconds   sC    ##D$:$:;&&r*))+T-H-HIr'   c                     t        j                         }t        j                  |      }t        j                  |      }| j	                  ||       y r   )r   r   marshall_nowunmarshall_timer0   r%   rB   binary	backagains       r   test_marshall_timez TimeUtilsTest.test_marshall_time   s@     '',--f5	i(r'   c                    t        j                         }|j                  t        j                  j                        }t        j
                  |      }| j                  d|d          t        j                  |      }| j                  ||       | j                  |j                         | j                  |j                         |j                                y )Nr*   r/   tzname)r   r   r-   r.   r/   r   r0   r   assertIsNotNoner+   	utcoffsetr   s       r   test_marshall_time_with_tzz(TimeUtilsTest.test_marshall_time_with_tz   s     kk!4!4k5'',x 01--f5	i(Y--.)*=*=*?@r'   c           	         t        dddddt        j                  dz   d      }t        j                  |      }|j	                  t        j                  	       t        j                  |      }| j                  ||       y )
N   r   i     r?   r`   r   )daymonthyearrc   minutesecondmicrosecond)r   )dictr   _MAX_DATETIME_SECr   updater0   )r%   	leap_dict	leap_timeexpecteds       r    test_unmarshall_time_leap_secondz.TimeUtilsTest.test_unmarshall_time_leap_second   sq    Rqt  ) ; ;a ?%&(	 --i8		 ; ;<,,Y79-r'   c                     t        j                         }|t        j                  ddd      z   }| j	                  dt        j
                  ||             y )Nrb   r?   i@ )daysr   microsecondsg5?vu"A)r   r   r   r   assertAlmostEqualdelta_seconds)r%   beforeafters      r   test_delta_secondsz TimeUtilsTest.test_delta_seconds   sQ    !!#++B9?A A}(66vuE	Gr'   c                 4   t        j                         t        j                  d      z   }| j	                  t        j
                  |d             | j                  t        j
                  |d             | j                  t        j
                  |d             t        j                  d      5 }| j                  |j                  _        t        j                         }| j                  t        j
                  |d             d d d        y # 1 sw Y   y xY w)N   )minutesx   i,  iX  r;   r   )r   r   r   r   rF   is_soonrE   r   r   r   rB   rC   )r%   expiresrI   s      r   test_is_soonzTimeUtilsTest.test_is_soon   s    ""$x'9'9!'DD**7C89	))'378	))'378ZZ+, 	;-1-H-HM*&&(GOOI--gq9:	; 	; 	;s   0ADD)__name__
__module____qualname__r   r3   r6   r:   r   r   r   rL   rU   r[   rg   rk   ro   rr   ru   r   r   r   r   r   r   r   r   r   r   __classcell__)r&   s   @r   r   r   "   s    7=@F
 TZZ#8+<+<=' >'.)

 TZZ#8+<+<=
' >
'.)


?3 ,J
J
)A
.G	;r'   r   c                   l    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zy)TestIso8601Timec	                    | j                  |j                  |       | j                  |j                  |       | j                  |j                  |       | j                  |j                  |       | j                  |j
                  |       | j                  |j                  |       | j                  |j                  |       y r   )r0   r   r   r   rc   r   r   r   )	r%   	timestampyrmonr   hrr   secmicros	            r   _instaneouszTestIso8601Time._instaneous   s    ,#.,,))62))3/..6r'   c
           
          d}
t        j                  |      }| j                  ||||||||       |j                  j	                  d       }| j                  |j                  |j                  |
z  z   |	       y )NiQ )r   r,   r   r+   r   r0   r   r   )r%   time_strr   r   r   r   r   r   r   shiftDAY_SECONDSr   offsets                r   _do_testzTestIso8601Time._do_test   sk    "++H5	BS"fc5I!!++D1&++*CCUKr'   c                 :    d}| j                  |dddddddd	       y 	Nz2012-02-14T20:53:07Z     r      5   rb   r   r   r%   r   s     r   	test_zuluzTestIso8601Time.test_zulu   s#    )haRQ1=r'   c                 :    d}| j                  |dddddddd		       y )
Nz2012-02-14T20:53:07.123Zr   r   r   r   r   rb   ix r   r   r   s     r   test_zulu_microsz TestIso8601Time.test_zulu_micros   s#    -haRQBr'   c                 >    d}d}| j                  |ddddddd	|	       y )
Nz2012-02-14T20:53:07+04:30     @r   r   r   r   r   rb   r   r   r%   r   r   s      r   test_offset_eastz TestIso8601Time.test_offset_east   s(    .haRQ6Br'   c                 >    d}d}| j                  |ddddddd	|	       y )
Nz2012-02-14T20:53:07.42+04:30r   r   r   r   r   r   rb   ih r   r   s      r   test_offset_east_microsz'TestIso8601Time.test_offset_east_micros   s(    1haRQGr'   c                 >    d}d}| j                  |ddddddd	|	       y )
Nz2012-02-14T20:53:07-05:30     Vr   r   r   r   r   rb   r   r   r   s      r   test_offset_westz TestIso8601Time.test_offset_west   s(    .haRQ6Br'   c                 >    d}d}| j                  |ddddddd	|	       y )
Nz 2012-02-14T20:53:07.654321-05:30r   r   r   r   r   r   rb   i	 r   r   s      r   test_offset_west_microsz'TestIso8601Time.test_offset_west_micros   s(    5haRQGr'   c                     t        j                  d      }t        j                  d      }t        j                  d      }| j                  ||kD         | j                  ||kD         | j                  ||kD         y )Nz2012-02-14T20:53:07z2012-02-14T20:53:07-01:00z2012-02-14T20:53:07+01:00r   r,   rE   r%   zulueastwests       r   test_comparezTestIso8601Time.test_compare   se    &&'<=&&'BC&&'BCt$t$t$r'   c                     t        j                  d      }t        j                  d      }t        j                  d      }| j                  ||k         | j                  ||k         | j                  ||k         y )Nz2012-02-14T20:53:07.6544z 2012-02-14T19:53:07.654321-01:00z2012-02-14T21:53:07.655+01:00r   r   s       r   test_compare_microsz#TestIso8601Time.test_compare_micros  se    &&'AB&&'IJ&&'FGt$t$t$r'   c           
          d}t        j                  |      }t        j                  |      }| j                  |ddddddd       y r   r   r,   normalize_timer   )r%   r   r   normeds       r   test_zulu_normalizez#TestIso8601Time.test_zulu_normalize  sC    )&&x0))$/q"b"a;r'   c           
          d}t        j                  |      }t        j                  |      }| j                  |ddddddd       y )	Nz2012-02-14T20:53:07-07:00r   r   r      r   rb   r   r   )r%   r   r   r   s       r   test_east_normalizez#TestIso8601Time.test_east_normalize  sC    .&&x0))$/q"aQ:r'   c           
          d}t        j                  |      }t        j                  |      }| j                  |ddddddd       y )	Nz2012-02-14T20:53:07+21:00r   r   r   r   r   rb   r   r   )r%   r   r   r   s       r   test_west_normalizez#TestIso8601Time.test_west_normalize  sC    .&&x0))$/q"b"a;r'   c                     t        j                   dddddd      }d}t        j                  |      }t        j                  |      }| j	                  ||k         y )N  r   r   r   r   rb   z2011-02-14T20:53:07+21:00r   r   r,   r   rE   r%   dtr   awarenaives        r   test_normalize_aware_to_naivez-TestIso8601Time.test_normalize_aware_to_naive"  sQ    tQBA6.''1((/
#r'   c                     t        j                   dddddd      }d}t        j                  |      }t        j                  |      }| j	                  ||k         y )Nr   r   r   r   r   rb   z2011-02-14T19:53:07Zr   r   s        r   "test_normalize_zulu_aware_to_naivez2TestIso8601Time.test_normalize_zulu_aware_to_naive)  sQ    tQBA6)''1((/
#r'   c                     t        j                   dddddd      }t        j                   dddddd      }t        j                  |      }| j                  ||k         y )Nr   r   r   r   r   rb      )r   r   r   rE   )r%   r   dtnr  s       r   test_normalize_naivez$TestIso8601Time.test_normalize_naive0  sV    tQBA6aRQ7((-
#r'   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r	  r	   r'   r   r   r      sX    7L>CC
H
C
H
%%<;<$$$r'   r   c                   (   e Zd Z ej                  d       ej                  d      d               Z ej                  d       ej                  d      d               Z ej                  d       ej                  d      d               Z ej                  d       ej                  d      d               Z ej                  d       ej                  d      d               Z	 ej                  d       ej                  d      d               Z
y	)

TimeItTestz
time.sleeposlo_utils.timeutils.nowc                     t        d      |_        t        j                  t	        j
                         d      }t        j                  |      d        } |        | j                  |j                         | j                  |j                         | j                  |j                  j                         |j                  j                  t        j                  t        j                  t        j                         y )N皙?r   Tautospecc                  .    t        j                  d       y Nr  ry   rz   r	   r'   r   slow_functionz,TimeItTest.test_timed.<locals>.slow_function?      JJsOr'   r   side_effectr   	MagicMocklogging	getLoggerr   time_itrE   calledlogassert_called_withDEBUGANYr%   mock_now
mock_sleepfake_loggerr  s        r   
test_timedzTimeItTest.test_timed9  s      .37nnW%6%6%84H			;	'	 
(	 	(
))*../**7==$((DHHMr'   c                 @   t        d      |_        t        j                  t	        j
                         d      }t        j                  |d      d        } |        | j                  |j                         | j                  |j                  j                         y )Nr  r  Tr  F)enabledc                  .    t        j                  d       y r  r  r	   r'   r   r  z8TimeItTest.test_no_timed_disabled.<locals>.slow_functionO  r  r'   )r   r  r   r  r  r  r   r  rF   r  r  r"  s        r   test_no_timed_disabledz!TimeItTest.test_no_timed_disabledI  sz      .37nnW%6%6%84H			;	6	 
7	 	)//0r'   c                 
   t        d      |_        t        j                  t	        j
                         d      }t        j                  |d      d        } |        | j                  |j                  j                         y )Nr  r  Tr  
   )min_durationc                       y r   r	   r	   r'   r   fast_functionz7TimeItTest.test_no_timed_to_fast.<locals>.fast_function]  s    r'   )r   r  r   r  r  r  r   r  rF   r  r  )r%   r#  r$  r%  r/  s        r   test_no_timed_to_fastz TimeItTest.test_no_timed_to_fastW  sh      .37nnW%6%6%84H			;R	8	 
9	 	//0r'   c                 $   t        d      |_        t        j                  t	        j
                         d      }t        j                  |      d        }| j                  t        |       | j                  |j                  j                         y )Nr  r  Tr  c                      t        d      )NBroken)IOErrorr	   r'   r   broken_functionz;TimeItTest.test_no_timed_exception.<locals>.broken_functionj  s    (##r'   )r   r  r   r  r  r  r   r  assertRaisesr4  rF   r  r  )r%   r#  r$  r%  r5  s        r   test_no_timed_exceptionz"TimeItTest.test_no_timed_exceptiond  sq      .37nnW%6%6%84H			;	'	$ 
(	$ 	'?3//0r'   c                    t        d      |_        t        j                  t	        j
                         d      }t        j                  |d      d        } |        | j                  |j                         | j                  |j                         | j                  |j                  j                         |j                  j                  t        j                  dt        j                         y )Nr  r  Tr  zThat took a long time)messagec                  .    t        j                  d       y r  r  r	   r'   r   r  z;TimeItTest.test_timed_custom_message.<locals>.slow_functionw  r  r'   r  r"  s        r   test_timed_custom_messagez$TimeItTest.test_timed_custom_messageq  s      .37nnW%6%6%84H			;0G	H	 
I	 	(
))*../**7==+B+/88	5r'   c                     t        d      |_        t        j                  t	        j
                         d      }t        j                  |t        j                        d        } |        | j                  |j                         | j                  |j                         | j                  |j                  j                         |j                  j                  t        j                  t        j                  t        j                         y )Nr  r  Tr  )	log_levelc                  .    t        j                  d       y r  r  r	   r'   r   r  z9TimeItTest.test_timed_custom_level.<locals>.slow_function  r  r'   )r   r  r   r  r  r  r   r  INFOrE   r  r  r  r!  r"  s        r   test_timed_custom_levelz"TimeItTest.test_timed_custom_level  s      .37nnW%6%6%84H			;',,	?	 
@	 	(
))*../**7<<488Lr'   N)r   r   r   r   r   r&  r*  r0  r7  r;  r@  r	   r'   r   r  r  7  s6   TZZTZZ*+N , N TZZTZZ*+
1 , 
1 TZZTZZ*+	1 , 	1 TZZTZZ*+	1 , 	1 TZZTZZ*+5 , 5  TZZTZZ*+M , Mr'   r  c                      e Zd Zd Zd Zd Z ej                  d      d        Z ej                  d      d        Z	 ej                  d      d        Z
d Zd	 Z ej                  d      d
        Zd Zd Z ej                  d      d        Z ej                  d      d        Z ej                  d      d        Zd Zd Z ej                  d      d        Z ej                  d      d        Zy)StopWatchTestc                    t        j                         }|j                          | j                  t        |j
                         | j                  t        |j
                  d       | j                  |j                  d             y )NF)return_noneT)r   	StopWatchr
   r6  RuntimeErrorleftoverassertIsNoner%   watchs     r   test_leftover_no_durationz'StopWatchTest.test_leftover_no_duration  s_    ##%,7,EJ%..T.:;r'   c                     t        j                         }| j                  t        |j                         | j                  t        |j
                         y r   )r   rE  r6  rF  stopresumerI  s     r   test_no_stateszStopWatchTest.test_no_states  s8    ##%,

3,5r'   c                 N    | j                  t        t        j                  d       y )N)r6  
ValueErrorr   rE  rT   s    r   test_bad_expiryzStopWatchTest.test_bad_expiry  s    *i&9&92>r'   r  c                    g d|_         t        j                  d      }|j                          | j	                  |j                                | j                  |j                                | j                  d|j                                y )N)r   g      ?      rU  r  g        )	r  r   rE  r
   rE   expiredrF   r0   elapsedr%   r#  rJ  s      r   test_backwardszStopWatchTest.test_backwards  s_    3##C(()emmo.r'   c                     t        d      |_        t        j                  d      }|j	                          | j                  |j                                y )N皙?r  r  )r   r  r   rE  r
   rE   rV  rX  s      r   test_expiryzStopWatchTest.test_expiry  s:    -37##C((r'   c                     t               |_        t        j                  d      }|j	                          | j                  |j                                y r  )r   r  r   rE  r
   rF   rV  rX  s      r   test_not_expiredzStopWatchTest.test_not_expired  s:    -/##C()r'   c                    t        j                         }| j                  |j                                | j                  |j	                                |j                          | j                  |j                                | j                  |j	                                |j                          | j                  |j	                                | j                  |j                                y r   )r   rE  rF   has_startedhas_stoppedr
   rE   rM  rI  s     r   test_has_started_stoppedz&StopWatchTest.test_has_started_stopped  s    ##%**,-**,-))+,**,-

))+,**,-r'   c                 n    t        j                  d      }| j                  t        |j                         y r  )r   rE  r6  rF  rV  rI  s     r   test_no_expiryzStopWatchTest.test_no_expiry  s&    ##C(,6r'   c                     t        d      |_        t        j                         }|j	                          t        j                  d      }| j                  |j                         |       y )Nr[  r  gRQ?)	r   r  r   rE  r
   r   GreaterThanr|   rW  r%   r#  rJ  matchers       r   test_elapsedzStopWatchTest.test_elapsed  sJ    -37##%&&t,1r'   c                 l    t        j                         }| j                  t        |j                         y r   )r   rE  r6  rF  rW  rI  s     r   test_no_elapsedzStopWatchTest.test_no_elapsed  s$    ##%,6r'   c                     t        j                         }| j                  t        |j                         t        j                  d      }| j                  t        |j                         y rw   )r   rE  r6  rF  rG  rI  s     r   test_no_leftoverzStopWatchTest.test_no_leftover  sH    ##%,7##A&,7r'   c                 J   t               |_        t        j                         }|j	                          |j                          |j                         }| j                  ||j                                |j                          | j                  ||j                                y r   )
r   r  r   rE  r
   rM  rW  r   rN  assertNotEqual)r%   r#  rJ  rW  s       r   test_pause_resumezStopWatchTest.test_pause_resume  sm    -/##%

--/w8GU]]_5r'   c                     t               |_        t        j                         5 }	 d d d        t	        j
                  d      }| j                  j                         |       y # 1 sw Y   ?xY w)Ng{Gz?)r   r  r   rE  r   rf  r|   rW  rg  s       r   test_context_managerz"StopWatchTest.test_context_manager  sW    -/  " 	e	&&t,1	 	s   A$$A-c                 H   t               |_        t        j                         5 }t	        j
                  d       |j                          d d d        | j                  t        j                         | j                  dt        |j                               y # 1 sw Y   OxY w)Ng{Gz?r`   )r   r  r   rE  ry   rz   splitr6  rF  r0   lensplitsrX  s      r   test_context_manager_splitsz)StopWatchTest.test_context_manager_splits  st    -/  " 	eJJtKKM	 	,4C-.		 	s   &BB!c                     t        j                         }|j                          |j                          |j	                          | j                  t        |j                         y r   )r   rE  r
   rt  rM  r6  rF  rI  s     r   test_splits_stoppedz!StopWatchTest.test_splits_stopped  s?    ##%

,4r'   c                 l    t        j                         }| j                  t        |j                         y r   )r   rE  r6  rF  rt  rI  s     r   test_splits_never_startedz'StopWatchTest.test_splits_never_started  s$    ##%,4r'   c                    t               |_        t        j                         }|j	                          | j                  dt        |j                               |j                          | j                  dt        |j                               | j                  |j                  d   j                  |j                  d   j                         |j                          |j                  }| j                  dt        |             | j                  |d   j                  |d   j                         | j                  |d   j                  |d   j                  |d   j                  z
         |j                          | j                  dt        |j                               |j	                          | j                  dt        |j                               y )Nr   r`   r   )r   r  r   rE  r
   r0   ru  rv  rt  rW  lengthro  rM  )r%   r#  rJ  rv  s       r   test_splitszStopWatchTest.test_splits  sW   -/##%C-.C-.a00a//	1 	CK(F1I--vay/@/@A))**VAY->->>	@ 	

C-.C-.r'   c                    ddgdgdz  z   |_         t        j                         }|j                          | j	                  d|j                                | j	                  d|j                                | j	                  d|j                  d             |j                          | j	                  d|j                                | j	                  d|j                                | j	                  d|j                  d             y )Nr   r`         )maximumrQ  )r  r   rE  r
   r0   rW  rM  rX  s      r   test_elapsed_maximumz"StopWatchTest.test_elapsed_maximum  s     !1v"2##%EMMO,U]]_-EMM!M45

U]]_-U]]_-EMM"M56r'   N)r   r   r   rK  rO  rS  r   r   rY  r\  r^  rb  rd  ri  rk  rm  rp  rr  rw  ry  r{  r~  r  r	   r'   r   rB  rB    sO   <6
? TZZ*+/ ,/ TZZ*+) ,) TZZ*+* ,*.7 TZZ*+2 ,278 TZZ*+6 ,6 TZZ*+2 ,2 TZZ*+/ ,/55 TZZ*+/ ,/2 TZZ*+7 ,7r'   rB  )r   g?)r   r  ry   unittestr   r.   oslotestr   	test_base	testtoolsr   
oslo_utilsr   r   BaseTestCaser   r   r  rB  r	   r'   r   <module>r     sy          &   m;I** m;`b$i,, b$JZM'' ZMzY7I** Y7r'   