Ë
    eQêjOj  ã                   óÐ   — d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlZd dl	m
Z
mZ d dlmZmZ d dlmZ ddlmZ  G d	„ d
ej&                  «      Zedk(  r ej,                  «        yy)é    N)ÚSimpleNamespace)ÚAnyÚOptional)ÚMockÚcall)ÚclientÚconfig)ÚApiExceptioné   )ÚWatchc                   ó¦   — 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d„ Zd„ Zd„ Zd„ Zd„ Zed„ «       Zd„ Zd„ Zy)Ú
WatchTestsc                 ó   — d| _         y )Nr   ©Ú	callcount)Úselfs    ú`/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/kubernetes/watch/watch_test.pyÚsetUpzWatchTests.setUp   s	   € àˆ�ó    c                 ó¬  — t        «       }dg|j                  _        t        j                  «       }t        t        |d¬«      ¬«      |j                  _        t        t        «       j                  |j                  d¬«      «      }| j                  d|d   d	   j                  j                  «       |j                  j                  j                  «        y )
Nz<{"type": "ADDED", "object": {"metadata": {"name": "test"}}}
éÈ   )ÚresponseÚstatus©Úreturn_valuer   ©Útimeout_secondsÚtestr   Úobject)r   Ústreamr   r   Ú	CoreV1Apir   Ú
api_clientÚcall_apiÚlistr   Úlist_namespaceÚassertEqualÚmetadataÚnameÚassert_called_once)r   Ú	fake_respÚapiÚeventss       r   Ú'test_generated_api_streams_raw_responsez2WatchTests.test_generated_api_streams_raw_response"   s£   € Ü“Fˆ	àKð)
ˆ	×ÑÔ%ô ×ÑÓ ˆÜ"&Ü(°)ÀCÔHô#
ˆ�‰Ôô ”e“g—n‘n S×%7Ñ%7È�nÓKÓLˆà×Ñ˜ ¨¡¨8Ñ!4×!=Ñ!=×!BÑ!BÔCØ�‰×Ñ×2Ñ2Õ4r   c                 óò   — dt         t        j                     fd„}dt        fd„}| j	                  dt        «       j                  |«      «       | j	                  dt        «       j                  |«      «       y )NÚreturnc                   ó   — y©z:rtype: V1PodListN© r2   r   r   Ú	list_podszSWatchTests.test_typing_annotation_falls_back_to_documented_model.<locals>.list_pods2   ó   � r   c                   ó   — yr1   r2   r2   r   r   Úlist_anyzRWatchTests.test_typing_annotation_falls_back_to_documented_model.<locals>.list_any5   r4   r   ÚV1Pod)r   r   Ú	V1PodListr   r&   r   Úget_return_type)r   r3   r6   s      r   Ú5test_typing_annotation_falls_back_to_documented_modelz@WatchTests.test_typing_annotation_falls_back_to_documented_model1   sa   € ð	$œ8¤F×$4Ñ$4Ñ5ó 	$ð	$œ#ó 	$ð 	×Ñ˜¤%£'×"9Ñ"9¸)Ó"DÔEØ×Ñ˜¤%£'×"9Ñ"9¸(Ó"CÕDr   c                 óx  — t        «       }t        «       |_        t        «       |_        t        g d¢¬«      |_        t        «       }t        |¬«      |_        d|j                  _        t        «       }d}|j                  |j                  «      D ]©  }| j                  d|d   «       | j                  d|z  |d   j                  j                  «       | j                  d	|z  |d   j                  j                  «       | j                  d	|z  |j                  «       |dz  }|d
k(  sŒš|j                  «        Œ« | j                  d
|«       |j                  j                  dd¬«       |j                  j                  d d¬«       |j                  j                  «        |j                  j                  «        y )N)ún{"type": "ADDED", "object": {"metadata": {"name": "test1","resourceVersion": "1"}, "spec": {}, "status": {}}}
úc{"type": "ADDED", "object": {"metadata": {"name": "test2","resourceVersion": "2"}, "spec": {}, "staúytus": {}}}
{"type": "ADDED", "object": {"metadata": {"name": "test3","resourceVersion": "3"}, "spec": {}, "status": {}}}
zshould_not_happened
r   ú:rtype: V1NamespaceListr   ÚADDEDÚtypeútest%dr   ú%dé   FT©Ú_preload_contentÚwatch©ÚamtÚdecode_content)r   ÚcloseÚrelease_connr    Úget_namespacesÚ__doc__r   r&   r'   r(   Úresource_versionÚstopÚassert_called_once_withr)   ©r   r*   Úfake_apiÚwÚcountÚes         r   Útest_watch_with_decodez!WatchTests.test_watch_with_decode;   s‚  € Ü“Fˆ	Ü›&ˆ	ŒÜ!%£ˆ	ÔÜò)ô	*ˆ	Ôô “6ˆÜ"&°IÔ">ˆÔØ*Cˆ×ÑÔ'ä‹GˆØˆØ—‘˜(×1Ñ1Ó2ò 	ˆAØ×Ñ˜W a¨¡iÔ0à×Ñ˜X¨Ñ-¨q°©{×/CÑ/C×/HÑ/HÔIà×ÑØ�u‘˜a ™k×2Ñ2×CÑCôEà×Ñ˜T E™\¨1×+=Ñ+=Ô>Ø�Q‰JˆEð ˜‹zØ—‘•ð	ð 	×Ñ˜˜EÔ"à×Ñ×7Ñ7Ø"¨$ð 	8ô 	0à×Ñ×0Ñ0Ø Uð 	1ô 	,à�‰×*Ñ*Ô,Ø×Ñ×1Ñ1Õ3r   c                 óº  — t        «       }t        «       |_        t        «       |_        t        g d¢¬«      |_        t        «       }t        |¬«      |_        d|j                  _        t        «       }d}|j                  |j                  d¬«      D ]6  }|€Œ|dz  }| j                  d|z  |d   j                  j                  «       Œ8 | j                  d	|«       y )
N)	ú
z({"type": "ADDED", "object": {"metadata":z={"name": "test1","resourceVersion": "1"}}}
{"type": "ADDED", zC"object": {"metadata": {"name": "test2", "resourceVersion": "2"}}}
rY   Ú zU{"type": "ADDED", "object": {"metadata": {"name": "test3", "resourceVersion": "3"}}}
z


rY   r   r?   r   r   r   rB   r   é   )
r   rK   rL   r    rM   rN   r   r&   r'   r(   rR   s         r   Ú%test_watch_with_interspersed_newlinesz0WatchTests.test_watch_with_interspersed_newlinesh   sÌ   € Ü“Fˆ	Ü›&ˆ	ŒÜ!%£ˆ	ÔÜò
ôˆ	Ôô “6ˆÜ"&°IÔ">ˆÔØ*Cˆ×ÑÔ'ä‹GˆØˆð
 —‘˜(×1Ñ1À1�ÓEò 	JˆAàˆyØØ�Q‰JˆEØ×Ñ˜X¨Ñ-¨q°©{×/CÑ/C×/HÑ/HÕIð	Jð 	×Ñ˜˜EÕ"r   c                 ó¾  — t        «       }t        «       |_        t        «       |_        t        g d¢¬«      |_        t        «       }t        |¬«      |_        d|j                  _        t        «       }d}|j                  |j                  d¬«      D ]¸  }|dz  }| j                  d|d   «       | j                  d	|z  |d
   j                  j                  «       | j                  d|z  |d
   j                  d   «       | j                  d|z  |d
   j                  j                  «       | j                  d|z  |j                  «       Œº | j                  d|«       y )N)ui   {"type":"MODIFIED","object":{"data":{"utf-8":"Â© 1"},"metadata":{"name":"test1","resourceVersion":"1"}}}
s˜   {"type":"MODIFIED","object":{"data":{"utf-8":"Â© 2"},"metadata":{"name":"test2","resourceVersion":"2"}}}
{"type":"MODIFIED","object":{"data":{"utf-8":"Âs   © 3"},"metadata":{"nz"ame":"test3","resourceVersion":"3"ú}}}ó   
r   ú:rtype: V1ConfigMapListr   r   r   ÚMODIFIEDrA   rB   r   u   Â© %dúutf-8rC   r[   )r   rK   rL   r    Úget_configmapsrN   r   r&   r'   r(   ÚdatarO   ©r   r*   rS   rT   rU   Úevents         r   Útest_watch_with_multibyte_utf8z)WatchTests.test_watch_with_multibyte_utf8‹   s;  € Ü“Fˆ	Ü›&ˆ	ŒÜ!%£ˆ	ÔÜòôˆ	Ôô “6ˆÜ"&°IÔ">ˆÔØ*Cˆ×ÑÔ'ä‹GˆØˆð
 —X‘X˜h×5Ñ5Àq�XÓIò 	?ˆEØ�Q‰JˆEØ×Ñ˜Z¨¨v©Ô7Ø×Ñ˜X¨Ñ-¨u°X©×/GÑ/G×/LÑ/LÔMØ×Ñ˜W u™_¨e°H©o×.BÑ.BÀ7Ñ.KÔLØ×ÑØ�u‘˜e H™o×6Ñ6×GÑGôIà×Ñ˜T E™\¨1×+=Ñ+=Õ>ð	?ð 	×Ñ˜˜EÕ"r   c                 ó˜  — t        «       }t        «       |_        t        «       |_        t        g d¢¬«      |_        t        «       }t        |¬«      |_        d|j                  _        t        «       }d}|j                  |j                  d¬«      D ]¥  }|dz  }| j                  d|d   «       | j                  d	|z  |d
   j                  j                  «       | j                  d|z  |d
   j                  d   «       | j                  dj                  dd|z  «      |z  |d
   j                  d   «       Œ§ | j                  d|«       y )N)se   {"type":"MODIFIED","object":{"data":{"utf-8":"ðŸ˜„ 1","invalid":"€ 1"},"metadata":{"name":"test1"}}}
sf   {"type":"MODIFIED","object":{"data":{"utf-8":"ðŸ˜„ 2","invalid":"À¯ 2"},"metadata":{"name":"test2"}}}
s1   {"type":"MODIFIED","object":{"data":{"utf-8":"ðŸ˜s   „ r   s   3","invalid":"à€s   ¯ z3"},"metadata":{"nzame":"test3"r^   r_   r   r`   r   r   r   ra   rA   rB   r   u   ðŸ˜„ %drb   u   ï¿½ %du   ï¿½Úinvalidr[   )r   rK   rL   r    rc   rN   r   r&   r'   r(   rd   Úreplacere   s         r   Útest_watch_with_invalid_utf8z'WatchTests.test_watch_with_invalid_utf8²   s8  € Ü“Fˆ	Ü›&ˆ	ŒÜ!%£ˆ	ÔÜòô	ˆ	Ôô, “6ˆÜ"&°IÔ">ˆÔØ*Cˆ×ÑÔ'ä‹GˆØˆð
 —X‘X˜h×5Ñ5Àq�XÓIò 	EˆEØ�Q‰JˆEØ×Ñ˜Z¨¨v©Ô7Ø×Ñ˜X¨Ñ-¨u°X©×/GÑ/G×/LÑ/LÔMØ×Ñ˜Y¨Ñ.°°h±×0DÑ0DÀWÑ0MÔNà×Ñ˜X×-Ñ-¨e°U¸5±[ÓAØ"ñ#Ø$)¨(¡O×$8Ñ$8¸Ñ$CõEð	Eð 	×Ñ˜˜EÕ"r   c                 ó`  — t        «       }t        «       |_        t        «       |_        t        ddg¬«      |_        t        «       }t        |¬«      |_        d|j                  _        t        «       }d}|j                  |j                  «      D ]/  }| j                  d|«       |dz  }|dk(  sŒ |j                  «        Œ1 |j                  j                  dd	¬
«       |j                  j                  d d¬«       |j                  j                  «        |j                  j                  «        y )Nzlog_line_1
zlog_line_2
r   z-:param follow:
:type follow: bool
:rtype: strr   Ú
log_line_1é   FT)rF   ÚfollowrH   )r   rK   rL   r    Úread_namespaced_pod_logrN   r   r&   rP   rQ   r)   rR   s         r   Útest_watch_for_followz WatchTests.test_watch_for_followà   s  € Ü“Fˆ	Ü›&ˆ	ŒÜ!%£ˆ	ÔÜàØð ô!ˆ	Ôô
 “6ˆÜ+/¸YÔ+GˆÔ(à=ð 	×(Ñ(Ô0ô ‹GˆØˆØ—‘˜(×:Ñ:Ó;ò 	ˆAØ×Ñ˜\¨1Ô-Ø�Q‰JˆEð ˜‹zØ—‘•ð	ð 	×(Ñ(×@Ñ@Ø"¨4ð 	Aô 	1à×Ñ×0Ñ0Ø Uð 	1ô 	,à�‰×*Ñ*Ô,Ø×Ñ×1Ñ1Õ3r   c                 óò  ‡ ‡
— t        «       }t        «       |_        t        «       |_        g d¢Š
ˆ ˆ
fd„}t        |¬«      |_        t        «       }t        |¬«      |_        d|j                  _        t        «       }g }d}|j                  t        ddd	¬
«      «       |j                  t        ddd	¬
«      «       t        |«      D ]  }|j                  t        ddd¬
«      «       Œ! t        |j                  |j                  d	¬«      «      D ]'  \  }}	|t        ‰
«      |z  k(  sŒ|j                  «        Œ) |j                  j                  |«       ‰ j                  |j                  j                  |«       y )N)r<   r=   r>   c                  óT   •— ‰xj                   dz  c_         ‰j                   dk(  rg S ‰S )Nr   r   )ÚargsÚkwargsr   Úvaluess     €€r   Ú
get_valuesz>WatchTests.test_watch_resource_version_set.<locals>.get_values  s'   ø€ Ø�NŠN˜aÑ�NØ�~‰~ Ò"Ø�	à�r   ©Úside_effectr   r?   rn   FTÚ5)rF   rG   rO   Ú3©rO   )r   rK   rL   r    rM   rN   r   Úappendr   ÚrangeÚ	enumerateÚlenrP   Úassert_has_callsr&   Ú
mock_calls)r   r*   rw   rS   rT   ÚcallsÚ
iterationsÚiÚcrV   rv   s   `         @r   Útest_watch_resource_version_setz*WatchTests.test_watch_resource_version_setÿ   s[  ù€ ô “Fˆ	Ü›&ˆ	ŒÜ!%£ˆ	Ôò
ˆõ	ô  Ø"ô$ˆ	Ôô “6ˆÜ"&°IÔ">ˆÔØ*Cˆ×ÑÔ'ä‹Gˆð
 ˆàˆ
ð 	�‰”T¨5¸Ø+.ô0ô 	1à�‰”T¨5¸Ø+.ô0ô 	1ä�zÓ"ò 	5ˆAð �L‰Lœ¨u¸DØ/2ô4õ 5ð		5ô ˜aŸh™h x×'>Ñ'>Ø8;ð 'ó =ó >ò 	‰DˆAˆqà”C˜“K *Ñ,Ó,Ø—‘•ð	ð 	×Ñ×0Ñ0°Ô7à×Ñ˜×0Ñ0×;Ñ;¸UÕCr   c                 ó€  — t        t        «      }dD �])  }t        «       }t        «       |_        t        «       |_        t        dgdz  ¬«      |_        t        «       }t        |¬«      |_        d|j                  _        d}|j                  |j                  «      D ]  }|dz  }|dk(  sŒ|j                  «        Œ | j                  |d«       |j                  j                  dd	¬
«       |j
                  j                  d d¬«       |j                  j                  «        |j                  j                  «        �Œ, y )N)ÚfirstÚsecondú{"type": "ADDED", "object": 1}
