
    =Ki&                         S SK Jr  S SKJr  SSKJr  S SK Jr  SSKrSSKrSSK	r	SSK
r
SSKr\R                  " 5       r " S S\R                  5      r " S	 S
5      r\S:X  a  \R$                  " 5         gg)   )leaderelection)LeaderElectionRecord    )ApiException)electionconfigNc                   .    \ rS rSrS rS r S rS rSrg)LeaderElectionTest   c           
      B  ^^	 / m/ m	UU	4S jnU4S jnU4S jn[        SSS[        XUS 5      nU	4S jnU	4S jn[        R                  " USS	S
UUS9n[        R
                  " U5      R                  5         U R                  T/ SQ5        U R                  T	/ SQ5        g )Nc                  J   > T R                  S5        TR                  S5        g Ncreate recordget leadershipappendelection_historyleadership_historys   o/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/kubernetes/leaderelection/leaderelection_test.py	on_createALeaderElectionTest.test_simple_leader_election.<locals>.on_create!        ##O4%%&67    c                  (   > T R                  S5        g Nupdate recordr   r   s   r   	on_updateALeaderElectionTest.test_simple_leader_election.<locals>.on_update%       ##O4r   c                  (   > T R                  S5        g Nzchange recordr   r   s   r   	on_changeALeaderElectionTest.test_simple_leader_election.<locals>.on_change(   r    r   mockmock_namespacec                  (   > T R                  S5        g Nstart leadingr   r   s   r   on_started_leadingJLeaderElectionTest.test_simple_leader_election.<locals>.on_started_leading-       %%o6r   c                  (   > T R                  S5        g Nstop leadingr   r*   s   r   on_stopped_leadingJLeaderElectionTest.test_simple_leader_election.<locals>.on_stopped_leading0       %%n5r         @         ?locklease_durationrenew_deadlineretry_periodonstarted_leadingonstopped_leading)r   r   r   r   r   r)   r0   )MockResourceLockthread_lockr   Configr   LeaderElectionrunassert_history)
selfr   r   r#   	mock_lockr+   r1   configr   r   s
           @@r   test_simple_leader_election.LeaderElectionTest.test_simple_leader_election   s    	8	5	5 %V-=v{T]jsuyz		7	6  &&Ic67c]o9KM
 	%%f-113,.rs.0cdr   c           
      $  ^^ / m/ mUU4S jnU4S jnU4S jn[        SSS[        XUS 5      nSUl        U4S jnU4S	 jn[        R                  " US
SSUUS9nUU4S jnU4S jn	U4S jn
[        SSS[        XU
S 5      nSUl        U4S jnU4S jn[        R                  " US
SSUUS9nUR
                  Ul        S[        l        [        R                  " [        R                  " U5      R                  5       S9R                  5         [        R                  " [        R                  " U5      R                  5       S9R                  5         [        R                  " S5        U R                  T/ SQ5        U R                  T/ SQ5        g )Nc                  J   > T R                  S5        TR                  S5        g )NA creates recordA gets leadershipr   r   s   r   on_create_A<LeaderElectionTest.test_leader_election.<locals>.on_create_AB   !    ##$67%%&9:r   c                  (   > T R                  S5        g )NA updates recordr   r   s   r   on_update_A<LeaderElectionTest.test_leader_election.<locals>.on_update_AF       ##$67r   c                  (   > T R                  S5        g )NrM   r   r   s   r   on_change_A<LeaderElectionTest.test_leader_election.<locals>.on_change_AI       ##$78r   r%   r&   MockA   c                  (   > T R                  S5        g )NA starts leadingr   r*   s   r   on_started_leading_AELeaderElectionTest.test_leader_election.<locals>.on_started_leading_AO       %%&89r   c                  (   > T R                  S5        g )NA stops leadingr   r*   s   r   on_stopped_leading_AELeaderElectionTest.test_leader_election.<locals>.on_stopped_leading_AR       %%&78r   r4   r5   r6   r7   c                  J   > T R                  S5        TR                  S5        g )NzB creates recordB gets leadershipr   r   s   r   on_create_B<LeaderElectionTest.test_leader_election.<locals>.on_create_BY   rP   r   c                  (   > T R                  S5        g )NB updates recordr   r   s   r   on_update_B<LeaderElectionTest.test_leader_election.<locals>.on_update_B]   rU   r   c                  (   > T R                  S5        g )Nrg   r   r*   s   r   on_change_B<LeaderElectionTest.test_leader_election.<locals>.on_change_B`   s    %%&9:r   MockB   c                  (   > T R                  S5        g )NB starts leadingr   r*   s   r   on_started_leading_BELeaderElectionTest.test_leader_election.<locals>.on_started_leading_Bf   r`   r   c                  (   > T R                  S5        g )NB stops leadingr   r*   s   r   on_stopped_leading_BELeaderElectionTest.test_leader_election.<locals>.on_stopped_leading_Bi   re   r   T)target   )rL   rR   rR   rk   rk   rk   rk   )rM   r]   rb   rg   rt   rx   )r?   r@   renew_count_maxr   rA   leader_record	threadingdaemonThreadr   rB   rC   starttimesleeprD   )rE   rN   rS   rW   mock_lock_Ar^   rc   config_Arh   rl   ro   mock_lock_Bru   ry   config_Br   r   s                  @@r   test_leader_election'LeaderElectionTest.test_leader_election>   s   	;	8	9 'v/?+Wbq|  C  D&'#	:	9 "((k#89_s;OQ	;	8	; 'v/?+Wbq|  C  D&'#	:	9 "((k#89_s;OQ %0$=$=!	 = =h G K K MNTTV 	 = =h G K K MNTTV

1,1	2 	.0	1r   c           
      Z  ^	^
 / m	/ m
U	U
4S jnU	4S jnU	4S jnU	4S jn[        SSS[        XX45      nSUl        U
4S jnU
4S	 jn[        R                  " US
SSUUS9n[
        R                  " U5      R                  5         U R                  T	/ SQ5        U R                  T
/ SQ5        g )Nc                  J   > T R                  S5        TR                  S5        g r   r   r   s   r   r   NLeaderElectionTest.test_Leader_election_with_renew_deadline.<locals>.on_create   r   r   c                  (   > T R                  S5        g r   r   r   s   r   r   NLeaderElectionTest.test_Leader_election_with_renew_deadline.<locals>.on_update   r    r   c                  (   > T R                  S5        g r"   r   r   s   r   r#   NLeaderElectionTest.test_Leader_election_with_renew_deadline.<locals>.on_change   r    r   c                  (   > T R                  S5        g )Ntry update recordr   r   s   r   on_try_updateRLeaderElectionTest.test_Leader_election_with_renew_deadline.<locals>.on_try_update   rY   r   r%   r&   r[   c                  (   > T R                  S5        g r(   r   r*   s   r   r+   WLeaderElectionTest.test_Leader_election_with_renew_deadline.<locals>.on_started_leading   r-   r   c                  (   > T R                  S5        g r/   r   r*   s   r   r1   WLeaderElectionTest.test_Leader_election_with_renew_deadline.<locals>.on_stopped_leading   r3   r   r4   r5   r6   r7   )r   r   r   r   r   r   r   r>   )	r?   r@   r}   r   rA   r   rB   rC   rD   )rE   r   r   r#   r   rF   r+   r1   rG   r   r   s            @@r   (test_Leader_election_with_renew_deadline;LeaderElectionTest.test_Leader_election_with_renew_deadline   s    	8	5	5	9 %V-=v{T]js  D	$%	!	7	6  &&Ic67c]o9KM
 	%%f-113,2	3 	.0cdr   c                    U R                  U5        U R                  U5        U R                  [        U5      [        U5      5        [        [        U5      5       H-  nU R                  X   X#   SR	                  X2U   X   5      S9  M/     g )Nz*Not equal at index {}, expected {}, got {})msg)assertIsNotNoneassertEquallenrangeformat)rE   historyexpectedidxs       r   rD   !LeaderElectionTest.assert_history   s    X&W%XG5W&CW\8="N"U"UVYdg[hV]Vb#d  e 'r    N)	__name__
__module____qualname____firstlineno__rH   r   r   rD   __static_attributes__r   r   r   r	   r	      s"    eBK1\+eZer   r	   c                   0    \ rS rSrSS jrS rS rS rSrg)	r?      Nc	                     / U l         SU l        SU l        Xl        X l        [        U5      U l        X@l        XPl        X`l	        Xpl
        Xl        g )Nr   rr   )r~   renew_countr}   name	namespacestridentityr8   r   r   r#   r   )	rE   r   r   r   shared_lockr   r   r#   r   s	            r   __init__MockResourceLock.__init__   sI     	"H	"""*r   c                 t   U R                   R                  5          U R                  (       a+  SU R                  S   4U R                   R                  5         $ [        R
                  " SS05      [        l        S[        4U R                   R                  5         $ ! U R                   R                  5         f = f)NTr   codei  F)r8   acquirer~   releasejsondumpsr   body)rE   r   r   s      r   getMockResourceLock.get   s    			 !!T//22
 II !%

FC= 9L,&IIDIIs   !B (B B7c                    U R                   R                  5          [        U R                  5      S:X  a   U R                   R	                  5         gU R                  R                  U5        U R                  5         U =R                  S-  sl         U R                   R	                  5         g! U R                   R	                  5         f = f)Nr   FT)r8   r   r   r~   r   r   r   r   )rE   r   r   election_records       r   createMockResourceLock.create   s    			 4%%&!+ II %%o6NN!IIDIIs   B- A B- -C	c                 4   U R                   R                  5          U R                  (       a  U R                  5         U R                  U R                  :  a   U R                   R                  5         gU R                  S   nX0R                  S'   U R                  5         UR                  UR                  :w  a  U R                  5         U =R                  S-  sl         U R                   R                  5         g! U R                   R                  5         f = f)NFr   r   T)
r8   r   r   r   r}   r   r~   r   holder_identityr#   )rE   r   r   updated_record
old_records        r   updateMockResourceLock.update   s    			 !!""$4#7#77 II ++A.J$2q!NN))^-K-KK !IIDIIs   ;C; 3A,C; ;D)r   r~   r8   r   r   r#   r   r   r   r   r}   )NNNN)	r   r   r   r   r   r   r   r   r   r   r   r   r?   r?      s    +	 
  r   r?   __main__) r   leaderelectionrecordr   kubernetes.client.restr   r   unittestr   r   r   pytestRLockr@   TestCaser	   r?   r   mainr   r   r   <module>r      sh      6 /      ooqe** qeh:  : z zMMO r   