
    tnit9                     P    d Z ddlZddlmZ ddlmZ  G d dej                  ZdS )z Tests for ctl_commands.py     N)patch)ctl_commandsc                       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 ed          d             ZdS )TestCTLzTests for CTL Commandsc                     ddl }d|_        dS )zSet up test fixturesr   NMOCK_API_KEY)runpodapi_key)selfr	   s     ]/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/tests/test_api/test_ctl_commands.pysetUpzTestCTL.setUp   s    '    c                     t          d          5 }ddddiii|j        j        _        t          j                    }|                     |d         d           ddd           dS # 1 swxY w Y   dS )z 
        Tests get_user
         runpod.api.graphql.requests.postdatamyselfidUSER_IDN)r   return_valuejsonr   get_userassertEqualr   patch_requestusers      r   test_get_userzTestCTL.test_get_user   s     566 
	4-i<M&+8  (**DT$Z333
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4 
	4s   AA$$A(+A(c                    t          d          5 }dddddii|j        j        _        t          j        d          }|                     |d         d           |                     |d         d           d	d	d	           d	S # 1 swxY w Y   d	S )
z,
        Tests update_user_settings
        r   r   updateUserSettingsr   
PUBLIC_KEY)r   	publicKeyr   r    N)r   r   r   r   update_user_settingsr   r   s      r   test_update_user_settingsz!TestCTL.test_update_user_settings!   s     566 		>-(*V*V<M&+8  4\BBDT$Z333T+.===		> 		> 		> 		> 		> 		> 		> 		> 		> 		> 		> 		> 		> 		> 		> 		> 		> 		>s   A%BB	Bc                 :   t          d          5 }ddddddgii|j        j        _        t          j                    }|                     t          |          d           |                     |d	         d
         d           ddd           dS # 1 swxY w Y   dS )z 
        Tests get_gpus
        r   r   gpuTypesNVIDIA A100 80GB PCIe	A100 80GBP   r   displayName
memoryInGb   r   r   N)r   r   r   r   get_gpusr   len)r   r   gpuss      r   test_get_gpuszTestCTL.test_get_gpus0   s    566 	E-"9+6*, !
<M&+8  (**DSYY***T!WT],CDDD!	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   A3BBBc                    t          d          5 }ddddddgii|j        j        _        t          j        d          }|                     |d         d           ddg ii|j        j        _        |                     t                    5 }t          j        d	          }d
d
d
           n# 1 swxY w Y   |                     t          |j	                  d           d
d
d
           d
S # 1 swxY w Y   d
S )z%
        Tests get_gpu_by_id
        r   r   r$   r%   r&   r'   r(   r   z	Not a GPUNzSNo GPU found with the specified ID, run runpod.get_gpus() to get a list of all GPUs)
r   r   r   r   get_gpur   assertRaises
ValueErrorstr	exception)r   r   gpucontexts       r   test_get_gpuzTestCTL.test_get_gpuF   s    566 	-"9+6*, !
<M&+8 &'>??CSY(?@@@<BZQSDT;UM&+8"":.. 8'"*;778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 G%&&B  +	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s6   A:C+
B+C++B/	/C+2B/	3+C++C/2C/c                 z   t          d          5 }t          d          5 }t          d          5 }ddddiii|j        j        _        d|_        d	d
ddgi|_        t          j        ddddd
          }|                     |d         d           |                     t                    5 }t          j        ddddd
          }ddd           n# 1 swxY w Y   |                     t          |j	                  d           |                     t                    5 }t          j        ddd
          }ddd           n# 1 swxY w Y   |                     t          |j	                  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 )z"
        Tests create_pod
        r   runpod.api.ctl_commands.get_gpuz runpod.api.ctl_commands.get_userr   podFindAndDeployOnDemandr   POD_IDNnetworkVolumesNETWORK_VOLUME_IDz	us-east-1)r   dataCenterIdPOD_NAME
IMAGE_NAMEFr%   )name
image_namesupport_public_ipgpu_type_idnetwork_volume_idNOT_A_CLOUD_TYPE)rB   
cloud_typerC   rE   rF   z2cloud_type must be one of ALL, COMMUNITY or SECURE)rB   rE   rF   z1Either image_name or template_id must be provided)
r   r   r   r   
create_podr   r2   r3   r4   r5   )r   r   patch_get_gpupatch_get_userpodr7   s         r   test_create_podzTestCTL.test_create_pode   s4    566 1	--J
 J
 1	E"DEE1	IW3dH5EF<M&+8 *.M& !.LL#+N' )'"'3"5  C SY111"":.. '"-#1+ 7&9                 G%&&D  
 "":.. '"-# 7&9                 G%&&C  ]1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	 1	s   F0FA;F+C	FCFCAFE	6FEF	E