rD   r   r?   r   r[   FTrE   rH   )r   Úfloatr   rK   rL   r    rM   rN   rP   r&   rQ   r)   )r   rT   Ústepr*   rS   rU   rV   s          r   Útest_watch_stream_twicez"WatchTests.test_watch_stream_twiceD  s  € Ü”%‹LˆØ'ó 	8ˆDÜ›ˆIÜ"›fˆIŒOÜ%)£VˆIÔ"Ü#Ø@ÐAÀAÑEô GˆIÔô “vˆHÜ&*¸	Ô&BˆHÔ#Ø.GˆH×#Ñ#Ô+àˆEØ—X‘X˜h×5Ñ5Ó6ò �Ø˜‘
�Ø˜A“:Ø—F‘F•Hðð
 ×Ñ˜U AÔ&Ø×#Ñ#×;Ñ;Ø!&¨dð <ô 4à×Ñ×4Ñ4Ø¨ð 5ô 0à�O‰O×.Ñ.Ô0Ø×"Ñ"×5Ñ5Ö7ñ/	8r   c                 ó.  — t        t        «      }t        «       }t        «       |_        t        «       |_        t        dg¬«      |_        t        «       }t        |¬«      |_        d|j                  _        d}|j                  |j                  d¬«      D ]  }|dz   }Œ	 | j                  |d«       |j                  |j                  «      D ]  }|dz   }|dk(  sŒ|j                  «        Œ | j                  |d«       | j                  |j                  j                  d«       | j                  |j
                  j                  d«       | j                  |j                  j                  d«       | j                  |j                  j                  d«       y )Nr‹   r   r?   r   r   r   rn   )r   rŒ   r   rK   rL   r    rM   rN   r&   rP   Ú
