o
    «Þh  ã                   @   s¸   d dl Zd dlm  mZ d dlZd dlZd dlmZ ej	dd„ ƒZ
dd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ ZdS )!é    N)Úappc                   C   s   dt jd< t  ¡ S )NTÚTESTING)r   ÚconfigÚtest_client© r   r   ú</home/cmiss/Jenkins/workspace/SPARC-API/tests/test_osparc.pyÚclient   s   
r   c                 C   ó˜   |   d¡}|j}d}||k}|sDt d|fd||f¡dt ¡ v s%t |¡r*t |¡ndt |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d  } }}d S )	Nú/start_simulationé•  ©ú==©z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚr©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7©
ÚgetÚstatus_codeÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanation©r   r   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8r   r   r   Ú$test_osparc_start_simulation_no_post   ó   
Žr'   c                 C   r	   )	Nú/check_simulationr   r   r   r   r   r   r   r   r!   r   r   r   Ú$test_osparc_check_simulation_no_post   r(   r*   c                 C   óœ   | j di d}|j}d}||k}|sFt d|fd||f¡dt ¡ v s't |¡r,t |¡ndt |¡t |¡dœ }dd	|i }tt 	|¡ƒ‚d  } }}d S ©
Nr
   ©Újsoné  r   r   r   r   r   r   ©
Úpostr   r   r   r   r   r   r   r   r    r!   r   r   r   Ú'test_osparc_start_simulation_empty_post   ó   Žr2   c                 C   r+   ©
Nr)   r-   r/   r   r   r   r   r   r   r0   r!   r   r   r   Ú'test_osparc_check_simulation_empty_post   r3   r5   c                 C   ó    i }| j d|d}|j}d}||k}|sHt d|fd||f¡dt ¡ v s)t |¡r.t |¡ndt |¡t |¡dœ }dd	|i }tt 	|¡ƒ‚d  } }}d S r,   r0   ©r   Údatar   r"   r#   r$   r%   r&   r   r   r   Ú$test_osparc_start_simulation_no_data    ó   Žr9   c                 C   óª   ddddœi}| j d|d}|j}d}||k}|sMt d|fd	||f¡d
t ¡ v s.t |¡r3t |¡nd
t |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d  } }}d S )NÚsolverúsimcore/services/comp/opencorú1.0.3©ÚnameÚversionr
   r-   r/   r   r   r   r   r   r   r0   r7   r   r   r   Ú,test_osparc_start_simulation_no_opencor_data'   ó   þÿŽrB   c                 C   r;   )Nr<   z0simcore/services/comp/rabbit-ss-0d-cardiac-modelz1.0.1r?   r
   r-   r/   r   r   r   r   r   r   r0   r7   r   r   r   Ú+test_osparc_start_simulation_no_osparc_data2   rC   rD   c                 C   r;   )Nr<   r=   r>   r?   r)   r-   r/   r   r   r   r   r   r   r0   r7   r   r   r   Ú+test_osparc_check_simulation_no_job_id_data=   rC   rE   c                 C   s¤   ddi}| j d|d}|j}d}||k}|sJt d|fd||f¡dt ¡ v s+t |¡r0t |¡ndt |¡t |¡d	œ }d
d|i }tt 	|¡ƒ‚d  } }}d S )NÚjob_idú$5026ff74-dc6d-4547-9166-6ae26d04b92er)   r-   r/   r   r   r   r   r   r   r0   r7   r   r   r   Ú+test_osparc_check_simulation_no_solver_dataH   s   ÿŽrH   c                 C   óª   dddidœ}| j d|d}|j}d}||k}|sMt d|fd	||f¡d
t ¡ v s.t |¡r3t |¡nd
t |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d  } }}d S )NrG   rA   r>   ©rF   r<   r)   r-   r/   r   r   r   r   r   r   r0   r7   r   r   r   Ú0test_osparc_check_simulation_no_solver_name_dataP   ó   ÿþŽrK   c                 C   rI   )NrG   r@   r=   rJ   r)   r-   r/   r   r   r   r   r   r   r0   r7   r   r   r   Ú3test_osparc_check_simulation_no_solver_version_data[   rL   rM   c                 C   r6   r4   r0   r7   r   r   r   Ú$test_osparc_check_simulation_no_dataf   r:   rN   c                 C   s(  ddddœdgdœdœdd	d
œdœ}dg d¢g d¢dœdœ}| j d|d}|j}d}||k}|sdt d|fd||f¡dt ¡ v sEt |¡rJt |¡ndt |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d  } }}t
 |j¡}	d }
