
    tnin%                        d Z ddlZddlZddlZddlmZ ddlmZmZmZ ddl	m
Z
mZ  ej                      G d de          Z G d d	e          Z G d
 dej                  Zedk    rV ej                      ej                    Ze                    d          Z ed           edd         D ]Z ee           dS dS )z)Unit tests for the asyncio_runner module.    N)IsolatedAsyncioTestCase)	AsyncMock	MagicMockpatch)EndpointJobc                   <    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestJobzTests the Job class.c                     ddl }d|_        dS zSet up test fixturesr   NMOCK_API_KEYrunpodapi_keyselfr   s     d/var/www/html/gpu-tools/venv/lib/python3.11/site-packages/tests/test_endpoint/test_asyncio_runner.pysetUpzTestJob.setUp       '    c                   K   t          dt                    5 }|j        }|j        }t                      }ddi|j        _        ||_        dddd}t          d	d||          }|                                 d
{V }|dk    sJ |                                 d
{V dk    sJ 	 d
d
d
           d
S # 1 swxY w Y   d
S )z"
        Tests Job.status
        aiohttp.ClientSessionnew_callablestatus	COMPLETEDapplication/jsonBearer MOCK_API_KEYjob_idContent-TypeAuthorizationzX-Request-IDendpoint_idN)r   r   return_valuegetjsonr   r   )r   mock_session_classmock_sessionmock_get	mock_respheadersjobr   s           r   test_statuszTestJob.test_status   s>      #)
 
 
 	5-:L#'H!I+3[*AIN'$-H! !3!6 ( G
 mX|WEEC::<<''''''F[((((%%%%%%44444%	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   BB33B7:B7c                   
K   t          d          5 
t          dt                    5 }|j        }|j        }t                      }
fd}||j        _        ||_        dddd}t          d	d||          }t          j        |	                    d
                    }| d{V }	|	dk    sJ |	                                 d{V dk    s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"
        Tests Job.output
        z4runpod.endpoint.asyncio.asyncio_runner.asyncio.sleepr   r   c                  0   K    j         dk    rddiS dddS )Nr   r   IN_PROGRESSOUTPUTr   )outputr   )
call_count)
mock_sleeps   r   json_side_effectz-TestJob.test_output.<locals>.json_side_effect=   s.      (A--$m44"*kBBBr   r   r   r   r    r#      timeoutNr1   )
r   r   r$   r%   r&   side_effectr   asynciocreate_taskr2   )r   r'   r(   r)   r*   r5   r+   r,   output_taskr2   r4   s             @r   test_outputzTestJob.test_output0   s      B
 
 	2#)
 
 
	2  -:L#'H!IC C C C C
 *:IN&$-H! !3!6 ( G
 mX|WEEC!-cjjj.C.CDDK&&&&&&&FX%%%%%%%%%%111117	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s5   C4B%CC4C 	 C4#C 	$C44C8;C8c                   K   t          dt                    5 }|j        }|j        }t                      }ddi|j        _        ||_        dddd}t          d	d||          }t          j        |                    d
                    }| 	                    t                    5  | d{V  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 )z1
        Tests Job.output with a timeout
        r   r   r   r0   r   r   r   r    r#      r7   N)r   r   r$   r%   r&   r   r:   r;   r2   assertRaisesTimeoutError)r   r'   r(   r)   r*   r+   r,   r<   s           r   test_output_timeoutzTestJob.test_output_timeoutQ   s      #)
 
 
 	"-:L#'H!I+3]*CIN'$-H! !3!6 ( G
 mX|WEEC!-cjjj.C.CDDK""<00 " "!!!!!!!!" " " " " " " " " " " " " " "%	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s6   BC%	B:.C:B>	>CB>	CCCc                   
K   t          dt                    5 }|j        }|j        }t                      }ddigddddigddg

fd}||j        _        ||_        d	d
dd}t          dd||          }g }|                                2 3 d{V }	|                    |	           6 |ddgk    sJ 	 ddd           dS # 1 swxY w Y   dS )z"
        Tests Job.stream
        r   r   r2   OUTPUT1r0   streamr   OUTPUT2c                  @   K    r                      d          ng ddS )Nr   r   rE   pop	responsess   r   r5   z-TestJob.test_stream.<locals>.json_side_effectz   s2       !?IMM!$$$$&+>>r   r   r   r   r    r#   N)	r   r   r$   r%   r&   r9   r   rF   append)r   r'   r(   r)   r*   r5   r+   r,   outputsstream_outputrL   s             @r   test_streamzTestJob.test_streamj   s      #)
 
 
 !	5-:L#'H!I &y12mLL%y12mLLI
     *:IN&$-H! !3!6 ( G
 mX|WEECG'*zz|| . . . . . . .m}---- (4 y)444444C!	5 !	5 !	5 !	5 !	5 !	5 !	5 !	5 !	5 !	5 !	5 !	5 !	5 !	5 !	5 !	5 !	5 !	5s   A3CB*"CC
Cc                   K   t          d          5 }t                      }t          t          j                              |_        |j        j                            ddi           ||j        j        j        _        dddd}t          d	d||          }|
                                 d
{V }|ddik    sJ 	 d
d
d
           d
S # 1 swxY w Y   d
S )z"
        Tests Job.cancel
        r   r$   result	CANCELLEDr   r   r   r    r#   N)r   r   r:   Futurer&   r$   