call_count)r   rT   r*   rS   rU   rV   s         r   Útest_watch_stream_loopz!WatchTests.test_watch_stream_loop_  sW  € Ü”%‹Lˆä“Fˆ	Ü›&ˆ	ŒÜ!%£ˆ	ÔÜØ<Ð=ô?ˆ	Ôô “6ˆÜ"&°IÔ">ˆÔØ*Cˆ×ÑÔ'àˆð —‘˜(×1Ñ1À1�ÓEò 	ˆAØ˜A‘I‰Eð	à×Ñ˜ Ô"ð —‘˜(×1Ñ1Ó2ò 	ˆAØ˜A‘IˆEØ˜‹zØ—‘•ð	ð
 	×Ñ˜ Ô"Ø×Ñ˜×0Ñ0×;Ñ;¸QÔ?Ø×Ñ˜×)Ñ)×4Ñ4°aÔ8Ø×Ñ˜Ÿ™×3Ñ3°QÔ7Ø×Ñ˜×/Ñ/×:Ñ:¸AÕ>r   c                 óþ   — t        «       }|j                  dd«      }| j                  d|d   «       | j                  d|d   «       | j                  t	        |d   t
        «      «       | j                  d|d   «       y )	Nz{"type": "ADDED", "object": 1}rŒ   r@   rA   g      ð?r   r   Ú
