§
    Štj:+  ã                   óö   — d dl mZ d dlmZ ddlmZ d dl mZ ddlZddlZddl	Z	ddl
Z
ddlZddlmZ  ej        ¦   «         Z G d„ d	ej        ¦  «        Z G d
„ d¦  «        Zedk    r ej        ¦   «          dS dS )é   )Úleaderelection)ÚLeaderElectionRecordé    )ÚApiException)ÚelectionconfigN)Úpatchc                   ó.   — e Zd Zd„ Zd„ Z	 d„ Zd„ Zd„ ZdS )ÚLeaderElectionTestc           
      ó\  ‡‡	— g Šg Š	ˆˆ	fd„}ˆfd„}ˆfd„}t          dddt          |||d ¦  «        }ˆ	fd„}ˆ	fd„}t          j        |dd	d
||¬¦  «        }t	          j        |¦  «                             ¦   «          |                      ‰g d¢¦  «         |                      ‰	g d¢¦  «         d S )Nc                  ó\   •— ‰                       d¦  «         ‰                      d¦  «         d S ©Núcreate recordúget leadership©Úappend©Úelection_historyÚleadership_historys   €€úk/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/kubernetes/leaderelection/leaderelection_test.pyÚ	on_createzALeaderElectionTest.test_simple_leader_election.<locals>.on_create"   ó2   ø€ Ø×#Ò# OÑ4Ô4Ð4Ø×%Ò%Ð&6Ñ7Ô7Ð7Ð7Ð7ó    c                  ó2   •— ‰                       d¦  «         d S ©Núupdate recordr   ©r   s   €r   Ú	on_updatezALeaderElectionTest.test_simple_leader_election.<locals>.on_update&   ó   ø€ Ø×#Ò# OÑ4Ô4Ð4Ð4Ð4r   c                  ó2   •— ‰                       d¦  «         d S ©Nzchange recordr   r   s   €r   Ú	on_changezALeaderElectionTest.test_simple_leader_election.<locals>.on_change)   r   r   ÚmockÚmock_namespacec                  ó2   •— ‰                       d¦  «         d S ©Nústart leadingr   ©r   s   €r   Úon_started_leadingzJLeaderElectionTest.test_simple_leader_election.<locals>.on_started_leading.   ó   ø€ Ø×%Ò% oÑ6Ô6Ð6Ð6Ð6r   c                  ó2   •— ‰                       d¦  «         d S ©Nústop leadingr   r'   s   €r   Úon_stopped_leadingzJLeaderElectionTest.test_simple_leader_election.<locals>.on_stopped_leading1   ó   ø€ Ø×%Ò% nÑ5Ô5Ð5Ð5Ð5r   ç      @é   ç      ø?©ÚlockÚlease_durationÚrenew_deadlineÚretry_periodÚonstarted_leadingÚonstopped_leading)r   r   r   r   ©r   r&   r,   )ÚMockResourceLockÚthread_lockr   ÚConfigr   ÚLeaderElectionÚrunÚassert_history)
Úselfr   r   r!   Ú	mock_lockr(   r-   Úconfigr   r   s
           @@r   Útest_simple_leader_electionz.LeaderElectionTest.test_simple_leader_election   s@  øø€ ØÐØÐð	8ð 	8ð 	8ð 	8ð 	8ð 	8ð	5ð 	5ð 	5ð 	5ð 	5ð	5ð 	5ð 	5ð 	5ð 	5õ % VÐ-=¸vÅ{ÐT]Ð_hÐjsÐuyÑzÔzˆ	ð	7ð 	7ð 	7ð 	7ð 	7ð	6ð 	6ð 	6ð 	6ð 	6õ  Ô&¨IÀcØ67ÀcÐ]oØ9KðMñ Mô Mˆõ
 	Ô% fÑ-Ô-×1Ò1Ñ3Ô3Ð3à×ÒÐ,Ð.rÐ.rÐ.rÑsÔsÐsØ×ÒÐ.Ð0cÐ0cÐ0cÑdÔdÐdÐdÐdr   c           
      óN  ‡‡— g Šg Šˆˆfd„}ˆfd„}ˆfd„}t          dddt          |||d ¦  «        }d|_        ˆfd„}ˆfd	„}t          j        |d
