§
    ŠtjâJ  ã                   ó4  — d dl Z d dlmZmZ ddlmZ ddlmZmZm	Z	m
Z
mZ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mZmZmZ d dlZ	 d dlZ ej        ¦   «          n# e$ r Y nw xY w ej        d	¬
¦  «        d„ ¦   «         Zdd„Z G d„ dej        ¦  «        Z  G d„ de j!        ¦  «        Z" G d„ de j!        ¦  «        Z# ej        d¬¦  «        d„ ¦   «         Z$ ej        d	¬
¦  «        d„ ¦   «         Z%d„ Z&d„ Z'd„ Z(e)dk    r e j*        ¦   «          dS dS )é    N)Ú	MagicMockÚpatché   )Ú	ws_client)Úget_websocket_urlÚWSClientÚV5_CHANNEL_PROTOCOLÚV4_CHANNEL_PROTOCOLÚCLOSE_CHANNELÚSTDIN_CHANNEL)Úwebsocket_proxycare)ÚConfiguration)ÚstreamÚclientÚconfigT)Úautousec                 ó„   — d}| dz  }|                      |¦  «         |                     dt          |¦  «        ¦  «         d S )Nak  
        apiVersion: v1
        kind: Config
        clusters:
        - name: default
          cluster:
            server: http://127.0.0.1:8888
        contexts:
        - name: default
          context:
            cluster: default
            user: default
        users:
        - name: default
          user: {}
        current-context: default
        Ú
kubeconfigÚ
KUBECONFIG)Ú
write_textÚsetenvÚstr)Útmp_pathÚmonkeypatchÚcontentÚcfg_files       ú^/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/kubernetes/stream/ws_client_test.pyÚdummy_kubeconfigr   "   sK   € ð€Gð" ˜,Ñ&€HØ×Ò˜Ñ Ô Ð Ø×Ò�|¥S¨¡]¤]Ñ3Ô3Ð3Ð3Ð3ó    c                 ó.   — |                       ||¦  «        S ©N)Úget)Údict_objÚkeyÚdefaults      r   Údictvalr&   ;   s   € à�<Š<˜˜WÑ%Ô%Ð%r   c                   ó*   ‡ — e Zd ZdZdˆ fd„	Zd„ Zˆ xZS )Ú
DummyProxyz{
    A minimal HTTP proxy that flags any CONNECT request and returns 200 OK.
    Listens on 127.0.0.1:8888 by default.
    ú	127.0.0.1é¸"  c                 ó¨  •— t          ¦   «                              d¬¦  «         || _        || _        d| _        t          j        t
          j        t
          j        ¦  «        | _        | j         	                    t
          j
        t
          j        d¦  «         | j                             | j        df¦  «         | j                             d¦  «         d S )NT)ÚdaemonFr   r   )ÚsuperÚ__init__ÚhostÚportÚreceived_connectÚsocketÚAF_INETÚSOCK_STREAMÚ_server_sockÚ
setsockoptÚ
SOL_SOCKETÚSO_REUSEADDRÚbindÚlisten)Úselfr/   r0   Ú	__class__s      €r   r.   zDummyProxy.__init__D   s¨   ø€ Ý‰Œ×Ò ÐÑ%Ô%Ð%ØˆŒ	ØˆŒ	Ø %ˆÔÝ"œM­&¬.½&Ô:LÑMÔMˆÔØÔ×$Ò$¥VÔ%6½Ô8KÈQÑOÔOÐOØÔ×Ò ¤	¨1˜~Ñ.Ô.Ð.ØÔ× Ò  Ñ#Ô#Ð#Ð#Ð#r   c                 óP  — | j                              ¦   «         \  }}	 |                     d¦  «                             dd¬¦  «        }|                     d¦  «        rd| _        |                     d¦  «         |                     ¦   «          d S # |                     ¦   «          w xY w)Ni   zutf-8Úignore)ÚerrorszCONNECT Ts'   HTTP/1.1 200 Connection established

)r5   ÚacceptÚrecvÚdecodeÚ
startswithr1   ÚsendallÚclose)r;   ÚconnÚ_Údatas       r   ÚrunzDummyProxy.runN   s”   € ØÔ#×*Ò*Ñ,Ô,‰ˆˆað	Ø—9’9˜T‘?”?×)Ò)¨'¸(Ð)ÑCÔCˆDØ�Š˜zÑ*Ô*ð MØ(,�Ô%Ø—’ÐKÑLÔLÐLà�JŠJ‰LŒLˆLˆLˆLøˆD�JŠJ‰LŒLˆLˆLøøøs   žAB ÂB%)r)   r*   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r.   rI   Ú__classcell__)r<   s   @r   r(   r(   ?   sV   ø€ € € € € ðð ð$ð $ð $ð $ð $ð $ðð ð ð ð ð ð r   r(   c                   ó   — e Zd Zd„ Zd„ ZdS )ÚWSClientTestc                 ó\   — dD ](\  }}|                       t          |¦  «        |¦  «         Œ)d S )N))zhttp://localhost/apizws://localhost/api)zhttps://localhost/apizwss://localhost/api)zhttps://domain.com/apizwss://domain.com/api)zhttps://api.domain.com/apizwss://api.domain.com/api)zhttp://api.domain.comzws://api.domain.com)zhttps://api.domain.comzwss://api.domain.com)zhttp://api.domain.com/zws://api.domain.com/)zhttps://api.domain.com/zwss://api.domain.com/)ÚassertEqualr   )r;   ÚurlÚws_urls      r   Útest_websocket_clientz"WSClientTest.test_websocket_clientZ   sE   € ð	ð 
	=ð 
	=‰KˆC�ð ×ÒÕ.¨sÑ3Ô3°VÑ<Ô<Ð<Ð<ð
	=ð 
	=r   c                 óÂ  — ddddddddd	d