raw_object)r   Úunmarshal_eventr&   Ú
assertTrueÚ
isinstancerŒ   ©r   rT   rf   s      r   Ú test_unmarshal_with_float_objectz+WatchTests.test_unmarshal_with_float_object  sp   € Ü‹GˆØ×!Ñ!Ð"BÀGÓLˆØ×Ñ˜ %¨¡-Ô0Ø×Ñ˜˜e H™oÔ.Ø�‰œ
 5¨¡?´EÓ:Ô;Ø×Ñ˜˜E ,Ñ/Õ0r   c                 ó¾   — t        «       }|j                  dd «      }| j                  d|d   «       | j                  dg|d   «       | j                  dg|d   «       y )Nz&{"type": "ADDED", "object": ["test1"]}r@   rA   Útest1r   r“   )r   r”   r&   r—   s      r   Ú"test_unmarshal_with_no_return_typez-WatchTests.test_unmarshal_with_no_return_type‡  s`   € Ü‹GˆØ×!Ñ!Ð"JØ"&ó(ˆà×Ñ˜ %¨¡-Ô0Ø×Ñ˜'˜ E¨(¡OÔ4Ø×Ñ˜'˜ E¨,Ñ$7Õ8r   c                 ó  — t        «       }|j                  dd«      }| j                  d|d   «       | j                  t	        |d   t
        «      «       | j                  d|d   d   d   «       | j                  d|j                  «       y )Nz~{"type": "ADDED", "object": {"apiVersion":"test.com/v1beta1","kind":"foo","metadata":{"name": "bar", "resourceVersion": "1"}}}r   r@   rA   Ú1r'   ÚresourceVersion)r   r”   r&   r•   r–   ÚdictrO   r—   s      r   Ú!test_unmarshal_with_custom_objectz,WatchTests.test_unmarshal_with_custom_object�  sˆ   € Ü‹GˆØ×!Ñ!ð #Nð #+ó,ˆð 	×Ñ˜ %¨¡-Ô0ð 	�‰œ
 5¨¡?´DÓ9Ô:Ø×Ñ˜˜e H™o¨jÑ9Ð:KÑLÔMØ×Ñ˜˜a×0Ñ0Õ1r   c                 óž   — t        «       }|j                  dd«      }| j                  d|d   «       | j                  d|j                  «       y )Nz±{"type":"BOOKMARK","object":{"kind":"Job","apiVersion":"batch/v1","metadata":{"resourceVersion":"1"},"spec":{"template":{"metadata":{},"spec":{"containers":null}}},"status":{}}}ÚV1JobÚBOOKMARKrA   r�   ©r   r”   r&   rO   r—   s      r   Útest_unmarshal_with_bookmarkz'WatchTests.test_unmarshal_with_bookmarkœ  sP   € Ü‹GˆØ×!Ñ!ðGð ó	ˆð
 	×Ñ˜ U¨6¡]Ô3Ø×Ñ˜˜a×0Ñ0Õ1r   c                 óž   — t        «       }|j                  dd«      }| j                  d|d   «       | j                  d |j                  «       y )Nz7{"type":"BOOKMARK","object":{"metadata": "not-a-dict"}}r¢   r£   rA   r¤   r—   s      r   Ú1test_unmarshal_with_bookmark_metadata_not_in_dictz<WatchTests.test_unmarshal_with_bookmark_metadata_not_in_dict¦  sK   € Ü‹GˆØ×!Ñ!ØEØóˆð 	×Ñ˜ U¨6¡]Ô3Ø×Ñ˜˜q×1Ñ1Õ2r   c                 óž   — t        «       }|j                  dd«      }| j                  d|d   «       | j                  d |j                  «       y )Nz:{"type":"BOOKMARK","object":{"metadata": {"name": "foo"}}}r¢   r£   rA   r¤   r—   s      r   Ú>test_unmarshal_with_bookmark_metadata_without_resource_versionzIWatchTests.test_unmarshal_with_bookmark_metadata_without_resource_version®  sK   € Ü‹GˆØ×!Ñ!ØHØóˆð 	×Ñ˜ U¨6¡]Ô3Ø×Ñ˜˜q×1Ñ1Õ2r   c                 ó4  — t        «       }t        «       |_        t        «       |_        t        t        d«      ¬«      |_        t        «       }t        |¬«      |_        t        «       }	 |j	                  |j
                  «      D ]  }| j                  | d«       Œ 	 |j
                  j                  dd¬«       |j                  j                  d d¬«       |j                  j                  «        |j                  j                  «        y # t        $ r Y Œzw xY w)	NÚexpectedrx   r   zShould fail on exception.FTrE   rH   )