dd||¬¦  «        }ˆˆfd„}ˆfd„}	ˆfd„}
t          dddt          ||	|
d ¦  «        }d|_        ˆfd„}ˆfd„}t          j        |d
dd||¬¦  «        }|j        |_        dt          _        t          j        t          j
        |¦  «                             ¦   «         ¬¦  «                             ¦   «          t          j        t          j
        |¦  «                             ¦   «         ¬¦  «                             ¦   «          t          j        d¦  «         |                      ‰g d¢¦  «         |                      ‰g d¢¦  «         d S )Nc                  ó\   •— ‰                       d¦  «         ‰                      d¦  «         d S )NúA creates recordúA gets leadershipr   r   s   €€r   Úon_create_Az<LeaderElectionTest.test_leader_election.<locals>.on_create_AC   ó3   ø€ Ø×#Ò#Ð$6Ñ7Ô7Ð7Ø×%Ò%Ð&9Ñ:Ô:Ð:Ð:Ð:r   c                  ó2   •— ‰                       d¦  «         d S )NúA updates recordr   r   s   €r   Úon_update_Az<LeaderElectionTest.test_leader_election.<locals>.on_update_AG   ó   ø€ Ø×#Ò#Ð$6Ñ7Ô7Ð7Ð7Ð7r   c                  ó2   •— ‰                       d¦  «         d S )NrG   r   r   s   €r   Úon_change_Az<LeaderElectionTest.test_leader_election.<locals>.on_change_AJ   ó   ø€ Ø×#Ò#Ð$7Ñ8Ô8Ð8Ð8Ð8r   r"   r#   ÚMockAé   c                  ó2   •— ‰                       d¦  «         d S )NúA starts leadingr   r'   s   €r   Úon_started_leading_AzELeaderElectionTest.test_leader_election.<locals>.on_started_leading_AP   ó   ø€ Ø×%Ò%Ð&8Ñ9Ô9Ð9Ð9Ð9r   c                  ó2   •— ‰                       d¦  «         d S )NúA stops leadingr   r'   s   €r   Úon_stopped_leading_AzELeaderElectionTest.test_leader_election.<locals>.on_stopped_leading_AS   ó   ø€ Ø×%Ò%Ð&7Ñ8Ô8Ð8Ð8Ð8r   r/   r0   r1   r2   c                  ó\   •— ‰                       d¦  «         ‰                      d¦  «         d S )NzB creates recordúB gets leadershipr   r   s   €€r   Úon_create_Bz<LeaderElectionTest.test_leader_election.<locals>.on_create_BZ   rI   r   c                  ó2   •— ‰                       d¦  «         d S )NúB updates recordr   r   s   €r   Úon_update_Bz<LeaderElectionTest.test_leader_election.<locals>.on_update_B^   rM   r   c                  ó2   •— ‰                       d¦  «         d S )Nr\   r   r'   s   €r   Úon_change_Bz<LeaderElectionTest.test_leader_election.<locals>.on_change_Ba   s   ø€ Ø×%Ò%Ð&9Ñ:Ô:Ð:Ð:Ð:r   ÚMockBé   c                  ó2   •— ‰                       d¦  «         d S )NúB starts leadingr   r'   s   €r   Úon_started_leading_BzELeaderElectionTest.test_leader_election.<locals>.on_started_leading_Bg   rV   r   c                  ó2   •— ‰                       d¦  «         d S )NúB stops leadingr   r'   s   €r   Úon_stopped_leading_BzELeaderElectionTest.test_leader_election.<locals>.on_stopped_leading_Bj   rZ   r   T)Útargeté   )rF   rK   rK   r_   r_   r_   r_   )rG   rT   rX   r\   rf   ri   )r:   r;   Úrenew_count_maxr   r<   Úleader_recordÚ	threadingÚdaemonÚThreadr   r=   r>   ÚstartÚtimeÚsleepr?   )r@   rH   rL   rO   Úmock_lock_ArU   rY   Úconfig_Ar]   r`   rb   Úmock_lock_Brg   rj   Úconfig_Br   r   s                  @@r   Útest_leader_electionz'LeaderElectionTest.test_leader_election?   sÄ  øø€ ØÐØÐð	;ð 	;ð 	;ð 	;ð 	;ð 	;ð	8ð 	8ð 	8ð 	8ð 	8ð	9ð 	9ð 	9ð 	9ð 	9õ ' vÐ/?ÀÍ+ÐWbÐdoÐq|ð  Cñ  Dô  DˆØ&'ˆÔ#ð	:ð 	:ð 	:ð 	:ð 	:ð	9ð 	9ð 	9ð 	9ð 	9õ "Ô(¨kÈ#Ø89ÈÐ_sØ;OðQñ Qô Qˆð	;ð 	;ð 	;ð 	;ð 	;ð 	;ð	8ð 	8ð 	8ð 	8ð 	8ð	;ð 	;ð 	;ð 	;ð 	;õ ' vÐ/?ÀÍ+ÐWbÐdoÐq|ð  Cñ  Dô  DˆØ&'ˆÔ#ð	:ð 	:ð 	:ð 	:ð 	:ð	9ð 	9ð 	9ð 	9ð 	9õ "Ô(¨kÈ#Ø89ÈÐ_sØ;OðQñ Qô Qˆð %0Ô$=ˆÔ!à�	ÔåÔ¥Ô =¸hÑ GÔ G× KÒ KÑ MÔ MÐNÑNÔN×TÒTÑVÔVÐVõ 	Ô¥Ô =¸hÑ GÔ G× KÒ KÑ MÔ MÐNÑNÔN×TÒTÑVÔVÐVåŒ
