Ë
    dQêjy/  ã                   óÂ   — d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ  G d„ d	e«      Z G d
„ de«      Zedk(  r ej$                  «        yy)é    N)ÚCallable)ÚIsolatedAsyncioTestCase©ÚApiException)ÚelectionconfigÚleaderelection)ÚLeaderElectionRecord)ÚBaseLockc                   ó.   — e Zd Zdd„Zdd„Z	 dd„Zdd„Zy)ÚLeaderElectionTestNc           
   ƒ   óŒ  ‡‡	K  — g Šg Š	ˆˆ	fd„}ˆfd„}ˆfd„}t        dddt        j                  «       |||d «      }dˆ	fd„}dˆ	fd„}t        j                  |dd	d
 |«        |«       ¬«      }t        j                  |«      j                  «       ƒ d {  –—†  | j                  ‰g d¢«       | j                  ‰	g d¢«       y 7 Œ-­w)Nc                  óJ   •— ‰ j                  d«       ‰j                  d«       y ©Núcreate recordúget leadership©Úappend©Úelection_historyÚleadership_historys   €€úv/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/kubernetes/aio/leaderelection/leaderelection_test.pyÚ	on_createzALeaderElectionTest.test_simple_leader_election.<locals>.on_create#   ó    ø€ Ø×#Ñ# OÔ4Ø×%Ñ%Ð&6Õ7ó    c                  ó(   •— ‰ j                  d«       y ©Núupdate recordr   ©r   s   €r   Ú	on_updatezALeaderElectionTest.test_simple_leader_election.<locals>.on_update'   ó   ø€ Ø×#Ñ# OÕ4r   c                  ó(   •— ‰ j                  d«       y ©Nzchange recordr   r   s   €r   Ú	on_changezALeaderElectionTest.test_simple_leader_election.<locals>.on_change*   r    r   ÚmockÚmock_namespacec               “   ó0   •K  — ‰ j                  d«       y ­w©Nústart leadingr   ©r   s   €r   Úon_started_leadingzJLeaderElectionTest.test_simple_leader_election.<locals>.on_started_leading8   ó   øè ø€ Ø×%Ñ% oÕ6ùó   ƒc               “   ó0   •K  — ‰ j                  d«       y ­w©Nústop leadingr   r)   s   €r   Úon_stopped_leadingzJLeaderElectionTest.test_simple_leader_election.<locals>.on_stopped_leading;   ó   øè ø€ Ø×%Ñ% nÕ5ùr,   ç      @é   ç      ø?©ÚlockÚlease_durationÚrenew_deadlineÚretry_periodÚonstarted_leadingÚonstopped_leading)r   r   r   r   ©r   r(   r/   ©ÚreturnN)	ÚMockResourceLockÚasyncioÚLockr   ÚConfigr   ÚLeaderElectionÚrunÚassert_history)
Úselfr   r   r#   Ú	mock_lockr*   r0   Úconfigr   r   s
           @@r   Útest_simple_leader_electionz.LeaderElectionTest.test_simple_leader_election   sÎ   ùè ø€ ØÐØÐõ	8ô	5ô	5ô %ØØØÜ�L‰L‹NØØØØó	
ˆ	õ	7õ	6ô  ×&Ñ&ØØØØÙ0Ó2Ù0Ó2ô
ˆô ×+Ñ+¨FÓ3×7Ñ7Ó9×9Ð9à×ÑØÚPô	
ð 	×ÑØÒ Sõ	
ð 	:ús   „BCÂCÂ.Cc           
   ƒ   ó*  ‡‡K  — g Šg Šˆˆfd„}ˆfd„}ˆfd„}t        j                  «       }t        ddd||||d «      }d|_        ˆfd„}ˆfd	„}t	        j
                  |d
dd |«        |«       ¬«      }ˆˆfd„}	ˆfd„}
ˆfd„}t        ddd||	|
|d «      }d|_        ˆfd„}ˆfd„}t	        j
                  |d