|	 d¡ }|
u}|s¼t d|fd|	 d¡ }|
f¡dt ¡ v sœt |	 d¡ }¡r¦t |	 d¡ }¡ndt |
¡dœ }dd|i }tt 	|¡ƒ‚d  }}
d}
|	 d¡ }|
k}|st d|fd |	 d¡ }|
f¡dt ¡ v sít |	 d¡ }¡r÷t |	 d¡ }¡ndt |
¡dœ }dd|i }tt 	|¡ƒ‚d  }}
d }
|	 d!¡ }|
u}|s`t d|fd|	 d!¡ }|
f¡d"t ¡ v s@t |	 d!¡ }¡rJt |	 d!¡ }¡nd"t |
¡dœ }dd|i }tt 	|¡ƒ‚d  }}
	 | j d$|d}|j}d}||k}|s®t d|fd||f¡dt ¡ v st |¡r”t |¡ndt |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d  } }}t
 |j¡}	d }
|	 d¡ }|
u}|s	t d|fd|	 d¡ }|
f¡dt ¡ v sét |	 d¡ }¡rót |	 d¡ }¡ndt |
¡dœ }dd|i }tt 	|¡ƒ‚d  }}
d}
|	 d¡ }|
k}|s\t d|fd |	 d¡ }|
f¡dt ¡ v s<t |	 d¡ }¡rFt |	 d¡ }¡ndt |
¡dœ }dd|i }tt 	|¡ƒ‚d  }}
|	 d%¡rt
j}d#}||	|d&}t
j}d#}|||d&}||k}|st d|fd'||f¡d(t ¡ v sšt t
¡rŸt t
¡nd(t |¡d)t ¡ v s±t |	¡r¶t |	¡nd)t |¡t |¡d(t ¡ v sÌt t
¡rÑt t
¡nd(t |¡d*t ¡ v sãt |¡rèt |¡nd*t |¡t |¡d+œ
 }d,d-|i }tt 	|¡ƒ‚d  } } } } } }}d S qe).Nú[https://models.physiomeproject.org/e/611/HumanSAN_Fabbri_Fantini_Wilders_Severi_2017.cellmlçú~j¼t“h?çü©ñÒMbP?©zEnding pointzPoint intervalú
Membrane/V©Ú
simulationÚoutput©Ú	model_urlÚjson_configr=   r>   r?   ©Úopencorr<   Úok)g        rQ   gü©ñÒMb`?rP   )g—:ÈëÁäGÀgßö¢œkßGÀg‰ºÊÑÜGÀg–¸PˆZÛGÀ)zenvironment/timerS   )ÚstatusÚresultsr
   r-   éÈ   r   r   r   r   r   r   r]   ©úis not©z%(py0)s is not %(py3)s©r   Úpy3úassert %(py5)sr   ©z%(py0)s == %(py3)sr8   Úcheck_simulation_dataTr)   r^   ©Ú	sort_keys©z°%(py7)s
{%(py7)s = %(py2)s
{%(py2)s = %(py0)s.dumps
}(%(py3)s, sort_keys=%(py5)s)
} == %(py16)s
{%(py16)s = %(py11)s
{%(py11)s = %(py9)s.dumps
}(%(py12)s, sort_keys=%(py14)s)
}r.   Ú	json_dataÚres©
r   r   rd   r   r   Úpy9Úpy11Zpy12Zpy14Zpy16úassert %(py18)sÚpy18©r1   r   r   r   r   r   r   r   r   r    r.   Úloadsr8   r   Údumps©r   r8   rl   r   r"   r#   r$   r%   r&   rk   Ú@py_assert2r]   Ú@py_format4rg   Ú@py_assert6Ú@py_assert10Z@py_assert13Z@py_assert15Ú@py_assert8Z@py_format17Z@py_format19r   r   r   Ú!test_osparc_successful_simulationm   sb   þûþþõþþŠ ÿÿÿÿ8¦¦ÿÿÿ
ÿ8þV ør{   c                 C   sr  ddddœdgdœdœdd	d
œdœ}dddœ}| j d|d}|j}d}||k}|s]t d|fd||f¡dt ¡ v s>t |¡rCt |¡ndt |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d  } }}t
 |j¡}	d }
|	 d¡ }|
u}|sµt d|fd|	 d¡ }|
f¡dt ¡ v s•t |	 d¡ }¡rŸt |	 d¡ }¡ndt |
¡dœ }dd|i }tt 	|¡ƒ‚d  }}
d}
|	 d¡ }|
k}|st d|fd|	 d¡ }|
f¡dt ¡ v sæt |	 d¡ }¡rðt |	 d¡ }¡ndt |
¡dœ }dd|i }tt 	|¡ƒ‚d  }}
d }
|	 d ¡ }|
u}|sYt d|fd|	 d ¡ }|
f¡d!t ¡ v s9t |	 d ¡ }¡rCt |	 d ¡ }¡nd!t |
¡dœ }dd|i }tt 	|¡ƒ‚d  }}
	 | j d#|d}|j}d}||k}|s§t d|fd||f¡dt ¡ v sˆt |¡rt |¡ndt |¡t |¡dœ }dd|i }tt 	|¡ƒ‚d  } }}t
 |j¡}	d }
|	 d¡ }|
u}|st d|fd|	 d¡ }|
f¡dt ¡ v sât |	 d¡ }¡rìt |	 d¡ }¡ndt |
¡dœ }dd|i }tt 	|¡ƒ‚d  }}
|dkr·t
j}d"}||	|d$}t
j}d"}|||d$}||k}|s§t d|fd%||f¡d&t ¡ v s?t t
¡rDt t
¡nd&t |¡d't ¡ v sVt |	¡r[t |	¡nd't |¡t |¡d&t ¡ v sqt t
¡rvt t
¡nd&t |¡d(t ¡ v sˆt |¡rt |¡nd(t |¡t |¡d)œ
 }d*d+|i }tt 	|¡ƒ‚d  } } } } } }}d S q^),NrO   g      @g      ð?rR   rS   rT   rW   r=   r>   r?   rZ   Únokzthe simulation failed)r]   Údescriptionr
   r-   r_   r   r   r   r   r   r   r]   r`   rb   rc   re   r   r\   rf   r8   rg   Tr)   rh   rj   r.   rk   rl   rm   rp   rq   rr   ru   r   r   r   Útest_osparc_failing_simulation–   sL   þûþþõþŠ ÿÿÿÿ8¦¦
þV ùr~   )Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   r.   Úpytestr   Úfixturer   r'   r*   r2   r5   r9   rB   rD   rE   rH   rK   rM   rN   r{   r~   r   r   r   r   Ú<module>   s&   " 
)