�1‰Œˆà×ÒÐ,ð1ð 1ð 1ñ	2ô 	2ð 	2ð 	×ÒÐ.ð0ð 0ð 0ñ	1ô 	1ð 	1ð 	1ð 	1r   c           
      ót  ‡	‡
— g Š	g Š
ˆ	ˆ
fd„}ˆ	fd„}ˆ	fd„}ˆ	fd„}t          dddt          ||||¦  «        }d|_        ˆ
fd„}ˆ
fd	„}t          j        |d
dd||¬¦  «        }t          j        |¦  «                             ¦   «          |                      ‰	g d¢¦  «         |                      ‰
g d¢¦  «         d S )Nc                  ó\   •— ‰                       d¦  «         ‰                      d¦  «         d S r   r   r   s   €€r   r   zNLeaderElectionTest.test_Leader_election_with_renew_deadline.<locals>.on_create�   r   r   c                  ó2   •— ‰                       d¦  «         d S r   r   r   s   €r   r   zNLeaderElectionTest.test_Leader_election_with_renew_deadline.<locals>.on_update¡   r   r   c                  ó2   •— ‰                       d¦  «         d S r    r   r   s   €r   r!   zNLeaderElectionTest.test_Leader_election_with_renew_deadline.<locals>.on_change¤   r   r   c                  ó2   •— ‰                       d¦  «         d S )Nútry update recordr   r   s   €r   Úon_try_updatezRLeaderElectionTest.test_Leader_election_with_renew_deadline.<locals>.on_try_update§   rP   r   r"   r#   rR   c                  ó2   •— ‰                       d¦  «         d S r%   r   r'   s   €r   r(   zWLeaderElectionTest.test_Leader_election_with_renew_deadline.<locals>.on_started_leading­   r)   r   c                  ó2   •— ‰                       d¦  «         d S r+   r   r'   s   €r   r-   zWLeaderElectionTest.test_Leader_election_with_renew_deadline.<locals>.on_stopped_leading°   r.   r   r/   r0   r1   r2   )r   r   r   r   r   r   r   r9   )	r:   r;   rm   r   r<   r   r=   r>   r?   )r@   r   r   r!   r€   rA   r(   r-   rB   r   r   s            @@r   Ú(test_Leader_election_with_renew_deadlinez;LeaderElectionTest.test_Leader_election_with_renew_deadline™   sy  øø€ ØÐØÐð	8ð 	8ð 	8ð 	8ð 	8ð 	8ð	5ð 	5ð 	5ð 	5ð 	5ð	5ð 	5ð 	5ð 	5ð 	5ð	9ð 	9ð 	9ð 	9ð 	9õ % VÐ-=¸vÅ{ÐT]Ð_hÐjsð  vCñ  Dô  Dˆ	Ø$%ˆ	Ô!ð	7ð 	7ð 	7ð 	7ð 	7ð	6ð 	6ð 	6ð 	6ð 	6õ  Ô&¨IÀcØ67ÀcÐ]oØ9KðMñ Mô Mˆõ
 	Ô% fÑ-Ô-×1Ò1Ñ3Ô3Ð3à×ÒÐ,ð2ð 2ð 2ñ	3ô 	3ð 	3ð 	×ÒÐ.Ð0cÐ0cÐ0cÑdÔdÐdÐdÐdr   c           
      óT  ‡‡— i Št           j        Šˆˆfd„}t          j        ¦   «         }t          dddt          d„ d„ d„ d ¦  «        }d|_        t          j        |dd	d|j        d