dd |«        |«       ¬«      }|j                  |_        t        j                  t        j                  |«      j                  «       «      }t        j                  t        j                  |«      j                  «       «      }t        j                  ||«      ƒ d {  –—†  | j                  ‰g d¢«       | j                  ‰g d¢«       y 7 Œ-­w)Nc                  óJ   •— ‰ j                  d«       ‰j                  d«       y )NúA creates recordúA gets leadershipr   r   s   €€r   Úon_create_Az<LeaderElectionTest.test_leader_election.<locals>.on_create_AW   ó!   ø€ Ø×#Ñ#Ð$6Ô7Ø×%Ñ%Ð&9Õ:r   c                  ó(   •— ‰ j                  d«       y )NúA updates recordr   r   s   €r   Úon_update_Az<LeaderElectionTest.test_leader_election.<locals>.on_update_A[   ó   ø€ Ø×#Ñ#Ð$6Õ7r   c                  ó(   •— ‰ j                  d«       y )NrM   r   r   s   €r   Úon_change_Az<LeaderElectionTest.test_leader_election.<locals>.on_change_A^   ó   ø€ Ø×#Ñ#Ð$7Õ8r   r$   r%   ÚMockAé   c               “   ó0   •K  — ‰ j                  d«       y ­w)NúA starts leadingr   r)   s   €r   Úon_started_leading_AzELeaderElectionTest.test_leader_election.<locals>.on_started_leading_Ao   ó   øè ø€ Ø×%Ñ%Ð&8Õ9ùr,   c               “   ó0   •K  — ‰ j                  d«       y ­w)NúA stops leadingr   r)   s   €r   Úon_stopped_leading_AzELeaderElectionTest.test_leader_election.<locals>.on_stopped_leading_Ar   ó   øè ø€ Ø×%Ñ%Ð&7Õ8ùr,   r2   r3   r4   r5   c                  óJ   •— ‰ j                  d«       ‰j                  d«       y )NzB creates recordúB gets leadershipr   r   s   €€r   Úon_create_Bz<LeaderElectionTest.test_leader_election.<locals>.on_create_B~   rO   r   c                  ó(   •— ‰ j                  d«       y )NúB updates recordr   r   s   €r   Úon_update_Bz<LeaderElectionTest.test_leader_election.<locals>.on_update_B‚   rS   r   c                  ó(   •— ‰ j                  d«       y )Nrb   r   r)   s   €r   Úon_change_Bz<LeaderElectionTest.test_leader_election.<locals>.on_change_B…   s   ø€ Ø×%Ñ%Ð&9Õ:r   ÚMockBé   c               “   ó0   •K  — ‰ j                  d«       y ­w)NúB starts leadingr   r)   s   €r   Úon_started_leading_BzELeaderElectionTest.test_leader_election.<locals>.on_started_leading_B”   r\   r,   c               “   ó0   •K  — ‰ j                  d«       y ­w)NúB stops leadingr   r)   s   €r   Úon_stopped_leading_BzELeaderElectionTest.test_leader_election.<locals>.on_stopped_leading_B—   r`   r,   )rL   rQ   rQ   re   re   re   re   )rM   rZ   r^   rb   rl   ro   )r@   rA   r?   Úrenew_count_maxr   rB   Úleader_recordÚcreate_taskr   rC   rD   ÚgatherrE   )rF   rN   rR   rU   r6   Úmock_lock_Ar[   r_   Úconfig_Arc   rf   rh   Úmock_lock_Brm   rp   Úconfig_BÚconfig_A_electionÚconfig_B_electionr   r   s                     @@r   Útest_leader_electionz'LeaderElectionTest.test_leader_electionS   s®  ùè ø€ ØÐØÐõ	;ô	8ô	9ô �|‰|‹~ˆä&ØØØØØØØØó	
ˆð '(ˆÔ#ô	:ô	9ô "×(Ñ(ØØØØÙ2Ó4Ù2Ó4ô
ˆõ	;ô	8ô	;ô 'ØØØØØØØØó	
ˆð '(ˆÔ#ô	:ô	9ô "×(Ñ(ØØØØÙ2Ó4Ù2Ó4ô
ˆð %0×$=Ñ$=ˆÔ!ä#×/Ñ/Ü×)Ñ)¨(Ó3×7Ñ7Ó9ó
Ðô $×/Ñ/Ü×)Ñ)¨(Ó3×7Ñ7Ó9ó
Ðô �n‰nÐ.Ð0AÓB×BÐBà×ÑØòô	
ð 	×ÑØòõ
	
ð 	Cús   „EFÅ#FÅ$.Fc           
   ƒ   ó   ‡	‡
K  — g Š	g Š
ˆ	ˆ
fd„}ˆ	fd„}ˆ	fd„}ˆ	fd„}t        dddt        j                  «       ||||«      }d|_        ˆ
fd„}ˆ
fd	„}t	        j
                  |d