dgfddddd	d
dgfddddd	d
g d¢ffD ]»\  }}}}}}}t          ¦   «         }|r||_        |r%t          j                             |¬¦  «        |_        |�||_        t          i |d d ¦  «        }	t          |	d¦  «        |k    sJ ‚t          |	d¦  «        |k    sJ ‚t          |	d¦  «        |k    sJ ‚t          |	d¦  «        |k    sJ ‚Œ¼d S )N)NNNNNNN)úhttp://proxy.example.com:8080/NNúproxy.example.comé�  NN)rW   ú	user:passNrX   rY   ©ÚuserÚpassN)rW   rZ   Ú rX   rY   r[   NrW   rZ   Ú*rX   rY   r[   ú.example.comzlocalhost,.local,.example.com)Ú	localhostz.localr`   )Úproxy_basic_authÚhttp_proxy_hostÚhttp_proxy_portÚhttp_proxy_authÚhttp_no_proxy)	r   ÚproxyÚurllib3ÚutilÚmake_headersÚproxy_headersÚno_proxyr   r&   )
r;   rg   Úidpassrl   Úexpect_hostÚexpect_portÚexpect_authÚexpect_noproxyÚcfgÚconnect_optss
             r   Útest_websocket_proxycarez%WSClientTest.test_websocket_proxycareg   s›  € ð Jð Jð Tð TØ2°KÀÐbuÐw{ð  ~Mð  PSð  OTð  UØ2°KÀÐbuÐw{ð  ~Mð  P^ð  O_ð  `Ø2°KÐA`ÐcvÐx|ð  Nð  Puð  Puð  Puð  vð_ð 	Lð 	LÑZˆE�6˜8 [°+¸{ÈNõ  ‘/”/ˆCØð "Ø!�”	Øð WÝ$+¤L×$=Ò$=ÈvÐ$=Ñ$VÔ$V�Ô!ØÐ#Ø'�”õ /¨r°3¸¸dÑCÔCˆLÝ˜<Ð):Ñ;Ô;¸{ÒJÐJÐJÐJÝ˜<Ð):Ñ;Ô;¸{ÒJÐJÐJÐJÝ˜<Ð):Ñ;Ô;¸{ÒJÐJÐJÐJÝ˜<¨Ñ9Ô9¸^ÒKÐKÐKÐKÐKð/	Lð 	Lr   N)rJ   rK   rL   rU   rt   © r   r   rP   rP   X   s7   € € € € € ð=ð =ð =ðLð Lð Lð Lð Lr   rP   c                   ó`   — 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S )ÚWSClientProtocolTestz'Tests for WSClient V5 protocol handlingc                 óÔ   — t          ¦   «         | _        d| j        _        i | j        _        d | j        _        d | j        _        d | j        _        d | j        _        d| j        _        d S )NFT)	r   Úconfig_mockÚassert_hostnameÚapi_keyrg   Ússl_ca_certÚ	cert_fileÚkey_fileÚ
verify_ssl)r;   s    r   ÚsetUpzWSClientProtocolTest.setUp…   sa   € å$™;œ;ˆÔØ+0ˆÔÔ(Ø#%ˆÔÔ Ø!%ˆÔÔØ'+ˆÔÔ$Ø%)ˆÔÔ"Ø$(ˆÔÔ!Ø&*ˆÔÔ#Ð#Ð#r   c                 ó�  — t          j        t          dd¬¦  «        5 }|j        }t	          | j        ddd¬¦  «         |j                             ¦   «          |j        j        }|d         }|  	                    d|¦  «         d	t          › d
t          › �}|  	                    ||d         ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z6Verify sec-websocket-protocol header requests v5 firstÚ	WebSocketT)Úautospecú	ws://testN©ÚheadersÚcapture_allr   Úheaderzsec-websocket-protocol: ú,)r   ÚobjectÚws_client_moduleÚreturn_valuer   ry   ÚconnectÚassert_called_onceÚ	call_argsÚassertInr	   r
   )r;   Úmock_ws_clsÚmock_wsr�   ÚkwargsÚexpected_headers         r   Útest_create_websocket_headerz1WSClientProtocolTest.test_create_websocket_header�   s  € õ Œ\Õ*¨KÀ$ÐGÑGÔGð 	=È;Ø!Ô.ˆGå�TÔ% {¸DÈdÐSÑSÔSÐSàŒO×.Ò.Ñ0Ô0Ð0ØœÔ1ˆIð ˜q”\ˆFØ�MŠM˜( FÑ+Ô+Ð+ØdÕ9LÐdÐdÕObÐdÐdˆOØ�MŠM˜/¨6°(Ô+;Ñ<Ô<Ð<ð	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð 	=ð 	=s   �BB;Â;B?ÃB?c                 ó”  — t          j        t          d¦  «        5 }t          ¦   «         }t          |_        d|_        ||_        t          | j	        ddd¬¦  «        } |j
        d¦  «         |j                             t          t          t          g¦  «        t           j        j        ¬¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z>Verify close_channel sends correct frame when v5 is negotiatedÚcreate_websocketTr„   Nr…   r   )Úopcode)r   rŠ   r‹   r   r	   ÚsubprotocolÚ	connectedrŒ   r   ry   Úclose_channelÚsendÚassert_called_withÚbytesr   r   Ú	websocketÚABNFÚOPCODE_BINARY©r;   Úmock_creater’   r   s       r   Útest_close_channel_v5z*WSClientProtocolTest.test_close_channel_v5¡   s  € åŒ\Õ*Ð,>Ñ?Ô?ð 		xÀ;Ý‘k”kˆGÝ"5ˆGÔØ $ˆGÔØ'.ˆKÔ$å˜dÔ.°ÀTÐW[Ð\Ñ\Ô\ˆFØ ˆFÔ  Ñ#Ô#Ð#àŒL×+Ò+­Eµ=Å-Ð2PÑ,QÔ,QÕZcÔZhÔZvÐ+ÑwÔwÐwð		xð 		xð 		xñ 		xô 		xð 		xð 		xð 		xð 		xð 		xð 		xð 		xøøøð 		xð 		xð 		xð 		xð 		xð 		xs   ›BB=Â=CÃCc                 ó>  — t          j        t          d¦  «        5 }t          ¦   «         }t          |_        d|_        ||_        t          | j	        ddd¬¦  «        } |j
        d¦  «         |j                             ¦   «          ddd¦  «         dS # 1 swxY w Y   dS )z7Verify close_channel does nothing when v4 is negotiatedr—   Tr„   Nr…   r   )r   rŠ   r‹   r   r
   r™   rš   rŒ   r   ry   r›   rœ   Úassert_not_calledr¢   s       r   Útest_close_channel_v4z*WSClientProtocolTest.test_close_channel_v4®   sÙ   € åŒ\Õ*Ð,>Ñ?Ô?ð 		-À;Ý‘k”kˆGÝ"5ˆGÔØ $ˆGÔØ'.ˆKÔ$å˜dÔ.°ÀTÐW[Ð\Ñ\Ô\ˆFØ ˆFÔ  Ñ#Ô#Ð#àŒL×*Ò*Ñ,Ô,Ð,ð		-ð 		-ð 		-ñ 		-ô 		-ð 		-ð 		-ð 		-ð 		-ð 		-ð 		-ð 		-øøøð 		-ð 		-ð 		-ð 		-ð 		-ð 		-s   ›A*BÂBÂBc                 ój  — t          j        t          d¦  «        5 }t          d¦  «        5 }t          ¦   «         }t          |_        d|_        d|j        j        _	        t          ¦   «         }t          t          t          g¦  «        |_        t          j        j        |f|j        _	        ||_	        |j        gg g f|_	        t%          | j        ddd¬¦  «        } |j        d¬	¦  «         |                      d|j        ¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )
z:Verify update processes close signal when v5 is negotiatedr—   úselect.selectTé
   r„   Nr…   r   ©Útimeout)r   rŠ   r‹   r   r	   r™   rš   ÚsockÚfilenorŒ   rž   r   r   rH   rŸ   r    r¡   Úrecv_data_framer   ry   Úupdater�   Ú_closed_channels©r;   r£   Úmock_selectr’   Úframer   s         r   Útest_update_receives_close_v5z2WSClientProtocolTest.test_update_receives_close_v5»   s”  € åŒ\Õ*Ð,>Ñ?Ô?ð 	6À;Ý�/Ñ"Ô"ð	6Ø&1å‘k”kˆGÝ"5ˆGÔØ $ˆGÔØ/1ˆGŒLÔÔ,õ ‘K”KˆEÝ¥­}Ð=Ñ>Ô>ˆEŒJÝ4=´NÔ4PÐRWÐ3XˆGÔ#Ô0à'.ˆKÔ$à)0¬¨¸¸BÐ'?ˆKÔ$å˜dÔ.°ÀTÐW[Ð\Ñ\Ô\ˆFØˆFŒM !Ð$Ñ$Ô$Ð$à�MŠM˜!˜VÔ4Ñ5Ô5Ð5ð)	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ñ 	6ô 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6øøøð 	6ð 	6ð 	6ð 	6ð 	6ð 	6s5   ›D(«CDÄD(ÄD	ÄD(ÄD	ÄD(Ä(D,Ä/D,c           	      óä  — t          j        t          d¦  «        5 }t          d¦  «        5 }t          ¦   «         }t          |_        d|_        d|j        j        _	        t          ¦   «         }t          t          t          g¦  «        |_        t          j        j        |f|j        _	        ||_	        |j        gg g f|_	        t%          | j        dddd¬¦  «        } |j        d¬	¦  «         |                      d|j        ¦  «         |                      d