set_resultpost
__aenter__r   cancel)r   r(   r*   r+   r,   cancel_results         r   test_cancelzTestJob.test_cancel   s.      *++ 	<|!I&GN4D4DEEEINN'22Hk3JKKKENL*5B !3!6 ( G
 mX|WEEC"%**,,......M X{$;;;;;;	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<s   B(CCCc                 ^  	K   t          dt                    5 }|j        }|j        }t                      }ddidddg		fd}||j        _        ||_        d	d
dd}t          dd||          }|                    d           d{V }|dk    sJ 	 ddd           dS # 1 swxY w Y   dS )zSTests Job.output when status is initially IN_PROGRESS and then changes to COMPLETEDr   r   r   r0   r   r1   r   r2   c                  @   K    r                      d          ndddS )Nr   r   r1   r]   rI   rK   s   r   r5   zHTestJob.test_output_in_progress_then_completed.<locals>.json_side_effect   s3       !EIMM!$$$$/8DDr   r   r   r   r    r#   r6   r7   N)r   r   r$   r%   r&   r9   r   r2   )
r   r'   r(   r)   r*   r5   r+   r,   r2   rL   s
            @r   &test_output_in_progress_then_completedz.TestJob.test_output_in_progress_then_completed   sJ     #)
 
 
 	&-:L#'H!I =)&(;;I
     *:IN&$-H! !3!6 ( G
 mX|WEEC::a:00000000FX%%%%%;	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   A:B""B&)B&N)__name__
__module____qualname____doc__r   r-   r=   rB   rP   r[   r_    r   r   r
   r
      s        ( ( (
5 5 502 2 2B" " "2%5 %5 %5N< < <&& & & & &r   r
   c                   *    e Zd ZdZd Zd Zd Zd ZdS )TestEndpointz"Unit tests for the Endpoint class.c                     ddl }d|_        dS r   r   r   s     r   r   zTestEndpoint.setUp   r   r   c                   K   t          d          5 }t                      }t          t          j                              |_        |j        j                            ddi           ||j        j        j        _        t          d|          }|
                    ddi           d{V }|j        dk    sJ 	 ddd           dS # 1 swxY w Y   dS )	z$
        Tests Endpoint.run
        r   rR   idr   r#   inputINPUTN)r   r   r:   rU   r&   r$   rV   rW   rX   r   runr   )r   r(   r*   endpointr,   s        r   test_runzTestEndpoint.test_run   s      *++ 	*|!I&GN4D4DEEEINN'22D(3CDDDENL*5B|<<H gw%788888888C:)))))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   B&CC
C
c                   K   t          d          5 }t                      }t          t          j                              |_        |j        j                            ddi           ||j        j        j        _        t          d|          }|
                                 d{V }|ddik    sJ 	 ddd           dS # 1 swxY w Y   dS )z'
        Tests Endpoint.health
        r   rR   r   HEALTHYr#   N)r   r   r:   rU   r&   r$   rV   r%   rX   r   health)r   r(   r*   rm   rq   s        r   test_healthzTestEndpoint.test_health   s      *++ 	3|!I&GN4D4DEEEINN'22Hi3HIIIDML)4A|<<H#??,,,,,,,,Fh	222222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3   B C  CCc                   K   t          d          5 }t                      }t          t          j                              |_        |j        j                            ddi           ||j        j        j        _        t          d|          }|
                                 d{V }|ddik    sJ 	 ddd           dS # 1 swxY w Y   dS )z,
        Tests Endpoint.purge_queue
        r   rR   rS   PURGEDr#   N)r   r   r:   rU   r&   r$   rV   rW   rX   r   purge_queue)r   r(   r*   rm   purge_results        r   test_purge_queuezTestEndpoint.test_purge_queue   s      *++ 	8|!I&GN4D4DEEEINN'22Hh3GHHHENL*5B|<<H!)!5!5!7!7777777LHh#777777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8rs   N)r`   ra   rb   rc   r   rn   rr   rx   rd   r   r   rf   rf      sV        ,,( ( (
* * *3 3 38 8 8 8 8r   rf   c                       e Zd ZdZd Zd ZdS )TestEndpointInitializationz,Tests for the Endpoint class initialization.c                     ddl }d|_        dS r   r   r   s     r   r   z TestEndpointInitialization.setUp   r   r   c                 0   t          d          5  t          dt                                }|                     |j        d           |                     d|j                   |                     d|j                   ddd           dS # 1 swxY w Y   dS )z'Tests initialization of Endpoint class.r   r#   z(https://api.runpod.ai/v2/endpoint_id/runr!   r"   N)r   r   r   assertEqualendpoint_urlassertInr+   )r   rm   s     r   test_endpoint_initializationz7TestEndpointInitialization.test_endpoint_initialization  s    *++ 	= 	=y{{;;H%'Q   MM.(*:;;;MM/8+;<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=s   A.BBBN)r`   ra   rb   rc   r   r   rd   r   r   rz   rz      s8        66( ( (
= = = = =r   rz   __main__linenoz
[ Top 10 ]
   )rc   r:   tracemallocunittestr   unittest.mockr   r   r   &runpod.endpoint.asyncio.asyncio_runnerr   r   startr
   rf   TestCaserz   r`   maintake_snapshotsnapshot
statistics	top_statsprintstatrd   r   r   <module>r      s   / /       , , , , , , 5 5 5 5 5 5 5 5 5 5 @ @ @ @ @ @ @ @     s& s& s& s& s&% s& s& s&l08 08 08 08 08* 08 08 08f= = = = =!2 = = =& zHMOOO({(**H##H--I	E,#2#  d  r   