o
    i&                     @   s   d Z ddlmZ ddlmZ ddlmZmZ ddlm	Z	 ddl
mZ ddlmZ dd	lmZ dd
lmZmZ G dd dZe ZeeZG dd deZG dd deZdS )zTests for the session manager.    )partial)TestCase)genweb)IOLoop   )SessionManager)MappingKernelManager)ContentsManager)utcnow	isoformatc                   @   s   e Zd ZdddZdS )DummyKernelpythonc                 C   s
   || _ d S Nkernel_name)selfr    r   o/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/notebook/services/sessions/tests/test_sessionmanager.py__init__      
zDummyKernel.__init__N)r   )__name__
__module____qualname__r   r   r   r   r   r      s    r   c                       s<   e Zd ZdZ fddZdd Zddd	ZdddZ  ZS )DummyMKMzFMappingKernelManager interface that doesn't start kernels, for testingc                    s    t  j|i | td| _d S )NABCDEFGHIJK)superr   iter
id_letters)r   argskwargs	__class__r   r   r      s   zDummyMKM.__init__c                 C   s
   t | jS r   )nextr   r   r   r   r   _new_id   r   zDummyMKM._new_idNr   c                 K   s:   |p|   }t|d }| j|< d| j|< t|_d|_|S )Nr   r   idle)r%   r   _kernels_kernel_connections
dummy_datelast_activityexecution_state)r   	kernel_idpathr   r    kr   r   r   start_kernel   s   
zDummyMKM.start_kernelFc                 C   s   | j |= d S r   )r'   )r   r,   nowr   r   r   shutdown_kernel&   s   zDummyMKM.shutdown_kernel)NNr   )F)	r   r   r   __doc__r   r%   r/   r1   __classcell__r   r   r!   r   r      s    
r   c                   @   sl   e Z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 )TestSessionManagerc                 C   s4   t t t d| _t | _| t| jjdd d S )N)kernel_managercontents_managerT)all_fds)	r   r   r
   smr   loop
addCleanupr   closer$   r   r   r   setUp,   s   zTestSessionManager.setUpc                    s    t j fdd}j|S )Nc                  3   sD    g }  D ]}| dd jjdi |V }| | qt| )Ntypenotebookr   )
setdefaultr8   create_sessionappendr   Return)sessionsr    session
kwarg_listr   r   r   co_add5   s   
z2TestSessionManager.create_sessions.<locals>.co_add)r   	coroutiner9   run_sync)r   rF   rG   r   rE   r   create_sessions4   s   z"TestSessionManager.create_sessionsc                 K   s   |  |d S )Nr   )rJ   )r   r    r   r   r   r@   ?   s   z!TestSessionManager.create_sessionc                    sb   | j | jdddd  | j fdd} ddd ddd d	dd
tddd}| || d S )N/path/to/test.ipynbbarr-   r   idc                         j  dS N
session_idget_sessionr   rR   r8   r   r   <lambda>E       z5TestSessionManager.test_get_session.<locals>.<lambda>r-   namer>   Ar   r&   rN   rY   connectionsr*   r+   )rN   r-   r>   r=   rY   kernelr8   r@   r9   rI   dummy_date_sassertEqualr   modelexpectedr   rU   r   test_get_sessionB   s    z#TestSessionManager.test_get_sessionc                    ^   | j | jdddd  | t | j fdd W d    d S 1 s(w   Y  d S )NrK   foorM   rN   c                      rO   )N)bad_idrS   r   rU   r   r   rV   Z   rW   z9TestSessionManager.test_bad_get_session.<locals>.<lambda>r8   r@   assertRaises	TypeErrorr9   rI   r$   r   rU   r   test_bad_get_sessionT      "z'TestSessionManager.test_bad_get_sessionc                    s   | j | jddd j d d  | tj | j fdd W d    n1 s0w   Y  | jfdd}| 	|g  d S )	N/path/to/1/test1.ipynbr   rM   r]   rN   c                      s   j  d dS )NrN   rQ   rS   r   rD   r8   r   r   rV   b   s    zATestSessionManager.test_get_session_dead_kernel.<locals>.<lambda>c                            S r   list_sessionsr   r8   r   r   rV   d       )
r8   r@   r5   r1   ri   r   	HTTPErrorr9   rI   r`   )r   listedr   rn   r   test_get_session_dead_kernel\   s   z/TestSessionManager.test_get_session_dead_kernelc                    s   | j  | dddddddddd	dd
}| j fdd}|d d dddd dd dddtddd|d d ddd dddtddd|d d dd	ddddtdddg}| || d S )Nrm   r   rM   z/path/to/2/test2.pyfile)r-   r=   r   
/path/to/3rf   consoler-   rY   r=   r   c                      ro   r   rp   r   rr   r   r   rV   o   rs   z7TestSessionManager.test_list_sessions.<locals>.<lambda>r   rN   r>   rX   rZ   r&   r[   )rN   r-   r=   r>   rY   r]      B)rN   r-   r=   rY   r]   r   C)r8   rJ   r9   rI   r_   r`   )r   rC   rc   r   rr   r   test_list_sessionsg   sV   