|j        ¦  «         |                      |j        d
         d¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )zTVerify update treats 0xFF as regular data (or ignores signal interpretation) when v4r—   r©   Trª   r„   N©r†   r‡   Úbinaryr   r«   éÿ   ó    )r   rŠ   r‹   r   r
   r™   rš   r­   r®   rŒ   rž   r   r   rH   rŸ   r    r¡   r¯   r   ry   r°   ÚassertNotInr±   r�   Ú	_channelsrR   r²   s         r   Ú#test_update_ignores_close_signal_v4z8WSClientProtocolTest.test_update_ignores_close_signal_v4Ó   sÒ  € åŒ\Õ*Ð,>Ñ?Ô?ð 	=À;Ý�/Ñ"Ô"ð	=Ø&1å‘k”kˆGÝ"5ˆGÔØ $ˆGÔØ/1ˆGŒLÔÔ,õ ‘K”KˆEÝ¥­}Ð=Ñ>Ô>ˆEŒJÝ4=´NÔ4PÐRWÐ3XˆGÔ#Ô0à'.ˆKÔ$Ø)0¬¨¸¸BÐ'?ˆKÔ$å˜dÔ.°ÀTÐW[ÐdhÐiÑiÔiˆFØˆFŒM !Ð$Ñ$Ô$Ð$ð ×Ò˜Q Ô 7Ñ8Ô8Ð8ð �MŠM˜#˜vÔ/Ñ0Ô0Ð0Ø×Ò˜VÔ-¨cÔ2°GÑ<Ô<Ð<ð3	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ñ 	=ô 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=øøøð 	=ð 	=ð 	=ð 	=ð 	=ð 	=s5   ›E%«DEÅE%ÅE	ÅE%ÅE	ÅE%Å%E)Å,E)c                 óÎ  — t          j        t          d¦  «        5 }t          ¦   «         }t          |_        d|_        ||_        t          | j	        dddd¬¦  «        }d|j
        d<   |j                             d¦  «          |j        d¦  «        }|                      |d¦  «          |j        d¦  «        }|                      |d	¦  «         ddd¦  «         dS # 1 swxY w Y   dS )