r   rK   rL   ÚKeyErrorr    Ú	get_thingr   ÚfailrQ   r)   ©r   r*   rS   rT   Ú_s        r   Útest_watch_with_exceptionz$WatchTests.test_watch_with_exception¶  sï   € Ü“Fˆ	Ü›&ˆ	ŒÜ!%£ˆ	ÔÜ¬H°ZÓ,@ÔAˆ	Ôä“6ˆÜ!¨yÔ9ˆÔä‹Gˆð	Ø—X‘X˜h×0Ñ0Ó1ò =�Ø—	‘	˜$Ð ;Õ<ñ=ð 	×Ñ×2Ñ2Ø"¨$ð 	3ô 	0à×Ñ×0Ñ0Ø Uð 	1ô 	,à�‰×*Ñ*Ô,Ø×Ñ×1Ñ1Õ3øô ò 	Ùð	ús   Á)2D Ä	DÄDc                 óê  — t        «       }t        «       |_        t        «       |_        t        dg¬«      |_        t        «       }t        |¬«      |_        t        «       }t        |j                  |j                  «      «      rJ ‚|j                  j                  dd¬«       |j                  j                  d d¬«       |j                  j                  «        |j                  j                  «        y )NúY{"type": "ERROR", "object": {"code": 410, "reason": "Gone", "message": "error message"}}
r   FTrE   rH   )	r   rK   rL   r    r­   r   r$   rQ   r)   )r   r*   rS   rT   s       r   Útest_watch_with_error_eventz&WatchTests.test_watch_with_error_eventÎ  sÐ   € Ü“Fˆ	Ü›&ˆ	ŒÜ!%£ˆ	ÔÜðCðDôEˆ	Ôô
 “6ˆÜ!¨yÔ9ˆÔä‹Gˆô ˜Ÿ™ ×!3Ñ!3Ó4Ô5Ð5Ð5à×Ñ×2Ñ2Ø"¨$ð 	3ô 	0à×Ñ×0Ñ0Ø Uð 	1ô 	,à�‰×*Ñ*Ô,Ø×Ñ×1Ñ1Õ3r   c                 óŠ  — t        «       }t        «       |_        t        «       |_        t        dg¬«      |_        t        «       }t        |¬«      |_        t        «       }	 |j                  |j                  d¬«      D ]  }| j                  | d«       Œ 	 |j                  j                  t        ddd¬«      gd	z  «       |j                  j                  t        d d¬