(z%TestSessionManager.test_list_sessionsc                    s   | j  | tdddtddd} j|d d d  | j fdd	}|d
 d ddd dd ddddtdddg}| || d S )Nrm   r   rM   /path/to/2/test2.ipynbr   r]   rN   c                      ro   r   rp   r   rr   r   r   rV      rs   zCTestSessionManager.test_list_sessions_dead_kernel.<locals>.<lambda>r{   r>   rX   r|   r&   r[   rN   r-   r=   rY   r>   r]   )	r8   rJ   dictr5   r1   r9   rI   r_   r`   )r   rC   ru   rc   r   rr   r   test_list_sessions_dead_kernel   s*   


z1TestSessionManager.test_list_sessions_dead_kernelc                    sx   | j | jdddd  | j fdd | j fdd} dd	d dd d
dddtddd}| || d S )NrK   juliarM   rN   c                         j  ddS )N/path/to/new_name.ipynb)r-   update_sessionr   rU   r   r   rV          z8TestSessionManager.test_update_session.<locals>.<lambda>c                      rO   rP   rS   r   rU   r   r   rV      rW   r   r>   rX   rZ   r   r&   r[   r   r^   ra   r   rU   r   test_update_session   s*   z&TestSessionManager.test_update_sessionc                    re   )NrK   irrM   rN   c                      r   )Nz
test.ipynb)rR   bad_kwr   r   rU   r   r   rV      r   z<TestSessionManager.test_bad_update_session.<locals>.<lambda>rh   r$   r   rU   r   test_bad_update_session   rl   z*TestSessionManager.test_bad_update_sessionc                    s   | j | tdddtdddtddddd | j fd	d
 | jfdd
} d d ddd dd ddddtddd d d ddddddtdddg}| || d S )Nrm   r   rM   r   rx   rf   ry   rz   c                      s     d d S )Nr{   rN   delete_sessionr   rC   r8   r   r   rV      s    z8TestSessionManager.test_delete_session.<locals>.<lambda>c                      ro   r   rp   r   rr   r   r   rV      rs   r   rN   r>   rX   rZ   r&   r[   r   r   r}   )rN   r=   r-   rY   r]   )r8   rJ   r   r9   rI   r_   r`   )r   new_sessionsrc   r   r   r   test_delete_session   sB   



z&TestSessionManager.test_delete_sessionc                    s   | j  | jddd | t | j fdd W d    n1 s$w   Y  | tj | j fdd W d    d S 1 sEw   Y  d S )NrK   r   rM   c                          j ddS )N23424)	bad_kwargr   r   rr   r   r   rV      rW   z<TestSessionManager.test_bad_delete_session.<locals>.<lambda>c                      r   )Nr   rQ   r   r   rr   r   r   rV      rW   )r8   r@   ri   rj   r9   rI   r   rt   r$   r   rr   r   test_bad_delete_session   s   "z*TestSessionManager.test_bad_delete_sessionN)r   r   r   r<   rJ   r@   rd   rk   rv   r~   r   r   r   r   r   r   r   r   r   r4   *   s    3&r4   N)r2   	functoolsr   unittestr   tornador   r   tornado.ioloopr   sessionmanagerr   'notebook.services.kernels.kernelmanagerr	   "notebook.services.contents.managerr
   notebook._tzr   r   r   r)   r_   r   r4   r   r   r   r   <module>   s    