zGVerify readline_channel flushes remaining buffer when channel is closedr—   Tr„   NFr·   Úhellor   r^   ©r   rŠ   r‹   r   r	   r™   rš   rŒ   r   ry   r¼   r±   ÚaddÚreadline_channelrR   ©r;   r£   r’   r   Úline1Úline2s         r   Ú/test_readline_channel_closed_with_leftover_datazDWSClientProtocolTest.test_readline_channel_closed_with_leftover_datað   s/  € åŒ\Õ*Ð,>Ñ?Ô?ð 	(À;Ý‘k”kˆGÝ"5ˆGÔØ $ˆGÔØ'.ˆKÔ$å˜dÔ.°ÀTÐW[ÐdiÐjÑjÔjˆFð #*ˆFÔ˜QÑØÔ#×'Ò'¨Ñ*Ô*Ð*ð ,�FÔ+¨AÑ.Ô.ˆEØ×Ò˜U GÑ,Ô,Ð,ð ,�FÔ+¨AÑ.Ô.ˆEØ×Ò˜U BÑ'Ô'Ð'ð%	(ð 	(ð 	(ñ 	(ô 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(øøøð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ó   ›B2CÃCÃ!Cc                 óÎ  — t          j        t          d¦  «        5 }t          ¦   «         }t          |_        d|_        ||_        t          | j	        dddd¬¦  «        }d|j
        d<   |j                             d¦  «          |j        d¦  «        }|                      |d¦  «          |j        d¦  «        }|                      |d¦  «         ddd¦  «         dS # 1 swxY w Y   dS )	zVVerify readline_channel flushes remaining buffer when channel is closed in binary moder—   Tr„   Nr·   s   hello-binaryr   r   rÀ   rÃ   s         r   Ú6test_readline_channel_closed_with_leftover_data_binaryzKWSClientProtocolTest.test_readline_channel_closed_with_leftover_data_binary  s/  € åŒ\Õ*Ð,>Ñ?Ô?ð 	)À;Ý‘k”kˆGÝ"5ˆGÔØ $ˆGÔØ'.ˆKÔ$å˜dÔ.°ÀTÐW[ÐdhÐiÑiÔiˆFð #2ˆFÔ˜QÑØÔ#×'Ò'¨Ñ*Ô*Ð*ð ,�FÔ+¨AÑ.Ô.ˆEØ×Ò˜U OÑ4Ô4Ð4ð ,�FÔ+¨AÑ.Ô.ˆEØ×Ò˜U CÑ(Ô(Ð(ð%	)ð 	)ð 	)ñ 	)ô 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)ð 	)øøøð 	)ð 	)ð 	)ð 	)ð 	)ð 	)rÇ   c                 ór  — t          j        t          d¦  «        5 }t          ¦   «         }t          |_        d|_        d|j        j        _	        ||_	        t          | j        dddd¬¦  «        }d|j        d	<   |j                             d	¦  «          |j        d	¦  «        }|                      |d¦  «         t          j        |d
¦  «        5 } |j        d	¦  «        }|                      |d¦  «         |                     ¦   «          ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )zRVerify read_channel drains leftover data and then short-circuits on closed channelr—   Trª   r„   NFr·   r¿   r   r°   r^   )r   rŠ   r‹   r   r	   r™   rš   r­   r®   rŒ   r   ry   r¼   r±   rÁ   Úread_channelrR   r¦   )r;   r£   r’   r   Údata1Úmock_updateÚdata2s          r   Ú+test_read_channel_closed_with_leftover_dataz@WSClientProtocolTest.test_read_channel_closed_with_leftover_data  s²  € åŒ\Õ*Ð,>Ñ?Ô?ð 	0À;Ý‘k”kˆGÝ"5ˆGÔØ $ˆGÔØ/1ˆGŒLÔÔ,Ø'.ˆKÔ$å˜dÔ.°ÀTÐW[ÐdiÐjÑjÔjˆFð #*ˆFÔ˜QÑØÔ#×'Ò'¨Ñ*Ô*Ð*ð (�FÔ'¨Ñ*Ô*ˆEØ×Ò˜U GÑ,Ô,Ð,õ ”˜f hÑ/Ô/ð 0°;Ø+˜Ô+¨AÑ.Ô.�Ø× Ò  ¨Ñ+Ô+Ð+Ø×-Ò-Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð'	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	0ð 	0s6   ›B2D,Ã;DÄD,ÄD	ÄD,ÄD	ÄD,Ä,D0Ä3D0c           	      óN  — t          j        t          d¦  «        5 }t          d¦  «        5 }g |j        j        _        t          ¦   «         }t          |_        d|_        d|j	        j
        _        ||_        t          | j        dddd¬¦  «        }d	|j        d
