
    ?gnP                         d dl 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)Mockcall)client   )Watchc                   r    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y)
WatchTestsc                     d| _         y )Nr   	callcount)selfs    P/var/www/openai/venv/lib/python3.12/site-packages/kubernetes/watch/watch_test.pysetUpzWatchTests.setUp   s	        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": {}, "staytus": {}}}
{"type": "ADDED", "object": {"metadata": {"name": "test3","resourceVersion": "3"}, "spec": {}, "status": {}}}
zshould_not_happened
return_value:return: V1NamespaceListr   ADDEDtypetest%dobject%d   FT_preload_contentwatchamtdecode_content)r   closerelease_connstreamget_namespaces__doc__r   assertEqualmetadatanameresource_versionstopassert_called_once_withassert_called_oncer   	fake_respfake_apiwcountes         r   test_watch_with_decodez!WatchTests.test_watch_with_decode   s}   F	&	!%	)	*	 6"&I">*D'G(112AWai0X-q{/C/C/H/HIuak22CCETE\1+=+=>QJE z 3 	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 ]3  }|dz  }| j                  d|z  |d   j                  j                         5 | j                  d	|       y )
N)	
z({"type": "ADDED", "object": {"metadata":z={"name": "test1","resourceVersion": "1"}}}
{"type": "ADDED", zC"object": {"metadata": {"name": "test2", "resourceVersion": "2"}}}
r8    zU{"type": "ADDED", "object": {"metadata": {"name": "test3", "resourceVersion": "3"}}}
z


r8   r   r   r   r   timeout_secondsr   r      )
r   r$   r%   r&   r'   r(   r   r)   r*   r+   r0   s         r   %test_watch_with_interspersed_newlinesz0WatchTests.test_watch_with_interspersed_newlinesJ   s    F	&	!%	
	 6"&I">*D'G
 (111EAQJEX-q{/C/C/H/HI F 	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   :return: V1ConfigMapListr   r   r:   MODIFIEDr   r   r   u   © %dutf-8r   r<   )r   r$   r%   r&   get_configmapsr(   r   r)   r*   r+   datar,   r   r1   r2   r3   r4   events         r   test_watch_with_multibyte_utf8z)WatchTests.test_watch_with_multibyte_utf8j   s7   F	&	!%		 6"&I">*D'G
 XXh55qXIEQJEZv7X-uX/G/G/L/LMWu_eHo.B.B7.KLueHo66GGITE\1+=+=> 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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   rA   r   r   r:   rB   r   r   r   u   😄 %drC   u   � %du   �invalidr<   )r   r$   r%   r&   rD   r(   r   r)   r*   r+   rE   replacerF   s         r   test_watch_with_invalid_utf8z'WatchTests.test_watch_with_invalid_utf8   s2   F	&	!%			, 6"&I">*D'G
 XXh55qXIEQJEZv7X-uX/G/G/L/LMY.h0D0DW0MNX--eU5[A"#$)(O$8$8$CE J 	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 bool follow:
:return: strr   
log_line_1   FT)r   followr!   )r   r$   r%   r&   read_namespaced_pod_logr(   r   r)   r-   r.   r/   r0   s         r   test_watch_for_followz WatchTests.test_watch_for_follow   s	   F	&	!%	 !	
 6+/Y+G(3V((0G(::;A\1-QJE 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'    NNaN~~"	r   side_effectr   r   rO   FT5)r   r    r,   3r,   )r   r$   r%   r&   r'   r(   r   appendr   range	enumeratelenr-   assert_has_callsr)   
mock_calls)r   r1   rX   r2   r3   calls
iterationsicr5   rW   s   `         @r   test_watch_resource_version_setz*WatchTests.test_watch_resource_version_set   sQ    F	&	!%	
	  "$	 6"&I">*D'G
 
 	T5+.0 	1T5+.0 	1z"A LLuD/24 5	 # ahhx'>'>8; ' = >DAq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}
r   r   r   r   r<   FTr   r!   )r   floatr   r$   r%   r&   r'   r(   r-   r)   r.   r/   )r   r3   stepr1   r2   r4   r5   s          r   test_watch_stream_twicez"WatchTests.test_watch_stream_twice"  s   %L'DI"fIO%)VI"#@AAE GI vH&*	&BH#.HH##+EXXh556
A:FFH 7
 UA&##;;!&d < 444 5 0OO..0""557/ (r   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 )Nrl   r   r   r   r   r:   rO   )r   rm   r   r$   r%   r&   r'   r(   r)   r-   
call_count)r   r3   r1   r2   r4   r5   s         r   test_watch_stream_loopz!WatchTests.test_watch_stream_loop=  sN   %LF	&	!%	<=?	 6"&I">*D' (111EAAIE F" (112AAIEz 3
 	"00;;Q?))44a833Q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}rm   r   r   g      ?r   r   
raw_object)r   unmarshal_eventr)   
assertTrue
isinstancerm   r   r3   rG   s      r    test_unmarshal_with_float_objectz+WatchTests.test_unmarshal_with_float_object]  sp    G!!"BGL%-0eHo.
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   r   test1r   rt   )r   ru   r)   rx   s      r   "test_unmarshal_with_no_return_typez-WatchTests.test_unmarshal_with_no_return_typee  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   r   1r*   resourceVersion)r   ru   r)   rv   rw   dictr,   rx   s      r   !test_unmarshal_with_custom_objectz,WatchTests.test_unmarshal_with_custom_objectm  s    G!! #N #+, 	%-0 	
5?D9:eHoj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BOOKMARKr   )r   ru   r)   r,   rx   s      r   test_unmarshal_with_bookmarkz'WatchTests.test_unmarshal_with_bookmarkz  sR    G!!G 	
 	U6]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expectedrY   r   zShould fail on exception.FTr   r!   )
r   r$   r%   KeyErrorr&   	get_thingr   failr.   r/   r   r1   r2   r3   _s        r   test_watch_with_exceptionz$WatchTests.test_watch_with_exception  s    F	&	!%	HZ,@A	6!y9G	XXh001		$ ;< 2 	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 )NY{"type": "ERROR", "object": {"code": 410, "reason": "Gone", "message": "error message"}}
r   FTr   r!   )	r   r$   r%   r&   r   r   listr.   r/   )r   r1   r2   r3   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)r,   r   r    rO   r!   )r   r$   r%   r&   r   r   r   r   restApiExceptionrb   r   rq   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	XXh001XE		$ @A F 	++1uDIJQN	P))d512Q6	8))Q...%%00A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)r   r    r;   r!   )r   r$   r%   r&   r   r   r   r   r   r   r.   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	XXh00"XE		$ @A F
 	22"$ 	3 	D00U 	1 	,**,113 {{'' 		s   !4D D&%D&N)__name__
__module____qualname__r   r6   r=   rH   rL   rR   rh   ro   rr   ry   r|   r   r   r   r   r   r    r   r   r	   r	      s_    +4Z#@%#N,#\4<CDJ86?@19234040664r   r	   __main__)unittestunittest.mockr   r   
kubernetesr   r    r   TestCaser	   r   mainr   r   r   <module>r      sB     $  R4"" R4j zHMMO r   