+F5FFFF	FF0F	F0F	 F00F47F4c                     t          d          5 }ddddiii|j        j        _        t          j        d          }|                     |d         d           ddd           dS # 1 swxY w Y   dS )z
        Test stop_pod
        r   r   podStopr   r<   pod_idN)r   r   r   r   stop_podr   r   r   rL   s      r   test_stop_podzTestCTL.test_stop_pod   s     566 	2-T8$45<M&+8 'x888CSY111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   A	A&&A*-A*c                     t          d          5 }ddddiii|j        j        _        t          j        dd          }|                     |d         d           ddd           dS # 1 swxY w Y   dS )	z!
        Test resume_pod
        r   r   	podResumer   r<   r+   )rQ   	gpu_countN)r   r   r   r   
resume_podr   rS   s      r   test_resume_podzTestCTL.test_resume_pod   s     566 	2-tX&67<M&+8 )QGGGCSY111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   A
A''A+.A+c                     t          d          5 }ddddiii|j        j        _        |                     t	          j        d                     ddd           dS # 1 swxY w Y   dS )z$
        Test terminate_pod
        r   r   podTerminater   r<   rP   N)r   r   r   assertIsNoner   terminate_pod)r   r   s     r   test_terminate_podzTestCTL.test_terminate_pod   s     566 	K-$)9:<M&+8 l8IIIJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	Ks   A AA!$A!c                    t          d          5 }dddigi|j        j        _        |                     t                    5 }t          j                     ddd           n# 1 swxY w Y   |                     t          |j	                  d           ddd           n# 1 swxY w Y   t          d          5 }d|j        _
        |                     t                    5 }t          j                     ddd           n# 1 swxY w Y   |                     t          |j	                  d           ddd           dS # 1 swxY w Y   dS )z#
        Test raised_error
        r   errorsmessagezError MessageNi  z0Unauthorized request, please check your API key.)r   r   r   r2   	Exceptionr   r,   r   r4   r5   status_code)r   r   r7   s      r   test_raised_errorzTestCTL.test_raised_error   sI    566 	F-I78<M&+8 ""9-- (%'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( S!233_EEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 566 		-58M&2""9-- (%'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( G%&&B  		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		sk   1B A!B !A%	%B (A%	)+B  B$'B$:'E!D5ED	ED		+EEEc           
         t          d          5 }dddi ddddd	d
dddddddg ddddddddddddddddd d!d"d#d$d%d&d'd(id)giii|j        j        _        t          j                    }|                     t          |          d           |                     |d#         d         d           ddd           dS # 1 swxY w Y   dS )* 
        Tests get_pods
        r   r   r   podsr   r<   containerDiskInGb   	costPerHr(\?desiredStatusRUNNING
dockerArgsNdockerIdenvgpuCountr+   	imageName,runpod/pytorch:2.0.1-py3.10-cuda11.8.0-devellastStatusChangeRented by User: Tue Aug 15 2023	machineId
MACHINE_IDr*   S   rB   r@   podTypeRESERVEDportports80/httpuptimeSecondsr         
/workspacegpuDisplayNameRTX 3090	vcpuCount
volumeInGbvolumeMountPathmachine)r   r   r   r   get_podsr   r-   r   r   rg   s      r   test_get_podszTestCTL.test_get_pods   s    566 $	6- $h 3Q !,T !0	
 !-d !+D !&r !+A !,-[ !34U !,\ !-b !'
 !*: !'  !(!" !0#$ .0.13?,<j+I+  !<M&+8@  (**DSYY***T!WT]H555I$	6 $	6 $	6 $	6 $	6 $	6 $	6 $	6 $	6 $	6 $	6 $	6 $	6 $	6 $	6 $	6 $	6 $	6s   B-C

CCc           	      X   t          d          5 }ddi dddddd	d
ddddddg dddddddddddddddddd d!d"d#d$d%d&d'id(ii|j        j        _        t          j        d          }|                     |d         d           ddd           dS # 1 swxY w Y   dS ))rf   r   r   rL   r   r<   rh   ri   rj   rk   rl   rm   rn   Nro   rp   rq   r+   rr   rs   rt   ru   rv   rw   r*   rx   rB   r@   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   )r   r   r   r   get_podr   r   s      r   test_get_podzTestCTL.test_get_pod  s    566 	3- h+Q $T (	
 %d #D r #A $%S +,M $\ %b 
 ":    !" (#$ &(&)+7$4j#A+  <M&+88  '11DT$Z222?	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3s   BBB#&B#c                 D   t          d          5 }t          d          5 }ddddiii|j        j        _        d|_        t          j        dd	
          }|                     |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 )z'
        Tests create_template
        r   r:   r   saveTemplater   TEMPLATE_IDNTEMPLATE_NAMErA   )rB   rC   )r   r   r   r   create_templater   )r   r   rJ   templates       r   test_create_templatezTestCTL.test_create_template*  s<    566 	<--J
 J
 	<$)>?<M&+8 *.M&#3$  H Xd^];;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<5   BAA=1B=B	BB	BBBc           	      D   t          d          5 }dddddddd	d