<   |j                             d
¦  «          |j        d
¦  «        }|                      |d	¦  «          |j        d
¦  «        }|                      |d	¦  «          |j        d
¦  «         t          j        |d¦  «        5 } |j        d
¦  «        }|                      |d¦  «         |                     ¦   «          ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )zWVerify peek_channel allows peeking leftover data and then short-circuits after drainingr—   úselect.pollTrª   r„   NFr·   r¿   r   r°   r^   )r   rŠ   r‹   rŒ   Úpollr   r	   r™   rš   r­   r®   r   ry   r¼   r±   rÁ   Úpeek_channelrR   rË   r¦   )	r;   r£   Ú	mock_pollr’   r   rÌ   rÎ   rÍ   Údata3s	            r   Ú+test_peek_channel_closed_with_leftover_dataz@WSClientProtocolTest.test_peek_channel_closed_with_leftover_data6  s`  € åŒ\Õ*Ð,>Ñ?Ô?ð 	0À;Ý�=Ñ!Ô!ð	0Ø%.Ø79ˆIÔ"Ô'Ô4Ý‘k”kˆGÝ"5ˆGÔØ $ˆGÔØ/1ˆGŒLÔÔ,Ø'.ˆKÔ$å˜dÔ.°ÀTÐW[ÐdiÐjÑjÔjˆFð #*ˆFÔ˜QÑØÔ#×'Ò'¨Ñ*Ô*Ð*ð (�FÔ'¨Ñ*Ô*ˆEØ×Ò˜U GÑ,Ô,Ð,ð (�FÔ'¨Ñ*Ô*ˆEØ×Ò˜U GÑ,Ô,Ð,ð  ˆFÔ Ñ"Ô"Ð"õ ”˜f hÑ/Ô/ð 0°;Ø+˜Ô+¨AÑ.Ô.�Ø× Ò  ¨Ñ+Ô+Ð+Ø×-Ò-Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð9	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð 	0ð 	0sY   ›F«C9FÄ$;E+ÅFÅ+E/Å/FÅ2E/Å3FÅ6FÆF	ÆFÆ	F	Æ
FÆFÆ!Fc                 óø  — t          j        t          d¦  «        5 }t          d¦  «        5 }g |j        j        _        t          ¦   «         }t          |_        d|_        d|j	        j
        _        ||_        t          | j        ddd¬¦  «        } |j        t          d¦  «        ¬	¦  «         |j        j                             d¦  «         ddd¦  «         n# 1 swxY w Y   ddd¦  «         dS # 1 swxY w Y   dS )
zZVerify update maps an infinite (default) timeout to a blocking poll instead of overflowingr—   rÑ   Trª   r„   Nr…   Úinfr«   )r   rŠ   r‹   rŒ   rÒ   r   r	   r™   rš   r­   r®   r   ry   r°   ÚfloatÚassert_called_once_with)r;   r£   rÔ   r’   r   s        r   Ú3test_update_infinite_timeout_polls_without_overflowzHWSClientProtocolTest.test_update_infinite_timeout_polls_without_overflowY  s†  € åŒ\Õ*Ð,>Ñ?Ô?ð 	FÀ;Ý�=Ñ!Ô!ð	FØ%.Ø79ˆIÔ"Ô'Ô4Ý‘k”kˆGÝ"5ˆGÔØ $ˆGÔØ/1ˆGŒLÔÔ,Ø'.ˆKÔ$å˜dÔ.°ÀTÐW[Ð\Ñ\Ô\ˆFØˆFŒM¥%¨¡,¤,Ð/Ñ/Ô/Ð/àÔ"Ô'×?Ò?ÀÑEÔEÐEð	Fð 	Fð 	Fñ 	Fô 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Føøøð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fñ 	Fô 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Føøøð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fs5   ›C/«B CÃC/ÃC	ÃC/ÃC	ÃC/Ã/C3Ã6C3c                 ó˜  — t          j        t          d¦  «        5 }t          ¦   «         }t          |_        d|_        ||_        t          | j	        dddd¬¦  «        }t          j        |d¦  «        5   |j
        dd	¬
¦  «        }ddd¦  «         n# 1 swxY w Y   |                      |d¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zKVerify readline_channel returns '' (not None) when a finite timeout expiresr—   Tr„   NFr·   r°   r   ç{®Gáz„?r«   r^   ©r   rŠ   r‹   r   r	   r™   rš   rŒ   r   ry   rÂ   rR   ©r;   r£   r’   r   Úlines        r   Ú=test_readline_channel_returns_empty_string_on_expired_timeoutzRWSClientProtocolTest.test_readline_channel_returns_empty_string_on_expired_timeouti  sZ  € åŒ\Õ*Ð,>Ñ?Ô?ð 		'À;Ý‘k”kˆGÝ"5ˆGÔØ $ˆGÔØ'.ˆKÔ$å˜dÔ.°ÀTÐW[ÐdiÐjÑjÔjˆFÝ”˜f hÑ/Ô/ð @ð @Ø.�vÔ.¨q¸$Ð?Ñ?Ô?�ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @à×Ò˜T 2Ñ&Ô&Ð&ð		'ð 		'ð 		'ñ 		'ô 		'ð 		'ð 		'ð 		'ð 		'ð 		'ð 		'ð 		'øøøð 		'ð 		'ð 		'ð 		'ð 		'ð 		'ó6   ›AB?Á2BÂB?ÂB	ÂB?ÂB	ÂB?Â?CÃCc                 ó˜  — t          j        t          d¦  «        5 }t          ¦   «         }t          |_        d|_        ||_        t          | j	        dddd¬¦  «        }t          j        |d¦  «        5   |j
        dd¬	¦  «        }ddd¦  «         n# 1 swxY w Y   |                      |d
¦  «         ddd¦  «         dS # 1 swxY w Y   dS )z[Verify readline_channel returns b'' (not None) when a finite timeout expires in binary moder—   Tr„   Nr·   r°   r   rÝ   r«   r   rÞ   rß   s        r   Ú<test_readline_channel_returns_empty_bytes_on_expired_timeoutzQWSClientProtocolTest.test_readline_channel_returns_empty_bytes_on_expired_timeoutv  sZ  € åŒ\Õ*Ð,>Ñ?Ô?ð 		(À;Ý‘k”kˆGÝ"5ˆGÔØ $ˆGÔØ'.ˆKÔ$å˜dÔ.°ÀTÐW[ÐdhÐiÑiÔiˆFÝ”˜f hÑ/Ô/ð @ð @Ø.�vÔ.¨q¸$Ð?Ñ?Ô?�ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @à×Ò˜T 3Ñ'Ô'Ð'ð		(ð 		(ð 		(ñ 		(ô 		(ð 		(ð 		(ð 		(ð 		(ð 		(ð 		(ð 		(øøøð 		(ð 		(ð 		(ð 		(ð 		(ð 		(râ   N)rJ   rK   rL   rM   r€   r•   r¤   r§   rµ   r½   rÆ   rÉ   rÏ   rÖ   rÛ   rá   rä   ru   r   r   rw   rw   ‚   sä   € € € € € Ø1Ð1ð	+ð 	+ð 	+ð=ð =ð =ð"xð xð xð-ð -ð -ð6ð 6ð 6ð0=ð =ð =ð:(ð (ð (ð,)ð )ð )ð,0ð 0ð 0ð4!0ð !0ð !0ðFFð Fð Fð 'ð 'ð 'ð(ð (ð (ð (ð (r   rw   Úmodule)Úscopec               #   óZ   K  — t          d¬¦  «        } |                      ¦   «          | V — d S )Nr*   )r0   )r(   Ústart)rg   s    r   Údummy_proxyré   …  s2   è è € õ ˜DÐ!Ñ!Ô!€EØ	‡K‚K�M„M€MØ
€K€K€K€K€Kr   c                 ó>   — dD ]}|                       |d¬¦  «         Œd S )N)Ú
HTTP_PROXYÚ
http_proxyÚHTTPS_PROXYÚhttps_proxyÚNO_PROXYrl   F)Úraising)Údelenv)r   Úvars     r   Úclear_proxy_envró   Œ  s7   € àað /ð /ˆØ×Ò˜3¨ÐÑ.Ô.Ð.Ð.ð/ð /r   c                  óæ   — t           j                             ¦   «         } t          j        d¦  «        | _        t          j        dd¦  «        | _        t           j                             | ¦  «         d S )Nrí   rï   r^   )r   r   Úget_default_copyÚosÚgetenvrg   rl   Úset_default)rr   s    r   Úapply_proxy_to_confrù   ‘  sW   € å
Ô
×
/Ò
/Ñ
1Ô
1€CÝ”	˜-Ñ(Ô(€C„IÝ”9˜Z¨Ñ,Ô,€C„LÝ
Ô×$Ò$ SÑ)Ô)Ð)Ð)Ð)r   c                 óâ  — |                      dd¦  «         |                     t          j        dd„ ¦  «         t	          j        t          j        d         ¬¦  «         t          ¦   «          |                      dd¦  «         t	          j        t          j        d         ¬¦  «         t          ¦   «          t          j        ¦   «         }| 	                    d¬¦  «         | j
        r
J d	¦   «         ‚d S )
Nrí   úhttp://127.0.0.1:8888Úlist_namespacec                 ó   — d S r!   ru   )r;   Ú_argsÚ_kwargss      r   ú<lambda>z,test_rest_call_ignores_env.<locals>.<lambda>œ  s   € Ð\`€ r   r   ©Úconfig_fileF)Ú_preload_contentz#REST path should ignore HTTPS_PROXY)r   Úsetattrr   Ú	CoreV1Apir   Úload_kube_configrö   Úenvironrù   rü   r1   )ré   r   Úv1s      r   Útest_rest_call_ignores_envr	  ˜  sá   € à×Ò�}Ð&=Ñ>Ô>Ð>à×Ò�Ô(Ð*:Ð<`Ð<`ÑaÔaÐaå
Ô­¬
°<Ô(@ÐAÑAÔAÐAÝÑÔÐà×Ò�}Ð&=Ñ>Ô>Ð>Ý
Ô­¬
°<Ô(@ÐAÑAÔAÐAÝÑÔÐÝ	Ô	Ñ	Ô	€BØ×Ò uÐÑ-Ô-Ð-ØÔ+ÐRÐRÐ-RÑRÔRÐ+ÐRÐRr   c                 óŽ  — |                      dd¦  «         t          j        t          j        d         ¬¦  «         t          ¦   «          t          i t          j         	                    ¦   «         d d ¦  «        }| 
                    d¦  «        dk    sJ ‚| 
                    d¦  «        dk    sJ ‚| 
                    d	¦  «        �J ‚d S )
Nrí   rû   r   r  rc   r)   rd   r*   rf   )r   r   r  rö   r  rù   r   r   r   rõ   r"   )ré   r   Úoptss      r   Útest_websocket_call_honors_envr  ¨  s½   € à×Ò�}Ð&=Ñ>Ô>Ð>å
Ô­¬
°<Ô(@ÐAÑAÔAÐAÝÑÔÐÝ˜r¥6Ô#7×#HÒ#HÑ#JÔ#JÈDÐRVÑWÔW€DØ�8Š8Ð%Ñ&Ô&¨+Ò5Ð5Ð5Ð5Ø�8Š8Ð%Ñ&Ô&¨$Ò.Ð.Ð.Ð.à�8Š8�OÑ$Ô$Ð,Ð,Ð,Ð,Ð,r   Ú__main__r!   )+ÚunittestÚunittest.mockr   r   r^   r   r‹   r   r   r	   r
   r   r   r   Úkubernetes.client.configurationr   rö   r2   Ú	threadingÚpytestÚ
kubernetesr   r   r   rŸ   rh   Údisable_warningsÚImportErrorÚfixturer   r&   ÚThreadr(   ÚTestCaserP   rw   ré   ró   rù   r	  r  rJ   Úmainru   r   r   ú<module>r     s£  ðð €€€Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *à +Ð +Ð +Ð +Ð +Ð +Ø zÐ zÐ zÐ zÐ zÐ zÐ zÐ zÐ zÐ zÐ zÐ zÐ zÐ zÐ zÐ zØ *Ð *Ð *Ð *Ð *Ð *Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 	€	€	€	Ø €€€Ø Ð Ð Ð Ø €€€Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð ð	Ø€N€N€NØ€GÔÑÔÐÐøØð 	ð 	ð 	Ø€Dð	øøøà€„˜ÐÑÔð4ð 4ñ Ôð4ð0&ð &ð &ð &ðð ð ð ð �Ô!ñ ô ð ð2'Lð 'Lð 'Lð 'Lð 'L�8Ô$ñ 'Lô 'Lð 'LðT(ð (ð (ð (ð (˜8Ô,ñ (ô (ð (ðF €„�hÐÑÔðð ñ  Ôðð €„˜ÐÑÔð/ð /ñ Ôð/ð*ð *ð *ðSð Sð Sð 
-ð 
-ð 
-ð ˆzÒÐØ€H„M�O„O€O€O€Oð Ðs   ÁA" Á"A*Á)A*