dd |«        |«       ¬«      }t        j                  |«      j                  «       ƒ d {  –—†  | j                  ‰	g d¢«       | j                  ‰
g d¢«       y 7 Œ-­w)Nc                  óJ   •— ‰ j                  d«       ‰j                  d«       y r   r   r   s   €€r   r   zNLeaderElectionTest.test_leader_election_with_renew_deadline.<locals>.on_create×   r   r   c                  ó(   •— ‰ j                  d«       y r   r   r   s   €r   r   zNLeaderElectionTest.test_leader_election_with_renew_deadline.<locals>.on_updateÛ   r    r   c                  ó(   •— ‰ j                  d«       y r"   r   r   s   €r   r#   zNLeaderElectionTest.test_leader_election_with_renew_deadline.<locals>.on_changeÞ   r    r   c                  ó(   •— ‰ j                  d«       y )Nútry update recordr   r   s   €r   Úon_try_updatezRLeaderElectionTest.test_leader_election_with_renew_deadline.<locals>.on_try_updateá   rV   r   r$   r%   rX   c               “   ó0   •K  — ‰ j                  d«       y ­wr'   r   r)   s   €r   r*   zWLeaderElectionTest.test_leader_election_with_renew_deadline.<locals>.on_started_leadingð   r+   r,   c               “   ó0   •K  — ‰ j                  d«       y ­wr.   r   r)   s   €r   r0   zWLeaderElectionTest.test_leader_election_with_renew_deadline.<locals>.on_stopped_leadingó   r1   r,   r2   r3   r4   r5   )r   r�   r   r�   r   r�   r�   r<   )
r?   r@   rA   rq   r   rB   r   rC   rD   rE   )rF   r   r   r#   r‚   rG   r*   r0   rH   r   r   s            @@r   Ú(test_leader_election_with_renew_deadlinez;LeaderElectionTest.test_leader_election_with_renew_deadlineÓ   sß   ùè ø€ ØÐØÐõ	8ô	5ô	5ô	9ô %ØØØÜ�L‰L‹NØØØØó	
ˆ	ð %&ˆ	Ô!ô	7ô	6ô  ×&Ñ&ØØØØÙ0Ó2Ù0Ó2ô
ˆô ×+Ñ+¨FÓ3×7Ñ7Ó9×9Ð9à×ÑØòô	
ð 	×ÑØÒ Sõ	
ð 	:ús   „BCÂCÂ.Cc                 ó  — | j                  |«       | j                  |«       | j                  t        |«      t        |«      «       t        t        |«      «      D ]+  }| j                  ||   ||   d|› d||   › d||   › �¬«       Œ- y )NzNot equal at index z, expected z, got )Úmsg)ÚassertIsNotNoneÚassertEqualÚlenÚrange)rF   ÚhistoryÚexpectedÚidxs       r   rE   z!LeaderElectionTest.assert_history  sŽ   € Ø×Ñ˜XÔ&Ø×Ñ˜WÔ%Ø×Ñœ˜X›¬¨G«Ô5äœ˜W›Ó&ò 	ˆCØ×ÑØ˜‘Ø˜‘Ø)¨#¨¨k¸(À3¹-¸ÈÈwÐWZÉ|ÈnÐ]ð õ ñ	r   r=   )Ú__name__Ú
__module__Ú__qualname__rI   r{   r…   rE   © r   r   r   r      s   „ ó2
óhq
ðfó?
ôB
r   r   c                   óÆ   — e Zd Zdedededej
                  dedededed	z  d
d	fd„Zdeded
ee	e
f   ee	ef   z  ee	d	f   z  fd„Zdedede
d
e	fd„Zdedede
d
e	fd„Zd„ Zy	)r?   ÚnameÚ	namespaceÚidentityÚshared_lockr   r   r#   r‚   Nr>   c	                 ó°   — g | _         d| _        d| _        || _        || _        t        |«      | _        || _        || _        || _	        || _
        || _        y )Nr   rj   )rr   Úrenew_countrq   r”   r•   Ústrr–   r6   r   r   r#   r‚   )	rF   r”   r•   r–   r—   r   r   r#   r‚   s	            r   Ú__init__zMockResourceLock.__init__"  sY   € ð :<ˆÔØˆÔØ ˆÔØˆŒ	Ø"ˆŒÜ˜H›ˆŒØˆŒ	à"ˆŒØ"ˆŒØ"ˆŒØ*ˆÕr   c              ƒ   ó¤  K  — | j                   j                  «       ƒ d {  –—†  	 | j                  r+d| j                  d   f| j                   j                  «        S t	        «       }t        j                  ddi«      j                  «       |_        d|f| j                   j                  «        S 7 ŒŽ# | j                   j                  «        w xY w­w)NTr   Úcodei”  F)	r6   Úacquirerr   Úreleaser   ÚjsonÚdumpsÚencodeÚbody)rF   r”   r•   Úexs       r   ÚgetzMockResourceLock.get;  s¦   è ø€ ð �i‰i×ÑÓ!×!Ð!ð	 Ø×!Ò!Ø˜T×/Ñ/°Ñ2Ð2ð �I‰I×ÑÕô	 “ˆBÜ—j‘j &¨# Ó/×6Ñ6Ó8ˆBŒGØ˜"�9à�I‰I×ÑÕð 	"ùð �I‰I×ÑÕüs2   ‚C B/¡C¦B1 ÁCÁ7B1 ÂCÂ1CÃCÚelection_recordc              ƒ   ó²  K  — | j                   j                  «       ƒ d {  –—†  	 t        | j                  «      dk(  r	 | j                   j	                  «        y| j                  j                  |«       | j                  «        | xj                  dz  c_        	 | j                   j	                  «        y7 Œ•# | j                   j	                  «        w xY w­w)Né   FT)r6   rž   rŠ   rr   rŸ   r   r   r™   ©rF   r”   r•   r¦   s       r   ÚcreatezMockResourceLock.createI  s§   è ø€ ð �i‰i×ÑÓ!×!Ð!ð	 Ü�4×%Ñ%Ó&¨!Ò+Øð �I‰I×ÑÕð ×Ñ×%Ñ% oÔ6Ø�N‰NÔØ×Ò Ñ!ÕØà�I‰I×ÑÕð 	"ùð �I‰I×ÑÕüs2   ‚C B6¡C¦B8 ¿CÁA B8 ÂCÂ8CÃCÚupdated_recordc              ƒ   ó‚  K  — | j                   j                  «       ƒ d {  –—†  	 | j                  r| j                  «        | j                  | j                  k\  r	 | j                   j                  «        y| j                  d   }|| j                  d<   | j                  «        |j                  |j                  k7  r-t        j                  d«      ƒ d {  –—†  | j                  «        | xj                  dz  c_        	 | j                   j                  «        y7 Œû7 ŒG# | j                   j                  «        w xY w­w)NFr   r3   r¨   T)r6   rž   r‚   r™   rq   rŸ   rr   r   Úholder_identityr@   Úsleepr#   )rF   r”   r•   r«   Ú