«      gd	z  «       |j                  j                  d	k(  sJ ‚|j                  j                  d	k(  sJ ‚y # t        j                  j                  $ r Y Œ«w xY w)Nr³   r   r   r|   úShould fail with ApiException.FT)rO   rF   rG   rn   rH   )r   rK   rL   r    r­   r   r®   r   Úrestr
   r�   r   r�   r¯   s        r   Ú!test_watch_retries_on_error_eventz,WatchTests.test_watch_retries_on_error_eventæ  s,  € Ü“Fˆ	Ü›&ˆ	ŒÜ!%£ˆ	ÔÜðCðDôEˆ	Ôô
 “6ˆÜ!¨yÔ9ˆÔä‹Gˆð	Ø—X‘X˜h×0Ñ0À1�XÓEò B�Ø—	‘	˜$Ð @ÕAñBð 	×Ñ×+Ñ+Ü 1°uÀDÔIÐJÈQÑNô	Pà×Ñ×)Ñ)Ü�d¨5Ô1Ð2°QÑ6ô	8à�‰×)Ñ)¨QÒ.Ð.Ð.Ø×%Ñ%×0Ñ0°AÒ5Ð5Ñ5øô �{‰{×'Ñ'ò 	Ùð	ús   Á!4D" Ä"EÅEc                 óR  — t        «       }t        «       |_        t        «       |_        t        dg¬«      |_        t        «       }t        |¬«      |_        t        «       }	 |j                  |j                  d¬«      D ]  }| j                  | d«       Œ 	 |j                  j                  ddd¬«       |j                  j                  d d¬	«       |j                  j                  «        |j                  j                  «        y # t        j                  j                  $ r Y Œ�w xY w)