giii|j        j        _        t          j                    }|                     t          |          d           |                     |d         d         d           ddd           dS # 1 swxY w Y   dS )z%
        Tests get_endpoints
        r   r   r   	endpointsENDPOINT_IDENDPOINT_NAMEr   rA   )r   rr   )r   rB   r   r+   r   r   N)r   r   r   r   get_endpointsr   r-   )r   r   r   s      r   test_get_endpointszTestCTL.test_get_endpoints=  s    566 	@-#&3(7*71=-" -" 	&<M&+8" %244IS^^Q///Yq\$/???+	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@s   A8BBBc                 D   t          d          5 }t          d          5 }ddddiii|j        j        _        d|_        t          j        dd	
          }|                     |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 )z'
        Tests create_endpoint
        r   r:   r   saveEndpointr   r   Nr   r   )rB   template_id)r   r   r   r   create_endpointr   r   r   rJ   endpoints       r   test_create_endpointzTestCTL.test_create_endpointX  s<    566 	<--J
 J
 	<$)>?<M&+8 *.M&#3$-  H Xd^];;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<r   c                 D   t          d          5 }t          d          5 }ddddiii|j        j        _        d|_        t          j        dd	          }|                     |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 )
z0
        Tests update_endpoint_template
        r   r:   r   updateEndpointTemplater   r   Nr   )endpoint_idr   )r   r   r   r   update_endpoint_templater   r   s       r   test_update_endpoint_templatez%TestCTL.test_update_endpoint_templatek  s=    566 	<--J
 J
 	<1D-3HI<M&+8 *.M&#<)}  H Xd^];;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<r   z)runpod.api.ctl_commands.run_graphql_queryc                    dddddii|_         t          j        ddd          }|                     |d	         d           |                     |d
         d           |                                 |j        \  }}|d         }|                     d|           |                     d|           |                     d|           |                     d|           dS )z`
        Tests create_container_registry_auth by mocking the run_graphql_query function
        r   saveRegistryAuthREGISTRY_AUTH_IDREGISTRY_NAME)r   rB   usernamepassword)rB   r   r   r   rB   r   zmutation SaveRegistryAuthN)r   r   create_container_registry_authr   assert_called_once	call_argsassertIn)r   mock_run_graphql_queryresultcalled_args_graphql_querys         r   #test_create_container_registry_authz+TestCTL.test_create_container_registry_auth~  s     "+=$W$W/
+ < :

 
 

 	'9:::999 	11333 09Q $A1=AAAo}555j-000j-00000r   N)__name__
__module____qualname____doc__r   r   r"   r/   r8   rM   rT   rY   r^   rd   r   r   r   r   r   r   r   r    r   r   r   r   	   s=         ( ( (
4 4 4 > > >E E E,  >5 5 5n2 2 22 2 2	K 	K 	K  4(6 (6 (6T#3 #3 #3J< < <&@ @ @6< < <&< < <& U677 1  1 87 1  1  1r   r   )r   unittestunittest.mockr   
runpod.apir   TestCaser   r   r   r   <module>r      sy    ! !        # # # # # #V1 V1 V1 V1 V1h V1 V1 V1 V1 V1r   