„ ¬¦  «        }t          j
        t          j         d|¬¦  «        5  t          j        |¦  «                             ¦   «          d d d ¦  «         n# 1 swxY w Y   |                      |                     d¦  «        d¦  «         |                      d‰¦  «         |                      ‰d         ¦  «         d S )Nc                  ó,   •—  ‰| i |¤Ž}|j         ‰d<   |S )Nrp   )rp   )ÚargsÚkwargsÚthreadÚcapturedÚreal_threads      €€r   Úrecord_threadzVLeaderElectionTest.test_onstarted_leading_runs_in_daemon_thread.<locals>.record_threadÊ   s(   ø€ Ø �[ $Ð1¨&Ð1Ð1ˆFØ!'¤ˆH�XÑØˆMr   r"   r#   c                  ó   — d S ©N© rŽ   r   r   ú<lambda>zQLeaderElectionTest.test_onstarted_leading_runs_in_daemon_thread.<locals>.<lambda>Ò   s   € ¨T€ r   c                  ó   — d S r�   rŽ   rŽ   r   r   r�   zQLeaderElectionTest.test_onstarted_leading_runs_in_daemon_thread.<locals>.<lambda>Ò   s   € ¸4€ r   c                  ó   — d S r�   rŽ   rŽ   r   r   r�   zQLeaderElectionTest.test_onstarted_leading_runs_in_daemon_thread.<locals>.<lambda>Ò   s   € È€ r   r   r0   r1   c                  ó   — d S r�   rŽ   rŽ   r   r   r�   zQLeaderElectionTest.test_onstarted_leading_runs_in_daemon_thread.<locals>.<lambda>Ø   s   € À€ r   r2   rq   )Únewz&onstarted_leading callback did not runrp   )ro   rq   ÚEventr:   r;   rm   r   r<   Úsetr   Úobjectr   r=   r>   Ú
assertTrueÚwaitÚassertIn)r@   r‹   ÚstartedrA   rB   r‰   rŠ   s        @@r   Ú,test_onstarted_leading_runs_in_daemon_threadz?LeaderElectionTest.test_onstarted_leading_runs_in_daemon_threadÆ   s|  øø€ ØˆÝÔ&ˆð	ð 	ð 	ð 	ð 	ð 	õ
 ”/Ñ#Ô#ˆå$ VÐ-=¸vÅ{Ø%1 \°<°<ÀÀÈtñUô Uˆ	à$%ˆ	Ô!åÔ&¨IÀaØ69ÈØ9@¼Ø9E¸ðGñ Gô Gˆõ
 Œ\�.Ô2°HÀ-ÐPÑPÔPð 	8ð 	8ÝÔ)¨&Ñ1Ô1×5Ò5Ñ7Ô7Ð7ð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð 	�Š˜Ÿš Q™œÐ)QÑRÔRÐRØ�Š�h Ñ)Ô)Ð)Ø�Š˜ Ô*Ñ+Ô+Ð+Ð+Ð+s   Â'CÃCÃ