Nr³   r   é
   r   r¶   FT)rF   rG   r   rH   )r   rK   rL   r    r­   r   r®   r   r·   r
   rQ   r)   r¯   s        r   Ú-test_watch_with_error_event_and_timeout_paramz8WatchTests.test_watch_with_error_event_and_timeout_param  s  € Ü“Fˆ	Ü›&ˆ	ŒÜ!%£ˆ	ÔÜðCðDôEˆ	Ôô
 “6ˆÜ!¨yÔ9ˆÔä‹Gˆð	Ø—X‘X˜h×0Ñ0À"�XÓEò B�Ø—	‘	˜$Ð @ÕAñBð
 	×Ñ×2Ñ2Ø"¨$Àð 	3ô 	Dà×Ñ×0Ñ0Ø Uð 	1ô 	,à�‰×*Ñ*Ô,Ø×Ñ×1Ñ1Õ3øô �{‰{×'Ñ'ò 	Ùð	ús   Á!4D ÄD&Ä%D&c                 ó0   — t        «       | _        d| _        y )NÚdefault)r   r+   Ú	namespace)Úclss    r   Ú
setUpClasszWatchTests.setUpClass  s   € ä“&ˆŒØ!ˆ�r   c                 ó  — d}	 t        «       | j                  _        t        «       | j                  _        t        «       | j                  _        t        «       | j                  _        d | j                  j                  _        t        «       }d|j                  _        || j                  j                  _        t        dg«      | j                  j
                  _        d}t        j                  «       }t        j                  «       |z
  |k  rq| j                  j                  || j                  ¬«      }|j                  j                  dk(  rnAt        j                  d«       t        j                  «       |z
  |k  rŒq| j                  d«       t        «       }g }t        g d¢¬	«      |_        |j                  | j                  j
                  || j                  d
¬«      D ]  }|j!                  |«       t#        |«       Œ  t#        d|› �«       g d¢}	| j%                  ||	d«       | j                  j	                  || j                  ¬«       | j                  j                  j)                  || j                  ¬«       y # t&        $ r}
| j                  d|
› �«       Y d }
~
Œ{d }
~
ww xY w# | j                  j	                  || j                  ¬«       | j                  j                  j)                  || j                  ¬«       w xY w)Nzdemo-bugÚRunningzHello from Docker
é<   )r(   r¾   rn   z0Pod did not reach 'Running' state within timeout)zHello from DockerrZ   rZ   z

zAnother log linerZ   rY   z	Final logr   T)r(   r¾   ro   zCaptured logs: z(Captured logs do not match expected logszKubernetes API exception: )r   r+   Úcreate_namespaced_podÚread_namespaced_podÚdelete_namespaced_podrp   r   r   ÚphaseÚiterÚtimer¾   Úsleepr®   r   r    r}   Úprintr&   r
   rQ   )r   Úpod_nameÚmock_podÚtimeoutÚ