old_records        r   ÚupdatezMockResourceLock.updateW  sÿ   è ø€ ð �i‰i×ÑÓ!×!Ð!ð	 Ø×!Ò!Ø×"Ñ"Ô$Ø×Ñ 4×#7Ñ#7Ò7Øð �I‰I×ÑÕð ×+Ñ+¨AÑ.ˆJØ$2ˆD×Ñ˜qÑ!à�N‰NÔà×)Ñ)¨^×-KÑ-KÒKÜ—m‘m AÓ&×&Ð&Ø—‘Ô à×Ò Ñ!ÕØà�I‰I×ÑÕð' 	"øð 'ùð �I‰I×ÑÕüsE   ‚D? D¡D?¦5D  ÁD?Á7AD  ÃDÃ)D  ÄD?ÄD  Ä D<Ä<D?c                 óî   —  G d„ d«      }t        j                   |«       dddd„ d„ ¬«      }t        j                  |«      }t	        j
                  |j                  «       «      }| j                  |«       y	)
zDA proxy answering with an HTML error page must not kill the elector.c                   ó   — e Zd Zd„ Zd„ Zd„ Zy)úTMockResourceLock.test_acquire_survives_non_json_error_body.<locals>.GatewayErrorLockc                 ó.   — d| _         d| _        d| _        y )Nr6   ÚnsÚ	candidate)r”   r•   r–   )rF   s    r   r›   z]MockResourceLock.test_acquire_survives_non_json_error_body.<locals>.GatewayErrorLock.__init__t  s   € Ø"�”	Ø!%�”Ø +�•r   c              “   ó*   K  — dt        ddd¬«      fS ­w)NFiö  zBad Gatewayz)<html><body>502 Bad Gateway</body></html>)ÚstatusÚreasonr£   r   )rF   r”   r•   s      r   r¥   zXMockResourceLock.test_acquire_survives_non_json_error_body.<locals>.GatewayErrorLock.gety  s#   è ø€ ØœlØØ(ØDôð ð ùs   ‚c              “   ó   K  — y­w)NFr’   r©   s       r   rª   z[MockResourceLock.test_acquire_survives_non_json_error_body.<locals>.GatewayErrorLock.create€  s	   è ø€ Øùs   ‚N)r�   r�   r‘   r›   r¥   rª   r’   r   r   ÚGatewayErrorLockr³   s  s   „ ò,ò
ór   r»   rj   rX   r¨   c                   ó   — y ©Nr’   r’   r   r   ú<lambda>zLMockResourceLock.test_acquire_survives_non_json_error_body.<locals>.<lambda>ˆ  ó   � r   c                   ó   — y r½   r’   r’   r   r   r¾   zLMockResourceLock.test_acquire_survives_non_json_error_body.<locals>.<lambda>‰  r¿   r   r5   N)r   rB   r   rC   r@   rD   Útry_acquire_or_renewÚassertFalse)rF   r»   rH   ÚelectorÚresults        r   Ú)test_acquire_survives_non_json_error_bodyz:MockResourceLock.test_acquire_survives_non_json_error_bodyp  sj   € ÷	ñ 	ô   ×&Ñ&Ù!Ó#ØØØÙ*Ù*ô
ˆô !×/Ñ/°Ó7ˆÜ—‘˜W×9Ñ9Ó;Ó<ˆØ×Ñ˜Õ r   )r�   r�   r‘   rš   r@   rA   r   r›   ÚtupleÚboolr	   Ú	Exceptionr¥   rª   r°   rÅ   r’   r   r   r?   r?   !  sû   „ ð+àð+ð ð+ð ð	+ð
 —\‘\ð+ð ð+ð ð+ð ð+ð   $‘ð+ð 
ó+ð2 Øð Ø$'ð à	ˆtÐ)Ð)Ñ	*¨U°4¸°?Ñ-CÑ	CÀeÈDÐRVÈJÑFWÑ	Wó ð Øð Ø$'ð Ø:Nð à	ó ð Øð Ø$'ð Ø9Mð à	ó ó2!r   r?   Ú__main__)r@   r    ÚunittestÚcollections.abcr   r   Úkubernetes.aio.client.restr   Úkubernetes.aio.leaderelectionr   r   Ú2kubernetes.aio.leaderelection.leaderelectionrecordr	   Ú3kubernetes.aio.leaderelection.resourcelock.baselockr
   r   r?   r�   Úmainr’   r   r   ú<module>rÑ      s`   ðó  Û Û Ý $Ý ,å 3ß Hõõ Iô@Ð0ô @ôFm!�xô m!ð` ˆzÒØ€H‡M�M…Oð r   