Cc                 ó‚  — |                       |¦  «         |                       |¦  «         |                      t          |¦  «        t          |¦  «        ¦  «         t          t          |¦  «        ¦  «        D ]G}|                      ||         ||         d                     |||         ||         ¦  «        ¬¦  «         ŒHd S )Nz*Not equal at index {}, expected {}, got {})Úmsg)ÚassertIsNotNoneÚassertEqualÚlenÚrangeÚformat)r@   ÚhistoryÚexpectedÚidxs       r   r?   z!LeaderElectionTest.assert_historyá   sÓ   € Ø×Ò˜XÑ&Ô&Ð&Ø×Ò˜WÑ%Ô%Ð%Ø×Ò�˜X™œ­¨G©¬Ñ5Ô5Ð5å�˜W™œÑ&Ô&ð 	eð 	eˆCØ×Ò˜W Sœ\¨8°C¬=Ø"N×"UÒ"UÐVYÐ[cÐdgÔ[hØV]Ð^aÔVbñ#dô #dð ñ eô eð eð eð	eð 	er   N)Ú__name__Ú
__module__Ú__qualname__rC   ry   rƒ   r›   r?   rŽ   r   r   r
   r
      su   € € € € € ðeð eð eðBK1ð K1ð K1ð\ð+eð +eð +eðZ,ð ,ð ,ð6eð eð eð eð er   r
   c                   ó(   — e Zd Zdd„Zd„ Zd„ Zd„ ZdS )r:   Nc	                 óº   — g | _         d| _        d| _        || _        || _        t          |¦  «        | _        || _        || _        || _	        || _
        || _        d S )Nr   rd   )rn   Úrenew_countrm   ÚnameÚ	namespaceÚstrÚidentityr3   r   r   r!   r€   )	r@   r¬   r­   r¯   Úshared_lockr   r   r!   r€   s	            r   Ú__init__zMockResourceLock.__init__í   s_   € àˆÔØˆÔØ ˆÔØˆŒ	Ø"ˆŒÝ˜H™œˆŒØˆŒ	à"ˆŒØ"ˆŒØ"ˆŒØ*ˆÔÐÐr   c                 óT  — | j                              ¦   «          	 | j        r(d| j        d         f| j                              ¦   «          S t	          j        ddi¦  «        t          _        dt          f| j                              ¦   «          S # | j                              ¦   «          w xY w)NTr   Úcodei”  F)r3   Úacquirern   ÚreleaseÚjsonÚdumpsr   Úbody)r@   r¬   r­   s      r   ÚgetzMockResourceLock.getü   s    € ØŒ	×ÒÑÔÐð	 ØÔ!ð 3Ø˜TÔ/°Ô2Ð2ð
 ŒI×ÒÑÔÐÐõ !%¤
¨F°C¨=Ñ 9Ô 9�LÔØ�,Ð&àŒI×ÒÑÔÐÐøˆDŒI×ÒÑÔÐÐøøøs   ›B Á
(B ÂB'c                 óŽ  — | j                              ¦   «          	 t          | j        ¦  «        dk    r	 | j                              ¦   «          dS | j                             |¦  «         |                      ¦   «          | xj        dz  c_        	 | j                              ¦   «          dS # | j                              ¦   «          w xY w)Nr   FT)r3   r´   r    rn   rµ   r   r   r«   )r@   r¬   r­   Úelection_records       r   ÚcreatezMockResourceLock.create  sÄ   € ØŒ	×ÒÑÔÐð	 Ý�4Ô%Ñ&Ô&¨!Ò+Ð+Øð ŒI×ÒÑÔÐÐÐð Ô×%Ò% oÑ6Ô6Ð6Ø�NŠNÑÔÐØÐÔ Ñ!ÐÔØàŒI×ÒÑÔÐÐÐøˆDŒI×ÒÑÔÐÐøøøs   ›B) Á>B) Â)Cc                 óö  — | j                              ¦   «          	 | j        r|                      ¦   «          | j        | j        k    r	 | j                              ¦   «          dS | j        d         }|| j        d<   |                      ¦   «          |j        |j        k    r|  	                    ¦   «          | xj        dz  c_        	 | j                              ¦   «          dS # | j                              ¦   «          w xY w)NFr   r   T)
r3   r´   r€   r«   rm   rµ   rn   r   Úholder_identityr!   )r@   r¬   r­   Úupdated_recordÚ
old_records        r   ÚupdatezMockResourceLock.update  s   € ØŒ	×ÒÑÔÐð	 ØÔ!ð %Ø×"Ò"Ñ$Ô$Ð$ØÔ 4Ô#7Ò7Ð7Øð ŒI×ÒÑÔÐÐÐð Ô+¨AÔ.ˆJØ$2ˆDÔ˜qÑ!à�NŠNÑÔÐàÔ)¨^Ô-KÒKÐKØ—’Ñ Ô Ð àÐÔ Ñ!ÐÔØàŒI×ÒÑÔÐÐÐøˆDŒI×ÒÑÔÐÐøøøs   ›+C Á"AC ÃC8)NNNN)r¦   r§   r¨   r±   r¹   r¼   rÁ   rŽ   r   r   r:   r:   ì   sU   € € € € € ð+ð +ð +ð +ð	 ð 	 ð 	 ð
 ð 
 ð 
 ð ð  ð  ð  ð  r   r:   Ú__main__)Ú r   Úleaderelectionrecordr   Úkubernetes.client.restr   r   Úunittestro   r¶   rs   ÚpytestÚunittest.mockr   ÚRLockr;   ÚTestCaser
   r:   r¦   ÚmainrŽ   r   r   ú<module>rÌ      s-  ðð  Ð Ð Ð Ð Ð Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð àˆiŒoÑÔ€ðLeð Leð Leð Leð Le˜Ô*ñ Leô Leð Leð^: ð : ð : ð : ð : ñ : ô : ð : ðz ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   