start_timeÚpodrT   Ú
log_outputrf   Úexpected_logrV   s              r   Útest_pod_log_empty_linesz#WatchTests.test_pod_log_empty_lines   sf  € ØˆðD	lÜ-1«VˆD�H‰HÔ*Ü+/«6ˆD�H‰HÔ(Ü-1«VˆD�H‰HÔ*Ü/3«vˆD�H‰HÔ,ð ;?ˆD�H‰H×*Ñ*Ô7ô “vˆHØ$-ˆH�O‰OÔ!Ø8@ˆD�H‰H×(Ñ(Ô5ô =AÐBWÐAXÓ<YˆD�H‰H×,Ñ,Ô9ð ˆGÜŸ™›ˆJÜ—)‘)“+ 
Ñ*¨WÒ4Ø—h‘h×2Ñ2¸ÈDÏNÉNÐ2Ó[�Ø—:‘:×#Ñ# yÒ0ØÜ—
‘
˜1”ô	 —)‘)“+ 
Ñ*¨WÓ4ð —	‘	ÐLÔMô “ˆAØˆJäò 	*ô 	ˆAŒHð Ÿ™ $§(¡(×"BÑ"BÈÐ]a×]kÑ]kÐtx˜Óyò �Ø×!Ñ! %Ô(Ü�e•ðô
 �O J <Ð0Ô1ò	ˆLð ×Ñ˜Z¨Ð7aÔbð �H‰H×*Ñ*°ÀDÇNÁNÐ*ÔSØ�H‰H×*Ñ*×BÑBÈÐ\`×\jÑ\jÐBÕkøô ò 	8Ø�I‰IÐ2°1°#Ð6×7Ñ7ûð	8ûð �H‰H×*Ñ*°ÀDÇNÁNÐ*ÔSØ�H‰H×*Ñ*×BÑBÈÐ\`×\jÑ\jÐBÕkús2   „E:J Å?B)J Ê	J(Ê
J#ÊJ+ Ê#J(Ê(J+ Ê+ALc                 óv  — d}t        «       }t        «       |_        t        «       |_        t        |dz   g¬«      |_        t        «       }t        |¬«      |_        d|j                  _        t        «       }d}|j                  |j                  d¬«      D ]Í  }| j                  d|d	   «       | j                  t        |d
   d«      «       | j                  d|d
   j                  j                  «       | j                  d|d
   j                  j                  «       | j                  t        j                  |«      d
   |d   «       |dz  }|dk(  sŒ¾|j                  «        ŒÏ | j                  d|«       t        «       }|j                  |j                  d¬«      D ]f  }| j                  d|d	   «       | j!                  |d
   t"        «       | j                  d|d
   d   d   «       | j                  d|d
   d   d   «       Œh |j                  j%                  t'        dd¬«      t'        dd¬«      g«       y)z%test watch.stream() deserialize paramzn{"type": "ADDED", "object": {"metadata": {"name": "test1", "resourceVersion": "1"}, "spec": {}, "status": {}}}rY   r   r?   r   T)Údeserializer@   rA   r   r'   rš   r�   r“   r   Fr(   rž   rE   N)r   rK   rL   r    rM   rN   r   r&   r•   Úhasattrr'   r(   rO   ÚjsonÚloadsrP   ÚassertIsInstancerŸ   r�   r   )r   Ú	test_jsonr*   rS   rT   rU   rV   s          r   Ú!test_watch_with_deserialize_paramz,WatchTests.test_watch_with_deserialize_parami  s  € ð Eˆ	Ü“Fˆ	Ü›&ˆ	ŒÜ!%£ˆ	ÔÜ¨i¸$Ñ.>Ð-?Ô@ˆ	Ôä“6ˆÜ"&°IÔ">ˆÔØ*Cˆ×ÑÔ'ô ‹GˆØˆØ—‘˜(×1Ñ1¸t�ÓDò 
	ˆAØ×Ñ˜W a¨¡iÔ0à�O‰OœG A h¡K°Ó<Ô=Ø×Ñ˜W a¨¡k×&:Ñ&:×&?Ñ&?Ô@Ø×Ñ˜S ! H¡+×"6Ñ"6×"GÑ"GÔHà×ÑœTŸZ™Z¨	Ó2°8Ñ<¸aÀ¹oÔNØ�Q‰JˆEØ˜‹zØ—‘•ð
	ð 	×Ñ˜˜EÔ"ô ‹GˆØ—‘˜(×1Ñ1¸u�ÓEò 	NˆAØ×Ñ˜W a¨¡iÔ0à×!Ñ! ! H¡+¬tÔ4Ø×Ñ˜W a¨¡k°*Ñ&=¸fÑ&EÔFØ×Ñ˜S ! H¡+¨jÑ"9Ð:KÑ"LÕMð	Nð 	×Ñ×0Ñ0Ü %¨tÔ4Ü %¨tÔ4ð2
õ 	r   N)Ú__name__Ú
__module__Ú__qualname__r   r-   r:   rW   r\   rg   rk   rq   r‡   rŽ   r‘   r˜   r›   r    r¥   r§   r©   r±   r´   r¸   r»   ÚclassmethodrÀ   rÓ   rÛ   r2   r   r   r   r      s•   „ òò5òEò+4òZ!#òF%#òN,#ò\4ò>CDòJ8ò6?ò@1ò9ò2ò2ò3ò3ò4ò04ò06ò64ð4 ñ"ó ð"òGlóR*r   r   Ú__main__)r×   ÚosrÉ   Útypesr   Útypingr   r   ÚunittestÚunittest.mockr   r   Ú
kubernetesr   r	   Úkubernetes.clientr
   rG   r   ÚTestCaser   rÜ   Úmainr2   r   r   ú<module>rê      sT   ðó Û 	Û Ý !ß  Û ß $ç %Ý *å ôv	�×"Ñ"ô v	ðr ˆzÒØ€H‡M�M…Oð r   